diff --git a/agents/dev-assist/agent/models.json b/agents/dev-assist/agent/models.json
index 5e07faf..6d8e15f 100644
--- a/agents/dev-assist/agent/models.json
+++ b/agents/dev-assist/agent/models.json
@@ -55,6 +55,7 @@
{
"id": "glm-5",
"name": "glm 5",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -66,12 +67,12 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
},
{
"id": "glm-4.7-FlashX",
"name": "glm 4.7 FlashX",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -83,8 +84,7 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
}
]
},
@@ -134,6 +134,75 @@
}
],
"apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "kimi": {
+ "baseUrl": "https://api.kimi.com/coding/",
+ "api": "anthropic-messages",
+ "headers": {
+ "User-Agent": "claude-code/0.1.0"
+ },
+ "models": [
+ {
+ "id": "kimi-code",
+ "name": "Kimi Code",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ },
+ {
+ "id": "k2p5",
+ "name": "Kimi Code (legacy model id)",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ }
+ ],
+ "apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "minimax": {
+ "baseUrl": "https://api.minimaxi.com/anthropic",
+ "api": "anthropic-messages",
+ "authHeader": true,
+ "models": [
+ {
+ "id": "MiniMax-M2.7-highspeed",
+ "name": "MiniMax M2.7 highspeed",
+ "reasoning": true,
+ "input": [
+ "text"
+ ],
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cacheRead": 0.06,
+ "cacheWrite": 0.375
+ },
+ "contextWindow": 204800,
+ "maxTokens": 131072,
+ "api": "anthropic-messages"
+ }
+ ],
+ "apiKey": "sk-cp-8PugyKE2xsG0S4x4KzDuuIV6Z9bT1NFwkpfrOSG05djFVExAgYEPpp7iUaTcugT6_P4uBYIN9S75l3ij-Yd2Ct8f6CxdKWdgFahESfn_jla-SlU6oGUCBjk"
}
}
}
diff --git a/agents/dev-assist/sessions/sessions.json b/agents/dev-assist/sessions/sessions.json
index 0d96427..0c35476 100644
--- a/agents/dev-assist/sessions/sessions.json
+++ b/agents/dev-assist/sessions/sessions.json
@@ -347,10 +347,13 @@
"memoryFlushCompactionCount": 0
},
"agent:dev-assist:main": {
- "sessionId": "55667627-ffdd-4965-8bff-9d26f3d59a5d",
- "updatedAt": 1774319019282,
+ "sessionId": "800e4854-e0a4-431b-a6f7-46f6111c79ea",
+ "updatedAt": 1775056976386,
"systemSent": true,
"abortedLastRun": false,
+ "authProfileOverride": "minimax:cn",
+ "authProfileOverrideSource": "auto",
+ "authProfileOverrideCompactionCount": 0,
"chatType": "direct",
"deliveryContext": {
"channel": "feishu",
@@ -369,7 +372,7 @@
"to": "user:ou_302b162eb824d405718845441a32d9cf",
"accountId": "feishu-dev"
},
- "sessionFile": "/home/starmen1265/.openclaw/agents/dev-assist/sessions/55667627-ffdd-4965-8bff-9d26f3d59a5d.jsonl",
+ "sessionFile": "/home/starmen1265/.openclaw/agents/dev-assist/sessions/800e4854-e0a4-431b-a6f7-46f6111c79ea.jsonl",
"compactionCount": 0,
"skillsSnapshot": {
"prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n \n clawlist\n MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.\n ~/.openclaw/skills/clawlist/SKILL.md\n \n",
@@ -393,6 +396,13 @@
"filePath": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
"baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver",
"source": "openclaw-managed",
+ "sourceInfo": {
+ "path": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
+ "source": "openclaw-managed",
+ "scope": "project",
+ "origin": "top-level",
+ "baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver"
+ },
"disableModelInvocation": false
},
{
@@ -401,31 +411,50 @@
"filePath": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
"baseDir": "/home/starmen1265/.openclaw/skills/clawlist",
"source": "openclaw-managed",
+ "sourceInfo": {
+ "path": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
+ "source": "openclaw-managed",
+ "scope": "project",
+ "origin": "top-level",
+ "baseDir": "/home/starmen1265/.openclaw/skills/clawlist"
+ },
"disableModelInvocation": false
}
],
"version": 0
},
- "modelProvider": "zhipu",
- "model": "glm-5",
+ "status": "done",
+ "startedAt": 1775056943823,
+ "endedAt": 1775056976337,
+ "runtimeMs": 32514,
+ "modelProvider": "minimax",
+ "model": "MiniMax-M2.7-highspeed",
+ "contextTokens": 204800,
"systemPromptReport": {
"source": "run",
- "generatedAt": 1774318969487,
- "sessionId": "55667627-ffdd-4965-8bff-9d26f3d59a5d",
+ "generatedAt": 1775056943805,
+ "sessionId": "800e4854-e0a4-431b-a6f7-46f6111c79ea",
"sessionKey": "agent:dev-assist:main",
- "provider": "zhipu",
- "model": "glm-5",
+ "provider": "minimax",
+ "model": "MiniMax-M2.7-highspeed",
"workspaceDir": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"bootstrapMaxChars": 20000,
"bootstrapTotalMaxChars": 150000,
+ "bootstrapTruncation": {
+ "warningMode": "once",
+ "warningShown": false,
+ "truncatedFiles": 0,
+ "nearLimitFiles": 0,
+ "totalNearLimit": false
+ },
"sandbox": {
"mode": "off",
"sandboxed": false
},
"systemPrompt": {
- "chars": 27546,
- "projectContextChars": 14656,
- "nonProjectContextChars": 12890
+ "chars": 28251,
+ "projectContextChars": 14007,
+ "nonProjectContextChars": 14244
},
"injectedWorkspaceFiles": [
{
@@ -492,12 +521,6 @@
"injectedChars": 18,
"truncated": false
},
- {
- "path": "SELF_IMPROVEMENT_REMINDER.md",
- "rawChars": 616,
- "injectedChars": 616,
- "truncated": false
- },
{
"path": "SELF_IMPROVEMENT_REMINDER.md",
"rawChars": 616,
@@ -519,31 +542,31 @@
]
},
"tools": {
- "listChars": 3402,
- "schemaChars": 24678,
+ "listChars": 3594,
+ "schemaChars": 27397,
"entries": [
{
"name": "read",
"summaryChars": 298,
- "schemaChars": 392,
- "propertiesCount": 4
+ "schemaChars": 574,
+ "propertiesCount": 6
},
{
"name": "edit",
- "summaryChars": 129,
- "schemaChars": 591,
- "propertiesCount": 6
+ "summaryChars": 326,
+ "schemaChars": 1103,
+ "propertiesCount": 5
},
{
"name": "write",
"summaryChars": 127,
- "schemaChars": 313,
- "propertiesCount": 3
+ "schemaChars": 497,
+ "propertiesCount": 5
},
{
"name": "exec",
"summaryChars": 181,
- "schemaChars": 1086,
+ "schemaChars": 1098,
"propertiesCount": 12
},
{
@@ -552,29 +575,17 @@
"schemaChars": 961,
"propertiesCount": 12
},
- {
- "name": "browser",
- "summaryChars": 1251,
- "schemaChars": 2799,
- "propertiesCount": 48
- },
{
"name": "canvas",
"summaryChars": 106,
"schemaChars": 661,
"propertiesCount": 18
},
- {
- "name": "nodes",
- "summaryChars": 115,
- "schemaChars": 1758,
- "propertiesCount": 36
- },
{
"name": "message",
- "summaryChars": 89,
- "schemaChars": 4210,
- "propertiesCount": 86
+ "summaryChars": 203,
+ "schemaChars": 5628,
+ "propertiesCount": 104
},
{
"name": "tts",
@@ -582,6 +593,12 @@
"schemaChars": 223,
"propertiesCount": 2
},
+ {
+ "name": "image_generate",
+ "summaryChars": 435,
+ "schemaChars": 1195,
+ "propertiesCount": 10
+ },
{
"name": "agents_list",
"summaryChars": 118,
@@ -603,14 +620,20 @@
{
"name": "sessions_send",
"summaryChars": 84,
- "schemaChars": 273,
+ "schemaChars": 274,
"propertiesCount": 5
},
+ {
+ "name": "sessions_yield",
+ "summaryChars": 97,
+ "schemaChars": 60,
+ "propertiesCount": 1
+ },
{
"name": "sessions_spawn",
- "summaryChars": 134,
- "schemaChars": 895,
- "propertiesCount": 15
+ "summaryChars": 198,
+ "schemaChars": 1179,
+ "propertiesCount": 17
},
{
"name": "subagents",
@@ -620,15 +643,15 @@
},
{
"name": "session_status",
- "summaryChars": 207,
+ "summaryChars": 262,
"schemaChars": 89,
"propertiesCount": 2
},
{
"name": "web_search",
"summaryChars": 175,
- "schemaChars": 895,
- "propertiesCount": 6
+ "schemaChars": 1084,
+ "propertiesCount": 9
},
{
"name": "web_fetch",
@@ -636,6 +659,18 @@
"schemaChars": 374,
"propertiesCount": 3
},
+ {
+ "name": "image",
+ "summaryChars": 201,
+ "schemaChars": 342,
+ "propertiesCount": 6
+ },
+ {
+ "name": "browser",
+ "summaryChars": 1066,
+ "schemaChars": 2799,
+ "propertiesCount": 48
+ },
{
"name": "feishu_doc",
"summaryChars": 321,
@@ -650,9 +685,9 @@
},
{
"name": "feishu_chat",
- "summaryChars": 46,
- "schemaChars": 508,
- "propertiesCount": 5
+ "summaryChars": 59,
+ "schemaChars": 606,
+ "propertiesCount": 6
},
{
"name": "feishu_wiki",
@@ -729,12 +764,12 @@
]
}
},
- "cacheRead": 17600,
+ "inputTokens": 8267,
+ "outputTokens": 706,
+ "cacheRead": 17558,
"cacheWrite": 0,
- "totalTokensFresh": true,
- "contextTokens": 200000,
- "inputTokens": 44,
- "outputTokens": 801,
- "totalTokens": 17644
+ "estimatedCostUsd": 0.013148865,
+ "totalTokens": 22125,
+ "totalTokensFresh": true
}
}
\ No newline at end of file
diff --git a/agents/haonan/agent/models.json b/agents/haonan/agent/models.json
index 5e07faf..6d8e15f 100644
--- a/agents/haonan/agent/models.json
+++ b/agents/haonan/agent/models.json
@@ -55,6 +55,7 @@
{
"id": "glm-5",
"name": "glm 5",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -66,12 +67,12 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
},
{
"id": "glm-4.7-FlashX",
"name": "glm 4.7 FlashX",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -83,8 +84,7 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
}
]
},
@@ -134,6 +134,75 @@
}
],
"apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "kimi": {
+ "baseUrl": "https://api.kimi.com/coding/",
+ "api": "anthropic-messages",
+ "headers": {
+ "User-Agent": "claude-code/0.1.0"
+ },
+ "models": [
+ {
+ "id": "kimi-code",
+ "name": "Kimi Code",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ },
+ {
+ "id": "k2p5",
+ "name": "Kimi Code (legacy model id)",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ }
+ ],
+ "apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "minimax": {
+ "baseUrl": "https://api.minimaxi.com/anthropic",
+ "api": "anthropic-messages",
+ "authHeader": true,
+ "models": [
+ {
+ "id": "MiniMax-M2.7-highspeed",
+ "name": "MiniMax M2.7 highspeed",
+ "reasoning": true,
+ "input": [
+ "text"
+ ],
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cacheRead": 0.06,
+ "cacheWrite": 0.375
+ },
+ "contextWindow": 204800,
+ "maxTokens": 131072,
+ "api": "anthropic-messages"
+ }
+ ],
+ "apiKey": "sk-cp-8PugyKE2xsG0S4x4KzDuuIV6Z9bT1NFwkpfrOSG05djFVExAgYEPpp7iUaTcugT6_P4uBYIN9S75l3ij-Yd2Ct8f6CxdKWdgFahESfn_jla-SlU6oGUCBjk"
}
}
}
diff --git a/agents/haonan/sessions/sessions.json b/agents/haonan/sessions/sessions.json
index 4ce89a6..b487126 100644
--- a/agents/haonan/sessions/sessions.json
+++ b/agents/haonan/sessions/sessions.json
@@ -721,8 +721,8 @@
"memoryFlushCompactionCount": 0
},
"agent:haonan:cron:41396aeb-6e3a-47b2-9bd3-9156a348c1dc": {
- "sessionId": "5a7d68bc-3287-4537-930b-474819d9131e",
- "updatedAt": 1774980000003,
+ "sessionId": "c20812b9-070c-4d09-af39-ee5e335627b2",
+ "updatedAt": 1775066402035,
"systemSent": true,
"model": "glm-5",
"contextTokens": 200000,
@@ -763,12 +763,344 @@
"version": 0
},
"modelProvider": "zhipu",
- "inputTokens": 13959,
- "outputTokens": 1924,
- "totalTokens": 21688,
+ "inputTokens": 15792,
+ "outputTokens": 756,
+ "totalTokens": 21437,
"totalTokensFresh": true,
- "cacheRead": 282655,
- "cacheWrite": 0
+ "cacheRead": 64632,
+ "cacheWrite": 0,
+ "authProfileOverride": "minimax:cn",
+ "authProfileOverrideSource": "auto",
+ "authProfileOverrideCompactionCount": 0,
+ "systemPromptReport": {
+ "source": "run",
+ "generatedAt": 1775066464644,
+ "sessionId": "c20812b9-070c-4d09-af39-ee5e335627b2",
+ "sessionKey": "agent:haonan:cron:41396aeb-6e3a-47b2-9bd3-9156a348c1dc",
+ "provider": "zhipu",
+ "model": "glm-5",
+ "workspaceDir": "/home/starmen1265/.openclaw/agents/haonan/workspace",
+ "bootstrapMaxChars": 20000,
+ "bootstrapTotalMaxChars": 150000,
+ "bootstrapTruncation": {
+ "warningMode": "once",
+ "warningShown": false,
+ "truncatedFiles": 0,
+ "nearLimitFiles": 0,
+ "totalNearLimit": false
+ },
+ "sandbox": {
+ "mode": "off",
+ "sandboxed": false
+ },
+ "systemPrompt": {
+ "chars": 23534,
+ "projectContextChars": 14014,
+ "nonProjectContextChars": 9520
+ },
+ "injectedWorkspaceFiles": [
+ {
+ "name": "AGENTS.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/AGENTS.md",
+ "missing": false,
+ "rawChars": 11295,
+ "injectedChars": 11295,
+ "truncated": false
+ },
+ {
+ "name": "SOUL.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/SOUL.md",
+ "missing": false,
+ "rawChars": 285,
+ "injectedChars": 285,
+ "truncated": false
+ },
+ {
+ "name": "TOOLS.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/TOOLS.md",
+ "missing": false,
+ "rawChars": 572,
+ "injectedChars": 572,
+ "truncated": false
+ },
+ {
+ "name": "IDENTITY.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/IDENTITY.md",
+ "missing": false,
+ "rawChars": 130,
+ "injectedChars": 130,
+ "truncated": false
+ },
+ {
+ "name": "USER.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/USER.md",
+ "missing": false,
+ "rawChars": 132,
+ "injectedChars": 132,
+ "truncated": false
+ },
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ }
+ ],
+ "skills": {
+ "promptChars": 1005,
+ "entries": [
+ {
+ "name": "capability-evolver",
+ "blockChars": 290
+ },
+ {
+ "name": "clawlist",
+ "blockChars": 343
+ }
+ ]
+ },
+ "tools": {
+ "listChars": 4054,
+ "schemaChars": 30173,
+ "entries": [
+ {
+ "name": "read",
+ "summaryChars": 298,
+ "schemaChars": 574,
+ "propertiesCount": 6
+ },
+ {
+ "name": "edit",
+ "summaryChars": 326,
+ "schemaChars": 1103,
+ "propertiesCount": 5
+ },
+ {
+ "name": "write",
+ "summaryChars": 127,
+ "schemaChars": 497,
+ "propertiesCount": 5
+ },
+ {
+ "name": "exec",
+ "summaryChars": 181,
+ "schemaChars": 1098,
+ "propertiesCount": 12
+ },
+ {
+ "name": "process",
+ "summaryChars": 85,
+ "schemaChars": 961,
+ "propertiesCount": 12
+ },
+ {
+ "name": "canvas",
+ "summaryChars": 106,
+ "schemaChars": 661,
+ "propertiesCount": 18
+ },
+ {
+ "name": "nodes",
+ "summaryChars": 118,
+ "schemaChars": 1589,
+ "propertiesCount": 32
+ },
+ {
+ "name": "cron",
+ "summaryChars": 3570,
+ "schemaChars": 690,
+ "propertiesCount": 13
+ },
+ {
+ "name": "message",
+ "summaryChars": 203,
+ "schemaChars": 5628,
+ "propertiesCount": 104
+ },
+ {
+ "name": "tts",
+ "summaryChars": 152,
+ "schemaChars": 223,
+ "propertiesCount": 2
+ },
+ {
+ "name": "image_generate",
+ "summaryChars": 435,
+ "schemaChars": 1195,
+ "propertiesCount": 10
+ },
+ {
+ "name": "gateway",
+ "summaryChars": 464,
+ "schemaChars": 497,
+ "propertiesCount": 12
+ },
+ {
+ "name": "agents_list",
+ "summaryChars": 118,
+ "schemaChars": 33,
+ "propertiesCount": 0
+ },
+ {
+ "name": "sessions_list",
+ "summaryChars": 54,
+ "schemaChars": 212,
+ "propertiesCount": 4
+ },
+ {
+ "name": "sessions_history",
+ "summaryChars": 36,
+ "schemaChars": 161,
+ "propertiesCount": 3
+ },
+ {
+ "name": "sessions_send",
+ "summaryChars": 84,
+ "schemaChars": 274,
+ "propertiesCount": 5
+ },
+ {
+ "name": "sessions_yield",
+ "summaryChars": 97,
+ "schemaChars": 60,
+ "propertiesCount": 1
+ },
+ {
+ "name": "sessions_spawn",
+ "summaryChars": 198,
+ "schemaChars": 1179,
+ "propertiesCount": 17
+ },
+ {
+ "name": "subagents",
+ "summaryChars": 105,
+ "schemaChars": 191,
+ "propertiesCount": 4
+ },
+ {
+ "name": "session_status",
+ "summaryChars": 262,
+ "schemaChars": 89,
+ "propertiesCount": 2
+ },
+ {
+ "name": "web_search",
+ "summaryChars": 175,
+ "schemaChars": 1084,
+ "propertiesCount": 9
+ },
+ {
+ "name": "web_fetch",
+ "summaryChars": 129,
+ "schemaChars": 374,
+ "propertiesCount": 3
+ },
+ {
+ "name": "image",
+ "summaryChars": 201,
+ "schemaChars": 342,
+ "propertiesCount": 6
+ },
+ {
+ "name": "browser",
+ "summaryChars": 1066,
+ "schemaChars": 2799,
+ "propertiesCount": 48
+ },
+ {
+ "name": "feishu_doc",
+ "summaryChars": 321,
+ "schemaChars": 2898,
+ "propertiesCount": 27
+ },
+ {
+ "name": "feishu_app_scopes",
+ "summaryChars": 102,
+ "schemaChars": 33,
+ "propertiesCount": 0
+ },
+ {
+ "name": "feishu_chat",
+ "summaryChars": 59,
+ "schemaChars": 606,
+ "propertiesCount": 6
+ },
+ {
+ "name": "feishu_wiki",
+ "summaryChars": 83,
+ "schemaChars": 971,
+ "propertiesCount": 10
+ },
+ {
+ "name": "feishu_drive",
+ "summaryChars": 81,
+ "schemaChars": 486,
+ "propertiesCount": 5
+ },
+ {
+ "name": "feishu_bitable_get_meta",
+ "summaryChars": 114,
+ "schemaChars": 170,
+ "propertiesCount": 1
+ },
+ {
+ "name": "feishu_bitable_list_fields",
+ "summaryChars": 76,
+ "schemaChars": 255,
+ "propertiesCount": 2
+ },
+ {
+ "name": "feishu_bitable_list_records",
+ "summaryChars": 64,
+ "schemaChars": 462,
+ "propertiesCount": 4
+ },
+ {
+ "name": "feishu_bitable_get_record",
+ "summaryChars": 46,
+ "schemaChars": 335,
+ "propertiesCount": 3
+ },
+ {
+ "name": "feishu_bitable_create_record",
+ "summaryChars": 44,
+ "schemaChars": 549,
+ "propertiesCount": 3
+ },
+ {
+ "name": "feishu_bitable_update_record",
+ "summaryChars": 50,
+ "schemaChars": 473,
+ "propertiesCount": 4
+ },
+ {
+ "name": "feishu_bitable_create_app",
+ "summaryChars": 57,
+ "schemaChars": 243,
+ "propertiesCount": 2
+ },
+ {
+ "name": "feishu_bitable_create_field",
+ "summaryChars": 46,
+ "schemaChars": 911,
+ "propertiesCount": 5
+ },
+ {
+ "name": "memory_search",
+ "summaryChars": 334,
+ "schemaChars": 139,
+ "propertiesCount": 3
+ },
+ {
+ "name": "memory_get",
+ "summaryChars": 151,
+ "schemaChars": 128,
+ "propertiesCount": 3
+ }
+ ]
+ }
+ },
+ "estimatedCostUsd": 0
},
"agent:haonan:cron:f03b184f-5f1d-4093-ae1b-fc9fe0b59eef": {
"sessionId": "afb596a4-4c17-4330-8b5d-bf9d032ecdad",
@@ -813,9 +1145,9 @@
"version": 0
},
"modelProvider": "zhipu",
- "inputTokens": 94673,
- "outputTokens": 8174,
- "totalTokens": 31290,
+ "inputTokens": 41619,
+ "outputTokens": 1994,
+ "totalTokens": 107173,
"deliveryContext": {
"channel": "webchat"
},
@@ -824,7 +1156,7 @@
"sessionFile": "/home/starmen1265/.openclaw/agents/haonan/sessions/ccc40ca7-7876-4d82-ab84-7b790feddc19.jsonl",
"abortedLastRun": false,
"totalTokensFresh": true,
- "cacheRead": 420231,
+ "cacheRead": 65554,
"cacheWrite": 0
},
"agent:haonan:cron:3245fca7-045b-4977-8fab-020f6df2e453": {
@@ -867,8 +1199,8 @@
"cacheWrite": 0
},
"agent:haonan:cron:aa4d2de9-79be-4262-83ee-af8824793bfc": {
- "sessionId": "50214d0b-646e-4c52-8210-501a3bf124cc",
- "updatedAt": 1774980600006,
+ "sessionId": "db1ec564-7d85-492d-a767-019837faeba3",
+ "updatedAt": 1775067000303,
"systemSent": true,
"label": "Cron: openclaw-git-sync",
"skillsSnapshot": {
@@ -906,122 +1238,21 @@
],
"version": 0
},
- "modelProvider": "zhipu",
- "model": "glm-5",
+ "modelProvider": "minimax",
+ "model": "MiniMax-M2.7-highspeed",
"contextTokens": 200000,
"inputTokens": 600,
"outputTokens": 818,
"totalTokens": 17580,
"totalTokensFresh": true,
"cacheRead": 84545,
- "cacheWrite": 0
- },
- "agent:haonan:cron:f03b184f-5f1d-4093-ae1b-fc9fe0b59eef:run:c5e41e63-f182-4644-9dcd-708ce36bb836": {
- "sessionId": "c5e41e63-f182-4644-9dcd-708ce36bb836",
- "updatedAt": 1774894800030,
- "systemSent": true,
- "model": "glm-4.7-FlashX",
- "contextTokens": 200000,
- "label": "Cron: capability-evolver-daily",
- "skillsSnapshot": {
- "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n \n clawlist\n MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.\n ~/.openclaw/skills/clawlist/SKILL.md\n \n",
- "skills": [
- {
- "name": "capability-evolver"
- },
- {
- "name": "clawlist"
- }
- ],
- "skillFilter": [
- "clawlist",
- "capability-evolver",
- "self-improving-agent"
- ],
- "resolvedSkills": [
- {
- "name": "capability-evolver",
- "description": "A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.",
- "filePath": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
- "baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver",
- "source": "openclaw-managed",
- "disableModelInvocation": false
- },
- {
- "name": "clawlist",
- "description": "MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.",
- "filePath": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
- "baseDir": "/home/starmen1265/.openclaw/skills/clawlist",
- "source": "openclaw-managed",
- "disableModelInvocation": false
- }
- ],
- "version": 0
- },
- "modelProvider": "zhipu",
- "inputTokens": 94673,
- "outputTokens": 8174,
- "totalTokens": 31290,
- "deliveryContext": {
- "channel": "webchat"
- },
- "lastChannel": "webchat",
- "channel": "webchat",
- "sessionFile": "/home/starmen1265/.openclaw/agents/haonan/sessions/ccc40ca7-7876-4d82-ab84-7b790feddc19.jsonl",
- "abortedLastRun": false,
- "totalTokensFresh": true,
- "cacheRead": 420231,
- "cacheWrite": 0
- },
- "agent:haonan:cron:41396aeb-6e3a-47b2-9bd3-9156a348c1dc:run:5a7d68bc-3287-4537-930b-474819d9131e": {
- "sessionId": "5a7d68bc-3287-4537-930b-474819d9131e",
- "updatedAt": 1774980000003,
- "systemSent": true,
- "model": "glm-5",
- "contextTokens": 200000,
- "label": "Cron: backup-openclaw-json",
- "skillsSnapshot": {
- "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n \n clawlist\n MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.\n ~/.openclaw/skills/clawlist/SKILL.md\n \n",
- "skills": [
- {
- "name": "capability-evolver"
- },
- {
- "name": "clawlist"
- }
- ],
- "skillFilter": [
- "clawlist",
- "capability-evolver",
- "self-improving-agent"
- ],
- "resolvedSkills": [
- {
- "name": "capability-evolver",
- "description": "A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.",
- "filePath": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
- "baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver",
- "source": "openclaw-managed",
- "disableModelInvocation": false
- },
- {
- "name": "clawlist",
- "description": "MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.",
- "filePath": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
- "baseDir": "/home/starmen1265/.openclaw/skills/clawlist",
- "source": "openclaw-managed",
- "disableModelInvocation": false
- }
- ],
- "version": 0
- },
- "modelProvider": "zhipu",
- "inputTokens": 13959,
- "outputTokens": 1924,
- "totalTokens": 21688,
- "totalTokensFresh": true,
- "cacheRead": 282655,
- "cacheWrite": 0
+ "cacheWrite": 0,
+ "authProfileOverride": "minimax:cn",
+ "authProfileOverrideSource": "auto",
+ "authProfileOverrideCompactionCount": 0,
+ "status": "running",
+ "startedAt": 1775067000297,
+ "abortedLastRun": false
},
"agent:haonan:cron:aa4d2de9-79be-4262-83ee-af8824793bfc:run:50214d0b-646e-4c52-8210-501a3bf124cc": {
"sessionId": "50214d0b-646e-4c52-8210-501a3bf124cc",
@@ -1116,9 +1347,9 @@
"version": 0
},
"modelProvider": "zhipu",
- "inputTokens": 94673,
- "outputTokens": 8174,
- "totalTokens": 31290,
+ "inputTokens": 41619,
+ "outputTokens": 1994,
+ "totalTokens": 107173,
"deliveryContext": {
"channel": "webchat"
},
@@ -1127,7 +1358,439 @@
"sessionFile": "/home/starmen1265/.openclaw/agents/haonan/sessions/ccc40ca7-7876-4d82-ab84-7b790feddc19.jsonl",
"abortedLastRun": false,
"totalTokensFresh": true,
- "cacheRead": 420231,
+ "cacheRead": 65554,
+ "cacheWrite": 0
+ },
+ "agent:haonan:cron:41396aeb-6e3a-47b2-9bd3-9156a348c1dc:run:c20812b9-070c-4d09-af39-ee5e335627b2": {
+ "sessionId": "c20812b9-070c-4d09-af39-ee5e335627b2",
+ "updatedAt": 1775066402035,
+ "systemSent": true,
+ "model": "glm-5",
+ "contextTokens": 200000,
+ "label": "Cron: backup-openclaw-json",
+ "skillsSnapshot": {
+ "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n \n clawlist\n MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.\n ~/.openclaw/skills/clawlist/SKILL.md\n \n",
+ "skills": [
+ {
+ "name": "capability-evolver"
+ },
+ {
+ "name": "clawlist"
+ }
+ ],
+ "skillFilter": [
+ "clawlist",
+ "capability-evolver",
+ "self-improving-agent"
+ ],
+ "resolvedSkills": [
+ {
+ "name": "capability-evolver",
+ "description": "A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.",
+ "filePath": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
+ "baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver",
+ "source": "openclaw-managed",
+ "disableModelInvocation": false
+ },
+ {
+ "name": "clawlist",
+ "description": "MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.",
+ "filePath": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
+ "baseDir": "/home/starmen1265/.openclaw/skills/clawlist",
+ "source": "openclaw-managed",
+ "disableModelInvocation": false
+ }
+ ],
+ "version": 0
+ },
+ "modelProvider": "zhipu",
+ "inputTokens": 15792,
+ "outputTokens": 756,
+ "totalTokens": 21437,
+ "totalTokensFresh": true,
+ "cacheRead": 64632,
+ "cacheWrite": 0,
+ "authProfileOverride": "minimax:cn",
+ "authProfileOverrideSource": "auto",
+ "authProfileOverrideCompactionCount": 0,
+ "systemPromptReport": {
+ "source": "run",
+ "generatedAt": 1775066464644,
+ "sessionId": "c20812b9-070c-4d09-af39-ee5e335627b2",
+ "sessionKey": "agent:haonan:cron:41396aeb-6e3a-47b2-9bd3-9156a348c1dc",
+ "provider": "zhipu",
+ "model": "glm-5",
+ "workspaceDir": "/home/starmen1265/.openclaw/agents/haonan/workspace",
+ "bootstrapMaxChars": 20000,
+ "bootstrapTotalMaxChars": 150000,
+ "bootstrapTruncation": {
+ "warningMode": "once",
+ "warningShown": false,
+ "truncatedFiles": 0,
+ "nearLimitFiles": 0,
+ "totalNearLimit": false
+ },
+ "sandbox": {
+ "mode": "off",
+ "sandboxed": false
+ },
+ "systemPrompt": {
+ "chars": 23534,
+ "projectContextChars": 14014,
+ "nonProjectContextChars": 9520
+ },
+ "injectedWorkspaceFiles": [
+ {
+ "name": "AGENTS.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/AGENTS.md",
+ "missing": false,
+ "rawChars": 11295,
+ "injectedChars": 11295,
+ "truncated": false
+ },
+ {
+ "name": "SOUL.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/SOUL.md",
+ "missing": false,
+ "rawChars": 285,
+ "injectedChars": 285,
+ "truncated": false
+ },
+ {
+ "name": "TOOLS.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/TOOLS.md",
+ "missing": false,
+ "rawChars": 572,
+ "injectedChars": 572,
+ "truncated": false
+ },
+ {
+ "name": "IDENTITY.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/IDENTITY.md",
+ "missing": false,
+ "rawChars": 130,
+ "injectedChars": 130,
+ "truncated": false
+ },
+ {
+ "name": "USER.md",
+ "path": "/home/starmen1265/.openclaw/agents/haonan/workspace/USER.md",
+ "missing": false,
+ "rawChars": 132,
+ "injectedChars": 132,
+ "truncated": false
+ },
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ }
+ ],
+ "skills": {
+ "promptChars": 1005,
+ "entries": [
+ {
+ "name": "capability-evolver",
+ "blockChars": 290
+ },
+ {
+ "name": "clawlist",
+ "blockChars": 343
+ }
+ ]
+ },
+ "tools": {
+ "listChars": 4054,
+ "schemaChars": 30173,
+ "entries": [
+ {
+ "name": "read",
+ "summaryChars": 298,
+ "schemaChars": 574,
+ "propertiesCount": 6
+ },
+ {
+ "name": "edit",
+ "summaryChars": 326,
+ "schemaChars": 1103,
+ "propertiesCount": 5
+ },
+ {
+ "name": "write",
+ "summaryChars": 127,
+ "schemaChars": 497,
+ "propertiesCount": 5
+ },
+ {
+ "name": "exec",
+ "summaryChars": 181,
+ "schemaChars": 1098,
+ "propertiesCount": 12
+ },
+ {
+ "name": "process",
+ "summaryChars": 85,
+ "schemaChars": 961,
+ "propertiesCount": 12
+ },
+ {
+ "name": "canvas",
+ "summaryChars": 106,
+ "schemaChars": 661,
+ "propertiesCount": 18
+ },
+ {
+ "name": "nodes",
+ "summaryChars": 118,
+ "schemaChars": 1589,
+ "propertiesCount": 32
+ },
+ {
+ "name": "cron",
+ "summaryChars": 3570,
+ "schemaChars": 690,
+ "propertiesCount": 13
+ },
+ {
+ "name": "message",
+ "summaryChars": 203,
+ "schemaChars": 5628,
+ "propertiesCount": 104
+ },
+ {
+ "name": "tts",
+ "summaryChars": 152,
+ "schemaChars": 223,
+ "propertiesCount": 2
+ },
+ {
+ "name": "image_generate",
+ "summaryChars": 435,
+ "schemaChars": 1195,
+ "propertiesCount": 10
+ },
+ {
+ "name": "gateway",
+ "summaryChars": 464,
+ "schemaChars": 497,
+ "propertiesCount": 12
+ },
+ {
+ "name": "agents_list",
+ "summaryChars": 118,
+ "schemaChars": 33,
+ "propertiesCount": 0
+ },
+ {
+ "name": "sessions_list",
+ "summaryChars": 54,
+ "schemaChars": 212,
+ "propertiesCount": 4
+ },
+ {
+ "name": "sessions_history",
+ "summaryChars": 36,
+ "schemaChars": 161,
+ "propertiesCount": 3
+ },
+ {
+ "name": "sessions_send",
+ "summaryChars": 84,
+ "schemaChars": 274,
+ "propertiesCount": 5
+ },
+ {
+ "name": "sessions_yield",
+ "summaryChars": 97,
+ "schemaChars": 60,
+ "propertiesCount": 1
+ },
+ {
+ "name": "sessions_spawn",
+ "summaryChars": 198,
+ "schemaChars": 1179,
+ "propertiesCount": 17
+ },
+ {
+ "name": "subagents",
+ "summaryChars": 105,
+ "schemaChars": 191,
+ "propertiesCount": 4
+ },
+ {
+ "name": "session_status",
+ "summaryChars": 262,
+ "schemaChars": 89,
+ "propertiesCount": 2
+ },
+ {
+ "name": "web_search",
+ "summaryChars": 175,
+ "schemaChars": 1084,
+ "propertiesCount": 9
+ },
+ {
+ "name": "web_fetch",
+ "summaryChars": 129,
+ "schemaChars": 374,
+ "propertiesCount": 3
+ },
+ {
+ "name": "image",
+ "summaryChars": 201,
+ "schemaChars": 342,
+ "propertiesCount": 6
+ },
+ {
+ "name": "browser",
+ "summaryChars": 1066,
+ "schemaChars": 2799,
+ "propertiesCount": 48
+ },
+ {
+ "name": "feishu_doc",
+ "summaryChars": 321,
+ "schemaChars": 2898,
+ "propertiesCount": 27
+ },
+ {
+ "name": "feishu_app_scopes",
+ "summaryChars": 102,
+ "schemaChars": 33,
+ "propertiesCount": 0
+ },
+ {
+ "name": "feishu_chat",
+ "summaryChars": 59,
+ "schemaChars": 606,
+ "propertiesCount": 6
+ },
+ {
+ "name": "feishu_wiki",
+ "summaryChars": 83,
+ "schemaChars": 971,
+ "propertiesCount": 10
+ },
+ {
+ "name": "feishu_drive",
+ "summaryChars": 81,
+ "schemaChars": 486,
+ "propertiesCount": 5
+ },
+ {
+ "name": "feishu_bitable_get_meta",
+ "summaryChars": 114,
+ "schemaChars": 170,
+ "propertiesCount": 1
+ },
+ {
+ "name": "feishu_bitable_list_fields",
+ "summaryChars": 76,
+ "schemaChars": 255,
+ "propertiesCount": 2
+ },
+ {
+ "name": "feishu_bitable_list_records",
+ "summaryChars": 64,
+ "schemaChars": 462,
+ "propertiesCount": 4
+ },
+ {
+ "name": "feishu_bitable_get_record",
+ "summaryChars": 46,
+ "schemaChars": 335,
+ "propertiesCount": 3
+ },
+ {
+ "name": "feishu_bitable_create_record",
+ "summaryChars": 44,
+ "schemaChars": 549,
+ "propertiesCount": 3
+ },
+ {
+ "name": "feishu_bitable_update_record",
+ "summaryChars": 50,
+ "schemaChars": 473,
+ "propertiesCount": 4
+ },
+ {
+ "name": "feishu_bitable_create_app",
+ "summaryChars": 57,
+ "schemaChars": 243,
+ "propertiesCount": 2
+ },
+ {
+ "name": "feishu_bitable_create_field",
+ "summaryChars": 46,
+ "schemaChars": 911,
+ "propertiesCount": 5
+ },
+ {
+ "name": "memory_search",
+ "summaryChars": 334,
+ "schemaChars": 139,
+ "propertiesCount": 3
+ },
+ {
+ "name": "memory_get",
+ "summaryChars": 151,
+ "schemaChars": 128,
+ "propertiesCount": 3
+ }
+ ]
+ }
+ },
+ "estimatedCostUsd": 0
+ },
+ "agent:haonan:cron:aa4d2de9-79be-4262-83ee-af8824793bfc:run:db1ec564-7d85-492d-a767-019837faeba3": {
+ "sessionId": "db1ec564-7d85-492d-a767-019837faeba3",
+ "updatedAt": 1775067000035,
+ "systemSent": true,
+ "label": "Cron: openclaw-git-sync",
+ "skillsSnapshot": {
+ "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n \n clawlist\n MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.\n ~/.openclaw/skills/clawlist/SKILL.md\n \n",
+ "skills": [
+ {
+ "name": "capability-evolver"
+ },
+ {
+ "name": "clawlist"
+ }
+ ],
+ "skillFilter": [
+ "clawlist",
+ "capability-evolver",
+ "self-improving-agent"
+ ],
+ "resolvedSkills": [
+ {
+ "name": "capability-evolver",
+ "description": "A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.",
+ "filePath": "/home/starmen1265/.openclaw/skills/capability-evolver/SKILL.md",
+ "baseDir": "/home/starmen1265/.openclaw/skills/capability-evolver",
+ "source": "openclaw-managed",
+ "disableModelInvocation": false
+ },
+ {
+ "name": "clawlist",
+ "description": "MUST use for any multi-step project, long-running task, or infinite monitoring workflow. Plan, execute, track, and verify tasks with checkpoint validation. For projects, automation, and ongoing operations.",
+ "filePath": "/home/starmen1265/.openclaw/skills/clawlist/SKILL.md",
+ "baseDir": "/home/starmen1265/.openclaw/skills/clawlist",
+ "source": "openclaw-managed",
+ "disableModelInvocation": false
+ }
+ ],
+ "version": 0
+ },
+ "modelProvider": "minimax",
+ "model": "MiniMax-M2.7-highspeed",
+ "contextTokens": 200000,
+ "inputTokens": 600,
+ "outputTokens": 818,
+ "totalTokens": 17580,
+ "totalTokensFresh": true,
+ "cacheRead": 84545,
"cacheWrite": 0
}
}
\ No newline at end of file
diff --git a/agents/haonan/workspace/.openclaw/workspace-state.json b/agents/haonan/workspace/.openclaw/workspace-state.json
index 0dd19c4..120c0b2 100644
--- a/agents/haonan/workspace/.openclaw/workspace-state.json
+++ b/agents/haonan/workspace/.openclaw/workspace-state.json
@@ -1,5 +1,5 @@
{
"version": 1,
"bootstrapSeededAt": "2026-03-06T02:57:07.914Z",
- "onboardingCompletedAt": "2026-03-08T15:24:08.045Z"
+ "setupCompletedAt": "2026-03-08T15:24:08.045Z"
}
diff --git a/agents/main/agent/auth-profiles.json b/agents/main/agent/auth-profiles.json
index c7ea626..45b72d7 100644
--- a/agents/main/agent/auth-profiles.json
+++ b/agents/main/agent/auth-profiles.json
@@ -5,6 +5,11 @@
"type": "api_key",
"provider": "kimi-coding",
"key": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "minimax:cn": {
+ "type": "api_key",
+ "provider": "minimax",
+ "key": "sk-cp-8PugyKE2xsG0S4x4KzDuuIV6Z9bT1NFwkpfrOSG05djFVExAgYEPpp7iUaTcugT6_P4uBYIN9S75l3ij-Yd2Ct8f6CxdKWdgFahESfn_jla-SlU6oGUCBjk"
}
},
"lastGood": {
diff --git a/agents/main/agent/models.json b/agents/main/agent/models.json
index 5e07faf..86eff92 100644
--- a/agents/main/agent/models.json
+++ b/agents/main/agent/models.json
@@ -31,6 +31,7 @@
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5",
+ "api": "anthropic-messages",
"reasoning": false,
"input": [
"text"
@@ -42,8 +43,7 @@
"cacheWrite": 10
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "anthropic-messages"
+ "maxTokens": 8192
}
]
},
@@ -55,6 +55,7 @@
{
"id": "glm-5",
"name": "glm 5",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -66,12 +67,12 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
},
{
"id": "glm-4.7-FlashX",
"name": "glm 4.7 FlashX",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -83,8 +84,7 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192,
- "api": "openai-completions"
+ "maxTokens": 8192
}
]
},
@@ -95,6 +95,7 @@
{
"id": "qwen3-max-2026-01-23",
"name": "qwen3-max-thinking",
+ "api": "openai-completions",
"reasoning": false,
"input": [
"text"
@@ -106,8 +107,7 @@
"cacheWrite": 0
},
"contextWindow": 262144,
- "maxTokens": 65536,
- "api": "openai-completions"
+ "maxTokens": 65536
}
]
},
@@ -134,6 +134,75 @@
}
],
"apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "kimi": {
+ "baseUrl": "https://api.kimi.com/coding/",
+ "api": "anthropic-messages",
+ "headers": {
+ "User-Agent": "claude-code/0.1.0"
+ },
+ "models": [
+ {
+ "id": "kimi-code",
+ "name": "Kimi Code",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ },
+ {
+ "id": "k2p5",
+ "name": "Kimi Code (legacy model id)",
+ "reasoning": true,
+ "input": [
+ "text",
+ "image"
+ ],
+ "cost": {
+ "input": 0,
+ "output": 0,
+ "cacheRead": 0,
+ "cacheWrite": 0
+ },
+ "contextWindow": 262144,
+ "maxTokens": 32768
+ }
+ ],
+ "apiKey": "sk-kimi-o8VFc619Hnv8IAfj3aawWYDAFlJeBseOEs1ybgTQzO66uWyfW91QoVLz9VlTT9A6"
+ },
+ "minimax": {
+ "baseUrl": "https://api.minimaxi.com/anthropic",
+ "api": "anthropic-messages",
+ "authHeader": true,
+ "models": [
+ {
+ "id": "MiniMax-M2.7-highspeed",
+ "name": "MiniMax M2.7 highspeed",
+ "reasoning": true,
+ "input": [
+ "text"
+ ],
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cacheRead": 0.06,
+ "cacheWrite": 0.375
+ },
+ "contextWindow": 204800,
+ "maxTokens": 131072,
+ "api": "anthropic-messages"
+ }
+ ],
+ "apiKey": "sk-cp-8PugyKE2xsG0S4x4KzDuuIV6Z9bT1NFwkpfrOSG05djFVExAgYEPpp7iUaTcugT6_P4uBYIN9S75l3ij-Yd2Ct8f6CxdKWdgFahESfn_jla-SlU6oGUCBjk"
}
}
}
diff --git a/agents/ui-designer/sessions/sessions.json b/agents/ui-designer/sessions/sessions.json
index 2870ddb..2328ddb 100644
--- a/agents/ui-designer/sessions/sessions.json
+++ b/agents/ui-designer/sessions/sessions.json
@@ -1,7 +1,7 @@
{
"agent:ui-designer:main": {
- "sessionId": "c6bf0312-51a4-4491-9267-ca596af63af8",
- "updatedAt": 1774511667045,
+ "sessionId": "f406dbe6-30ed-4d3d-853b-2989d7a1ce3f",
+ "updatedAt": 1775055521071,
"systemSent": true,
"abortedLastRun": false,
"chatType": "direct",
@@ -14,15 +14,15 @@
"lastTo": "user:ou_9847ce84b960736c14554730b41e4957",
"lastAccountId": "feishu-art",
"origin": {
- "label": "feishu:oc_8a5962a5b6d238d3",
+ "label": "张青",
"provider": "feishu",
"surface": "feishu",
"chatType": "direct",
- "from": "feishu:oc_8a5962a5b6d238d3",
- "to": "oc_8a5962a5b6d238d3",
+ "from": "feishu:ou_9847ce84b960736c14554730b41e4957",
+ "to": "user:ou_9847ce84b960736c14554730b41e4957",
"accountId": "feishu-art"
},
- "sessionFile": "/home/starmen1265/.openclaw/agents/ui-designer/sessions/c6bf0312-51a4-4491-9267-ca596af63af8.jsonl",
+ "sessionFile": "/home/starmen1265/.openclaw/agents/ui-designer/sessions/f406dbe6-30ed-4d3d-853b-2989d7a1ce3f.jsonl",
"compactionCount": 0,
"skillsSnapshot": {
"prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n\n \n capability-evolver\n A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.\n ~/.openclaw/skills/capability-evolver/SKILL.md\n \n",
@@ -51,8 +51,8 @@
"model": "glm-5",
"systemPromptReport": {
"source": "run",
- "generatedAt": 1774511626330,
- "sessionId": "c6bf0312-51a4-4491-9267-ca596af63af8",
+ "generatedAt": 1775055495377,
+ "sessionId": "f406dbe6-30ed-4d3d-853b-2989d7a1ce3f",
"sessionKey": "agent:ui-designer:main",
"provider": "zhipu",
"model": "glm-5",
@@ -64,8 +64,8 @@
"sandboxed": false
},
"systemPrompt": {
- "chars": 52452,
- "projectContextChars": 39967,
+ "chars": 55048,
+ "projectContextChars": 42563,
"nonProjectContextChars": 12485
},
"injectedWorkspaceFiles": [
@@ -445,6 +445,30 @@
"injectedChars": 616,
"truncated": false
},
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ },
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ },
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ },
+ {
+ "path": "SELF_IMPROVEMENT_REMINDER.md",
+ "rawChars": 616,
+ "injectedChars": 616,
+ "truncated": false
+ },
{
"path": "SELF_IMPROVEMENT_REMINDER.md",
"rawChars": 616,
@@ -672,16 +696,14 @@
]
}
},
- "cacheRead": 23872,
+ "cacheRead": 44096,
"cacheWrite": 0,
"totalTokensFresh": true,
- "fallbackNoticeSelectedModel": "zhipu/glm-5",
- "fallbackNoticeActiveModel": "zhipu/glm-4.7-FlashX",
- "fallbackNoticeReason": "unknown",
"contextTokens": 200000,
- "inputTokens": 13730,
- "outputTokens": 415,
- "totalTokens": 25574
+ "inputTokens": 20971,
+ "outputTokens": 397,
+ "totalTokens": 44310,
+ "channel": "feishu"
},
"agent:ui-designer:cron:78b64c2f-7f91-47ff-9250-d13f546eb21f": {
"sessionId": "03e44b46-c707-4a9f-bf3d-1818aafdcde2",
@@ -722,8 +744,8 @@
"cacheWrite": 0
},
"agent:ui-designer:cron:a1b2c3d4-e5f6-7890-abcd-ef1234567890": {
- "sessionId": "0e4f246f-33ce-4dff-bfcc-ca7e436d4a58",
- "updatedAt": 1774942200014,
+ "sessionId": "20442854-3eb2-4c4f-bc84-74533d3faad4",
+ "updatedAt": 1775028943412,
"systemSent": true,
"label": "Cron: 中国核建每日跟踪",
"skillsSnapshot": {
@@ -752,16 +774,18 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 15216,
- "outputTokens": 2873,
- "totalTokens": 23896,
+ "inputTokens": 10052,
+ "outputTokens": 387,
+ "totalTokens": 21920,
"totalTokensFresh": true,
- "cacheRead": 438944,
- "cacheWrite": 0
+ "cacheRead": 11868,
+ "cacheWrite": 0,
+ "sessionFile": "/home/starmen1265/.openclaw/agents/ui-designer/sessions/20442854-3eb2-4c4f-bc84-74533d3faad4.jsonl",
+ "abortedLastRun": false
},
"agent:ui-designer:cron:b2c3d4e5-f6a7-8901-bcde-f12345678901": {
- "sessionId": "7426e7da-642f-4697-a4d5-b7505e2bb676",
- "updatedAt": 1774942391469,
+ "sessionId": "55f11680-9523-487c-b7f6-249c435e5138",
+ "updatedAt": 1775028932361,
"systemSent": true,
"label": "Cron: 中国海油每日跟踪",
"skillsSnapshot": {
@@ -790,16 +814,16 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 2399,
- "outputTokens": 2809,
- "totalTokens": 18692,
+ "inputTokens": 3324,
+ "outputTokens": 3735,
+ "totalTokens": 20944,
"totalTokensFresh": true,
- "cacheRead": 260953,
+ "cacheRead": 347932,
"cacheWrite": 0
},
"agent:ui-designer:cron:c3d4e5f6-a7b8-9012-cdef-234567890123": {
- "sessionId": "3795c952-0d99-470a-8bee-9f63b83abedd",
- "updatedAt": 1774915657541,
+ "sessionId": "566b2d01-6438-4064-8088-7eef24b2e1d6",
+ "updatedAt": 1775001878152,
"systemSent": true,
"label": "Cron: 每日热点新闻追踪",
"skillsSnapshot": {
@@ -828,18 +852,18 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 3956,
- "outputTokens": 503,
- "totalTokens": 15824,
+ "inputTokens": 3541,
+ "outputTokens": 1209,
+ "totalTokens": 15778,
"totalTokensFresh": true,
- "cacheRead": 11868,
+ "cacheRead": 102332,
"cacheWrite": 0,
"sessionFile": "/home/starmen1265/.openclaw/agents/ui-designer/sessions/3795c952-0d99-470a-8bee-9f63b83abedd.jsonl",
"abortedLastRun": false
},
- "agent:ui-designer:cron:c3d4e5f6-a7b8-9012-cdef-234567890123:run:3795c952-0d99-470a-8bee-9f63b83abedd": {
- "sessionId": "3795c952-0d99-470a-8bee-9f63b83abedd",
- "updatedAt": 1774915362181,
+ "agent:ui-designer:cron:c3d4e5f6-a7b8-9012-cdef-234567890123:run:566b2d01-6438-4064-8088-7eef24b2e1d6": {
+ "sessionId": "566b2d01-6438-4064-8088-7eef24b2e1d6",
+ "updatedAt": 1775001691980,
"systemSent": true,
"label": "Cron: 每日热点新闻追踪",
"skillsSnapshot": {
@@ -868,16 +892,18 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 3558,
- "outputTokens": 776,
- "totalTokens": 15430,
+ "inputTokens": 3541,
+ "outputTokens": 1209,
+ "totalTokens": 15778,
"totalTokensFresh": true,
- "cacheRead": 41326,
- "cacheWrite": 0
+ "cacheRead": 102332,
+ "cacheWrite": 0,
+ "sessionFile": "/home/starmen1265/.openclaw/agents/ui-designer/sessions/3795c952-0d99-470a-8bee-9f63b83abedd.jsonl",
+ "abortedLastRun": false
},
- "agent:ui-designer:cron:a1b2c3d4-e5f6-7890-abcd-ef1234567890:run:0e4f246f-33ce-4dff-bfcc-ca7e436d4a58": {
- "sessionId": "0e4f246f-33ce-4dff-bfcc-ca7e436d4a58",
- "updatedAt": 1774942200014,
+ "agent:ui-designer:cron:a1b2c3d4-e5f6-7890-abcd-ef1234567890:run:20442854-3eb2-4c4f-bc84-74533d3faad4": {
+ "sessionId": "20442854-3eb2-4c4f-bc84-74533d3faad4",
+ "updatedAt": 1775028600006,
"systemSent": true,
"label": "Cron: 中国核建每日跟踪",
"skillsSnapshot": {
@@ -906,16 +932,16 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 15216,
- "outputTokens": 2873,
- "totalTokens": 23896,
+ "inputTokens": 9003,
+ "outputTokens": 2713,
+ "totalTokens": 22355,
"totalTokensFresh": true,
- "cacheRead": 438944,
+ "cacheRead": 430374,
"cacheWrite": 0
},
- "agent:ui-designer:cron:b2c3d4e5-f6a7-8901-bcde-f12345678901:run:7426e7da-642f-4697-a4d5-b7505e2bb676": {
- "sessionId": "7426e7da-642f-4697-a4d5-b7505e2bb676",
- "updatedAt": 1774942391469,
+ "agent:ui-designer:cron:b2c3d4e5-f6a7-8901-bcde-f12345678901:run:55f11680-9523-487c-b7f6-249c435e5138": {
+ "sessionId": "55f11680-9523-487c-b7f6-249c435e5138",
+ "updatedAt": 1775028932361,
"systemSent": true,
"label": "Cron: 中国海油每日跟踪",
"skillsSnapshot": {
@@ -944,11 +970,11 @@
"modelProvider": "zhipu",
"model": "glm-5",
"contextTokens": 200000,
- "inputTokens": 2399,
- "outputTokens": 2809,
- "totalTokens": 18692,
+ "inputTokens": 3324,
+ "outputTokens": 3735,
+ "totalTokens": 20944,
"totalTokensFresh": true,
- "cacheRead": 260953,
+ "cacheRead": 347932,
"cacheWrite": 0
}
}
\ No newline at end of file
diff --git a/agents/ui-designer/workspace/memory/2026-04-01.md b/agents/ui-designer/workspace/memory/2026-04-01.md
new file mode 100644
index 0000000..ccec928
--- /dev/null
+++ b/agents/ui-designer/workspace/memory/2026-04-01.md
@@ -0,0 +1,20 @@
+# 2026-04-01 工作记录
+
+## 股票跟踪任务 - 手动重试
+
+### 背景
+- 用户反馈网络已恢复
+- 今日15:30自动执行的两个股票跟踪任务因网络问题失败
+- 数据未能成功获取
+
+### 执行
+- **时间**:22:45
+- **操作**:手动重新触发两个子代理任务
+- **子代理1**:中国海油(600938)- runId: 85f2870b-d073-4db8-9b49-9c8ea0edb35d
+- **子代理2**:中国核建(601611)- runId: ef2f50a2-bfe3-475e-ba7c-875107a0d510
+
+### 状态
+- ⏳ 执行中,等待自动返回结果
+
+---
+*记录时间:2026-04-01 22:46*
diff --git a/agents/ui-designer/workspace/news-reports/2026-04-01-daily-news.md b/agents/ui-designer/workspace/news-reports/2026-04-01-daily-news.md
new file mode 100644
index 0000000..f7277ab
--- /dev/null
+++ b/agents/ui-designer/workspace/news-reports/2026-04-01-daily-news.md
@@ -0,0 +1,42 @@
+# 每日热点新闻简报
+**日期:2026年4月1日(星期三)**
+
+---
+
+## ⚠️ 任务执行失败报告
+
+### 问题描述
+本次新闻追踪任务无法完成,原因如下:
+
+1. **web_search 工具调用失败**
+ - 所有6个搜索请求均返回 "fetch failed" 错误
+ - 搜索领域:美国政治、中东局势、AI大厂动态、中国航空航天、新能源、军工
+
+2. **网络诊断结果**
+ - ping 测试:✅ 正常(平均延迟 ~174ms)
+ - HTTPS 访问测试:❌ 失败
+ - 可能原因:代理服务未正确配置或服务不可用
+
+### 建议措施
+
+1. 检查 PassWall 科学上网服务状态(网关 192.168.1.200)
+2. 确认 OpenClaw 的网络代理配置
+3. 验证 Brave Search API 是否可访问
+
+---
+
+## 待追踪领域
+
+| 领域 | 搜索关键词 | 状态 |
+|------|-----------|------|
+| 美国政治 | 美国政治 最新新闻 2026年3月 | ❌ 失败 |
+| 中东局势 | 中东局势 最新动态 以色列 巴勒斯坦 | ❌ 失败 |
+| AI大厂动态 | AI大厂 OpenAI Google Anthropic | ❌ 失败 |
+| 中国航空航天 | 中国航空航天 神舟 天宫 | ❌ 失败 |
+| 新能源 | 新能源 电动车 锂电池 | ❌ 失败 |
+| 军工 | 军工 国防 军事装备 | ❌ 失败 |
+
+---
+
+*报告生成时间:2026-04-01 08:02*
+*执行者:子代理 (每日新闻追踪)*
diff --git a/completions/openclaw.bash b/completions/openclaw.bash
index 376fde7..bb06385 100644
--- a/completions/openclaw.bash
+++ b/completions/openclaw.bash
@@ -6,9 +6,14 @@ _openclaw_completion() {
prev="${COMP_WORDS[COMP_CWORD-1]}"
# Simple top-level completion for now
- opts="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"
+ opts="mcp completion setup onboard configure config backup doctor dashboard reset uninstall message agent agents status health sessions tasks acp gateway daemon logs system models approvals nodes devices node sandbox tui cron dns docs 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
+ mcp)
+ opts=" "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
completion)
opts=" -s, -i, --write-state -y,"
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
@@ -20,7 +25,7 @@ _openclaw_completion() {
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 --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"
+ 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 --anthropic-api-key --byteplus-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepseek-api-key --fal-api-key --gemini-api-key --huggingface-api-key --kilocode-api-key --kimi-code-api-key --litellm-api-key --minimax-api-key --mistral-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --moonshot-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --qianfan-api-key --synthetic-api-key --together-api-key --venice-api-key --ai-gateway-api-key --volcengine-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
;;
@@ -30,7 +35,12 @@ _openclaw_completion() {
return 0
;;
config)
- opts="get set unset file validate --section"
+ 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
;;
@@ -59,11 +69,6 @@ _openclaw_completion() {
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
- memory)
- opts="status index search "
- 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}) )
@@ -89,18 +94,18 @@ _openclaw_completion() {
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
- browser)
- opts="status start stop reset-profile tabs tab open focus close profiles create-profile delete-profile extension 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"
+ tasks)
+ opts="list audit maintenance show notify cancel --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 -v,"
+ 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 --tailscale --tailscale-reset-on-exit --allow-unconfigured --dev --reset --force --verbose --claude-cli-logs --ws-log --compact --raw-stream --raw-stream-path"
+ 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
;;
@@ -130,7 +135,7 @@ _openclaw_completion() {
return 0
;;
nodes)
- opts="status describe list pending approve reject rename invoke run notify push canvas camera screen location "
+ opts="status describe list pending approve reject rename invoke notify push canvas camera screen location "
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
@@ -189,13 +194,23 @@ _openclaw_completion() {
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 "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
pairing)
opts="list approve "
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
plugins)
- opts="list info enable disable uninstall install update doctor "
+ opts="list inspect enable disable uninstall install update doctor marketplace "
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
@@ -220,7 +235,7 @@ _openclaw_completion() {
return 0
;;
skills)
- opts="list info check "
+ opts="search install update list info check "
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
diff --git a/completions/openclaw.fish b/completions/openclaw.fish
index c0f9aa1..2a324f9 100644
--- a/completions/openclaw.fish
+++ b/completions/openclaw.fish
@@ -1,20 +1,21 @@
+complete -c openclaw -n "__fish_use_subcommand" -a "mcp" -d 'Manage OpenClaw MCP config and channel bridge'
complete -c openclaw -n "__fish_use_subcommand" -a "completion" -d 'Generate shell completion script'
-complete -c openclaw -n "__fish_use_subcommand" -a "setup" -d 'Initialize ~/.openclaw/openclaw.json and the agent workspace'
-complete -c openclaw -n "__fish_use_subcommand" -a "onboard" -d 'Interactive wizard to set up the gateway, workspace, and skills'
-complete -c openclaw -n "__fish_use_subcommand" -a "configure" -d 'Interactive setup wizard for credentials, channels, gateway, and agent defaults'
-complete -c openclaw -n "__fish_use_subcommand" -a "config" -d 'Non-interactive config helpers (get/set/unset/file/validate). Run without subcommand for the setup wizard.'
+complete -c openclaw -n "__fish_use_subcommand" -a "setup" -d 'Initialize the active OpenClaw config and agent workspace'
+complete -c openclaw -n "__fish_use_subcommand" -a "onboard" -d 'Interactive onboarding for the gateway, workspace, and skills'
+complete -c openclaw -n "__fish_use_subcommand" -a "configure" -d 'Interactive configuration for credentials, channels, gateway, and agent defaults'
+complete -c openclaw -n "__fish_use_subcommand" -a "config" -d 'Non-interactive config helpers (get/set/unset/file/schema/validate). Run without subcommand for guided setup.'
+complete -c openclaw -n "__fish_use_subcommand" -a "backup" -d 'Create and verify local backup archives for OpenClaw state'
complete -c openclaw -n "__fish_use_subcommand" -a "doctor" -d 'Health checks + quick fixes for the gateway and channels'
complete -c openclaw -n "__fish_use_subcommand" -a "dashboard" -d 'Open the Control UI with your current token'
complete -c openclaw -n "__fish_use_subcommand" -a "reset" -d 'Reset local config/state (keeps the CLI installed)'
complete -c openclaw -n "__fish_use_subcommand" -a "uninstall" -d 'Uninstall the gateway service + local data (CLI remains)'
complete -c openclaw -n "__fish_use_subcommand" -a "message" -d 'Send, read, and manage messages and channel actions'
-complete -c openclaw -n "__fish_use_subcommand" -a "memory" -d 'Search, inspect, and reindex memory files'
complete -c openclaw -n "__fish_use_subcommand" -a "agent" -d 'Run an agent turn via the Gateway (use --local for embedded)'
complete -c openclaw -n "__fish_use_subcommand" -a "agents" -d 'Manage isolated agents (workspaces + auth + routing)'
complete -c openclaw -n "__fish_use_subcommand" -a "status" -d 'Show channel health and recent session recipients'
complete -c openclaw -n "__fish_use_subcommand" -a "health" -d 'Fetch health from the running gateway'
complete -c openclaw -n "__fish_use_subcommand" -a "sessions" -d 'List stored conversation sessions'
-complete -c openclaw -n "__fish_use_subcommand" -a "browser" -d 'Manage OpenClaw'\''s dedicated browser (Chrome/Chromium)'
+complete -c openclaw -n "__fish_use_subcommand" -a "tasks" -d 'Inspect durable background task state'
complete -c openclaw -n "__fish_use_subcommand" -a "acp" -d 'Run an ACP bridge backed by the Gateway'
complete -c openclaw -n "__fish_use_subcommand" -a "gateway" -d 'Run, inspect, and query the WebSocket Gateway'
complete -c openclaw -n "__fish_use_subcommand" -a "daemon" -d 'Manage the Gateway service (launchd/systemd/schtasks)'
@@ -34,6 +35,8 @@ complete -c openclaw -n "__fish_use_subcommand" -a "hooks" -d 'Manage internal a
complete -c openclaw -n "__fish_use_subcommand" -a "webhooks" -d 'Webhook helpers and integrations'
complete -c openclaw -n "__fish_use_subcommand" -a "qr" -d 'Generate an iOS pairing QR code and setup code'
complete -c openclaw -n "__fish_use_subcommand" -a "clawbot" -d 'Legacy clawbot command aliases'
+complete -c openclaw -n "__fish_use_subcommand" -a "browser" -d 'Manage OpenClaw'\''s dedicated browser (Chrome/Chromium)'
+complete -c openclaw -n "__fish_use_subcommand" -a "memory" -d 'Search, inspect, and reindex memory files'
complete -c openclaw -n "__fish_use_subcommand" -a "pairing" -d 'Secure DM pairing (approve inbound requests)'
complete -c openclaw -n "__fish_use_subcommand" -a "plugins" -d 'Manage OpenClaw plugins and extensions'
complete -c openclaw -n "__fish_use_subcommand" -a "channels" -d 'Manage connected chat channels and accounts'
@@ -43,6 +46,7 @@ complete -c openclaw -n "__fish_use_subcommand" -a "secrets" -d 'Secrets runtime
complete -c openclaw -n "__fish_use_subcommand" -a "skills" -d 'List and inspect available skills'
complete -c openclaw -n "__fish_use_subcommand" -a "update" -d 'Update OpenClaw and inspect update channel status'
complete -c openclaw -n "__fish_use_subcommand" -s V -l version -d 'output the version number'
+complete -c openclaw -n "__fish_use_subcommand" -l container -d 'Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)'
complete -c openclaw -n "__fish_use_subcommand" -l dev -d 'Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)'
complete -c openclaw -n "__fish_use_subcommand" -l profile -d 'Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)'
complete -c openclaw -n "__fish_use_subcommand" -l log-level -d 'Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)'
@@ -52,19 +56,19 @@ complete -c openclaw -n "__fish_seen_subcommand_from completion" -s i -l install
complete -c openclaw -n "__fish_seen_subcommand_from completion" -l write-state -d 'Write completion scripts to $OPENCLAW_STATE_DIR/completions (no stdout)'
complete -c openclaw -n "__fish_seen_subcommand_from completion" -s y -l yes -d 'Skip confirmation (non-interactive)'
complete -c openclaw -n "__fish_seen_subcommand_from setup" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)'
-complete -c openclaw -n "__fish_seen_subcommand_from setup" -l wizard -d 'Run the interactive onboarding wizard'
-complete -c openclaw -n "__fish_seen_subcommand_from setup" -l non-interactive -d 'Run the wizard without prompts'
-complete -c openclaw -n "__fish_seen_subcommand_from setup" -l mode -d 'Wizard mode: local|remote'
+complete -c openclaw -n "__fish_seen_subcommand_from setup" -l wizard -d 'Run interactive onboarding'
+complete -c openclaw -n "__fish_seen_subcommand_from setup" -l non-interactive -d 'Run onboarding without prompts'
+complete -c openclaw -n "__fish_seen_subcommand_from setup" -l mode -d 'Onboard mode: local|remote'
complete -c openclaw -n "__fish_seen_subcommand_from setup" -l remote-url -d 'Remote Gateway WebSocket URL'
complete -c openclaw -n "__fish_seen_subcommand_from setup" -l remote-token -d 'Remote Gateway token (optional)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace)'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l reset -d 'Reset config + credentials + sessions before running wizard (workspace only with --reset-scope full)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l reset -d 'Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l reset-scope -d 'Reset scope: config|config+creds+sessions|full'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l non-interactive -d 'Run without prompts'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l accept-risk -d 'Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l flow -d 'Wizard flow: quickstart|advanced|manual'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l mode -d 'Wizard mode: local|remote'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l auth-choice -d 'Auth: token|openai-codex|chutes|vllm|apiKey|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|synthetic-api-key|venice-api-key|together-api-key|huggingface-api-key|opencode-zen|xai-api-key|litellm-api-key|qianfan-api-key|volcengine-api-key|byteplus-api-key|moonshot-api-key-cn|github-copilot|gemini-api-key|google-gemini-cli|zai-api-key|zai-coding-global|zai-coding-cn|zai-global|zai-cn|xiaomi-api-key|minimax-portal|qwen-portal|copilot-proxy|apiKey|opencode-zen|minimax-api|minimax-api-key-cn|minimax-api-lightning|custom-api-key|skip|setup-token|oauth|claude-cli|codex-cli|minimax-cloud|minimax'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l flow -d 'Onboard flow: quickstart|advanced|manual'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l mode -d 'Onboard mode: local|remote'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l auth-choice -d 'Auth: custom-api-key|skip|setup-token|oauth|claude-cli|codex-cli|anthropic-cli|token|apiKey|byteplus-api-key|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|copilot-proxy|deepseek-api-key|github-copilot|gemini-api-key|google-gemini-cli|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|microsoft-foundry-entra|microsoft-foundry-apikey|minimax-global-oauth|minimax-global-api|minimax-cn-oauth|minimax-cn-api|mistral-api-key|modelstudio-standard-api-key-cn|modelstudio-standard-api-key|modelstudio-api-key-cn|modelstudio-api-key|moonshot-api-key|moonshot-api-key-cn|ollama|openai-codex|openai-api-key|opencode-zen|opencode-go|openrouter-api-key|qianfan-api-key|sglang|synthetic-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xiaomi-api-key|zai-api-key|zai-coding-global|zai-coding-cn|zai-global|zai-cn'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l token-provider -d 'Token provider id (non-interactive; used with --auth-choice token)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l token -d 'Token value (non-interactive; used with --auth-choice token)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l token-profile-id -d 'Auth profile id (non-interactive; default: :manual)'
@@ -73,28 +77,36 @@ complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l secret-input-mo
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l cloudflare-ai-gateway-account-id -d 'Cloudflare Account ID'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l cloudflare-ai-gateway-gateway-id -d 'Cloudflare AI Gateway ID'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l anthropic-api-key -d 'Anthropic API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l openai-api-key -d 'OpenAI API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l mistral-api-key -d 'Mistral API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l openrouter-api-key -d 'OpenRouter API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l kilocode-api-key -d 'Kilo Gateway API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l ai-gateway-api-key -d 'Vercel AI Gateway API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l cloudflare-ai-gateway-api-key -d 'Cloudflare AI Gateway API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l moonshot-api-key -d 'Moonshot API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l kimi-code-api-key -d 'Kimi Coding API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gemini-api-key -d 'Gemini API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l zai-api-key -d 'Z.AI API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l xiaomi-api-key -d 'Xiaomi API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l minimax-api-key -d 'MiniMax API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l synthetic-api-key -d 'Synthetic API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l venice-api-key -d 'Venice API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l together-api-key -d 'Together AI API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l huggingface-api-key -d 'Hugging Face API key (HF token)'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l opencode-zen-api-key -d 'OpenCode Zen API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l xai-api-key -d 'xAI API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l litellm-api-key -d 'LiteLLM API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l qianfan-api-key -d 'QIANFAN API key'
-complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l volcengine-api-key -d 'Volcano Engine API key'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l byteplus-api-key -d 'BytePlus API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l chutes-api-key -d 'Chutes API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l cloudflare-ai-gateway-api-key -d 'Cloudflare AI Gateway API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l deepseek-api-key -d 'DeepSeek API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l fal-api-key -d 'fal API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gemini-api-key -d 'Gemini API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l huggingface-api-key -d 'Hugging Face API key (HF token)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l kilocode-api-key -d 'Kilo Gateway API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l kimi-code-api-key -d 'Kimi Code API key (subscription)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l litellm-api-key -d 'LiteLLM API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l minimax-api-key -d 'MiniMax API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l mistral-api-key -d 'Mistral API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l modelstudio-standard-api-key-cn -d 'Alibaba Cloud Model Studio Standard API key (China)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l modelstudio-standard-api-key -d 'Alibaba Cloud Model Studio Standard API key (Global/Intl)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l modelstudio-api-key-cn -d 'Alibaba Cloud Model Studio Coding Plan API key (China)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l modelstudio-api-key -d 'Alibaba Cloud Model Studio Coding Plan API key (Global/Intl)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l moonshot-api-key -d 'Moonshot API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l openai-api-key -d 'OpenAI API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l opencode-zen-api-key -d 'OpenCode API key (Zen catalog)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l opencode-go-api-key -d 'OpenCode API key (Go catalog)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l openrouter-api-key -d 'OpenRouter API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l qianfan-api-key -d 'QIANFAN API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l synthetic-api-key -d 'Synthetic API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l together-api-key -d 'Together AI API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l venice-api-key -d 'Venice API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l ai-gateway-api-key -d 'Vercel AI Gateway API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l volcengine-api-key -d 'Volcano Engine API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l xai-api-key -d 'xAI API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l xiaomi-api-key -d 'Xiaomi API key'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l zai-api-key -d 'Z.AI API key'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l custom-base-url -d 'Custom provider base URL'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l custom-api-key -d 'Custom provider API key (optional)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l custom-model-id -d 'Custom provider model ID'
@@ -104,6 +116,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-port -d
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-bind -d 'Gateway bind: loopback|tailnet|lan|auto|custom'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-auth -d 'Gateway auth: token|password'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-token -d 'Gateway token (token auth)'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-token-ref-env -d 'Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l gateway-password -d 'Gateway password (password auth)'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l remote-url -d 'Remote Gateway WebSocket URL'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l remote-token -d 'Remote Gateway token (optional)'
@@ -115,21 +128,60 @@ complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-daemon -d
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l daemon-runtime -d 'Daemon runtime: node|bun'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-channels -d 'Skip channel setup'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-skills -d 'Skip skills setup'
+complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-search -d 'Skip search provider setup'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-health -d 'Skip health check'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l skip-ui -d 'Skip Control UI/TUI prompts'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l node-manager -d 'Node manager for skills: npm|pnpm|bun'
complete -c openclaw -n "__fish_seen_subcommand_from onboard" -l json -d 'Output JSON summary'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l section -d 'Configuration sections (repeatable). Options: workspace, model, web, gateway, daemon, channels, skills, health'
complete -c openclaw -n "__fish_seen_subcommand_from config" -a "get" -d 'Get a config value by dot path'
-complete -c openclaw -n "__fish_seen_subcommand_from config" -a "set" -d 'Set a config value by dot path'
+complete -c openclaw -n "__fish_seen_subcommand_from config" -a "set" -d 'Set config values by path (value mode, ref/provider builder mode, or batch JSON mode).
+Examples:
+openclaw config set gateway.port 19001 --strict-json
+openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
+openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json
+openclaw config set --batch-file ./config-set.batch.json --dry-run'
complete -c openclaw -n "__fish_seen_subcommand_from config" -a "unset" -d 'Remove a config value by dot path'
complete -c openclaw -n "__fish_seen_subcommand_from config" -a "file" -d 'Print the active config file path'
+complete -c openclaw -n "__fish_seen_subcommand_from config" -a "schema" -d 'Print the JSON schema for openclaw.json'
complete -c openclaw -n "__fish_seen_subcommand_from config" -a "validate" -d 'Validate the current config against the schema without starting the gateway'
-complete -c openclaw -n "__fish_seen_subcommand_from config" -l section -d 'Configure wizard sections (repeatable). Use with no subcommand.'
+complete -c openclaw -n "__fish_seen_subcommand_from config" -l section -d 'Configuration sections for guided setup (repeatable). Use with no subcommand.'
complete -c openclaw -n "__fish_seen_subcommand_from get" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -l strict-json -d 'Strict JSON5 parsing (error instead of raw string fallback)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l strict-json -d 'Strict JSON parsing (error instead of raw string fallback)'
complete -c openclaw -n "__fish_seen_subcommand_from set" -l json -d 'Legacy alias for --strict-json'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l dry-run -d 'Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l allow-exec -d 'Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l ref-provider -d 'SecretRef builder: provider alias'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l ref-source -d 'SecretRef builder: source (env|file|exec)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l ref-id -d 'SecretRef builder: ref id'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-source -d 'Provider builder: source (env|file|exec)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-allowlist -d 'Provider builder (env): allowlist entry (repeatable)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-path -d 'Provider builder (file): path'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-mode -d 'Provider builder (file): mode (singleValue|json)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-timeout-ms -d 'Provider builder (file|exec): timeout ms'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-max-bytes -d 'Provider builder (file): max bytes'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-command -d 'Provider builder (exec): absolute command path'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-arg -d 'Provider builder (exec): command arg (repeatable)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-no-output-timeout-ms -d 'Provider builder (exec): no-output timeout ms'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-max-output-bytes -d 'Provider builder (exec): max output bytes'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-json-only -d 'Provider builder (exec): require JSON output'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-env -d 'Provider builder (exec): env assignment (repeatable)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-pass-env -d 'Provider builder (exec): pass host env var (repeatable)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-trusted-dir -d 'Provider builder (exec): trusted directory (repeatable)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-allow-insecure-path -d 'Provider builder (exec): bypass strict path permission checks'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l provider-allow-symlink-command -d 'Provider builder (exec): allow command symlink path'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l batch-json -d 'Batch mode: JSON array of set operations'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l batch-file -d 'Batch mode: read JSON array of set operations from file'
complete -c openclaw -n "__fish_seen_subcommand_from validate" -l json -d 'Output validation result as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from backup" -a "create" -d 'Write a backup archive for config, credentials, sessions, and workspaces'
+complete -c openclaw -n "__fish_seen_subcommand_from backup" -a "verify" -d 'Validate a backup archive and its embedded manifest'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l output -d 'Archive path or destination directory'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l json -d 'Output JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l dry-run -d 'Print the backup plan without writing the archive'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l verify -d 'Verify the archive after writing it'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l only-config -d 'Back up only the active JSON config file'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l no-include-workspace -d 'Exclude workspace directories from the backup'
+complete -c openclaw -n "__fish_seen_subcommand_from verify" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from doctor" -l no-workspace-suggestions -d 'Disable workspace memory system suggestions'
complete -c openclaw -n "__fish_seen_subcommand_from doctor" -l yes -d 'Accept defaults without prompting'
complete -c openclaw -n "__fish_seen_subcommand_from doctor" -l repair -d 'Apply recommended repairs without prompting'
@@ -178,19 +230,21 @@ complete -c openclaw -n "__fish_seen_subcommand_from message" -a "ban" -d 'Ban a
complete -c openclaw -n "__fish_seen_subcommand_from send" -s m -l message -d 'Message body (required unless --media is set)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l media -d 'Attach media (image/audio/video/document). Accepts local paths or URLs.'
+complete -c openclaw -n "__fish_seen_subcommand_from send" -l interactive -d 'Shared interactive payload as JSON (buttons/selects rendered natively by supported channels)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l buttons -d 'Telegram inline keyboard buttons as JSON (array of button rows)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l components -d 'Discord components payload as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l card -d 'Adaptive Card JSON object (when supported by the channel)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l reply-to -d 'Reply-to message id'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l thread-id -d 'Thread id (Telegram forum thread)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l gif-playback -d 'Treat video media as GIF playback (WhatsApp only).'
+complete -c openclaw -n "__fish_seen_subcommand_from send" -l force-document -d 'Send media as document to avoid Telegram compression (Telegram only). Applies to images and GIFs.'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l silent -d 'Send message silently without notification (Telegram + Discord)'
-complete -c openclaw -n "__fish_seen_subcommand_from send" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from send" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l verbose -d 'Verbose logging'
-complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l dry-run -d 'Print payload and skip sending'
@@ -199,7 +253,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l targets -d 'R
complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l message -d 'Message to send'
complete -c openclaw -n "__fish_seen_subcommand_from broadcast" -l media -d 'Media URL'
complete -c openclaw -n "__fish_seen_subcommand_from poll" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from poll" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from poll" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from poll" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from poll" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from poll" -l dry-run -d 'Print payload and skip sending'
@@ -215,7 +269,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from poll" -s m -l message -d 'O
complete -c openclaw -n "__fish_seen_subcommand_from poll" -l silent -d 'Send poll silently without notification (Telegram + Discord where supported)'
complete -c openclaw -n "__fish_seen_subcommand_from poll" -l thread-id -d 'Thread id (Telegram forum topic / Slack thread ts)'
complete -c openclaw -n "__fish_seen_subcommand_from react" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from react" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from react" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from react" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from react" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from react" -l dry-run -d 'Print payload and skip sending'
@@ -228,7 +282,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from react" -l from-me -d 'Whats
complete -c openclaw -n "__fish_seen_subcommand_from react" -l target-author -d 'Signal reaction target author (uuid or phone)'
complete -c openclaw -n "__fish_seen_subcommand_from react" -l target-author-uuid -d 'Signal reaction target author uuid'
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l dry-run -d 'Print payload and skip sending'
@@ -236,7 +290,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l verbose -d 'V
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l message-id -d 'Message id'
complete -c openclaw -n "__fish_seen_subcommand_from reactions" -l limit -d 'Result limit'
complete -c openclaw -n "__fish_seen_subcommand_from read" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from read" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from read" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from read" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from read" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from read" -l dry-run -d 'Print payload and skip sending'
@@ -249,7 +303,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from read" -l include-thread -d
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l message-id -d 'Message id'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -s m -l message -d 'Message body'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from edit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from edit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l dry-run -d 'Print payload and skip sending'
@@ -257,39 +311,39 @@ complete -c openclaw -n "__fish_seen_subcommand_from edit" -l verbose -d 'Verbos
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l thread-id -d 'Thread id (Telegram forum thread)'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -l message-id -d 'Message id'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from delete" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from delete" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from delete" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from pin" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from pin" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from pin" -l message-id -d 'Message id'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from unpin" -l message-id -d 'Message id'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from pins" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from pins" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from pins" -l limit -d 'Result limit'
complete -c openclaw -n "__fish_seen_subcommand_from permissions" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from permissions" -l verbose -d 'Verbose logging'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from search" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from search" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from search" -l dry-run -d 'Print payload and skip sending'
@@ -306,7 +360,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from thread" -a "list" -d 'List
complete -c openclaw -n "__fish_seen_subcommand_from thread" -a "reply" -d 'Reply in a thread'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l thread-name -d 'Thread name'
complete -c openclaw -n "__fish_seen_subcommand_from create" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from create" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l dry-run -d 'Print payload and skip sending'
@@ -315,7 +369,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from create" -l message-id -d 'M
complete -c openclaw -n "__fish_seen_subcommand_from create" -s m -l message -d 'Initial thread message text'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l auto-archive-min -d 'Thread auto-archive minutes'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l dry-run -d 'Print payload and skip sending'
@@ -326,7 +380,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from list" -l before -d 'Read/se
complete -c openclaw -n "__fish_seen_subcommand_from list" -l limit -d 'Result limit'
complete -c openclaw -n "__fish_seen_subcommand_from reply" -s m -l message -d 'Message body'
complete -c openclaw -n "__fish_seen_subcommand_from reply" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from reply" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from reply" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from reply" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from reply" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from reply" -l dry-run -d 'Print payload and skip sending'
@@ -335,14 +389,14 @@ complete -c openclaw -n "__fish_seen_subcommand_from reply" -l media -d 'Attach
complete -c openclaw -n "__fish_seen_subcommand_from reply" -l reply-to -d 'Reply-to message id'
complete -c openclaw -n "__fish_seen_subcommand_from emoji" -a "list" -d 'List emojis'
complete -c openclaw -n "__fish_seen_subcommand_from emoji" -a "upload" -d 'Upload an emoji'
-complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l guild-id -d 'Guild id (Discord)'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l dry-run -d 'Print payload and skip sending'
@@ -353,7 +407,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from upload" -l role-ids -d 'Rol
complete -c openclaw -n "__fish_seen_subcommand_from sticker" -a "send" -d 'Send stickers'
complete -c openclaw -n "__fish_seen_subcommand_from sticker" -a "upload" -d 'Upload a sticker'
complete -c openclaw -n "__fish_seen_subcommand_from send" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from send" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from send" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from send" -l dry-run -d 'Print payload and skip sending'
@@ -361,7 +415,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from send" -l verbose -d 'Verbos
complete -c openclaw -n "__fish_seen_subcommand_from send" -l sticker-id -d 'Sticker id (repeat)'
complete -c openclaw -n "__fish_seen_subcommand_from send" -s m -l message -d 'Optional message body'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from upload" -l dry-run -d 'Print payload and skip sending'
@@ -374,7 +428,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from role" -a "info" -d 'List ro
complete -c openclaw -n "__fish_seen_subcommand_from role" -a "add" -d 'Add role to a member'
complete -c openclaw -n "__fish_seen_subcommand_from role" -a "remove" -d 'Remove role from a member'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l dry-run -d 'Print payload and skip sending'
@@ -382,7 +436,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from info" -l verbose -d 'Verbos
complete -c openclaw -n "__fish_seen_subcommand_from add" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l user-id -d 'User id'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l role-id -d 'Role id'
-complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l dry-run -d 'Print payload and skip sending'
@@ -390,7 +444,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from add" -l verbose -d 'Verbose
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l user-id -d 'User id'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l role-id -d 'Role id'
-complete -c openclaw -n "__fish_seen_subcommand_from remove" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from remove" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l dry-run -d 'Print payload and skip sending'
@@ -398,20 +452,20 @@ complete -c openclaw -n "__fish_seen_subcommand_from remove" -l verbose -d 'Verb
complete -c openclaw -n "__fish_seen_subcommand_from channel" -a "info" -d 'Fetch channel info'
complete -c openclaw -n "__fish_seen_subcommand_from channel" -a "list" -d 'List channels'
complete -c openclaw -n "__fish_seen_subcommand_from info" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id'
-complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from member" -a "info" -d 'Fetch member info'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l user-id -d 'User id'
-complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from info" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from info" -l dry-run -d 'Print payload and skip sending'
@@ -420,7 +474,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from info" -l guild-id -d 'Guild
complete -c openclaw -n "__fish_seen_subcommand_from voice" -a "status" -d 'Fetch voice status'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l user-id -d 'User id'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l dry-run -d 'Print payload and skip sending'
@@ -428,7 +482,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from status" -l verbose -d 'Verb
complete -c openclaw -n "__fish_seen_subcommand_from event" -a "list" -d 'List scheduled events'
complete -c openclaw -n "__fish_seen_subcommand_from event" -a "create" -d 'Create a scheduled event'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l guild-id -d 'Guild id'
-complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l dry-run -d 'Print payload and skip sending'
@@ -436,7 +490,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from list" -l verbose -d 'Verbos
complete -c openclaw -n "__fish_seen_subcommand_from create" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l event-name -d 'Event name'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l start-time -d 'Event start time'
-complete -c openclaw -n "__fish_seen_subcommand_from create" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from create" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from create" -l dry-run -d 'Print payload and skip sending'
@@ -448,7 +502,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from create" -l location -d 'Eve
complete -c openclaw -n "__fish_seen_subcommand_from create" -l event-type -d 'Event type'
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l user-id -d 'User id'
-complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l dry-run -d 'Print payload and skip sending'
@@ -458,7 +512,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l until -d 'Timeo
complete -c openclaw -n "__fish_seen_subcommand_from timeout" -l reason -d 'Moderation reason'
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l user-id -d 'User id'
-complete -c openclaw -n "__fish_seen_subcommand_from kick" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from kick" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l dry-run -d 'Print payload and skip sending'
@@ -466,36 +520,20 @@ complete -c openclaw -n "__fish_seen_subcommand_from kick" -l verbose -d 'Verbos
complete -c openclaw -n "__fish_seen_subcommand_from kick" -l reason -d 'Moderation reason'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l guild-id -d 'Guild id'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l user-id -d 'User id'
-complete -c openclaw -n "__fish_seen_subcommand_from ban" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon'
+complete -c openclaw -n "__fish_seen_subcommand_from ban" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l account -d 'Channel account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l json -d 'Output result as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l dry-run -d 'Print payload and skip sending'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l verbose -d 'Verbose logging'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l reason -d 'Moderation reason'
complete -c openclaw -n "__fish_seen_subcommand_from ban" -l delete-days -d 'Ban delete message days'
-complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "status" -d 'Show memory search index status'
-complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "index" -d 'Reindex memory files'
-complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "search" -d 'Search memory files'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l agent -d 'Agent id (default: default agent)'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Print JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l deep -d 'Probe embedding provider availability'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l index -d 'Reindex if dirty (implies --deep)'
-complete -c openclaw -n "__fish_seen_subcommand_from status" -l verbose -d 'Verbose logging'
-complete -c openclaw -n "__fish_seen_subcommand_from index" -l agent -d 'Agent id (default: default agent)'
-complete -c openclaw -n "__fish_seen_subcommand_from index" -l force -d 'Force full reindex'
-complete -c openclaw -n "__fish_seen_subcommand_from index" -l verbose -d 'Verbose logging'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l query -d 'Search query (alternative to positional argument)'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l agent -d 'Agent id (default: default agent)'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l max-results -d 'Max results'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l min-score -d 'Minimum score'
-complete -c openclaw -n "__fish_seen_subcommand_from search" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -s m -l message -d 'Message body for the agent'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -s t -l to -d 'Recipient number in E.164 used to derive the session key'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l session-id -d 'Use an explicit session id'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l agent -d 'Agent id (overrides routing bindings)'
-complete -c openclaw -n "__fish_seen_subcommand_from agent" -l thinking -d 'Thinking level: off | minimal | low | medium | high'
+complete -c openclaw -n "__fish_seen_subcommand_from agent" -l thinking -d 'Thinking level: off | minimal | low | medium | high | xhigh'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l verbose -d 'Persist agent verbose level for the session'
-complete -c openclaw -n "__fish_seen_subcommand_from agent" -l channel -d 'Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon (omit to use the main session channel)'
+complete -c openclaw -n "__fish_seen_subcommand_from agent" -l channel -d 'Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line (omit to use the main session channel)'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l reply-to -d 'Delivery target override (separate from session routing)'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l reply-channel -d 'Delivery channel override (separate from routing)'
complete -c openclaw -n "__fish_seen_subcommand_from agent" -l reply-account -d 'Delivery account id override'
@@ -564,185 +602,25 @@ complete -c openclaw -n "__fish_seen_subcommand_from cleanup" -l enforce -d 'App
complete -c openclaw -n "__fish_seen_subcommand_from cleanup" -l fix-missing -d 'Remove store entries whose transcript files are missing (bypasses age/count retention)'
complete -c openclaw -n "__fish_seen_subcommand_from cleanup" -l active-key -d 'Protect this session key from budget-eviction'
complete -c openclaw -n "__fish_seen_subcommand_from cleanup" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "status" -d 'Show browser status'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "start" -d 'Start the browser (no-op if already running)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "stop" -d 'Stop the browser (best-effort)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "reset-profile" -d 'Reset browser profile (moves it to Trash)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "tabs" -d 'List open tabs'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "tab" -d 'Tab shortcuts (index-based)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "open" -d 'Open a URL in a new tab'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "focus" -d 'Focus a tab by target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "close" -d 'Close a tab (target id optional)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "profiles" -d 'List all browser profiles'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "create-profile" -d 'Create a new browser profile'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "delete-profile" -d 'Delete a browser profile'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "extension" -d 'Chrome extension helpers'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "screenshot" -d 'Capture a screenshot (MEDIA:)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "snapshot" -d 'Capture a snapshot (default: ai; aria is the accessibility tree)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "navigate" -d 'Navigate the current tab to a URL'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "resize" -d 'Resize the viewport'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "click" -d 'Click an element by ref from snapshot'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "type" -d 'Type into an element by ref from snapshot'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "press" -d 'Press a key'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "hover" -d 'Hover an element by ai ref'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "scrollintoview" -d 'Scroll an element into view by ref from snapshot'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "drag" -d 'Drag from one ref to another'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "select" -d 'Select option(s) in a select element'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "upload" -d 'Arm file upload for the next file chooser'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "waitfordownload" -d 'Wait for the next download (and save it)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "download" -d 'Click a ref and save the resulting download'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "dialog" -d 'Arm the next modal dialog (alert/confirm/prompt)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "fill" -d 'Fill a form with JSON field descriptors'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "wait" -d 'Wait for time, selector, URL, load state, or JS conditions'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "evaluate" -d 'Evaluate a function against the page or a ref'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "console" -d 'Get recent console messages'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "pdf" -d 'Save page as PDF'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "responsebody" -d 'Wait for a network response and return its body'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "highlight" -d 'Highlight an element by ref'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "errors" -d 'Get recent page errors'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "requests" -d 'Get recent network requests (best-effort)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "trace" -d 'Record a Playwright trace'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "cookies" -d 'Read/write cookies'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "storage" -d 'Read/write localStorage/sessionStorage'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "set" -d 'Browser environment settings'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l browser-profile -d 'Browser profile name (default from config)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l json -d 'Output machine-readable JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l token -d 'Gateway token (if required)'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l timeout -d 'Timeout in ms'
-complete -c openclaw -n "__fish_seen_subcommand_from browser" -l expect-final -d 'Wait for final response (agent)'
-complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "new" -d 'Open a new tab (about:blank)'
-complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "select" -d 'Focus tab by index (1-based)'
-complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "close" -d 'Close tab by index (1-based); default: first tab'
-complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l name -d 'Profile name (lowercase, numbers, hyphens)'
-complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l color -d 'Profile color (hex format, e.g. #0066CC)'
-complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l cdp-url -d 'CDP URL for remote Chrome (http/https)'
-complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l driver -d 'Profile driver (openclaw|extension). Default: openclaw'
-complete -c openclaw -n "__fish_seen_subcommand_from delete-profile" -l name -d 'Profile name to delete'
-complete -c openclaw -n "__fish_seen_subcommand_from extension" -a "install" -d 'Install the Chrome extension to a stable local path'
-complete -c openclaw -n "__fish_seen_subcommand_from extension" -a "path" -d 'Print the path to the installed Chrome extension (load unpacked)'
-complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l full-page -d 'Capture full scrollable page'
-complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l ref -d 'ARIA ref from ai snapshot'
-complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l element -d 'CSS selector for element screenshot'
-complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l type -d 'Output type (default: png)'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l format -d 'Snapshot format (default: ai)'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l limit -d 'Max nodes (default: 500/800)'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l mode -d 'Snapshot preset (efficient)'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l efficient -d 'Use the efficient snapshot preset'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l interactive -d 'Role snapshot: interactive elements only'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l compact -d 'Role snapshot: compact output'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l depth -d 'Role snapshot: max depth'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l selector -d 'Role snapshot: scope to CSS selector'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l frame -d 'Role snapshot: scope to an iframe selector'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l labels -d 'Include viewport label overlay screenshot'
-complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l out -d 'Write snapshot to a file'
-complete -c openclaw -n "__fish_seen_subcommand_from navigate" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from resize" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from click" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from click" -l double -d 'Double click'
-complete -c openclaw -n "__fish_seen_subcommand_from click" -l button -d 'Mouse button to use'
-complete -c openclaw -n "__fish_seen_subcommand_from click" -l modifiers -d 'Comma-separated modifiers (Shift,Alt,Meta)'
-complete -c openclaw -n "__fish_seen_subcommand_from type" -l submit -d 'Press Enter after typing'
-complete -c openclaw -n "__fish_seen_subcommand_from type" -l slowly -d 'Type slowly (human-like)'
-complete -c openclaw -n "__fish_seen_subcommand_from type" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from press" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from hover" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from scrollintoview" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from scrollintoview" -l timeout-ms -d 'How long to wait for scroll (default: 20000)'
-complete -c openclaw -n "__fish_seen_subcommand_from drag" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from select" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l ref -d 'Ref id from snapshot to click after arming'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l input-ref -d 'Ref id for to set directly'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l element -d 'CSS selector for '
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from upload" -l timeout-ms -d 'How long to wait for the next file chooser (default: 120000)'
-complete -c openclaw -n "__fish_seen_subcommand_from waitfordownload" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from waitfordownload" -l timeout-ms -d 'How long to wait for the next download (default: 120000)'
-complete -c openclaw -n "__fish_seen_subcommand_from download" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from download" -l timeout-ms -d 'How long to wait for the download to start (default: 120000)'
-complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l accept -d 'Accept the dialog'
-complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l dismiss -d 'Dismiss the dialog'
-complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l prompt -d 'Prompt response text'
-complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l timeout-ms -d 'How long to wait for the next dialog (default: 120000)'
-complete -c openclaw -n "__fish_seen_subcommand_from fill" -l fields -d 'JSON array of field objects'
-complete -c openclaw -n "__fish_seen_subcommand_from fill" -l fields-file -d 'Read JSON array from a file'
-complete -c openclaw -n "__fish_seen_subcommand_from fill" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l time -d 'Wait for N milliseconds'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l text -d 'Wait for text to appear'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l text-gone -d 'Wait for text to disappear'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l url -d 'Wait for URL (supports globs like **/dash)'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l load -d 'Wait for load state'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l fn -d 'Wait for JS condition (passed to waitForFunction)'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l timeout-ms -d 'How long to wait for each condition (default: 20000)'
-complete -c openclaw -n "__fish_seen_subcommand_from wait" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l fn -d 'Function source, e.g. (el) => el.textContent'
-complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l ref -d 'Ref from snapshot'
-complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from console" -l level -d 'Filter by level (error, warn, info)'
-complete -c openclaw -n "__fish_seen_subcommand_from console" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from pdf" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l timeout-ms -d 'How long to wait for the response (default: 20000)'
-complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l max-chars -d 'Max body chars to return (default: 200000)'
-complete -c openclaw -n "__fish_seen_subcommand_from highlight" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from errors" -l clear -d 'Clear stored errors after reading'
-complete -c openclaw -n "__fish_seen_subcommand_from errors" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from requests" -l filter -d 'Only show URLs that contain this substring'
-complete -c openclaw -n "__fish_seen_subcommand_from requests" -l clear -d 'Clear stored requests after reading'
-complete -c openclaw -n "__fish_seen_subcommand_from requests" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from trace" -a "start" -d 'Start trace recording'
-complete -c openclaw -n "__fish_seen_subcommand_from trace" -a "stop" -d 'Stop trace recording and write a .zip'
-complete -c openclaw -n "__fish_seen_subcommand_from start" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from start" -l no-screenshots -d 'Disable screenshots'
-complete -c openclaw -n "__fish_seen_subcommand_from start" -l no-snapshots -d 'Disable snapshots'
-complete -c openclaw -n "__fish_seen_subcommand_from start" -l sources -d 'Include sources (bigger traces)'
-complete -c openclaw -n "__fish_seen_subcommand_from stop" -l out -d 'Output path within openclaw temp dir (e.g. trace.zip or /tmp/openclaw/trace.zip)'
-complete -c openclaw -n "__fish_seen_subcommand_from stop" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from cookies" -a "set" -d 'Set a cookie (requires --url or domain+path)'
-complete -c openclaw -n "__fish_seen_subcommand_from cookies" -a "clear" -d 'Clear all cookies'
-complete -c openclaw -n "__fish_seen_subcommand_from cookies" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -l url -d 'Cookie URL scope (recommended)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from storage" -a "local" -d 'localStorage commands'
-complete -c openclaw -n "__fish_seen_subcommand_from storage" -a "session" -d 'sessionStorage commands'
-complete -c openclaw -n "__fish_seen_subcommand_from local" -a "get" -d 'Get localStorage (all keys or one key)'
-complete -c openclaw -n "__fish_seen_subcommand_from local" -a "set" -d 'Set a localStorage key'
-complete -c openclaw -n "__fish_seen_subcommand_from local" -a "clear" -d 'Clear all localStorage keys'
-complete -c openclaw -n "__fish_seen_subcommand_from get" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from session" -a "get" -d 'Get sessionStorage (all keys or one key)'
-complete -c openclaw -n "__fish_seen_subcommand_from session" -a "set" -d 'Set a sessionStorage key'
-complete -c openclaw -n "__fish_seen_subcommand_from session" -a "clear" -d 'Clear all sessionStorage keys'
-complete -c openclaw -n "__fish_seen_subcommand_from get" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "viewport" -d 'Set viewport size (alias for resize)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "offline" -d 'Toggle offline mode'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "headers" -d 'Set extra HTTP headers (JSON object)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "credentials" -d 'Set HTTP basic auth credentials'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "geo" -d 'Set geolocation (and grant permission)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "media" -d 'Emulate prefers-color-scheme'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "timezone" -d 'Override timezone (CDP)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "locale" -d 'Override locale (CDP)'
-complete -c openclaw -n "__fish_seen_subcommand_from set" -a "device" -d 'Apply a Playwright device descriptor (e.g. "iPhone 14")'
-complete -c openclaw -n "__fish_seen_subcommand_from viewport" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from offline" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from headers" -l headers-json -d 'JSON object of headers'
-complete -c openclaw -n "__fish_seen_subcommand_from headers" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from credentials" -l clear -d 'Clear credentials'
-complete -c openclaw -n "__fish_seen_subcommand_from credentials" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from geo" -l clear -d 'Clear geolocation + permissions'
-complete -c openclaw -n "__fish_seen_subcommand_from geo" -l accuracy -d 'Accuracy in meters'
-complete -c openclaw -n "__fish_seen_subcommand_from geo" -l origin -d 'Origin to grant permissions for'
-complete -c openclaw -n "__fish_seen_subcommand_from geo" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from media" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from timezone" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from locale" -l target-id -d 'CDP target id (or unique prefix)'
-complete -c openclaw -n "__fish_seen_subcommand_from device" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "list" -d 'List tracked background tasks'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "audit" -d 'Show stale or broken background task runs'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "maintenance" -d 'Preview or apply task ledger maintenance'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "show" -d 'Show one background task by task id, run id, or session key'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "notify" -d 'Set task notify policy'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -a "cancel" -d 'Cancel a running background task'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -l json -d 'Output as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)'
+complete -c openclaw -n "__fish_seen_subcommand_from tasks" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l json -d 'Output as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l severity -d 'Filter by severity (warn, error)'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l code -d 'Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps)'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l limit -d 'Limit displayed findings'
+complete -c openclaw -n "__fish_seen_subcommand_from maintenance" -l json -d 'Output as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from maintenance" -l apply -d 'Apply reconciliation, cleanup stamping, and pruning'
+complete -c openclaw -n "__fish_seen_subcommand_from show" -l json -d 'Output as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -a "client" -d 'Run an interactive ACP client against the local ACP bridge'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -l token -d 'Gateway token (if required)'
@@ -754,6 +632,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from acp" -l session-label -d 'D
complete -c openclaw -n "__fish_seen_subcommand_from acp" -l require-existing -d 'Fail if the session key/label does not exist'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -l reset-session -d 'Reset the session key before first use'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -l no-prefix-cwd -d 'Do not prefix prompts with the working directory'
+complete -c openclaw -n "__fish_seen_subcommand_from acp" -l provenance -d 'ACP provenance mode: off, meta, or meta+receipt'
complete -c openclaw -n "__fish_seen_subcommand_from acp" -s v -l verbose -d 'Verbose logging to stderr'
complete -c openclaw -n "__fish_seen_subcommand_from client" -l cwd -d 'Working directory for the ACP session'
complete -c openclaw -n "__fish_seen_subcommand_from client" -l server -d 'ACP server command (default: openclaw)'
@@ -777,6 +656,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l bind -d 'Bind m
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l password -d 'Password for auth mode=password'
+complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l password-file -d 'Read gateway password from file'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l allow-unconfigured -d 'Allow gateway start without gateway.mode=local in config'
@@ -784,7 +664,8 @@ complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l dev -d 'Create
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l force -d 'Kill any existing listener on the target port before starting'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l verbose -d 'Verbose logging to stdout/stderr'
-complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l claude-cli-logs -d 'Only show claude-cli logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l compact -d 'Alias for "--ws-log compact"'
complete -c openclaw -n "__fish_seen_subcommand_from gateway" -l raw-stream -d 'Log raw model stream events to jsonl'
@@ -794,6 +675,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from run" -l bind -d 'Bind mode
complete -c openclaw -n "__fish_seen_subcommand_from run" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l password -d 'Password for auth mode=password'
+complete -c openclaw -n "__fish_seen_subcommand_from run" -l password-file -d 'Read gateway password from file'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l allow-unconfigured -d 'Allow gateway start without gateway.mode=local in config'
@@ -801,7 +683,8 @@ complete -c openclaw -n "__fish_seen_subcommand_from run" -l dev -d 'Create a de
complete -c openclaw -n "__fish_seen_subcommand_from run" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l force -d 'Kill any existing listener on the target port before starting'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l verbose -d 'Verbose logging to stdout/stderr'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l claude-cli-logs -d 'Only show claude-cli logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__fish_seen_subcommand_from run" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__fish_seen_subcommand_from run" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l compact -d 'Alias for "--ws-log compact"'
complete -c openclaw -n "__fish_seen_subcommand_from run" -l raw-stream -d 'Log raw model stream events to jsonl'
@@ -811,6 +694,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from status" -l token -d 'Gatewa
complete -c openclaw -n "__fish_seen_subcommand_from status" -l password -d 'Gateway password (password auth)'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l no-probe -d 'Skip RPC probe'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l require-rpc -d 'Exit non-zero when the RPC probe fails'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l deep -d 'Scan system-level services'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from install" -l port -d 'Gateway port'
@@ -863,6 +747,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from status" -l token -d 'Gatewa
complete -c openclaw -n "__fish_seen_subcommand_from status" -l password -d 'Gateway password (password auth)'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l no-probe -d 'Skip RPC probe'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l require-rpc -d 'Exit non-zero when the RPC probe fails'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l deep -d 'Scan system-level services'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from install" -l port -d 'Gateway port'
@@ -990,7 +875,6 @@ complete -c openclaw -n "__fish_seen_subcommand_from setup-token" -l yes -d 'Ski
complete -c openclaw -n "__fish_seen_subcommand_from paste-token" -l provider -d 'Provider id (e.g. anthropic)'
complete -c openclaw -n "__fish_seen_subcommand_from paste-token" -l profile-id -d 'Auth profile id (default: :manual)'
complete -c openclaw -n "__fish_seen_subcommand_from paste-token" -l expires-in -d 'Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.'
-complete -c openclaw -n "__fish_seen_subcommand_from login-github-copilot" -l profile-id -d 'Auth profile id (default: github-copilot:github)'
complete -c openclaw -n "__fish_seen_subcommand_from login-github-copilot" -l yes -d 'Overwrite existing profile without prompting'
complete -c openclaw -n "__fish_seen_subcommand_from order" -a "get" -d 'Show per-agent auth order override (from auth-profiles.json)'
complete -c openclaw -n "__fish_seen_subcommand_from order" -a "set" -d 'Set per-agent auth order override (locks rotation to this list)'
@@ -1043,7 +927,6 @@ complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "approve" -d 'App
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "reject" -d 'Reject a pending pairing request'
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "rename" -d 'Rename a paired node (display name override)'
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "invoke" -d 'Invoke a command on a paired node'
-complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "run" -d 'Run a shell command on a node (mac only)'
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "notify" -d 'Send a local notification on a node (mac only)'
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "push" -d 'Send an APNs test push to an iOS node'
complete -c openclaw -n "__fish_seen_subcommand_from nodes" -a "canvas" -d 'Capture or render canvas content from a paired node'
@@ -1094,20 +977,6 @@ complete -c openclaw -n "__fish_seen_subcommand_from invoke" -l url -d 'Gateway
complete -c openclaw -n "__fish_seen_subcommand_from invoke" -l token -d 'Gateway token (if required)'
complete -c openclaw -n "__fish_seen_subcommand_from invoke" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from invoke" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l node -d 'Node id, name, or IP'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l cwd -d 'Working directory'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l env -d 'Environment override (repeatable)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l raw -d 'Run a raw shell command string (sh -lc / cmd.exe /c)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l agent -d 'Agent id (default: configured default agent)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l ask -d 'Exec ask mode (off|on-miss|always)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l security -d 'Exec security mode (deny|allowlist|full)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l command-timeout -d 'Command timeout (ms)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l needs-screen-recording -d 'Require screen recording permission'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l invoke-timeout -d 'Node invoke timeout in ms (default 30000)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l token -d 'Gateway token (if required)'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l timeout -d 'Timeout in ms'
-complete -c openclaw -n "__fish_seen_subcommand_from run" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from notify" -l node -d 'Node id, name, or IP'
complete -c openclaw -n "__fish_seen_subcommand_from notify" -l title -d 'Notification title'
complete -c openclaw -n "__fish_seen_subcommand_from notify" -l body -d 'Notification body'
@@ -1365,7 +1234,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from add" -l agent -d 'Agent id
complete -c openclaw -n "__fish_seen_subcommand_from add" -l session -d 'Session target (main|isolated)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l session-key -d 'Session key for job routing (e.g. agent:my-agent:my-session)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l wake -d 'Wake mode (now|next-heartbeat)'
-complete -c openclaw -n "__fish_seen_subcommand_from add" -l at -d 'Run once at time (ISO) or +duration (e.g. 20m)'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l at -d 'Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l every -d 'Run every duration (e.g. 10m, 1h)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l cron -d 'Cron expression (5-field or 6-field with seconds)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l tz -d 'Timezone for cron expressions (IANA)'
@@ -1373,14 +1242,14 @@ complete -c openclaw -n "__fish_seen_subcommand_from add" -l stagger -d 'Cron st
complete -c openclaw -n "__fish_seen_subcommand_from add" -l exact -d 'Disable cron staggering (set stagger to 0)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l system-event -d 'System event payload (main session)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l message -d 'Agent message payload'
-complete -c openclaw -n "__fish_seen_subcommand_from add" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high)'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l model -d 'Model override for agent jobs (provider/model or alias)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l timeout-seconds -d 'Timeout seconds for agent jobs'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l light-context -d 'Use lightweight bootstrap context for agent jobs'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l announce -d 'Announce summary to a chat (subagent-style)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l deliver -d 'Deprecated (use --announce). Announces a summary to a chat.'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l no-deliver -d 'Disable announce delivery and skip main-session summary'
-complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Delivery channel (last)'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Delivery channel (last|)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l account -d 'Channel account id for delivery (multi-account setups)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l best-effort-deliver -d 'Do not fail the job if delivery fails'
@@ -1433,7 +1302,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from edit" -l stagger -d 'Cron s
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l exact -d 'Disable cron staggering (set stagger to 0)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l system-event -d 'Set systemEvent payload'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l message -d 'Set agentTurn payload message'
-complete -c openclaw -n "__fish_seen_subcommand_from edit" -l thinking -d 'Thinking level for agent jobs'
+complete -c openclaw -n "__fish_seen_subcommand_from edit" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l model -d 'Model override for agent jobs'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l timeout-seconds -d 'Timeout seconds for agent jobs'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l light-context -d 'Enable lightweight bootstrap context for agent jobs'
@@ -1441,7 +1310,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from edit" -l no-light-context -
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l announce -d 'Announce summary to a chat (subagent-style)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l deliver -d 'Deprecated (use --announce). Announces a summary to a chat.'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l no-deliver -d 'Disable announce delivery'
-complete -c openclaw -n "__fish_seen_subcommand_from edit" -l channel -d 'Delivery channel (last)'
+complete -c openclaw -n "__fish_seen_subcommand_from edit" -l channel -d 'Delivery channel (last|)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l account -d 'Channel account id for delivery (multi-account setups)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l best-effort-deliver -d 'Do not fail job if delivery fails'
@@ -1449,7 +1318,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from edit" -l no-best-effort-del
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert -d 'Enable failure alerts for this job'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l no-failure-alert -d 'Disable failure alerts for this job'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-after -d 'Alert after N consecutive job errors'
-complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-channel -d 'Failure alert channel (last)'
+complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-channel -d 'Failure alert channel (last|)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-to -d 'Failure alert destination'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-cooldown -d 'Minimum time between alerts (e.g. 1h, 30m)'
complete -c openclaw -n "__fish_seen_subcommand_from edit" -l failure-alert-mode -d 'Failure alert delivery mode (announce or webhook)'
@@ -1466,8 +1335,8 @@ complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "info" -d 'Show d
complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "check" -d 'Check hooks eligibility status'
complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "enable" -d 'Enable a hook'
complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "disable" -d 'Disable a hook'
-complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "install" -d 'Install a hook pack (path, archive, or npm spec)'
-complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "update" -d 'Update installed hooks (npm installs only)'
+complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "install" -d 'Deprecated: install a hook pack via `openclaw plugins install`'
+complete -c openclaw -n "__fish_seen_subcommand_from hooks" -a "update" -d 'Deprecated: update hook packs via `openclaw plugins update`'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l eligible -d 'Show only eligible hooks'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -s v -l verbose -d 'Show more details including missing requirements'
@@ -1532,6 +1401,199 @@ complete -c openclaw -n "__fish_seen_subcommand_from qr" -l password -d 'Overrid
complete -c openclaw -n "__fish_seen_subcommand_from qr" -l setup-code-only -d 'Print only the setup code'
complete -c openclaw -n "__fish_seen_subcommand_from qr" -l no-ascii -d 'Skip ASCII QR rendering'
complete -c openclaw -n "__fish_seen_subcommand_from qr" -l json -d 'Output JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "status" -d 'Show browser status'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "start" -d 'Start the browser (no-op if already running)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "stop" -d 'Stop the browser (best-effort)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "reset-profile" -d 'Reset browser profile (moves it to Trash)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "tabs" -d 'List open tabs'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "tab" -d 'Tab shortcuts (index-based)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "open" -d 'Open a URL in a new tab'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "focus" -d 'Focus a tab by target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "close" -d 'Close a tab (target id optional)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "profiles" -d 'List all browser profiles'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "create-profile" -d 'Create a new browser profile'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "delete-profile" -d 'Delete a browser profile'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "screenshot" -d 'Capture a screenshot (MEDIA:)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "snapshot" -d 'Capture a snapshot (default: ai; aria is the accessibility tree)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "navigate" -d 'Navigate the current tab to a URL'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "resize" -d 'Resize the viewport'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "click" -d 'Click an element by ref from snapshot'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "type" -d 'Type into an element by ref from snapshot'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "press" -d 'Press a key'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "hover" -d 'Hover an element by ai ref'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "scrollintoview" -d 'Scroll an element into view by ref from snapshot'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "drag" -d 'Drag from one ref to another'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "select" -d 'Select option(s) in a select element'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "upload" -d 'Arm file upload for the next file chooser'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "waitfordownload" -d 'Wait for the next download (and save it)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "download" -d 'Click a ref and save the resulting download'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "dialog" -d 'Arm the next modal dialog (alert/confirm/prompt)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "fill" -d 'Fill a form with JSON field descriptors'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "wait" -d 'Wait for time, selector, URL, load state, or JS conditions'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "evaluate" -d 'Evaluate a function against the page or a ref'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "console" -d 'Get recent console messages'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "pdf" -d 'Save page as PDF'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "responsebody" -d 'Wait for a network response and return its body'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "highlight" -d 'Highlight an element by ref'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "errors" -d 'Get recent page errors'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "requests" -d 'Get recent network requests (best-effort)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "trace" -d 'Record a Playwright trace'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "cookies" -d 'Read/write cookies'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "storage" -d 'Read/write localStorage/sessionStorage'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -a "set" -d 'Browser environment settings'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l browser-profile -d 'Browser profile name (default from config)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l json -d 'Output machine-readable JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__fish_seen_subcommand_from browser" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "new" -d 'Open a new tab (about:blank)'
+complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "select" -d 'Focus tab by index (1-based)'
+complete -c openclaw -n "__fish_seen_subcommand_from tab" -a "close" -d 'Close tab by index (1-based); default: first tab'
+complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l name -d 'Profile name (lowercase, numbers, hyphens)'
+complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l color -d 'Profile color (hex format, e.g. #0066CC)'
+complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l cdp-url -d 'CDP URL for remote Chrome (http/https)'
+complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l user-data-dir -d 'User data dir for existing-session Chromium attach'
+complete -c openclaw -n "__fish_seen_subcommand_from create-profile" -l driver -d 'Profile driver (openclaw|existing-session). Default: openclaw'
+complete -c openclaw -n "__fish_seen_subcommand_from delete-profile" -l name -d 'Profile name to delete'
+complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l full-page -d 'Capture full scrollable page'
+complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l ref -d 'ARIA ref from ai snapshot'
+complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l element -d 'CSS selector for element screenshot'
+complete -c openclaw -n "__fish_seen_subcommand_from screenshot" -l type -d 'Output type (default: png)'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l format -d 'Snapshot format (default: ai)'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l limit -d 'Max nodes (default: 500/800)'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l mode -d 'Snapshot preset (efficient)'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l efficient -d 'Use the efficient snapshot preset'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l interactive -d 'Role snapshot: interactive elements only'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l compact -d 'Role snapshot: compact output'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l depth -d 'Role snapshot: max depth'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l selector -d 'Role snapshot: scope to CSS selector'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l frame -d 'Role snapshot: scope to an iframe selector'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l labels -d 'Include viewport label overlay screenshot'
+complete -c openclaw -n "__fish_seen_subcommand_from snapshot" -l out -d 'Write snapshot to a file'
+complete -c openclaw -n "__fish_seen_subcommand_from navigate" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from resize" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from click" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from click" -l double -d 'Double click'
+complete -c openclaw -n "__fish_seen_subcommand_from click" -l button -d 'Mouse button to use'
+complete -c openclaw -n "__fish_seen_subcommand_from click" -l modifiers -d 'Comma-separated modifiers (Shift,Alt,Meta)'
+complete -c openclaw -n "__fish_seen_subcommand_from type" -l submit -d 'Press Enter after typing'
+complete -c openclaw -n "__fish_seen_subcommand_from type" -l slowly -d 'Type slowly (human-like)'
+complete -c openclaw -n "__fish_seen_subcommand_from type" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from press" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from hover" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from scrollintoview" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from scrollintoview" -l timeout-ms -d 'How long to wait for scroll (default: 20000)'
+complete -c openclaw -n "__fish_seen_subcommand_from drag" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from select" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l ref -d 'Ref id from snapshot to click after arming'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l input-ref -d 'Ref id for to set directly'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l element -d 'CSS selector for '
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from upload" -l timeout-ms -d 'How long to wait for the next file chooser (default: 120000)'
+complete -c openclaw -n "__fish_seen_subcommand_from waitfordownload" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from waitfordownload" -l timeout-ms -d 'How long to wait for the next download (default: 120000)'
+complete -c openclaw -n "__fish_seen_subcommand_from download" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from download" -l timeout-ms -d 'How long to wait for the download to start (default: 120000)'
+complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l accept -d 'Accept the dialog'
+complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l dismiss -d 'Dismiss the dialog'
+complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l prompt -d 'Prompt response text'
+complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from dialog" -l timeout-ms -d 'How long to wait for the next dialog (default: 120000)'
+complete -c openclaw -n "__fish_seen_subcommand_from fill" -l fields -d 'JSON array of field objects'
+complete -c openclaw -n "__fish_seen_subcommand_from fill" -l fields-file -d 'Read JSON array from a file'
+complete -c openclaw -n "__fish_seen_subcommand_from fill" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l time -d 'Wait for N milliseconds'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l text -d 'Wait for text to appear'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l text-gone -d 'Wait for text to disappear'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l url -d 'Wait for URL (supports globs like **/dash)'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l load -d 'Wait for load state'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l fn -d 'Wait for JS condition (passed to waitForFunction)'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l timeout-ms -d 'How long to wait for each condition (default: 20000)'
+complete -c openclaw -n "__fish_seen_subcommand_from wait" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l fn -d 'Function source, e.g. (el) => el.textContent'
+complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l ref -d 'Ref from snapshot'
+complete -c openclaw -n "__fish_seen_subcommand_from evaluate" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from console" -l level -d 'Filter by level (error, warn, info)'
+complete -c openclaw -n "__fish_seen_subcommand_from console" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from pdf" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l timeout-ms -d 'How long to wait for the response (default: 20000)'
+complete -c openclaw -n "__fish_seen_subcommand_from responsebody" -l max-chars -d 'Max body chars to return (default: 200000)'
+complete -c openclaw -n "__fish_seen_subcommand_from highlight" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from errors" -l clear -d 'Clear stored errors after reading'
+complete -c openclaw -n "__fish_seen_subcommand_from errors" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from requests" -l filter -d 'Only show URLs that contain this substring'
+complete -c openclaw -n "__fish_seen_subcommand_from requests" -l clear -d 'Clear stored requests after reading'
+complete -c openclaw -n "__fish_seen_subcommand_from requests" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from trace" -a "start" -d 'Start trace recording'
+complete -c openclaw -n "__fish_seen_subcommand_from trace" -a "stop" -d 'Stop trace recording and write a .zip'
+complete -c openclaw -n "__fish_seen_subcommand_from start" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from start" -l no-screenshots -d 'Disable screenshots'
+complete -c openclaw -n "__fish_seen_subcommand_from start" -l no-snapshots -d 'Disable snapshots'
+complete -c openclaw -n "__fish_seen_subcommand_from start" -l sources -d 'Include sources (bigger traces)'
+complete -c openclaw -n "__fish_seen_subcommand_from stop" -l out -d 'Output path within openclaw temp dir (e.g. trace.zip or /tmp/openclaw/trace.zip)'
+complete -c openclaw -n "__fish_seen_subcommand_from stop" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from cookies" -a "set" -d 'Set a cookie (requires --url or domain+path)'
+complete -c openclaw -n "__fish_seen_subcommand_from cookies" -a "clear" -d 'Clear all cookies'
+complete -c openclaw -n "__fish_seen_subcommand_from cookies" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l url -d 'Cookie URL scope (recommended)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from storage" -a "local" -d 'localStorage commands'
+complete -c openclaw -n "__fish_seen_subcommand_from storage" -a "session" -d 'sessionStorage commands'
+complete -c openclaw -n "__fish_seen_subcommand_from local" -a "get" -d 'Get localStorage (all keys or one key)'
+complete -c openclaw -n "__fish_seen_subcommand_from local" -a "set" -d 'Set a localStorage key'
+complete -c openclaw -n "__fish_seen_subcommand_from local" -a "clear" -d 'Clear all localStorage keys'
+complete -c openclaw -n "__fish_seen_subcommand_from get" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from session" -a "get" -d 'Get sessionStorage (all keys or one key)'
+complete -c openclaw -n "__fish_seen_subcommand_from session" -a "set" -d 'Set a sessionStorage key'
+complete -c openclaw -n "__fish_seen_subcommand_from session" -a "clear" -d 'Clear all sessionStorage keys'
+complete -c openclaw -n "__fish_seen_subcommand_from get" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from clear" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "viewport" -d 'Set viewport size (alias for resize)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "offline" -d 'Toggle offline mode'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "headers" -d 'Set extra HTTP headers (JSON object)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "credentials" -d 'Set HTTP basic auth credentials'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "geo" -d 'Set geolocation (and grant permission)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "media" -d 'Emulate prefers-color-scheme'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "timezone" -d 'Override timezone (CDP)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "locale" -d 'Override locale (CDP)'
+complete -c openclaw -n "__fish_seen_subcommand_from set" -a "device" -d 'Apply a Playwright device descriptor (e.g. "iPhone 14")'
+complete -c openclaw -n "__fish_seen_subcommand_from viewport" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from offline" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from headers" -l headers-json -d 'JSON object of headers'
+complete -c openclaw -n "__fish_seen_subcommand_from headers" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from credentials" -l clear -d 'Clear credentials'
+complete -c openclaw -n "__fish_seen_subcommand_from credentials" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from geo" -l clear -d 'Clear geolocation + permissions'
+complete -c openclaw -n "__fish_seen_subcommand_from geo" -l accuracy -d 'Accuracy in meters'
+complete -c openclaw -n "__fish_seen_subcommand_from geo" -l origin -d 'Origin to grant permissions for'
+complete -c openclaw -n "__fish_seen_subcommand_from geo" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from media" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from timezone" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from locale" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from device" -l target-id -d 'CDP target id (or unique prefix)'
+complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "status" -d 'Show memory search index status'
+complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "index" -d 'Reindex memory files'
+complete -c openclaw -n "__fish_seen_subcommand_from memory" -a "search" -d 'Search memory files'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l agent -d 'Agent id (default: default agent)'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Print JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l deep -d 'Probe embedding provider availability'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l index -d 'Reindex if dirty (implies --deep)'
+complete -c openclaw -n "__fish_seen_subcommand_from status" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__fish_seen_subcommand_from index" -l agent -d 'Agent id (default: default agent)'
+complete -c openclaw -n "__fish_seen_subcommand_from index" -l force -d 'Force full reindex'
+complete -c openclaw -n "__fish_seen_subcommand_from index" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l query -d 'Search query (alternative to positional argument)'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l agent -d 'Agent id (default: default agent)'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l max-results -d 'Max results'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l min-score -d 'Minimum score'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from pairing" -a "list" -d 'List pending pairing requests'
complete -c openclaw -n "__fish_seen_subcommand_from pairing" -a "approve" -d 'Approve a pairing code and allow that sender'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l channel -d 'Channel (feishu)'
@@ -1541,25 +1603,31 @@ complete -c openclaw -n "__fish_seen_subcommand_from approve" -l channel -d 'Cha
complete -c openclaw -n "__fish_seen_subcommand_from approve" -l account -d 'Account id (for multi-account channels)'
complete -c openclaw -n "__fish_seen_subcommand_from approve" -l notify -d 'Notify the requester on the same channel'
complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "list" -d 'List discovered plugins'
-complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "info" -d 'Show plugin details'
+complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "inspect" -d 'Inspect plugin details'
complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "enable" -d 'Enable a plugin in config'
complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "disable" -d 'Disable a plugin in config'
complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "uninstall" -d 'Uninstall a plugin'
-complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "install" -d 'Install a plugin (path, archive, or npm spec)'
-complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "update" -d 'Update installed plugins (npm installs only)'
+complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "install" -d 'Install a plugin or hook pack (path, archive, npm spec, clawhub:package, or marketplace entry)'
+complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "update" -d 'Update installed plugins and tracked hook packs'
complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "doctor" -d 'Report plugin load issues'
+complete -c openclaw -n "__fish_seen_subcommand_from plugins" -a "marketplace" -d 'Inspect Claude-compatible plugin marketplaces'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l enabled -d 'Only show enabled plugins'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l verbose -d 'Show detailed entries'
-complete -c openclaw -n "__fish_seen_subcommand_from info" -l json -d 'Print JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from inspect" -l all -d 'Inspect all plugins'
+complete -c openclaw -n "__fish_seen_subcommand_from inspect" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from uninstall" -l keep-files -d 'Keep installed files on disk'
complete -c openclaw -n "__fish_seen_subcommand_from uninstall" -l keep-config -d 'Deprecated alias for --keep-files'
complete -c openclaw -n "__fish_seen_subcommand_from uninstall" -l force -d 'Skip confirmation prompt'
complete -c openclaw -n "__fish_seen_subcommand_from uninstall" -l dry-run -d 'Show what would be removed without making changes'
complete -c openclaw -n "__fish_seen_subcommand_from install" -s l -l link -d 'Link a local path instead of copying'
complete -c openclaw -n "__fish_seen_subcommand_from install" -l pin -d 'Record npm installs as exact resolved @'
-complete -c openclaw -n "__fish_seen_subcommand_from update" -l all -d 'Update all tracked plugins'
+complete -c openclaw -n "__fish_seen_subcommand_from install" -l dangerously-force-unsafe-install -d 'Bypass built-in dangerous-code install blocking (plugin hooks may still block)'
+complete -c openclaw -n "__fish_seen_subcommand_from install" -l marketplace -d 'Install a Claude marketplace plugin from a local repo/path or git/GitHub source'
+complete -c openclaw -n "__fish_seen_subcommand_from update" -l all -d 'Update all tracked plugins and hook packs'
complete -c openclaw -n "__fish_seen_subcommand_from update" -l dry-run -d 'Show what would change without writing'
+complete -c openclaw -n "__fish_seen_subcommand_from marketplace" -a "list" -d 'List plugins published by a marketplace source'
+complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from channels" -a "list" -d 'List configured channels + auth profiles'
complete -c openclaw -n "__fish_seen_subcommand_from channels" -a "status" -d 'Show gateway channel status (use status --deep for local)'
complete -c openclaw -n "__fish_seen_subcommand_from channels" -a "capabilities" -d 'Show provider capabilities (intents/scopes + supported features)'
@@ -1574,22 +1642,23 @@ complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output JS
complete -c openclaw -n "__fish_seen_subcommand_from status" -l probe -d 'Probe channel credentials'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from status" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)'
+complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)'
complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l account -d 'Account id (only with --channel)'
complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l target -d 'Channel target for permission audit (Discord channel:)'
complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from capabilities" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from resolve" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)'
+complete -c openclaw -n "__fish_seen_subcommand_from resolve" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)'
complete -c openclaw -n "__fish_seen_subcommand_from resolve" -l account -d 'Account id (accountId)'
complete -c openclaw -n "__fish_seen_subcommand_from resolve" -l kind -d 'Target kind (auto|user|group)'
complete -c openclaw -n "__fish_seen_subcommand_from resolve" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from logs" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)'
+complete -c openclaw -n "__fish_seen_subcommand_from logs" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)'
complete -c openclaw -n "__fish_seen_subcommand_from logs" -l lines -d 'Number of lines (default: 200)'
complete -c openclaw -n "__fish_seen_subcommand_from logs" -l json -d 'Output JSON'
-complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l account -d 'Account id (default when omitted)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l name -d 'Display name for this account'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l token -d 'Bot token (Telegram/Discord)'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l private-key -d 'Nostr private key (nsec... or hex)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l token-file -d 'Bot token file (Telegram)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l bot-token -d 'Slack bot token (xoxb-...)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l app-token -d 'Slack app token (xapp-...)'
@@ -1614,13 +1683,14 @@ complete -c openclaw -n "__fish_seen_subcommand_from add" -l device-name -d 'Mat
complete -c openclaw -n "__fish_seen_subcommand_from add" -l initial-sync-limit -d 'Matrix initial sync limit'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l ship -d 'Tlon ship name (~sampel-palnet)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l url -d 'Tlon ship URL'
+complete -c openclaw -n "__fish_seen_subcommand_from add" -l relay-urls -d 'Nostr relay URLs (comma-separated)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l code -d 'Tlon login code'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l group-channels -d 'Tlon group channels (comma-separated)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l dm-allowlist -d 'Tlon DM allowlist (comma-separated ships)'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l auto-discover-channels -d 'Tlon auto-discover group channels'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l no-auto-discover-channels -d 'Disable Tlon auto-discovery'
complete -c openclaw -n "__fish_seen_subcommand_from add" -l use-env -d 'Use env token (default account only)'
-complete -c openclaw -n "__fish_seen_subcommand_from remove" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)'
+complete -c openclaw -n "__fish_seen_subcommand_from remove" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l account -d 'Account id (default when omitted)'
complete -c openclaw -n "__fish_seen_subcommand_from remove" -l delete -d 'Delete config entries (no prompt)'
complete -c openclaw -n "__fish_seen_subcommand_from login" -l channel -d 'Channel alias (auto when only one is configured)'
@@ -1654,6 +1724,8 @@ complete -c openclaw -n "__fish_seen_subcommand_from members" -l json -d 'Output
complete -c openclaw -n "__fish_seen_subcommand_from members" -l limit -d 'Limit results'
complete -c openclaw -n "__fish_seen_subcommand_from security" -a "audit" -d 'Audit config + local state for common security foot-guns'
complete -c openclaw -n "__fish_seen_subcommand_from audit" -l deep -d 'Attempt live Gateway probe (best-effort)'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l token -d 'Use explicit gateway token for deep probe auth'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l password -d 'Use explicit gateway password for deep probe auth'
complete -c openclaw -n "__fish_seen_subcommand_from audit" -l fix -d 'Apply safe fixes (tighten defaults + chmod state/config)'
complete -c openclaw -n "__fish_seen_subcommand_from audit" -l json -d 'Print JSON'
complete -c openclaw -n "__fish_seen_subcommand_from secrets" -a "reload" -d 'Re-resolve secret references and atomically swap runtime snapshot'
@@ -1666,20 +1738,31 @@ complete -c openclaw -n "__fish_seen_subcommand_from reload" -l token -d 'Gatewa
complete -c openclaw -n "__fish_seen_subcommand_from reload" -l timeout -d 'Timeout in ms'
complete -c openclaw -n "__fish_seen_subcommand_from reload" -l expect-final -d 'Wait for final response (agent)'
complete -c openclaw -n "__fish_seen_subcommand_from audit" -l check -d 'Exit non-zero when findings are present'
+complete -c openclaw -n "__fish_seen_subcommand_from audit" -l allow-exec -d 'Allow exec SecretRef resolution during audit (may execute provider commands)'
complete -c openclaw -n "__fish_seen_subcommand_from audit" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l apply -d 'Apply changes immediately after preflight'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l yes -d 'Skip apply confirmation prompt'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l providers-only -d 'Configure secrets.providers only, skip credential mapping'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l skip-provider-setup -d 'Skip provider setup and only map credential fields to existing providers'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l agent -d 'Agent id for auth-profiles targets (default: configured default agent)'
+complete -c openclaw -n "__fish_seen_subcommand_from configure" -l allow-exec -d 'Allow exec SecretRef preflight checks (may execute provider commands)'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l plan-out -d 'Write generated plan JSON to a file'
complete -c openclaw -n "__fish_seen_subcommand_from configure" -l json -d 'Output JSON'
complete -c openclaw -n "__fish_seen_subcommand_from apply" -l from -d 'Path to plan JSON'
complete -c openclaw -n "__fish_seen_subcommand_from apply" -l dry-run -d 'Validate/preflight only'
+complete -c openclaw -n "__fish_seen_subcommand_from apply" -l allow-exec -d 'Allow exec SecretRef checks (may execute provider commands)'
complete -c openclaw -n "__fish_seen_subcommand_from apply" -l json -d 'Output JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "search" -d 'Search ClawHub skills'
+complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "install" -d 'Install a skill from ClawHub into the active workspace'
+complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "update" -d 'Update ClawHub-installed skills in the active workspace'
complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "list" -d 'List all available skills'
complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "info" -d 'Show detailed information about a skill'
complete -c openclaw -n "__fish_seen_subcommand_from skills" -a "check" -d 'Check which skills are ready vs missing requirements'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l limit -d 'Max results'
+complete -c openclaw -n "__fish_seen_subcommand_from search" -l json -d 'Output as JSON'
+complete -c openclaw -n "__fish_seen_subcommand_from install" -l version -d 'Install a specific version'
+complete -c openclaw -n "__fish_seen_subcommand_from install" -l force -d 'Overwrite an existing workspace skill'
+complete -c openclaw -n "__fish_seen_subcommand_from update" -l all -d 'Update all tracked ClawHub skills'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l json -d 'Output as JSON'
complete -c openclaw -n "__fish_seen_subcommand_from list" -l eligible -d 'Show only eligible (ready to use) skills'
complete -c openclaw -n "__fish_seen_subcommand_from list" -s v -l verbose -d 'Show more details including missing requirements'
@@ -1691,7 +1774,7 @@ complete -c openclaw -n "__fish_seen_subcommand_from update" -l json -d 'Output
complete -c openclaw -n "__fish_seen_subcommand_from update" -l no-restart -d 'Skip restarting the gateway service after a successful update'
complete -c openclaw -n "__fish_seen_subcommand_from update" -l dry-run -d 'Preview update actions without making changes'
complete -c openclaw -n "__fish_seen_subcommand_from update" -l channel -d 'Persist update channel (git + npm)'
-complete -c openclaw -n "__fish_seen_subcommand_from update" -l tag -d 'Override npm dist-tag or version for this update'
+complete -c openclaw -n "__fish_seen_subcommand_from update" -l tag -d 'Override the package target for this update (dist-tag, version, or package spec)'
complete -c openclaw -n "__fish_seen_subcommand_from update" -l timeout -d 'Timeout for each update step in seconds (default: 1200)'
complete -c openclaw -n "__fish_seen_subcommand_from update" -l yes -d 'Skip confirmation prompts (non-interactive)'
complete -c openclaw -n "__fish_seen_subcommand_from wizard" -l timeout -d 'Timeout for each update step in seconds (default: 1200)'
diff --git a/completions/openclaw.ps1 b/completions/openclaw.ps1
index 933a41a..6d9648d 100644
--- a/completions/openclaw.ps1
+++ b/completions/openclaw.ps1
@@ -17,2065 +17,2135 @@ Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
# Root command
if ($commandPath -eq "") {
- $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 = @('mcp','completion','setup','onboard','configure','config','backup','doctor','dashboard','reset','uninstall','message','agent','agents','status','health','sessions','tasks','acp','gateway','daemon','logs','system','models','approvals','nodes','devices','node','sandbox','tui','cron','dns','docs','hooks','webhooks','qr','clawbot','browser','memory','pairing','plugins','channels','directory','security','secrets','skills','update', '-V,','--container','--dev','--profile','--log-level','--no-color')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw') {
- $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') {
+ if ($commandPath -eq 'completion') {
$completions = @('-s','-i','--write-state','-y')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw setup') {
+ if ($commandPath -eq 'setup') {
$completions = @('--workspace','--wizard','--non-interactive','--mode','--remote-url','--remote-token')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw onboard') {
- $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')
+ if ($commandPath -eq 'onboard') {
+ $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','--byteplus-api-key','--chutes-api-key','--cloudflare-ai-gateway-api-key','--deepseek-api-key','--fal-api-key','--gemini-api-key','--huggingface-api-key','--kilocode-api-key','--kimi-code-api-key','--litellm-api-key','--minimax-api-key','--mistral-api-key','--modelstudio-standard-api-key-cn','--modelstudio-standard-api-key','--modelstudio-api-key-cn','--modelstudio-api-key','--moonshot-api-key','--openai-api-key','--opencode-zen-api-key','--opencode-go-api-key','--openrouter-api-key','--qianfan-api-key','--synthetic-api-key','--together-api-key','--venice-api-key','--ai-gateway-api-key','--volcengine-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')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw configure') {
+ if ($commandPath -eq 'configure') {
$completions = @('--section')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw config') {
- $completions = @('get','set','unset','file','validate','--section')
+ if ($commandPath -eq 'config') {
+ $completions = @('get','set','unset','file','schema','validate','--section')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw config get') {
+ if ($commandPath -eq 'config get') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw config set') {
- $completions = @('--strict-json','--json')
+ if ($commandPath -eq 'config set') {
+ $completions = @('--strict-json','--json','--dry-run','--allow-exec','--ref-provider','--ref-source','--ref-id','--provider-source','--provider-allowlist','--provider-path','--provider-mode','--provider-timeout-ms','--provider-max-bytes','--provider-command','--provider-arg','--provider-no-output-timeout-ms','--provider-max-output-bytes','--provider-json-only','--provider-env','--provider-pass-env','--provider-trusted-dir','--provider-allow-insecure-path','--provider-allow-symlink-command','--batch-json','--batch-file')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw config validate') {
+ if ($commandPath -eq 'config validate') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw doctor') {
+ if ($commandPath -eq 'backup') {
+ $completions = @('create','verify')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'backup create') {
+ $completions = @('--output','--json','--dry-run','--verify','--only-config','--no-include-workspace')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'backup verify') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'doctor') {
$completions = @('--no-workspace-suggestions','--yes','--repair','--fix','--force','--non-interactive','--generate-gateway-token','--deep')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw dashboard') {
+ if ($commandPath -eq 'dashboard') {
$completions = @('--no-open')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw reset') {
+ if ($commandPath -eq 'reset') {
$completions = @('--scope','--yes','--non-interactive','--dry-run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw uninstall') {
+ if ($commandPath -eq 'uninstall') {
$completions = @('--service','--state','--workspace','--app','--all','--yes','--non-interactive','--dry-run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message') {
+ if ($commandPath -eq 'message') {
$completions = @('send','broadcast','poll','react','reactions','read','edit','delete','pin','unpin','pins','permissions','search','thread','emoji','sticker','role','channel','member','voice','event','timeout','kick','ban')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message send') {
- $completions = @('-m','-t','--media','--buttons','--components','--card','--reply-to','--thread-id','--gif-playback','--silent','--channel','--account','--json','--dry-run','--verbose')
+ if ($commandPath -eq 'message send') {
+ $completions = @('-m','-t','--media','--interactive','--buttons','--components','--card','--reply-to','--thread-id','--gif-playback','--force-document','--silent','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message broadcast') {
+ if ($commandPath -eq 'message broadcast') {
$completions = @('--channel','--account','--json','--dry-run','--verbose','--targets','--message','--media')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message poll') {
+ if ($commandPath -eq 'message poll') {
$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', $_)
}
}
- if ($commandPath -eq 'openclaw message react') {
+ if ($commandPath -eq 'message react') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--message-id','--emoji','--remove','--participant','--from-me','--target-author','--target-author-uuid')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message reactions') {
+ if ($commandPath -eq 'message reactions') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--message-id','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message read') {
+ if ($commandPath -eq 'message read') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--limit','--before','--after','--around','--include-thread')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message edit') {
+ if ($commandPath -eq 'message edit') {
$completions = @('--message-id','-m','-t','--channel','--account','--json','--dry-run','--verbose','--thread-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message delete') {
+ if ($commandPath -eq 'message delete') {
$completions = @('--message-id','-t','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message pin') {
+ if ($commandPath -eq 'message pin') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--message-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message unpin') {
+ if ($commandPath -eq 'message unpin') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--message-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message pins') {
+ if ($commandPath -eq 'message pins') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message permissions') {
+ if ($commandPath -eq 'message permissions') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message search') {
+ if ($commandPath -eq 'message search') {
$completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id','--query','--channel-id','--channel-ids','--author-id','--author-ids','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message thread') {
+ if ($commandPath -eq 'message thread') {
$completions = @('create','list','reply')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message thread create') {
+ if ($commandPath -eq 'message thread create') {
$completions = @('--thread-name','-t','--channel','--account','--json','--dry-run','--verbose','--message-id','-m','--auto-archive-min')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message thread list') {
+ if ($commandPath -eq 'message thread list') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--channel-id','--include-archived','--before','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message thread reply') {
+ if ($commandPath -eq 'message thread reply') {
$completions = @('-m','-t','--channel','--account','--json','--dry-run','--verbose','--media','--reply-to')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message emoji') {
+ if ($commandPath -eq 'message emoji') {
$completions = @('list','upload')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message emoji list') {
+ if ($commandPath -eq 'message emoji list') {
$completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message emoji upload') {
+ if ($commandPath -eq 'message emoji upload') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--emoji-name','--media','--role-ids')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message sticker') {
+ if ($commandPath -eq 'message sticker') {
$completions = @('send','upload')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message sticker send') {
+ if ($commandPath -eq 'message sticker send') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose','--sticker-id','-m')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message sticker upload') {
+ if ($commandPath -eq 'message sticker upload') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--sticker-name','--sticker-desc','--sticker-tags','--media')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message role') {
+ if ($commandPath -eq 'message role') {
$completions = @('info','add','remove')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message role info') {
+ if ($commandPath -eq 'message role info') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message role add') {
+ if ($commandPath -eq 'message role add') {
$completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message role remove') {
+ if ($commandPath -eq 'message role remove') {
$completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message channel') {
+ if ($commandPath -eq 'message channel') {
$completions = @('info','list')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message channel info') {
+ if ($commandPath -eq 'message channel info') {
$completions = @('-t','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message channel list') {
+ if ($commandPath -eq 'message channel list') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message member') {
+ if ($commandPath -eq 'message member') {
$completions = @('info')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message member info') {
+ if ($commandPath -eq 'message member info') {
$completions = @('--user-id','--channel','--account','--json','--dry-run','--verbose','--guild-id')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message voice') {
+ if ($commandPath -eq 'message voice') {
$completions = @('status')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message voice status') {
+ if ($commandPath -eq 'message voice status') {
$completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message event') {
+ if ($commandPath -eq 'message event') {
$completions = @('list','create')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message event list') {
+ if ($commandPath -eq 'message event list') {
$completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message event create') {
+ if ($commandPath -eq 'message event create') {
$completions = @('--guild-id','--event-name','--start-time','--channel','--account','--json','--dry-run','--verbose','--end-time','--desc','--channel-id','--location','--event-type')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message timeout') {
+ if ($commandPath -eq 'message timeout') {
$completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--duration-min','--until','--reason')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message kick') {
+ if ($commandPath -eq 'message kick') {
$completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw message ban') {
+ if ($commandPath -eq 'message ban') {
$completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason','--delete-days')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw memory') {
- $completions = @('status','index','search')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw memory status') {
- $completions = @('--agent','--json','--deep','--index','--verbose')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw memory index') {
- $completions = @('--agent','--force','--verbose')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw memory search') {
- $completions = @('--query','--agent','--max-results','--min-score','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw agent') {
+ if ($commandPath -eq 'agent') {
$completions = @('-m','-t','--session-id','--agent','--thinking','--verbose','--channel','--reply-to','--reply-channel','--reply-account','--local','--deliver','--json','--timeout')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents') {
+ if ($commandPath -eq 'agents') {
$completions = @('list','bindings','bind','unbind','add','set-identity','delete')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents list') {
+ if ($commandPath -eq 'agents list') {
$completions = @('--json','--bindings')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents bindings') {
+ if ($commandPath -eq 'agents bindings') {
$completions = @('--agent','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents bind') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq 'agents add') {
$completions = @('--workspace','--model','--agent-dir','--bind','--non-interactive','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents set-identity') {
+ if ($commandPath -eq 'agents set-identity') {
$completions = @('--agent','--workspace','--identity-file','--from-identity','--name','--theme','--emoji','--avatar','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw agents delete') {
+ if ($commandPath -eq 'agents delete') {
$completions = @('--force','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw status') {
+ if ($commandPath -eq 'status') {
$completions = @('--json','--all','--usage','--deep','--timeout','--verbose','--debug')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw health') {
+ if ($commandPath -eq 'health') {
$completions = @('--json','--timeout','--verbose','--debug')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw sessions') {
+ if ($commandPath -eq 'sessions') {
$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') {
+ if ($commandPath -eq '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', $_)
}
}
- if ($commandPath -eq 'openclaw browser') {
- $completions = @('status','start','stop','reset-profile','tabs','tab','open','focus','close','profiles','create-profile','delete-profile','extension','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')
+ if ($commandPath -eq 'tasks') {
+ $completions = @('list','audit','maintenance','show','notify','cancel','--json','--runtime','--status')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser tab') {
- $completions = @('new','select','close')
+ if ($commandPath -eq 'tasks list') {
+ $completions = @('--json','--runtime','--status')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser create-profile') {
- $completions = @('--name','--color','--cdp-url','--driver')
+ if ($commandPath -eq 'tasks audit') {
+ $completions = @('--json','--severity','--code','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser delete-profile') {
- $completions = @('--name')
+ if ($commandPath -eq 'tasks maintenance') {
+ $completions = @('--json','--apply')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser extension') {
- $completions = @('install','path')
+ if ($commandPath -eq 'tasks show') {
+ $completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser screenshot') {
- $completions = @('--full-page','--ref','--element','--type')
+ if ($commandPath -eq 'acp') {
+ $completions = @('client','--url','--token','--token-file','--password','--password-file','--session','--session-label','--require-existing','--reset-session','--no-prefix-cwd','--provenance','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw browser snapshot') {
- $completions = @('--format','--target-id','--limit','--mode','--efficient','--interactive','--compact','--depth','--selector','--frame','--labels','--out')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser navigate') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser resize') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser click') {
- $completions = @('--target-id','--double','--button','--modifiers')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser type') {
- $completions = @('--submit','--slowly','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser press') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser hover') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser scrollintoview') {
- $completions = @('--target-id','--timeout-ms')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser drag') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser select') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser upload') {
- $completions = @('--ref','--input-ref','--element','--target-id','--timeout-ms')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser waitfordownload') {
- $completions = @('--target-id','--timeout-ms')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser download') {
- $completions = @('--target-id','--timeout-ms')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser dialog') {
- $completions = @('--accept','--dismiss','--prompt','--target-id','--timeout-ms')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser fill') {
- $completions = @('--fields','--fields-file','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser wait') {
- $completions = @('--time','--text','--text-gone','--url','--load','--fn','--timeout-ms','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser evaluate') {
- $completions = @('--fn','--ref','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser console') {
- $completions = @('--level','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser pdf') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser responsebody') {
- $completions = @('--target-id','--timeout-ms','--max-chars')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser highlight') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser errors') {
- $completions = @('--clear','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser requests') {
- $completions = @('--filter','--clear','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser trace') {
- $completions = @('start','stop')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser trace start') {
- $completions = @('--target-id','--no-screenshots','--no-snapshots','--sources')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser trace stop') {
- $completions = @('--out','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser cookies') {
- $completions = @('set','clear','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser cookies set') {
- $completions = @('--url','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser cookies clear') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage') {
- $completions = @('local','session')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage local') {
- $completions = @('get','set','clear')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage local get') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage local set') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage local clear') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage session') {
- $completions = @('get','set','clear')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage session get') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage session set') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser storage session clear') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set') {
- $completions = @('viewport','offline','headers','credentials','geo','media','timezone','locale','device')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set viewport') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set offline') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set headers') {
- $completions = @('--headers-json','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set credentials') {
- $completions = @('--clear','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set geo') {
- $completions = @('--clear','--accuracy','--origin','--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set media') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set timezone') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set locale') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw browser set device') {
- $completions = @('--target-id')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw acp') {
- $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') {
+ if ($commandPath -eq 'acp client') {
$completions = @('--cwd','--server','--server-args','--server-verbose','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway') {
- $completions = @('run','status','install','uninstall','start','stop','restart','call','usage-cost','health','probe','discover','--port','--bind','--token','--auth','--password','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path')
+ if ($commandPath -eq 'gateway') {
+ $completions = @('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')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway run') {
- $completions = @('--port','--bind','--token','--auth','--password','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path')
+ if ($commandPath -eq 'gateway run') {
+ $completions = @('--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')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway status') {
- $completions = @('--url','--token','--password','--timeout','--no-probe','--deep','--json')
+ if ($commandPath -eq 'gateway status') {
+ $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway install') {
+ if ($commandPath -eq 'gateway install') {
$completions = @('--port','--runtime','--token','--force','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway uninstall') {
+ if ($commandPath -eq 'gateway uninstall') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway start') {
+ if ($commandPath -eq 'gateway start') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway stop') {
+ if ($commandPath -eq 'gateway stop') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway restart') {
+ if ($commandPath -eq 'gateway restart') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway call') {
+ if ($commandPath -eq 'gateway call') {
$completions = @('--params','--url','--token','--password','--timeout','--expect-final','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway usage-cost') {
+ if ($commandPath -eq 'gateway usage-cost') {
$completions = @('--days','--url','--token','--password','--timeout','--expect-final','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway health') {
+ if ($commandPath -eq 'gateway health') {
$completions = @('--url','--token','--password','--timeout','--expect-final','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway probe') {
+ if ($commandPath -eq 'gateway probe') {
$completions = @('--url','--ssh','--ssh-identity','--ssh-auto','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw gateway discover') {
+ if ($commandPath -eq 'gateway discover') {
$completions = @('--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon') {
+ if ($commandPath -eq 'daemon') {
$completions = @('status','install','uninstall','start','stop','restart')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon status') {
- $completions = @('--url','--token','--password','--timeout','--no-probe','--deep','--json')
+ if ($commandPath -eq 'daemon status') {
+ $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon install') {
+ if ($commandPath -eq 'daemon install') {
$completions = @('--port','--runtime','--token','--force','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon uninstall') {
+ if ($commandPath -eq 'daemon uninstall') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon start') {
+ if ($commandPath -eq 'daemon start') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon stop') {
+ if ($commandPath -eq 'daemon stop') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw daemon restart') {
+ if ($commandPath -eq 'daemon restart') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw logs') {
+ if ($commandPath -eq 'logs') {
$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', $_)
}
}
- if ($commandPath -eq 'openclaw system') {
+ if ($commandPath -eq 'system') {
$completions = @('event','heartbeat','presence')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system event') {
+ if ($commandPath -eq 'system event') {
$completions = @('--text','--mode','--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system heartbeat') {
+ if ($commandPath -eq 'system heartbeat') {
$completions = @('last','enable','disable')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system heartbeat last') {
+ if ($commandPath -eq 'system heartbeat last') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system heartbeat enable') {
+ if ($commandPath -eq 'system heartbeat enable') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system heartbeat disable') {
+ if ($commandPath -eq 'system heartbeat disable') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw system presence') {
+ if ($commandPath -eq 'system presence') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models') {
+ if ($commandPath -eq 'models') {
$completions = @('list','status','set','set-image','aliases','fallbacks','image-fallbacks','scan','auth','--status-json','--status-plain','--agent')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models list') {
+ if ($commandPath -eq 'models list') {
$completions = @('--all','--local','--provider','--json','--plain')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models status') {
+ if ($commandPath -eq 'models status') {
$completions = @('--json','--plain','--check','--probe','--probe-provider','--probe-profile','--probe-timeout','--probe-concurrency','--probe-max-tokens','--agent')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models aliases') {
+ if ($commandPath -eq 'models aliases') {
$completions = @('list','add','remove')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models aliases list') {
+ if ($commandPath -eq 'models aliases list') {
$completions = @('--json','--plain')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models fallbacks') {
+ if ($commandPath -eq 'models fallbacks') {
$completions = @('list','add','remove','clear')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models fallbacks list') {
+ if ($commandPath -eq 'models fallbacks list') {
$completions = @('--json','--plain')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models image-fallbacks') {
+ if ($commandPath -eq 'models image-fallbacks') {
$completions = @('list','add','remove','clear')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models image-fallbacks list') {
+ if ($commandPath -eq 'models image-fallbacks list') {
$completions = @('--json','--plain')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models scan') {
+ if ($commandPath -eq 'models scan') {
$completions = @('--min-params','--max-age-days','--provider','--max-candidates','--timeout','--concurrency','--no-probe','--yes','--no-input','--set-default','--set-image','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth') {
+ if ($commandPath -eq 'models auth') {
$completions = @('add','login','setup-token','paste-token','login-github-copilot','order','--agent')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth login') {
+ if ($commandPath -eq 'models auth login') {
$completions = @('--provider','--method','--set-default')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth setup-token') {
+ if ($commandPath -eq 'models auth setup-token') {
$completions = @('--provider','--yes')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth paste-token') {
+ if ($commandPath -eq 'models auth paste-token') {
$completions = @('--provider','--profile-id','--expires-in')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth login-github-copilot') {
- $completions = @('--profile-id','--yes')
+ if ($commandPath -eq 'models auth login-github-copilot') {
+ $completions = @('--yes')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth order') {
+ if ($commandPath -eq 'models auth order') {
$completions = @('get','set','clear')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth order get') {
+ if ($commandPath -eq 'models auth order get') {
$completions = @('--provider','--agent','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth order set') {
+ if ($commandPath -eq 'models auth order set') {
$completions = @('--provider','--agent')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw models auth order clear') {
+ if ($commandPath -eq 'models auth order clear') {
$completions = @('--provider','--agent')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals') {
+ if ($commandPath -eq 'approvals') {
$completions = @('get','set','allowlist')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals get') {
+ if ($commandPath -eq 'approvals get') {
$completions = @('--node','--gateway','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals set') {
+ if ($commandPath -eq 'approvals set') {
$completions = @('--node','--gateway','--file','--stdin','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals allowlist') {
+ if ($commandPath -eq 'approvals allowlist') {
$completions = @('add','remove')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals allowlist add') {
+ if ($commandPath -eq 'approvals allowlist add') {
$completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw approvals allowlist remove') {
+ if ($commandPath -eq 'approvals allowlist remove') {
$completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes') {
- $completions = @('status','describe','list','pending','approve','reject','rename','invoke','run','notify','push','canvas','camera','screen','location')
+ if ($commandPath -eq 'nodes') {
+ $completions = @('status','describe','list','pending','approve','reject','rename','invoke','notify','push','canvas','camera','screen','location')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes status') {
+ if ($commandPath -eq 'nodes status') {
$completions = @('--connected','--last-connected','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes describe') {
+ if ($commandPath -eq 'nodes describe') {
$completions = @('--node','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes list') {
+ if ($commandPath -eq 'nodes list') {
$completions = @('--connected','--last-connected','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes pending') {
+ if ($commandPath -eq 'nodes pending') {
$completions = @('--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes approve') {
+ if ($commandPath -eq 'nodes approve') {
$completions = @('--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes reject') {
+ if ($commandPath -eq 'nodes reject') {
$completions = @('--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes rename') {
+ if ($commandPath -eq 'nodes rename') {
$completions = @('--node','--name','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes invoke') {
+ if ($commandPath -eq 'nodes invoke') {
$completions = @('--node','--command','--params','--invoke-timeout','--idempotency-key','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes run') {
- $completions = @('--node','--cwd','--env','--raw','--agent','--ask','--security','--command-timeout','--needs-screen-recording','--invoke-timeout','--url','--token','--timeout','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw nodes notify') {
+ if ($commandPath -eq 'nodes notify') {
$completions = @('--node','--title','--body','--sound','--priority','--delivery','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes push') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq 'nodes canvas') {
$completions = @('snapshot','present','hide','navigate','eval','a2ui')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas snapshot') {
+ if ($commandPath -eq 'nodes canvas snapshot') {
$completions = @('--node','--format','--max-width','--quality','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas present') {
+ if ($commandPath -eq 'nodes canvas present') {
$completions = @('--node','--target','--x','--y','--width','--height','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas hide') {
+ if ($commandPath -eq 'nodes canvas hide') {
$completions = @('--node','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas navigate') {
+ if ($commandPath -eq 'nodes canvas navigate') {
$completions = @('--node','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas eval') {
+ if ($commandPath -eq 'nodes canvas eval') {
$completions = @('--js','--node','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas a2ui') {
+ if ($commandPath -eq 'nodes canvas a2ui') {
$completions = @('push','reset')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas a2ui push') {
+ if ($commandPath -eq 'nodes canvas a2ui push') {
$completions = @('--jsonl','--text','--node','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes canvas a2ui reset') {
+ if ($commandPath -eq 'nodes canvas a2ui reset') {
$completions = @('--node','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes camera') {
+ if ($commandPath -eq 'nodes camera') {
$completions = @('list','snap','clip')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes camera list') {
+ if ($commandPath -eq 'nodes camera list') {
$completions = @('--node','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes camera snap') {
+ if ($commandPath -eq 'nodes camera snap') {
$completions = @('--node','--facing','--device-id','--max-width','--quality','--delay-ms','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes camera clip') {
+ if ($commandPath -eq 'nodes camera clip') {
$completions = @('--node','--facing','--device-id','--duration','--no-audio','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes screen') {
+ if ($commandPath -eq 'nodes screen') {
$completions = @('record')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes screen record') {
+ if ($commandPath -eq 'nodes screen record') {
$completions = @('--node','--screen','--duration','--fps','--no-audio','--out','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes location') {
+ if ($commandPath -eq 'nodes location') {
$completions = @('get')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw nodes location get') {
+ if ($commandPath -eq 'nodes location get') {
$completions = @('--node','--max-age','--accuracy','--location-timeout','--invoke-timeout','--url','--token','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw devices') {
+ if ($commandPath -eq 'devices') {
$completions = @('list','remove','clear','approve','reject','rotate','revoke')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw devices list') {
+ if ($commandPath -eq 'devices list') {
$completions = @('--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw devices remove') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq 'devices reject') {
$completions = @('--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw devices rotate') {
+ if ($commandPath -eq 'devices rotate') {
$completions = @('--device','--role','--scope','--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw devices revoke') {
+ if ($commandPath -eq 'devices revoke') {
$completions = @('--device','--role','--url','--token','--password','--timeout','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node') {
+ if ($commandPath -eq 'node') {
$completions = @('run','status','install','uninstall','stop','restart')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node run') {
+ if ($commandPath -eq 'node run') {
$completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node status') {
+ if ($commandPath -eq 'node status') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node install') {
+ if ($commandPath -eq 'node install') {
$completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name','--runtime','--force','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node uninstall') {
+ if ($commandPath -eq 'node uninstall') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node stop') {
+ if ($commandPath -eq 'node stop') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw node restart') {
+ if ($commandPath -eq 'node restart') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw sandbox') {
+ if ($commandPath -eq 'sandbox') {
$completions = @('list','recreate','explain')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw sandbox list') {
+ if ($commandPath -eq 'sandbox list') {
$completions = @('--json','--browser')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw sandbox recreate') {
+ if ($commandPath -eq 'sandbox recreate') {
$completions = @('--all','--session','--agent','--browser','--force')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw sandbox explain') {
+ if ($commandPath -eq 'sandbox explain') {
$completions = @('--session','--agent','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw tui') {
+ if ($commandPath -eq 'tui') {
$completions = @('--url','--token','--password','--session','--deliver','--thinking','--message','--timeout-ms','--history-limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron') {
+ if ($commandPath -eq 'cron') {
$completions = @('status','list','add','rm','enable','disable','runs','run','edit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron status') {
+ if ($commandPath -eq 'cron status') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron list') {
+ if ($commandPath -eq 'cron list') {
$completions = @('--all','--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron add') {
+ if ($commandPath -eq 'cron add') {
$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', $_)
}
}
- if ($commandPath -eq 'openclaw cron rm') {
+ if ($commandPath -eq 'cron rm') {
$completions = @('--json','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron enable') {
+ if ($commandPath -eq 'cron enable') {
$completions = @('--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron disable') {
+ if ($commandPath -eq 'cron disable') {
$completions = @('--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron runs') {
+ if ($commandPath -eq 'cron runs') {
$completions = @('--id','--limit','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron run') {
+ if ($commandPath -eq 'cron run') {
$completions = @('--due','--url','--token','--timeout','--expect-final')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw cron edit') {
+ if ($commandPath -eq 'cron edit') {
$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', $_)
}
}
- if ($commandPath -eq 'openclaw dns') {
+ if ($commandPath -eq 'dns') {
$completions = @('setup')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw dns setup') {
+ if ($commandPath -eq 'dns setup') {
$completions = @('--domain','--apply')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks') {
+ if ($commandPath -eq 'hooks') {
$completions = @('list','info','check','enable','disable','install','update')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks list') {
+ if ($commandPath -eq 'hooks list') {
$completions = @('--eligible','--json','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks info') {
+ if ($commandPath -eq 'hooks info') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks check') {
+ if ($commandPath -eq 'hooks check') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks install') {
+ if ($commandPath -eq 'hooks install') {
$completions = @('-l','--pin')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw hooks update') {
+ if ($commandPath -eq 'hooks update') {
$completions = @('--all','--dry-run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw webhooks') {
+ if ($commandPath -eq 'webhooks') {
$completions = @('gmail')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw webhooks gmail') {
+ if ($commandPath -eq 'webhooks gmail') {
$completions = @('setup','run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw webhooks gmail setup') {
+ if ($commandPath -eq 'webhooks gmail setup') {
$completions = @('--account','--project','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target','--push-endpoint','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw webhooks gmail run') {
+ if ($commandPath -eq 'webhooks gmail run') {
$completions = @('--account','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw qr') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq 'clawbot') {
$completions = @('qr')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw clawbot qr') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq 'browser') {
+ $completions = @('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')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser tab') {
+ $completions = @('new','select','close')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser create-profile') {
+ $completions = @('--name','--color','--cdp-url','--user-data-dir','--driver')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser delete-profile') {
+ $completions = @('--name')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser screenshot') {
+ $completions = @('--full-page','--ref','--element','--type')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser snapshot') {
+ $completions = @('--format','--target-id','--limit','--mode','--efficient','--interactive','--compact','--depth','--selector','--frame','--labels','--out')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser navigate') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser resize') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser click') {
+ $completions = @('--target-id','--double','--button','--modifiers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser type') {
+ $completions = @('--submit','--slowly','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser press') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser hover') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser scrollintoview') {
+ $completions = @('--target-id','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser drag') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser select') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser upload') {
+ $completions = @('--ref','--input-ref','--element','--target-id','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser waitfordownload') {
+ $completions = @('--target-id','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser download') {
+ $completions = @('--target-id','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser dialog') {
+ $completions = @('--accept','--dismiss','--prompt','--target-id','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser fill') {
+ $completions = @('--fields','--fields-file','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser wait') {
+ $completions = @('--time','--text','--text-gone','--url','--load','--fn','--timeout-ms','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser evaluate') {
+ $completions = @('--fn','--ref','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser console') {
+ $completions = @('--level','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser pdf') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser responsebody') {
+ $completions = @('--target-id','--timeout-ms','--max-chars')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser highlight') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser errors') {
+ $completions = @('--clear','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser requests') {
+ $completions = @('--filter','--clear','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser trace') {
+ $completions = @('start','stop')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser trace start') {
+ $completions = @('--target-id','--no-screenshots','--no-snapshots','--sources')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser trace stop') {
+ $completions = @('--out','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser cookies') {
+ $completions = @('set','clear','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser cookies set') {
+ $completions = @('--url','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser cookies clear') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage') {
+ $completions = @('local','session')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage local') {
+ $completions = @('get','set','clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage local get') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage local set') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage local clear') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage session') {
+ $completions = @('get','set','clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage session get') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage session set') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser storage session clear') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set') {
+ $completions = @('viewport','offline','headers','credentials','geo','media','timezone','locale','device')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set viewport') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set offline') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set headers') {
+ $completions = @('--headers-json','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set credentials') {
+ $completions = @('--clear','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set geo') {
+ $completions = @('--clear','--accuracy','--origin','--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set media') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set timezone') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set locale') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'browser set device') {
+ $completions = @('--target-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'memory') {
+ $completions = @('status','index','search')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'memory status') {
+ $completions = @('--agent','--json','--deep','--index','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'memory index') {
+ $completions = @('--agent','--force','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'memory search') {
+ $completions = @('--query','--agent','--max-results','--min-score','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'pairing') {
$completions = @('list','approve')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw pairing list') {
+ if ($commandPath -eq 'pairing list') {
$completions = @('--channel','--account','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw pairing approve') {
+ if ($commandPath -eq 'pairing approve') {
$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','uninstall','install','update','doctor')
+ if ($commandPath -eq 'plugins') {
+ $completions = @('list','inspect','enable','disable','uninstall','install','update','doctor','marketplace')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw plugins list') {
+ if ($commandPath -eq 'plugins list') {
$completions = @('--json','--enabled','--verbose')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw plugins info') {
- $completions = @('--json')
+ if ($commandPath -eq 'plugins inspect') {
+ $completions = @('--all','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw plugins uninstall') {
+ if ($commandPath -eq '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','--pin')
+ if ($commandPath -eq 'plugins install') {
+ $completions = @('-l','--pin','--dangerously-force-unsafe-install','--marketplace')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw plugins update') {
+ if ($commandPath -eq 'plugins update') {
$completions = @('--all','--dry-run')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw channels') {
- $completions = @('list','status','capabilities','resolve','logs','add','remove','login','logout')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels list') {
- $completions = @('--no-usage','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels status') {
- $completions = @('--probe','--timeout','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels capabilities') {
- $completions = @('--channel','--account','--target','--timeout','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels resolve') {
- $completions = @('--channel','--account','--kind','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels logs') {
- $completions = @('--channel','--lines','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels add') {
- $completions = @('--channel','--account','--name','--token','--token-file','--bot-token','--app-token','--signal-number','--cli-path','--db-path','--service','--region','--auth-dir','--http-url','--http-host','--http-port','--webhook-path','--webhook-url','--audience-type','--audience','--homeserver','--user-id','--access-token','--password','--device-name','--initial-sync-limit','--ship','--url','--code','--group-channels','--dm-allowlist','--auto-discover-channels','--no-auto-discover-channels','--use-env')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels remove') {
- $completions = @('--channel','--account','--delete')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels login') {
- $completions = @('--channel','--account','--verbose')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw channels logout') {
- $completions = @('--channel','--account')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw directory') {
- $completions = @('self','peers','groups')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw directory self') {
- $completions = @('--channel','--account','--json')
- $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
- [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
- }
- }
-
- if ($commandPath -eq 'openclaw directory peers') {
+ if ($commandPath -eq 'plugins marketplace') {
$completions = @('list')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw directory peers list') {
+ if ($commandPath -eq 'plugins marketplace list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels') {
+ $completions = @('list','status','capabilities','resolve','logs','add','remove','login','logout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels list') {
+ $completions = @('--no-usage','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels status') {
+ $completions = @('--probe','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels capabilities') {
+ $completions = @('--channel','--account','--target','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels resolve') {
+ $completions = @('--channel','--account','--kind','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels logs') {
+ $completions = @('--channel','--lines','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels add') {
+ $completions = @('--channel','--account','--name','--token','--private-key','--token-file','--bot-token','--app-token','--signal-number','--cli-path','--db-path','--service','--region','--auth-dir','--http-url','--http-host','--http-port','--webhook-path','--webhook-url','--audience-type','--audience','--homeserver','--user-id','--access-token','--password','--device-name','--initial-sync-limit','--ship','--url','--relay-urls','--code','--group-channels','--dm-allowlist','--auto-discover-channels','--no-auto-discover-channels','--use-env')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels remove') {
+ $completions = @('--channel','--account','--delete')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels login') {
+ $completions = @('--channel','--account','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels logout') {
+ $completions = @('--channel','--account')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory') {
+ $completions = @('self','peers','groups')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory self') {
+ $completions = @('--channel','--account','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory peers') {
+ $completions = @('list')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory peers list') {
$completions = @('--channel','--account','--json','--query','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw directory groups') {
+ if ($commandPath -eq 'directory groups') {
$completions = @('list','members')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw directory groups list') {
+ if ($commandPath -eq 'directory groups list') {
$completions = @('--channel','--account','--json','--query','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw directory groups members') {
+ if ($commandPath -eq 'directory groups members') {
$completions = @('--group-id','--channel','--account','--json','--limit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw security') {
+ if ($commandPath -eq 'security') {
$completions = @('audit')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw security audit') {
- $completions = @('--deep','--fix','--json')
+ if ($commandPath -eq 'security audit') {
+ $completions = @('--deep','--token','--password','--fix','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw secrets') {
+ if ($commandPath -eq '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') {
+ if ($commandPath -eq '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')
+ if ($commandPath -eq 'secrets audit') {
+ $completions = @('--check','--allow-exec','--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')
+ if ($commandPath -eq 'secrets configure') {
+ $completions = @('--apply','--yes','--providers-only','--skip-provider-setup','--agent','--allow-exec','--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')
+ if ($commandPath -eq 'secrets apply') {
+ $completions = @('--from','--dry-run','--allow-exec','--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw skills') {
- $completions = @('list','info','check')
+ if ($commandPath -eq 'skills') {
+ $completions = @('search','install','update','list','info','check')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw skills list') {
+ if ($commandPath -eq 'skills search') {
+ $completions = @('--limit','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills install') {
+ $completions = @('--version','--force')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills update') {
+ $completions = @('--all')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills list') {
$completions = @('--json','--eligible','-v')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw skills info') {
+ if ($commandPath -eq 'skills info') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw skills check') {
+ if ($commandPath -eq 'skills check') {
$completions = @('--json')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw update') {
+ if ($commandPath -eq 'update') {
$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', $_)
}
}
- if ($commandPath -eq 'openclaw update wizard') {
+ if ($commandPath -eq 'update wizard') {
$completions = @('--timeout')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
}
}
- if ($commandPath -eq 'openclaw update status') {
+ if ($commandPath -eq 'update status') {
$completions = @('--json','--timeout')
$completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
diff --git a/completions/openclaw.zsh b/completions/openclaw.zsh
index 208ccd1..747df2c 100644
--- a/completions/openclaw.zsh
+++ b/completions/openclaw.zsh
@@ -7,33 +7,35 @@ _openclaw_root_completion() {
_arguments -C \
"(--version -V)"{--version,-V}"[output the version number]" \
+ "--container[Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)]" \
"--dev[Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)]" \
"--profile[Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)]" \
"--log-level[Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)]" \
"--no-color[Disable ANSI colors]" \
- "1: :_values 'command' 'completion[Generate shell completion script]' 'setup[Initialize ~/.openclaw/openclaw.json and the agent workspace]' 'onboard[Interactive wizard to set up the gateway, workspace, and skills]' 'configure[Interactive setup wizard for credentials, channels, gateway, and agent defaults]' 'config[Non-interactive config helpers (get/set/unset/file/validate). Run without subcommand for the setup wizard.]' 'doctor[Health checks + quick fixes for the gateway and channels]' 'dashboard[Open the Control UI with your current token]' 'reset[Reset local config/state (keeps the CLI installed)]' 'uninstall[Uninstall the gateway service + local data (CLI remains)]' 'message[Send, read, and manage messages and channel actions]' 'memory[Search, inspect, and reindex memory files]' 'agent[Run an agent turn via the Gateway (use --local for embedded)]' 'agents[Manage isolated agents (workspaces + auth + routing)]' 'status[Show channel health and recent session recipients]' 'health[Fetch health from the running gateway]' 'sessions[List stored conversation sessions]' 'browser[Manage OpenClaw'\''s dedicated browser (Chrome/Chromium)]' 'acp[Run an ACP bridge backed by the Gateway]' 'gateway[Run, inspect, and query the WebSocket Gateway]' 'daemon[Manage the Gateway service (launchd/systemd/schtasks)]' 'logs[Tail gateway file logs via RPC]' 'system[System tools (events, heartbeat, presence)]' 'models[Model discovery, scanning, and configuration]' 'approvals[Manage exec approvals (gateway or node host)]' 'nodes[Manage gateway-owned nodes (pairing, status, invoke, and media)]' 'devices[Device pairing and auth tokens]' 'node[Run and manage the headless node host service]' 'sandbox[Manage sandbox containers (Docker-based agent isolation)]' 'tui[Open a terminal UI connected to the Gateway]' 'cron[Manage cron jobs (via Gateway)]' 'dns[DNS helpers for wide-area discovery (Tailscale + CoreDNS)]' 'docs[Search the live OpenClaw docs]' 'hooks[Manage internal agent hooks]' 'webhooks[Webhook helpers and integrations]' 'qr[Generate an iOS pairing QR code and setup code]' 'clawbot[Legacy clawbot command aliases]' 'pairing[Secure DM pairing (approve inbound requests)]' 'plugins[Manage OpenClaw plugins and extensions]' 'channels[Manage connected chat channels and accounts]' 'directory[Lookup contact and group IDs (self, peers, groups) for supported chat channels]' 'security[Audit local config and state for common security foot-guns]' 'secrets[Secrets runtime controls]' 'skills[List and inspect available skills]' 'update[Update OpenClaw and inspect update channel status]'" \
+ "1: :_values 'command' 'mcp[Manage OpenClaw MCP config and channel bridge]' 'completion[Generate shell completion script]' 'setup[Initialize the active OpenClaw config and agent workspace]' 'onboard[Interactive onboarding for the gateway, workspace, and skills]' 'configure[Interactive configuration for credentials, channels, gateway, and agent defaults]' 'config[Non-interactive config helpers (get/set/unset/file/schema/validate). Run without subcommand for guided setup.]' 'backup[Create and verify local backup archives for OpenClaw state]' 'doctor[Health checks + quick fixes for the gateway and channels]' 'dashboard[Open the Control UI with your current token]' 'reset[Reset local config/state (keeps the CLI installed)]' 'uninstall[Uninstall the gateway service + local data (CLI remains)]' 'message[Send, read, and manage messages and channel actions]' 'agent[Run an agent turn via the Gateway (use --local for embedded)]' 'agents[Manage isolated agents (workspaces + auth + routing)]' 'status[Show channel health and recent session recipients]' 'health[Fetch health from the running gateway]' 'sessions[List stored conversation sessions]' 'tasks[Inspect durable background task state]' 'acp[Run an ACP bridge backed by the Gateway]' 'gateway[Run, inspect, and query the WebSocket Gateway]' 'daemon[Manage the Gateway service (launchd/systemd/schtasks)]' 'logs[Tail gateway file logs via RPC]' 'system[System tools (events, heartbeat, presence)]' 'models[Model discovery, scanning, and configuration]' 'approvals[Manage exec approvals (gateway or node host)]' 'nodes[Manage gateway-owned nodes (pairing, status, invoke, and media)]' 'devices[Device pairing and auth tokens]' 'node[Run and manage the headless node host service]' 'sandbox[Manage sandbox containers (Docker-based agent isolation)]' 'tui[Open a terminal UI connected to the Gateway]' 'cron[Manage cron jobs (via Gateway)]' 'dns[DNS helpers for wide-area discovery (Tailscale + CoreDNS)]' 'docs[Search the live OpenClaw docs]' 'hooks[Manage internal agent hooks]' 'webhooks[Webhook helpers and integrations]' 'qr[Generate an iOS pairing QR code and setup code]' 'clawbot[Legacy clawbot command aliases]' 'browser[Manage OpenClaw'\''s dedicated browser (Chrome/Chromium)]' 'memory[Search, inspect, and reindex memory files]' 'pairing[Secure DM pairing (approve inbound requests)]' 'plugins[Manage OpenClaw plugins and extensions]' 'channels[Manage connected chat channels and accounts]' 'directory[Lookup contact and group IDs (self, peers, groups) for supported chat channels]' 'security[Audit local config and state for common security foot-guns]' 'secrets[Secrets runtime controls]' 'skills[List and inspect available skills]' 'update[Update OpenClaw and inspect update channel status]'" \
"*::arg:->args"
case $state in
(args)
case $line[1] in
+ (mcp) _openclaw_mcp ;;
(completion) _openclaw_completion ;;
(setup) _openclaw_setup ;;
(onboard) _openclaw_onboard ;;
(configure) _openclaw_configure ;;
(config) _openclaw_config ;;
+ (backup) _openclaw_backup ;;
(doctor) _openclaw_doctor ;;
(dashboard) _openclaw_dashboard ;;
(reset) _openclaw_reset ;;
(uninstall) _openclaw_uninstall ;;
(message) _openclaw_message ;;
- (memory) _openclaw_memory ;;
(agent) _openclaw_agent ;;
(agents) _openclaw_agents ;;
(status) _openclaw_status ;;
(health) _openclaw_health ;;
(sessions) _openclaw_sessions ;;
- (browser) _openclaw_browser ;;
+ (tasks) _openclaw_tasks ;;
(acp) _openclaw_acp ;;
(gateway) _openclaw_gateway ;;
(daemon) _openclaw_daemon ;;
@@ -53,6 +55,8 @@ _openclaw_root_completion() {
(webhooks) _openclaw_webhooks ;;
(qr) _openclaw_qr ;;
(clawbot) _openclaw_clawbot ;;
+ (browser) _openclaw_browser ;;
+ (memory) _openclaw_memory ;;
(pairing) _openclaw_pairing ;;
(plugins) _openclaw_plugins ;;
(channels) _openclaw_channels ;;
@@ -67,6 +71,11 @@ _openclaw_root_completion() {
}
+_openclaw_mcp() {
+ _arguments -C \
+
+}
+
_openclaw_completion() {
_arguments -C \
"(--shell -s)"{--shell,-s}"[Shell to generate completion for (default: zsh)]" \
@@ -78,9 +87,9 @@ _openclaw_completion() {
_openclaw_setup() {
_arguments -C \
"--workspace[Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)]" \
- "--wizard[Run the interactive onboarding wizard]" \
- "--non-interactive[Run the wizard without prompts]" \
- "--mode[Wizard mode: local|remote]" \
+ "--wizard[Run interactive onboarding]" \
+ "--non-interactive[Run onboarding without prompts]" \
+ "--mode[Onboard mode: local|remote]" \
"--remote-url[Remote Gateway WebSocket URL]" \
"--remote-token[Remote Gateway token (optional)]"
}
@@ -88,13 +97,13 @@ _openclaw_setup() {
_openclaw_onboard() {
_arguments -C \
"--workspace[Agent workspace directory (default: ~/.openclaw/workspace)]" \
- "--reset[Reset config + credentials + sessions before running wizard (workspace only with --reset-scope full)]" \
+ "--reset[Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)]" \
"--reset-scope[Reset scope: config|config+creds+sessions|full]" \
"--non-interactive[Run without prompts]" \
"--accept-risk[Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)]" \
- "--flow[Wizard flow: quickstart|advanced|manual]" \
- "--mode[Wizard mode: local|remote]" \
- "--auth-choice[Auth: token|openai-codex|chutes|vllm|apiKey|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|synthetic-api-key|venice-api-key|together-api-key|huggingface-api-key|opencode-zen|xai-api-key|litellm-api-key|qianfan-api-key|volcengine-api-key|byteplus-api-key|moonshot-api-key-cn|github-copilot|gemini-api-key|google-gemini-cli|zai-api-key|zai-coding-global|zai-coding-cn|zai-global|zai-cn|xiaomi-api-key|minimax-portal|qwen-portal|copilot-proxy|apiKey|opencode-zen|minimax-api|minimax-api-key-cn|minimax-api-lightning|custom-api-key|skip|setup-token|oauth|claude-cli|codex-cli|minimax-cloud|minimax]" \
+ "--flow[Onboard flow: quickstart|advanced|manual]" \
+ "--mode[Onboard mode: local|remote]" \
+ "--auth-choice[Auth: custom-api-key|skip|setup-token|oauth|claude-cli|codex-cli|anthropic-cli|token|apiKey|byteplus-api-key|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|copilot-proxy|deepseek-api-key|github-copilot|gemini-api-key|google-gemini-cli|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|microsoft-foundry-entra|microsoft-foundry-apikey|minimax-global-oauth|minimax-global-api|minimax-cn-oauth|minimax-cn-api|mistral-api-key|modelstudio-standard-api-key-cn|modelstudio-standard-api-key|modelstudio-api-key-cn|modelstudio-api-key|moonshot-api-key|moonshot-api-key-cn|ollama|openai-codex|openai-api-key|opencode-zen|opencode-go|openrouter-api-key|qianfan-api-key|sglang|synthetic-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xiaomi-api-key|zai-api-key|zai-coding-global|zai-coding-cn|zai-global|zai-cn]" \
"--token-provider[Token provider id (non-interactive; used with --auth-choice token)]" \
"--token[Token value (non-interactive; used with --auth-choice token)]" \
"--token-profile-id[Auth profile id (non-interactive; default: :manual)]" \
@@ -103,28 +112,36 @@ _openclaw_onboard() {
"--cloudflare-ai-gateway-account-id[Cloudflare Account ID]" \
"--cloudflare-ai-gateway-gateway-id[Cloudflare AI Gateway ID]" \
"--anthropic-api-key[Anthropic API key]" \
- "--openai-api-key[OpenAI API key]" \
- "--mistral-api-key[Mistral API key]" \
- "--openrouter-api-key[OpenRouter API key]" \
- "--kilocode-api-key[Kilo Gateway API key]" \
- "--ai-gateway-api-key[Vercel AI Gateway API key]" \
- "--cloudflare-ai-gateway-api-key[Cloudflare AI Gateway API key]" \
- "--moonshot-api-key[Moonshot API key]" \
- "--kimi-code-api-key[Kimi Coding API key]" \
- "--gemini-api-key[Gemini API key]" \
- "--zai-api-key[Z.AI API key]" \
- "--xiaomi-api-key[Xiaomi API key]" \
- "--minimax-api-key[MiniMax API key]" \
- "--synthetic-api-key[Synthetic API key]" \
- "--venice-api-key[Venice API key]" \
- "--together-api-key[Together AI API key]" \
- "--huggingface-api-key[Hugging Face API key (HF token)]" \
- "--opencode-zen-api-key[OpenCode Zen API key]" \
- "--xai-api-key[xAI API key]" \
- "--litellm-api-key[LiteLLM API key]" \
- "--qianfan-api-key[QIANFAN API key]" \
- "--volcengine-api-key[Volcano Engine API key]" \
"--byteplus-api-key[BytePlus API key]" \
+ "--chutes-api-key[Chutes API key]" \
+ "--cloudflare-ai-gateway-api-key[Cloudflare AI Gateway API key]" \
+ "--deepseek-api-key[DeepSeek API key]" \
+ "--fal-api-key[fal API key]" \
+ "--gemini-api-key[Gemini API key]" \
+ "--huggingface-api-key[Hugging Face API key (HF token)]" \
+ "--kilocode-api-key[Kilo Gateway API key]" \
+ "--kimi-code-api-key[Kimi Code API key (subscription)]" \
+ "--litellm-api-key[LiteLLM API key]" \
+ "--minimax-api-key[MiniMax API key]" \
+ "--mistral-api-key[Mistral API key]" \
+ "--modelstudio-standard-api-key-cn[Alibaba Cloud Model Studio Standard API key (China)]" \
+ "--modelstudio-standard-api-key[Alibaba Cloud Model Studio Standard API key (Global/Intl)]" \
+ "--modelstudio-api-key-cn[Alibaba Cloud Model Studio Coding Plan API key (China)]" \
+ "--modelstudio-api-key[Alibaba Cloud Model Studio Coding Plan API key (Global/Intl)]" \
+ "--moonshot-api-key[Moonshot API key]" \
+ "--openai-api-key[OpenAI API key]" \
+ "--opencode-zen-api-key[OpenCode API key (Zen catalog)]" \
+ "--opencode-go-api-key[OpenCode API key (Go catalog)]" \
+ "--openrouter-api-key[OpenRouter API key]" \
+ "--qianfan-api-key[QIANFAN API key]" \
+ "--synthetic-api-key[Synthetic API key]" \
+ "--together-api-key[Together AI API key]" \
+ "--venice-api-key[Venice API key]" \
+ "--ai-gateway-api-key[Vercel AI Gateway API key]" \
+ "--volcengine-api-key[Volcano Engine API key]" \
+ "--xai-api-key[xAI API key]" \
+ "--xiaomi-api-key[Xiaomi API key]" \
+ "--zai-api-key[Z.AI API key]" \
"--custom-base-url[Custom provider base URL]" \
"--custom-api-key[Custom provider API key (optional)]" \
"--custom-model-id[Custom provider model ID]" \
@@ -134,6 +151,7 @@ _openclaw_onboard() {
"--gateway-bind[Gateway bind: loopback|tailnet|lan|auto|custom]" \
"--gateway-auth[Gateway auth: token|password]" \
"--gateway-token[Gateway token (token auth)]" \
+ "--gateway-token-ref-env[Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)]" \
"--gateway-password[Gateway password (password auth)]" \
"--remote-url[Remote Gateway WebSocket URL]" \
"--remote-token[Remote Gateway token (optional)]" \
@@ -145,6 +163,7 @@ _openclaw_onboard() {
"--daemon-runtime[Daemon runtime: node|bun]" \
"--skip-channels[Skip channel setup]" \
"--skip-skills[Skip skills setup]" \
+ "--skip-search[Skip search provider setup]" \
"--skip-health[Skip health check]" \
"--skip-ui[Skip Control UI/TUI prompts]" \
"--node-manager[Node manager for skills: npm|pnpm|bun]" \
@@ -163,8 +182,31 @@ _openclaw_config_get() {
_openclaw_config_set() {
_arguments -C \
- "--strict-json[Strict JSON5 parsing (error instead of raw string fallback)]" \
- "--json[Legacy alias for --strict-json]"
+ "--strict-json[Strict JSON parsing (error instead of raw string fallback)]" \
+ "--json[Legacy alias for --strict-json]" \
+ "--dry-run[Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)]" \
+ "--allow-exec[Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)]" \
+ "--ref-provider[SecretRef builder: provider alias]" \
+ "--ref-source[SecretRef builder: source (env|file|exec)]" \
+ "--ref-id[SecretRef builder: ref id]" \
+ "--provider-source[Provider builder: source (env|file|exec)]" \
+ "--provider-allowlist[Provider builder (env): allowlist entry (repeatable)]" \
+ "--provider-path[Provider builder (file): path]" \
+ "--provider-mode[Provider builder (file): mode (singleValue|json)]" \
+ "--provider-timeout-ms[Provider builder (file|exec): timeout ms]" \
+ "--provider-max-bytes[Provider builder (file): max bytes]" \
+ "--provider-command[Provider builder (exec): absolute command path]" \
+ "--provider-arg[Provider builder (exec): command arg (repeatable)]" \
+ "--provider-no-output-timeout-ms[Provider builder (exec): no-output timeout ms]" \
+ "--provider-max-output-bytes[Provider builder (exec): max output bytes]" \
+ "--provider-json-only[Provider builder (exec): require JSON output]" \
+ "--provider-env[Provider builder (exec): env assignment (repeatable)]" \
+ "--provider-pass-env[Provider builder (exec): pass host env var (repeatable)]" \
+ "--provider-trusted-dir[Provider builder (exec): trusted directory (repeatable)]" \
+ "--provider-allow-insecure-path[Provider builder (exec): bypass strict path permission checks]" \
+ "--provider-allow-symlink-command[Provider builder (exec): allow command symlink path]" \
+ "--batch-json[Batch mode: JSON array of set operations]" \
+ "--batch-file[Batch mode: read JSON array of set operations from file]"
}
_openclaw_config_unset() {
@@ -177,6 +219,11 @@ _openclaw_config_file() {
}
+_openclaw_config_schema() {
+ _arguments -C \
+
+}
+
_openclaw_config_validate() {
_arguments -C \
"--json[Output validation result as JSON]"
@@ -187,8 +234,13 @@ _openclaw_config() {
local -a options
_arguments -C \
- "--section[Configure wizard sections (repeatable). Use with no subcommand.]" \
- "1: :_values 'command' 'get[Get a config value by dot path]' 'set[Set a config value by dot path]' 'unset[Remove a config value by dot path]' 'file[Print the active config file path]' 'validate[Validate the current config against the schema without starting the gateway]'" \
+ "--section[Configuration sections for guided setup (repeatable). Use with no subcommand.]" \
+ "1: :_values 'command' 'get[Get a config value by dot path]' 'set[Set config values by path (value mode, ref/provider builder mode, or batch JSON mode).
+Examples:
+openclaw config set gateway.port 19001 --strict-json
+openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
+openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json
+openclaw config set --batch-file ./config-set.batch.json --dry-run]' 'unset[Remove a config value by dot path]' 'file[Print the active config file path]' 'schema[Print the JSON schema for openclaw.json]' 'validate[Validate the current config against the schema without starting the gateway]'" \
"*::arg:->args"
case $state in
@@ -198,12 +250,47 @@ _openclaw_config() {
(set) _openclaw_config_set ;;
(unset) _openclaw_config_unset ;;
(file) _openclaw_config_file ;;
+ (schema) _openclaw_config_schema ;;
(validate) _openclaw_config_validate ;;
esac
;;
esac
}
+_openclaw_backup_create() {
+ _arguments -C \
+ "--output[Archive path or destination directory]" \
+ "--json[Output JSON]" \
+ "--dry-run[Print the backup plan without writing the archive]" \
+ "--verify[Verify the archive after writing it]" \
+ "--only-config[Back up only the active JSON config file]" \
+ "--no-include-workspace[Exclude workspace directories from the backup]"
+}
+
+_openclaw_backup_verify() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_backup() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'create[Write a backup archive for config, credentials, sessions, and workspaces]' 'verify[Validate a backup archive and its embedded manifest]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (create) _openclaw_backup_create ;;
+ (verify) _openclaw_backup_verify ;;
+ esac
+ ;;
+ esac
+}
+
_openclaw_doctor() {
_arguments -C \
"--no-workspace-suggestions[Disable workspace memory system suggestions]" \
@@ -246,14 +333,16 @@ _openclaw_message_send() {
"(--message -m)"{--message,-m}"[Message body (required unless --media is set)]" \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
"--media[Attach media (image/audio/video/document). Accepts local paths or URLs.]" \
+ "--interactive[Shared interactive payload as JSON (buttons/selects rendered natively by supported channels)]" \
"--buttons[Telegram inline keyboard buttons as JSON (array of button rows)]" \
"--components[Discord components payload as JSON]" \
"--card[Adaptive Card JSON object (when supported by the channel)]" \
"--reply-to[Reply-to message id]" \
"--thread-id[Thread id (Telegram forum thread)]" \
"--gif-playback[Treat video media as GIF playback (WhatsApp only).]" \
+ "--force-document[Send media as document to avoid Telegram compression (Telegram only). Applies to images and GIFs.]" \
"--silent[Send message silently without notification (Telegram + Discord)]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -262,7 +351,7 @@ _openclaw_message_send() {
_openclaw_message_broadcast() {
_arguments -C \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -275,7 +364,7 @@ _openclaw_message_broadcast() {
_openclaw_message_poll() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -295,7 +384,7 @@ _openclaw_message_poll() {
_openclaw_message_react() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -312,7 +401,7 @@ _openclaw_message_react() {
_openclaw_message_reactions() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -324,7 +413,7 @@ _openclaw_message_reactions() {
_openclaw_message_read() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -341,7 +430,7 @@ _openclaw_message_edit() {
"--message-id[Message id]" \
"(--message -m)"{--message,-m}"[Message body]" \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -353,7 +442,7 @@ _openclaw_message_delete() {
_arguments -C \
"--message-id[Message id]" \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -363,7 +452,7 @@ _openclaw_message_delete() {
_openclaw_message_pin() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -374,7 +463,7 @@ _openclaw_message_pin() {
_openclaw_message_unpin() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -385,7 +474,7 @@ _openclaw_message_unpin() {
_openclaw_message_pins() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -396,7 +485,7 @@ _openclaw_message_pins() {
_openclaw_message_permissions() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -405,7 +494,7 @@ _openclaw_message_permissions() {
_openclaw_message_search() {
_arguments -C \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -423,7 +512,7 @@ _openclaw_message_thread_create() {
_arguments -C \
"--thread-name[Thread name]" \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -436,7 +525,7 @@ _openclaw_message_thread_create() {
_openclaw_message_thread_list() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -451,7 +540,7 @@ _openclaw_message_thread_reply() {
_arguments -C \
"(--message -m)"{--message,-m}"[Message body]" \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -482,7 +571,7 @@ _openclaw_message_thread() {
_openclaw_message_emoji_list() {
_arguments -C \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -493,7 +582,7 @@ _openclaw_message_emoji_list() {
_openclaw_message_emoji_upload() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -525,7 +614,7 @@ _openclaw_message_emoji() {
_openclaw_message_sticker_send() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -537,7 +626,7 @@ _openclaw_message_sticker_send() {
_openclaw_message_sticker_upload() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -570,7 +659,7 @@ _openclaw_message_sticker() {
_openclaw_message_role_info() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -582,7 +671,7 @@ _openclaw_message_role_add() {
"--guild-id[Guild id]" \
"--user-id[User id]" \
"--role-id[Role id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -594,7 +683,7 @@ _openclaw_message_role_remove() {
"--guild-id[Guild id]" \
"--user-id[User id]" \
"--role-id[Role id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -624,7 +713,7 @@ _openclaw_message_role() {
_openclaw_message_channel_info() {
_arguments -C \
"(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack channel/user, or iMessage handle/chat_id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -634,7 +723,7 @@ _openclaw_message_channel_info() {
_openclaw_message_channel_list() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -663,7 +752,7 @@ _openclaw_message_channel() {
_openclaw_message_member_info() {
_arguments -C \
"--user-id[User id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -693,7 +782,7 @@ _openclaw_message_voice_status() {
_arguments -C \
"--guild-id[Guild id]" \
"--user-id[User id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -721,7 +810,7 @@ _openclaw_message_voice() {
_openclaw_message_event_list() {
_arguments -C \
"--guild-id[Guild id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -733,7 +822,7 @@ _openclaw_message_event_create() {
"--guild-id[Guild id]" \
"--event-name[Event name]" \
"--start-time[Event start time]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -768,7 +857,7 @@ _openclaw_message_timeout() {
_arguments -C \
"--guild-id[Guild id]" \
"--user-id[User id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -782,7 +871,7 @@ _openclaw_message_kick() {
_arguments -C \
"--guild-id[Guild id]" \
"--user-id[User id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -794,7 +883,7 @@ _openclaw_message_ban() {
_arguments -C \
"--guild-id[Guild id]" \
"--user-id[User id]" \
- "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line]" \
"--account[Channel account id (accountId)]" \
"--json[Output result as JSON]" \
"--dry-run[Print payload and skip sending]" \
@@ -844,60 +933,15 @@ _openclaw_message() {
esac
}
-_openclaw_memory_status() {
- _arguments -C \
- "--agent[Agent id (default: default agent)]" \
- "--json[Print JSON]" \
- "--deep[Probe embedding provider availability]" \
- "--index[Reindex if dirty (implies --deep)]" \
- "--verbose[Verbose logging]"
-}
-
-_openclaw_memory_index() {
- _arguments -C \
- "--agent[Agent id (default: default agent)]" \
- "--force[Force full reindex]" \
- "--verbose[Verbose logging]"
-}
-
-_openclaw_memory_search() {
- _arguments -C \
- "--query[Search query (alternative to positional argument)]" \
- "--agent[Agent id (default: default agent)]" \
- "--max-results[Max results]" \
- "--min-score[Minimum score]" \
- "--json[Print JSON]"
-}
-
-_openclaw_memory() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'status[Show memory search index status]' 'index[Reindex memory files]' 'search[Search memory files]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (status) _openclaw_memory_status ;;
- (index) _openclaw_memory_index ;;
- (search) _openclaw_memory_search ;;
- esac
- ;;
- esac
-}
-
_openclaw_agent() {
_arguments -C \
"(--message -m)"{--message,-m}"[Message body for the agent]" \
"(--to -t)"{--to,-t}"[Recipient number in E.164 used to derive the session key]" \
"--session-id[Use an explicit session id]" \
"--agent[Agent id (overrides routing bindings)]" \
- "--thinking[Thinking level: off | minimal | low | medium | high]" \
+ "--thinking[Thinking level: off | minimal | low | medium | high | xhigh]" \
"--verbose[Persist agent verbose level for the session]" \
- "--channel[Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon (omit to use the main session channel)]" \
+ "--channel[Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line (omit to use the main session channel)]" \
"--reply-to[Delivery target override (separate from session routing)]" \
"--reply-channel[Delivery channel override (separate from routing)]" \
"--reply-account[Delivery account id override]" \
@@ -1041,6 +1085,1789 @@ _openclaw_sessions() {
esac
}
+_openclaw_tasks_list() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--runtime[Filter by kind (subagent, acp, cron, cli)]" \
+ "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]"
+}
+
+_openclaw_tasks_audit() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--severity[Filter by severity (warn, error)]" \
+ "--code[Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps)]" \
+ "--limit[Limit displayed findings]"
+}
+
+_openclaw_tasks_maintenance() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--apply[Apply reconciliation, cleanup stamping, and pruning]"
+}
+
+_openclaw_tasks_show() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_tasks_notify() {
+ _arguments -C \
+
+}
+
+_openclaw_tasks_cancel() {
+ _arguments -C \
+
+}
+
+_openclaw_tasks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--runtime[Filter by kind (subagent, acp, cron, cli)]" \
+ "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]" \
+ "1: :_values 'command' 'list[List tracked background tasks]' 'audit[Show stale or broken background task runs]' 'maintenance[Preview or apply task ledger maintenance]' 'show[Show one background task by task id, run id, or session key]' 'notify[Set task notify policy]' 'cancel[Cancel a running background task]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_tasks_list ;;
+ (audit) _openclaw_tasks_audit ;;
+ (maintenance) _openclaw_tasks_maintenance ;;
+ (show) _openclaw_tasks_show ;;
+ (notify) _openclaw_tasks_notify ;;
+ (cancel) _openclaw_tasks_cancel ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_acp_client() {
+ _arguments -C \
+ "--cwd[Working directory for the ACP session]" \
+ "--server[ACP server command (default: openclaw)]" \
+ "--server-args[Extra arguments for the ACP server]" \
+ "--server-verbose[Enable verbose logging on the ACP server]" \
+ "(--verbose -v)"{--verbose,-v}"[Verbose client logging]"
+}
+
+_openclaw_acp() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--token-file[Read gateway token from file]" \
+ "--password[Gateway password (if required)]" \
+ "--password-file[Read gateway password from file]" \
+ "--session[Default session key (e.g. agent:main:main)]" \
+ "--session-label[Default session label to resolve]" \
+ "--require-existing[Fail if the session key/label does not exist]" \
+ "--reset-session[Reset the session key before first use]" \
+ "--no-prefix-cwd[Do not prefix prompts with the working directory]" \
+ "--provenance[ACP provenance mode: off, meta, or meta+receipt]" \
+ "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]" \
+ "1: :_values 'command' 'client[Run an interactive ACP client against the local ACP bridge]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (client) _openclaw_acp_client ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_gateway_run() {
+ _arguments -C \
+ "--port[Port for the gateway WebSocket]" \
+ "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
+ "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
+ "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
+ "--password[Password for auth mode=password]" \
+ "--password-file[Read gateway password from file]" \
+ "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
+ "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
+ "--allow-unconfigured[Allow gateway start without gateway.mode=local in config]" \
+ "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
+ "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
+ "--force[Kill any existing listener on the target port before starting]" \
+ "--verbose[Verbose logging to stdout/stderr]" \
+ "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \
+ "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \
+ "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
+ "--compact[Alias for \"--ws-log compact\"]" \
+ "--raw-stream[Log raw model stream events to jsonl]" \
+ "--raw-stream-path[Raw stream jsonl path]"
+}
+
+_openclaw_gateway_status() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--no-probe[Skip RPC probe]" \
+ "--require-rpc[Exit non-zero when the RPC probe fails]" \
+ "--deep[Scan system-level services]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_install() {
+ _arguments -C \
+ "--port[Gateway port]" \
+ "--runtime[Daemon runtime (node|bun). Default: node]" \
+ "--token[Gateway token (token auth)]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_start() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_stop() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_restart() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_call() {
+ _arguments -C \
+ "--params[JSON object string for params]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_usage_cost() {
+ _arguments -C \
+ "--days[Number of days to include]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_health() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_probe() {
+ _arguments -C \
+ "--url[Explicit Gateway WebSocket URL (still probes localhost)]" \
+ "--ssh[SSH target for remote gateway tunnel (user@host or user@host:port)]" \
+ "--ssh-identity[SSH identity file path]" \
+ "--ssh-auto[Try to derive an SSH target from Bonjour discovery]" \
+ "--token[Gateway token (applies to all probes)]" \
+ "--password[Gateway password (applies to all probes)]" \
+ "--timeout[Overall probe budget in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_discover() {
+ _arguments -C \
+ "--timeout[Per-command timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--port[Port for the gateway WebSocket]" \
+ "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
+ "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
+ "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
+ "--password[Password for auth mode=password]" \
+ "--password-file[Read gateway password from file]" \
+ "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
+ "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
+ "--allow-unconfigured[Allow gateway start without gateway.mode=local in config]" \
+ "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
+ "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
+ "--force[Kill any existing listener on the target port before starting]" \
+ "--verbose[Verbose logging to stdout/stderr]" \
+ "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \
+ "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \
+ "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
+ "--compact[Alias for \"--ws-log compact\"]" \
+ "--raw-stream[Log raw model stream events to jsonl]" \
+ "--raw-stream-path[Raw stream jsonl path]" \
+ "1: :_values 'command' 'run[Run the WebSocket Gateway (foreground)]' 'status[Show gateway service status + probe the Gateway]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]' 'call[Call a Gateway method]' 'usage-cost[Fetch usage cost summary from session logs]' 'health[Fetch Gateway health]' 'probe[Show gateway reachability + discovery + health + status summary (local + remote)]' 'discover[Discover gateways via Bonjour (local + wide-area if configured)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (run) _openclaw_gateway_run ;;
+ (status) _openclaw_gateway_status ;;
+ (install) _openclaw_gateway_install ;;
+ (uninstall) _openclaw_gateway_uninstall ;;
+ (start) _openclaw_gateway_start ;;
+ (stop) _openclaw_gateway_stop ;;
+ (restart) _openclaw_gateway_restart ;;
+ (call) _openclaw_gateway_call ;;
+ (usage-cost) _openclaw_gateway_usage_cost ;;
+ (health) _openclaw_gateway_health ;;
+ (probe) _openclaw_gateway_probe ;;
+ (discover) _openclaw_gateway_discover ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_daemon_status() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--no-probe[Skip RPC probe]" \
+ "--require-rpc[Exit non-zero when the RPC probe fails]" \
+ "--deep[Scan system-level services]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_install() {
+ _arguments -C \
+ "--port[Gateway port]" \
+ "--runtime[Daemon runtime (node|bun). Default: node]" \
+ "--token[Gateway token (token auth)]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_start() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_stop() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_restart() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[Show service install status + probe the Gateway]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_daemon_status ;;
+ (install) _openclaw_daemon_install ;;
+ (uninstall) _openclaw_daemon_uninstall ;;
+ (start) _openclaw_daemon_start ;;
+ (stop) _openclaw_daemon_stop ;;
+ (restart) _openclaw_daemon_restart ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_logs() {
+ _arguments -C \
+ "--limit[Max lines to return]" \
+ "--max-bytes[Max bytes to read]" \
+ "--follow[Follow log output]" \
+ "--interval[Polling interval in ms]" \
+ "--json[Emit JSON log lines]" \
+ "--plain[Plain text output (no ANSI styling)]" \
+ "--no-color[Disable ANSI colors]" \
+ "--local-time[Display timestamps in local timezone]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_event() {
+ _arguments -C \
+ "--text[System event text]" \
+ "--mode[Wake mode (now|next-heartbeat)]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_last() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_enable() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_disable() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'last[Show the last heartbeat event]' 'enable[Enable heartbeats]' 'disable[Disable heartbeats]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (last) _openclaw_system_heartbeat_last ;;
+ (enable) _openclaw_system_heartbeat_enable ;;
+ (disable) _openclaw_system_heartbeat_disable ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_system_presence() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'event[Enqueue a system event and optionally trigger a heartbeat]' 'heartbeat[Heartbeat controls]' 'presence[List system presence entries]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (event) _openclaw_system_event ;;
+ (heartbeat) _openclaw_system_heartbeat ;;
+ (presence) _openclaw_system_presence ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_list() {
+ _arguments -C \
+ "--all[Show full model catalog]" \
+ "--local[Filter to local models]" \
+ "--provider[Filter by provider]" \
+ "--json[Output JSON]" \
+ "--plain[Plain line output]"
+}
+
+_openclaw_models_status() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]" \
+ "--check[Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)]" \
+ "--probe[Probe configured provider auth (live)]" \
+ "--probe-provider[Only probe a single provider]" \
+ "--probe-profile[Only probe specific auth profile ids (repeat or comma-separated)]" \
+ "--probe-timeout[Per-probe timeout in ms]" \
+ "--probe-concurrency[Concurrent probes]" \
+ "--probe-max-tokens[Probe max tokens (best-effort)]" \
+ "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)]"
+}
+
+_openclaw_models_set() {
+ _arguments -C \
+
+}
+
+_openclaw_models_set_image() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_aliases_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List model aliases]' 'add[Add or update a model alias]' 'remove[Remove a model alias]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_aliases_list ;;
+ (add) _openclaw_models_aliases_add ;;
+ (remove) _openclaw_models_aliases_remove ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_fallbacks_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_fallbacks_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks_clear() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List fallback models]' 'add[Add a fallback model]' 'remove[Remove a fallback model]' 'clear[Clear all fallback models]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_fallbacks_list ;;
+ (add) _openclaw_models_fallbacks_add ;;
+ (remove) _openclaw_models_fallbacks_remove ;;
+ (clear) _openclaw_models_fallbacks_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_image_fallbacks_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_image_fallbacks_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks_clear() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List image fallback models]' 'add[Add an image fallback model]' 'remove[Remove an image fallback model]' 'clear[Clear all image fallback models]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_image_fallbacks_list ;;
+ (add) _openclaw_models_image_fallbacks_add ;;
+ (remove) _openclaw_models_image_fallbacks_remove ;;
+ (clear) _openclaw_models_image_fallbacks_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_scan() {
+ _arguments -C \
+ "--min-params[Minimum parameter size (billions)]" \
+ "--max-age-days[Skip models older than N days]" \
+ "--provider[Filter by provider prefix]" \
+ "--max-candidates[Max fallback candidates]" \
+ "--timeout[Per-probe timeout in ms]" \
+ "--concurrency[Probe concurrency]" \
+ "--no-probe[Skip live probes; list free candidates only]" \
+ "--yes[Accept defaults without prompting]" \
+ "--no-input[Disable prompts (use defaults)]" \
+ "--set-default[Set agents.defaults.model to the first selection]" \
+ "--set-image[Set agents.defaults.imageModel to the first image selection]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_models_auth_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_auth_login() {
+ _arguments -C \
+ "--provider[Provider id registered by a plugin]" \
+ "--method[Provider auth method id]" \
+ "--set-default[Apply the provider'\''s default model recommendation]"
+}
+
+_openclaw_models_auth_setup_token() {
+ _arguments -C \
+ "--provider[Provider id (default: anthropic)]" \
+ "--yes[Skip confirmation]"
+}
+
+_openclaw_models_auth_paste_token() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--profile-id[Auth profile id (default: :manual)]" \
+ "--expires-in[Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.]"
+}
+
+_openclaw_models_auth_login_github_copilot() {
+ _arguments -C \
+ "--yes[Overwrite existing profile without prompting]"
+}
+
+_openclaw_models_auth_order_get() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_models_auth_order_set() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]"
+}
+
+_openclaw_models_auth_order_clear() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]"
+}
+
+_openclaw_models_auth_order() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Show per-agent auth order override (from auth-profiles.json)]' 'set[Set per-agent auth order override (locks rotation to this list)]' 'clear[Clear per-agent auth order override (fall back to config/round-robin)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_models_auth_order_get ;;
+ (set) _openclaw_models_auth_order_set ;;
+ (clear) _openclaw_models_auth_order_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_auth() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--agent[Agent id for auth order get/set/clear]" \
+ "1: :_values 'command' 'add[Interactive auth helper (setup-token or paste token)]' 'login[Run a provider plugin auth flow (OAuth/API key)]' 'setup-token[Run a provider CLI to create/sync a token (TTY required)]' 'paste-token[Paste a token into auth-profiles.json and update config]' 'login-github-copilot[Login to GitHub Copilot via GitHub device flow (TTY required)]' 'order[Manage per-agent auth profile order overrides]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (add) _openclaw_models_auth_add ;;
+ (login) _openclaw_models_auth_login ;;
+ (setup-token) _openclaw_models_auth_setup_token ;;
+ (paste-token) _openclaw_models_auth_paste_token ;;
+ (login-github-copilot) _openclaw_models_auth_login_github_copilot ;;
+ (order) _openclaw_models_auth_order ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--status-json[Output JSON (alias for `models status --json`)]" \
+ "--status-plain[Plain output (alias for `models status --plain`)]" \
+ "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)]" \
+ "1: :_values 'command' 'list[List models (configured by default)]' 'status[Show configured model state]' 'set[Set the default model]' 'set-image[Set the image model]' 'aliases[Manage model aliases]' 'fallbacks[Manage model fallback list]' 'image-fallbacks[Manage image model fallback list]' 'scan[Scan OpenRouter free models for tools + images]' 'auth[Manage model auth profiles]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_list ;;
+ (status) _openclaw_models_status ;;
+ (set) _openclaw_models_set ;;
+ (set-image) _openclaw_models_set_image ;;
+ (aliases) _openclaw_models_aliases ;;
+ (fallbacks) _openclaw_models_fallbacks ;;
+ (image-fallbacks) _openclaw_models_image_fallbacks ;;
+ (scan) _openclaw_models_scan ;;
+ (auth) _openclaw_models_auth ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_approvals_get() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_set() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--file[Path to JSON file to upload]" \
+ "--stdin[Read JSON from stdin]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist_add() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--agent[Agent id (defaults to \"*\")]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist_remove() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--agent[Agent id (defaults to \"*\")]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'add[Add a glob pattern to an allowlist]' 'remove[Remove a glob pattern from an allowlist]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (add) _openclaw_approvals_allowlist_add ;;
+ (remove) _openclaw_approvals_allowlist_remove ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_approvals() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Fetch exec approvals snapshot]' 'set[Replace exec approvals with a JSON file]' 'allowlist[Edit the per-agent allowlist]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_approvals_get ;;
+ (set) _openclaw_approvals_set ;;
+ (allowlist) _openclaw_approvals_allowlist ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_status() {
+ _arguments -C \
+ "--connected[Only show connected nodes]" \
+ "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_describe() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_list() {
+ _arguments -C \
+ "--connected[Only show connected nodes]" \
+ "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_pending() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_approve() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_reject() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_rename() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--name[New display name]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_invoke() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--command[Command (e.g. canvas.eval)]" \
+ "--params[JSON object string for params]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
+ "--idempotency-key[Idempotency key (optional)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_notify() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--title[Notification title]" \
+ "--body[Notification body]" \
+ "--sound[Notification sound]" \
+ "--priority[Notification priority]" \
+ "--delivery[Delivery mode]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_push() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--title[Push title]" \
+ "--body[Push body]" \
+ "--environment[Override APNs environment]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_snapshot() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--format[Image format]" \
+ "--max-width[Max width in px (optional)]" \
+ "--quality[JPEG quality (optional)]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_present() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--target[Target URL/path (optional)]" \
+ "--x[Placement x coordinate]" \
+ "--y[Placement y coordinate]" \
+ "--width[Placement width]" \
+ "--height[Placement height]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_hide() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_navigate() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_eval() {
+ _arguments -C \
+ "--js[JavaScript to evaluate]" \
+ "--node[Node id, name, or IP]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_a2ui_push() {
+ _arguments -C \
+ "--jsonl[Path to JSONL payload]" \
+ "--text[Render a quick A2UI text payload]" \
+ "--node[Node id, name, or IP]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_a2ui_reset() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--invoke-timeout[Node invoke timeout in ms]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_canvas_a2ui() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'push[Push A2UI JSONL to the canvas]' 'reset[Reset A2UI renderer state]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (push) _openclaw_nodes_canvas_a2ui_push ;;
+ (reset) _openclaw_nodes_canvas_a2ui_reset ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_canvas() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'snapshot[Capture a canvas snapshot (prints MEDIA:)]' 'present[Show the canvas (optionally with a target URL/path)]' 'hide[Hide the canvas]' 'navigate[Navigate the canvas to a URL]' 'eval[Evaluate JavaScript in the canvas]' 'a2ui[Render A2UI content on the canvas]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (snapshot) _openclaw_nodes_canvas_snapshot ;;
+ (present) _openclaw_nodes_canvas_present ;;
+ (hide) _openclaw_nodes_canvas_hide ;;
+ (navigate) _openclaw_nodes_canvas_navigate ;;
+ (eval) _openclaw_nodes_canvas_eval ;;
+ (a2ui) _openclaw_nodes_canvas_a2ui ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_camera_list() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera_snap() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--facing[Camera facing]" \
+ "--device-id[Camera device id (from nodes camera list)]" \
+ "--max-width[Max width in px (optional)]" \
+ "--quality[JPEG quality (default 0.9)]" \
+ "--delay-ms[Delay before capture in ms (macOS default 2000)]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera_clip() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--facing[Camera facing]" \
+ "--device-id[Camera device id (from nodes camera list)]" \
+ "--duration[Duration (default 3000ms; supports ms/s/m, e.g. 10s)]" \
+ "--no-audio[Disable audio capture]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 90000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List available cameras on a node]' 'snap[Capture a photo from a node camera (prints MEDIA:)]' 'clip[Capture a short video clip from a node camera (prints MEDIA:)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_nodes_camera_list ;;
+ (snap) _openclaw_nodes_camera_snap ;;
+ (clip) _openclaw_nodes_camera_clip ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_screen_record() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--screen[Screen index (0 = primary)]" \
+ "--duration[Clip duration (ms or 10s)]" \
+ "--fps[Frames per second]" \
+ "--no-audio[Disable microphone audio capture]" \
+ "--out[Output path]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 120000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_screen() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'record[Capture a short screen recording from a node (prints MEDIA:)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (record) _openclaw_nodes_screen_record ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_location_get() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--max-age[Use cached location newer than this (ms)]" \
+ "--accuracy[Desired accuracy (default: balanced/precise depending on node setting)]" \
+ "--location-timeout[Location fix timeout (ms)]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_location() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Fetch the current location from a node]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_nodes_location_get ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[List known nodes with connection status and capabilities]' 'describe[Describe a node (capabilities + supported invoke commands)]' 'list[List pending and paired nodes]' 'pending[List pending pairing requests]' 'approve[Approve a pending pairing request]' 'reject[Reject a pending pairing request]' 'rename[Rename a paired node (display name override)]' 'invoke[Invoke a command on a paired node]' 'notify[Send a local notification on a node (mac only)]' 'push[Send an APNs test push to an iOS node]' 'canvas[Capture or render canvas content from a paired node]' 'camera[Capture camera media from a paired node]' 'screen[Capture screen recordings from a paired node]' 'location[Fetch location from a paired node]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_nodes_status ;;
+ (describe) _openclaw_nodes_describe ;;
+ (list) _openclaw_nodes_list ;;
+ (pending) _openclaw_nodes_pending ;;
+ (approve) _openclaw_nodes_approve ;;
+ (reject) _openclaw_nodes_reject ;;
+ (rename) _openclaw_nodes_rename ;;
+ (invoke) _openclaw_nodes_invoke ;;
+ (notify) _openclaw_nodes_notify ;;
+ (push) _openclaw_nodes_push ;;
+ (canvas) _openclaw_nodes_canvas ;;
+ (camera) _openclaw_nodes_camera ;;
+ (screen) _openclaw_nodes_screen ;;
+ (location) _openclaw_nodes_location ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_devices_list() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_remove() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_clear() {
+ _arguments -C \
+ "--pending[Also reject all pending pairing requests]" \
+ "--yes[Confirm destructive clear]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_approve() {
+ _arguments -C \
+ "--latest[Approve the most recent pending request]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_reject() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_rotate() {
+ _arguments -C \
+ "--device[Device id]" \
+ "--role[Role name]" \
+ "--scope[Scopes to attach to the token (repeatable)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_revoke() {
+ _arguments -C \
+ "--device[Device id]" \
+ "--role[Role name]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List pending and paired devices]' 'remove[Remove a paired device entry]' 'clear[Clear paired devices from the gateway table]' 'approve[Approve a pending device pairing request]' 'reject[Reject a pending device pairing request]' 'rotate[Rotate a device token for a role]' 'revoke[Revoke a device token for a role]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_devices_list ;;
+ (remove) _openclaw_devices_remove ;;
+ (clear) _openclaw_devices_clear ;;
+ (approve) _openclaw_devices_approve ;;
+ (reject) _openclaw_devices_reject ;;
+ (rotate) _openclaw_devices_rotate ;;
+ (revoke) _openclaw_devices_revoke ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_node_run() {
+ _arguments -C \
+ "--host[Gateway host]" \
+ "--port[Gateway port]" \
+ "--tls[Use TLS for the gateway connection]" \
+ "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
+ "--node-id[Override node id (clears pairing token)]" \
+ "--display-name[Override node display name]"
+}
+
+_openclaw_node_status() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_install() {
+ _arguments -C \
+ "--host[Gateway host]" \
+ "--port[Gateway port]" \
+ "--tls[Use TLS for the gateway connection]" \
+ "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
+ "--node-id[Override node id (clears pairing token)]" \
+ "--display-name[Override node display name]" \
+ "--runtime[Service runtime (node|bun). Default: node]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_stop() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_restart() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'run[Run the headless node host (foreground)]' 'status[Show node host status]' 'install[Install the node host service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the node host service (launchd/systemd/schtasks)]' 'stop[Stop the node host service (launchd/systemd/schtasks)]' 'restart[Restart the node host service (launchd/systemd/schtasks)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (run) _openclaw_node_run ;;
+ (status) _openclaw_node_status ;;
+ (install) _openclaw_node_install ;;
+ (uninstall) _openclaw_node_uninstall ;;
+ (stop) _openclaw_node_stop ;;
+ (restart) _openclaw_node_restart ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_sandbox_list() {
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--browser[List browser containers only]"
+}
+
+_openclaw_sandbox_recreate() {
+ _arguments -C \
+ "--all[Recreate all sandbox containers]" \
+ "--session[Recreate container for specific session]" \
+ "--agent[Recreate containers for specific agent]" \
+ "--browser[Only recreate browser containers]" \
+ "--force[Skip confirmation prompt]"
+}
+
+_openclaw_sandbox_explain() {
+ _arguments -C \
+ "--session[Session key to inspect (defaults to agent main)]" \
+ "--agent[Agent id to inspect (defaults to derived agent)]" \
+ "--json[Output result as JSON]"
+}
+
+_openclaw_sandbox() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List sandbox containers and their status]' 'recreate[Remove containers to force recreation with updated config]' 'explain[Explain effective sandbox/tool policy for a session/agent]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_sandbox_list ;;
+ (recreate) _openclaw_sandbox_recreate ;;
+ (explain) _openclaw_sandbox_explain ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_tui() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (if required)]" \
+ "--session[Session key (default: \"main\", or \"global\" when scope is global)]" \
+ "--deliver[Deliver assistant replies]" \
+ "--thinking[Thinking level override]" \
+ "--message[Send an initial message after connecting]" \
+ "--timeout-ms[Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)]" \
+ "--history-limit[History entries to load]"
+}
+
+_openclaw_cron_status() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_list() {
+ _arguments -C \
+ "--all[Include disabled jobs]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_add() {
+ _arguments -C \
+ "--name[Job name]" \
+ "--description[Optional description]" \
+ "--disabled[Create job disabled]" \
+ "--delete-after-run[Delete one-shot job after it succeeds]" \
+ "--keep-after-run[Keep one-shot job after it succeeds]" \
+ "--agent[Agent id for this job]" \
+ "--session[Session target (main|isolated)]" \
+ "--session-key[Session key for job routing (e.g. agent:my-agent:my-session)]" \
+ "--wake[Wake mode (now|next-heartbeat)]" \
+ "--at[Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes]" \
+ "--every[Run every duration (e.g. 10m, 1h)]" \
+ "--cron[Cron expression (5-field or 6-field with seconds)]" \
+ "--tz[Timezone for cron expressions (IANA)]" \
+ "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
+ "--exact[Disable cron staggering (set stagger to 0)]" \
+ "--system-event[System event payload (main session)]" \
+ "--message[Agent message payload]" \
+ "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \
+ "--model[Model override for agent jobs (provider/model or alias)]" \
+ "--timeout-seconds[Timeout seconds for agent jobs]" \
+ "--light-context[Use lightweight bootstrap context for agent jobs]" \
+ "--announce[Announce summary to a chat (subagent-style)]" \
+ "--deliver[Deprecated (use --announce). Announces a summary to a chat.]" \
+ "--no-deliver[Disable announce delivery and skip main-session summary]" \
+ "--channel[Delivery channel (last|)]" \
+ "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
+ "--account[Channel account id for delivery (multi-account setups)]" \
+ "--best-effort-deliver[Do not fail the job if delivery fails]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_rm() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_enable() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_disable() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_runs() {
+ _arguments -C \
+ "--id[Job id]" \
+ "--limit[Max entries (default 50)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_run() {
+ _arguments -C \
+ "--due[Run only when due (default behavior in older versions)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_edit() {
+ _arguments -C \
+ "--name[Set name]" \
+ "--description[Set description]" \
+ "--enable[Enable job]" \
+ "--disable[Disable job]" \
+ "--delete-after-run[Delete one-shot job after it succeeds]" \
+ "--keep-after-run[Keep one-shot job after it succeeds]" \
+ "--session[Session target (main|isolated)]" \
+ "--agent[Set agent id]" \
+ "--clear-agent[Unset agent and use default]" \
+ "--session-key[Set session key for job routing]" \
+ "--clear-session-key[Unset session key]" \
+ "--wake[Wake mode (now|next-heartbeat)]" \
+ "--at[Set one-shot time (ISO) or duration like 20m]" \
+ "--every[Set interval duration like 10m]" \
+ "--cron[Set cron expression]" \
+ "--tz[Timezone for cron expressions (IANA)]" \
+ "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
+ "--exact[Disable cron staggering (set stagger to 0)]" \
+ "--system-event[Set systemEvent payload]" \
+ "--message[Set agentTurn payload message]" \
+ "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \
+ "--model[Model override for agent jobs]" \
+ "--timeout-seconds[Timeout seconds for agent jobs]" \
+ "--light-context[Enable lightweight bootstrap context for agent jobs]" \
+ "--no-light-context[Disable lightweight bootstrap context for agent jobs]" \
+ "--announce[Announce summary to a chat (subagent-style)]" \
+ "--deliver[Deprecated (use --announce). Announces a summary to a chat.]" \
+ "--no-deliver[Disable announce delivery]" \
+ "--channel[Delivery channel (last|)]" \
+ "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
+ "--account[Channel account id for delivery (multi-account setups)]" \
+ "--best-effort-deliver[Do not fail job if delivery fails]" \
+ "--no-best-effort-deliver[Fail job when delivery fails]" \
+ "--failure-alert[Enable failure alerts for this job]" \
+ "--no-failure-alert[Disable failure alerts for this job]" \
+ "--failure-alert-after[Alert after N consecutive job errors]" \
+ "--failure-alert-channel[Failure alert channel (last|)]" \
+ "--failure-alert-to[Failure alert destination]" \
+ "--failure-alert-cooldown[Minimum time between alerts (e.g. 1h, 30m)]" \
+ "--failure-alert-mode[Failure alert delivery mode (announce or webhook)]" \
+ "--failure-alert-account-id[Account ID for failure alert channel (multi-account setups)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[Show cron scheduler status]' 'list[List cron jobs]' 'add[Add a cron job]' 'rm[Remove a cron job]' 'enable[Enable a cron job]' 'disable[Disable a cron job]' 'runs[Show cron run history (JSONL-backed)]' 'run[Run a cron job now (debug)]' 'edit[Edit a cron job (patch fields)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_cron_status ;;
+ (list) _openclaw_cron_list ;;
+ (add) _openclaw_cron_add ;;
+ (rm) _openclaw_cron_rm ;;
+ (enable) _openclaw_cron_enable ;;
+ (disable) _openclaw_cron_disable ;;
+ (runs) _openclaw_cron_runs ;;
+ (run) _openclaw_cron_run ;;
+ (edit) _openclaw_cron_edit ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_dns_setup() {
+ _arguments -C \
+ "--domain[Wide-area discovery domain (e.g. openclaw.internal)]" \
+ "--apply[Install/update CoreDNS config and (re)start the service (requires sudo)]"
+}
+
+_openclaw_dns() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'setup[Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (setup) _openclaw_dns_setup ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_docs() {
+ _arguments -C \
+
+}
+
+_openclaw_hooks_list() {
+ _arguments -C \
+ "--eligible[Show only eligible hooks]" \
+ "--json[Output as JSON]" \
+ "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]"
+}
+
+_openclaw_hooks_info() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_hooks_check() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_hooks_enable() {
+ _arguments -C \
+
+}
+
+_openclaw_hooks_disable() {
+ _arguments -C \
+
+}
+
+_openclaw_hooks_install() {
+ _arguments -C \
+ "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \
+ "--pin[Record npm installs as exact resolved @]"
+}
+
+_openclaw_hooks_update() {
+ _arguments -C \
+ "--all[Update all tracked hooks]" \
+ "--dry-run[Show what would change without writing]"
+}
+
+_openclaw_hooks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List all hooks]' 'info[Show detailed information about a hook]' 'check[Check hooks eligibility status]' 'enable[Enable a hook]' 'disable[Disable a hook]' 'install[Deprecated: install a hook pack via `openclaw plugins install`]' 'update[Deprecated: update hook packs via `openclaw plugins update`]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_hooks_list ;;
+ (info) _openclaw_hooks_info ;;
+ (check) _openclaw_hooks_check ;;
+ (enable) _openclaw_hooks_enable ;;
+ (disable) _openclaw_hooks_disable ;;
+ (install) _openclaw_hooks_install ;;
+ (update) _openclaw_hooks_update ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_webhooks_gmail_setup() {
+ _arguments -C \
+ "--account[Gmail account to watch]" \
+ "--project[GCP project id (OAuth client owner)]" \
+ "--topic[Pub/Sub topic name]" \
+ "--subscription[Pub/Sub subscription name]" \
+ "--label[Gmail label to watch]" \
+ "--hook-url[OpenClaw hook URL]" \
+ "--hook-token[OpenClaw hook token]" \
+ "--push-token[Push token for gog watch serve]" \
+ "--bind[gog watch serve bind host]" \
+ "--port[gog watch serve port]" \
+ "--path[gog watch serve path]" \
+ "--include-body[Include email body snippets]" \
+ "--max-bytes[Max bytes for body snippets]" \
+ "--renew-minutes[Renew watch every N minutes]" \
+ "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
+ "--tailscale-path[Path for tailscale serve/funnel]" \
+ "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]" \
+ "--push-endpoint[Explicit Pub/Sub push endpoint]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_webhooks_gmail_run() {
+ _arguments -C \
+ "--account[Gmail account to watch]" \
+ "--topic[Pub/Sub topic path (projects/.../topics/..)]" \
+ "--subscription[Pub/Sub subscription name]" \
+ "--label[Gmail label to watch]" \
+ "--hook-url[OpenClaw hook URL]" \
+ "--hook-token[OpenClaw hook token]" \
+ "--push-token[Push token for gog watch serve]" \
+ "--bind[gog watch serve bind host]" \
+ "--port[gog watch serve port]" \
+ "--path[gog watch serve path]" \
+ "--include-body[Include email body snippets]" \
+ "--max-bytes[Max bytes for body snippets]" \
+ "--renew-minutes[Renew watch every N minutes]" \
+ "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
+ "--tailscale-path[Path for tailscale serve/funnel]" \
+ "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]"
+}
+
+_openclaw_webhooks_gmail() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'setup[Configure Gmail watch + Pub/Sub + OpenClaw hooks]' 'run[Run gog watch serve + auto-renew loop]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (setup) _openclaw_webhooks_gmail_setup ;;
+ (run) _openclaw_webhooks_gmail_run ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_webhooks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'gmail[Gmail Pub/Sub hooks (via gogcli)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (gmail) _openclaw_webhooks_gmail ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_qr() {
+ _arguments -C \
+ "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
+ "--url[Override gateway URL used in the setup payload]" \
+ "--public-url[Override gateway public URL used in the setup payload]" \
+ "--token[Override gateway token for setup payload]" \
+ "--password[Override gateway password for setup payload]" \
+ "--setup-code-only[Print only the setup code]" \
+ "--no-ascii[Skip ASCII QR rendering]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_clawbot_qr() {
+ _arguments -C \
+ "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
+ "--url[Override gateway URL used in the setup payload]" \
+ "--public-url[Override gateway public URL used in the setup payload]" \
+ "--token[Override gateway token for setup payload]" \
+ "--password[Override gateway password for setup payload]" \
+ "--setup-code-only[Print only the setup code]" \
+ "--no-ascii[Skip ASCII QR rendering]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_clawbot() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'qr[Generate an iOS pairing QR code and setup code]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (qr) _openclaw_clawbot_qr ;;
+ esac
+ ;;
+ esac
+}
+
_openclaw_browser_status() {
_arguments -C \
@@ -1126,7 +2953,8 @@ _openclaw_browser_create_profile() {
"--name[Profile name (lowercase, numbers, hyphens)]" \
"--color[Profile color (hex format, e.g. #0066CC)]" \
"--cdp-url[CDP URL for remote Chrome (http/https)]" \
- "--driver[Profile driver (openclaw|extension). Default: openclaw]"
+ "--user-data-dir[User data dir for existing-session Chromium attach]" \
+ "--driver[Profile driver (openclaw|existing-session). Default: openclaw]"
}
_openclaw_browser_delete_profile() {
@@ -1134,35 +2962,6 @@ _openclaw_browser_delete_profile() {
"--name[Profile name to delete]"
}
-_openclaw_browser_extension_install() {
- _arguments -C \
-
-}
-
-_openclaw_browser_extension_path() {
- _arguments -C \
-
-}
-
-_openclaw_browser_extension() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'install[Install the Chrome extension to a stable local path]' 'path[Print the path to the installed Chrome extension (load unpacked)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (install) _openclaw_browser_extension_install ;;
- (path) _openclaw_browser_extension_path ;;
- esac
- ;;
- esac
-}
-
_openclaw_browser_screenshot() {
_arguments -C \
"--full-page[Capture full scrollable page]" \
@@ -1569,7 +3368,7 @@ _openclaw_browser() {
"--token[Gateway token (if required)]" \
"--timeout[Timeout in ms]" \
"--expect-final[Wait for final response (agent)]" \
- "1: :_values 'command' 'status[Show browser status]' 'start[Start the browser (no-op if already running)]' 'stop[Stop the browser (best-effort)]' 'reset-profile[Reset browser profile (moves it to Trash)]' 'tabs[List open tabs]' 'tab[Tab shortcuts (index-based)]' 'open[Open a URL in a new tab]' 'focus[Focus a tab by target id (or unique prefix)]' 'close[Close a tab (target id optional)]' 'profiles[List all browser profiles]' 'create-profile[Create a new browser profile]' 'delete-profile[Delete a browser profile]' 'extension[Chrome extension helpers]' 'screenshot[Capture a screenshot (MEDIA:)]' 'snapshot[Capture a snapshot (default: ai; aria is the accessibility tree)]' 'navigate[Navigate the current tab to a URL]' 'resize[Resize the viewport]' 'click[Click an element by ref from snapshot]' 'type[Type into an element by ref from snapshot]' 'press[Press a key]' 'hover[Hover an element by ai ref]' 'scrollintoview[Scroll an element into view by ref from snapshot]' 'drag[Drag from one ref to another]' 'select[Select option(s) in a select element]' 'upload[Arm file upload for the next file chooser]' 'waitfordownload[Wait for the next download (and save it)]' 'download[Click a ref and save the resulting download]' 'dialog[Arm the next modal dialog (alert/confirm/prompt)]' 'fill[Fill a form with JSON field descriptors]' 'wait[Wait for time, selector, URL, load state, or JS conditions]' 'evaluate[Evaluate a function against the page or a ref]' 'console[Get recent console messages]' 'pdf[Save page as PDF]' 'responsebody[Wait for a network response and return its body]' 'highlight[Highlight an element by ref]' 'errors[Get recent page errors]' 'requests[Get recent network requests (best-effort)]' 'trace[Record a Playwright trace]' 'cookies[Read/write cookies]' 'storage[Read/write localStorage/sessionStorage]' 'set[Browser environment settings]'" \
+ "1: :_values 'command' 'status[Show browser status]' 'start[Start the browser (no-op if already running)]' 'stop[Stop the browser (best-effort)]' 'reset-profile[Reset browser profile (moves it to Trash)]' 'tabs[List open tabs]' 'tab[Tab shortcuts (index-based)]' 'open[Open a URL in a new tab]' 'focus[Focus a tab by target id (or unique prefix)]' 'close[Close a tab (target id optional)]' 'profiles[List all browser profiles]' 'create-profile[Create a new browser profile]' 'delete-profile[Delete a browser profile]' 'screenshot[Capture a screenshot (MEDIA:)]' 'snapshot[Capture a snapshot (default: ai; aria is the accessibility tree)]' 'navigate[Navigate the current tab to a URL]' 'resize[Resize the viewport]' 'click[Click an element by ref from snapshot]' 'type[Type into an element by ref from snapshot]' 'press[Press a key]' 'hover[Hover an element by ai ref]' 'scrollintoview[Scroll an element into view by ref from snapshot]' 'drag[Drag from one ref to another]' 'select[Select option(s) in a select element]' 'upload[Arm file upload for the next file chooser]' 'waitfordownload[Wait for the next download (and save it)]' 'download[Click a ref and save the resulting download]' 'dialog[Arm the next modal dialog (alert/confirm/prompt)]' 'fill[Fill a form with JSON field descriptors]' 'wait[Wait for time, selector, URL, load state, or JS conditions]' 'evaluate[Evaluate a function against the page or a ref]' 'console[Get recent console messages]' 'pdf[Save page as PDF]' 'responsebody[Wait for a network response and return its body]' 'highlight[Highlight an element by ref]' 'errors[Get recent page errors]' 'requests[Get recent network requests (best-effort)]' 'trace[Record a Playwright trace]' 'cookies[Read/write cookies]' 'storage[Read/write localStorage/sessionStorage]' 'set[Browser environment settings]'" \
"*::arg:->args"
case $state in
@@ -1587,7 +3386,6 @@ _openclaw_browser() {
(profiles) _openclaw_browser_profiles ;;
(create-profile) _openclaw_browser_create_profile ;;
(delete-profile) _openclaw_browser_delete_profile ;;
- (extension) _openclaw_browser_extension ;;
(screenshot) _openclaw_browser_screenshot ;;
(snapshot) _openclaw_browser_snapshot ;;
(navigate) _openclaw_browser_navigate ;;
@@ -1621,1736 +3419,46 @@ _openclaw_browser() {
esac
}
-_openclaw_acp_client() {
+_openclaw_memory_status() {
_arguments -C \
- "--cwd[Working directory for the ACP session]" \
- "--server[ACP server command (default: openclaw)]" \
- "--server-args[Extra arguments for the ACP server]" \
- "--server-verbose[Enable verbose logging on the ACP server]" \
- "(--verbose -v)"{--verbose,-v}"[Verbose client logging]"
+ "--agent[Agent id (default: default agent)]" \
+ "--json[Print JSON]" \
+ "--deep[Probe embedding provider availability]" \
+ "--index[Reindex if dirty (implies --deep)]" \
+ "--verbose[Verbose logging]"
}
-_openclaw_acp() {
- local -a commands
- local -a options
-
+_openclaw_memory_index() {
_arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--token-file[Read gateway token from file]" \
- "--password[Gateway password (if required)]" \
- "--password-file[Read gateway password from file]" \
- "--session[Default session key (e.g. agent:main:main)]" \
- "--session-label[Default session label to resolve]" \
- "--require-existing[Fail if the session key/label does not exist]" \
- "--reset-session[Reset the session key before first use]" \
- "--no-prefix-cwd[Do not prefix prompts with the working directory]" \
- "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]" \
- "1: :_values 'command' 'client[Run an interactive ACP client against the local ACP bridge]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (client) _openclaw_acp_client ;;
- esac
- ;;
- esac
+ "--agent[Agent id (default: default agent)]" \
+ "--force[Force full reindex]" \
+ "--verbose[Verbose logging]"
}
-_openclaw_gateway_run() {
+_openclaw_memory_search() {
_arguments -C \
- "--port[Port for the gateway WebSocket]" \
- "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
- "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
- "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
- "--password[Password for auth mode=password]" \
- "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
- "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
- "--allow-unconfigured[Allow gateway start without gateway.mode=local in config]" \
- "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
- "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
- "--force[Kill any existing listener on the target port before starting]" \
- "--verbose[Verbose logging to stdout/stderr]" \
- "--claude-cli-logs[Only show claude-cli logs in the console (includes stdout/stderr)]" \
- "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
- "--compact[Alias for \"--ws-log compact\"]" \
- "--raw-stream[Log raw model stream events to jsonl]" \
- "--raw-stream-path[Raw stream jsonl path]"
+ "--query[Search query (alternative to positional argument)]" \
+ "--agent[Agent id (default: default agent)]" \
+ "--max-results[Max results]" \
+ "--min-score[Minimum score]" \
+ "--json[Print JSON]"
}
-_openclaw_gateway_status() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--no-probe[Skip RPC probe]" \
- "--deep[Scan system-level services]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_install() {
- _arguments -C \
- "--port[Gateway port]" \
- "--runtime[Daemon runtime (node|bun). Default: node]" \
- "--token[Gateway token (token auth)]" \
- "--force[Reinstall/overwrite if already installed]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_uninstall() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_start() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_stop() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_restart() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_call() {
- _arguments -C \
- "--params[JSON object string for params]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_usage_cost() {
- _arguments -C \
- "--days[Number of days to include]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_health() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_probe() {
- _arguments -C \
- "--url[Explicit Gateway WebSocket URL (still probes localhost)]" \
- "--ssh[SSH target for remote gateway tunnel (user@host or user@host:port)]" \
- "--ssh-identity[SSH identity file path]" \
- "--ssh-auto[Try to derive an SSH target from Bonjour discovery]" \
- "--token[Gateway token (applies to all probes)]" \
- "--password[Gateway password (applies to all probes)]" \
- "--timeout[Overall probe budget in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway_discover() {
- _arguments -C \
- "--timeout[Per-command timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_gateway() {
- local -a commands
- local -a options
-
- _arguments -C \
- "--port[Port for the gateway WebSocket]" \
- "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
- "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
- "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
- "--password[Password for auth mode=password]" \
- "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
- "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
- "--allow-unconfigured[Allow gateway start without gateway.mode=local in config]" \
- "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
- "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
- "--force[Kill any existing listener on the target port before starting]" \
- "--verbose[Verbose logging to stdout/stderr]" \
- "--claude-cli-logs[Only show claude-cli logs in the console (includes stdout/stderr)]" \
- "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
- "--compact[Alias for \"--ws-log compact\"]" \
- "--raw-stream[Log raw model stream events to jsonl]" \
- "--raw-stream-path[Raw stream jsonl path]" \
- "1: :_values 'command' 'run[Run the WebSocket Gateway (foreground)]' 'status[Show gateway service status + probe the Gateway]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]' 'call[Call a Gateway method]' 'usage-cost[Fetch usage cost summary from session logs]' 'health[Fetch Gateway health]' 'probe[Show gateway reachability + discovery + health + status summary (local + remote)]' 'discover[Discover gateways via Bonjour (local + wide-area if configured)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (run) _openclaw_gateway_run ;;
- (status) _openclaw_gateway_status ;;
- (install) _openclaw_gateway_install ;;
- (uninstall) _openclaw_gateway_uninstall ;;
- (start) _openclaw_gateway_start ;;
- (stop) _openclaw_gateway_stop ;;
- (restart) _openclaw_gateway_restart ;;
- (call) _openclaw_gateway_call ;;
- (usage-cost) _openclaw_gateway_usage_cost ;;
- (health) _openclaw_gateway_health ;;
- (probe) _openclaw_gateway_probe ;;
- (discover) _openclaw_gateway_discover ;;
- esac
- ;;
- esac
-}
-
-_openclaw_daemon_status() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--no-probe[Skip RPC probe]" \
- "--deep[Scan system-level services]" \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon_install() {
- _arguments -C \
- "--port[Gateway port]" \
- "--runtime[Daemon runtime (node|bun). Default: node]" \
- "--token[Gateway token (token auth)]" \
- "--force[Reinstall/overwrite if already installed]" \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon_uninstall() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon_start() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon_stop() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon_restart() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_daemon() {
+_openclaw_memory() {
local -a commands
local -a options
_arguments -C \
\
- "1: :_values 'command' 'status[Show service install status + probe the Gateway]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]'" \
+ "1: :_values 'command' 'status[Show memory search index status]' 'index[Reindex memory files]' 'search[Search memory files]'" \
"*::arg:->args"
case $state in
(args)
case $line[1] in
- (status) _openclaw_daemon_status ;;
- (install) _openclaw_daemon_install ;;
- (uninstall) _openclaw_daemon_uninstall ;;
- (start) _openclaw_daemon_start ;;
- (stop) _openclaw_daemon_stop ;;
- (restart) _openclaw_daemon_restart ;;
- esac
- ;;
- esac
-}
-
-_openclaw_logs() {
- _arguments -C \
- "--limit[Max lines to return]" \
- "--max-bytes[Max bytes to read]" \
- "--follow[Follow log output]" \
- "--interval[Polling interval in ms]" \
- "--json[Emit JSON log lines]" \
- "--plain[Plain text output (no ANSI styling)]" \
- "--no-color[Disable ANSI colors]" \
- "--local-time[Display timestamps in local timezone]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system_event() {
- _arguments -C \
- "--text[System event text]" \
- "--mode[Wake mode (now|next-heartbeat)]" \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system_heartbeat_last() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system_heartbeat_enable() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system_heartbeat_disable() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system_heartbeat() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'last[Show the last heartbeat event]' 'enable[Enable heartbeats]' 'disable[Disable heartbeats]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (last) _openclaw_system_heartbeat_last ;;
- (enable) _openclaw_system_heartbeat_enable ;;
- (disable) _openclaw_system_heartbeat_disable ;;
- esac
- ;;
- esac
-}
-
-_openclaw_system_presence() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_system() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'event[Enqueue a system event and optionally trigger a heartbeat]' 'heartbeat[Heartbeat controls]' 'presence[List system presence entries]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (event) _openclaw_system_event ;;
- (heartbeat) _openclaw_system_heartbeat ;;
- (presence) _openclaw_system_presence ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models_list() {
- _arguments -C \
- "--all[Show full model catalog]" \
- "--local[Filter to local models]" \
- "--provider[Filter by provider]" \
- "--json[Output JSON]" \
- "--plain[Plain line output]"
-}
-
-_openclaw_models_status() {
- _arguments -C \
- "--json[Output JSON]" \
- "--plain[Plain output]" \
- "--check[Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)]" \
- "--probe[Probe configured provider auth (live)]" \
- "--probe-provider[Only probe a single provider]" \
- "--probe-profile[Only probe specific auth profile ids (repeat or comma-separated)]" \
- "--probe-timeout[Per-probe timeout in ms]" \
- "--probe-concurrency[Concurrent probes]" \
- "--probe-max-tokens[Probe max tokens (best-effort)]" \
- "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)]"
-}
-
-_openclaw_models_set() {
- _arguments -C \
-
-}
-
-_openclaw_models_set_image() {
- _arguments -C \
-
-}
-
-_openclaw_models_aliases_list() {
- _arguments -C \
- "--json[Output JSON]" \
- "--plain[Plain output]"
-}
-
-_openclaw_models_aliases_add() {
- _arguments -C \
-
-}
-
-_openclaw_models_aliases_remove() {
- _arguments -C \
-
-}
-
-_openclaw_models_aliases() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List model aliases]' 'add[Add or update a model alias]' 'remove[Remove a model alias]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_models_aliases_list ;;
- (add) _openclaw_models_aliases_add ;;
- (remove) _openclaw_models_aliases_remove ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models_fallbacks_list() {
- _arguments -C \
- "--json[Output JSON]" \
- "--plain[Plain output]"
-}
-
-_openclaw_models_fallbacks_add() {
- _arguments -C \
-
-}
-
-_openclaw_models_fallbacks_remove() {
- _arguments -C \
-
-}
-
-_openclaw_models_fallbacks_clear() {
- _arguments -C \
-
-}
-
-_openclaw_models_fallbacks() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List fallback models]' 'add[Add a fallback model]' 'remove[Remove a fallback model]' 'clear[Clear all fallback models]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_models_fallbacks_list ;;
- (add) _openclaw_models_fallbacks_add ;;
- (remove) _openclaw_models_fallbacks_remove ;;
- (clear) _openclaw_models_fallbacks_clear ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models_image_fallbacks_list() {
- _arguments -C \
- "--json[Output JSON]" \
- "--plain[Plain output]"
-}
-
-_openclaw_models_image_fallbacks_add() {
- _arguments -C \
-
-}
-
-_openclaw_models_image_fallbacks_remove() {
- _arguments -C \
-
-}
-
-_openclaw_models_image_fallbacks_clear() {
- _arguments -C \
-
-}
-
-_openclaw_models_image_fallbacks() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List image fallback models]' 'add[Add an image fallback model]' 'remove[Remove an image fallback model]' 'clear[Clear all image fallback models]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_models_image_fallbacks_list ;;
- (add) _openclaw_models_image_fallbacks_add ;;
- (remove) _openclaw_models_image_fallbacks_remove ;;
- (clear) _openclaw_models_image_fallbacks_clear ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models_scan() {
- _arguments -C \
- "--min-params[Minimum parameter size (billions)]" \
- "--max-age-days[Skip models older than N days]" \
- "--provider[Filter by provider prefix]" \
- "--max-candidates[Max fallback candidates]" \
- "--timeout[Per-probe timeout in ms]" \
- "--concurrency[Probe concurrency]" \
- "--no-probe[Skip live probes; list free candidates only]" \
- "--yes[Accept defaults without prompting]" \
- "--no-input[Disable prompts (use defaults)]" \
- "--set-default[Set agents.defaults.model to the first selection]" \
- "--set-image[Set agents.defaults.imageModel to the first image selection]" \
- "--json[Output JSON]"
-}
-
-_openclaw_models_auth_add() {
- _arguments -C \
-
-}
-
-_openclaw_models_auth_login() {
- _arguments -C \
- "--provider[Provider id registered by a plugin]" \
- "--method[Provider auth method id]" \
- "--set-default[Apply the provider'\''s default model recommendation]"
-}
-
-_openclaw_models_auth_setup_token() {
- _arguments -C \
- "--provider[Provider id (default: anthropic)]" \
- "--yes[Skip confirmation]"
-}
-
-_openclaw_models_auth_paste_token() {
- _arguments -C \
- "--provider[Provider id (e.g. anthropic)]" \
- "--profile-id[Auth profile id (default: :manual)]" \
- "--expires-in[Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.]"
-}
-
-_openclaw_models_auth_login_github_copilot() {
- _arguments -C \
- "--profile-id[Auth profile id (default: github-copilot:github)]" \
- "--yes[Overwrite existing profile without prompting]"
-}
-
-_openclaw_models_auth_order_get() {
- _arguments -C \
- "--provider[Provider id (e.g. anthropic)]" \
- "--agent[Agent id (default: configured default agent)]" \
- "--json[Output JSON]"
-}
-
-_openclaw_models_auth_order_set() {
- _arguments -C \
- "--provider[Provider id (e.g. anthropic)]" \
- "--agent[Agent id (default: configured default agent)]"
-}
-
-_openclaw_models_auth_order_clear() {
- _arguments -C \
- "--provider[Provider id (e.g. anthropic)]" \
- "--agent[Agent id (default: configured default agent)]"
-}
-
-_openclaw_models_auth_order() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'get[Show per-agent auth order override (from auth-profiles.json)]' 'set[Set per-agent auth order override (locks rotation to this list)]' 'clear[Clear per-agent auth order override (fall back to config/round-robin)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (get) _openclaw_models_auth_order_get ;;
- (set) _openclaw_models_auth_order_set ;;
- (clear) _openclaw_models_auth_order_clear ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models_auth() {
- local -a commands
- local -a options
-
- _arguments -C \
- "--agent[Agent id for auth order get/set/clear]" \
- "1: :_values 'command' 'add[Interactive auth helper (setup-token or paste token)]' 'login[Run a provider plugin auth flow (OAuth/API key)]' 'setup-token[Run a provider CLI to create/sync a token (TTY required)]' 'paste-token[Paste a token into auth-profiles.json and update config]' 'login-github-copilot[Login to GitHub Copilot via GitHub device flow (TTY required)]' 'order[Manage per-agent auth profile order overrides]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (add) _openclaw_models_auth_add ;;
- (login) _openclaw_models_auth_login ;;
- (setup-token) _openclaw_models_auth_setup_token ;;
- (paste-token) _openclaw_models_auth_paste_token ;;
- (login-github-copilot) _openclaw_models_auth_login_github_copilot ;;
- (order) _openclaw_models_auth_order ;;
- esac
- ;;
- esac
-}
-
-_openclaw_models() {
- local -a commands
- local -a options
-
- _arguments -C \
- "--status-json[Output JSON (alias for `models status --json`)]" \
- "--status-plain[Plain output (alias for `models status --plain`)]" \
- "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)]" \
- "1: :_values 'command' 'list[List models (configured by default)]' 'status[Show configured model state]' 'set[Set the default model]' 'set-image[Set the image model]' 'aliases[Manage model aliases]' 'fallbacks[Manage model fallback list]' 'image-fallbacks[Manage image model fallback list]' 'scan[Scan OpenRouter free models for tools + images]' 'auth[Manage model auth profiles]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_models_list ;;
- (status) _openclaw_models_status ;;
- (set) _openclaw_models_set ;;
- (set-image) _openclaw_models_set_image ;;
- (aliases) _openclaw_models_aliases ;;
- (fallbacks) _openclaw_models_fallbacks ;;
- (image-fallbacks) _openclaw_models_image_fallbacks ;;
- (scan) _openclaw_models_scan ;;
- (auth) _openclaw_models_auth ;;
- esac
- ;;
- esac
-}
-
-_openclaw_approvals_get() {
- _arguments -C \
- "--node[Target node id/name/IP]" \
- "--gateway[Force gateway approvals]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_approvals_set() {
- _arguments -C \
- "--node[Target node id/name/IP]" \
- "--gateway[Force gateway approvals]" \
- "--file[Path to JSON file to upload]" \
- "--stdin[Read JSON from stdin]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_approvals_allowlist_add() {
- _arguments -C \
- "--node[Target node id/name/IP]" \
- "--gateway[Force gateway approvals]" \
- "--agent[Agent id (defaults to \"*\")]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_approvals_allowlist_remove() {
- _arguments -C \
- "--node[Target node id/name/IP]" \
- "--gateway[Force gateway approvals]" \
- "--agent[Agent id (defaults to \"*\")]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_approvals_allowlist() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'add[Add a glob pattern to an allowlist]' 'remove[Remove a glob pattern from an allowlist]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (add) _openclaw_approvals_allowlist_add ;;
- (remove) _openclaw_approvals_allowlist_remove ;;
- esac
- ;;
- esac
-}
-
-_openclaw_approvals() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'get[Fetch exec approvals snapshot]' 'set[Replace exec approvals with a JSON file]' 'allowlist[Edit the per-agent allowlist]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (get) _openclaw_approvals_get ;;
- (set) _openclaw_approvals_set ;;
- (allowlist) _openclaw_approvals_allowlist ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes_status() {
- _arguments -C \
- "--connected[Only show connected nodes]" \
- "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_describe() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_list() {
- _arguments -C \
- "--connected[Only show connected nodes]" \
- "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_pending() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_approve() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_reject() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_rename() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--name[New display name]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_invoke() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--command[Command (e.g. canvas.eval)]" \
- "--params[JSON object string for params]" \
- "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
- "--idempotency-key[Idempotency key (optional)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_run() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--cwd[Working directory]" \
- "--env[Environment override (repeatable)]" \
- "--raw[Run a raw shell command string (sh -lc / cmd.exe /c)]" \
- "--agent[Agent id (default: configured default agent)]" \
- "--ask[Exec ask mode (off|on-miss|always)]" \
- "--security[Exec security mode (deny|allowlist|full)]" \
- "--command-timeout[Command timeout (ms)]" \
- "--needs-screen-recording[Require screen recording permission]" \
- "--invoke-timeout[Node invoke timeout in ms (default 30000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_notify() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--title[Notification title]" \
- "--body[Notification body]" \
- "--sound[Notification sound]" \
- "--priority[Notification priority]" \
- "--delivery[Delivery mode]" \
- "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_push() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--title[Push title]" \
- "--body[Push body]" \
- "--environment[Override APNs environment]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_snapshot() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--format[Image format]" \
- "--max-width[Max width in px (optional)]" \
- "--quality[JPEG quality (optional)]" \
- "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_present() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--target[Target URL/path (optional)]" \
- "--x[Placement x coordinate]" \
- "--y[Placement y coordinate]" \
- "--width[Placement width]" \
- "--height[Placement height]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_hide() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_navigate() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_eval() {
- _arguments -C \
- "--js[JavaScript to evaluate]" \
- "--node[Node id, name, or IP]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_a2ui_push() {
- _arguments -C \
- "--jsonl[Path to JSONL payload]" \
- "--text[Render a quick A2UI text payload]" \
- "--node[Node id, name, or IP]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_a2ui_reset() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--invoke-timeout[Node invoke timeout in ms]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_canvas_a2ui() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'push[Push A2UI JSONL to the canvas]' 'reset[Reset A2UI renderer state]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (push) _openclaw_nodes_canvas_a2ui_push ;;
- (reset) _openclaw_nodes_canvas_a2ui_reset ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes_canvas() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'snapshot[Capture a canvas snapshot (prints MEDIA:)]' 'present[Show the canvas (optionally with a target URL/path)]' 'hide[Hide the canvas]' 'navigate[Navigate the canvas to a URL]' 'eval[Evaluate JavaScript in the canvas]' 'a2ui[Render A2UI content on the canvas]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (snapshot) _openclaw_nodes_canvas_snapshot ;;
- (present) _openclaw_nodes_canvas_present ;;
- (hide) _openclaw_nodes_canvas_hide ;;
- (navigate) _openclaw_nodes_canvas_navigate ;;
- (eval) _openclaw_nodes_canvas_eval ;;
- (a2ui) _openclaw_nodes_canvas_a2ui ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes_camera_list() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_camera_snap() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--facing[Camera facing]" \
- "--device-id[Camera device id (from nodes camera list)]" \
- "--max-width[Max width in px (optional)]" \
- "--quality[JPEG quality (default 0.9)]" \
- "--delay-ms[Delay before capture in ms (macOS default 2000)]" \
- "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_camera_clip() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--facing[Camera facing]" \
- "--device-id[Camera device id (from nodes camera list)]" \
- "--duration[Duration (default 3000ms; supports ms/s/m, e.g. 10s)]" \
- "--no-audio[Disable audio capture]" \
- "--invoke-timeout[Node invoke timeout in ms (default 90000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_camera() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List available cameras on a node]' 'snap[Capture a photo from a node camera (prints MEDIA:)]' 'clip[Capture a short video clip from a node camera (prints MEDIA:)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_nodes_camera_list ;;
- (snap) _openclaw_nodes_camera_snap ;;
- (clip) _openclaw_nodes_camera_clip ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes_screen_record() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--screen[Screen index (0 = primary)]" \
- "--duration[Clip duration (ms or 10s)]" \
- "--fps[Frames per second]" \
- "--no-audio[Disable microphone audio capture]" \
- "--out[Output path]" \
- "--invoke-timeout[Node invoke timeout in ms (default 120000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_screen() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'record[Capture a short screen recording from a node (prints MEDIA:)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (record) _openclaw_nodes_screen_record ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes_location_get() {
- _arguments -C \
- "--node[Node id, name, or IP]" \
- "--max-age[Use cached location newer than this (ms)]" \
- "--accuracy[Desired accuracy (default: balanced/precise depending on node setting)]" \
- "--location-timeout[Location fix timeout (ms)]" \
- "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_nodes_location() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'get[Fetch the current location from a node]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (get) _openclaw_nodes_location_get ;;
- esac
- ;;
- esac
-}
-
-_openclaw_nodes() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'status[List known nodes with connection status and capabilities]' 'describe[Describe a node (capabilities + supported invoke commands)]' 'list[List pending and paired nodes]' 'pending[List pending pairing requests]' 'approve[Approve a pending pairing request]' 'reject[Reject a pending pairing request]' 'rename[Rename a paired node (display name override)]' 'invoke[Invoke a command on a paired node]' 'run[Run a shell command on a node (mac only)]' 'notify[Send a local notification on a node (mac only)]' 'push[Send an APNs test push to an iOS node]' 'canvas[Capture or render canvas content from a paired node]' 'camera[Capture camera media from a paired node]' 'screen[Capture screen recordings from a paired node]' 'location[Fetch location from a paired node]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (status) _openclaw_nodes_status ;;
- (describe) _openclaw_nodes_describe ;;
- (list) _openclaw_nodes_list ;;
- (pending) _openclaw_nodes_pending ;;
- (approve) _openclaw_nodes_approve ;;
- (reject) _openclaw_nodes_reject ;;
- (rename) _openclaw_nodes_rename ;;
- (invoke) _openclaw_nodes_invoke ;;
- (run) _openclaw_nodes_run ;;
- (notify) _openclaw_nodes_notify ;;
- (push) _openclaw_nodes_push ;;
- (canvas) _openclaw_nodes_canvas ;;
- (camera) _openclaw_nodes_camera ;;
- (screen) _openclaw_nodes_screen ;;
- (location) _openclaw_nodes_location ;;
- esac
- ;;
- esac
-}
-
-_openclaw_devices_list() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_remove() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_clear() {
- _arguments -C \
- "--pending[Also reject all pending pairing requests]" \
- "--yes[Confirm destructive clear]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_approve() {
- _arguments -C \
- "--latest[Approve the most recent pending request]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_reject() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_rotate() {
- _arguments -C \
- "--device[Device id]" \
- "--role[Role name]" \
- "--scope[Scopes to attach to the token (repeatable)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices_revoke() {
- _arguments -C \
- "--device[Device id]" \
- "--role[Role name]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (password auth)]" \
- "--timeout[Timeout in ms]" \
- "--json[Output JSON]"
-}
-
-_openclaw_devices() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List pending and paired devices]' 'remove[Remove a paired device entry]' 'clear[Clear paired devices from the gateway table]' 'approve[Approve a pending device pairing request]' 'reject[Reject a pending device pairing request]' 'rotate[Rotate a device token for a role]' 'revoke[Revoke a device token for a role]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_devices_list ;;
- (remove) _openclaw_devices_remove ;;
- (clear) _openclaw_devices_clear ;;
- (approve) _openclaw_devices_approve ;;
- (reject) _openclaw_devices_reject ;;
- (rotate) _openclaw_devices_rotate ;;
- (revoke) _openclaw_devices_revoke ;;
- esac
- ;;
- esac
-}
-
-_openclaw_node_run() {
- _arguments -C \
- "--host[Gateway host]" \
- "--port[Gateway port]" \
- "--tls[Use TLS for the gateway connection]" \
- "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
- "--node-id[Override node id (clears pairing token)]" \
- "--display-name[Override node display name]"
-}
-
-_openclaw_node_status() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_node_install() {
- _arguments -C \
- "--host[Gateway host]" \
- "--port[Gateway port]" \
- "--tls[Use TLS for the gateway connection]" \
- "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
- "--node-id[Override node id (clears pairing token)]" \
- "--display-name[Override node display name]" \
- "--runtime[Service runtime (node|bun). Default: node]" \
- "--force[Reinstall/overwrite if already installed]" \
- "--json[Output JSON]"
-}
-
-_openclaw_node_uninstall() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_node_stop() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_node_restart() {
- _arguments -C \
- "--json[Output JSON]"
-}
-
-_openclaw_node() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'run[Run the headless node host (foreground)]' 'status[Show node host status]' 'install[Install the node host service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the node host service (launchd/systemd/schtasks)]' 'stop[Stop the node host service (launchd/systemd/schtasks)]' 'restart[Restart the node host service (launchd/systemd/schtasks)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (run) _openclaw_node_run ;;
- (status) _openclaw_node_status ;;
- (install) _openclaw_node_install ;;
- (uninstall) _openclaw_node_uninstall ;;
- (stop) _openclaw_node_stop ;;
- (restart) _openclaw_node_restart ;;
- esac
- ;;
- esac
-}
-
-_openclaw_sandbox_list() {
- _arguments -C \
- "--json[Output result as JSON]" \
- "--browser[List browser containers only]"
-}
-
-_openclaw_sandbox_recreate() {
- _arguments -C \
- "--all[Recreate all sandbox containers]" \
- "--session[Recreate container for specific session]" \
- "--agent[Recreate containers for specific agent]" \
- "--browser[Only recreate browser containers]" \
- "--force[Skip confirmation prompt]"
-}
-
-_openclaw_sandbox_explain() {
- _arguments -C \
- "--session[Session key to inspect (defaults to agent main)]" \
- "--agent[Agent id to inspect (defaults to derived agent)]" \
- "--json[Output result as JSON]"
-}
-
-_openclaw_sandbox() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List sandbox containers and their status]' 'recreate[Remove containers to force recreation with updated config]' 'explain[Explain effective sandbox/tool policy for a session/agent]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_sandbox_list ;;
- (recreate) _openclaw_sandbox_recreate ;;
- (explain) _openclaw_sandbox_explain ;;
- esac
- ;;
- esac
-}
-
-_openclaw_tui() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--password[Gateway password (if required)]" \
- "--session[Session key (default: \"main\", or \"global\" when scope is global)]" \
- "--deliver[Deliver assistant replies]" \
- "--thinking[Thinking level override]" \
- "--message[Send an initial message after connecting]" \
- "--timeout-ms[Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)]" \
- "--history-limit[History entries to load]"
-}
-
-_openclaw_cron_status() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_list() {
- _arguments -C \
- "--all[Include disabled jobs]" \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_add() {
- _arguments -C \
- "--name[Job name]" \
- "--description[Optional description]" \
- "--disabled[Create job disabled]" \
- "--delete-after-run[Delete one-shot job after it succeeds]" \
- "--keep-after-run[Keep one-shot job after it succeeds]" \
- "--agent[Agent id for this job]" \
- "--session[Session target (main|isolated)]" \
- "--session-key[Session key for job routing (e.g. agent:my-agent:my-session)]" \
- "--wake[Wake mode (now|next-heartbeat)]" \
- "--at[Run once at time (ISO) or +duration (e.g. 20m)]" \
- "--every[Run every duration (e.g. 10m, 1h)]" \
- "--cron[Cron expression (5-field or 6-field with seconds)]" \
- "--tz[Timezone for cron expressions (IANA)]" \
- "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
- "--exact[Disable cron staggering (set stagger to 0)]" \
- "--system-event[System event payload (main session)]" \
- "--message[Agent message payload]" \
- "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high)]" \
- "--model[Model override for agent jobs (provider/model or alias)]" \
- "--timeout-seconds[Timeout seconds for agent jobs]" \
- "--light-context[Use lightweight bootstrap context for agent jobs]" \
- "--announce[Announce summary to a chat (subagent-style)]" \
- "--deliver[Deprecated (use --announce). Announces a summary to a chat.]" \
- "--no-deliver[Disable announce delivery and skip main-session summary]" \
- "--channel[Delivery channel (last)]" \
- "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
- "--account[Channel account id for delivery (multi-account setups)]" \
- "--best-effort-deliver[Do not fail the job if delivery fails]" \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_rm() {
- _arguments -C \
- "--json[Output JSON]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_enable() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_disable() {
- _arguments -C \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_runs() {
- _arguments -C \
- "--id[Job id]" \
- "--limit[Max entries (default 50)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_run() {
- _arguments -C \
- "--due[Run only when due (default behavior in older versions)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron_edit() {
- _arguments -C \
- "--name[Set name]" \
- "--description[Set description]" \
- "--enable[Enable job]" \
- "--disable[Disable job]" \
- "--delete-after-run[Delete one-shot job after it succeeds]" \
- "--keep-after-run[Keep one-shot job after it succeeds]" \
- "--session[Session target (main|isolated)]" \
- "--agent[Set agent id]" \
- "--clear-agent[Unset agent and use default]" \
- "--session-key[Set session key for job routing]" \
- "--clear-session-key[Unset session key]" \
- "--wake[Wake mode (now|next-heartbeat)]" \
- "--at[Set one-shot time (ISO) or duration like 20m]" \
- "--every[Set interval duration like 10m]" \
- "--cron[Set cron expression]" \
- "--tz[Timezone for cron expressions (IANA)]" \
- "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
- "--exact[Disable cron staggering (set stagger to 0)]" \
- "--system-event[Set systemEvent payload]" \
- "--message[Set agentTurn payload message]" \
- "--thinking[Thinking level for agent jobs]" \
- "--model[Model override for agent jobs]" \
- "--timeout-seconds[Timeout seconds for agent jobs]" \
- "--light-context[Enable lightweight bootstrap context for agent jobs]" \
- "--no-light-context[Disable lightweight bootstrap context for agent jobs]" \
- "--announce[Announce summary to a chat (subagent-style)]" \
- "--deliver[Deprecated (use --announce). Announces a summary to a chat.]" \
- "--no-deliver[Disable announce delivery]" \
- "--channel[Delivery channel (last)]" \
- "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
- "--account[Channel account id for delivery (multi-account setups)]" \
- "--best-effort-deliver[Do not fail job if delivery fails]" \
- "--no-best-effort-deliver[Fail job when delivery fails]" \
- "--failure-alert[Enable failure alerts for this job]" \
- "--no-failure-alert[Disable failure alerts for this job]" \
- "--failure-alert-after[Alert after N consecutive job errors]" \
- "--failure-alert-channel[Failure alert channel (last)]" \
- "--failure-alert-to[Failure alert destination]" \
- "--failure-alert-cooldown[Minimum time between alerts (e.g. 1h, 30m)]" \
- "--failure-alert-mode[Failure alert delivery mode (announce or webhook)]" \
- "--failure-alert-account-id[Account ID for failure alert channel (multi-account setups)]" \
- "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
- "--token[Gateway token (if required)]" \
- "--timeout[Timeout in ms]" \
- "--expect-final[Wait for final response (agent)]"
-}
-
-_openclaw_cron() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'status[Show cron scheduler status]' 'list[List cron jobs]' 'add[Add a cron job]' 'rm[Remove a cron job]' 'enable[Enable a cron job]' 'disable[Disable a cron job]' 'runs[Show cron run history (JSONL-backed)]' 'run[Run a cron job now (debug)]' 'edit[Edit a cron job (patch fields)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (status) _openclaw_cron_status ;;
- (list) _openclaw_cron_list ;;
- (add) _openclaw_cron_add ;;
- (rm) _openclaw_cron_rm ;;
- (enable) _openclaw_cron_enable ;;
- (disable) _openclaw_cron_disable ;;
- (runs) _openclaw_cron_runs ;;
- (run) _openclaw_cron_run ;;
- (edit) _openclaw_cron_edit ;;
- esac
- ;;
- esac
-}
-
-_openclaw_dns_setup() {
- _arguments -C \
- "--domain[Wide-area discovery domain (e.g. openclaw.internal)]" \
- "--apply[Install/update CoreDNS config and (re)start the service (requires sudo)]"
-}
-
-_openclaw_dns() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'setup[Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (setup) _openclaw_dns_setup ;;
- esac
- ;;
- esac
-}
-
-_openclaw_docs() {
- _arguments -C \
-
-}
-
-_openclaw_hooks_list() {
- _arguments -C \
- "--eligible[Show only eligible hooks]" \
- "--json[Output as JSON]" \
- "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]"
-}
-
-_openclaw_hooks_info() {
- _arguments -C \
- "--json[Output as JSON]"
-}
-
-_openclaw_hooks_check() {
- _arguments -C \
- "--json[Output as JSON]"
-}
-
-_openclaw_hooks_enable() {
- _arguments -C \
-
-}
-
-_openclaw_hooks_disable() {
- _arguments -C \
-
-}
-
-_openclaw_hooks_install() {
- _arguments -C \
- "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \
- "--pin[Record npm installs as exact resolved @]"
-}
-
-_openclaw_hooks_update() {
- _arguments -C \
- "--all[Update all tracked hooks]" \
- "--dry-run[Show what would change without writing]"
-}
-
-_openclaw_hooks() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'list[List all hooks]' 'info[Show detailed information about a hook]' 'check[Check hooks eligibility status]' 'enable[Enable a hook]' 'disable[Disable a hook]' 'install[Install a hook pack (path, archive, or npm spec)]' 'update[Update installed hooks (npm installs only)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (list) _openclaw_hooks_list ;;
- (info) _openclaw_hooks_info ;;
- (check) _openclaw_hooks_check ;;
- (enable) _openclaw_hooks_enable ;;
- (disable) _openclaw_hooks_disable ;;
- (install) _openclaw_hooks_install ;;
- (update) _openclaw_hooks_update ;;
- esac
- ;;
- esac
-}
-
-_openclaw_webhooks_gmail_setup() {
- _arguments -C \
- "--account[Gmail account to watch]" \
- "--project[GCP project id (OAuth client owner)]" \
- "--topic[Pub/Sub topic name]" \
- "--subscription[Pub/Sub subscription name]" \
- "--label[Gmail label to watch]" \
- "--hook-url[OpenClaw hook URL]" \
- "--hook-token[OpenClaw hook token]" \
- "--push-token[Push token for gog watch serve]" \
- "--bind[gog watch serve bind host]" \
- "--port[gog watch serve port]" \
- "--path[gog watch serve path]" \
- "--include-body[Include email body snippets]" \
- "--max-bytes[Max bytes for body snippets]" \
- "--renew-minutes[Renew watch every N minutes]" \
- "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
- "--tailscale-path[Path for tailscale serve/funnel]" \
- "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]" \
- "--push-endpoint[Explicit Pub/Sub push endpoint]" \
- "--json[Output JSON summary]"
-}
-
-_openclaw_webhooks_gmail_run() {
- _arguments -C \
- "--account[Gmail account to watch]" \
- "--topic[Pub/Sub topic path (projects/.../topics/..)]" \
- "--subscription[Pub/Sub subscription name]" \
- "--label[Gmail label to watch]" \
- "--hook-url[OpenClaw hook URL]" \
- "--hook-token[OpenClaw hook token]" \
- "--push-token[Push token for gog watch serve]" \
- "--bind[gog watch serve bind host]" \
- "--port[gog watch serve port]" \
- "--path[gog watch serve path]" \
- "--include-body[Include email body snippets]" \
- "--max-bytes[Max bytes for body snippets]" \
- "--renew-minutes[Renew watch every N minutes]" \
- "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
- "--tailscale-path[Path for tailscale serve/funnel]" \
- "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]"
-}
-
-_openclaw_webhooks_gmail() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'setup[Configure Gmail watch + Pub/Sub + OpenClaw hooks]' 'run[Run gog watch serve + auto-renew loop]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (setup) _openclaw_webhooks_gmail_setup ;;
- (run) _openclaw_webhooks_gmail_run ;;
- esac
- ;;
- esac
-}
-
-_openclaw_webhooks() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'gmail[Gmail Pub/Sub hooks (via gogcli)]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (gmail) _openclaw_webhooks_gmail ;;
- esac
- ;;
- esac
-}
-
-_openclaw_qr() {
- _arguments -C \
- "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
- "--url[Override gateway URL used in the setup payload]" \
- "--public-url[Override gateway public URL used in the setup payload]" \
- "--token[Override gateway token for setup payload]" \
- "--password[Override gateway password for setup payload]" \
- "--setup-code-only[Print only the setup code]" \
- "--no-ascii[Skip ASCII QR rendering]" \
- "--json[Output JSON]"
-}
-
-_openclaw_clawbot_qr() {
- _arguments -C \
- "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
- "--url[Override gateway URL used in the setup payload]" \
- "--public-url[Override gateway public URL used in the setup payload]" \
- "--token[Override gateway token for setup payload]" \
- "--password[Override gateway password for setup payload]" \
- "--setup-code-only[Print only the setup code]" \
- "--no-ascii[Skip ASCII QR rendering]" \
- "--json[Output JSON]"
-}
-
-_openclaw_clawbot() {
- local -a commands
- local -a options
-
- _arguments -C \
- \
- "1: :_values 'command' 'qr[Generate an iOS pairing QR code and setup code]'" \
- "*::arg:->args"
-
- case $state in
- (args)
- case $line[1] in
- (qr) _openclaw_clawbot_qr ;;
+ (status) _openclaw_memory_status ;;
+ (index) _openclaw_memory_index ;;
+ (search) _openclaw_memory_search ;;
esac
;;
esac
@@ -3396,8 +3504,9 @@ _openclaw_plugins_list() {
"--verbose[Show detailed entries]"
}
-_openclaw_plugins_info() {
+_openclaw_plugins_inspect() {
_arguments -C \
+ "--all[Inspect all plugins]" \
"--json[Print JSON]"
}
@@ -3422,12 +3531,14 @@ _openclaw_plugins_uninstall() {
_openclaw_plugins_install() {
_arguments -C \
"(--link -l)"{--link,-l}"[Link a local path instead of copying]" \
- "--pin[Record npm installs as exact resolved @]"
+ "--pin[Record npm installs as exact resolved @]" \
+ "--dangerously-force-unsafe-install[Bypass built-in dangerous-code install blocking (plugin hooks may still block)]" \
+ "--marketplace[Install a Claude marketplace plugin from a local repo/path or git/GitHub source]"
}
_openclaw_plugins_update() {
_arguments -C \
- "--all[Update all tracked plugins]" \
+ "--all[Update all tracked plugins and hook packs]" \
"--dry-run[Show what would change without writing]"
}
@@ -3436,26 +3547,50 @@ _openclaw_plugins_doctor() {
}
+_openclaw_plugins_marketplace_list() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_plugins_marketplace() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List plugins published by a marketplace source]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_plugins_marketplace_list ;;
+ esac
+ ;;
+ esac
+}
+
_openclaw_plugins() {
local -a commands
local -a options
_arguments -C \
\
- "1: :_values 'command' 'list[List discovered plugins]' 'info[Show plugin details]' 'enable[Enable a plugin in config]' 'disable[Disable a plugin in config]' 'uninstall[Uninstall a plugin]' 'install[Install a plugin (path, archive, or npm spec)]' 'update[Update installed plugins (npm installs only)]' 'doctor[Report plugin load issues]'" \
+ "1: :_values 'command' 'list[List discovered plugins]' 'inspect[Inspect plugin details]' 'enable[Enable a plugin in config]' 'disable[Disable a plugin in config]' 'uninstall[Uninstall a plugin]' 'install[Install a plugin or hook pack (path, archive, npm spec, clawhub:package, or marketplace entry)]' 'update[Update installed plugins and tracked hook packs]' 'doctor[Report plugin load issues]' 'marketplace[Inspect Claude-compatible plugin marketplaces]'" \
"*::arg:->args"
case $state in
(args)
case $line[1] in
(list) _openclaw_plugins_list ;;
- (info) _openclaw_plugins_info ;;
+ (inspect) _openclaw_plugins_inspect ;;
(enable) _openclaw_plugins_enable ;;
(disable) _openclaw_plugins_disable ;;
(uninstall) _openclaw_plugins_uninstall ;;
(install) _openclaw_plugins_install ;;
(update) _openclaw_plugins_update ;;
(doctor) _openclaw_plugins_doctor ;;
+ (marketplace) _openclaw_plugins_marketplace ;;
esac
;;
esac
@@ -3476,7 +3611,7 @@ _openclaw_channels_status() {
_openclaw_channels_capabilities() {
_arguments -C \
- "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)]" \
+ "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)]" \
"--account[Account id (only with --channel)]" \
"--target[Channel target for permission audit (Discord channel:)]" \
"--timeout[Timeout in ms]" \
@@ -3485,7 +3620,7 @@ _openclaw_channels_capabilities() {
_openclaw_channels_resolve() {
_arguments -C \
- "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)]" \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)]" \
"--account[Account id (accountId)]" \
"--kind[Target kind (auto|user|group)]" \
"--json[Output JSON]"
@@ -3493,17 +3628,18 @@ _openclaw_channels_resolve() {
_openclaw_channels_logs() {
_arguments -C \
- "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)]" \
+ "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)]" \
"--lines[Number of lines (default: 200)]" \
"--json[Output JSON]"
}
_openclaw_channels_add() {
_arguments -C \
- "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)]" \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)]" \
"--account[Account id (default when omitted)]" \
"--name[Display name for this account]" \
"--token[Bot token (Telegram/Discord)]" \
+ "--private-key[Nostr private key (nsec... or hex)]" \
"--token-file[Bot token file (Telegram)]" \
"--bot-token[Slack bot token (xoxb-...)]" \
"--app-token[Slack app token (xapp-...)]" \
@@ -3528,6 +3664,7 @@ _openclaw_channels_add() {
"--initial-sync-limit[Matrix initial sync limit]" \
"--ship[Tlon ship name (~sampel-palnet)]" \
"--url[Tlon ship URL]" \
+ "--relay-urls[Nostr relay URLs (comma-separated)]" \
"--code[Tlon login code]" \
"--group-channels[Tlon group channels (comma-separated)]" \
"--dm-allowlist[Tlon DM allowlist (comma-separated ships)]" \
@@ -3538,7 +3675,7 @@ _openclaw_channels_add() {
_openclaw_channels_remove() {
_arguments -C \
- "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|nostr|msteams|mattermost|nextcloud-talk|feishu|matrix|bluebubbles|line|zalo|wecom|zalouser|synology-chat|tlon)]" \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|line)]" \
"--account[Account id (default when omitted)]" \
"--delete[Delete config entries (no prompt)]"
}
@@ -3676,6 +3813,8 @@ _openclaw_directory() {
_openclaw_security_audit() {
_arguments -C \
"--deep[Attempt live Gateway probe (best-effort)]" \
+ "--token[Use explicit gateway token for deep probe auth]" \
+ "--password[Use explicit gateway password for deep probe auth]" \
"--fix[Apply safe fixes (tighten defaults + chmod state/config)]" \
"--json[Print JSON]"
}
@@ -3710,6 +3849,7 @@ _openclaw_secrets_reload() {
_openclaw_secrets_audit() {
_arguments -C \
"--check[Exit non-zero when findings are present]" \
+ "--allow-exec[Allow exec SecretRef resolution during audit (may execute provider commands)]" \
"--json[Output JSON]"
}
@@ -3720,6 +3860,7 @@ _openclaw_secrets_configure() {
"--providers-only[Configure secrets.providers only, skip credential mapping]" \
"--skip-provider-setup[Skip provider setup and only map credential fields to existing providers]" \
"--agent[Agent id for auth-profiles targets (default: configured default agent)]" \
+ "--allow-exec[Allow exec SecretRef preflight checks (may execute provider commands)]" \
"--plan-out[Write generated plan JSON to a file]" \
"--json[Output JSON]"
}
@@ -3728,6 +3869,7 @@ _openclaw_secrets_apply() {
_arguments -C \
"--from[Path to plan JSON]" \
"--dry-run[Validate/preflight only]" \
+ "--allow-exec[Allow exec SecretRef checks (may execute provider commands)]" \
"--json[Output JSON]"
}
@@ -3752,6 +3894,23 @@ _openclaw_secrets() {
esac
}
+_openclaw_skills_search() {
+ _arguments -C \
+ "--limit[Max results]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_install() {
+ _arguments -C \
+ "--version[Install a specific version]" \
+ "--force[Overwrite an existing workspace skill]"
+}
+
+_openclaw_skills_update() {
+ _arguments -C \
+ "--all[Update all tracked ClawHub skills]"
+}
+
_openclaw_skills_list() {
_arguments -C \
"--json[Output as JSON]" \
@@ -3775,12 +3934,15 @@ _openclaw_skills() {
_arguments -C \
\
- "1: :_values 'command' 'list[List all available skills]' 'info[Show detailed information about a skill]' 'check[Check which skills are ready vs missing requirements]'" \
+ "1: :_values 'command' 'search[Search ClawHub skills]' 'install[Install a skill from ClawHub into the active workspace]' 'update[Update ClawHub-installed skills in the active workspace]' 'list[List all available skills]' 'info[Show detailed information about a skill]' 'check[Check which skills are ready vs missing requirements]'" \
"*::arg:->args"
case $state in
(args)
case $line[1] in
+ (search) _openclaw_skills_search ;;
+ (install) _openclaw_skills_install ;;
+ (update) _openclaw_skills_update ;;
(list) _openclaw_skills_list ;;
(info) _openclaw_skills_info ;;
(check) _openclaw_skills_check ;;
@@ -3809,7 +3971,7 @@ _openclaw_update() {
"--no-restart[Skip restarting the gateway service after a successful update]" \
"--dry-run[Preview update actions without making changes]" \
"--channel[Persist update channel (git + npm)]" \
- "--tag[Override npm dist-tag or version for this update]" \
+ "--tag[Override the package target for this update (dist-tag, version, or package spec)]" \
"--timeout[Timeout for each update step in seconds (default: 1200)]" \
"--yes[Skip confirmation prompts (non-interactive)]" \
"1: :_values 'command' 'wizard[Interactive update wizard]' 'status[Show update channel and version status]'" \
@@ -3826,4 +3988,20 @@ _openclaw_update() {
}
-compdef _openclaw_root_completion openclaw
+_openclaw_register_completion() {
+ if (( ! $+functions[compdef] )); then
+ return 0
+ fi
+
+ compdef _openclaw_root_completion openclaw
+ precmd_functions=(${precmd_functions:#_openclaw_register_completion})
+ unfunction _openclaw_register_completion 2>/dev/null
+}
+
+_openclaw_register_completion
+if (( ! $+functions[compdef] )); then
+ typeset -ga precmd_functions
+ if [[ -z "${precmd_functions[(r)_openclaw_register_completion]}" ]]; then
+ precmd_functions+=(_openclaw_register_completion)
+ fi
+fi
diff --git a/cron/jobs.json b/cron/jobs.json
index a04d290..5591d42 100644
--- a/cron/jobs.json
+++ b/cron/jobs.json
@@ -7,7 +7,7 @@
"name": "backup-openclaw-json",
"enabled": true,
"createdAtMs": 1772261581796,
- "updatedAtMs": 1774980085303,
+ "updatedAtMs": 1775066486496,
"schedule": {
"kind": "cron",
"expr": "0 2 * * *",
@@ -23,10 +23,10 @@
"mode": "announce"
},
"state": {
- "nextRunAtMs": 1775066400000,
- "lastRunAtMs": 1774980000002,
+ "nextRunAtMs": 1775152800000,
+ "lastRunAtMs": 1775066400007,
"lastStatus": "ok",
- "lastDurationMs": 85301,
+ "lastDurationMs": 86489,
"consecutiveErrors": 0,
"lastRunStatus": "ok",
"lastDelivered": true,
@@ -59,7 +59,8 @@
"consecutiveErrors": 0,
"lastRunStatus": "ok",
"lastDeliveryStatus": "delivered",
- "lastDelivered": true
+ "lastDelivered": true,
+ "runningAtMs": 1775067000003
},
"delivery": {
"mode": "announce"
@@ -71,7 +72,7 @@
"name": "capability-evolver-daily",
"enabled": true,
"createdAtMs": 1772550743528,
- "updatedAtMs": 1774895342153,
+ "updatedAtMs": 1774981504740,
"schedule": {
"kind": "cron",
"expr": "20 2 * * *",
@@ -92,16 +93,16 @@
"to": "feishu-pm"
},
"state": {
- "nextRunAtMs": 1774981200000,
- "lastRunAtMs": 1774894800028,
- "lastStatus": "error",
- "lastDurationMs": 542125,
- "consecutiveErrors": 8,
- "lastRunStatus": "error",
+ "nextRunAtMs": 1775067600000,
+ "lastRunAtMs": 1774981200004,
+ "lastStatus": "ok",
+ "lastDurationMs": 304736,
+ "consecutiveErrors": 0,
+ "lastRunStatus": "ok",
"lastDeliveryStatus": "not-delivered",
"lastDelivered": false,
- "lastDeliveryError": "Unhandled stop reason: network_error",
- "runningAtMs": 1774981200003
+ "lastDeliveryError": "cron announce delivery failed",
+ "lastError": "cron announce delivery failed"
}
},
{
@@ -111,7 +112,7 @@
"description": "每天凌晨2:30整理昨天的已完成任务到每日回顾",
"enabled": true,
"createdAtMs": 1741484880000,
- "updatedAtMs": 1774895440826,
+ "updatedAtMs": 1774981848642,
"schedule": {
"kind": "cron",
"expr": "30 2 * * *",
@@ -129,11 +130,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1774981800000,
- "lastRunAtMs": 1774895400005,
+ "nextRunAtMs": 1775068200000,
+ "lastRunAtMs": 1774981800004,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 40821,
+ "lastDurationMs": 48638,
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0
@@ -145,7 +146,7 @@
"name": "zq_workspace_sync",
"enabled": true,
"createdAtMs": 1772551807455,
- "updatedAtMs": 1774896000005,
+ "updatedAtMs": 1774982400012,
"schedule": {
"expr": "40 2 * * *",
"kind": "cron",
@@ -158,8 +159,8 @@
"text": "执行 zq 工作区同步:bash ~/.openclaw/cron/scripts/zq_workspace_sync.sh"
},
"state": {
- "nextRunAtMs": 1774982400000,
- "lastRunAtMs": 1774896000004,
+ "nextRunAtMs": 1775068800000,
+ "lastRunAtMs": 1774982400011,
"lastStatus": "skipped",
"lastDurationMs": 1,
"consecutiveErrors": 0,
@@ -175,7 +176,7 @@
"description": "每天早上8点整理与各个 AI 代理的对话记录",
"enabled": true,
"createdAtMs": 1772776369645,
- "updatedAtMs": 1774915362175,
+ "updatedAtMs": 1775001691978,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
@@ -193,11 +194,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1775001600000,
- "lastRunAtMs": 1774915200004,
+ "nextRunAtMs": 1775088000000,
+ "lastRunAtMs": 1775001600006,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 162171,
+ "lastDurationMs": 91972,
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0
@@ -210,7 +211,7 @@
"description": "每天7点同步提醒到CalDAV日历",
"enabled": true,
"createdAtMs": 1772791528528,
- "updatedAtMs": 1774911657919,
+ "updatedAtMs": 1774998019333,
"schedule": {
"kind": "cron",
"expr": "0 7 * * *",
@@ -228,11 +229,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1774998000000,
- "lastRunAtMs": 1774911600005,
+ "nextRunAtMs": 1775084400000,
+ "lastRunAtMs": 1774998000003,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 57914,
+ "lastDurationMs": 19330,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0,
"lastDelivered": true
@@ -281,7 +282,7 @@
"description": "每日收盘后跟踪中国核建(601611)股价走势",
"enabled": true,
"createdAtMs": 1774231320000,
- "updatedAtMs": 1774942391466,
+ "updatedAtMs": 1775028932359,
"schedule": {
"kind": "cron",
"expr": "30 15 * * 1-5",
@@ -299,15 +300,16 @@
"to": "user:ou_9847ce84b960736c14554730b41e4957"
},
"state": {
- "nextRunAtMs": 1775028600000,
- "lastRunAtMs": 1774942200013,
+ "nextRunAtMs": 1775115000000,
+ "lastRunAtMs": 1775028600004,
"lastRunStatus": "error",
"lastStatus": "error",
- "lastDurationMs": 191453,
- "lastDelivered": true,
- "lastDeliveryStatus": "delivered",
- "consecutiveErrors": 7,
- "lastError": "⚠️ ✉️ Message failed"
+ "lastDurationMs": 332355,
+ "lastDelivered": false,
+ "lastDeliveryStatus": "not-delivered",
+ "consecutiveErrors": 8,
+ "lastError": "⚠️ ✉️ Message failed",
+ "lastDeliveryError": "⚠️ ✉️ Message failed"
}
},
{
@@ -317,7 +319,7 @@
"description": "每日收盘后跟踪中国海油(600938)股价走势",
"enabled": true,
"createdAtMs": 1774231920000,
- "updatedAtMs": 1774942503832,
+ "updatedAtMs": 1775029121967,
"schedule": {
"kind": "cron",
"expr": "30 15 * * 1-5",
@@ -335,15 +337,14 @@
"to": "user:ou_9847ce84b960736c14554730b41e4957"
},
"state": {
- "nextRunAtMs": 1775028600000,
- "lastRunAtMs": 1774942391466,
- "lastRunStatus": "error",
- "lastStatus": "error",
- "lastDurationMs": 112366,
+ "nextRunAtMs": 1775115000000,
+ "lastRunAtMs": 1775028932359,
+ "lastRunStatus": "ok",
+ "lastStatus": "ok",
+ "lastDurationMs": 189608,
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
- "consecutiveErrors": 6,
- "lastError": "⚠️ ✉️ Message failed"
+ "consecutiveErrors": 0
}
},
{
@@ -353,7 +354,7 @@
"description": "每天早上8点追踪热点新闻并推送",
"enabled": true,
"createdAtMs": 1774274400000,
- "updatedAtMs": 1774915657533,
+ "updatedAtMs": 1775001878146,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
@@ -371,16 +372,16 @@
"to": "user:ou_9847ce84b960736c14554730b41e4957"
},
"state": {
- "nextRunAtMs": 1775001600000,
- "lastRunAtMs": 1774915362175,
+ "nextRunAtMs": 1775088000000,
+ "lastRunAtMs": 1775001691978,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 295358,
+ "lastDurationMs": 186168,
"lastDelivered": false,
"lastDeliveryStatus": "not-delivered",
"consecutiveErrors": 0,
- "lastError": "cron announce delivery failed",
- "lastDeliveryError": "cron announce delivery failed"
+ "lastDeliveryError": "cron announce delivery failed",
+ "lastError": "cron announce delivery failed"
}
}
]
diff --git a/cron/jobs.json.bak b/cron/jobs.json.bak
index ce3f5d1..5113970 100644
--- a/cron/jobs.json.bak
+++ b/cron/jobs.json.bak
@@ -71,7 +71,7 @@
"name": "capability-evolver-daily",
"enabled": true,
"createdAtMs": 1772550743528,
- "updatedAtMs": 1774895342153,
+ "updatedAtMs": 1774981504740,
"schedule": {
"kind": "cron",
"expr": "20 2 * * *",
@@ -92,16 +92,16 @@
"to": "feishu-pm"
},
"state": {
- "nextRunAtMs": 1774981200000,
- "lastRunAtMs": 1774894800028,
- "lastStatus": "error",
- "lastDurationMs": 542125,
- "consecutiveErrors": 8,
- "lastRunStatus": "error",
+ "nextRunAtMs": 1775067600000,
+ "lastRunAtMs": 1774981200004,
+ "lastStatus": "ok",
+ "lastDurationMs": 304736,
+ "consecutiveErrors": 0,
+ "lastRunStatus": "ok",
"lastDeliveryStatus": "not-delivered",
"lastDelivered": false,
- "lastDeliveryError": "Unhandled stop reason: network_error",
- "lastError": "Unhandled stop reason: network_error"
+ "lastDeliveryError": "cron announce delivery failed",
+ "lastError": "cron announce delivery failed"
}
},
{
@@ -111,7 +111,7 @@
"description": "每天凌晨2:30整理昨天的已完成任务到每日回顾",
"enabled": true,
"createdAtMs": 1741484880000,
- "updatedAtMs": 1774895440826,
+ "updatedAtMs": 1774981848642,
"schedule": {
"kind": "cron",
"expr": "30 2 * * *",
@@ -129,11 +129,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1774981800000,
- "lastRunAtMs": 1774895400005,
+ "nextRunAtMs": 1775068200000,
+ "lastRunAtMs": 1774981800004,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 40821,
+ "lastDurationMs": 48638,
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0
@@ -145,7 +145,7 @@
"name": "zq_workspace_sync",
"enabled": true,
"createdAtMs": 1772551807455,
- "updatedAtMs": 1774896000005,
+ "updatedAtMs": 1774982400012,
"schedule": {
"expr": "40 2 * * *",
"kind": "cron",
@@ -158,8 +158,8 @@
"text": "执行 zq 工作区同步:bash ~/.openclaw/cron/scripts/zq_workspace_sync.sh"
},
"state": {
- "nextRunAtMs": 1774982400000,
- "lastRunAtMs": 1774896000004,
+ "nextRunAtMs": 1775068800000,
+ "lastRunAtMs": 1774982400011,
"lastStatus": "skipped",
"lastDurationMs": 1,
"consecutiveErrors": 0,
@@ -175,7 +175,7 @@
"description": "每天早上8点整理与各个 AI 代理的对话记录",
"enabled": true,
"createdAtMs": 1772776369645,
- "updatedAtMs": 1774915362175,
+ "updatedAtMs": 1775001691978,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
@@ -193,11 +193,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1775001600000,
- "lastRunAtMs": 1774915200004,
+ "nextRunAtMs": 1775088000000,
+ "lastRunAtMs": 1775001600006,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 162171,
+ "lastDurationMs": 91972,
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0
@@ -210,7 +210,7 @@
"description": "每天7点同步提醒到CalDAV日历",
"enabled": true,
"createdAtMs": 1772791528528,
- "updatedAtMs": 1774911657919,
+ "updatedAtMs": 1774998019333,
"schedule": {
"kind": "cron",
"expr": "0 7 * * *",
@@ -228,11 +228,11 @@
"channel": "last"
},
"state": {
- "nextRunAtMs": 1774998000000,
- "lastRunAtMs": 1774911600005,
+ "nextRunAtMs": 1775084400000,
+ "lastRunAtMs": 1774998000003,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 57914,
+ "lastDurationMs": 19330,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 0,
"lastDelivered": true
@@ -307,7 +307,7 @@
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 7,
- "lastError": "⚠️ ✉️ Message failed"
+ "runningAtMs": 1775028600003
}
},
{
@@ -343,7 +343,7 @@
"lastDelivered": true,
"lastDeliveryStatus": "delivered",
"consecutiveErrors": 6,
- "lastError": "⚠️ ✉️ Message failed"
+ "runningAtMs": 1775028600003
}
},
{
@@ -353,7 +353,7 @@
"description": "每天早上8点追踪热点新闻并推送",
"enabled": true,
"createdAtMs": 1774274400000,
- "updatedAtMs": 1774915657533,
+ "updatedAtMs": 1775001878146,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
@@ -371,16 +371,16 @@
"to": "user:ou_9847ce84b960736c14554730b41e4957"
},
"state": {
- "nextRunAtMs": 1775001600000,
- "lastRunAtMs": 1774915362175,
+ "nextRunAtMs": 1775088000000,
+ "lastRunAtMs": 1775001691978,
"lastRunStatus": "ok",
"lastStatus": "ok",
- "lastDurationMs": 295358,
+ "lastDurationMs": 186168,
"lastDelivered": false,
"lastDeliveryStatus": "not-delivered",
"consecutiveErrors": 0,
- "lastError": "cron announce delivery failed",
- "lastDeliveryError": "cron announce delivery failed"
+ "lastDeliveryError": "cron announce delivery failed",
+ "lastError": "cron announce delivery failed"
}
}
]
diff --git a/delivery-queue/0228a2a5-ff3a-43ab-91ad-07dc8975ce62.json b/delivery-queue/0228a2a5-ff3a-43ab-91ad-07dc8975ce62.json
index b6a7dc2..339d84f 100644
--- a/delivery-queue/0228a2a5-ff3a-43ab-91ad-07dc8975ce62.json
+++ b/delivery-queue/0228a2a5-ff3a-43ab-91ad-07dc8975ce62.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "📊 **每日 Capability Evolver 运行报告**\n📅 时间:2026-03-28 02:21:02 CST\n\n---\n\n### 📦 Git 备份信息\n**Auto backup before evolver run**\n- Commit: `890fb04`\n- 变更:4 files changed, 117 insertions(+), 64 deletions(-)\n- 推送:c1d9d44..890fb04 → main\n\n---\n\n### 🔄 本次 Evolver 变更\n**Evolver auto evolution**\n- Commit: `c2ed23d`\n- 变更:6 files changed, 551 insertions(+), 14 deletions(-)\n- 推送:890fb04..c2ed23d → main\n\n**新增文件:**\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.json`\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.txt`\n\n**修改文件:**\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n---\n\n### 🔍 运行详情\n- **状态**:✅ 成功 (exit code: 0)\n- **检测信号**:memory_missing, session_logs_missing\n- **使用基因**:gene_gep_repair_from_errors\n- **推荐意图**:optimize\n\n---\n\n✅ **任务完成**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635793759,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482007,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/0e06823e-856f-4c84-954a-d975e4875135.json b/delivery-queue/0e06823e-856f-4c84-954a-d975e4875135.json
index 99fa031..c4a9ef7 100644
--- a/delivery-queue/0e06823e-856f-4c84-954a-d975e4875135.json
+++ b/delivery-queue/0e06823e-856f-4c84-954a-d975e4875135.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "## ✅ 任务执行完成\n\n### 📊 执行摘要\n\n**1. 脚本执行成功** ✅\n- 已执行 `bash ~/.openclaw/cron/scripts/evolver-run.sh`\n- 脚本返回退出码 0,无错误\n\n**2. Git 备份提交** ✅\n- **提交 1**: `Auto backup before evolver run`\n - 变更: 4 files changed, 70 insertions(+), 64 deletions(-)\n - 推送: main → gitea-account:starmen1265/openclaw.git\n \n- **提交 2**: `Evolver auto evolution`\n - 变更: 6 files changed, 551 insertions(+), 14 deletions(-)\n - 推送: main → gitea-account:starmen1265/openclaw.git\n\n**3. 修改的文件**\n- `M memory/evolution/evolution_solidify_state.json`\n- `M memory/evolution/evolution_state.json`\n- `M memory/evolution/memory_graph_state.json`\n- `M memory/evolution/personality_state.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.txt`\n\n---\n\n### ⚠️ Feishu 通知发送问题\n\n由于无法获取蒋先生的私聊 chat_id,无法通过 Feishu 直接发送报告。\n\n**解决方案**:\n1. 详细报告位置:`~/work/backup/evolver-output.txt`\n2. 当前会话也会显示完整信息\n\n**建议**:启动一个与蒋先生的 Feishu 私聊会话后,可以再次尝试发送报告。\n\n---\n\n### 📊 概要\n\n- **备份提交**: e8e2a63 → 85e7926\n- **变更文件**: 6 个 (4 修改 + 2 新增)\n- **变更行数**: 551 行新增, 14 行删除\n- **GEP Cycle**: #0016\n- **运行时间**: 2026年 03月 21日 星期六 02:20:04 CST\n\n🔄 **Evolver 系统正常运行中**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774030971894,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476820,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/13b7b8da-159f-4424-a515-8e8955f7557d.json b/delivery-queue/13b7b8da-159f-4424-a515-8e8955f7557d.json
index dc8de49..a11146e 100644
--- a/delivery-queue/13b7b8da-159f-4424-a515-8e8955f7557d.json
+++ b/delivery-queue/13b7b8da-159f-4424-a515-8e8955f7557d.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "🔄 **Capability Evolver 每日报告** (Cycle #0016)\n\n📅 **时间**: 2026年 03月 21日 星期六 02:20:04 CST\n\n---\n\n### 📦 Git 备份\n\n**提交 1 - 自动备份**\n- 提交信息: `Auto backup before evolver run`\n- 变更: 4 files changed, 70 insertions(+), 64 deletions(-)\n- 推送: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 🧬 Evolver 运行结果\n\n**模式**: repair-only\n**意图**: UNKNOWN (未匹配到匹配的 Gene)\n**状态**: 已执行 (通过 sessions_spawn 启动 executor agent)\n\n**执行内容**:\n- 分析信号: `memory_missing`, `session_logs_missing`\n- 通过 GEP 协议启动 executor agent 应用变更\n- 执行 GEP prompt (Cycle #0016)\n\n---\n\n### 📝 本次变更\n\n**提交 2 - Evolver 自动进化**\n- 提交信息: `Evolver auto evolution`\n- 变更: 6 files changed, 551 insertions(+), 14 deletions(-)\n\n**修改的文件**:\n- `M memory/evolution/evolution_solidify_state.json`\n- `M memory/evolution/evolution_state.json`\n- `M memory/evolution/memory_graph_state.json`\n- `M memory/evolution/personality_state.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.txt`\n\n**推送**: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 📊 概要\n\n- **备份提交**: e8e2a63 → 85e7926\n- **变更文件**: 6 个 (4 修改 + 2 新增)\n- **变更行数**: 551 行新增, 14 行删除\n- **GEP Cycle**: #0016\n\n🔄 **Evolver 系统正常运行中**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774030914286,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476565,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/14961745-cdbb-49f9-94b7-1d7ff08bfcb3.json b/delivery-queue/14961745-cdbb-49f9-94b7-1d7ff08bfcb3.json
index cdb2322..8d80d97 100644
--- a/delivery-queue/14961745-cdbb-49f9-94b7-1d7ff08bfcb3.json
+++ b/delivery-queue/14961745-cdbb-49f9-94b7-1d7ff08bfcb3.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "【中国海油每日跟踪】2026-03-25 15:35\n\n📊 **股价数据**\n- 最新价:40.55元(-3.34%)\n- 昨收:41.95元\n- ⚠️ 逼近40元支撑位(距离仅1.4%)\n\n🛢️ **油价动态**\n- 布伦特原油:96.15美元/桶(-4.1%)\n- 油价暴跌6%,跌破100美元关口\n- 原因:中东局势可能降温\n\n🌍 **地缘政治**\n- 霍尔木兹海峡仍被伊朗关闭\n- 美国要求48小时内开放\n- 联合国警告局势可能失控\n\n⚠️ **风险提示**\n1. 股价逼近40元支撑,若跌破可能加速下行\n2. 油价暴跌短期拖累股价\n3. 地缘政治若缓和,风险溢价可能消退\n\n💡 **操作建议**\n- 谨慎观望,等待企稳信号\n- 若跌破40元需考虑止损\n- 中长期仍看好地缘政治溢价\n\n详细报告:~/work/zq/30.资源/股票跟踪/600938_tracking.md"
},
- "retryCount": 1,
- "lastAttemptAt": 1774424334673,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481253,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/1aa7c240-bc53-419b-a587-a1173e38bfef.json b/delivery-queue/1aa7c240-bc53-419b-a587-a1173e38bfef.json
index 1ec404e..e2fad77 100644
--- a/delivery-queue/1aa7c240-bc53-419b-a587-a1173e38bfef.json
+++ b/delivery-queue/1aa7c240-bc53-419b-a587-a1173e38bfef.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "Capability Evolver 每日报告"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117474334,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478107,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/1cdc4c53-293c-4117-bf0d-fee300225e52.json b/delivery-queue/1cdc4c53-293c-4117-bf0d-fee300225e52.json
index 5d09881..19a96f4 100644
--- a/delivery-queue/1cdc4c53-293c-4117-bf0d-fee300225e52.json
+++ b/delivery-queue/1cdc4c53-293c-4117-bf0d-fee300225e52.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "📊 每日热点新闻简报已生成完成!\n\n**地缘政治领域:**\n- 中东局势升级:美国\"的黎波里号\"两栖攻击舰抵达中东,美以伊冲突从\"速决\"变\"拉锯\"\n- 俄乌战争:乌克兰南部战线收复435平方公里,战场格局出现新变化\n\n**科技产业领域:**\n- AI大厂洗牌:OpenAI关停Sora视频生成工具,2026年AI竞争进入白热化阶段\n- 新能源突破:固态电池产业加速发展,马斯克承认中国算力霸权\n\n**详细报告已保存至:** ~/work/zq/30.资源/新闻简报/2026-03-30.md\n\n🔍 报告包含详细新闻来源、时间节点和影响分析,供您参考决策。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774829059161,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483423,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/1e130efe-6fbf-4fa3-a159-f5804e0aa5e8.json b/delivery-queue/1e130efe-6fbf-4fa3-a159-f5804e0aa5e8.json
new file mode 100644
index 0000000..fea740f
--- /dev/null
+++ b/delivery-queue/1e130efe-6fbf-4fa3-a159-f5804e0aa5e8.json
@@ -0,0 +1,21 @@
+{
+ "id": "1e130efe-6fbf-4fa3-a159-f5804e0aa5e8",
+ "enqueuedAt": 1774981504571,
+ "channel": "feishu",
+ "to": "feishu-pm",
+ "accountId": "feishu-pm",
+ "payloads": [
+ {
+ "text": "我来执行每日 capability-evolver 任务。"
+ }
+ ],
+ "threadId": null,
+ "mirror": {
+ "sessionKey": "agent:haonan:main",
+ "agentId": "haonan",
+ "text": "我来执行每日 capability-evolver 任务。"
+ },
+ "retryCount": 3,
+ "lastAttemptAt": 1775056484324,
+ "lastError": "Request failed with status code 400"
+}
\ No newline at end of file
diff --git a/delivery-queue/1f2f0467-c348-45b4-9913-bf73993022ca.json b/delivery-queue/1f2f0467-c348-45b4-9913-bf73993022ca.json
index 17837f9..2b8d8f0 100644
--- a/delivery-queue/1f2f0467-c348-45b4-9913-bf73993022ca.json
+++ b/delivery-queue/1f2f0467-c348-45b4-9913-bf73993022ca.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "OK"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117528550,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478954,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/22794bc7-0df8-4b78-b668-bf29459e04d5.json b/delivery-queue/22794bc7-0df8-4b78-b668-bf29459e04d5.json
index be1b77f..5bd7717 100644
--- a/delivery-queue/22794bc7-0df8-4b78-b668-bf29459e04d5.json
+++ b/delivery-queue/22794bc7-0df8-4b78-b668-bf29459e04d5.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117358108,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056477383,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/2cd61800-1797-406e-b53f-c94cdc8bfee1.json b/delivery-queue/2cd61800-1797-406e-b53f-c94cdc8bfee1.json
index 1b15f9b..61b41e0 100644
--- a/delivery-queue/2cd61800-1797-406e-b53f-c94cdc8bfee1.json
+++ b/delivery-queue/2cd61800-1797-406e-b53f-c94cdc8bfee1.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "## 📊 中国海油 (600938) 每日跟踪 - 2026-03-27\n\n### 收盘数据\n- **收盘价**: 41.07 元 (+0.34%)\n- **成交量**: 53.36 万手(缩量16.2%)\n- **成交额**: 21.78 亿元\n\n### 技术位\n- 压力: 44.54元(前高,+8.4%)\n- 支撑: 40.00元(今日最低40.37,守住)\n\n### 主力资金\n- 主力净流入: **-3,688万**(小幅流出)\n- 大单: +4,407万(净流入)✅\n\n### 📋 信号判断\n| 信号 | 状态 |\n|------|------|\n| 守住40元支撑 | ✅ |\n| 突破前高 | ❌ 距8.4% |\n| 放量突破 | ❌ 缩量 |\n\n### 📝 操作建议\n- 📊 **震荡整理**:连续两日小幅上涨,缩量显示上攻动能不足\n- ✅ **持有观望**:支撑有效,风险可控\n- ⚠️ **关注放量**:等待突破44.54元确认信号\n\n---\n📁 详细报告已保存至 `~/work/zq/30.资源/股票跟踪/600938_tracking.md`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774597021406,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481785,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/3348f0c9-5786-489b-853e-56c38f6b78ee.json b/delivery-queue/3348f0c9-5786-489b-853e-56c38f6b78ee.json
index ddd275f..9945858 100644
--- a/delivery-queue/3348f0c9-5786-489b-853e-56c38f6b78ee.json
+++ b/delivery-queue/3348f0c9-5786-489b-853e-56c38f6b78ee.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117408857,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056477792,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/35344b7e-58b7-4063-9648-9f448556ea7f.json b/delivery-queue/35344b7e-58b7-4063-9648-9f448556ea7f.json
index 9385317..a192772 100644
--- a/delivery-queue/35344b7e-58b7-4063-9648-9f448556ea7f.json
+++ b/delivery-queue/35344b7e-58b7-4063-9648-9f448556ea7f.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "Evolver报告已生成"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117502303,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478453,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/35bc8c67-246b-4688-b0ae-9bfb6c560e17.json b/delivery-queue/35bc8c67-246b-4688-b0ae-9bfb6c560e17.json
index 87971c2..05a10bb 100644
--- a/delivery-queue/35bc8c67-246b-4688-b0ae-9bfb6c560e17.json
+++ b/delivery-queue/35bc8c67-246b-4688-b0ae-9bfb6c560e17.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117310429,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476992,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/3b929ae3-e397-4a4a-8fdf-7245b4d949fe.json b/delivery-queue/3b929ae3-e397-4a4a-8fdf-7245b4d949fe.json
index 672c4f3..970e3b4 100644
--- a/delivery-queue/3b929ae3-e397-4a4a-8fdf-7245b4d949fe.json
+++ b/delivery-queue/3b929ae3-e397-4a4a-8fdf-7245b4d949fe.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "🔄 **Capability Evolver 每日报告** (Cycle #0016)\n\n📅 **时间**: 2026年 03月 21日 星期六 02:20:04 CST\n\n---\n\n### 📦 Git 备份\n\n**提交 1 - 自动备份**\n- 提交信息: `Auto backup before evolver run`\n- 变更: 4 files changed, 70 insertions(+), 64 deletions(-)\n- 推送: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 🧬 Evolver 运行结果\n\n**模式**: repair-only\n**意图**: UNKNOWN (未匹配到匹配的 Gene)\n**状态**: 已执行 (通过 sessions_spawn 启动 executor agent)\n\n**执行内容**:\n- 分析信号: `memory_missing`, `session_logs_missing`\n- 通过 GEP 协议启动 executor agent 应用变更\n- 执行 GEP prompt (Cycle #0016)\n\n---\n\n### 📝 本次变更\n\n**提交 2 - Evolver 自动进化**\n- 提交信息: `Evolver auto evolution`\n- 变更: 6 files changed, 551 insertions(+), 14 deletions(-)\n\n**修改的文件**:\n- `M memory/evolution/evolution_solidify_state.json`\n- `M memory/evolution/evolution_state.json`\n- `M memory/evolution/memory_graph_state.json`\n- `M memory/evolution/personality_state.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.txt`\n\n**推送**: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 📊 概要\n\n- **备份提交**: e8e2a63 → 85e7926\n- **变更文件**: 6 个 (4 修改 + 2 新增)\n- **变更行数**: 551 行新增, 14 行删除\n- **GEP Cycle**: #0016\n\n🔄 **Evolver 系统正常运行中**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774030949250,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476701,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/4cb6bae4-195c-4b1b-b822-0b0419f84fe0.json b/delivery-queue/4cb6bae4-195c-4b1b-b822-0b0419f84fe0.json
index b4c0af9..b9372e6 100644
--- a/delivery-queue/4cb6bae4-195c-4b1b-b822-0b0419f84fe0.json
+++ b/delivery-queue/4cb6bae4-195c-4b1b-b822-0b0419f84fe0.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "## ✅ 任务完成报告\n\n### 执行结果\n\n**Capability Evolver 每日任务已执行完成**\n\n### 1. 脚本执行\n- ✅ 已执行:`bash ~/.openclaw/cron/scripts/evolver-run.sh`\n- 执行时间:2026年03月26日 02:20:03 CST\n\n### 2. 执行统计\n- **备份提交**:4 文件,+69/-63 行\n- **演化提交**:6 文件,+550/-13 行\n- **总变更**:10 文件,+619/-76 行\n\n### 3. 变更详情\n**修改的文件 (4个)**\n1. `memory/evolution/evolution_solidify_state.json`\n2. `memory/evolution/evolution_state.json`\n3. `memory/evolution/memory_graph_state.json`\n4. `memory/evolution/personality_state.json`\n\n**新增的文件 (2个)**\n1. `memory/evolution/gep_prompt_Cycle_#0020_run_1774462805433.json`\n2. `memory/evolution/gep_prompt_Cycle_#0020_run_1774462805433.txt`\n\n### 4. 演化意图\n**修复 (REPAIR)** - 针对信号:\n- memory_missing\n- session_logs_missing\n\n### 5. 报告文件\n已生成详细报告:`~/work/backup/capability-evolver-report-2026-03-26.md`\n\n### 6. Feishu 发送\n⚠️ **遇到技术问题**:无法通过 Feishu 发送消息,可能是工具配置或权限问题。\n\n**报告已保存到文件**,您可以在以下位置查看:\n- 文件路径:`~/work/backup/capability-evolver-report-2026-03-26.md`\n- 完整日志:`~/work/backup/evolver-output.txt`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774462886236,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481396,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/4d3df66c-35d4-4d88-8506-cfa75bff9769.json b/delivery-queue/4d3df66c-35d4-4d88-8506-cfa75bff9769.json
index 88e74c9..25fba41 100644
--- a/delivery-queue/4d3df66c-35d4-4d88-8506-cfa75bff9769.json
+++ b/delivery-queue/4d3df66c-35d4-4d88-8506-cfa75bff9769.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "每日 Capability Evolver 运行完成"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635869949,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482616,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/4dba996d-1752-40dd-acf4-0054de9eb795.json b/delivery-queue/4dba996d-1752-40dd-acf4-0054de9eb795.json
index 58980ab..aa0e2d7 100644
--- a/delivery-queue/4dba996d-1752-40dd-acf4-0054de9eb795.json
+++ b/delivery-queue/4dba996d-1752-40dd-acf4-0054de9eb795.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "测试消息"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117492442,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478306,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/4fc86186-2da4-429e-bfa2-9ca95444143b.json b/delivery-queue/4fc86186-2da4-429e-bfa2-9ca95444143b.json
index 4ecbe38..0d79603 100644
--- a/delivery-queue/4fc86186-2da4-429e-bfa2-9ca95444143b.json
+++ b/delivery-queue/4fc86186-2da4-429e-bfa2-9ca95444143b.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "已执行 capability-evolver 任务,但 feishu 发送失败(需要正确的 chatId)。以下是执行摘要:\n\n---\n\n## ✅ 执行完成\n\n**时间**:2026年03月18日 02:20 CST\n\n### 🔄 Git 备份\n- 备份提交:9db6a2c → 4d8f814\n- 已推送到 gitea-nas\n\n### 📊 变更统计\n- **6 个文件变更**\n- **+551 行 / -14 行**\n\n### 📝 修改文件\n1. `memory/evolution/evolution_solidify_state.json`\n2. `memory/evolution/evolution_state.json`\n3. `memory/evolution/memory_graph_state.json`\n4. `memory/evolution/personality_state.json`\n5. `memory/evolution/gep_prompt_Cycle_#0013_run_1773771608076.json` (新)\n6. `memory/evolution/gep_prompt_Cycle_#0013_run_1773771608076.txt` (新)\n\n### 🎯 运行摘要\n- **意图**:UNKNOWN(信号:memory_missing, session_logs_missing)\n- **策略**:Generic - 分析信号 → 选择/创建 Gene → 最小变更 → 验证 → 固化\n- **状态**:SUCCESS\n\n⚠️ **注意**:因 feishu 目标错误,未能发送完整报告。如需报告,请提供正确的 chatId 或 open_id。"
},
- "retryCount": 1,
- "lastAttemptAt": 1773771643128,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056475784,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/52f2ef74-60e5-45ee-be2b-ab6e908684ee.json b/delivery-queue/52f2ef74-60e5-45ee-be2b-ab6e908684ee.json
index ed3a274..5cdb1c9 100644
--- a/delivery-queue/52f2ef74-60e5-45ee-be2b-ab6e908684ee.json
+++ b/delivery-queue/52f2ef74-60e5-45ee-be2b-ab6e908684ee.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "测试消息"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635799021,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482132,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/5422080f-d592-449d-8e48-80c74bf1eaec.json b/delivery-queue/5422080f-d592-449d-8e48-80c74bf1eaec.json
index f3c3662..4f831c8 100644
--- a/delivery-queue/5422080f-d592-449d-8e48-80c74bf1eaec.json
+++ b/delivery-queue/5422080f-d592-449d-8e48-80c74bf1eaec.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "每日 Capability Evolver 运行完成\n\nGit 备份: 890fb04\nEvolver 变更: c2ed23d\n新增 2 个文件,修改 4 个文件\n状态: 成功"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635856264,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482522,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/55e955d5-7d29-4597-80d5-b5dcfb73b2bc.json b/delivery-queue/55e955d5-7d29-4597-80d5-b5dcfb73b2bc.json
index a216d12..775b2fc 100644
--- a/delivery-queue/55e955d5-7d29-4597-80d5-b5dcfb73b2bc.json
+++ b/delivery-queue/55e955d5-7d29-4597-80d5-b5dcfb73b2bc.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117351905,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056477178,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/56b7e288-be32-4ceb-8ad1-98a35e48f4c2.json b/delivery-queue/56b7e288-be32-4ceb-8ad1-98a35e48f4c2.json
index 9544f77..210cee8 100644
--- a/delivery-queue/56b7e288-be32-4ceb-8ad1-98a35e48f4c2.json
+++ b/delivery-queue/56b7e288-be32-4ceb-8ad1-98a35e48f4c2.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117425087,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056477995,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/68387b22-d0f5-45e0-b56d-ddd372310302.json b/delivery-queue/68387b22-d0f5-45e0-b56d-ddd372310302.json
index 7d2365d..8380007 100644
--- a/delivery-queue/68387b22-d0f5-45e0-b56d-ddd372310302.json
+++ b/delivery-queue/68387b22-d0f5-45e0-b56d-ddd372310302.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "🔄 **Capability Evolver 每日报告** (Cycle #0016)\n\n📅 **时间**: 2026年 03月 21日 星期六 02:20:04 CST\n\n---\n\n### 📦 Git 备份\n\n**提交 1 - 自动备份**\n- 提交信息: `Auto backup before evolver run`\n- 变更: 4 files changed, 70 insertions(+), 64 deletions(-)\n- 推送: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 🧬 Evolver 运行结果\n\n**模式**: repair-only\n**意图**: UNKNOWN (未匹配到匹配的 Gene)\n**状态**: 已执行 (通过 sessions_spawn 启动 executor agent)\n\n**执行内容**:\n- 分析信号: `memory_missing`, `session_logs_missing`\n- 通过 GEP 协议启动 executor agent 应用变更\n- 执行 GEP prompt (Cycle #0016)\n\n---\n\n### 📝 本次变更\n\n**提交 2 - Evolver 自动进化**\n- 提交信息: `Evolver auto evolution`\n- 变更: 6 files changed, 551 insertions(+), 14 deletions(-)\n\n**修改的文件**:\n- `M memory/evolution/evolution_solidify_state.json`\n- `M memory/evolution/evolution_state.json`\n- `M memory/evolution/memory_graph_state.json`\n- `M memory/evolution/personality_state.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.txt`\n\n**推送**: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 📊 概要\n\n- **备份提交**: e8e2a63 → 85e7926\n- **变更文件**: 6 个 (4 修改 + 2 新增)\n- **变更行数**: 551 行新增, 14 行删除\n- **GEP Cycle**: #0016\n\n🔄 **Evolver 系统正常运行中**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774030907511,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476326,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/6894b7e3-09bb-4738-bb74-8f5295618142.json b/delivery-queue/6894b7e3-09bb-4738-bb74-8f5295618142.json
index 6e9727b..6193638 100644
--- a/delivery-queue/6894b7e3-09bb-4738-bb74-8f5295618142.json
+++ b/delivery-queue/6894b7e3-09bb-4738-bb74-8f5295618142.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "🔄 **Capability Evolver 每日报告** (Cycle #0016)\n\n📅 **时间**: 2026年 03月 21日 星期六 02:20:04 CST\n\n---\n\n### 📦 Git 备份\n\n**提交 1 - 自动备份**\n- 提交信息: `Auto backup before evolver run`\n- 变更: 4 files changed, 70 insertions(+), 64 deletions(-)\n- 推送: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 🧬 Evolver 运行结果\n\n**模式**: repair-only\n**意图**: UNKNOWN (未匹配到匹配的 Gene)\n**状态**: 已执行 (通过 sessions_spawn 启动 executor agent)\n\n**执行内容**:\n- 分析信号: `memory_missing`, `session_logs_missing`\n- 通过 GEP 协议启动 executor agent 应用变更\n- 执行 GEP prompt (Cycle #0016)\n\n---\n\n### 📝 本次变更\n\n**提交 2 - Evolver 自动进化**\n- 提交信息: `Evolver auto evolution`\n- 变更: 6 files changed, 551 insertions(+), 14 deletions(-)\n\n**修改的文件**:\n- `M memory/evolution/evolution_solidify_state.json`\n- `M memory/evolution/evolution_state.json`\n- `M memory/evolution/memory_graph_state.json`\n- `M memory/evolution/personality_state.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.json`\n- `?? memory/evolution/gep_prompt_Cycle_#0016_run_1774030806791.txt`\n\n**推送**: ✅ 成功 (main → gitea-account:starmen1265/openclaw.git)\n\n---\n\n### 📊 概要\n\n- **备份提交**: e8e2a63 → 85e7926\n- **变更文件**: 6 个 (4 修改 + 2 新增)\n- **变更行数**: 551 行新增, 14 行删除\n- **GEP Cycle**: #0016\n\n🔄 **Evolver 系统正常运行中**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774030886641,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476211,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/6f61bb36-70ff-4623-ace5-87828473ea04.json b/delivery-queue/6f61bb36-70ff-4623-ace5-87828473ea04.json
index d960397..5e401df 100644
--- a/delivery-queue/6f61bb36-70ff-4623-ace5-87828473ea04.json
+++ b/delivery-queue/6f61bb36-70ff-4623-ace5-87828473ea04.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "## 📊 中国核建(601611)每日跟踪 - 2026/03/25\n\n### 今日数据\n- **收盘价**:14.88元 (+3.05%)\n- **昨收**:14.44元\n- **市值**:43.46亿元\n\n### 📈 关键变化\n\n**✅ 积极信号**\n1. **站上第二支撑位14.80元** - 收盘14.88元,成功守住\n2. **连续两日企稳** - 昨日+0.14%,今日+3.05%,反弹力度加强\n3. **周跌幅收窄** - 从-24.11%收窄至-16.60%\n\n**⏳ 待确认**\n- 主力资金流向:数据待更新\n- 成交量:数据待更新\n- 第一支撑15.24元:尚未收复(距+2.4%)\n\n### 🎯 技术位\n| 类型 | 价格 | 状态 |\n|------|------|------|\n| 第二支撑 | 14.80元 | ✅ 已站上 |\n| 第一支撑 | 15.24元 | ❌ 未收复(+2.4%) |\n| 第一压力 | 15.79元 | ⬆️ +6.1% |\n\n### 📋 操作建议\n\n**当前策略:谨慎乐观,观察确认**\n\n- **轻仓者**:可在14.80元附近小仓位试探,等15.24元确认再加仓\n- **重仓者**:观察14.80元支撑有效性,企稳可继续持有\n\n**明日关注**:\n1. 是否收复15.24元\n2. 主力资金是否回流\n3. 成交量是否配合\n\n---\n\n详细报告已保存:`~/work/zq/30.资源/股票跟踪/601611_tracking.md`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774424005485,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481097,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/70d5de93-3901-430c-b907-c23eecb5162e.json b/delivery-queue/70d5de93-3901-430c-b907-c23eecb5162e.json
index 17f129a..ce41410 100644
--- a/delivery-queue/70d5de93-3901-430c-b907-c23eecb5162e.json
+++ b/delivery-queue/70d5de93-3901-430c-b907-c23eecb5162e.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "📊 **每日 Capability Evolver 运行报告**\n📅 时间:2026-03-28 02:21:02 CST\n\n---\n\n### 📦 Git 备份信息\n**Auto backup before evolver run**\n- Commit: `890fb04`\n- 变更:4 files changed, 117 insertions(+), 64 deletions(-)\n- 推送:c1d9d44..890fb04 → main\n\n---\n\n### 🔄 本次 Evolver 变更\n**Evolver auto evolution**\n- Commit: `c2ed23d`\n- 变更:6 files changed, 551 insertions(+), 14 deletions(-)\n- 推送:890fb04..c2ed23d → main\n\n**新增文件:**\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.json`\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.txt`\n\n**修改文件:**\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n---\n\n### 🔍 运行详情\n- **状态**:✅ 成功 (exit code: 0)\n- **检测信号**:memory_missing, session_logs_missing\n- **使用基因**:gene_gep_repair_from_errors\n- **推荐意图**:optimize\n\n---\n\n✅ **任务完成**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635780165,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481908,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/7a210878-dace-4335-b2a3-6fc2518e6c4a.json b/delivery-queue/7a210878-dace-4335-b2a3-6fc2518e6c4a.json
index 11b321a..03bca54 100644
--- a/delivery-queue/7a210878-dace-4335-b2a3-6fc2518e6c4a.json
+++ b/delivery-queue/7a210878-dace-4335-b2a3-6fc2518e6c4a.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "【中国核建601611跟踪报告】\n\n⚠️ 今日跟踪执行异常\n\n由于网络访问受限,无法获取今日实时股票数据。所有数据获取尝试均失败:\n\n- ✗ web_search: fetch failed\n- ✗ web_fetch: 访问被禁止\n\n**已保存的报告:**\n- 位置:~/work/zq/30.资源/股票跟踪/601611_tracking.md\n- 内容:记录了当前异常情况和技术位提醒\n\n**建议操作:**\n1. 检查今日是否为交易日\n2. 手动查看股价信息\n3. 网络恢复后可重新执行跟踪任务\n\n**技术位参考:**\n- 支撑位:15.24元 / 14.80元\n- 压力位:15.79元 / 16.50元"
},
- "retryCount": 1,
- "lastAttemptAt": 1774942381427,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056484166,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/7c67c223-79de-4420-898b-2a1367612c4f.json b/delivery-queue/7c67c223-79de-4420-898b-2a1367612c4f.json
index bcef300..952cc28 100644
--- a/delivery-queue/7c67c223-79de-4420-898b-2a1367612c4f.json
+++ b/delivery-queue/7c67c223-79de-4420-898b-2a1367612c4f.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "test"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117533998,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056479227,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/804939d1-8f0e-486c-a0fc-204f36cc72e1.json b/delivery-queue/804939d1-8f0e-486c-a0fc-204f36cc72e1.json
index 1cb3ba7..9930402 100644
--- a/delivery-queue/804939d1-8f0e-486c-a0fc-204f36cc72e1.json
+++ b/delivery-queue/804939d1-8f0e-486c-a0fc-204f36cc72e1.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "Unhandled stop reason: network_error"
},
- "retryCount": 1,
- "lastAttemptAt": 1774376640898,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480943,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/81601882-e50a-4a8b-a8bc-e19b156b7b05.json b/delivery-queue/81601882-e50a-4a8b-a8bc-e19b156b7b05.json
index 06c03ba..7b960d5 100644
--- a/delivery-queue/81601882-e50a-4a8b-a8bc-e19b156b7b05.json
+++ b/delivery-queue/81601882-e50a-4a8b-a8bc-e19b156b7b05.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "## Capability Evolver 每日报告\n\n**时间**: 2026年 03月 23日 星期一 02:20 CST\n**结果**: SUCCESS\n**意图**: REPAIR (修复)\n\n### 本次变更\n\n**影响范围**: 4 个修改,6 个新建\n\n**修改文件**:\n- `memory/evolution/evolution_solidify_state.json` (修改)\n- `memory/evolution/evolution_state.json` (修改)\n- `memory/evolution/memory_graph_state.json` (修改)\n- `memory/evolution/personality_state.json` (修改)\n\n**新建文件**:\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.json`\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.txt`\n\n**代码统计**:\n- 插入: 551 行\n- 删除: 14 行\n\n### 执行摘要\n\n本次 evolver 运行成功,主要修复了 session logs 检测和 fallback 行为的稳定性。\n\n**变更详情**: see `~/work/backup/evolver-output.txt` for full logs."
},
- "retryCount": 1,
- "lastAttemptAt": 1774203652867,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056479738,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/89181ed1-39cf-4f24-b4e5-2df4d7b6fd34.json b/delivery-queue/89181ed1-39cf-4f24-b4e5-2df4d7b6fd34.json
index 95bef82..c30b5e3 100644
--- a/delivery-queue/89181ed1-39cf-4f24-b4e5-2df4d7b6fd34.json
+++ b/delivery-queue/89181ed1-39cf-4f24-b4e5-2df4d7b6fd34.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "Capability Evolver 每日报告:\n时间:2026-03-23 02:20 CST\n结果:SUCCESS\n意图:REPAIR\n变更:4 修改 + 6 新建\n统计:+551 行,-14 行\n详情:查看 ~/work/backup/evolver-output.txt"
},
- "retryCount": 1,
- "lastAttemptAt": 1774203674333,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480211,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/904d2eef-5cc9-416a-a4dc-32f45afafc8d.json b/delivery-queue/904d2eef-5cc9-416a-a4dc-32f45afafc8d.json
index e9584ce..17ed486 100644
--- a/delivery-queue/904d2eef-5cc9-416a-a4dc-32f45afafc8d.json
+++ b/delivery-queue/904d2eef-5cc9-416a-a4dc-32f45afafc8d.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "已生成报告"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117525217,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478816,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/97548a19-71c9-4be4-894c-f7cd1843213b.json b/delivery-queue/97548a19-71c9-4be4-894c-f7cd1843213b.json
index cae18e4..77fc376 100644
--- a/delivery-queue/97548a19-71c9-4be4-894c-f7cd1843213b.json
+++ b/delivery-queue/97548a19-71c9-4be4-894c-f7cd1843213b.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "📊 **每日 Capability Evolver 运行报告**\n📅 时间:2026-03-28 02:21:02 CST\n\n---\n\n### 📦 Git 备份信息\n**Auto backup before evolver run**\n- Commit: `890fb04`\n- 变更:4 files changed, 117 insertions(+), 64 deletions(-)\n- 推送:c1d9d44..890fb04 → main\n\n---\n\n### 🔄 本次 Evolver 变更\n**Evolver auto evolution**\n- Commit: `c2ed23d`\n- 变更:6 files changed, 551 insertions(+), 14 deletions(-)\n- 推送:890fb04..c2ed23d → main\n\n**新增文件:**\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.json`\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.txt`\n\n**修改文件:**\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n---\n\n### 🔍 运行详情\n- **状态**:✅ 成功 (exit code: 0)\n- **检测信号**:memory_missing, session_logs_missing\n- **使用基因**:gene_gep_repair_from_errors\n- **推荐意图**:optimize\n\n---\n\n✅ **任务完成**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635836563,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482300,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/995c1cd8-382b-470e-8095-8b396b03e0c7.json b/delivery-queue/995c1cd8-382b-470e-8095-8b396b03e0c7.json
index 3a4df47..a1d1555 100644
--- a/delivery-queue/995c1cd8-382b-470e-8095-8b396b03e0c7.json
+++ b/delivery-queue/995c1cd8-382b-470e-8095-8b396b03e0c7.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "已成功执行 capability-evolver 每日任务!\n\n## 执行结果\n\n✅ **脚本运行成功**\n- 时间:2026年 3月 20日 02:20\n- 模式:repair(修复)\n\n✅ **Git 备份完成**\n- 自动提交:commit `77bd356`\n- 备份 commit:commit `a941b35`\n- 已推送到远程仓库:gitea-account:starmen1265/openclaw.git\n\n## 本次变更详情\n\n**新增文件(2个):**\n1. `memory/evolution/gep_prompt_Cycle_#0015_run_1773944405416.json`\n2. `memory/evolution/gep_prompt_Cycle_#0015_run_1773944405416.txt`\n\n**修改文件(4个):**\n1. `memory/evolution/evolution_solidify_state.json`\n2. `memory/evolution/evolution_state.json`\n3. `memory/evolution/memory_graph_state.json`\n4. `memory/evolution/personality_state.json`\n\n**统计:**\n- 总计变更:6 个文件\n- 新增代码:550 行\n- 删除代码:13 行\n\n📝 **完整日志**\n- 保存路径:`~/work/backup/evolver-output.txt`\n\n这次运行通过 GEP 协议完成了自我修复和知识固化。由于当前环境无法直接访问 Feishu 频道配置,消息未通过 Feishu 发送。你可以:\n1. 查看完整日志文件了解详情\n2. 或在 Feishu 中查看相关通知"
},
- "retryCount": 1,
- "lastAttemptAt": 1773944439922,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056476071,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/9999f035-547a-4d77-a436-bb96f424e878.json b/delivery-queue/9999f035-547a-4d77-a436-bb96f424e878.json
index 0f84031..e59c4a9 100644
--- a/delivery-queue/9999f035-547a-4d77-a436-bb96f424e878.json
+++ b/delivery-queue/9999f035-547a-4d77-a436-bb96f424e878.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "我遇到了一个问题:需要指定消息的目标聊天 ID。由于我无法自动获取当前 feishu 聊天的 ID,请您提供当前的 chat ID,然后我将发送 evolver 每日报告给您。\n\n或者,您也可以直接查看以下关键信息:\n\n## 🧬 Capability Evolver 每日报告摘要\n\n**运行时间**: 2026年 03月 24日 02:20\n\n**执行结果**: ✅ 成功\n- 意图: 修复 (Repair)\n- 变更规模: 6 文件,+550/-13 行\n\n**Git 操作**:\n- 备份前: 4cf130e\n- 备份后: 4c217ef\n- 已推送到 main 分支\n\n**本次变更**:\n- 修改: evolution_solidify_state.json, evolution_state.json, memory_graph_state.json, personality_state.json\n- 新增: gep_prompt_Cycle_#0019 运行记录\n\n**核心改进**: 优化了 evolver 的日志信号检测和 fallback 行为,增强了对 session transcript 和 memory snippet 的处理能力。\n\n---\n\n完整的详细报告已保存到 `~/work/backup/evolver-output.txt`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774290056970,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480761,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/9f91abeb-fd18-471c-981e-0f343ef404da.json b/delivery-queue/9f91abeb-fd18-471c-981e-0f343ef404da.json
index 3f0654b..6a82479 100644
--- a/delivery-queue/9f91abeb-fd18-471c-981e-0f343ef404da.json
+++ b/delivery-queue/9f91abeb-fd18-471c-981e-0f343ef404da.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "✅ **Capability Evolver 每日运行完成**\n\n## 变更摘要\n\n本次运行检测到 `memory_missing` 和 `session_logs_missing` 信号,自动选择了 OPTIMIZE 意图。\n\n### 主要变更\n\n**修改的文件 (4个)**:\n- `memory/evolution/evolution_state.json` - 周期计数更新为 #23\n- `memory/evolution/personality_state.json` - 性能参数调整\n- `memory/evolution/memory_graph_state.json` - 记录优化事件\n- `memory/evolution/gep_prompt_Cycle_#0023_run_1774808423202.json` - 新增 GEP 提示词\n- `memory/evolution/gep_prompt_Cycle_#0023_run_1774808423202.txt` - 新增 GEP 提示词\n\n**个性参数更新**:\n- rigor: 0.7 (严谨度)\n- creativity: 0.35 (创造力)\n- verbosity: 0.25 (表达性)\n- risk_tolerance: 0.4 (风险容忍度)\n- obedience: 0.85 (服从度)\n\n### 系统状态\n\n- 健康状态: ✅ 正常\n- 运行时长: 601.6 小时\n- 节点版本: v22.22.0\n- 内存占用: 54.7MB\n- 磁盘空间: 9% (856.5G 可用)\n\n### 详细报告\n\n完整的运行报告已保存至:\n`~/work/backup/evolver-report-20260330-022000.txt`\n\n报告包含详细的变更说明、系统状态和执行摘要。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774808628487,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483015,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/a74a559f-aea8-4d9d-8d4a-46402b208d15.json b/delivery-queue/a74a559f-aea8-4d9d-8d4a-46402b208d15.json
index 46463d9..43c215c 100644
--- a/delivery-queue/a74a559f-aea8-4d9d-8d4a-46402b208d15.json
+++ b/delivery-queue/a74a559f-aea8-4d9d-8d4a-46402b208d15.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "## Capability Evolver 每日报告\n\n**时间**: 2026年 03月 23日 星期一 02:20 CST\n**结果**: SUCCESS\n**意图**: REPAIR (修复)\n\n### 本次变更\n\n**影响范围**: 4 个修改,6 个新建\n\n**修改文件**:\n- `memory/evolution/evolution_solidify_state.json` (修改)\n- `memory/evolution/evolution_state.json` (修改)\n- `memory/evolution/memory_graph_state.json` (修改)\n- `memory/evolution/personality_state.json` (修改)\n\n**新建文件**:\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.json`\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.txt`\n\n**代码统计**:\n- 插入: 551 行\n- 删除: 14 行\n\n### 执行摘要\n\n本次 evolver 运行成功,主要修复了 session logs 检测和 fallback 行为的稳定性。\n\n**变更详情**: see `~/work/backup/evolver-output.txt` for full logs."
},
- "retryCount": 1,
- "lastAttemptAt": 1774203665371,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056479898,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/a9c8ac45-526b-4032-8a49-c5982b3fd54f.json b/delivery-queue/a9c8ac45-526b-4032-8a49-c5982b3fd54f.json
index 594e867..0b3d100 100644
--- a/delivery-queue/a9c8ac45-526b-4032-8a49-c5982b3fd54f.json
+++ b/delivery-queue/a9c8ac45-526b-4032-8a49-c5982b3fd54f.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "请查看 ~/work/backup/evolver-daily-report-2026-03-22.txt"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117514834,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056478589,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/b1e784a4-4abe-4324-b8ea-8f8e610f118b.json b/delivery-queue/b1e784a4-4abe-4324-b8ea-8f8e610f118b.json
index 196fd0e..753735f 100644
--- a/delivery-queue/b1e784a4-4abe-4324-b8ea-8f8e610f118b.json
+++ b/delivery-queue/b1e784a4-4abe-4324-b8ea-8f8e610f118b.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "📊 **每日 Capability Evolver 运行报告**\n📅 时间:2026-03-28 02:21:02 CST\n\n---\n\n### 📦 Git 备份信息\n**Auto backup before evolver run**\n- Commit: `890fb04`\n- 变更:4 files changed, 117 insertions(+), 64 deletions(-)\n- 推送:c1d9d44..890fb04 → main\n\n---\n\n### 🔄 本次 Evolver 变更\n**Evolver auto evolution**\n- Commit: `c2ed23d`\n- 变更:6 files changed, 551 insertions(+), 14 deletions(-)\n- 推送:890fb04..c2ed23d → main\n\n**新增文件:**\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.json`\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.txt`\n\n**修改文件:**\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n---\n\n### 🔍 运行详情\n- **状态**:✅ 成功 (exit code: 0)\n- **检测信号**:memory_missing, session_logs_missing\n- **使用基因**:gene_gep_repair_from_errors\n- **推荐意图**:optimize\n\n---\n\n✅ **任务完成**"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635849708,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482396,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/bc3f3807-8735-4bef-bb42-3efd115c3f7e.json b/delivery-queue/bc3f3807-8735-4bef-bb42-3efd115c3f7e.json
index 9a0c273..96db637 100644
--- a/delivery-queue/bc3f3807-8735-4bef-bb42-3efd115c3f7e.json
+++ b/delivery-queue/bc3f3807-8735-4bef-bb42-3efd115c3f7e.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "我遇到了 Feishu 目标格式的问题。让我直接在当前会话中向您汇报:"
},
- "retryCount": 1,
- "lastAttemptAt": 1773858232086,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056475927,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/be91d785-b914-42dc-9298-f57551587373.json b/delivery-queue/be91d785-b914-42dc-9298-f57551587373.json
index cc2fb4d..552b763 100644
--- a/delivery-queue/be91d785-b914-42dc-9298-f57551587373.json
+++ b/delivery-queue/be91d785-b914-42dc-9298-f57551587373.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "每日 capability-evolver 任务执行完成:\n\n## 每日报告\n\n**时间**: 2026年 03月 23日 星期一 02:20 CST\n**结果**: SUCCESS\n**意图**: REPAIR (修复)\n\n### 本次变更\n\n**影响范围**: 4 个修改,6 个新建\n\n**修改文件**:\n- `memory/evolution/evolution_solidify_state.json` (修改)\n- `memory/evolution/evolution_state.json` (修改)\n- `memory/evolution/memory_graph_state.json` (修改)\n- `memory/evolution/personality_state.json` (修改)\n\n**新建文件**:\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.json`\n- `memory/evolution/gep_prompt_Cycle_#0018_run_1774203606866.txt`\n\n**代码统计**:\n- 插入: 551 行\n- 删除: 14 行\n\n### 执行摘要\n\n本次 evolver 运行成功,主要修复了 session logs 检测和 fallback 行为的稳定性。\n\n**变更详情**: see `~/work/backup/evolver-output.txt` for full logs."
},
- "retryCount": 1,
- "lastAttemptAt": 1774203773932,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480316,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/c337ecdb-9535-4d53-9160-37f648b4a692.json b/delivery-queue/c337ecdb-9535-4d53-9160-37f648b4a692.json
index d300eb1..416742b 100644
--- a/delivery-queue/c337ecdb-9535-4d53-9160-37f648b4a692.json
+++ b/delivery-queue/c337ecdb-9535-4d53-9160-37f648b4a692.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "🧬 **Capability Evolver 每日运行报告**\n\n**📅 运行时间:** 2026-03-28\n\n---\n\n### ✅ Git 变更摘要\n\n**1. 自动备份 Commit**\n- Commit: `890fb04`\n- 变更:4 files, +117/-64\n\n**2. Evolver 变更 Commit**\n- Commit: `c2ed23d`\n- 变更:6 files, +551/-14\n\n**推送状态:** 890fb04..c2ed23d → main ✅\n\n---\n\n### 📝 变更详情\n\n**新增文件:**\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.json`\n- `memory/evolution/gep_prompt_Cycle_#0022_run_1774635664478.txt`\n\n**修改文件:**\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n---\n\n### 🔍 运行信息\n\n- **检测信号:** memory_missing, session_logs_missing\n- **使用基因:** gene_gep_repair_from_errors\n- **推荐意图:** optimize\n- **运行状态:** 成功 ✅\n\n---\n\n💡 *Evolver 已根据检测到的信号执行修复优化*"
},
- "retryCount": 1,
- "lastAttemptAt": 1774635908144,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482707,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/c5e6a856-3239-4792-82ca-a9470af1d6ae.json b/delivery-queue/c5e6a856-3239-4792-82ca-a9470af1d6ae.json
index 5e883a3..da5b38e 100644
--- a/delivery-queue/c5e6a856-3239-4792-82ca-a9470af1d6ae.json
+++ b/delivery-queue/c5e6a856-3239-4792-82ca-a9470af1d6ae.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "test"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117576593,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056479534,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/c7e6e651-ad7b-420f-ac5c-83a1ec63d809.json b/delivery-queue/c7e6e651-ad7b-420f-ac5c-83a1ec63d809.json
index c5e01f3..260e3b9 100644
--- a/delivery-queue/c7e6e651-ad7b-420f-ac5c-83a1ec63d809.json
+++ b/delivery-queue/c7e6e651-ad7b-420f-ac5c-83a1ec63d809.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "## 📊 中国海油 (600938) 每日跟踪 - 2026-03-23\n\n### 收盘数据\n- **最新价**: 42.10 元 (+0.45%)\n- **昨收**: 41.91 元\n- **最高/最低**: 43.20 / 41.72 元\n- **成交额**: 43.43 亿元\n\n### 技术位分析\n- 压力位: 44.54 元(前高,距离5.8%)\n- 支撑位: 40.00 元(距离5.0%)\n- 当前处于震荡区间中部\n\n### 油价动态 🛢️\n- 布伦特原油: 109.32 美元 (+2.51%)\n- ⚠️ 霍尔木兹海峡局势紧张,美以对伊朗军事打击\n- 油价触及110美元上方,地缘政治溢价明显\n\n### 信号判断\n✅ 油价利好 - 原油上涨支撑股价\n⚠️ 关注前高 - 44.54元存在压力\n❌ 未触及支撑位\n\n### 操作建议\n- 持仓观望,突破44.54元可考虑加仓\n- 跌破40元支撑需警惕\n- 中长期受益于高油价环境\n\n详细报告已保存至: `~/work/zq/30.资源/股票跟踪/600938_tracking.md`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774252049242,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480559,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/cdaa4cff-e80e-41f2-87c9-e36e8bb2c048.json b/delivery-queue/cdaa4cff-e80e-41f2-87c9-e36e8bb2c048.json
index 0d9466f..84b4762 100644
--- a/delivery-queue/cdaa4cff-e80e-41f2-87c9-e36e8bb2c048.json
+++ b/delivery-queue/cdaa4cff-e80e-41f2-87c9-e36e8bb2c048.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "📊 中国核建(601611)每日跟踪报告\n\n⚠️ **执行状态:网络连接失败**\n\n今日(2026年3月30日15:30)执行中国核建(601611)每日跟踪任务时遇到网络连接问题,无法获取实时股价数据:\n\n**影响数据:**\n- 今日收盘价\n- 涨跌幅 \n- 成交量\n- 主力资金流向\n\n**当前处理:**\n- 已将情况记录到分析文档:`~/work/zq/30.资源/股票跟踪/601611_tracking.md`\n- 保留技术位参考:支撑15.24元/14.80元,压力15.79元/16.50元\n\n**后续建议:**\n1. 稍后重试获取实时数据\n2. 或检查网络代理设置\n\n请稍后查看是否需要重新执行任务。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774855965537,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483629,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/d01d427f-588d-403e-89f8-35afa8789392.json b/delivery-queue/d01d427f-588d-403e-89f8-35afa8789392.json
index 58ddafe..833b97b 100644
--- a/delivery-queue/d01d427f-588d-403e-89f8-35afa8789392.json
+++ b/delivery-queue/d01d427f-588d-403e-89f8-35afa8789392.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "【Capability Evolver 每日报告】\n时间: 2026年 03月 22日 星期日 02:20:11 CST\n\n## ✅ Git 备份完成\n- 分支: main\n- 提交: eb6cd11..a0c8f66\n- 说明: Auto backup before evolver run\n\n## 🧬 Evolver 运行结果\n- 状态: 成功 (exit code: 0)\n- 意图: 修复\n- 周期: #0017\n\n## 📝 本次变更文件\n\n### 修改 (M):\n- memory/evolution/evolution_solidify_state.json\n- memory/evolution/evolution_state.json\n- memory/evolution/memory_graph_state.json\n- memory/evolution/personality_state.json\n\n### 新增 (??):\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.json\n- memory/evolution/gep_prompt_Cycle_#0017_run_1774117213716.txt\n\n## 🚀 Git 推送完成\n- 分支: main\n- 提交: a0c8f66..3b3afd6\n- 说明: Evolver auto evolution\n\n---\n\n**总结**: Evolver 自动完成了本次进化周期的知识固化,更新了记忆图谱、性格状态和演化记录文件,无任何错误。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774117370445,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056477587,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/db2a2e29-88f3-4a40-9ef5-bd254c09ee4a.json b/delivery-queue/db2a2e29-88f3-4a40-9ef5-bd254c09ee4a.json
index 96e21a2..a39d8a4 100644
--- a/delivery-queue/db2a2e29-88f3-4a40-9ef5-bd254c09ee4a.json
+++ b/delivery-queue/db2a2e29-88f3-4a40-9ef5-bd254c09ee4a.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "📊 每日热点新闻简报已生成完成!\n\n**地缘政治领域:**\n- 中东局势升级:美国\"的黎波里号\"两栖攻击舰抵达中东,美以伊冲突从\"速决\"变\"拉锯\"\n- 俄乌战争:乌克兰南部战线收复435平方公里,战场格局出现新变化\n\n**科技产业领域:**\n- AI大厂洗牌:OpenAI关停Sora视频生成工具,2026年AI竞争进入白热化阶段\n- 新能源突破:固态电池产业加速发展,马斯克承认中国算力霸权\n\n**详细报告已保存至:** ~/work/zq/30.资源/新闻简报/2026-03-30.md\n\n🔍 报告包含详细新闻来源、时间节点和影响分析,供您参考决策。"
},
- "retryCount": 1,
- "lastAttemptAt": 1774829041233,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483160,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/e3cb9f83-305c-46bc-8eb8-b7bc69009868.json b/delivery-queue/e3cb9f83-305c-46bc-8eb8-b7bc69009868.json
index 32eb040..6b4b2aa 100644
--- a/delivery-queue/e3cb9f83-305c-46bc-8eb8-b7bc69009868.json
+++ b/delivery-queue/e3cb9f83-305c-46bc-8eb8-b7bc69009868.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "Unhandled stop reason: network_error"
},
- "retryCount": 1,
- "lastAttemptAt": 1774722240853,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056482911,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/e6a31bea-44c5-46a7-84d6-f1201fb7489b.json b/delivery-queue/e6a31bea-44c5-46a7-84d6-f1201fb7489b.json
index 8a1c83a..0abec36 100644
--- a/delivery-queue/e6a31bea-44c5-46a7-84d6-f1201fb7489b.json
+++ b/delivery-queue/e6a31bea-44c5-46a7-84d6-f1201fb7489b.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "## 🧬 Capability Evolver 每日进化报告\n\n### 📅 执行时间\n2026年03月27日 星期五 02:20:03 CST\n\n### 📦 Git 备份\n- Commit: 707a9f1\n- 标题: Auto backup before evolver run\n- 推送到: gitea-account:starmen1265/openclaw.git\n\n### 🎯 本次变更\n\n#### 修改的文件 (4个)\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n#### 新增的文件 (2个)\n- `memory/evolution/gep_prompt_Cycle_#0021_run_1774549205288.json`\n- `memory/evolution/gep_prompt_Cycle_#0021_run_1774549205288.txt`\n\n### 📊 变更统计\n- **修改**: 69行新增, 63行删除\n- **新增**: 550行\n- **删除**: 13行\n\n### 🧠 进化意图\n- **状态**: UNKNOWN(未匹配到特定意图)\n- **信号**: memory_missing, session_logs_missing\n- **策略**: Generic(通用策略)\n- **执行**: 更新进化状态文件,记录本轮 GEP 协议提示\n\n---\n\n### 💡 说明\n由于当前为 cron 任务会话,无法直接通过 Feishu 发送消息。变更报告已输出,您可以:\n\n1. 查看 `~/work/backup/evolver-output.txt` 获取完整日志\n2. 访问 Gitea 仓库查看变更: `https://gitea.nas/...`"
},
- "retryCount": 1,
- "lastAttemptAt": 1774549236623,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056481582,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/e75bc319-49b7-4881-8609-1a78052d3a78.json b/delivery-queue/e75bc319-49b7-4881-8609-1a78052d3a78.json
index 33f18a4..99c411c 100644
--- a/delivery-queue/e75bc319-49b7-4881-8609-1a78052d3a78.json
+++ b/delivery-queue/e75bc319-49b7-4881-8609-1a78052d3a78.json
@@ -18,7 +18,7 @@
"agentId": "haonan",
"text": "Capability Evolver 每日报告:\n时间:2026-03-23 02:20 CST\n结果:SUCCESS\n意图:REPAIR\n变更:4 修改 + 6 新建\n统计:+551 行,-14 行\n详情:查看 ~/work/backup/evolver-output.txt"
},
- "retryCount": 1,
- "lastAttemptAt": 1774203670490,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056480054,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/edb68b11-ebf7-4883-840d-d53d1e3e7ed3.json b/delivery-queue/edb68b11-ebf7-4883-840d-d53d1e3e7ed3.json
index fade56d..8020715 100644
--- a/delivery-queue/edb68b11-ebf7-4883-840d-d53d1e3e7ed3.json
+++ b/delivery-queue/edb68b11-ebf7-4883-840d-d53d1e3e7ed3.json
@@ -18,7 +18,7 @@
"agentId": "ui-designer",
"text": "📊 中国海油(600938)每日跟踪任务执行报告\n\n**任务状态:** ✅ 已执行 \n**日期:** 2026年3月30日 15:33\n\n**执行情况:**\n- ⚠️ 网络数据获取失败,无法获取实时股价信息\n- 📝 已创建分析报告框架:`~/work/zq/30.资源/股票跟踪/600938_tracking.md`\n\n**建议操作:**\n1. 请手动查看东方财富网、同花顺等平台获取今日数据\n2. 或稍后重新执行任务获取最新信息\n3. 重点关注:40元/38元支撑位,44.54元前高压力位\n\n*任务ID: cron:b2c3d4e5-f6a7-8901-bcde-f12345678901*"
},
- "retryCount": 1,
- "lastAttemptAt": 1774856088475,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483835,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/f75a9e81-02b9-4528-97cb-749a3f97ffe9.json b/delivery-queue/f75a9e81-02b9-4528-97cb-749a3f97ffe9.json
new file mode 100644
index 0000000..46975b0
--- /dev/null
+++ b/delivery-queue/f75a9e81-02b9-4528-97cb-749a3f97ffe9.json
@@ -0,0 +1,24 @@
+{
+ "id": "f75a9e81-02b9-4528-97cb-749a3f97ffe9",
+ "enqueuedAt": 1775029053135,
+ "channel": "feishu",
+ "to": "ou_8d8b1e8d1e8f1e8f1e8f1e8f",
+ "accountId": "feishu-art",
+ "payloads": [
+ {
+ "text": "⚠️ 【中国海油600938每日跟踪】2026年4月1日跟踪任务执行完成。\n\n**当前状态:** 网络数据获取受限\n- 实时股票数据(收盘价、涨跌幅、成交量等)获取失败\n- 原油价格、地缘政治信息未获取到\n\n**已处理:**\n✅ 报告已保存至 ~/work/zq/30.资源/股票跟踪/600938_tracking.md\n✅ 分析框架已搭建完成\n❌ 需要手动获取实时数据进行分析\n\n**建议:**\n1. 请手动查看东方财富网、同花顺等获取实时行情\n2. 关注40元(支撑)、44.54元(前高压力)等关键价位\n3. 晚间可查看完整分析报告\n\n如有疑问,请及时联系。",
+ "replyToTag": false,
+ "replyToCurrent": false,
+ "audioAsVoice": false
+ }
+ ],
+ "gifPlayback": false,
+ "mirror": {
+ "sessionKey": "agent:ui-designer:main",
+ "agentId": "ui-designer",
+ "text": "⚠️ 【中国海油600938每日跟踪】2026年4月1日跟踪任务执行完成。\n\n**当前状态:** 网络数据获取受限\n- 实时股票数据(收盘价、涨跌幅、成交量等)获取失败\n- 原油价格、地缘政治信息未获取到\n\n**已处理:**\n✅ 报告已保存至 ~/work/zq/30.资源/股票跟踪/600938_tracking.md\n✅ 分析框架已搭建完成\n❌ 需要手动获取实时数据进行分析\n\n**建议:**\n1. 请手动查看东方财富网、同花顺等获取实时行情\n2. 关注40元(支撑)、44.54元(前高压力)等关键价位\n3. 晚间可查看完整分析报告\n\n如有疑问,请及时联系。"
+ },
+ "retryCount": 3,
+ "lastAttemptAt": 1775056484483,
+ "lastError": "Request failed with status code 400"
+}
\ No newline at end of file
diff --git a/delivery-queue/f96ada2d-d60f-41a5-b583-cb418c8b211a.json b/delivery-queue/f96ada2d-d60f-41a5-b583-cb418c8b211a.json
index 4196cd9..d73cafd 100644
--- a/delivery-queue/f96ada2d-d60f-41a5-b583-cb418c8b211a.json
+++ b/delivery-queue/f96ada2d-d60f-41a5-b583-cb418c8b211a.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "Unhandled stop reason: network_error"
},
- "retryCount": 1,
- "lastAttemptAt": 1774895342147,
+ "retryCount": 3,
+ "lastAttemptAt": 1775056483977,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json b/delivery-queue/failed/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json
similarity index 97%
rename from delivery-queue/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json
rename to delivery-queue/failed/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json
index 5e7fd4e..0fa7c9e 100644
--- a/delivery-queue/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json
+++ b/delivery-queue/failed/2b7ddbaa-0dbe-4c16-bff4-5ef9d004983c.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "我发现当前环境中没有与蒋先生的私聊会话在运行,因此无法通过 Feishu 直接发送消息。\n\n✅ **任务完成状态:**\n\n**1. 脚本执行成功** - `bash ~/.openclaw/cron/scripts/evolver-run.sh`\n- Git 备份:main@da49aa7 → main@19b4b85\n- Evolver 运行完成\n\n**2. 修改内容:**\n- 修改了 4 个文件:70 insertions(+), 64 deletions(-)\n- 新增 2 个文件\n- 核心变更:强化 session log 检测机制,增强在缺少 memory 和 session logs 时的 fallback 行为\n\n**3. 报告保存位置:**\n- 详细报告:`~/work/backup/evolver-output.txt`\n- 人类可读摘要:`/home/starmen1265/.openclaw/agents/haonan/sessions/capability-evolver-report-2026-03-17.txt`\n\n**建议:** 启动一个与蒋先生的 Feishu 私聊会话,然后我可以将完整的修改内容发送给您。\n\nNO_REPLY"
},
- "retryCount": 4,
- "lastAttemptAt": 1773763563146,
+ "retryCount": 5,
+ "lastAttemptAt": 1775056191658,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/delivery-queue/4b56a737-d726-4c48-8b10-493f0e9df335.json b/delivery-queue/failed/4b56a737-d726-4c48-8b10-493f0e9df335.json
similarity index 98%
rename from delivery-queue/4b56a737-d726-4c48-8b10-493f0e9df335.json
rename to delivery-queue/failed/4b56a737-d726-4c48-8b10-493f0e9df335.json
index 9b0b085..b82e8cd 100644
--- a/delivery-queue/4b56a737-d726-4c48-8b10-493f0e9df335.json
+++ b/delivery-queue/failed/4b56a737-d726-4c48-8b10-493f0e9df335.json
@@ -15,7 +15,7 @@
"agentId": "haonan",
"text": "## 🧬 Capability Evolver 每日报告\n\n**时间**: 2026年 03月 16日 星期一 02:20:22 CST\n**周期**: #0011\n\n---\n\n### 📊 变更概览\n- **意图**: REPAIR (修复)\n- **状态**: SUCCESS\n- **变更范围**: 4 文件修改,2 文件新增\n\n---\n\n### 📝 Git 提交记录\n\n1. **Auto backup before evolver run**\n - 4 files changed, 70 insertions(+), 64 deletions(-)\n\n2. **Evolver auto evolution** \n - 6 files changed, 550 insertions(+), 13 deletions(-)\n - 新增: `memory/evolution/gep_prompt_Cycle_#0011_run_1773598824487.json`\n - 新增: `memory/evolution/gep_prompt_Cycle_#0011_run_1773598824487.txt`\n\n---\n\n### 📂 变更文件\n\n**修改文件**:\n- `memory/evolution/evolution_solidify_state.json`\n- `memory/evolution/evolution_state.json`\n- `memory/evolution/memory_graph_state.json`\n- `memory/evolution/personality_state.json`\n\n**新增文件**:\n- `memory/evolution/gep_prompt_Cycle_#0011_run_1773598824487.json`\n- `memory/evolution/gep_prompt_Cycle_#0011_run_1773598824487.txt`\n\n---\n\n### 🎯 变更原因\n命中信号:\n- memory_missing\n- session_logs_missing\n\n系统检测到记忆缺失和会话日志缺失,触发修复模式,更新了进化状态和记忆图谱。"
},
- "retryCount": 4,
- "lastAttemptAt": 1773763562985,
+ "retryCount": 5,
+ "lastAttemptAt": 1775056191515,
"lastError": "Request failed with status code 400"
}
\ No newline at end of file
diff --git a/devices/paired.json b/devices/paired.json
index 89f231f..0adf96a 100644
--- a/devices/paired.json
+++ b/devices/paired.json
@@ -3,8 +3,8 @@
"deviceId": "a12f851ec2a179ca97d45b204bc3788476f062520fa77c5edef5cd054a176b1e",
"publicKey": "Ka6zP7u6MzDaQBqOpXHYUBC5MYLlVGGZM8vIi11WnTw",
"platform": "linux",
- "clientId": "cli",
- "clientMode": "cli",
+ "clientId": "gateway-client",
+ "clientMode": "backend",
"role": "operator",
"roles": [
"operator"
diff --git a/feishu/dedup/feishu-art.json b/feishu/dedup/feishu-art.json
index 1d31bca..010d39e 100644
--- a/feishu/dedup/feishu-art.json
+++ b/feishu/dedup/feishu-art.json
@@ -1,4 +1,5 @@
{
- "om_x100b537547f430a4b4bf855df8af4b4": 1774456980164,
- "om_x100b537a2e5ddcb0b4821bc1af1c04f": 1774511625879
+ "om_x100b53e6b80110a4c3c9cf1610788ab": 1775054701387,
+ "om_x100b53e76a4a34a0c3b5fb77dbc8904": 1775055433103,
+ "om_x100b53e766a610a4c106b63903091d6": 1775055495308
}
diff --git a/feishu/dedup/feishu-dev.json b/feishu/dedup/feishu-dev.json
index 1b36923..42406d4 100644
--- a/feishu/dedup/feishu-dev.json
+++ b/feishu/dedup/feishu-dev.json
@@ -1,4 +1,3 @@
{
- "om_x100b532b017e8888c3a0136d9b7f7f2": 1774318843849,
- "om_x100b532b194650a0c36bf5fbc6227fe": 1774318969416
+ "om_x100b53e7cc06b0acc111b9baecac32c": 1775056941417
}
diff --git a/identity/device-auth.json b/identity/device-auth.json
index d9e1790..2583844 100644
--- a/identity/device-auth.json
+++ b/identity/device-auth.json
@@ -8,9 +8,11 @@
"scopes": [
"operator.admin",
"operator.approvals",
- "operator.pairing"
+ "operator.pairing",
+ "operator.read",
+ "operator.write"
],
- "updatedAtMs": 1774980616657
+ "updatedAtMs": 1775058410958
}
}
}
diff --git a/logs/config-health.json b/logs/config-health.json
new file mode 100644
index 0000000..e47c0df
--- /dev/null
+++ b/logs/config-health.json
@@ -0,0 +1,22 @@
+{
+ "entries": {
+ "/home/starmen1265/.openclaw/openclaw.json": {
+ "lastKnownGood": {
+ "hash": "716dd25d78889075b2d38b802e534d3e679098506c80e7f161cbe5868ded1b62",
+ "bytes": 8519,
+ "mtimeMs": 1775056706071.5994,
+ "ctimeMs": 1775056706071.5994,
+ "dev": "66306",
+ "ino": "48241857",
+ "mode": 384,
+ "nlink": 1,
+ "uid": 1000,
+ "gid": 1000,
+ "hasMeta": true,
+ "gatewayMode": "local",
+ "observedAt": "2026-04-01T15:18:26.612Z"
+ },
+ "lastObservedSuspiciousSignature": null
+ }
+ }
+}
diff --git a/memory/haonan.sqlite b/memory/haonan.sqlite
index 1154c98..36225be 100644
Binary files a/memory/haonan.sqlite and b/memory/haonan.sqlite differ
diff --git a/openclaw.json b/openclaw.json
index a5f9674..261e3ac 100644
--- a/openclaw.json
+++ b/openclaw.json
@@ -1,12 +1,12 @@
{
"meta": {
- "lastTouchedVersion": "2026.3.2",
- "lastTouchedAt": "2026-03-06T03:40:12.152Z"
+ "lastTouchedVersion": "2026.3.31",
+ "lastTouchedAt": "2026-04-01T15:14:25.963Z"
},
"wizard": {
- "lastRunAt": "2026-03-06T03:20:49.563Z",
- "lastRunVersion": "2026.3.2",
- "lastRunCommand": "doctor",
+ "lastRunAt": "2026-04-01T15:14:25.915Z",
+ "lastRunVersion": "2026.3.31",
+ "lastRunCommand": "configure",
"lastRunMode": "local"
},
"auth": {
@@ -14,58 +14,16 @@
"kimi-coding:default": {
"provider": "kimi-coding",
"mode": "api_key"
+ },
+ "minimax:cn": {
+ "provider": "minimax",
+ "mode": "api_key"
}
}
},
"models": {
"mode": "merge",
"providers": {
- "bailian": {
- "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
- "api": "openai-completions",
- "models": [
- {
- "id": "qwen3-max-2026-01-23",
- "name": "qwen3-max-thinking",
- "reasoning": false,
- "input": [
- "text"
- ],
- "cost": {
- "input": 0,
- "output": 0,
- "cacheRead": 0,
- "cacheWrite": 0
- },
- "contextWindow": 262144,
- "maxTokens": 65536
- }
- ]
- },
- "mm": {
- "baseUrl": "https://api.minimaxi.com/anthropic",
- "apiKey": "sk-cp-8PugyKE2xsG0S4x4KzDuuIV6Z9bT1NFwkpfrOSG05djFVExAgYEPpp7iUaTcugT6_P4uBYIN9S75l3ij-Yd2Ct8f6CxdKWdgFahESfn_jla-SlU6oGUCBjk",
- "api": "anthropic-messages",
- "authHeader": true,
- "models": [
- {
- "id": "MiniMax-M2.5",
- "name": "MiniMax M2.5",
- "reasoning": false,
- "input": [
- "text"
- ],
- "cost": {
- "input": 15,
- "output": 60,
- "cacheRead": 2,
- "cacheWrite": 10
- },
- "contextWindow": 200000,
- "maxTokens": 8192
- }
- ]
- },
"zhipu": {
"baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4",
"apiKey": "80ec82f2b14047d9a0399682a042378b.E8rv2nPSyuIsGoDr",
@@ -85,7 +43,8 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192
+ "maxTokens": 8192,
+ "api": "openai-completions"
},
{
"id": "glm-4.7-FlashX",
@@ -101,21 +60,44 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192
+ "maxTokens": 8192,
+ "api": "openai-completions"
}
]
+ },
+ "minimax": {
+ "baseUrl": "https://api.minimaxi.com/anthropic",
+ "models": [
+ {
+ "id": "MiniMax-M2.7-highspeed",
+ "name": "MiniMax M2.7 highspeed",
+ "reasoning": true,
+ "input": [
+ "text"
+ ],
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cacheRead": 0.06,
+ "cacheWrite": 0.375
+ },
+ "contextWindow": 204800,
+ "maxTokens": 131072
+ }
+ ],
+ "api": "anthropic-messages",
+ "authHeader": true
}
}
},
"agents": {
"defaults": {
"model": {
- "primary": "g5",
+ "primary": "minimax/MiniMax-M2.7-highspeed",
"fallbacks": [
- "g47f",
- "m25",
- "q3",
- "k2p5"
+ "zhipu/glm-5",
+ "zhipu/glm-4.7-FlashX",
+ "minimax/MiniMax-M2.7-highspeed"
]
},
"models": {
@@ -125,14 +107,8 @@
"zhipu/glm-4.7-FlashX": {
"alias": "g47f"
},
- "mm/MiniMax-M2.5": {
- "alias": "m25"
- },
- "bailian/qwen3-max-2026-01-23": {
- "alias": "q3"
- },
- "kimi-coding/k2p5": {
- "alias": "k2p5"
+ "minimax/MiniMax-M2.7-highspeed": {
+ "alias": "m27h"
}
},
"workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
@@ -258,10 +234,12 @@
"tts": {
"auto": "tagged",
"provider": "edge",
- "edge": {
- "enabled": true,
- "voice": "zh-CN-XiaoxiaoNeural",
- "lang": "zh-CN"
+ "providers": {
+ "microsoft": {
+ "enabled": true,
+ "voice": "zh-CN-XiaoxiaoNeural",
+ "lang": "zh-CN"
+ }
}
}
},
@@ -369,7 +347,8 @@
"plugins": {
"entries": {
"feishu": {
- "enabled": true
+ "enabled": true,
+ "config": {}
}
},
"installs": {
@@ -377,8 +356,14 @@
"source": "npm",
"spec": "@m1heng-clawd/feishu",
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
- "version": "0.1.15",
- "installedAt": "2026-03-06T02:47:51.601Z"
+ "version": "0.1.19",
+ "resolvedName": "@m1heng-clawd/feishu",
+ "resolvedVersion": "0.1.19",
+ "resolvedSpec": "@m1heng-clawd/feishu@0.1.19",
+ "integrity": "sha512-6BgCTWB91E85l6O3rPSfBUJW5GdLa44Skp2U409tlUi3+src7EvOx0gm7bc3Z0R+5EJJHtEhVnX0d5XawMiX6w==",
+ "shasum": "507c182c8dffcadf9c19f6e817955cddc81857a9",
+ "resolvedAt": "2026-04-01T15:09:31.217Z",
+ "installedAt": "2026-04-01T15:09:42.988Z"
}
}
}
diff --git a/openclaw.json.bak b/openclaw.json.bak
index 66f945f..7607427 100644
--- a/openclaw.json.bak
+++ b/openclaw.json.bak
@@ -1,7 +1,7 @@
{
"meta": {
- "lastTouchedVersion": "2026.3.2",
- "lastTouchedAt": "2026-03-06T03:20:49.571Z"
+ "lastTouchedVersion": "2026.3.31",
+ "lastTouchedAt": "2026-04-01T15:09:49.320Z"
},
"wizard": {
"lastRunAt": "2026-03-06T03:20:49.563Z",
@@ -38,7 +38,8 @@
"cacheWrite": 0
},
"contextWindow": 262144,
- "maxTokens": 65536
+ "maxTokens": 65536,
+ "api": "openai-completions"
}
]
},
@@ -62,7 +63,8 @@
"cacheWrite": 10
},
"contextWindow": 200000,
- "maxTokens": 8192
+ "maxTokens": 8192,
+ "api": "anthropic-messages"
}
]
},
@@ -85,7 +87,8 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192
+ "maxTokens": 8192,
+ "api": "openai-completions"
},
{
"id": "glm-4.7-FlashX",
@@ -101,7 +104,8 @@
"cacheWrite": 0
},
"contextWindow": 200000,
- "maxTokens": 8192
+ "maxTokens": 8192,
+ "api": "openai-completions"
}
]
}
@@ -149,7 +153,7 @@
"id": "haonan",
"workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"skills": [
- "common-require",
+ "clawlist",
"capability-evolver",
"self-improving-agent"
]
@@ -158,8 +162,7 @@
"id": "knowledge-base",
"workspace": "/home/starmen1265/.openclaw/agents/knowledge-base/workspace",
"skills": [
- "common-require",
- "kb-workflow",
+ "kb_workflow",
"capability-evolver",
"self-improving-agent"
]
@@ -168,7 +171,6 @@
"id": "dev-assist",
"workspace": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"skills": [
- "common-require",
"clawlist",
"capability-evolver",
"self-improving-agent"
@@ -178,7 +180,6 @@
"id": "ui-designer",
"workspace": "/home/starmen1265/.openclaw/agents/ui-designer/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -187,7 +188,6 @@
"id": "thinker",
"workspace": "/home/starmen1265/.openclaw/agents/thinker/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -262,10 +262,12 @@
"tts": {
"auto": "tagged",
"provider": "edge",
- "edge": {
- "enabled": true,
- "voice": "zh-CN-XiaoxiaoNeural",
- "lang": "zh-CN"
+ "providers": {
+ "microsoft": {
+ "enabled": true,
+ "voice": "zh-CN-XiaoxiaoNeural",
+ "lang": "zh-CN"
+ }
}
}
},
@@ -333,28 +335,6 @@
},
"domain": "feishu",
"requireMention": true
- },
- "wecom": {
- "enabled": true,
- "bot": {
- "token": "X8ySyqpZ",
- "encodingAESKey": "SjHvepG9uF38EDPyNmHjv22n2Ric8BVCA31imJidYxY",
- "receiveId": "",
- "dm": {
- "policy": "open"
- }
- },
- "agent": {
- "corpId": "wwe98fa68a53dbf51d",
- "corpSecret": "C5rwbH55fKEB8mwVgyMcwzMs-4KgR9DcIXsyMGbxfwg",
- "agentId": "1000002",
- "token": "vjgcDzgRcqeFOG5X8lpdAk87gsw7i",
- "encodingAESKey": "bAx5QMjhHIZqnd33VgVcs4exD5JRLNn9zc1gmICiIS2",
- "dm": {
- "policy": "open",
- "allowFrom": []
- }
- }
}
},
"gateway": {
@@ -395,10 +375,8 @@
"plugins": {
"entries": {
"feishu": {
- "enabled": true
- },
- "wecom": {
- "enabled": true
+ "enabled": true,
+ "config": {}
}
},
"installs": {
@@ -406,15 +384,14 @@
"source": "npm",
"spec": "@m1heng-clawd/feishu",
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
- "version": "0.1.15",
- "installedAt": "2026-03-06T02:47:51.601Z"
- },
- "wecom": {
- "source": "npm",
- "spec": "https://github.com/xl370869-art/wecom.git",
- "installPath": "/home/starmen1265/.openclaw/extensions/wecom",
- "version": "2026.2.5",
- "installedAt": "2026-02-06T10:39:17.377Z"
+ "version": "0.1.19",
+ "resolvedName": "@m1heng-clawd/feishu",
+ "resolvedVersion": "0.1.19",
+ "resolvedSpec": "@m1heng-clawd/feishu@0.1.19",
+ "integrity": "sha512-6BgCTWB91E85l6O3rPSfBUJW5GdLa44Skp2U409tlUi3+src7EvOx0gm7bc3Z0R+5EJJHtEhVnX0d5XawMiX6w==",
+ "shasum": "507c182c8dffcadf9c19f6e817955cddc81857a9",
+ "resolvedAt": "2026-04-01T15:09:31.217Z",
+ "installedAt": "2026-04-01T15:09:42.988Z"
}
}
}
diff --git a/openclaw.json.bak.1 b/openclaw.json.bak.1
index 269ff44..9bfe5b7 100644
--- a/openclaw.json.bak.1
+++ b/openclaw.json.bak.1
@@ -1,11 +1,11 @@
{
"meta": {
"lastTouchedVersion": "2026.3.2",
- "lastTouchedAt": "2026-03-06T02:48:05.962Z"
+ "lastTouchedAt": "2026-04-01T15:09:43.020Z"
},
"wizard": {
- "lastRunAt": "2026-02-13T15:47:05.928Z",
- "lastRunVersion": "2026.2.9",
+ "lastRunAt": "2026-03-06T03:20:49.563Z",
+ "lastRunVersion": "2026.3.2",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
@@ -149,7 +149,7 @@
"id": "haonan",
"workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"skills": [
- "common-require",
+ "clawlist",
"capability-evolver",
"self-improving-agent"
]
@@ -158,8 +158,7 @@
"id": "knowledge-base",
"workspace": "/home/starmen1265/.openclaw/agents/knowledge-base/workspace",
"skills": [
- "common-require",
- "kb-workflow",
+ "kb_workflow",
"capability-evolver",
"self-improving-agent"
]
@@ -168,7 +167,6 @@
"id": "dev-assist",
"workspace": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"skills": [
- "common-require",
"clawlist",
"capability-evolver",
"self-improving-agent"
@@ -178,7 +176,6 @@
"id": "ui-designer",
"workspace": "/home/starmen1265/.openclaw/agents/ui-designer/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -187,7 +184,6 @@
"id": "thinker",
"workspace": "/home/starmen1265/.openclaw/agents/thinker/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -302,7 +298,6 @@
"channels": {
"feishu": {
"enabled": true,
- "dmPolicy": "open",
"accounts": {
"feishu-pm": {
"appId": "cli_a9f74dc9a3f8dbce",
@@ -323,33 +318,17 @@
"feishu-art": {
"appId": "cli_a92baa31fdf8dbc0",
"appSecret": "BKjGWv1MTz7WmTn0I5A2EhuKyzwuuUnk"
+ },
+ "default": {
+ "dmPolicy": "open",
+ "groupPolicy": "open",
+ "allowFrom": [
+ "*"
+ ]
}
},
"domain": "feishu",
- "groupPolicy": "open",
"requireMention": true
- },
- "wecom": {
- "enabled": true,
- "bot": {
- "token": "X8ySyqpZ",
- "encodingAESKey": "SjHvepG9uF38EDPyNmHjv22n2Ric8BVCA31imJidYxY",
- "receiveId": "",
- "dm": {
- "policy": "open"
- }
- },
- "agent": {
- "corpId": "wwe98fa68a53dbf51d",
- "corpSecret": "C5rwbH55fKEB8mwVgyMcwzMs-4KgR9DcIXsyMGbxfwg",
- "agentId": "1000002",
- "token": "vjgcDzgRcqeFOG5X8lpdAk87gsw7i",
- "encodingAESKey": "bAx5QMjhHIZqnd33VgVcs4exD5JRLNn9zc1gmICiIS2",
- "dm": {
- "policy": "open",
- "allowFrom": []
- }
- }
}
},
"gateway": {
@@ -391,9 +370,6 @@
"entries": {
"feishu": {
"enabled": true
- },
- "wecom": {
- "enabled": true
}
},
"installs": {
@@ -401,15 +377,14 @@
"source": "npm",
"spec": "@m1heng-clawd/feishu",
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
- "version": "0.1.15",
- "installedAt": "2026-03-06T02:47:51.601Z"
- },
- "wecom": {
- "source": "npm",
- "spec": "https://github.com/xl370869-art/wecom.git",
- "installPath": "/home/starmen1265/.openclaw/extensions/wecom",
- "version": "2026.2.5",
- "installedAt": "2026-02-06T10:39:17.377Z"
+ "version": "0.1.19",
+ "resolvedName": "@m1heng-clawd/feishu",
+ "resolvedVersion": "0.1.19",
+ "resolvedSpec": "@m1heng-clawd/feishu@0.1.19",
+ "integrity": "sha512-6BgCTWB91E85l6O3rPSfBUJW5GdLa44Skp2U409tlUi3+src7EvOx0gm7bc3Z0R+5EJJHtEhVnX0d5XawMiX6w==",
+ "shasum": "507c182c8dffcadf9c19f6e817955cddc81857a9",
+ "resolvedAt": "2026-04-01T15:09:31.217Z",
+ "installedAt": "2026-04-01T15:09:42.988Z"
}
}
}
diff --git a/openclaw.json.bak.2 b/openclaw.json.bak.2
index 8b51c1b..a5f9674 100644
--- a/openclaw.json.bak.2
+++ b/openclaw.json.bak.2
@@ -1,11 +1,11 @@
{
"meta": {
- "lastTouchedVersion": "2026.2.9",
- "lastTouchedAt": "2026-03-06T02:47:54.032Z"
+ "lastTouchedVersion": "2026.3.2",
+ "lastTouchedAt": "2026-03-06T03:40:12.152Z"
},
"wizard": {
- "lastRunAt": "2026-02-13T15:47:05.928Z",
- "lastRunVersion": "2026.2.9",
+ "lastRunAt": "2026-03-06T03:20:49.563Z",
+ "lastRunVersion": "2026.3.2",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
@@ -149,7 +149,7 @@
"id": "haonan",
"workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"skills": [
- "common-require",
+ "clawlist",
"capability-evolver",
"self-improving-agent"
]
@@ -158,8 +158,7 @@
"id": "knowledge-base",
"workspace": "/home/starmen1265/.openclaw/agents/knowledge-base/workspace",
"skills": [
- "common-require",
- "kb-workflow",
+ "kb_workflow",
"capability-evolver",
"self-improving-agent"
]
@@ -168,7 +167,6 @@
"id": "dev-assist",
"workspace": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"skills": [
- "common-require",
"clawlist",
"capability-evolver",
"self-improving-agent"
@@ -178,7 +176,6 @@
"id": "ui-designer",
"workspace": "/home/starmen1265/.openclaw/agents/ui-designer/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -187,7 +184,6 @@
"id": "thinker",
"workspace": "/home/starmen1265/.openclaw/agents/thinker/workspace",
"skills": [
- "common-require",
"capability-evolver",
"self-improving-agent"
]
@@ -272,7 +268,8 @@
"commands": {
"native": "auto",
"nativeSkills": "auto",
- "restart": true
+ "restart": true,
+ "ownerDisplay": "raw"
},
"approvals": {
"exec": {
@@ -301,7 +298,6 @@
"channels": {
"feishu": {
"enabled": true,
- "dmPolicy": "open",
"accounts": {
"feishu-pm": {
"appId": "cli_a9f74dc9a3f8dbce",
@@ -322,33 +318,17 @@
"feishu-art": {
"appId": "cli_a92baa31fdf8dbc0",
"appSecret": "BKjGWv1MTz7WmTn0I5A2EhuKyzwuuUnk"
+ },
+ "default": {
+ "dmPolicy": "open",
+ "groupPolicy": "open",
+ "allowFrom": [
+ "*"
+ ]
}
},
"domain": "feishu",
- "groupPolicy": "open",
"requireMention": true
- },
- "wecom": {
- "enabled": true,
- "bot": {
- "token": "X8ySyqpZ",
- "encodingAESKey": "SjHvepG9uF38EDPyNmHjv22n2Ric8BVCA31imJidYxY",
- "receiveId": "",
- "dm": {
- "policy": "open"
- }
- },
- "agent": {
- "corpId": "wwe98fa68a53dbf51d",
- "corpSecret": "C5rwbH55fKEB8mwVgyMcwzMs-4KgR9DcIXsyMGbxfwg",
- "agentId": "1000002",
- "token": "vjgcDzgRcqeFOG5X8lpdAk87gsw7i",
- "encodingAESKey": "bAx5QMjhHIZqnd33VgVcs4exD5JRLNn9zc1gmICiIS2",
- "dm": {
- "policy": "open",
- "allowFrom": []
- }
- }
}
},
"gateway": {
@@ -356,6 +336,10 @@
"mode": "local",
"bind": "lan",
"controlUi": {
+ "allowedOrigins": [
+ "http://localhost:18789",
+ "http://127.0.0.1:18789"
+ ],
"allowInsecureAuth": true
},
"auth": {
@@ -386,9 +370,6 @@
"entries": {
"feishu": {
"enabled": true
- },
- "wecom": {
- "enabled": true
}
},
"installs": {
@@ -398,13 +379,6 @@
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
"version": "0.1.15",
"installedAt": "2026-03-06T02:47:51.601Z"
- },
- "wecom": {
- "source": "npm",
- "spec": "https://github.com/xl370869-art/wecom.git",
- "installPath": "/home/starmen1265/.openclaw/extensions/wecom",
- "version": "2026.2.5",
- "installedAt": "2026-02-06T10:39:17.377Z"
}
}
}
diff --git a/openclaw.json.bak.3 b/openclaw.json.bak.3
index ac8886b..66f945f 100644
--- a/openclaw.json.bak.3
+++ b/openclaw.json.bak.3
@@ -1,11 +1,11 @@
{
"meta": {
- "lastTouchedVersion": "2026.2.9",
- "lastTouchedAt": "2026-03-03T15:31:40.861Z"
+ "lastTouchedVersion": "2026.3.2",
+ "lastTouchedAt": "2026-03-06T03:20:49.571Z"
},
"wizard": {
- "lastRunAt": "2026-02-13T15:47:05.928Z",
- "lastRunVersion": "2026.2.9",
+ "lastRunAt": "2026-03-06T03:20:49.563Z",
+ "lastRunVersion": "2026.3.2",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
@@ -135,7 +135,7 @@
"alias": "k2p5"
}
},
- "workspace":"~/.openclaw/agents/haonan/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"compaction": {
"mode": "safeguard"
},
@@ -147,7 +147,7 @@
"list": [
{
"id": "haonan",
- "workspace":"~/.openclaw/agents/haonan/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -156,7 +156,7 @@
},
{
"id": "knowledge-base",
- "workspace":"~/.openclaw/agents/knowledge-base/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/knowledge-base/workspace",
"skills": [
"common-require",
"kb-workflow",
@@ -166,7 +166,7 @@
},
{
"id": "dev-assist",
- "workspace":"~/.openclaw/agents/dev-assist/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"skills": [
"common-require",
"clawlist",
@@ -176,7 +176,7 @@
},
{
"id": "ui-designer",
- "workspace":"~/.openclaw/agents/ui-designer/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/ui-designer/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -185,7 +185,7 @@
},
{
"id": "thinker",
- "workspace":"~/.openclaw/agents/thinker/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/thinker/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -272,7 +272,8 @@
"commands": {
"native": "auto",
"nativeSkills": "auto",
- "restart": true
+ "restart": true,
+ "ownerDisplay": "raw"
},
"approvals": {
"exec": {
@@ -301,7 +302,6 @@
"channels": {
"feishu": {
"enabled": true,
- "dmPolicy": "open",
"accounts": {
"feishu-pm": {
"appId": "cli_a9f74dc9a3f8dbce",
@@ -322,10 +322,16 @@
"feishu-art": {
"appId": "cli_a92baa31fdf8dbc0",
"appSecret": "BKjGWv1MTz7WmTn0I5A2EhuKyzwuuUnk"
+ },
+ "default": {
+ "dmPolicy": "open",
+ "groupPolicy": "open",
+ "allowFrom": [
+ "*"
+ ]
}
},
"domain": "feishu",
- "groupPolicy": "open",
"requireMention": true
},
"wecom": {
@@ -356,6 +362,10 @@
"mode": "local",
"bind": "lan",
"controlUi": {
+ "allowedOrigins": [
+ "http://localhost:18789",
+ "http://127.0.0.1:18789"
+ ],
"allowInsecureAuth": true
},
"auth": {
@@ -396,8 +406,8 @@
"source": "npm",
"spec": "@m1heng-clawd/feishu",
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
- "version": "0.1.9",
- "installedAt": "2026-02-12T16:31:18.854Z"
+ "version": "0.1.15",
+ "installedAt": "2026-03-06T02:47:51.601Z"
},
"wecom": {
"source": "npm",
diff --git a/openclaw.json.bak.4 b/openclaw.json.bak.4
index 4026828..269ff44 100644
--- a/openclaw.json.bak.4
+++ b/openclaw.json.bak.4
@@ -1,7 +1,7 @@
{
"meta": {
- "lastTouchedVersion": "2026.2.9",
- "lastTouchedAt": "2026-03-03T15:06:05.649Z"
+ "lastTouchedVersion": "2026.3.2",
+ "lastTouchedAt": "2026-03-06T02:48:05.962Z"
},
"wizard": {
"lastRunAt": "2026-02-13T15:47:05.928Z",
@@ -110,10 +110,10 @@
"agents": {
"defaults": {
"model": {
- "primary": "m25",
+ "primary": "g5",
"fallbacks": [
"g47f",
- "g5",
+ "m25",
"q3",
"k2p5"
]
@@ -135,7 +135,7 @@
"alias": "k2p5"
}
},
- "workspace": "/home/starmen1265/.openclaw/workspace",
+ "workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"compaction": {
"mode": "safeguard"
},
@@ -147,6 +147,7 @@
"list": [
{
"id": "haonan",
+ "workspace": "/home/starmen1265/.openclaw/agents/haonan/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -155,6 +156,7 @@
},
{
"id": "knowledge-base",
+ "workspace": "/home/starmen1265/.openclaw/agents/knowledge-base/workspace",
"skills": [
"common-require",
"kb-workflow",
@@ -164,6 +166,7 @@
},
{
"id": "dev-assist",
+ "workspace": "/home/starmen1265/.openclaw/agents/dev-assist/workspace",
"skills": [
"common-require",
"clawlist",
@@ -173,6 +176,7 @@
},
{
"id": "ui-designer",
+ "workspace": "/home/starmen1265/.openclaw/agents/ui-designer/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -181,6 +185,7 @@
},
{
"id": "thinker",
+ "workspace": "/home/starmen1265/.openclaw/agents/thinker/workspace",
"skills": [
"common-require",
"capability-evolver",
@@ -267,7 +272,8 @@
"commands": {
"native": "auto",
"nativeSkills": "auto",
- "restart": true
+ "restart": true,
+ "ownerDisplay": "raw"
},
"approvals": {
"exec": {
@@ -286,6 +292,9 @@
},
"session-memory": {
"enabled": true
+ },
+ "self-improvement": {
+ "enabled": true
}
}
}
@@ -348,6 +357,10 @@
"mode": "local",
"bind": "lan",
"controlUi": {
+ "allowedOrigins": [
+ "http://localhost:18789",
+ "http://127.0.0.1:18789"
+ ],
"allowInsecureAuth": true
},
"auth": {
@@ -388,8 +401,8 @@
"source": "npm",
"spec": "@m1heng-clawd/feishu",
"installPath": "/home/starmen1265/.openclaw/extensions/feishu",
- "version": "0.1.9",
- "installedAt": "2026-02-12T16:31:18.854Z"
+ "version": "0.1.15",
+ "installedAt": "2026-03-06T02:47:51.601Z"
},
"wecom": {
"source": "npm",
diff --git a/tasks/runs.sqlite b/tasks/runs.sqlite
new file mode 100644
index 0000000..4410bda
Binary files /dev/null and b/tasks/runs.sqlite differ
diff --git a/tasks/runs.sqlite-shm b/tasks/runs.sqlite-shm
new file mode 100644
index 0000000..e4e2ce1
Binary files /dev/null and b/tasks/runs.sqlite-shm differ
diff --git a/tasks/runs.sqlite-wal b/tasks/runs.sqlite-wal
new file mode 100644
index 0000000..7da1763
Binary files /dev/null and b/tasks/runs.sqlite-wal differ