/* eslint-disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

/**
 * JSON Schema definitions for Claude CLI tool inputs
 */
export type ToolInputSchemas =
  | AgentInput
  | BashInput
  | TaskOutputInput
  | ExitPlanModeInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | TaskStopInput
  | ListMcpResourcesInput
  | McpInput
  | NotebookEditInput
  | ReadMcpResourceInput
  | SubscribeMcpResourceInput
  | UnsubscribeMcpResourceInput
  | SubscribePollingInput
  | UnsubscribePollingInput
  | TodoWriteInput
  | WebFetchInput
  | WebSearchInput
  | AskUserQuestionInput
  | ConfigInput
  | EnterWorktreeInput
  | ToolOutputSchemas;
export type ToolOutputSchemas =
  | AgentOutput
  | BashOutput
  | ExitPlanModeOutput
  | FileEditOutput
  | FileReadOutput
  | FileWriteOutput
  | GlobOutput
  | GrepOutput
  | TaskStopOutput
  | ListMcpResourcesOutput
  | McpOutput
  | NotebookEditOutput
  | ReadMcpResourceOutput
  | SubscribeMcpResourceOutput
  | UnsubscribeMcpResourceOutput
  | SubscribePollingOutput
  | UnsubscribePollingOutput
  | TodoWriteOutput
  | WebFetchOutput
  | WebSearchOutput
  | AskUserQuestionOutput
  | ConfigOutput
  | EnterWorktreeOutput;
export type AgentOutput =
  | {
      agentId: string;
      content: {
        type: "text";
        text: string;
      }[];
      totalToolUseCount: number;
      totalDurationMs: number;
      totalTokens: number;
      usage: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens: number | null;
        cache_read_input_tokens: number | null;
        server_tool_use: {
          web_search_requests: number;
          web_fetch_requests: number;
        } | null;
        service_tier: ("standard" | "priority" | "batch") | null;
        cache_creation: {
          ephemeral_1h_input_tokens: number;
          ephemeral_5m_input_tokens: number;
        } | null;
      };
      status: "completed";
      prompt: string;
    }
  | {
      status: "async_launched";
      /**
       * The ID of the async agent
       */
      agentId: string;
      /**
       * The description of the task
       */
      description: string;
      /**
       * The prompt for the agent
       */
      prompt: string;
      /**
       * Path to the output file for checking agent progress
       */
      outputFile: string;
      /**
       * Whether the calling agent has Read/Bash tools to check progress
       */
      canReadOutputFile?: boolean;
    }
  | {
      status: "sub_agent_entered";
      description: string;
      message: string;
    };
export type FileReadOutput =
  | {
      type: "text";
      file: {
        /**
         * The path to the file that was read
         */
        filePath: string;
        /**
         * The content of the file
         */
        content: string;
        /**
         * Number of lines in the returned content
         */
        numLines: number;
        /**
         * The starting line number
         */
        startLine: number;
        /**
         * Total number of lines in the file
         */
        totalLines: number;
      };
    }
  | {
      type: "image";
      file: {
        /**
         * Base64-encoded image data
         */
        base64: string;
        /**
         * The MIME type of the image
         */
        type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";
        /**
         * Original file size in bytes
         */
        originalSize: number;
        /**
         * Image dimension info for coordinate mapping
         */
        dimensions?: {
          /**
           * Original image width in pixels
           */
          originalWidth?: number;
          /**
           * Original image height in pixels
           */
          originalHeight?: number;
          /**
           * Displayed image width in pixels (after resizing)
           */
          displayWidth?: number;
          /**
           * Displayed image height in pixels (after resizing)
           */
          displayHeight?: number;
        };
      };
    }
  | {
      type: "notebook";
      file: {
        /**
         * The path to the notebook file
         */
        filePath: string;
        /**
         * Array of notebook cells
         */
        cells: unknown[];
      };
    }
  | {
      type: "pdf";
      file: {
        /**
         * The path to the PDF file
         */
        filePath: string;
        /**
         * Base64-encoded PDF data
         */
        base64: string;
        /**
         * Original file size in bytes
         */
        originalSize: number;
      };
    }
  | {
      type: "parts";
      file: {
        /**
         * The path to the PDF file
         */
        filePath: string;
        /**
         * Original file size in bytes
         */
        originalSize: number;
        /**
         * Number of pages extracted
         */
        count: number;
        /**
         * Directory containing extracted page images
         */
        outputDir: string;
      };
    };
