/**
 * Static shell completion script generators for kastell CLI.
 * Scripts are hardcoded strings (not runtime-derived from Commander)
 * covering all 30 commands with per-command options.
 */
export function generateBashCompletions() {
    return `# Generated by kastell -- bash completion script
# Add to ~/.bashrc or save to ~/.local/share/bash-completion/completions/kastell

_kastell() {
  local cur prev commands
  COMPREPLY=()
  cur="\${COMP_WORDS[COMP_CWORD]}"
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
  commands="init list status destroy config ssh update restart logs monitor health doctor firewall domain secure backup restore export import add remove maintain snapshot completions guard lock audit evidence fleet notify plugin"

  # Subcommand completions
  case "\${prev}" in
    config)
      COMPREPLY=( $(compgen -W "set get list reset validate" -- "\${cur}") )
      return 0
      ;;
    firewall)
      COMPREPLY=( $(compgen -W "setup add remove status --port --protocol --dry-run" -- "\${cur}") )
      return 0
      ;;
    domain)
      COMPREPLY=( $(compgen -W "add check remove list info --domain --no-ssl --dry-run" -- "\${cur}") )
      return 0
      ;;
    secure)
      COMPREPLY=( $(compgen -W "setup status audit --port --dry-run --force" -- "\${cur}") )
      return 0
      ;;
    snapshot)
      COMPREPLY=( $(compgen -W "create list delete --all --dry-run --force" -- "\${cur}") )
      return 0
      ;;
    completions)
      COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
      return 0
      ;;
    guard)
      COMPREPLY=( $(compgen -W "start stop status" -- "\${cur}") )
      return 0
      ;;
    notify)
      COMPREPLY=( $(compgen -W "add test" -- "\${cur}") )
      return 0
      ;;
    plugin)
      COMPREPLY=( $(compgen -W "install remove list validate --force --ver" -- "\${cur}") )
      return 0
      ;;
  esac

  # Per-command option completions
  if [[ "\${cur}" == -* ]]; then
    case "\${COMP_WORDS[1]}" in
      init)
        COMPREPLY=( $(compgen -W "--provider --token --token-stdin --region --size --name --full-setup --config --template --no-open --mode --dry-run" -- "\${cur}") )
        return 0
        ;;
      status)
        COMPREPLY=( $(compgen -W "--all --autostart" -- "\${cur}") )
        return 0
        ;;
      destroy)
        COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
        return 0
        ;;
      ssh)
        COMPREPLY=( $(compgen -W "-c --command" -- "\${cur}") )
        return 0
        ;;
      update)
        COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      restart)
        COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
        return 0
        ;;
      logs)
        COMPREPLY=( $(compgen -W "-n --lines -f --follow -s --service" -- "\${cur}") )
        return 0
        ;;
      monitor)
        COMPREPLY=( $(compgen -W "--containers" -- "\${cur}") )
        return 0
        ;;
      doctor)
        COMPREPLY=( $(compgen -W "--check-tokens --fresh --json --fix --force --dry-run" -- "\${cur}") )
        return 0
        ;;
      firewall)
        COMPREPLY=( $(compgen -W "--port --protocol --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      domain)
        COMPREPLY=( $(compgen -W "--domain --no-ssl --dry-run" -- "\${cur}") )
        return 0
        ;;
      secure)
        COMPREPLY=( $(compgen -W "--port --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      backup)
        COMPREPLY=( $(compgen -W "--dry-run --all --force" -- "\${cur}") )
        return 0
        ;;
      restore)
        COMPREPLY=( $(compgen -W "--backup --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      add)
        COMPREPLY=( $(compgen -W "--provider --ip --name --skip-verify --mode" -- "\${cur}") )
        return 0
        ;;
      remove)
        COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
        return 0
        ;;
      maintain)
        COMPREPLY=( $(compgen -W "--skip-reboot --all --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      snapshot)
        COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      guard)
        COMPREPLY=( $(compgen -W "--force" -- "\${cur}") )
        return 0
        ;;
      lock)
        COMPREPLY=( $(compgen -W "--production --dry-run --force" -- "\${cur}") )
        return 0
        ;;
      audit)
        COMPREPLY=( $(compgen -W "--json --badge --report --summary --score-only --fix --dry-run --watch --host --threshold --category --snapshot --snapshots --diff --compare --trend --days" -- "\${cur}") )
        return 0
        ;;
      evidence)
        COMPREPLY=( $(compgen -W "--name --output --lines --no-docker --no-sysinfo --quiet --force --json" -- "\${cur}") )
        return 0
        ;;
      fleet)
        COMPREPLY=( $(compgen -W "--json --sort" -- "\${cur}") )
        return 0
        ;;
      notify)
        COMPREPLY=( $(compgen -W "--bot-token --chat-id --webhook-url --force" -- "\${cur}") )
        return 0
        ;;
    esac
  fi

  # Top-level command completions
  if [[ \${COMP_CWORD} -eq 1 ]]; then
    COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
    return 0
  fi
}

complete -F _kastell kastell`;
}
export function generateZshCompletions() {
    return `#compdef kastell
# Generated by kastell -- zsh completion script
# Save to ~/.zfunc/_kastell and add: fpath=(~/.zfunc $fpath); autoload -Uz compinit && compinit

_kastell() {
  local -a commands
  commands=(
    'init:Deploy a new Coolify instance on a cloud provider'
    'list:List all registered servers'
    'status:Check server and Coolify status'
    'destroy:Destroy a registered server'
    'config:Manage default configuration'
    'ssh:SSH into a registered server'
    'update:Update Coolify on a registered server'
    'restart:Restart a registered server'
    'logs:View server logs'
    'monitor:Show server resource usage'
    'health:Check health of all registered servers'
    'doctor:Check local environment and configuration'
    'firewall:Manage server firewall'
    'domain:Manage server domain and SSL'
    'secure:Manage server security'
    'backup:Backup Coolify database and config'
    'restore:Restore Coolify from a backup'
    'export:Export server list to JSON'
    'import:Import servers from JSON'
    'add:Add an existing server to management'
    'remove:Remove a server from local config'
    'maintain:Run full maintenance cycle'
    'snapshot:Manage server snapshots'
    'completions:Generate shell completion scripts'
    'guard:Manage autonomous security monitoring daemon'
    'lock:Harden server to production standard'
    'audit:Run a security audit on a server'
    'evidence:Collect forensic evidence package from a server'
    'fleet:Show health and security posture of all registered servers'
    'notify:Manage notification channels'
    'plugin:Manage kastell plugins'
  )

  _arguments -C \\
    '1:command:->command' \\
    '*::arg:->args'

  case $state in
    command)
      _describe 'command' commands
      ;;
    args)
      case $words[1] in
        init)
          _arguments \\
            '--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
            '--token[API token]:token:' \\
            '--token-stdin[Read token from stdin]' \\
            '--region[Server region]:region:' \\
            '--size[Server size]:size:' \\
            '--name[Server name]:name:' \\
            '--full-setup[Auto-configure firewall and SSH]' \\
            '--config[Config file path]:path:_files' \\
            '--template[Predefined template]:template:(starter production dev)' \\
            '--no-open[Do not open browser]' \\
            '--mode[Server mode]:mode:(coolify dokploy bare)' \\
            '--dry-run[Show commands without executing]'
          ;;
        status)
          _arguments \\
            '--all[Check all servers]' \\
            '--autostart[Restart Coolify if down]'
          ;;
        destroy)
          _arguments \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        config)
          local -a subcommands
          subcommands=('set' 'get' 'list' 'reset' 'validate')
          _describe 'subcommand' subcommands
          ;;
        ssh)
          _arguments \\
            {-c,--command}'[Execute a single command]:command:'
          ;;
        update)
          _arguments \\
            '--all[Update all servers]' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        restart)
          _arguments \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        logs)
          _arguments \\
            {-n,--lines}'[Number of lines]:lines:' \\
            {-f,--follow}'[Follow log output]' \\
            {-s,--service}'[Log service]:service:(coolify docker system)'
          ;;
        monitor)
          _arguments \\
            '--containers[Show Docker container list]'
          ;;
        doctor)
          _arguments \\
            '--check-tokens[Validate provider API tokens]' \\
            '--fresh[Force fresh SSH probe, skip cache]' \\
            '--json[Output result as JSON]' \\
            '--fix[Interactive fix mode]' \\
            '--force[Skip confirmation prompts]' \\
            '--dry-run[Show fix commands without executing]'
          ;;
        firewall)
          local -a subcommands
          subcommands=('setup' 'add' 'remove' 'status')
          _describe 'subcommand' subcommands
          _arguments \\
            '--port[Port number]:port:' \\
            '--protocol[Protocol]:protocol:(tcp udp)' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        domain)
          local -a subcommands
          subcommands=('add' 'check' 'remove' 'list' 'info')
          _describe 'subcommand' subcommands
          _arguments \\
            '--domain[Domain name]:domain:' \\
            '--no-ssl[Disable HTTPS]' \\
            '--dry-run[Show commands without executing]'
          ;;
        secure)
          local -a subcommands
          subcommands=('setup' 'status' 'audit')
          _describe 'subcommand' subcommands
          _arguments \\
            '--port[SSH port]:port:' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        backup)
          _arguments \\
            '--dry-run[Show commands without executing]' \\
            '--all[Backup all servers]' \\
            '--force[Skip confirmation prompts]'
          ;;
        restore)
          _arguments \\
            '--backup[Backup timestamp]:backup:' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        add)
          _arguments \\
            '--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
            '--ip[Server IP address]:ip:' \\
            '--name[Server name]:name:' \\
            '--skip-verify[Skip verification]' \\
            '--mode[Server mode]:mode:(coolify dokploy bare)'
          ;;
        remove)
          _arguments \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        maintain)
          _arguments \\
            '--skip-reboot[Skip the reboot step]' \\
            '--all[Maintain all servers]' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        snapshot)
          local -a subcommands
          subcommands=('create' 'list' 'delete')
          _describe 'subcommand' subcommands
          _arguments \\
            '--all[All servers]' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation]'
          ;;
        completions)
          _arguments '1:shell:(bash zsh fish)'
          ;;
        guard)
          local -a subcommands
          subcommands=('start' 'stop' 'status')
          _describe 'subcommand' subcommands
          _arguments \\
            '--force[Skip confirmation prompts]'
          ;;
        lock)
          _arguments \\
            '--production[Apply full production hardening profile]' \\
            '--dry-run[Show commands without executing]' \\
            '--force[Skip confirmation prompts]'
          ;;
        audit)
          _arguments \\
            '--json[Output results as JSON]' \\
            '--badge[Output SVG badge with score]' \\
            '--report[Generate report]:format:(html md)' \\
            '--summary[Show compact dashboard summary]' \\
            '--score-only[Output only the score]' \\
            '--fix[Interactive fix mode]' \\
            '--dry-run[Show fix commands without executing]' \\
            '--watch[Watch mode]:interval:' \\
            '--host[Audit unregistered server]:user@ip:' \\
            '--threshold[Exit code 1 if score below]:score:' \\
            '--category[Comma-separated categories]:list:' \\
            '--snapshot[Save audit as snapshot]:name:' \\
            '--snapshots[List saved snapshots]' \\
            '--diff[Compare two snapshots]:before:after:' \\
            '--compare[Compare two servers]:server1:server2:' \\
            '--trend[Show score trend over time]' \\
            '--days[Limit trend to N days]:n:'
          ;;
        evidence)
          _arguments \\
            '--name[Label for evidence directory]:label:' \\
            '--output[Override output directory]:dir:_files' \\
            '--lines[Log lines to collect]:n:' \\
            '--no-docker[Skip Docker data collection]' \\
            '--no-sysinfo[Skip system info collection]' \\
            '--quiet[Suppress spinner output]' \\
            '--force[Overwrite existing evidence]' \\
            '--json[Print manifest JSON to stdout]'
          ;;
        fleet)
          _arguments \\
            '--json[Output machine-readable JSON]' \\
            '--sort[Sort by field]:field:(score name provider)'
          ;;
        notify)
          local -a subcommands
          subcommands=('add' 'test')
          _describe 'subcommand' subcommands
          _arguments \\
            '--bot-token[Telegram bot token]:token:' \\
            '--chat-id[Telegram chat ID]:id:' \\
            '--webhook-url[Discord or Slack webhook URL]:url:' \\
            '--force[Skip interactive prompts]'
          ;;
        plugin)
          local -a subcommands
          subcommands=('install:Install a plugin from npm registry' 'remove:Remove an installed plugin' 'list:List installed plugins' 'validate:Validate plugin manifest and entry point')
          _describe 'subcommand' subcommands
          _arguments \\
            '--ver[Specific version to install]:version:' \\
            '--force[Skip confirmation prompt]'
          ;;
      esac
      ;;
  esac
}

_kastell`;
}
export function generateFishCompletions() {
    return `# Generated by kastell -- fish completion script
# Save to ~/.config/fish/completions/kastell.fish

# Disable file completions by default
complete -c kastell -f

# Helper function: no subcommand entered yet
function __kastell_no_subcommand
  set -l cmd (commandline -opc)
  test (count $cmd) -eq 1
end

# Helper function: check current subcommand
function __kastell_using_subcommand
  set -l cmd (commandline -opc)
  test (count $cmd) -ge 2; and test $cmd[2] = $argv[1]
end

# Top-level commands
complete -c kastell -n '__kastell_no_subcommand' -a 'init' -d 'Deploy a new Coolify instance'
complete -c kastell -n '__kastell_no_subcommand' -a 'list' -d 'List all registered servers'
complete -c kastell -n '__kastell_no_subcommand' -a 'status' -d 'Check server and Coolify status'
complete -c kastell -n '__kastell_no_subcommand' -a 'destroy' -d 'Destroy a registered server'
complete -c kastell -n '__kastell_no_subcommand' -a 'config' -d 'Manage default configuration'
complete -c kastell -n '__kastell_no_subcommand' -a 'ssh' -d 'SSH into a registered server'
complete -c kastell -n '__kastell_no_subcommand' -a 'update' -d 'Update Coolify on a server'
complete -c kastell -n '__kastell_no_subcommand' -a 'restart' -d 'Restart a registered server'
complete -c kastell -n '__kastell_no_subcommand' -a 'logs' -d 'View server logs'
complete -c kastell -n '__kastell_no_subcommand' -a 'monitor' -d 'Show server resource usage'
complete -c kastell -n '__kastell_no_subcommand' -a 'health' -d 'Check health of servers'
complete -c kastell -n '__kastell_no_subcommand' -a 'doctor' -d 'Check local environment'
complete -c kastell -n '__kastell_no_subcommand' -a 'firewall' -d 'Manage server firewall'
complete -c kastell -n '__kastell_no_subcommand' -a 'domain' -d 'Manage server domain and SSL'
complete -c kastell -n '__kastell_no_subcommand' -a 'secure' -d 'Manage server security'
complete -c kastell -n '__kastell_no_subcommand' -a 'backup' -d 'Backup Coolify database'
complete -c kastell -n '__kastell_no_subcommand' -a 'restore' -d 'Restore from a backup'
complete -c kastell -n '__kastell_no_subcommand' -a 'export' -d 'Export server list to JSON'
complete -c kastell -n '__kastell_no_subcommand' -a 'import' -d 'Import servers from JSON'
complete -c kastell -n '__kastell_no_subcommand' -a 'add' -d 'Add an existing server'
complete -c kastell -n '__kastell_no_subcommand' -a 'remove' -d 'Remove a server from config'
complete -c kastell -n '__kastell_no_subcommand' -a 'maintain' -d 'Run full maintenance cycle'
complete -c kastell -n '__kastell_no_subcommand' -a 'snapshot' -d 'Manage server snapshots'
complete -c kastell -n '__kastell_no_subcommand' -a 'completions' -d 'Generate shell completions'
complete -c kastell -n '__kastell_no_subcommand' -a 'guard' -d 'Manage guard daemon'
complete -c kastell -n '__kastell_no_subcommand' -a 'lock' -d 'Harden server to production standard'
complete -c kastell -n '__kastell_no_subcommand' -a 'audit' -d 'Run a security audit'
complete -c kastell -n '__kastell_no_subcommand' -a 'evidence' -d 'Collect forensic evidence'
complete -c kastell -n '__kastell_no_subcommand' -a 'fleet' -d 'Show fleet health and security'
complete -c kastell -n '__kastell_no_subcommand' -a 'notify' -d 'Manage notification channels'
complete -c kastell -n '__kastell_no_subcommand' -a 'plugin' -d 'Manage kastell plugins'

# init options
complete -c kastell -n '__kastell_using_subcommand init' -l provider -d 'Cloud provider'
complete -c kastell -n '__kastell_using_subcommand init' -l token -d 'API token'
complete -c kastell -n '__kastell_using_subcommand init' -l token-stdin -d 'Read token from stdin'
complete -c kastell -n '__kastell_using_subcommand init' -l region -d 'Server region'
complete -c kastell -n '__kastell_using_subcommand init' -l size -d 'Server size'
complete -c kastell -n '__kastell_using_subcommand init' -l name -d 'Server name'
complete -c kastell -n '__kastell_using_subcommand init' -l full-setup -d 'Auto-configure firewall and SSH'
complete -c kastell -n '__kastell_using_subcommand init' -l config -d 'Config file path'
complete -c kastell -n '__kastell_using_subcommand init' -l template -d 'Predefined template'
complete -c kastell -n '__kastell_using_subcommand init' -l no-open -d 'Do not open browser'
complete -c kastell -n '__kastell_using_subcommand init' -l mode -d 'Server mode'
complete -c kastell -n '__kastell_using_subcommand init' -l dry-run -d 'Show commands without executing'

# status options
complete -c kastell -n '__kastell_using_subcommand status' -l all -d 'Check all servers'
complete -c kastell -n '__kastell_using_subcommand status' -l autostart -d 'Restart Coolify if down'

# destroy options
complete -c kastell -n '__kastell_using_subcommand destroy' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand destroy' -l force -d 'Skip confirmation prompts'

# config subcommands
complete -c kastell -n '__kastell_using_subcommand config' -a 'set get list reset validate'

# ssh options
complete -c kastell -n '__kastell_using_subcommand ssh' -s c -l command -d 'Execute a single command'

# update options
complete -c kastell -n '__kastell_using_subcommand update' -l all -d 'Update all servers'
complete -c kastell -n '__kastell_using_subcommand update' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand update' -l force -d 'Skip confirmation prompts'

# restart options
complete -c kastell -n '__kastell_using_subcommand restart' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand restart' -l force -d 'Skip confirmation prompts'

# logs options
complete -c kastell -n '__kastell_using_subcommand logs' -s n -l lines -d 'Number of log lines'
complete -c kastell -n '__kastell_using_subcommand logs' -s f -l follow -d 'Follow log output'
complete -c kastell -n '__kastell_using_subcommand logs' -s s -l service -d 'Log service'

# monitor options
complete -c kastell -n '__kastell_using_subcommand monitor' -l containers -d 'Show Docker containers'

# doctor options
complete -c kastell -n '__kastell_using_subcommand doctor' -l check-tokens -d 'Validate API tokens'
complete -c kastell -n '__kastell_using_subcommand doctor' -l fresh -d 'Force fresh SSH probe, skip cache'
complete -c kastell -n '__kastell_using_subcommand doctor' -l json -d 'Output result as JSON'
complete -c kastell -n '__kastell_using_subcommand doctor' -l fix -d 'Interactive fix mode'
complete -c kastell -n '__kastell_using_subcommand doctor' -l force -d 'Skip confirmation prompts'
complete -c kastell -n '__kastell_using_subcommand doctor' -l dry-run -d 'Show fix commands without executing'

# firewall subcommands and options
complete -c kastell -n '__kastell_using_subcommand firewall' -a 'setup add remove status'
complete -c kastell -n '__kastell_using_subcommand firewall' -l port -d 'Port number'
complete -c kastell -n '__kastell_using_subcommand firewall' -l protocol -d 'Protocol (tcp/udp)'
complete -c kastell -n '__kastell_using_subcommand firewall' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand firewall' -l force -d 'Skip confirmation prompts'

# domain subcommands and options
complete -c kastell -n '__kastell_using_subcommand domain' -a 'add check remove list info'
complete -c kastell -n '__kastell_using_subcommand domain' -l domain -d 'Domain name'
complete -c kastell -n '__kastell_using_subcommand domain' -l no-ssl -d 'Disable HTTPS'
complete -c kastell -n '__kastell_using_subcommand domain' -l dry-run -d 'Show commands without executing'

# secure subcommands and options
complete -c kastell -n '__kastell_using_subcommand secure' -a 'setup status audit'
complete -c kastell -n '__kastell_using_subcommand secure' -l port -d 'SSH port'
complete -c kastell -n '__kastell_using_subcommand secure' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand secure' -l force -d 'Skip confirmation prompts'

# backup options
complete -c kastell -n '__kastell_using_subcommand backup' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand backup' -l all -d 'Backup all servers'
complete -c kastell -n '__kastell_using_subcommand backup' -l force -d 'Skip confirmation prompts'

# restore options
complete -c kastell -n '__kastell_using_subcommand restore' -l backup -d 'Backup timestamp'
complete -c kastell -n '__kastell_using_subcommand restore' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand restore' -l force -d 'Skip confirmation prompts'

# add options
complete -c kastell -n '__kastell_using_subcommand add' -l provider -d 'Cloud provider'
complete -c kastell -n '__kastell_using_subcommand add' -l ip -d 'Server IP address'
complete -c kastell -n '__kastell_using_subcommand add' -l name -d 'Server name'
complete -c kastell -n '__kastell_using_subcommand add' -l skip-verify -d 'Skip verification'
complete -c kastell -n '__kastell_using_subcommand add' -l mode -d 'Server mode'

# remove options
complete -c kastell -n '__kastell_using_subcommand remove' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand remove' -l force -d 'Skip confirmation prompts'

# maintain options
complete -c kastell -n '__kastell_using_subcommand maintain' -l skip-reboot -d 'Skip reboot step'
complete -c kastell -n '__kastell_using_subcommand maintain' -l all -d 'Maintain all servers'
complete -c kastell -n '__kastell_using_subcommand maintain' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand maintain' -l force -d 'Skip confirmation prompts'

# snapshot subcommands and options
complete -c kastell -n '__kastell_using_subcommand snapshot' -a 'create list delete'
complete -c kastell -n '__kastell_using_subcommand snapshot' -l all -d 'All servers'
complete -c kastell -n '__kastell_using_subcommand snapshot' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand snapshot' -l force -d 'Skip confirmation'

# completions subarguments
complete -c kastell -n '__kastell_using_subcommand completions' -a 'bash zsh fish'

# guard subcommands and options
complete -c kastell -n '__kastell_using_subcommand guard' -a 'start stop status'
complete -c kastell -n '__kastell_using_subcommand guard' -l force -d 'Skip confirmation prompts'

# lock options
complete -c kastell -n '__kastell_using_subcommand lock' -l production -d 'Apply full production hardening profile'
complete -c kastell -n '__kastell_using_subcommand lock' -l dry-run -d 'Show commands without executing'
complete -c kastell -n '__kastell_using_subcommand lock' -l force -d 'Skip confirmation prompts'

# audit options
complete -c kastell -n '__kastell_using_subcommand audit' -l json -d 'Output results as JSON'
complete -c kastell -n '__kastell_using_subcommand audit' -l badge -d 'Output SVG badge with score'
complete -c kastell -n '__kastell_using_subcommand audit' -l report -d 'Generate report (html or md)'
complete -c kastell -n '__kastell_using_subcommand audit' -l summary -d 'Compact dashboard summary'
complete -c kastell -n '__kastell_using_subcommand audit' -l score-only -d 'Output only the score'
complete -c kastell -n '__kastell_using_subcommand audit' -l fix -d 'Interactive fix mode'
complete -c kastell -n '__kastell_using_subcommand audit' -l dry-run -d 'Show fix commands without executing'
complete -c kastell -n '__kastell_using_subcommand audit' -l watch -d 'Watch mode'
complete -c kastell -n '__kastell_using_subcommand audit' -l host -d 'Audit unregistered server'
complete -c kastell -n '__kastell_using_subcommand audit' -l threshold -d 'Exit code 1 if below threshold'
complete -c kastell -n '__kastell_using_subcommand audit' -l category -d 'Comma-separated categories'
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshot -d 'Save audit as snapshot'
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshots -d 'List saved snapshots'
complete -c kastell -n '__kastell_using_subcommand audit' -l diff -d 'Compare two snapshots'
complete -c kastell -n '__kastell_using_subcommand audit' -l compare -d 'Compare two servers'
complete -c kastell -n '__kastell_using_subcommand audit' -l trend -d 'Show score trend over time'
complete -c kastell -n '__kastell_using_subcommand audit' -l days -d 'Limit trend to N days'

# evidence options
complete -c kastell -n '__kastell_using_subcommand evidence' -l name -d 'Label for evidence directory'
complete -c kastell -n '__kastell_using_subcommand evidence' -l output -d 'Override output directory'
complete -c kastell -n '__kastell_using_subcommand evidence' -l lines -d 'Log lines to collect'
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-docker -d 'Skip Docker collection'
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-sysinfo -d 'Skip system info'
complete -c kastell -n '__kastell_using_subcommand evidence' -l quiet -d 'Suppress spinner output'
complete -c kastell -n '__kastell_using_subcommand evidence' -l force -d 'Overwrite existing evidence'
complete -c kastell -n '__kastell_using_subcommand evidence' -l json -d 'Print manifest JSON'

# fleet options
complete -c kastell -n '__kastell_using_subcommand fleet' -l json -d 'Output machine-readable JSON'
complete -c kastell -n '__kastell_using_subcommand fleet' -l sort -d 'Sort by score/name/provider'

# notify subcommands and options
complete -c kastell -n '__kastell_using_subcommand notify' -a 'add test'
complete -c kastell -n '__kastell_using_subcommand notify' -l bot-token -d 'Telegram bot token'
complete -c kastell -n '__kastell_using_subcommand notify' -l chat-id -d 'Telegram chat ID'
complete -c kastell -n '__kastell_using_subcommand notify' -l webhook-url -d 'Discord or Slack webhook URL'
complete -c kastell -n '__kastell_using_subcommand notify' -l force -d 'Skip interactive prompts'

# plugin subcommands and options
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'install' -d 'Install a plugin from npm registry'
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'remove' -d 'Remove an installed plugin'
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'list' -d 'List installed plugins'
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'validate' -d 'Validate plugin manifest'
complete -c kastell -n '__kastell_using_subcommand plugin' -l force -d 'Skip confirmation prompt'
complete -c kastell -n '__kastell_using_subcommand plugin' -l ver -d 'Specific version to install' -r`;
}
//# sourceMappingURL=completions.js.map