_openclaw_completion() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" # Simple top-level completion for now opts="completion setup onboard configure config backup doctor dashboard reset uninstall message mcp agent agents status health sessions tasks acp gateway daemon logs system models infer approvals nodes devices node sandbox tui cron dns docs qa hooks webhooks qr clawbot browser memory pairing plugins channels directory security secrets skills update -V, --container --dev --profile --log-level --no-color" case "${prev}" in completion) opts=" -s, -i, --write-state -y," COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; setup) opts=" --workspace --wizard --non-interactive --mode --remote-url --remote-token" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; onboard) opts=" --workspace --reset --reset-scope --non-interactive --accept-risk --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --arceeai-api-key --openrouter-api-key --byteplus-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepseek-api-key --fal-api-key --fireworks-api-key --gemini-api-key --huggingface-api-key --kilocode-api-key --kimi-code-api-key --litellm-api-key --minimax-api-key --mistral-api-key --moonshot-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --runway-api-key --stepfun-api-key --synthetic-api-key --together-api-key --venice-api-key --ai-gateway-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --zai-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --tailscale-reset-on-exit --install-daemon --no-install-daemon --skip-daemon --daemon-runtime --skip-channels --skip-skills --skip-search --skip-health --skip-ui --node-manager --json" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; configure) opts=" --section" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; config) opts="get set unset file schema validate --section" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; backup) opts="create verify " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; doctor) opts=" --no-workspace-suggestions --yes --repair --fix --force --non-interactive --generate-gateway-token --deep" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; dashboard) opts=" --no-open" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; reset) opts=" --scope --yes --non-interactive --dry-run" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; uninstall) opts=" --service --state --workspace --app --all --yes --non-interactive --dry-run" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; message) opts="send broadcast poll react reactions read edit delete pin unpin pins permissions search thread emoji sticker role channel member voice event timeout kick ban " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; mcp) opts="serve list show set unset " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; agent) opts=" -m, -t, --session-id --agent --thinking --verbose --channel --reply-to --reply-channel --reply-account --local --deliver --json --timeout" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; agents) opts="list bindings bind unbind add set-identity delete " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; status) opts=" --json --all --usage --deep --timeout --verbose --debug" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; health) opts=" --json --timeout --verbose --debug" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; sessions) opts="cleanup --json --verbose --store --agent --all-agents --active" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; tasks) opts="list audit maintenance show notify cancel flow --json --runtime --status" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; acp) opts="client --url --token --token-file --password --password-file --session --session-label --require-existing --reset-session --no-prefix-cwd --provenance -v," COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; gateway) opts="run status install uninstall start stop restart call usage-cost health probe discover --port --bind --token --auth --password --password-file --tailscale --tailscale-reset-on-exit --allow-unconfigured --dev --reset --force --verbose --cli-backend-logs --claude-cli-logs --ws-log --compact --raw-stream --raw-stream-path" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; daemon) opts="status install uninstall start stop restart " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; logs) opts=" --limit --max-bytes --follow --interval --json --plain --no-color --local-time --url --token --timeout --expect-final" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; system) opts="event heartbeat presence " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; models) opts="list status set set-image aliases fallbacks image-fallbacks scan auth --status-json --status-plain --agent" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; infer) opts="list inspect model image audio tts video web embedding " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; approvals) opts="get set allowlist " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; nodes) opts="status describe list pending approve reject rename invoke notify push canvas camera screen location " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; devices) opts="list remove clear approve reject rotate revoke " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; node) opts="run status install uninstall stop restart " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; sandbox) opts="list recreate explain " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; tui) opts=" --url --token --password --session --deliver --thinking --message --timeout-ms --history-limit" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; cron) opts="status list add rm enable disable runs run edit " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; dns) opts="setup " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; docs) opts=" " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; qa) opts="run suite manual ui docker-scaffold docker-build-image up mock-openai " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; hooks) opts="list info check enable disable install update " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; webhooks) opts="gmail " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; qr) opts=" --remote --url --public-url --token --password --setup-code-only --no-ascii --json" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; clawbot) opts="qr " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; browser) opts="status start stop reset-profile tabs tab open focus close profiles create-profile delete-profile screenshot snapshot navigate resize click type press hover scrollintoview drag select upload waitfordownload download dialog fill wait evaluate console pdf responsebody highlight errors requests trace cookies storage set --browser-profile --json --url --token --timeout --expect-final" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; memory) opts="status index search promote promote-explain rem-harness " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; pairing) opts="list approve " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; plugins) opts="list inspect enable disable uninstall install update doctor marketplace " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; channels) opts="list status capabilities resolve logs add remove login logout " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; directory) opts="self peers groups " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; security) opts="audit " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; secrets) opts="reload audit configure apply " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; skills) opts="search install update list info check " COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; update) opts="wizard status --json --no-restart --dry-run --channel --tag --timeout --yes" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 fi COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) } complete -F _openclaw_completion openclaw