chore: upgrade OpenClaw to 2026.3.2

- Upgrade from 2026.2.9 to 2026.3.2
- Update completions for new version
- Update device auth and paired devices
- Add memory notes for 2026-03-06
This commit is contained in:
2026-03-06 11:17:49 +08:00
parent 1b10cc3067
commit c9d77494cb
13 changed files with 1205 additions and 1434 deletions
+150 -31
View File
@@ -17,7 +17,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
# Root command
if ($commandPath -eq "") {
$completions = @('setup','onboard','configure','config','doctor','dashboard','reset','uninstall','message','memory','agent','agents','status','health','sessions','browser','completion','acp','gateway','daemon','logs','system','models','approvals','nodes','devices','node','sandbox','tui','cron','dns','docs','hooks','webhooks','pairing','plugins','channels','directory','security','skills','update', '-V,','--dev','--profile','--no-color')
$completions = @('completion','setup','onboard','configure','config','doctor','dashboard','reset','uninstall','message','memory','agent','agents','status','health','sessions','browser','acp','gateway','daemon','logs','system','models','approvals','nodes','devices','node','sandbox','tui','cron','dns','docs','hooks','webhooks','qr','clawbot','pairing','plugins','channels','directory','security','secrets','skills','update', '-V,','--dev','--profile','--log-level','--no-color')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -25,7 +25,14 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
if ($commandPath -eq 'openclaw') {
$completions = @('setup','onboard','configure','config','doctor','dashboard','reset','uninstall','message','memory','agent','agents','status','health','sessions','browser','completion','acp','gateway','daemon','logs','system','models','approvals','nodes','devices','node','sandbox','tui','cron','dns','docs','hooks','webhooks','pairing','plugins','channels','directory','security','skills','update','-V','--dev','--profile','--no-color')
$completions = @('completion','setup','onboard','configure','config','doctor','dashboard','reset','uninstall','message','memory','agent','agents','status','health','sessions','browser','acp','gateway','daemon','logs','system','models','approvals','nodes','devices','node','sandbox','tui','cron','dns','docs','hooks','webhooks','qr','clawbot','pairing','plugins','channels','directory','security','secrets','skills','update','-V','--dev','--profile','--log-level','--no-color')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw completion') {
$completions = @('-s','-i','--write-state','-y')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -39,7 +46,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw onboard') {
$completions = @('--workspace','--reset','--non-interactive','--accept-risk','--flow','--mode','--auth-choice','--token-provider','--token','--token-profile-id','--token-expires-in','--anthropic-api-key','--openai-api-key','--openrouter-api-key','--ai-gateway-api-key','--cloudflare-ai-gateway-account-id','--cloudflare-ai-gateway-gateway-id','--cloudflare-ai-gateway-api-key','--moonshot-api-key','--kimi-code-api-key','--gemini-api-key','--zai-api-key','--xiaomi-api-key','--minimax-api-key','--synthetic-api-key','--venice-api-key','--opencode-zen-api-key','--xai-api-key','--qianfan-api-key','--gateway-port','--gateway-bind','--gateway-auth','--gateway-token','--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-health','--skip-ui','--node-manager','--json')
$completions = @('--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','--anthropic-api-key','--openai-api-key','--mistral-api-key','--openrouter-api-key','--kilocode-api-key','--ai-gateway-api-key','--cloudflare-ai-gateway-api-key','--moonshot-api-key','--kimi-code-api-key','--gemini-api-key','--zai-api-key','--xiaomi-api-key','--minimax-api-key','--synthetic-api-key','--venice-api-key','--together-api-key','--huggingface-api-key','--opencode-zen-api-key','--xai-api-key','--litellm-api-key','--qianfan-api-key','--volcengine-api-key','--byteplus-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-password','--remote-url','--remote-token','--tailscale','--tailscale-reset-on-exit','--install-daemon','--no-install-daemon','--skip-daemon','--daemon-runtime','--skip-channels','--skip-skills','--skip-health','--skip-ui','--node-manager','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -53,7 +60,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw config') {
$completions = @('get','set','unset','--section')
$completions = @('get','set','unset','file','validate','--section')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -67,6 +74,13 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw config set') {
$completions = @('--strict-json','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw config validate') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
@@ -109,7 +123,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw message send') {
$completions = @('-m','-t','--media','--buttons','--card','--reply-to','--thread-id','--gif-playback','--silent','--channel','--account','--json','--dry-run','--verbose')
$completions = @('-m','-t','--media','--buttons','--components','--card','--reply-to','--thread-id','--gif-playback','--silent','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -123,7 +137,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw message poll') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--poll-question','--poll-option','--poll-multi','--poll-duration-hours','-m')
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--poll-question','--poll-option','--poll-multi','--poll-duration-hours','--poll-duration-seconds','--poll-anonymous','--poll-public','-m','--silent','--thread-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -410,7 +424,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw memory search') {
$completions = @('--agent','--max-results','--min-score','--json')
$completions = @('--query','--agent','--max-results','--min-score','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -424,7 +438,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw agents') {
$completions = @('list','add','set-identity','delete')
$completions = @('list','bindings','bind','unbind','add','set-identity','delete')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -437,6 +451,27 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw agents bindings') {
$completions = @('--agent','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw agents bind') {
$completions = @('--agent','--bind','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw agents unbind') {
$completions = @('--agent','--bind','--all','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw agents add') {
$completions = @('--workspace','--model','--agent-dir','--bind','--non-interactive','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -473,7 +508,14 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw sessions') {
$completions = @('--json','--verbose','--store','--active')
$completions = @('cleanup','--json','--verbose','--store','--agent','--all-agents','--active')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw sessions cleanup') {
$completions = @('--store','--agent','--all-agents','--dry-run','--enforce','--fix-missing','--active-key','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -809,7 +851,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw browser set headers') {
$completions = @('--json','--target-id')
$completions = @('--headers-json','--target-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -857,22 +899,15 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw completion') {
$completions = @('-s','-i','--write-state','-y')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw acp') {
$completions = @('client','--url','--token','--password','--session','--session-label','--require-existing','--reset-session','--no-prefix-cwd','--verbose')
$completions = @('client','--url','--token','--token-file','--password','--password-file','--session','--session-label','--require-existing','--reset-session','--no-prefix-cwd','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw acp client') {
$completions = @('--cwd','--server','--server-args','--server-verbose','--verbose')
$completions = @('--cwd','--server','--server-args','--server-verbose','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1019,7 +1054,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw logs') {
$completions = @('--limit','--max-bytes','--follow','--interval','--json','--plain','--no-color','--url','--token','--timeout','--expect-final')
$completions = @('--limit','--max-bytes','--follow','--interval','--json','--plain','--no-color','--local-time','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1250,7 +1285,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw nodes') {
$completions = @('status','describe','list','pending','approve','reject','rename','invoke','run','notify','canvas','camera','screen','location')
$completions = @('status','describe','list','pending','approve','reject','rename','invoke','run','notify','push','canvas','camera','screen','location')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1326,6 +1361,13 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw nodes push') {
$completions = @('--node','--title','--body','--environment','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw nodes canvas') {
$completions = @('snapshot','present','hide','navigate','eval','a2ui')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -1446,7 +1488,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw devices') {
$completions = @('list','approve','reject','rotate','revoke')
$completions = @('list','remove','clear','approve','reject','rotate','revoke')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1459,13 +1501,27 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw devices approve') {
if ($commandPath -eq 'openclaw devices remove') {
$completions = @('--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw devices clear') {
$completions = @('--pending','--yes','--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw devices approve') {
$completions = @('--latest','--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw devices reject') {
$completions = @('--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -1593,7 +1649,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw cron add') {
$completions = @('--name','--description','--disabled','--delete-after-run','--keep-after-run','--agent','--session','--wake','--at','--every','--cron','--tz','--system-event','--message','--thinking','--model','--timeout-seconds','--announce','--deliver','--no-deliver','--channel','--to','--best-effort-deliver','--json','--url','--token','--timeout','--expect-final')
$completions = @('--name','--description','--disabled','--delete-after-run','--keep-after-run','--agent','--session','--session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--thinking','--model','--timeout-seconds','--light-context','--announce','--deliver','--no-deliver','--channel','--to','--account','--best-effort-deliver','--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1635,7 +1691,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw cron edit') {
$completions = @('--name','--description','--enable','--disable','--delete-after-run','--keep-after-run','--session','--agent','--clear-agent','--wake','--at','--every','--cron','--tz','--system-event','--message','--thinking','--model','--timeout-seconds','--announce','--deliver','--no-deliver','--channel','--to','--best-effort-deliver','--no-best-effort-deliver','--url','--token','--timeout','--expect-final')
$completions = @('--name','--description','--enable','--disable','--delete-after-run','--keep-after-run','--session','--agent','--clear-agent','--session-key','--clear-session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--thinking','--model','--timeout-seconds','--light-context','--no-light-context','--announce','--deliver','--no-deliver','--channel','--to','--account','--best-effort-deliver','--no-best-effort-deliver','--failure-alert','--no-failure-alert','--failure-alert-after','--failure-alert-channel','--failure-alert-to','--failure-alert-cooldown','--failure-alert-mode','--failure-alert-account-id','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1684,7 +1740,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw hooks install') {
$completions = @('-l')
$completions = @('-l','--pin')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1725,6 +1781,27 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw qr') {
$completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw clawbot') {
$completions = @('qr')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw clawbot qr') {
$completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw pairing') {
$completions = @('list','approve')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -1733,21 +1810,21 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw pairing list') {
$completions = @('--channel','--json')
$completions = @('--channel','--account','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw pairing approve') {
$completions = @('--channel','--notify')
$completions = @('--channel','--account','--notify')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw plugins') {
$completions = @('list','info','enable','disable','install','update','doctor')
$completions = @('list','info','enable','disable','uninstall','install','update','doctor')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1767,8 +1844,15 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw plugins uninstall') {
$completions = @('--keep-files','--keep-config','--force','--dry-run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw plugins install') {
$completions = @('-l')
$completions = @('-l','--pin')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
@@ -1914,6 +1998,41 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
}
if ($commandPath -eq 'openclaw secrets') {
$completions = @('reload','audit','configure','apply')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw secrets reload') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw secrets audit') {
$completions = @('--check','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw secrets configure') {
$completions = @('--apply','--yes','--providers-only','--skip-provider-setup','--agent','--plan-out','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw secrets apply') {
$completions = @('--from','--dry-run','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
if ($commandPath -eq 'openclaw skills') {
$completions = @('list','info','check')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -1943,7 +2062,7 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
}
if ($commandPath -eq 'openclaw update') {
$completions = @('wizard','status','--json','--no-restart','--channel','--tag','--timeout','--yes')
$completions = @('wizard','status','--json','--no-restart','--dry-run','--channel','--tag','--timeout','--yes')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}