export type ListMcpResourcesOutput = {
  /**
   * Resource URI
   */
  uri: string;
  /**
   * Resource name
   */
  name: string;
  /**
   * MIME type of the resource
   */
  mimeType?: string;
  /**
   * Resource description
   */
  description?: string;
  /**
   * Server that provides this resource
   */
  server: string;
}[];
/**
 * MCP tool execution result
 */
export type McpOutput = string;

export interface AgentInput {
  /**
   * A short (3-5 word) description of the task
   */
  description: string;
  /**
   * The task for the agent to perform
   */
  prompt: string;
  /**
   * The type of specialized agent to use for this task
   */
  subagent_type: string;
  /**
   * Optional model to use for this agent. If not specified, inherits from parent. Prefer haiku for quick, straightforward tasks to minimize cost and latency.
   */
  model?: "sonnet" | "opus" | "haiku";
  /**
   * Optional agent ID to resume from. If provided, the agent will continue from the previous execution transcript.
   */
  resume?: string;
  /**
   * Set to true to run this agent in the background. The tool result will include an output_file path - use Read tool or Bash tail to check on output.
   */
  run_in_background?: boolean;
  /**
   * Maximum number of agentic turns (API round-trips) before stopping. Used internally for warmup.
   */
  max_turns?: number;
  /**
   * Name for the spawned agent
   */
  name?: string;
  /**
   * Team name for spawning. Uses current team context if omitted.
   */
  team_name?: string;
  /**
   * Permission mode for spawned teammate (e.g., "plan" to require plan approval).
   */
  mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";
  /**
   * Isolation mode. "worktree" creates a temporary git worktree so the agent works on an isolated copy of the repo.
   */
  isolation?: "worktree";
}
export interface BashInput {
  /**
   * The command to execute
   */
  command: string;
  /**
   * Optional timeout in milliseconds (max 600000)
   */
  timeout?: number;
  /**
   * Clear, concise description of what this command does in active voice. Never use words like "complex" or "risk" in the description - just describe what it does.
   *
   * For simple commands (git, npm, standard CLI tools), keep it brief (5-10 words):
   * - ls → "List files in current directory"
   * - git status → "Show working tree status"
   * - npm install → "Install package dependencies"
   *
   * For commands that are harder to parse at a glance (piped commands, obscure flags, etc.), add enough context to clarify what it does:
   * - find . -name "*.tmp" -exec rm {} \; → "Find and delete all .tmp files recursively"
   * - git reset --hard origin/main → "Discard all local changes and match remote main"
   * - curl -s url | jq '.data[]' → "Fetch JSON from URL and extract data array elements"
   */
  description?: string;
  /**
   * Set to true to run this command in the background. Use TaskOutput to read the output later.
   */
  run_in_background?: boolean;
  /**
   * Set this to true to dangerously override sandbox mode and run commands without sandboxing.
   */
  dangerouslyDisableSandbox?: boolean;
}
export interface TaskOutputInput {
  /**
   * The task ID to get output from
   */
  task_id: string;
  /**
   * Whether to wait for completion
   */
  block: boolean;
  /**
   * Max wait time in ms
   */
  timeout: number;
}
export interface ExitPlanModeInput {
  /**
   * Prompt-based permissions needed to implement the plan. These describe categories of actions rather than specific commands.
   */
  allowedPrompts?: {
    /**
     * The tool this prompt applies to
     */
    tool: "Bash";
    /**
     * Semantic description of the action, e.g. "run tests", "install dependencies"
     */
    prompt: string;
  }[];
  [k: string]: unknown;
}
export interface FileEditInput {
  /**
   * The absolute path to the file to modify
   */
  file_path: string;
  /**
   * The text to replace
   */
  old_string: string;
  /**
   * The text to replace it with (must be different from old_string)
   */
  new_string: string;
  /**
   * Replace all occurrences of old_string (default false)
   */
  replace_all?: boolean;
}
export interface FileReadInput {
  /**
   * The absolute path to the file to read
   */
  file_path: string;
  /**
   * The line number to start reading from. Only provide if the file is too large to read at once
   */
  offset?: number;
  /**
   * The number of lines to read. Only provide if the file is too large to read at once.
   */
  limit?: number;
  /**
   * Page range for PDF files (e.g., "1-5", "3", "10-20"). Only applicable to PDF files. Maximum 20 pages per request.
   */
  pages?: string;
}
export interface FileWriteInput {
  /**
   * The absolute path to the file to write (must be absolute, not relative)
   */
  file_path: string;
  /**
   * The content to write to the file
   */
  content: string;
}
export interface GlobInput {
  /**
   * The glob pattern to match files against
   */
  pattern: string;
  /**
   * The directory to search in. If not specified, the current working directory will be used. IMPORTANT: Omit this field to use the default directory. DO NOT enter "undefined" or "null" - simply omit it for the default behavior. Must be a valid directory path if provided.
   */
  path?: string;
}
export interface GrepInput {
  /**
   * The regular expression pattern to search for in file contents
   */
  pattern: string;
  /**
   * File or directory to search in (rg PATH). Defaults to current working directory.
   */
  path?: string;
  /**
   * Glob pattern to filter files (e.g. "*.js", "*.{ts,tsx}") - maps to rg --glob
   */
  glob?: string;
  /**
   * Output mode: "content" shows matching lines (supports -A/-B/-C context, -n line numbers, head_limit), "files_with_matches" shows file paths (supports head_limit), "count" shows match counts (supports head_limit). Defaults to "files_with_matches".
   */
  output_mode?: "content" | "files_with_matches" | "count";
  /**
   * Number of lines to show before each match (rg -B). Requires output_mode: "content", ignored otherwise.
   */
  "-B"?: number;
  /**
   * Number of lines to show after each match (rg -A). Requires output_mode: "content", ignored otherwise.
   */
  "-A"?: number;
  /**
   * Alias for context.
   */
  "-C"?: number;
  /**
   * Number of lines to show before and after each match (rg -C). Requires output_mode: "content", ignored otherwise.
   */
  context?: number;
  /**
   * Show line numbers in output (rg -n). Requires output_mode: "content", ignored otherwise. Defaults to true.
   */
  "-n"?: boolean;
  /**
   * Case insensitive search (rg -i)
   */
  "-i"?: boolean;
  /**
   * File type to search (rg --type). Common types: js, py, rust, go, java, etc. More efficient than include for standard file types.
   */
  type?: string;
  /**
   * Limit output to first N lines/entries, equivalent to "| head -N". Works across all output modes: content (limits output lines), files_with_matches (limits file paths), count (limits count entries). Defaults to 0 (unlimited).
   */
  head_limit?: number;
  /**
   * Skip first N lines/entries before applying head_limit, equivalent to "| tail -n +N | head -N". Works across all output modes. Defaults to 0.
   */
  offset?: number;
  /**
   * Enable multiline mode where . matches newlines and patterns can span lines (rg -U --multiline-dotall). Default: false.
   */
  multiline?: boolean;
}
export interface TaskStopInput {
  /**
   * The ID of the background task to stop
   */
  task_id?: string;
  /**
   * Deprecated: use task_id instead
   */
  shell_id?: string;
}
export interface ListMcpResourcesInput {
  /**
   * Optional server name to filter resources by
   */
  server?: string;
}
export interface McpInput {
  [k: string]: unknown;
}
export interface NotebookEditInput {
  /**
   * The absolute path to the Jupyter notebook file to edit (must be absolute, not relative)
   */
  notebook_path: string;
  /**
   * The ID of the cell to edit. When inserting a new cell, the new cell will be inserted after the cell with this ID, or at the beginning if not specified.
   */
  cell_id?: string;
  /**
   * The new source for the cell
   */
  new_source: string;
  /**
   * The type of the cell (code or markdown). If not specified, it defaults to the current cell type. If using edit_mode=insert, this is required.
   */
  cell_type?: "code" | "markdown";
  /**
   * The type of edit to make (replace, insert, delete). Defaults to replace.
   */
  edit_mode?: "replace" | "insert" | "delete";
}
export interface ReadMcpResourceInput {
  /**
   * The MCP server name
   */
  server: string;
  /**
   * The resource URI to read
   */
  uri: string;
}
export interface SubscribeMcpResourceInput {
  /**
   * The MCP server name
   */
  server: string;
  /**
   * The resource URI to subscribe to
   */
  uri: string;
  /**
   * Optional reason for subscribing (included in update notifications)
   */
  reason?: string;
}
export interface UnsubscribeMcpResourceInput {
  /**
   * The MCP server name
   */
  server?: string;
  /**
   * The resource URI to unsubscribe from
   */
  uri?: string;
  /**
   * The subscription ID to unsubscribe
   */
  subscriptionId?: string;
}
export interface SubscribePollingInput {
  /**
   * The type of subscription: "tool" to poll a tool, "resource" to poll a resource URI
   */
  type: "tool" | "resource";
  /**
   * The MCP server name
   */
  server: string;
  /**
   * The tool to call periodically (required when type is "tool")
   */
  toolName?: string;
  /**
   * Arguments to pass to the tool on each call
   */
  arguments?: {
    [k: string]: unknown;
  };
  /**
   * The resource URI to poll (required when type is "resource")
   */
  uri?: string;
  /**
   * Polling interval in milliseconds (minimum 1000ms, default 5000ms)
   */
  intervalMs: number;
  /**
   * Optional reason for subscribing (included in change notifications)
   */
  reason?: string;
}
export interface UnsubscribePollingInput {
  /**
   * The subscription ID to unsubscribe
   */
  subscriptionId?: string;
  /**
   * The MCP server name
   */
  server?: string;
  /**
   * The target to unsubscribe (tool name for tool subscriptions, URI for resource subscriptions)
   */
  target?: string;
}
export interface TodoWriteInput {
  /**
   * The updated todo list
   */
  todos: {
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }[];
}
export interface WebFetchInput {
  /**
   * The URL to fetch content from
   */
  url: string;
  /**
   * The prompt to run on the fetched content
   */
  prompt: string;
}
export interface WebSearchInput {
  /**
   * The search query to use
   */
  query: string;
  /**
   * Only include search results from these domains
   */
  allowed_domains?: string[];
  /**
   * Never include search results from these domains
   */
  blocked_domains?: string[];
}
export interface AskUserQuestionInput {
  /**
   * Questions to ask the user (1-4 questions)
   *
   * @minItems 1
   * @maxItems 4
   */
  questions:
    | [
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        }
      ]
    | [
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        }
      ]
    | [
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        }
      ]
    | [
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        },
        {
          /**
           * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
           */
          question: string;
          /**
           * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
           */
          header: string;
          /**
           * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
           *
           * @minItems 2
           * @maxItems 4
           */
          options:
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ]
            | [
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                },
                {
                  /**
                   * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
                   */
                  label: string;
                  /**
                   * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
                   */
                  description: string;
                }
              ];
          /**
           * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
           */
          multiSelect: boolean;
        }
      ];
  /**
   * User answers collected by the permission component
   */
  answers?: {
    [k: string]: string;
  };
  /**
   * Optional metadata for tracking and analytics purposes. Not displayed to user.
   */
  metadata?: {
    /**
     * Optional identifier for the source of this question (e.g., "remember" for /remember command). Used for analytics tracking.
     */
    source?: string;
  };
}
export interface ConfigInput {
  /**
   * The setting key (e.g., "theme", "model", "permissions.defaultMode")
   */
  setting: string;
  /**
   * The new value. Omit to get current value.
   */
  value?: string | boolean | number;
}
export interface EnterWorktreeInput {
  /**
   * Optional name for the worktree. A random name is generated if not provided.
   */
  name?: string;
}
export interface BashOutput {
  /**
   * The standard output of the command
   */
  stdout: string;
  /**
   * The standard error output of the command
   */
  stderr: string;
  /**
   * Path to raw output file for large MCP tool outputs
   */
  rawOutputPath?: string;
  /**
   * Whether the command was interrupted
   */
  interrupted: boolean;
  /**
   * Flag to indicate if stdout contains image data
   */
  isImage?: boolean;
  /**
   * ID of the background task if command is running in background
   */
  backgroundTaskId?: string;
  /**
   * True if the user manually backgrounded the command with Ctrl+B
   */
  backgroundedByUser?: boolean;
  /**
   * Flag to indicate if sandbox mode was overridden
   */
  dangerouslyDisableSandbox?: boolean;
  /**
   * Semantic interpretation for non-error exit codes with special meaning
   */
  returnCodeInterpretation?: string;
  /**
   * Whether the command is expected to produce no output on success
   */
  noOutputExpected?: boolean;
  /**
   * Structured content blocks
   */
  structuredContent?: unknown[];
  /**
   * Path to the persisted full output in tool-results dir (set when output is too large for inline)
   */
  persistedOutputPath?: string;
  /**
   * Total size of the output in bytes (set when output is too large for inline)
   */
  persistedOutputSize?: number;
}
export interface ExitPlanModeOutput {
  /**
   * The plan that was presented to the user
   */
  plan: string | null;
  isAgent: boolean;
  /**
   * The file path where the plan was saved
   */
  filePath?: string;
  /**
   * Whether the Agent tool is available in the current context
   */
  hasTaskTool?: boolean;
  /**
   * When true, the teammate has sent a plan approval request to the team leader
   */
  awaitingLeaderApproval?: boolean;
  /**
   * Unique identifier for the plan approval request
   */
  requestId?: string;
}
export interface FileEditOutput {
  /**
   * The file path that was edited
   */
  filePath: string;
  /**
   * The original string that was replaced
   */
  oldString: string;
  /**
   * The new string that replaced it
   */
  newString: string;
  /**
   * The original file contents before editing
   */
  originalFile: string;
  /**
   * Diff patch showing the changes
   */
  structuredPatch: {
    oldStart: number;
    oldLines: number;
    newStart: number;
    newLines: number;
    lines: string[];
  }[];
  /**
   * Whether the user modified the proposed changes
   */
  userModified: boolean;
  /**
   * Whether all occurrences were replaced
   */
  replaceAll: boolean;
  gitDiff?: {
    filename: string;
    status: "modified" | "added";
    additions: number;
    deletions: number;
    changes: number;
    patch: string;
  };
}
export interface FileWriteOutput {
  /**
   * Whether a new file was created or an existing file was updated
   */
  type: "create" | "update";
  /**
   * The path to the file that was written
   */
  filePath: string;
  /**
   * The content that was written to the file
   */
  content: string;
  /**
   * Diff patch showing the changes
   */
  structuredPatch: {
    oldStart: number;
    oldLines: number;
    newStart: number;
    newLines: number;
    lines: string[];
  }[];
  /**
   * The original file content before the write (null for new files)
   */
  originalFile: string | null;
  gitDiff?: {
    filename: string;
    status: "modified" | "added";
    additions: number;
    deletions: number;
    changes: number;
    patch: string;
  };
}
export interface GlobOutput {
  /**
   * Time taken to execute the search in milliseconds
   */
  durationMs: number;
  /**
   * Total number of files found
   */
  numFiles: number;
  /**
   * Array of file paths that match the pattern
   */
  filenames: string[];
  /**
   * Whether results were truncated (limited to 100 files)
   */
  truncated: boolean;
}
export interface GrepOutput {
  mode?: "content" | "files_with_matches" | "count";
  numFiles: number;
  filenames: string[];
  content?: string;
  numLines?: number;
  numMatches?: number;
  appliedLimit?: number;
  appliedOffset?: number;
}
export interface TaskStopOutput {
  /**
   * Status message about the operation
   */
  message: string;
  /**
   * The ID of the task that was stopped
   */
  task_id: string;
  /**
   * The type of the task that was stopped
   */
  task_type: string;
  /**
   * The command or description of the stopped task
   */
  command?: string;
}
export interface NotebookEditOutput {
  /**
   * The new source code that was written to the cell
   */
  new_source: string;
  /**
   * The ID of the cell that was edited
   */
  cell_id?: string;
  /**
   * The type of the cell
   */
  cell_type: "code" | "markdown";
  /**
   * The programming language of the notebook
   */
  language: string;
  /**
   * The edit mode that was used
   */
  edit_mode: string;
  /**
   * Error message if the operation failed
   */
  error?: string;
  /**
   * The path to the notebook file
   */
  notebook_path: string;
  /**
   * The original notebook content before modification
   */
  original_file: string;
  /**
   * The updated notebook content after modification
   */
  updated_file: string;
}
export interface ReadMcpResourceOutput {
  contents: {
    /**
     * Resource URI
     */
    uri: string;
    /**
     * MIME type of the content
     */
    mimeType?: string;
    /**
     * Text content of the resource
     */
    text?: string;
  }[];
}
export interface SubscribeMcpResourceOutput {
  /**
   * Whether the subscription was successful
   */
  subscribed: boolean;
  /**
   * Unique identifier for this subscription
   */
  subscriptionId: string;
}
export interface UnsubscribeMcpResourceOutput {
  /**
   * Whether the unsubscription was successful
   */
  unsubscribed: boolean;
}
export interface SubscribePollingOutput {
  /**
   * Whether the subscription was successful
   */
  subscribed: boolean;
  /**
   * Unique identifier for this subscription
   */
  subscriptionId: string;
}
export interface UnsubscribePollingOutput {
  /**
   * Whether the unsubscription was successful
   */
  unsubscribed: boolean;
}
export interface TodoWriteOutput {
  /**
   * The todo list before the update
   */
  oldTodos: {
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }[];
  /**
   * The todo list after the update
   */
  newTodos: {
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }[];
}
export interface WebFetchOutput {
  /**
   * Size of the fetched content in bytes
   */
  bytes: number;
  /**
   * HTTP response code
   */
  code: number;
  /**
   * HTTP response code text
   */
  codeText: string;
  /**
   * Processed result from applying the prompt to the content
   */
  result: string;
  /**
   * Time taken to fetch and process the content
   */
  durationMs: number;
  /**
   * The URL that was fetched
   */
  url: string;
}
export interface WebSearchOutput {
  /**
   * The search query that was executed
   */
  query: string;
  /**
   * Search results and/or text commentary from the model
   */
  results: (
    | {
        /**
         * ID of the tool use
         */
        tool_use_id: string;
        /**
         * Array of search hits
         */
        content: {
          /**
           * The title of the search result
           */
          title: string;
          /**
           * The URL of the search result
           */
          url: string;
        }[];
      }
    | string
  )[];
  /**
   * Time taken to complete the search operation
   */
  durationSeconds: number;
}
export interface AskUserQuestionOutput {
  /**
   * The questions that were asked
   */
  questions: {
    /**
     * The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"
     */
    question: string;
    /**
     * Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".
     */
    header: string;
    /**
     * The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no 'Other' option, that will be provided automatically.
     *
     * @minItems 2
     * @maxItems 4
     */
    options:
      | [
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          }
        ]
      | [
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          }
        ]
      | [
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          },
          {
            /**
             * The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.
             */
            label: string;
            /**
             * Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.
             */
            description: string;
          }
        ];
    /**
     * Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.
     */
    multiSelect: boolean;
  }[];
  /**
   * The answers provided by the user (question text -> answer string; multi-select answers are comma-separated)
   */
  answers: {
    [k: string]: string;
  };
}
export interface ConfigOutput {
  success: boolean;
  operation?: "get" | "set";
  setting?: string;
  value?: unknown;
  previousValue?: unknown;
  newValue?: unknown;
  error?: string;
}
export interface EnterWorktreeOutput {
  worktreePath: string;
  worktreeBranch?: string;
  message: string;
}
