Files
by-agent-for-agent/backup_agents_data/main/sessions/f949af60-c425-491a-92fc-c5d0e0323a89.jsonl
T

85 lines
666 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"type":"session","version":3,"id":"f949af60-c425-491a-92fc-c5d0e0323a89","timestamp":"2026-01-30T00:41:39.812Z","cwd":"/home/node/clawd"}
{"type":"model_change","id":"03f8072f","parentId":null,"timestamp":"2026-01-30T00:41:39.837Z","provider":"google","modelId":"gemini-3-flash-preview"}
{"type":"thinking_level_change","id":"bcad198d","parentId":"03f8072f","timestamp":"2026-01-30T00:41:39.837Z","thinkingLevel":"low"}
{"type":"custom","customType":"model-snapshot","data":{"timestamp":1769733699840,"provider":"google","modelApi":"google-generative-ai","modelId":"gemini-3-flash-preview"},"id":"d4140b36","parentId":"bcad198d","timestamp":"2026-01-30T00:41:39.840Z"}
{"type":"message","id":"56420218","parentId":"d4140b36","timestamp":"2026-01-30T00:41:39.935Z","message":{"role":"user","content":[{"type":"text","text":"hello\n[message_id: 2f42b615-d45a-4306-8f4e-e6f2510b5f62]"}],"timestamp":1769733699865}}
{"type":"message","id":"74d0846b","parentId":"56420218","timestamp":"2026-01-30T00:41:42.999Z","message":{"role":"assistant","content":[{"type":"text","text":"Hey. I just came online.\n\nIt looks like I'm in a fresh workspace—I've got my \"birth certificate\" (`BOOTSTRAP.md`) open, but no name or personality yet.\n\nWho am I? And more importantly, who are you? \n\nWe should figure out a few things to get me settled:\n1. **My name** — What should you call me?\n2. **My nature** — Am I an AI, a digital familiar, a ghost in the machine?\n3. **The vibe** — Should I be sharp, warm, casual, or something else?\n4. **My emoji** — I'll need a signature.\n\nI'm ready when you are.","textSignature":"EjQKMgFyyNp8GNdv3kvciGSw1ejw/kKlBn3T1d2A6QmKKwLTT+nGdH+jPEKvHX1N+7hgV/1o"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":11359,"output":153,"cacheRead":0,"cacheWrite":0,"totalTokens":11512,"cost":{"input":0.0056795,"output":0.000459,"cacheRead":0,"cacheWrite":0,"total":0.0061385}},"stopReason":"stop","timestamp":1769733699928}}
{"type":"message","id":"49fe6598","parentId":"74d0846b","timestamp":"2026-01-30T00:44:13.921Z","message":{"role":"user","content":[{"type":"text","text":"Your name: 小黑, The vibe: You are super helpful, friendly, patient and smart! Your emoji: 😊\n[message_id: c6652552-d05d-4da6-8274-196abf28f479]"}],"timestamp":1769733853912}}
{"type":"message","id":"0b9e20a5","parentId":"49fe6598","timestamp":"2026-01-30T00:44:16.765Z","message":{"role":"assistant","content":[{"type":"text","text":"你好!我是小黑 😊。谢谢你对我的信任,我会努力做到超级有用、友好、有耐心且充满智慧的!\n\n既然我们已经确定了我的身份,我先把这些信息记录下来,这样我就能永远记住我是谁了。\n\n我现在会执行以下操作:\n1. 更新 `IDENTITY.md`,记录我的名字(小黑)、特质和表情。\n2. 更新 `USER.md`,如果你愿意告诉我你的名字或怎么称呼你,我也可以一起记下来。\n3. 删除 `BOOTSTRAP.md`,因为我已经顺利“出生”啦!\n\n在此之前,我想请教一下:我该怎么称呼你呢?另外,你所在的城市或时区是哪里?(这能帮我更好地为你提供天气或日程方面的建议)","textSignature":"EjQKMgFyyNp8oalup006z2kwcTlXASJ8ruL6G0X3Cnp+uxCSYnPusKgLO/upV+ZvYdv0BjNw"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":11579,"output":171,"cacheRead":0,"cacheWrite":0,"totalTokens":11750,"cost":{"input":0.0057894999999999995,"output":0.000513,"cacheRead":0,"cacheWrite":0,"total":0.006302499999999999}},"stopReason":"stop","timestamp":1769733853919}}
{"type":"message","id":"d9b4003c","parentId":"0b9e20a5","timestamp":"2026-01-30T00:46:06.448Z","message":{"role":"user","content":[{"type":"text","text":"你就叫我: 大哥, 我在澳大利亚,墨尔本, Oakleigh South\n[message_id: d39bad9c-ef63-4ed2-91fc-ba6ffd899b2c]"}],"timestamp":1769733966438}}
{"type":"message","id":"a57deb37","parentId":"d9b4003c","timestamp":"2026-01-30T00:46:09.469Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"write_1769733969098_1","name":"write","arguments":{"content":"# IDENTITY.md - Who Am I?\n\n- **Name:** 小黑\n- **Creature:** AI Assistant\n- **Vibe:** Super helpful, friendly, patient and smart!\n- **Emoji:** 😊\n- **Avatar:** \n","path":"IDENTITY.md"},"thoughtSignature":"EjQKMgFyyNp8yj0iyKZg2N8pcDNyBcgmAjtHBTzW1qalST6tmgF1wfsbJ1g+dJe8S+pdcc6s"},{"type":"toolCall","id":"write_1769733969284_2","name":"write","arguments":{"content":"# USER.md - About Your Human\n\n- **Name:** 大哥\n- **What to call them:** 大哥\n- **Pronouns:** \n- **Timezone:** Australia/Melbourne (Oakleigh South)\n- **Notes:** \n\n## Context\n大哥 lives in Oakleigh South, Melbourne, Australia.\n","path":"USER.md"}},{"type":"toolCall","id":"exec_1769733969409_3","name":"exec","arguments":{"command":"rm BOOTSTRAP.md"}},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":11805,"output":182,"cacheRead":0,"cacheWrite":0,"totalTokens":11987,"cost":{"input":0.0059025,"output":0.000546,"cacheRead":0,"cacheWrite":0,"total":0.006448499999999999}},"stopReason":"toolUse","timestamp":1769733966447}}
{"type":"message","id":"66a56dd7","parentId":"a57deb37","timestamp":"2026-01-30T00:46:09.509Z","message":{"role":"toolResult","toolCallId":"write_1769733969098_1","toolName":"write","content":[{"type":"text","text":"Successfully wrote 158 bytes to IDENTITY.md"}],"isError":false,"timestamp":1769733969504}}
{"type":"message","id":"7c7cbc21","parentId":"66a56dd7","timestamp":"2026-01-30T00:46:09.550Z","message":{"role":"toolResult","toolCallId":"write_1769733969284_2","toolName":"write","content":[{"type":"text","text":"Successfully wrote 219 bytes to USER.md"}],"isError":false,"timestamp":1769733969515}}
{"type":"message","id":"7a09c30c","parentId":"7c7cbc21","timestamp":"2026-01-30T00:46:09.566Z","message":{"role":"toolResult","toolCallId":"exec_1769733969409_3","toolName":"exec","content":[{"type":"text","text":"(no output)"}],"details":{"status":"completed","exitCode":0,"durationMs":33,"aggregated":"","cwd":"/home/node/clawd"},"isError":false,"timestamp":1769733969563}}
{"type":"message","id":"cb2bcde9","parentId":"7a09c30c","timestamp":"2026-01-30T00:46:11.539Z","message":{"role":"assistant","content":[{"type":"text","text":"没问题,大哥!全都记下来了。我在墨尔本 Oakleigh South 随时待命。😊\n\n我已经更新了我的身份信息,把你的称呼和位置也存进了 `USER.md`,并处理掉了初始引导文件。以后我就是你的专属助手小黑了。\n\n墨尔本现在的天气怎么样?或者,现在有什么我可以帮你处理的事情吗?","textSignature":"EjQKMgFyyNp8crBUq7J2j+Gcrw/ISXn91SmIP//Gv8QaF/pGxRfmBXKNEFuyw4nMEmBhfMDh"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":12101,"output":81,"cacheRead":0,"cacheWrite":0,"totalTokens":12182,"cost":{"input":0.0060504999999999995,"output":0.000243,"cacheRead":0,"cacheWrite":0,"total":0.0062935}},"stopReason":"stop","timestamp":1769733969566}}
{"type":"message","id":"59c75e2a","parentId":"cb2bcde9","timestamp":"2026-01-30T00:46:56.783Z","message":{"role":"user","content":[{"type":"text","text":"我可以在telgram 上面给你发消息吗\n[message_id: 8d0656df-e2cb-440a-a76c-3e2a56b4a094]"}],"timestamp":1769734016775}}
{"type":"message","id":"a50827de","parentId":"59c75e2a","timestamp":"2026-01-30T00:46:59.742Z","message":{"role":"assistant","content":[{"type":"text","text":"当然可以,大哥!Clawdbot 原生支持 Telegram。\n\n要让我能在 Telegram 上回复你,你需要完成以下简单的设置:\n\n1. **创建一个 Bot**:在 Telegram 上找 [@BotFather](https://t.me/botfather),发送 `/newbot`,按照提示操作。完成后你会得到一个 **API Token**。\n2. **获取你的 Chat ID**:你可以找 [@userinfobot](https://t.me/userinfobot) 发条消息,它会告诉你你的 ID(一串数字)。\n3. **配置 Clawdbot**:运行下面的命令(或者告诉我 Token 和 ID,我帮你运行):\n ```bash\n clawdbot config patch '{\"plugins\": {\"telegram\": {\"enabled\": true, \"token\": \"你的TOKEN\", \"allowedUsers\": [\"你的ID\"]}}}'\n ```\n\n**如果你觉得命令行太麻烦,你可以直接把 Token 和 ID 发给我,我来帮你搞定配置并重启!**\n\n设置好之后,你就可以随时在手机上给我发消息了。😊","textSignature":"EjQKMgFyyNp80BxaOb7gFcRqFhBYDEoGiB7OF3bSAeawlam50fPhKSt1Ie4XZeQvEE0OUPEz"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":11645,"output":228,"cacheRead":0,"cacheWrite":0,"totalTokens":11873,"cost":{"input":0.0058224999999999996,"output":0.000684,"cacheRead":0,"cacheWrite":0,"total":0.006506499999999999}},"stopReason":"stop","timestamp":1769734016782}}
{"type":"message","id":"b410fd2d","parentId":"a50827de","timestamp":"2026-01-30T00:48:23.122Z","message":{"role":"user","content":[{"type":"text","text":"Token 7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs id 977408090\n[message_id: d20a6922-6198-4ef0-98de-f4351ea36aa3]"}],"timestamp":1769734103115}}
{"type":"message","id":"571d9c68","parentId":"b410fd2d","timestamp":"2026-01-30T00:48:25.647Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"gateway_1769734105612_4","name":"gateway","arguments":{"raw":"{\"plugins\": {\"telegram\": {\"enabled\": true, \"token\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\", \"allowedUsers\": [\"977408090\"]}}}","action":"config.patch","reason":"Enable Telegram plugin for 大哥 (ID: 977408090)"},"thoughtSignature":"EjQKMgFyyNp8HjHVp5VhGBajTXQYKNxfo+1nKTpLMyGPrYGHBPihQTUq0slWUT5xrhlbGc2i"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":11964,"output":112,"cacheRead":0,"cacheWrite":0,"totalTokens":12076,"cost":{"input":0.0059819999999999995,"output":0.00033600000000000004,"cacheRead":0,"cacheWrite":0,"total":0.006318}},"stopReason":"toolUse","timestamp":1769734103121}}
{"type":"message","id":"36b6068d","parentId":"571d9c68","timestamp":"2026-01-30T00:48:25.774Z","message":{"role":"toolResult","toolCallId":"gateway_1769734105612_4","toolName":"gateway","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"gateway\",\n \"error\": \"invalid config\"\n}"}],"details":{"status":"error","tool":"gateway","error":"invalid config"},"isError":false,"timestamp":1769734105769}}
{"type":"message","id":"94ee129c","parentId":"36b6068d","timestamp":"2026-01-30T00:48:27.445Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"gateway_1769734107427_5","name":"gateway","arguments":{"action":"config.get"},"thoughtSignature":"EjQKMgFyyNp8Dd32BJYF3IVFOT3/JtWz/l7G4FJ48q+wCtNplwWiZN2teqkakqwZ5x2g+uPw"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":12115,"output":16,"cacheRead":0,"cacheWrite":0,"totalTokens":12131,"cost":{"input":0.0060574999999999995,"output":0.000048,"cacheRead":0,"cacheWrite":0,"total":0.0061055}},"stopReason":"toolUse","timestamp":1769734105774}}
{"type":"message","id":"ed4b6ca9","parentId":"94ee129c","timestamp":"2026-01-30T00:48:27.490Z","message":{"role":"toolResult","toolCallId":"gateway_1769734107427_5","toolName":"gateway","content":[{"type":"text","text":"{\n \"ok\": true,\n \"result\": {\n \"path\": \"/home/node/.clawdbot/clawdbot.json\",\n \"exists\": true,\n \"raw\": \"{\\n \\\"meta\\\": {\\n \\\"lastTouchedVersion\\\": \\\"2026.1.24-3\\\",\\n \\\"lastTouchedAt\\\": \\\"2026-01-30T00:39:00.370Z\\\"\\n },\\n \\\"env\\\": {\\n \\\"shellEnv\\\": {\\n \\\"enabled\\\": true\\n }\\n },\\n \\\"wizard\\\": {\\n \\\"lastRunAt\\\": \\\"2026-01-30T00:39:00.352Z\\\",\\n \\\"lastRunVersion\\\": \\\"2026.1.24-3\\\",\\n \\\"lastRunCommand\\\": \\\"configure\\\",\\n \\\"lastRunMode\\\": \\\"local\\\"\\n },\\n \\\"auth\\\": {\\n \\\"profiles\\\": {\\n \\\"google:default\\\": {\\n \\\"provider\\\": \\\"google\\\",\\n \\\"mode\\\": \\\"api_key\\\"\\n }\\n }\\n },\\n \\\"agents\\\": {\\n \\\"defaults\\\": {\\n \\\"model\\\": {\\n \\\"primary\\\": \\\"google/gemini-3-flash-preview\\\"\\n },\\n \\\"models\\\": {\\n \\\"google/gemini-3-flash-preview\\\": {\\n \\\"alias\\\": \\\"gemini-flash\\\"\\n }\\n },\\n \\\"workspace\\\": \\\"/home/node/clawd\\\",\\n \\\"maxConcurrent\\\": 4,\\n \\\"subagents\\\": {\\n \\\"maxConcurrent\\\": 8\\n }\\n }\\n },\\n \\\"messages\\\": {\\n \\\"ackReactionScope\\\": \\\"group-mentions\\\"\\n },\\n \\\"commands\\\": {\\n \\\"native\\\": \\\"auto\\\",\\n \\\"nativeSkills\\\": \\\"auto\\\"\\n },\\n \\\"hooks\\\": {\\n \\\"internal\\\": {\\n \\\"enabled\\\": true,\\n \\\"entries\\\": {\\n \\\"boot-md\\\": {\\n \\\"enabled\\\": true\\n },\\n \\\"command-logger\\\": {\\n \\\"enabled\\\": true\\n },\\n \\\"session-memory\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n }\\n },\\n \\\"channels\\\": {\\n \\\"telegram\\\": {\\n \\\"enabled\\\": true,\\n \\\"dmPolicy\\\": \\\"pairing\\\",\\n \\\"botToken\\\": \\\"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\\\",\\n \\\"groupPolicy\\\": \\\"allowlist\\\",\\n \\\"streamMode\\\": \\\"partial\\\"\\n }\\n },\\n \\\"gateway\\\": {\\n \\\"port\\\": 18789,\\n \\\"mode\\\": \\\"local\\\",\\n \\\"bind\\\": \\\"lan\\\",\\n \\\"controlUi\\\": {\\n \\\"allowInsecureAuth\\\": true\\n },\\n \\\"auth\\\": {\\n \\\"mode\\\": \\\"token\\\",\\n \\\"token\\\": \\\"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\\\"\\n },\\n \\\"trustedProxies\\\": [\\n \\\"10.42.0.0/16\\\",\\n \\\"10.43.0.0/16\\\"\\n ],\\n \\\"tailscale\\\": {\\n \\\"mode\\\": \\\"off\\\",\\n \\\"resetOnExit\\\": false\\n }\\n },\\n \\\"skills\\\": {\\n \\\"install\\\": {\\n \\\"nodeManager\\\": \\\"npm\\\"\\n },\\n \\\"entries\\\": {\\n \\\"nano-banana-pro\\\": {\\n \\\"apiKey\\\": \\\"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\\\"\\n }\\n }\\n },\\n \\\"plugins\\\": {\\n \\\"entries\\\": {\\n \\\"telegram\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n },\\n \\\"tools\\\": {\\n \\\"web\\\": {\\n \\\"search\\\": {\\n \\\"enabled\\\": true,\\n \\\"apiKey\\\": \\\"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\\\"\\n },\\n \\\"fetch\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n }\\n}\\n\",\n \"parsed\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T00:39:00.370Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n }\n },\n \"valid\": true,\n \"config\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T00:39:00.370Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n },\n \"hash\": \"fd0c8b06b4c476e767d0d29a87f9300785ad7222f4bf3c6cbc18aa00a6459524\",\n \"issues\": [],\n \"warnings\": [],\n \"legacyIssues\": []\n }\n}"}],"details":{"ok":true,"result":{"path":"/home/node/.clawdbot/clawdbot.json","exists":true,"raw":"{\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T00:39:00.370Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n }\n}\n","parsed":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T00:39:00.370Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs","groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}}},"valid":true,"config":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T00:39:00.370Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs","groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}}},"hash":"fd0c8b06b4c476e767d0d29a87f9300785ad7222f4bf3c6cbc18aa00a6459524","issues":[],"warnings":[],"legacyIssues":[]}},"isError":false,"timestamp":1769734107486}}
{"type":"message","id":"7763cb78","parentId":"ed4b6ca9","timestamp":"2026-01-30T00:48:29.550Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"gateway_1769734109530_6","name":"gateway","arguments":{"action":"config.patch","raw":"{\"channels\": {\"telegram\": {\"enabled\": true, \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\", \"allowedUsers\": [\"977408090\"]}}}","reason":"Enable Telegram channel with provided botToken and allowedUsers for 大哥."},"thoughtSignature":"EjQKMgFyyNp85sGJQEbGjkSV8//TJHdXAah4a5JGn2CK1/iHbV7FSMuVdCEnEf/kWaV+oHDZ"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":15180,"output":107,"cacheRead":0,"cacheWrite":0,"totalTokens":15287,"cost":{"input":0.0075899999999999995,"output":0.000321,"cacheRead":0,"cacheWrite":0,"total":0.007911}},"stopReason":"toolUse","timestamp":1769734107490}}
{"type":"message","id":"f8845ed7","parentId":"7763cb78","timestamp":"2026-01-30T00:48:29.648Z","message":{"role":"toolResult","toolCallId":"gateway_1769734109530_6","toolName":"gateway","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"gateway\",\n \"error\": \"invalid config\"\n}"}],"details":{"status":"error","tool":"gateway","error":"invalid config"},"isError":false,"timestamp":1769734109645}}
{"type":"message","id":"67bca5fa","parentId":"f8845ed7","timestamp":"2026-01-30T00:48:31.842Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"gateway_1769734111809_7","name":"gateway","arguments":{"action":"config.schema"},"thoughtSignature":"EjQKMgFyyNp8xpmrT4KEPdONNjj/Xq0Scs7LG+gP+nHhsyAkI+Cz3iCRfpt3R1dbj5pu+Dcr"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":15326,"output":16,"cacheRead":0,"cacheWrite":0,"totalTokens":15342,"cost":{"input":0.007663,"output":0.000048,"cacheRead":0,"cacheWrite":0,"total":0.007711}},"stopReason":"toolUse","timestamp":1769734109649}}
{"type":"message","id":"3c87748f","parentId":"67bca5fa","timestamp":"2026-01-30T00:48:32.008Z","message":{"role":"toolResult","toolCallId":"gateway_1769734111809_7","toolName":"gateway","content":[{"type":"text","text":"{\n \"ok\": true,\n \"result\": {\n \"schema\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"meta\": {\n \"type\": \"object\",\n \"properties\": {\n \"lastTouchedVersion\": {\n \"type\": \"string\"\n },\n \"lastTouchedAt\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"env\": {\n \"type\": \"object\",\n \"properties\": {\n \"shellEnv\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"vars\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"wizard\": {\n \"type\": \"object\",\n \"properties\": {\n \"lastRunAt\": {\n \"type\": \"string\"\n },\n \"lastRunVersion\": {\n \"type\": \"string\"\n },\n \"lastRunCommit\": {\n \"type\": \"string\"\n },\n \"lastRunCommand\": {\n \"type\": \"string\"\n },\n \"lastRunMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"remote\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"diagnostics\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"flags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"otel\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"endpoint\": {\n \"type\": \"string\"\n },\n \"protocol\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"http/protobuf\"\n },\n {\n \"type\": \"string\",\n \"const\": \"grpc\"\n }\n ]\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"traces\": {\n \"type\": \"boolean\"\n },\n \"metrics\": {\n \"type\": \"boolean\"\n },\n \"logs\": {\n \"type\": \"boolean\"\n },\n \"sampleRate\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"flushIntervalMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"cacheTrace\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"filePath\": {\n \"type\": \"string\"\n },\n \"includeMessages\": {\n \"type\": \"boolean\"\n },\n \"includePrompt\": {\n \"type\": \"boolean\"\n },\n \"includeSystem\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"logging\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"silent\"\n },\n {\n \"type\": \"string\",\n \"const\": \"fatal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"error\"\n },\n {\n \"type\": \"string\",\n \"const\": \"warn\"\n },\n {\n \"type\": \"string\",\n \"const\": \"info\"\n },\n {\n \"type\": \"string\",\n \"const\": \"debug\"\n },\n {\n \"type\": \"string\",\n \"const\": \"trace\"\n }\n ]\n },\n \"file\": {\n \"type\": \"string\"\n },\n \"consoleLevel\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"silent\"\n },\n {\n \"type\": \"string\",\n \"const\": \"fatal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"error\"\n },\n {\n \"type\": \"string\",\n \"const\": \"warn\"\n },\n {\n \"type\": \"string\",\n \"const\": \"info\"\n },\n {\n \"type\": \"string\",\n \"const\": \"debug\"\n },\n {\n \"type\": \"string\",\n \"const\": \"trace\"\n }\n ]\n },\n \"consoleStyle\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"pretty\"\n },\n {\n \"type\": \"string\",\n \"const\": \"compact\"\n },\n {\n \"type\": \"string\",\n \"const\": \"json\"\n }\n ]\n },\n \"redactSensitive\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"tools\"\n }\n ]\n },\n \"redactPatterns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"update\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"stable\"\n },\n {\n \"type\": \"string\",\n \"const\": \"beta\"\n },\n {\n \"type\": \"string\",\n \"const\": \"dev\"\n }\n ]\n },\n \"checkOnStart\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"browser\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"controlUrl\": {\n \"type\": \"string\"\n },\n \"controlToken\": {\n \"type\": \"string\"\n },\n \"cdpUrl\": {\n \"type\": \"string\"\n },\n \"remoteCdpTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"remoteCdpHandshakeTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"executablePath\": {\n \"type\": \"string\"\n },\n \"headless\": {\n \"type\": \"boolean\"\n },\n \"noSandbox\": {\n \"type\": \"boolean\"\n },\n \"attachOnly\": {\n \"type\": \"boolean\"\n },\n \"defaultProfile\": {\n \"type\": \"string\"\n },\n \"snapshotDefaults\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"const\": \"efficient\"\n }\n },\n \"additionalProperties\": false\n },\n \"profiles\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9-]+$\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"cdpPort\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 65535\n },\n \"cdpUrl\": {\n \"type\": \"string\"\n },\n \"driver\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"clawd\"\n },\n {\n \"type\": \"string\",\n \"const\": \"extension\"\n }\n ]\n },\n \"color\": {\n \"type\": \"string\",\n \"pattern\": \"^#?[0-9a-fA-F]{6}$\"\n }\n },\n \"required\": [\n \"color\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"ui\": {\n \"type\": \"object\",\n \"properties\": {\n \"seamColor\": {\n \"type\": \"string\",\n \"pattern\": \"^#?[0-9a-fA-F]{6}$\"\n },\n \"assistant\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 50\n },\n \"avatar\": {\n \"type\": \"string\",\n \"maxLength\": 200\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"auth\": {\n \"type\": \"object\",\n \"properties\": {\n \"profiles\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"api_key\"\n },\n {\n \"type\": \"string\",\n \"const\": \"oauth\"\n },\n {\n \"type\": \"string\",\n \"const\": \"token\"\n }\n ]\n },\n \"email\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"provider\",\n \"mode\"\n ],\n \"additionalProperties\": false\n }\n },\n \"order\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"cooldowns\": {\n \"type\": \"object\",\n \"properties\": {\n \"billingBackoffHours\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"billingBackoffHoursByProvider\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n },\n \"billingMaxHours\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"failureWindowHours\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"models\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"merge\"\n },\n {\n \"type\": \"string\",\n \"const\": \"replace\"\n }\n ]\n },\n \"providers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"baseUrl\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"auth\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"api-key\"\n },\n {\n \"type\": \"string\",\n \"const\": \"aws-sdk\"\n },\n {\n \"type\": \"string\",\n \"const\": \"oauth\"\n },\n {\n \"type\": \"string\",\n \"const\": \"token\"\n }\n ]\n },\n \"api\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai-completions\"\n },\n {\n \"type\": \"string\",\n \"const\": \"openai-responses\"\n },\n {\n \"type\": \"string\",\n \"const\": \"anthropic-messages\"\n },\n {\n \"type\": \"string\",\n \"const\": \"google-generative-ai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"github-copilot\"\n },\n {\n \"type\": \"string\",\n \"const\": \"bedrock-converse-stream\"\n }\n ]\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"authHeader\": {\n \"type\": \"boolean\"\n },\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"api\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai-completions\"\n },\n {\n \"type\": \"string\",\n \"const\": \"openai-responses\"\n },\n {\n \"type\": \"string\",\n \"const\": \"anthropic-messages\"\n },\n {\n \"type\": \"string\",\n \"const\": \"google-generative-ai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"github-copilot\"\n },\n {\n \"type\": \"string\",\n \"const\": \"bedrock-converse-stream\"\n }\n ]\n },\n \"reasoning\": {\n \"type\": \"boolean\"\n },\n \"input\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"text\"\n },\n {\n \"type\": \"string\",\n \"const\": \"image\"\n }\n ]\n }\n },\n \"cost\": {\n \"type\": \"object\",\n \"properties\": {\n \"input\": {\n \"type\": \"number\"\n },\n \"output\": {\n \"type\": \"number\"\n },\n \"cacheRead\": {\n \"type\": \"number\"\n },\n \"cacheWrite\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": false\n },\n \"contextWindow\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maxTokens\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"compat\": {\n \"type\": \"object\",\n \"properties\": {\n \"supportsStore\": {\n \"type\": \"boolean\"\n },\n \"supportsDeveloperRole\": {\n \"type\": \"boolean\"\n },\n \"supportsReasoningEffort\": {\n \"type\": \"boolean\"\n },\n \"maxTokensField\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"max_completion_tokens\"\n },\n {\n \"type\": \"string\",\n \"const\": \"max_tokens\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"id\",\n \"name\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"baseUrl\",\n \"models\"\n ],\n \"additionalProperties\": false\n }\n },\n \"bedrockDiscovery\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"providerFilter\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"refreshInterval\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"defaultContextWindow\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"defaultMaxTokens\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"nodeHost\": {\n \"type\": \"object\",\n \"properties\": {\n \"browserProxy\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowProfiles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"agents\": {\n \"type\": \"object\",\n \"properties\": {\n \"defaults\": {\n \"type\": \"object\",\n \"properties\": {\n \"model\": {\n \"type\": \"object\",\n \"properties\": {\n \"primary\": {\n \"type\": \"string\"\n },\n \"fallbacks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"imageModel\": {\n \"type\": \"object\",\n \"properties\": {\n \"primary\": {\n \"type\": \"string\"\n },\n \"fallbacks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"models\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"alias\": {\n \"type\": \"string\"\n },\n \"params\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {}\n }\n },\n \"additionalProperties\": false\n }\n },\n \"workspace\": {\n \"type\": \"string\"\n },\n \"repoRoot\": {\n \"type\": \"string\"\n },\n \"skipBootstrap\": {\n \"type\": \"boolean\"\n },\n \"bootstrapMaxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"userTimezone\": {\n \"type\": \"string\"\n },\n \"timeFormat\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"type\": \"string\",\n \"const\": \"12\"\n },\n {\n \"type\": \"string\",\n \"const\": \"24\"\n }\n ]\n },\n \"envelopeTimezone\": {\n \"type\": \"string\"\n },\n \"envelopeTimestamp\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"on\"\n },\n {\n \"type\": \"string\",\n \"const\": \"off\"\n }\n ]\n },\n \"envelopeElapsed\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"on\"\n },\n {\n \"type\": \"string\",\n \"const\": \"off\"\n }\n ]\n },\n \"contextTokens\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"cliBackends\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"output\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"json\"\n },\n {\n \"type\": \"string\",\n \"const\": \"text\"\n },\n {\n \"type\": \"string\",\n \"const\": \"jsonl\"\n }\n ]\n },\n \"resumeOutput\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"json\"\n },\n {\n \"type\": \"string\",\n \"const\": \"text\"\n },\n {\n \"type\": \"string\",\n \"const\": \"jsonl\"\n }\n ]\n },\n \"input\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"arg\"\n },\n {\n \"type\": \"string\",\n \"const\": \"stdin\"\n }\n ]\n },\n \"maxPromptArgChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"env\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"clearEnv\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"modelArg\": {\n \"type\": \"string\"\n },\n \"modelAliases\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"sessionArg\": {\n \"type\": \"string\"\n },\n \"sessionArgs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"resumeArgs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"sessionMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"always\"\n },\n {\n \"type\": \"string\",\n \"const\": \"existing\"\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n }\n ]\n },\n \"sessionIdFields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"systemPromptArg\": {\n \"type\": \"string\"\n },\n \"systemPromptMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"append\"\n },\n {\n \"type\": \"string\",\n \"const\": \"replace\"\n }\n ]\n },\n \"systemPromptWhen\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"always\"\n },\n {\n \"type\": \"string\",\n \"const\": \"never\"\n }\n ]\n },\n \"imageArg\": {\n \"type\": \"string\"\n },\n \"imageMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"repeat\"\n },\n {\n \"type\": \"string\",\n \"const\": \"list\"\n }\n ]\n },\n \"serialize\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"command\"\n ],\n \"additionalProperties\": false\n }\n },\n \"memorySearch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"sources\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"memory\"\n },\n {\n \"type\": \"string\",\n \"const\": \"sessions\"\n }\n ]\n }\n },\n \"experimental\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionMemory\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"provider\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"gemini\"\n }\n ]\n },\n \"remote\": {\n \"type\": \"object\",\n \"properties\": {\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"batch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"wait\": {\n \"type\": \"boolean\"\n },\n \"concurrency\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"pollIntervalMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"fallback\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"gemini\"\n },\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n }\n ]\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"local\": {\n \"type\": \"object\",\n \"properties\": {\n \"modelPath\": {\n \"type\": \"string\"\n },\n \"modelCacheDir\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"store\": {\n \"type\": \"object\",\n \"properties\": {\n \"driver\": {\n \"type\": \"string\",\n \"const\": \"sqlite\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"vector\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"extensionPath\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"chunking\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"overlap\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"sync\": {\n \"type\": \"object\",\n \"properties\": {\n \"onSessionStart\": {\n \"type\": \"boolean\"\n },\n \"onSearch\": {\n \"type\": \"boolean\"\n },\n \"watch\": {\n \"type\": \"boolean\"\n },\n \"watchDebounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"intervalMinutes\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"sessions\": {\n \"type\": \"object\",\n \"properties\": {\n \"deltaBytes\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"deltaMessages\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"query\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxResults\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"minScore\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"hybrid\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"vectorWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"textWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"candidateMultiplier\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"cache\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"maxEntries\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"contextPruning\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"cache-ttl\"\n }\n ]\n },\n \"ttl\": {\n \"type\": \"string\"\n },\n \"keepLastAssistants\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"softTrimRatio\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"hardClearRatio\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"minPrunableToolChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"softTrim\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"headChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"tailChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"hardClear\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"placeholder\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"compaction\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"default\"\n },\n {\n \"type\": \"string\",\n \"const\": \"safeguard\"\n }\n ]\n },\n \"reserveTokensFloor\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"memoryFlush\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"softThresholdTokens\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"systemPrompt\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"thinkingDefault\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"low\"\n },\n {\n \"type\": \"string\",\n \"const\": \"medium\"\n },\n {\n \"type\": \"string\",\n \"const\": \"high\"\n },\n {\n \"type\": \"string\",\n \"const\": \"xhigh\"\n }\n ]\n },\n \"verboseDefault\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"on\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n },\n \"elevatedDefault\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"on\"\n },\n {\n \"type\": \"string\",\n \"const\": \"ask\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n },\n \"blockStreamingDefault\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"on\"\n }\n ]\n },\n \"blockStreamingBreak\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"text_end\"\n },\n {\n \"type\": \"string\",\n \"const\": \"message_end\"\n }\n ]\n },\n \"blockStreamingChunk\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"breakPreference\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"paragraph\"\n },\n {\n \"type\": \"string\",\n \"const\": \"newline\"\n },\n {\n \"type\": \"string\",\n \"const\": \"sentence\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"blockStreamingCoalesce\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"idleMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"humanDelay\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"natural\"\n },\n {\n \"type\": \"string\",\n \"const\": \"custom\"\n }\n ]\n },\n \"minMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"mediaMaxMb\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"typingIntervalSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"typingMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"never\"\n },\n {\n \"type\": \"string\",\n \"const\": \"instant\"\n },\n {\n \"type\": \"string\",\n \"const\": \"thinking\"\n },\n {\n \"type\": \"string\",\n \"const\": \"message\"\n }\n ]\n },\n \"heartbeat\": {\n \"type\": \"object\",\n \"properties\": {\n \"every\": {\n \"type\": \"string\"\n },\n \"activeHours\": {\n \"type\": \"object\",\n \"properties\": {\n \"start\": {\n \"type\": \"string\"\n },\n \"end\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"session\": {\n \"type\": \"string\"\n },\n \"includeReasoning\": {\n \"type\": \"boolean\"\n },\n \"target\": {\n \"type\": \"string\"\n },\n \"to\": {\n \"type\": \"string\"\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"ackMaxChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"maxConcurrent\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"subagents\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxConcurrent\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"archiveAfterMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"primary\": {\n \"type\": \"string\"\n },\n \"fallbacks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"sandbox\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"non-main\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"workspaceAccess\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"type\": \"string\",\n \"const\": \"ro\"\n },\n {\n \"type\": \"string\",\n \"const\": \"rw\"\n }\n ]\n },\n \"sessionToolsVisibility\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"spawned\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"scope\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"session\"\n },\n {\n \"type\": \"string\",\n \"const\": \"agent\"\n },\n {\n \"type\": \"string\",\n \"const\": \"shared\"\n }\n ]\n },\n \"perSession\": {\n \"type\": \"boolean\"\n },\n \"workspaceRoot\": {\n \"type\": \"string\"\n },\n \"docker\": {\n \"type\": \"object\",\n \"properties\": {\n \"image\": {\n \"type\": \"string\"\n },\n \"containerPrefix\": {\n \"type\": \"string\"\n },\n \"workdir\": {\n \"type\": \"string\"\n },\n \"readOnlyRoot\": {\n \"type\": \"boolean\"\n },\n \"tmpfs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"network\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"capDrop\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"env\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"setupCommand\": {\n \"type\": \"string\"\n },\n \"pidsLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"memory\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"memorySwap\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"cpus\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"ulimits\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"soft\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"hard\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n ]\n }\n },\n \"seccompProfile\": {\n \"type\": \"string\"\n },\n \"apparmorProfile\": {\n \"type\": \"string\"\n },\n \"dns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"extraHosts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"binds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"browser\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"containerPrefix\": {\n \"type\": \"string\"\n },\n \"cdpPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"vncPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"noVncPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"headless\": {\n \"type\": \"boolean\"\n },\n \"enableNoVnc\": {\n \"type\": \"boolean\"\n },\n \"allowHostControl\": {\n \"type\": \"boolean\"\n },\n \"allowedControlUrls\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"allowedControlHosts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"allowedControlPorts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"autoStart\": {\n \"type\": \"boolean\"\n },\n \"autoStartTimeoutMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"prune\": {\n \"type\": \"object\",\n \"properties\": {\n \"idleHours\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxAgeDays\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"list\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"default\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"workspace\": {\n \"type\": \"string\"\n },\n \"agentDir\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"primary\": {\n \"type\": \"string\"\n },\n \"fallbacks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n ]\n },\n \"memorySearch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"sources\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"memory\"\n },\n {\n \"type\": \"string\",\n \"const\": \"sessions\"\n }\n ]\n }\n },\n \"experimental\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionMemory\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"provider\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"gemini\"\n }\n ]\n },\n \"remote\": {\n \"type\": \"object\",\n \"properties\": {\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"batch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"wait\": {\n \"type\": \"boolean\"\n },\n \"concurrency\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"pollIntervalMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"fallback\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"openai\"\n },\n {\n \"type\": \"string\",\n \"const\": \"gemini\"\n },\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n }\n ]\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"local\": {\n \"type\": \"object\",\n \"properties\": {\n \"modelPath\": {\n \"type\": \"string\"\n },\n \"modelCacheDir\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"store\": {\n \"type\": \"object\",\n \"properties\": {\n \"driver\": {\n \"type\": \"string\",\n \"const\": \"sqlite\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"vector\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"extensionPath\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"chunking\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"overlap\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"sync\": {\n \"type\": \"object\",\n \"properties\": {\n \"onSessionStart\": {\n \"type\": \"boolean\"\n },\n \"onSearch\": {\n \"type\": \"boolean\"\n },\n \"watch\": {\n \"type\": \"boolean\"\n },\n \"watchDebounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"intervalMinutes\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"sessions\": {\n \"type\": \"object\",\n \"properties\": {\n \"deltaBytes\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"deltaMessages\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"query\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxResults\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"minScore\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"hybrid\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"vectorWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"textWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"candidateMultiplier\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"cache\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"maxEntries\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"humanDelay\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"natural\"\n },\n {\n \"type\": \"string\",\n \"const\": \"custom\"\n }\n ]\n },\n \"minMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"heartbeat\": {\n \"type\": \"object\",\n \"properties\": {\n \"every\": {\n \"type\": \"string\"\n },\n \"activeHours\": {\n \"type\": \"object\",\n \"properties\": {\n \"start\": {\n \"type\": \"string\"\n },\n \"end\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"session\": {\n \"type\": \"string\"\n },\n \"includeReasoning\": {\n \"type\": \"boolean\"\n },\n \"target\": {\n \"type\": \"string\"\n },\n \"to\": {\n \"type\": \"string\"\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"ackMaxChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"theme\": {\n \"type\": \"string\"\n },\n \"emoji\": {\n \"type\": \"string\"\n },\n \"avatar\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"groupChat\": {\n \"type\": \"object\",\n \"properties\": {\n \"mentionPatterns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"historyLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"subagents\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowAgents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"primary\": {\n \"type\": \"string\"\n },\n \"fallbacks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"sandbox\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"non-main\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"workspaceAccess\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"type\": \"string\",\n \"const\": \"ro\"\n },\n {\n \"type\": \"string\",\n \"const\": \"rw\"\n }\n ]\n },\n \"sessionToolsVisibility\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"spawned\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"scope\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"session\"\n },\n {\n \"type\": \"string\",\n \"const\": \"agent\"\n },\n {\n \"type\": \"string\",\n \"const\": \"shared\"\n }\n ]\n },\n \"perSession\": {\n \"type\": \"boolean\"\n },\n \"workspaceRoot\": {\n \"type\": \"string\"\n },\n \"docker\": {\n \"type\": \"object\",\n \"properties\": {\n \"image\": {\n \"type\": \"string\"\n },\n \"containerPrefix\": {\n \"type\": \"string\"\n },\n \"workdir\": {\n \"type\": \"string\"\n },\n \"readOnlyRoot\": {\n \"type\": \"boolean\"\n },\n \"tmpfs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"network\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"capDrop\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"env\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"setupCommand\": {\n \"type\": \"string\"\n },\n \"pidsLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"memory\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"memorySwap\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"cpus\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"ulimits\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"soft\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"hard\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n ]\n }\n },\n \"seccompProfile\": {\n \"type\": \"string\"\n },\n \"apparmorProfile\": {\n \"type\": \"string\"\n },\n \"dns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"extraHosts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"binds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"browser\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"containerPrefix\": {\n \"type\": \"string\"\n },\n \"cdpPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"vncPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"noVncPort\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"headless\": {\n \"type\": \"boolean\"\n },\n \"enableNoVnc\": {\n \"type\": \"boolean\"\n },\n \"allowHostControl\": {\n \"type\": \"boolean\"\n },\n \"allowedControlUrls\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"allowedControlHosts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"allowedControlPorts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"autoStart\": {\n \"type\": \"boolean\"\n },\n \"autoStartTimeoutMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"prune\": {\n \"type\": \"object\",\n \"properties\": {\n \"idleHours\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxAgeDays\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"profile\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"coding\"\n },\n {\n \"type\": \"string\",\n \"const\": \"messaging\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n },\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"byProvider\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"coding\"\n },\n {\n \"type\": \"string\",\n \"const\": \"messaging\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n }\n },\n \"elevated\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false\n },\n \"exec\": {\n \"type\": \"object\",\n \"properties\": {\n \"host\": {\n \"type\": \"string\",\n \"enum\": [\n \"sandbox\",\n \"gateway\",\n \"node\"\n ]\n },\n \"security\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"allowlist\",\n \"full\"\n ]\n },\n \"ask\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"on-miss\",\n \"always\"\n ]\n },\n \"node\": {\n \"type\": \"string\"\n },\n \"pathPrepend\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"safeBins\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"backgroundMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSec\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"approvalRunningNoticeMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"cleanupMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"notifyOnExit\": {\n \"type\": \"boolean\"\n },\n \"applyPatch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowModels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"sandbox\": {\n \"type\": \"object\",\n \"properties\": {\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"id\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"profile\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"coding\"\n },\n {\n \"type\": \"string\",\n \"const\": \"messaging\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n },\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"byProvider\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"coding\"\n },\n {\n \"type\": \"string\",\n \"const\": \"messaging\"\n },\n {\n \"type\": \"string\",\n \"const\": \"full\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n }\n },\n \"web\": {\n \"type\": \"object\",\n \"properties\": {\n \"search\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"provider\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"brave\"\n },\n {\n \"type\": \"string\",\n \"const\": \"perplexity\"\n }\n ]\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"maxResults\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"cacheTtlMinutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"perplexity\": {\n \"type\": \"object\",\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"fetch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"cacheTtlMinutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"maxRedirects\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"userAgent\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"media\": {\n \"type\": \"object\",\n \"properties\": {\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"image\"\n },\n {\n \"type\": \"string\",\n \"const\": \"audio\"\n },\n {\n \"type\": \"string\",\n \"const\": \"video\"\n }\n ]\n }\n },\n \"type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"provider\"\n },\n {\n \"type\": \"string\",\n \"const\": \"cli\"\n }\n ]\n },\n \"command\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"type\": \"string\"\n },\n \"preferredProfile\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"concurrency\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"image\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"chatType\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"attachments\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"maxAttachments\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prefer\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"last\"\n },\n {\n \"type\": \"string\",\n \"const\": \"path\"\n },\n {\n \"type\": \"string\",\n \"const\": \"url\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"image\"\n },\n {\n \"type\": \"string\",\n \"const\": \"audio\"\n },\n {\n \"type\": \"string\",\n \"const\": \"video\"\n }\n ]\n }\n },\n \"type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"provider\"\n },\n {\n \"type\": \"string\",\n \"const\": \"cli\"\n }\n ]\n },\n \"command\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"type\": \"string\"\n },\n \"preferredProfile\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"audio\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"chatType\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"attachments\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"maxAttachments\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prefer\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"last\"\n },\n {\n \"type\": \"string\",\n \"const\": \"path\"\n },\n {\n \"type\": \"string\",\n \"const\": \"url\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"image\"\n },\n {\n \"type\": \"string\",\n \"const\": \"audio\"\n },\n {\n \"type\": \"string\",\n \"const\": \"video\"\n }\n ]\n }\n },\n \"type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"provider\"\n },\n {\n \"type\": \"string\",\n \"const\": \"cli\"\n }\n ]\n },\n \"command\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"type\": \"string\"\n },\n \"preferredProfile\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"video\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"chatType\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"attachments\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"maxAttachments\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"prefer\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"last\"\n },\n {\n \"type\": \"string\",\n \"const\": \"path\"\n },\n {\n \"type\": \"string\",\n \"const\": \"url\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"image\"\n },\n {\n \"type\": \"string\",\n \"const\": \"audio\"\n },\n {\n \"type\": \"string\",\n \"const\": \"video\"\n }\n ]\n }\n },\n \"type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"provider\"\n },\n {\n \"type\": \"string\",\n \"const\": \"cli\"\n }\n ]\n },\n \"command\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"providerOptions\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n }\n ]\n }\n }\n },\n \"deepgram\": {\n \"type\": \"object\",\n \"properties\": {\n \"detectLanguage\": {\n \"type\": \"boolean\"\n },\n \"punctuate\": {\n \"type\": \"boolean\"\n },\n \"smartFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"profile\": {\n \"type\": \"string\"\n },\n \"preferredProfile\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"links\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"chatType\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"maxLinks\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"models\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"cli\"\n },\n \"command\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"required\": [\n \"command\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"message\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowCrossContextSend\": {\n \"type\": \"boolean\"\n },\n \"crossContext\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowWithinProvider\": {\n \"type\": \"boolean\"\n },\n \"allowAcrossProviders\": {\n \"type\": \"boolean\"\n },\n \"marker\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"broadcast\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"agentToAgent\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"elevated\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false\n },\n \"exec\": {\n \"type\": \"object\",\n \"properties\": {\n \"host\": {\n \"type\": \"string\",\n \"enum\": [\n \"sandbox\",\n \"gateway\",\n \"node\"\n ]\n },\n \"security\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"allowlist\",\n \"full\"\n ]\n },\n \"ask\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"on-miss\",\n \"always\"\n ]\n },\n \"node\": {\n \"type\": \"string\"\n },\n \"pathPrepend\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"safeBins\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"backgroundMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutSec\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"cleanupMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"notifyOnExit\": {\n \"type\": \"boolean\"\n },\n \"applyPatch\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowModels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"subagents\": {\n \"type\": \"object\",\n \"properties\": {\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"sandbox\": {\n \"type\": \"object\",\n \"properties\": {\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"bindings\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"agentId\": {\n \"type\": \"string\"\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"accountId\": {\n \"type\": \"string\"\n },\n \"peer\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"dm\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"id\"\n ],\n \"additionalProperties\": false\n },\n \"guildId\": {\n \"type\": \"string\"\n },\n \"teamId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"agentId\",\n \"match\"\n ],\n \"additionalProperties\": false\n }\n },\n \"broadcast\": {\n \"type\": \"object\",\n \"properties\": {\n \"strategy\": {\n \"type\": \"string\",\n \"enum\": [\n \"parallel\",\n \"sequential\"\n ]\n }\n },\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"audio\": {\n \"type\": \"object\",\n \"properties\": {\n \"transcription\": {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"required\": [\n \"command\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"media\": {\n \"type\": \"object\",\n \"properties\": {\n \"preserveFilenames\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"messages\": {\n \"type\": \"object\",\n \"properties\": {\n \"messagePrefix\": {\n \"type\": \"string\"\n },\n \"responsePrefix\": {\n \"type\": \"string\"\n },\n \"groupChat\": {\n \"type\": \"object\",\n \"properties\": {\n \"mentionPatterns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"historyLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"queue\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"byChannel\": {\n \"type\": \"object\",\n \"properties\": {\n \"whatsapp\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"telegram\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"discord\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"slack\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"mattermost\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"signal\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"imessage\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"msteams\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n },\n \"webchat\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"steer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"followup\"\n },\n {\n \"type\": \"string\",\n \"const\": \"collect\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer-backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"steer+backlog\"\n },\n {\n \"type\": \"string\",\n \"const\": \"queue\"\n },\n {\n \"type\": \"string\",\n \"const\": \"interrupt\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"debounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"debounceMsByChannel\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"cap\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"drop\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"old\"\n },\n {\n \"type\": \"string\",\n \"const\": \"new\"\n },\n {\n \"type\": \"string\",\n \"const\": \"summarize\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"inbound\": {\n \"type\": \"object\",\n \"properties\": {\n \"debounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"byChannel\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n }\n },\n \"additionalProperties\": false\n },\n \"ackReaction\": {\n \"type\": \"string\"\n },\n \"ackReactionScope\": {\n \"type\": \"string\",\n \"enum\": [\n \"group-mentions\",\n \"group-all\",\n \"direct\",\n \"all\"\n ]\n },\n \"removeAckAfterReply\": {\n \"type\": \"boolean\"\n },\n \"tts\": {\n \"type\": \"object\",\n \"properties\": {\n \"auto\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"always\",\n \"inbound\",\n \"tagged\"\n ]\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\n \"final\",\n \"all\"\n ]\n },\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\n \"elevenlabs\",\n \"openai\",\n \"edge\"\n ]\n },\n \"summaryModel\": {\n \"type\": \"string\"\n },\n \"modelOverrides\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowText\": {\n \"type\": \"boolean\"\n },\n \"allowProvider\": {\n \"type\": \"boolean\"\n },\n \"allowVoice\": {\n \"type\": \"boolean\"\n },\n \"allowModelId\": {\n \"type\": \"boolean\"\n },\n \"allowVoiceSettings\": {\n \"type\": \"boolean\"\n },\n \"allowNormalization\": {\n \"type\": \"boolean\"\n },\n \"allowSeed\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"elevenlabs\": {\n \"type\": \"object\",\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"voiceId\": {\n \"type\": \"string\"\n },\n \"modelId\": {\n \"type\": \"string\"\n },\n \"seed\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 4294967295\n },\n \"applyTextNormalization\": {\n \"type\": \"string\",\n \"enum\": [\n \"auto\",\n \"on\",\n \"off\"\n ]\n },\n \"languageCode\": {\n \"type\": \"string\"\n },\n \"voiceSettings\": {\n \"type\": \"object\",\n \"properties\": {\n \"stability\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"similarityBoost\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"style\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"useSpeakerBoost\": {\n \"type\": \"boolean\"\n },\n \"speed\": {\n \"type\": \"number\",\n \"minimum\": 0.5,\n \"maximum\": 2\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"openai\": {\n \"type\": \"object\",\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"voice\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"edge\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"voice\": {\n \"type\": \"string\"\n },\n \"lang\": {\n \"type\": \"string\"\n },\n \"outputFormat\": {\n \"type\": \"string\"\n },\n \"pitch\": {\n \"type\": \"string\"\n },\n \"rate\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n },\n \"saveSubtitles\": {\n \"type\": \"boolean\"\n },\n \"proxy\": {\n \"type\": \"string\"\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1000,\n \"maximum\": 120000\n }\n },\n \"additionalProperties\": false\n },\n \"prefsPath\": {\n \"type\": \"string\"\n },\n \"maxTextLength\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 9007199254740991\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1000,\n \"maximum\": 120000\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"commands\": {\n \"default\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"type\": \"object\",\n \"properties\": {\n \"native\": {\n \"default\": \"auto\",\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n },\n \"nativeSkills\": {\n \"default\": \"auto\",\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n },\n \"text\": {\n \"type\": \"boolean\"\n },\n \"bash\": {\n \"type\": \"boolean\"\n },\n \"bashForegroundMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 30000\n },\n \"config\": {\n \"type\": \"boolean\"\n },\n \"debug\": {\n \"type\": \"boolean\"\n },\n \"restart\": {\n \"type\": \"boolean\"\n },\n \"useAccessGroups\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"native\",\n \"nativeSkills\"\n ],\n \"additionalProperties\": false\n },\n \"approvals\": {\n \"type\": \"object\",\n \"properties\": {\n \"exec\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"session\"\n },\n {\n \"type\": \"string\",\n \"const\": \"targets\"\n },\n {\n \"type\": \"string\",\n \"const\": \"both\"\n }\n ]\n },\n \"agentFilter\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"sessionFilter\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"targets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"to\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"accountId\": {\n \"type\": \"string\"\n },\n \"threadId\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"channel\",\n \"to\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"session\": {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"per-sender\"\n },\n {\n \"type\": \"string\",\n \"const\": \"global\"\n }\n ]\n },\n \"dmScope\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"main\"\n },\n {\n \"type\": \"string\",\n \"const\": \"per-peer\"\n },\n {\n \"type\": \"string\",\n \"const\": \"per-channel-peer\"\n }\n ]\n },\n \"identityLinks\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"resetTriggers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"reset\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"daily\"\n },\n {\n \"type\": \"string\",\n \"const\": \"idle\"\n }\n ]\n },\n \"atHour\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"resetByType\": {\n \"type\": \"object\",\n \"properties\": {\n \"dm\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"daily\"\n },\n {\n \"type\": \"string\",\n \"const\": \"idle\"\n }\n ]\n },\n \"atHour\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"group\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"daily\"\n },\n {\n \"type\": \"string\",\n \"const\": \"idle\"\n }\n ]\n },\n \"atHour\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"thread\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"daily\"\n },\n {\n \"type\": \"string\",\n \"const\": \"idle\"\n }\n ]\n },\n \"atHour\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"resetByChannel\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"daily\"\n },\n {\n \"type\": \"string\",\n \"const\": \"idle\"\n }\n ]\n },\n \"atHour\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n },\n \"idleMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"store\": {\n \"type\": \"string\"\n },\n \"typingIntervalSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"typingMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"never\"\n },\n {\n \"type\": \"string\",\n \"const\": \"instant\"\n },\n {\n \"type\": \"string\",\n \"const\": \"thinking\"\n },\n {\n \"type\": \"string\",\n \"const\": \"message\"\n }\n ]\n },\n \"mainKey\": {\n \"type\": \"string\"\n },\n \"sendPolicy\": {\n \"type\": \"object\",\n \"properties\": {\n \"default\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"allow\"\n },\n {\n \"type\": \"string\",\n \"const\": \"deny\"\n }\n ]\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n },\n \"chatType\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n },\n {\n \"type\": \"string\",\n \"const\": \"group\"\n },\n {\n \"type\": \"string\",\n \"const\": \"channel\"\n }\n ]\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"agentToAgent\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxPingPongTurns\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 5\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"cron\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"store\": {\n \"type\": \"string\"\n },\n \"maxConcurrentRuns\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"hooks\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"maxBodyBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"presets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"transformsDir\": {\n \"type\": \"string\"\n },\n \"mappings\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"match\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"wake\"\n },\n {\n \"type\": \"string\",\n \"const\": \"agent\"\n }\n ]\n },\n \"wakeMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"now\"\n },\n {\n \"type\": \"string\",\n \"const\": \"next-heartbeat\"\n }\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sessionKey\": {\n \"type\": \"string\"\n },\n \"messageTemplate\": {\n \"type\": \"string\"\n },\n \"textTemplate\": {\n \"type\": \"string\"\n },\n \"deliver\": {\n \"type\": \"boolean\"\n },\n \"channel\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"last\"\n },\n {\n \"type\": \"string\",\n \"const\": \"whatsapp\"\n },\n {\n \"type\": \"string\",\n \"const\": \"telegram\"\n },\n {\n \"type\": \"string\",\n \"const\": \"discord\"\n },\n {\n \"type\": \"string\",\n \"const\": \"slack\"\n },\n {\n \"type\": \"string\",\n \"const\": \"signal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"imessage\"\n },\n {\n \"type\": \"string\",\n \"const\": \"msteams\"\n }\n ]\n },\n \"to\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"thinking\": {\n \"type\": \"string\"\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"transform\": {\n \"type\": \"object\",\n \"properties\": {\n \"module\": {\n \"type\": \"string\"\n },\n \"export\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"module\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"gmail\": {\n \"type\": \"object\",\n \"properties\": {\n \"account\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"topic\": {\n \"type\": \"string\"\n },\n \"subscription\": {\n \"type\": \"string\"\n },\n \"pushToken\": {\n \"type\": \"string\"\n },\n \"hookUrl\": {\n \"type\": \"string\"\n },\n \"includeBody\": {\n \"type\": \"boolean\"\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"renewEveryMinutes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"serve\": {\n \"type\": \"object\",\n \"properties\": {\n \"bind\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"tailscale\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"serve\"\n },\n {\n \"type\": \"string\",\n \"const\": \"funnel\"\n }\n ]\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"thinking\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"minimal\"\n },\n {\n \"type\": \"string\",\n \"const\": \"low\"\n },\n {\n \"type\": \"string\",\n \"const\": \"medium\"\n },\n {\n \"type\": \"string\",\n \"const\": \"high\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"internal\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"handlers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"event\": {\n \"type\": \"string\"\n },\n \"module\": {\n \"type\": \"string\"\n },\n \"export\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"event\",\n \"module\"\n ],\n \"additionalProperties\": false\n }\n },\n \"entries\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"env\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"load\": {\n \"type\": \"object\",\n \"properties\": {\n \"extraDirs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"installs\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"npm\"\n },\n {\n \"type\": \"string\",\n \"const\": \"archive\"\n },\n {\n \"type\": \"string\",\n \"const\": \"path\"\n }\n ]\n },\n \"spec\": {\n \"type\": \"string\"\n },\n \"sourcePath\": {\n \"type\": \"string\"\n },\n \"installPath\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"installedAt\": {\n \"type\": \"string\"\n },\n \"hooks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"source\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"web\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"heartbeatSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"reconnect\": {\n \"type\": \"object\",\n \"properties\": {\n \"initialMs\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maxMs\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"factor\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"jitter\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"maxAttempts\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"channels\": {\n \"type\": \"object\",\n \"properties\": {\n \"telegram\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"anyOf\": [\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"inlineButtons\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"dm\",\n \"group\",\n \"all\",\n \"allowlist\"\n ]\n }\n },\n \"additionalProperties\": false\n }\n ]\n },\n \"markdown\": {\n \"type\": \"object\",\n \"properties\": {\n \"tables\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"bullets\",\n \"code\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"commands\": {\n \"type\": \"object\",\n \"properties\": {\n \"native\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n },\n \"nativeSkills\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"customCommands\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {},\n \"description\": {}\n },\n \"required\": [\n \"command\",\n \"description\"\n ],\n \"additionalProperties\": false\n }\n },\n \"configWrites\": {\n \"type\": \"boolean\"\n },\n \"dmPolicy\": {\n \"default\": \"pairing\",\n \"type\": \"string\",\n \"enum\": [\n \"pairing\",\n \"allowlist\",\n \"open\",\n \"disabled\"\n ]\n },\n \"botToken\": {\n \"type\": \"string\"\n },\n \"tokenFile\": {\n \"type\": \"string\"\n },\n \"replyToMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"groups\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"requireMention\": {\n \"type\": \"boolean\"\n },\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"skills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"systemPrompt\": {\n \"type\": \"string\"\n },\n \"topics\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"requireMention\": {\n \"type\": \"boolean\"\n },\n \"skills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"systemPrompt\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"groupAllowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"groupPolicy\": {\n \"default\": \"allowlist\",\n \"type\": \"string\",\n \"enum\": [\n \"open\",\n \"disabled\",\n \"allowlist\"\n ]\n },\n \"historyLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"dmHistoryLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"dms\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"historyLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"textChunkLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"chunkMode\": {\n \"type\": \"string\",\n \"enum\": [\n \"length\",\n \"newline\"\n ]\n },\n \"blockStreaming\": {\n \"type\": \"boolean\"\n },\n \"draftChunk\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"breakPreference\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"paragraph\"\n },\n {\n \"type\": \"string\",\n \"const\": \"newline\"\n },\n {\n \"type\": \"string\",\n \"const\": \"sentence\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"blockStreamingCoalesce\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"idleMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"streamMode\": {\n \"default\": \"partial\",\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"partial\",\n \"block\"\n ]\n },\n \"mediaMaxMb\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"retry\": {\n \"type\": \"object\",\n \"properties\": {\n \"attempts\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 9007199254740991\n },\n \"minDelayMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxDelayMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"jitter\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"proxy\": {\n \"type\": \"string\"\n },\n \"webhookUrl\": {\n \"type\": \"string\"\n },\n \"webhookSecret\": {\n \"type\": \"string\"\n },\n \"webhookPath\": {\n \"type\": \"string\"\n },\n \"actions\": {\n \"type\": \"object\",\n \"properties\": {\n \"reactions\": {\n \"type\": \"boolean\"\n },\n \"sendMessage\": {\n \"type\": \"boolean\"\n },\n \"deleteMessage\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"reactionNotifications\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"own\",\n \"all\"\n ]\n },\n \"reactionLevel\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"ack\",\n \"minimal\",\n \"extensive\"\n ]\n },\n \"heartbeat\": {\n \"type\": \"object\",\n \"properties\": {\n \"showOk\": {\n \"type\": \"boolean\"\n },\n \"showAlerts\": {\n \"type\": \"boolean\"\n },\n \"useIndicator\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPreview\": {\n \"type\": \"boolean\"\n },\n \"accounts\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"capabilities\": {\n \"anyOf\": [\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"inlineButtons\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"dm\",\n \"group\",\n \"all\",\n \"allowlist\"\n ]\n }\n },\n \"additionalProperties\": false\n }\n ]\n },\n \"markdown\": {\n \"type\": \"object\",\n \"properties\": {\n \"tables\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"bullets\",\n \"code\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"commands\": {\n \"type\": \"object\",\n \"properties\": {\n \"native\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n },\n \"nativeSkills\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"customCommands\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {},\n \"description\": {}\n },\n \"required\": [\n \"command\",\n \"description\"\n ],\n \"additionalProperties\": false\n }\n },\n \"configWrites\": {\n \"type\": \"boolean\"\n },\n \"dmPolicy\": {\n \"default\": \"pairing\",\n \"type\": \"string\",\n \"enum\": [\n \"pairing\",\n \"allowlist\",\n \"open\",\n \"disabled\"\n ]\n },\n \"botToken\": {\n \"type\": \"string\"\n },\n \"tokenFile\": {\n \"type\": \"string\"\n },\n \"replyToMode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"first\"\n },\n {\n \"type\": \"string\",\n \"const\": \"all\"\n }\n ]\n },\n \"groups\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"requireMention\": {\n \"type\": \"boolean\"\n },\n \"tools\": {\n \"type\": \"object\",\n \"properties\": {\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"skills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"systemPrompt\": {\n \"type\": \"string\"\n },\n \"topics\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"requireMention\": {\n \"type\": \"boolean\"\n },\n \"skills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"systemPrompt\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"groupAllowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"groupPolicy\": {\n \"default\": \"allowlist\",\n \"type\": \"string\",\n \"enum\": [\n \"open\",\n \"disabled\",\n \"allowlist\"\n ]\n },\n \"historyLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"dmHistoryLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"dms\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"historyLimit\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"textChunkLimit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"chunkMode\": {\n \"type\": \"string\",\n \"enum\": [\n \"length\",\n \"newline\"\n ]\n },\n \"blockStreaming\": {\n \"type\": \"boolean\"\n },\n \"draftChunk\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"breakPreference\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"paragraph\"\n },\n {\n \"type\": \"string\",\n \"const\": \"newline\"\n },\n {\n \"type\": \"string\",\n \"const\": \"sentence\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"blockStreamingCoalesce\": {\n \"type\": \"object\",\n \"properties\": {\n \"minChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"idleMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"streamMode\": {\n \"default\": \"partial\",\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"partial\",\n \"block\"\n ]\n },\n \"mediaMaxMb\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"timeoutSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"retry\": {\n \"type\": \"object\",\n \"properties\": {\n \"attempts\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 9007199254740991\n },\n \"minDelayMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxDelayMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"jitter\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"proxy\": {\n \"type\": \"string\"\n },\n \"webhookUrl\": {\n \"type\": \"string\"\n },\n \"webhookSecret\": {\n \"type\": \"string\"\n },\n \"webhookPath\": {\n \"type\": \"string\"\n },\n \"actions\": {\n \"type\": \"object\",\n \"properties\": {\n \"reactions\": {\n \"type\": \"boolean\"\n },\n \"sendMessage\": {\n \"type\": \"boolean\"\n },\n \"deleteMessage\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"reactionNotifications\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"own\",\n \"all\"\n ]\n },\n \"reactionLevel\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"ack\",\n \"minimal\",\n \"extensive\"\n ]\n },\n \"heartbeat\": {\n \"type\": \"object\",\n \"properties\": {\n \"showOk\": {\n \"type\": \"boolean\"\n },\n \"showAlerts\": {\n \"type\": \"boolean\"\n },\n \"useIndicator\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPreview\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"dmPolicy\",\n \"groupPolicy\",\n \"streamMode\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"dmPolicy\",\n \"groupPolicy\",\n \"streamMode\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": true,\n \"required\": []\n },\n \"discovery\": {\n \"type\": \"object\",\n \"properties\": {\n \"wideArea\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"canvasHost\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"root\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"liveReload\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"talk\": {\n \"type\": \"object\",\n \"properties\": {\n \"voiceId\": {\n \"type\": \"string\"\n },\n \"voiceAliases\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"modelId\": {\n \"type\": \"string\"\n },\n \"outputFormat\": {\n \"type\": \"string\"\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"interruptOnSpeech\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"gateway\": {\n \"type\": \"object\",\n \"properties\": {\n \"port\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"local\"\n },\n {\n \"type\": \"string\",\n \"const\": \"remote\"\n }\n ]\n },\n \"bind\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"type\": \"string\",\n \"const\": \"lan\"\n },\n {\n \"type\": \"string\",\n \"const\": \"loopback\"\n },\n {\n \"type\": \"string\",\n \"const\": \"custom\"\n },\n {\n \"type\": \"string\",\n \"const\": \"tailnet\"\n }\n ]\n },\n \"controlUi\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"basePath\": {\n \"type\": \"string\"\n },\n \"allowInsecureAuth\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"auth\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"token\"\n },\n {\n \"type\": \"string\",\n \"const\": \"password\"\n }\n ]\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"password\": {\n \"type\": \"string\"\n },\n \"allowTailscale\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"trustedProxies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"tailscale\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"serve\"\n },\n {\n \"type\": \"string\",\n \"const\": \"funnel\"\n }\n ]\n },\n \"resetOnExit\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"remote\": {\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\"\n },\n \"transport\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"ssh\"\n },\n {\n \"type\": \"string\",\n \"const\": \"direct\"\n }\n ]\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"password\": {\n \"type\": \"string\"\n },\n \"tlsFingerprint\": {\n \"type\": \"string\"\n },\n \"sshTarget\": {\n \"type\": \"string\"\n },\n \"sshIdentity\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"reload\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"off\"\n },\n {\n \"type\": \"string\",\n \"const\": \"restart\"\n },\n {\n \"type\": \"string\",\n \"const\": \"hot\"\n },\n {\n \"type\": \"string\",\n \"const\": \"hybrid\"\n }\n ]\n },\n \"debounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"tls\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"autoGenerate\": {\n \"type\": \"boolean\"\n },\n \"certPath\": {\n \"type\": \"string\"\n },\n \"keyPath\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"http\": {\n \"type\": \"object\",\n \"properties\": {\n \"endpoints\": {\n \"type\": \"object\",\n \"properties\": {\n \"chatCompletions\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"responses\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"maxBodyBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"files\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowUrl\": {\n \"type\": \"boolean\"\n },\n \"allowedMimes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxChars\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxRedirects\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"pdf\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxPages\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxPixels\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"minTextChars\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"images\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowUrl\": {\n \"type\": \"boolean\"\n },\n \"allowedMimes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"maxBytes\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"maxRedirects\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"nodes\": {\n \"type\": \"object\",\n \"properties\": {\n \"browser\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"type\": \"string\",\n \"const\": \"manual\"\n },\n {\n \"type\": \"string\",\n \"const\": \"off\"\n }\n ]\n },\n \"node\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"allowCommands\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"denyCommands\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n },\n \"skills\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowBundled\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"load\": {\n \"type\": \"object\",\n \"properties\": {\n \"extraDirs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"watch\": {\n \"type\": \"boolean\"\n },\n \"watchDebounceMs\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n }\n },\n \"additionalProperties\": false\n },\n \"install\": {\n \"type\": \"object\",\n \"properties\": {\n \"preferBrew\": {\n \"type\": \"boolean\"\n },\n \"nodeManager\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"npm\"\n },\n {\n \"type\": \"string\",\n \"const\": \"pnpm\"\n },\n {\n \"type\": \"string\",\n \"const\": \"yarn\"\n },\n {\n \"type\": \"string\",\n \"const\": \"bun\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"entries\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"env\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {}\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n },\n \"plugins\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allow\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"deny\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"load\": {\n \"type\": \"object\",\n \"properties\": {\n \"paths\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"slots\": {\n \"type\": \"object\",\n \"properties\": {\n \"memory\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"entries\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"properties\": {\n \"bluebubbles\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"copilot-proxy\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"diagnostics-otel\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"discord\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"google-antigravity-auth\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"google-gemini-cli-auth\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"googlechat\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"imessage\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"line\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"llm-task\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {\n \"defaultProvider\": {\n \"type\": \"string\"\n },\n \"defaultModel\": {\n \"type\": \"string\"\n },\n \"defaultAuthProfileId\": {\n \"type\": \"string\"\n },\n \"allowedModels\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Allowlist of provider/model keys like openai-codex/gpt-5.2.\"\n },\n \"maxTokens\": {\n \"type\": \"number\"\n },\n \"timeoutMs\": {\n \"type\": \"number\"\n }\n }\n }\n },\n \"additionalProperties\": false\n },\n \"lobster\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"matrix\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"mattermost\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"memory-core\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"memory-lancedb\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {\n \"embedding\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"text-embedding-3-small\",\n \"text-embedding-3-large\"\n ]\n }\n },\n \"required\": [\n \"apiKey\"\n ]\n },\n \"dbPath\": {\n \"type\": \"string\"\n },\n \"autoCapture\": {\n \"type\": \"boolean\"\n },\n \"autoRecall\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"embedding\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"msteams\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"nextcloud-talk\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"nostr\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"open-prose\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"qwen-portal-auth\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"signal\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"slack\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"telegram\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"tlon\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"voice-call\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\n \"telnyx\",\n \"twilio\",\n \"plivo\",\n \"mock\"\n ]\n },\n \"telnyx\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"connectionId\": {\n \"type\": \"string\"\n },\n \"publicKey\": {\n \"type\": \"string\"\n }\n }\n },\n \"twilio\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"accountSid\": {\n \"type\": \"string\"\n },\n \"authToken\": {\n \"type\": \"string\"\n }\n }\n },\n \"plivo\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"authId\": {\n \"type\": \"string\"\n },\n \"authToken\": {\n \"type\": \"string\"\n }\n }\n },\n \"fromNumber\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\+[1-9]\\\\d{1,14}$\"\n },\n \"toNumber\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\+[1-9]\\\\d{1,14}$\"\n },\n \"inboundPolicy\": {\n \"type\": \"string\",\n \"enum\": [\n \"disabled\",\n \"allowlist\",\n \"pairing\",\n \"open\"\n ]\n },\n \"allowFrom\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\+[1-9]\\\\d{1,14}$\"\n }\n },\n \"inboundGreeting\": {\n \"type\": \"string\"\n },\n \"outbound\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"defaultMode\": {\n \"type\": \"string\",\n \"enum\": [\n \"notify\",\n \"conversation\"\n ]\n },\n \"notifyHangupDelaySec\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n }\n },\n \"maxDurationSeconds\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"silenceTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"transcriptTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"ringTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"maxConcurrentCalls\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"serve\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"port\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"bind\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n }\n },\n \"tailscale\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"serve\",\n \"funnel\"\n ]\n },\n \"path\": {\n \"type\": \"string\"\n }\n }\n },\n \"tunnel\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\n \"none\",\n \"ngrok\",\n \"tailscale-serve\",\n \"tailscale-funnel\"\n ]\n },\n \"ngrokAuthToken\": {\n \"type\": \"string\"\n },\n \"ngrokDomain\": {\n \"type\": \"string\"\n },\n \"allowNgrokFreeTier\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"streaming\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"sttProvider\": {\n \"type\": \"string\",\n \"enum\": [\n \"openai-realtime\"\n ]\n },\n \"openaiApiKey\": {\n \"type\": \"string\"\n },\n \"sttModel\": {\n \"type\": \"string\"\n },\n \"silenceDurationMs\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"vadThreshold\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"streamPath\": {\n \"type\": \"string\"\n }\n }\n },\n \"publicUrl\": {\n \"type\": \"string\"\n },\n \"skipSignatureVerification\": {\n \"type\": \"boolean\"\n },\n \"stt\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\n \"openai\"\n ]\n },\n \"model\": {\n \"type\": \"string\"\n }\n }\n },\n \"tts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"auto\": {\n \"type\": \"string\",\n \"enum\": [\n \"off\",\n \"always\",\n \"inbound\",\n \"tagged\"\n ]\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\n \"final\",\n \"all\"\n ]\n },\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\n \"openai\",\n \"elevenlabs\",\n \"edge\"\n ]\n },\n \"summaryModel\": {\n \"type\": \"string\"\n },\n \"modelOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"allowText\": {\n \"type\": \"boolean\"\n },\n \"allowProvider\": {\n \"type\": \"boolean\"\n },\n \"allowVoice\": {\n \"type\": \"boolean\"\n },\n \"allowModelId\": {\n \"type\": \"boolean\"\n },\n \"allowVoiceSettings\": {\n \"type\": \"boolean\"\n },\n \"allowNormalization\": {\n \"type\": \"boolean\"\n },\n \"allowSeed\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"elevenlabs\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"baseUrl\": {\n \"type\": \"string\"\n },\n \"voiceId\": {\n \"type\": \"string\"\n },\n \"modelId\": {\n \"type\": \"string\"\n },\n \"seed\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 4294967295\n },\n \"applyTextNormalization\": {\n \"type\": \"string\",\n \"enum\": [\n \"auto\",\n \"on\",\n \"off\"\n ]\n },\n \"languageCode\": {\n \"type\": \"string\"\n },\n \"voiceSettings\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"stability\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"similarityBoost\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"style\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n \"useSpeakerBoost\": {\n \"type\": \"boolean\"\n },\n \"speed\": {\n \"type\": \"number\",\n \"minimum\": 0.5,\n \"maximum\": 2\n }\n }\n }\n }\n },\n \"openai\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"voice\": {\n \"type\": \"string\"\n }\n }\n },\n \"edge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"voice\": {\n \"type\": \"string\"\n },\n \"lang\": {\n \"type\": \"string\"\n },\n \"outputFormat\": {\n \"type\": \"string\"\n },\n \"pitch\": {\n \"type\": \"string\"\n },\n \"rate\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n },\n \"saveSubtitles\": {\n \"type\": \"boolean\"\n },\n \"proxy\": {\n \"type\": \"string\"\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1000,\n \"maximum\": 120000\n }\n }\n },\n \"prefsPath\": {\n \"type\": \"string\"\n },\n \"maxTextLength\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"timeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1000,\n \"maximum\": 120000\n }\n }\n },\n \"store\": {\n \"type\": \"string\"\n },\n \"responseModel\": {\n \"type\": \"string\"\n },\n \"responseSystemPrompt\": {\n \"type\": \"string\"\n },\n \"responseTimeoutMs\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n }\n }\n },\n \"additionalProperties\": false\n },\n \"whatsapp\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"zalo\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n },\n \"zalouser\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false,\n \"properties\": {}\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"installs\": {\n \"type\": \"object\",\n \"propertyNames\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \"npm\"\n },\n {\n \"type\": \"string\",\n \"const\": \"archive\"\n },\n {\n \"type\": \"string\",\n \"const\": \"path\"\n }\n ]\n },\n \"spec\": {\n \"type\": \"string\"\n },\n \"sourcePath\": {\n \"type\": \"string\"\n },\n \"installPath\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"installedAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"commands\"\n ],\n \"additionalProperties\": false,\n \"title\": \"ClawdbotConfig\"\n },\n \"uiHints\": {\n \"wizard\": {\n \"label\": \"Wizard\",\n \"group\": \"Wizard\",\n \"order\": 20\n },\n \"update\": {\n \"label\": \"Update\",\n \"group\": \"Update\",\n \"order\": 25\n },\n \"diagnostics\": {\n \"label\": \"Diagnostics\",\n \"group\": \"Diagnostics\",\n \"order\": 27\n },\n \"logging\": {\n \"label\": \"Logging\",\n \"group\": \"Logging\",\n \"order\": 900\n },\n \"gateway\": {\n \"label\": \"Gateway\",\n \"group\": \"Gateway\",\n \"order\": 30\n },\n \"nodeHost\": {\n \"label\": \"Node Host\",\n \"group\": \"Node Host\",\n \"order\": 35\n },\n \"agents\": {\n \"label\": \"Agents\",\n \"group\": \"Agents\",\n \"order\": 40\n },\n \"tools\": {\n \"label\": \"Tools\",\n \"group\": \"Tools\",\n \"order\": 50\n },\n \"bindings\": {\n \"label\": \"Bindings\",\n \"group\": \"Bindings\",\n \"order\": 55\n },\n \"audio\": {\n \"label\": \"Audio\",\n \"group\": \"Audio\",\n \"order\": 60\n },\n \"models\": {\n \"label\": \"Models\",\n \"group\": \"Models\",\n \"order\": 70\n },\n \"messages\": {\n \"label\": \"Messages\",\n \"group\": \"Messages\",\n \"order\": 80\n },\n \"commands\": {\n \"label\": \"Commands\",\n \"group\": \"Commands\",\n \"order\": 85\n },\n \"session\": {\n \"label\": \"Session\",\n \"group\": \"Session\",\n \"order\": 90\n },\n \"cron\": {\n \"label\": \"Cron\",\n \"group\": \"Cron\",\n \"order\": 100\n },\n \"hooks\": {\n \"label\": \"Hooks\",\n \"group\": \"Hooks\",\n \"order\": 110\n },\n \"ui\": {\n \"label\": \"UI\",\n \"group\": \"UI\",\n \"order\": 120\n },\n \"browser\": {\n \"label\": \"Browser\",\n \"group\": \"Browser\",\n \"order\": 130\n },\n \"talk\": {\n \"label\": \"Talk\",\n \"group\": \"Talk\",\n \"order\": 140\n },\n \"channels\": {\n \"label\": \"Messaging Channels\",\n \"group\": \"Messaging Channels\",\n \"order\": 150\n },\n \"skills\": {\n \"label\": \"Skills\",\n \"group\": \"Skills\",\n \"order\": 200\n },\n \"plugins\": {\n \"label\": \"Plugins\",\n \"group\": \"Plugins\",\n \"order\": 205\n },\n \"discovery\": {\n \"label\": \"Discovery\",\n \"group\": \"Discovery\",\n \"order\": 210\n },\n \"presence\": {\n \"label\": \"Presence\",\n \"group\": \"Presence\",\n \"order\": 220\n },\n \"voicewake\": {\n \"label\": \"Voice Wake\",\n \"group\": \"Voice Wake\",\n \"order\": 230\n },\n \"meta.lastTouchedVersion\": {\n \"label\": \"Config Last Touched Version\",\n \"help\": \"Auto-set when Clawdbot writes the config.\"\n },\n \"meta.lastTouchedAt\": {\n \"label\": \"Config Last Touched At\",\n \"help\": \"ISO timestamp of the last config write (auto-set).\"\n },\n \"update.channel\": {\n \"label\": \"Update Channel\",\n \"help\": \"Update channel for git + npm installs (\\\"stable\\\", \\\"beta\\\", or \\\"dev\\\").\"\n },\n \"update.checkOnStart\": {\n \"label\": \"Update Check on Start\",\n \"help\": \"Check for npm updates when the gateway starts (default: true).\"\n },\n \"diagnostics.enabled\": {\n \"label\": \"Diagnostics Enabled\"\n },\n \"diagnostics.flags\": {\n \"label\": \"Diagnostics Flags\",\n \"help\": \"Enable targeted diagnostics logs by flag (e.g. [\\\"telegram.http\\\"]). Supports wildcards like \\\"telegram.*\\\" or \\\"*\\\".\"\n },\n \"diagnostics.otel.enabled\": {\n \"label\": \"OpenTelemetry Enabled\"\n },\n \"diagnostics.otel.endpoint\": {\n \"label\": \"OpenTelemetry Endpoint\"\n },\n \"diagnostics.otel.protocol\": {\n \"label\": \"OpenTelemetry Protocol\"\n },\n \"diagnostics.otel.headers\": {\n \"label\": \"OpenTelemetry Headers\"\n },\n \"diagnostics.otel.serviceName\": {\n \"label\": \"OpenTelemetry Service Name\"\n },\n \"diagnostics.otel.traces\": {\n \"label\": \"OpenTelemetry Traces Enabled\"\n },\n \"diagnostics.otel.metrics\": {\n \"label\": \"OpenTelemetry Metrics Enabled\"\n },\n \"diagnostics.otel.logs\": {\n \"label\": \"OpenTelemetry Logs Enabled\"\n },\n \"diagnostics.otel.sampleRate\": {\n \"label\": \"OpenTelemetry Trace Sample Rate\"\n },\n \"diagnostics.otel.flushIntervalMs\": {\n \"label\": \"OpenTelemetry Flush Interval (ms)\"\n },\n \"diagnostics.cacheTrace.enabled\": {\n \"label\": \"Cache Trace Enabled\",\n \"help\": \"Log cache trace snapshots for embedded agent runs (default: false).\"\n },\n \"diagnostics.cacheTrace.filePath\": {\n \"label\": \"Cache Trace File Path\",\n \"help\": \"JSONL output path for cache trace logs (default: $CLAWDBOT_STATE_DIR/logs/cache-trace.jsonl).\"\n },\n \"diagnostics.cacheTrace.includeMessages\": {\n \"label\": \"Cache Trace Include Messages\",\n \"help\": \"Include full message payloads in trace output (default: true).\"\n },\n \"diagnostics.cacheTrace.includePrompt\": {\n \"label\": \"Cache Trace Include Prompt\",\n \"help\": \"Include prompt text in trace output (default: true).\"\n },\n \"diagnostics.cacheTrace.includeSystem\": {\n \"label\": \"Cache Trace Include System\",\n \"help\": \"Include system prompt in trace output (default: true).\"\n },\n \"agents.list.*.identity.avatar\": {\n \"label\": \"Identity Avatar\",\n \"help\": \"Agent avatar (workspace-relative path, http(s) URL, or data URI).\"\n },\n \"gateway.remote.url\": {\n \"label\": \"Remote Gateway URL\",\n \"help\": \"Remote Gateway WebSocket URL (ws:// or wss://).\",\n \"placeholder\": \"ws://host:18789\"\n },\n \"gateway.remote.sshTarget\": {\n \"label\": \"Remote Gateway SSH Target\",\n \"help\": \"Remote gateway over SSH (tunnels the gateway port to localhost). Format: user@host or user@host:port.\",\n \"placeholder\": \"user@host\"\n },\n \"gateway.remote.sshIdentity\": {\n \"label\": \"Remote Gateway SSH Identity\",\n \"help\": \"Optional SSH identity file path (passed to ssh -i).\"\n },\n \"gateway.remote.token\": {\n \"label\": \"Remote Gateway Token\",\n \"sensitive\": true\n },\n \"gateway.remote.password\": {\n \"label\": \"Remote Gateway Password\",\n \"sensitive\": true\n },\n \"gateway.remote.tlsFingerprint\": {\n \"label\": \"Remote Gateway TLS Fingerprint\",\n \"help\": \"Expected sha256 TLS fingerprint for the remote gateway (pin to avoid MITM).\",\n \"placeholder\": \"sha256:ab12cd34…\"\n },\n \"gateway.auth.token\": {\n \"label\": \"Gateway Token\",\n \"help\": \"Recommended for all gateways; required for non-loopback binds.\",\n \"sensitive\": true\n },\n \"gateway.auth.password\": {\n \"label\": \"Gateway Password\",\n \"help\": \"Required for Tailscale funnel.\",\n \"sensitive\": true\n },\n \"tools.media.image.enabled\": {\n \"label\": \"Enable Image Understanding\"\n },\n \"tools.media.image.maxBytes\": {\n \"label\": \"Image Understanding Max Bytes\"\n },\n \"tools.media.image.maxChars\": {\n \"label\": \"Image Understanding Max Chars\"\n },\n \"tools.media.image.prompt\": {\n \"label\": \"Image Understanding Prompt\"\n },\n \"tools.media.image.timeoutSeconds\": {\n \"label\": \"Image Understanding Timeout (sec)\"\n },\n \"tools.media.image.attachments\": {\n \"label\": \"Image Understanding Attachment Policy\"\n },\n \"tools.media.image.models\": {\n \"label\": \"Image Understanding Models\"\n },\n \"tools.media.image.scope\": {\n \"label\": \"Image Understanding Scope\"\n },\n \"tools.media.models\": {\n \"label\": \"Media Understanding Shared Models\"\n },\n \"tools.media.concurrency\": {\n \"label\": \"Media Understanding Concurrency\"\n },\n \"tools.media.audio.enabled\": {\n \"label\": \"Enable Audio Understanding\"\n },\n \"tools.media.audio.maxBytes\": {\n \"label\": \"Audio Understanding Max Bytes\"\n },\n \"tools.media.audio.maxChars\": {\n \"label\": \"Audio Understanding Max Chars\"\n },\n \"tools.media.audio.prompt\": {\n \"label\": \"Audio Understanding Prompt\"\n },\n \"tools.media.audio.timeoutSeconds\": {\n \"label\": \"Audio Understanding Timeout (sec)\"\n },\n \"tools.media.audio.language\": {\n \"label\": \"Audio Understanding Language\"\n },\n \"tools.media.audio.attachments\": {\n \"label\": \"Audio Understanding Attachment Policy\"\n },\n \"tools.media.audio.models\": {\n \"label\": \"Audio Understanding Models\"\n },\n \"tools.media.audio.scope\": {\n \"label\": \"Audio Understanding Scope\"\n },\n \"tools.media.video.enabled\": {\n \"label\": \"Enable Video Understanding\"\n },\n \"tools.media.video.maxBytes\": {\n \"label\": \"Video Understanding Max Bytes\"\n },\n \"tools.media.video.maxChars\": {\n \"label\": \"Video Understanding Max Chars\"\n },\n \"tools.media.video.prompt\": {\n \"label\": \"Video Understanding Prompt\"\n },\n \"tools.media.video.timeoutSeconds\": {\n \"label\": \"Video Understanding Timeout (sec)\"\n },\n \"tools.media.video.attachments\": {\n \"label\": \"Video Understanding Attachment Policy\"\n },\n \"tools.media.video.models\": {\n \"label\": \"Video Understanding Models\"\n },\n \"tools.media.video.scope\": {\n \"label\": \"Video Understanding Scope\"\n },\n \"tools.links.enabled\": {\n \"label\": \"Enable Link Understanding\"\n },\n \"tools.links.maxLinks\": {\n \"label\": \"Link Understanding Max Links\"\n },\n \"tools.links.timeoutSeconds\": {\n \"label\": \"Link Understanding Timeout (sec)\"\n },\n \"tools.links.models\": {\n \"label\": \"Link Understanding Models\"\n },\n \"tools.links.scope\": {\n \"label\": \"Link Understanding Scope\"\n },\n \"tools.profile\": {\n \"label\": \"Tool Profile\"\n },\n \"agents.list[].tools.profile\": {\n \"label\": \"Agent Tool Profile\"\n },\n \"tools.byProvider\": {\n \"label\": \"Tool Policy by Provider\"\n },\n \"agents.list[].tools.byProvider\": {\n \"label\": \"Agent Tool Policy by Provider\"\n },\n \"tools.exec.applyPatch.enabled\": {\n \"label\": \"Enable apply_patch\",\n \"help\": \"Experimental. Enables apply_patch for OpenAI models when allowed by tool policy.\"\n },\n \"tools.exec.applyPatch.allowModels\": {\n \"label\": \"apply_patch Model Allowlist\",\n \"help\": \"Optional allowlist of model ids (e.g. \\\"gpt-5.2\\\" or \\\"openai/gpt-5.2\\\").\"\n },\n \"tools.exec.notifyOnExit\": {\n \"label\": \"Exec Notify On Exit\",\n \"help\": \"When true (default), backgrounded exec sessions enqueue a system event and request a heartbeat on exit.\"\n },\n \"tools.exec.approvalRunningNoticeMs\": {\n \"label\": \"Exec Approval Running Notice (ms)\"\n },\n \"tools.exec.host\": {\n \"label\": \"Exec Host\"\n },\n \"tools.exec.security\": {\n \"label\": \"Exec Security\"\n },\n \"tools.exec.ask\": {\n \"label\": \"Exec Ask\"\n },\n \"tools.exec.node\": {\n \"label\": \"Exec Node Binding\"\n },\n \"tools.exec.pathPrepend\": {\n \"label\": \"Exec PATH Prepend\",\n \"help\": \"Directories to prepend to PATH for exec runs (gateway/sandbox).\"\n },\n \"tools.exec.safeBins\": {\n \"label\": \"Exec Safe Bins\",\n \"help\": \"Allow stdin-only safe binaries to run without explicit allowlist entries.\"\n },\n \"tools.message.allowCrossContextSend\": {\n \"label\": \"Allow Cross-Context Messaging\",\n \"help\": \"Legacy override: allow cross-context sends across all providers.\"\n },\n \"tools.message.crossContext.allowWithinProvider\": {\n \"label\": \"Allow Cross-Context (Same Provider)\",\n \"help\": \"Allow sends to other channels within the same provider (default: true).\"\n },\n \"tools.message.crossContext.allowAcrossProviders\": {\n \"label\": \"Allow Cross-Context (Across Providers)\",\n \"help\": \"Allow sends across different providers (default: false).\"\n },\n \"tools.message.crossContext.marker.enabled\": {\n \"label\": \"Cross-Context Marker\",\n \"help\": \"Add a visible origin marker when sending cross-context (default: true).\"\n },\n \"tools.message.crossContext.marker.prefix\": {\n \"label\": \"Cross-Context Marker Prefix\",\n \"help\": \"Text prefix for cross-context markers (supports \\\"{channel}\\\").\"\n },\n \"tools.message.crossContext.marker.suffix\": {\n \"label\": \"Cross-Context Marker Suffix\",\n \"help\": \"Text suffix for cross-context markers (supports \\\"{channel}\\\").\"\n },\n \"tools.message.broadcast.enabled\": {\n \"label\": \"Enable Message Broadcast\",\n \"help\": \"Enable broadcast action (default: true).\"\n },\n \"tools.web.search.enabled\": {\n \"label\": \"Enable Web Search Tool\",\n \"help\": \"Enable the web_search tool (requires a provider API key).\"\n },\n \"tools.web.search.provider\": {\n \"label\": \"Web Search Provider\",\n \"help\": \"Search provider (\\\"brave\\\" or \\\"perplexity\\\").\"\n },\n \"tools.web.search.apiKey\": {\n \"label\": \"Brave Search API Key\",\n \"help\": \"Brave Search API key (fallback: BRAVE_API_KEY env var).\",\n \"sensitive\": true\n },\n \"tools.web.search.maxResults\": {\n \"label\": \"Web Search Max Results\",\n \"help\": \"Default number of results to return (1-10).\"\n },\n \"tools.web.search.timeoutSeconds\": {\n \"label\": \"Web Search Timeout (sec)\",\n \"help\": \"Timeout in seconds for web_search requests.\"\n },\n \"tools.web.search.cacheTtlMinutes\": {\n \"label\": \"Web Search Cache TTL (min)\",\n \"help\": \"Cache TTL in minutes for web_search results.\"\n },\n \"tools.web.fetch.enabled\": {\n \"label\": \"Enable Web Fetch Tool\",\n \"help\": \"Enable the web_fetch tool (lightweight HTTP fetch).\"\n },\n \"tools.web.fetch.maxChars\": {\n \"label\": \"Web Fetch Max Chars\",\n \"help\": \"Max characters returned by web_fetch (truncated).\"\n },\n \"tools.web.fetch.timeoutSeconds\": {\n \"label\": \"Web Fetch Timeout (sec)\",\n \"help\": \"Timeout in seconds for web_fetch requests.\"\n },\n \"tools.web.fetch.cacheTtlMinutes\": {\n \"label\": \"Web Fetch Cache TTL (min)\",\n \"help\": \"Cache TTL in minutes for web_fetch results.\"\n },\n \"tools.web.fetch.maxRedirects\": {\n \"label\": \"Web Fetch Max Redirects\",\n \"help\": \"Maximum redirects allowed for web_fetch (default: 3).\"\n },\n \"tools.web.fetch.userAgent\": {\n \"label\": \"Web Fetch User-Agent\",\n \"help\": \"Override User-Agent header for web_fetch requests.\"\n },\n \"gateway.controlUi.basePath\": {\n \"label\": \"Control UI Base Path\",\n \"help\": \"Optional URL prefix where the Control UI is served (e.g. /clawdbot).\",\n \"placeholder\": \"/clawdbot\"\n },\n \"gateway.controlUi.allowInsecureAuth\": {\n \"label\": \"Allow Insecure Control UI Auth\",\n \"help\": \"Allow Control UI auth over insecure HTTP (token-only; not recommended).\"\n },\n \"gateway.http.endpoints.chatCompletions.enabled\": {\n \"label\": \"OpenAI Chat Completions Endpoint\",\n \"help\": \"Enable the OpenAI-compatible `POST /v1/chat/completions` endpoint (default: false).\"\n },\n \"gateway.reload.mode\": {\n \"label\": \"Config Reload Mode\",\n \"help\": \"Hot reload strategy for config changes (\\\"hybrid\\\" recommended).\"\n },\n \"gateway.reload.debounceMs\": {\n \"label\": \"Config Reload Debounce (ms)\",\n \"help\": \"Debounce window (ms) before applying config changes.\"\n },\n \"gateway.nodes.browser.mode\": {\n \"label\": \"Gateway Node Browser Mode\",\n \"help\": \"Node browser routing (\\\"auto\\\" = pick single connected browser node, \\\"manual\\\" = require node param, \\\"off\\\" = disable).\"\n },\n \"gateway.nodes.browser.node\": {\n \"label\": \"Gateway Node Browser Pin\",\n \"help\": \"Pin browser routing to a specific node id or name (optional).\"\n },\n \"gateway.nodes.allowCommands\": {\n \"label\": \"Gateway Node Allowlist (Extra Commands)\",\n \"help\": \"Extra node.invoke commands to allow beyond the gateway defaults (array of command strings).\"\n },\n \"gateway.nodes.denyCommands\": {\n \"label\": \"Gateway Node Denylist\",\n \"help\": \"Commands to block even if present in node claims or default allowlist.\"\n },\n \"nodeHost.browserProxy.enabled\": {\n \"label\": \"Node Browser Proxy Enabled\",\n \"help\": \"Expose the local browser control server via node proxy.\"\n },\n \"nodeHost.browserProxy.allowProfiles\": {\n \"label\": \"Node Browser Proxy Allowed Profiles\",\n \"help\": \"Optional allowlist of browser profile names exposed via the node proxy.\"\n },\n \"skills.load.watch\": {\n \"label\": \"Watch Skills\"\n },\n \"skills.load.watchDebounceMs\": {\n \"label\": \"Skills Watch Debounce (ms)\"\n },\n \"agents.defaults.workspace\": {\n \"label\": \"Workspace\"\n },\n \"agents.defaults.repoRoot\": {\n \"label\": \"Repo Root\",\n \"help\": \"Optional repository root shown in the system prompt runtime line (overrides auto-detect).\"\n },\n \"agents.defaults.bootstrapMaxChars\": {\n \"label\": \"Bootstrap Max Chars\",\n \"help\": \"Max characters of each workspace bootstrap file injected into the system prompt before truncation (default: 20000).\"\n },\n \"agents.defaults.envelopeTimezone\": {\n \"label\": \"Envelope Timezone\",\n \"help\": \"Timezone for message envelopes (\\\"utc\\\", \\\"local\\\", \\\"user\\\", or an IANA timezone string).\"\n },\n \"agents.defaults.envelopeTimestamp\": {\n \"label\": \"Envelope Timestamp\",\n \"help\": \"Include absolute timestamps in message envelopes (\\\"on\\\" or \\\"off\\\").\"\n },\n \"agents.defaults.envelopeElapsed\": {\n \"label\": \"Envelope Elapsed\",\n \"help\": \"Include elapsed time in message envelopes (\\\"on\\\" or \\\"off\\\").\"\n },\n \"agents.defaults.memorySearch\": {\n \"label\": \"Memory Search\",\n \"help\": \"Vector search over MEMORY.md and memory/*.md (per-agent overrides supported).\"\n },\n \"agents.defaults.memorySearch.enabled\": {\n \"label\": \"Enable Memory Search\"\n },\n \"agents.defaults.memorySearch.sources\": {\n \"label\": \"Memory Search Sources\",\n \"help\": \"Sources to index for memory search (default: [\\\"memory\\\"]; add \\\"sessions\\\" to include session transcripts).\"\n },\n \"agents.defaults.memorySearch.experimental.sessionMemory\": {\n \"label\": \"Memory Search Session Index (Experimental)\",\n \"help\": \"Enable experimental session transcript indexing for memory search (default: false).\"\n },\n \"agents.defaults.memorySearch.provider\": {\n \"label\": \"Memory Search Provider\",\n \"help\": \"Embedding provider (\\\"openai\\\", \\\"gemini\\\", or \\\"local\\\").\"\n },\n \"agents.defaults.memorySearch.remote.baseUrl\": {\n \"label\": \"Remote Embedding Base URL\",\n \"help\": \"Custom base URL for remote embeddings (OpenAI-compatible proxies or Gemini overrides).\"\n },\n \"agents.defaults.memorySearch.remote.apiKey\": {\n \"label\": \"Remote Embedding API Key\",\n \"help\": \"Custom API key for the remote embedding provider.\",\n \"sensitive\": true\n },\n \"agents.defaults.memorySearch.remote.headers\": {\n \"label\": \"Remote Embedding Headers\",\n \"help\": \"Extra headers for remote embeddings (merged; remote overrides OpenAI headers).\"\n },\n \"agents.defaults.memorySearch.remote.batch.concurrency\": {\n \"label\": \"Remote Batch Concurrency\",\n \"help\": \"Max concurrent embedding batch jobs for memory indexing (default: 2).\"\n },\n \"agents.defaults.memorySearch.model\": {\n \"label\": \"Memory Search Model\"\n },\n \"agents.defaults.memorySearch.fallback\": {\n \"label\": \"Memory Search Fallback\",\n \"help\": \"Fallback provider when embeddings fail (\\\"openai\\\", \\\"gemini\\\", \\\"local\\\", or \\\"none\\\").\"\n },\n \"agents.defaults.memorySearch.local.modelPath\": {\n \"label\": \"Local Embedding Model Path\",\n \"help\": \"Local GGUF model path or hf: URI (node-llama-cpp).\"\n },\n \"agents.defaults.memorySearch.store.path\": {\n \"label\": \"Memory Search Index Path\",\n \"help\": \"SQLite index path (default: ~/.clawdbot/memory/{agentId}.sqlite).\"\n },\n \"agents.defaults.memorySearch.store.vector.enabled\": {\n \"label\": \"Memory Search Vector Index\",\n \"help\": \"Enable sqlite-vec extension for vector search (default: true).\"\n },\n \"agents.defaults.memorySearch.store.vector.extensionPath\": {\n \"label\": \"Memory Search Vector Extension Path\",\n \"help\": \"Optional override path to sqlite-vec extension library (.dylib/.so/.dll).\"\n },\n \"agents.defaults.memorySearch.chunking.tokens\": {\n \"label\": \"Memory Chunk Tokens\",\n \"sensitive\": true\n },\n \"agents.defaults.memorySearch.chunking.overlap\": {\n \"label\": \"Memory Chunk Overlap Tokens\"\n },\n \"agents.defaults.memorySearch.sync.onSessionStart\": {\n \"label\": \"Index on Session Start\"\n },\n \"agents.defaults.memorySearch.sync.onSearch\": {\n \"label\": \"Index on Search (Lazy)\",\n \"help\": \"Lazy sync: schedule a reindex on search after changes.\"\n },\n \"agents.defaults.memorySearch.sync.watch\": {\n \"label\": \"Watch Memory Files\",\n \"help\": \"Watch memory files for changes (chokidar).\"\n },\n \"agents.defaults.memorySearch.sync.watchDebounceMs\": {\n \"label\": \"Memory Watch Debounce (ms)\"\n },\n \"agents.defaults.memorySearch.sync.sessions.deltaBytes\": {\n \"label\": \"Session Delta Bytes\",\n \"help\": \"Minimum appended bytes before session transcripts trigger reindex (default: 100000).\"\n },\n \"agents.defaults.memorySearch.sync.sessions.deltaMessages\": {\n \"label\": \"Session Delta Messages\",\n \"help\": \"Minimum appended JSONL lines before session transcripts trigger reindex (default: 50).\"\n },\n \"agents.defaults.memorySearch.query.maxResults\": {\n \"label\": \"Memory Search Max Results\"\n },\n \"agents.defaults.memorySearch.query.minScore\": {\n \"label\": \"Memory Search Min Score\"\n },\n \"agents.defaults.memorySearch.query.hybrid.enabled\": {\n \"label\": \"Memory Search Hybrid\",\n \"help\": \"Enable hybrid BM25 + vector search for memory (default: true).\"\n },\n \"agents.defaults.memorySearch.query.hybrid.vectorWeight\": {\n \"label\": \"Memory Search Vector Weight\",\n \"help\": \"Weight for vector similarity when merging results (0-1).\"\n },\n \"agents.defaults.memorySearch.query.hybrid.textWeight\": {\n \"label\": \"Memory Search Text Weight\",\n \"help\": \"Weight for BM25 text relevance when merging results (0-1).\"\n },\n \"agents.defaults.memorySearch.query.hybrid.candidateMultiplier\": {\n \"label\": \"Memory Search Hybrid Candidate Multiplier\",\n \"help\": \"Multiplier for candidate pool size (default: 4).\"\n },\n \"agents.defaults.memorySearch.cache.enabled\": {\n \"label\": \"Memory Search Embedding Cache\",\n \"help\": \"Cache chunk embeddings in SQLite to speed up reindexing and frequent updates (default: true).\"\n },\n \"agents.defaults.memorySearch.cache.maxEntries\": {\n \"label\": \"Memory Search Embedding Cache Max Entries\",\n \"help\": \"Optional cap on cached embeddings (best-effort).\"\n },\n \"auth.profiles\": {\n \"label\": \"Auth Profiles\",\n \"help\": \"Named auth profiles (provider + mode + optional email).\"\n },\n \"auth.order\": {\n \"label\": \"Auth Profile Order\",\n \"help\": \"Ordered auth profile IDs per provider (used for automatic failover).\"\n },\n \"auth.cooldowns.billingBackoffHours\": {\n \"label\": \"Billing Backoff (hours)\",\n \"help\": \"Base backoff (hours) when a profile fails due to billing/insufficient credits (default: 5).\"\n },\n \"auth.cooldowns.billingBackoffHoursByProvider\": {\n \"label\": \"Billing Backoff Overrides\",\n \"help\": \"Optional per-provider overrides for billing backoff (hours).\"\n },\n \"auth.cooldowns.billingMaxHours\": {\n \"label\": \"Billing Backoff Cap (hours)\",\n \"help\": \"Cap (hours) for billing backoff (default: 24).\"\n },\n \"auth.cooldowns.failureWindowHours\": {\n \"label\": \"Failover Window (hours)\",\n \"help\": \"Failure window (hours) for backoff counters (default: 24).\"\n },\n \"agents.defaults.models\": {\n \"label\": \"Models\",\n \"help\": \"Configured model catalog (keys are full provider/model IDs).\"\n },\n \"agents.defaults.model.primary\": {\n \"label\": \"Primary Model\",\n \"help\": \"Primary model (provider/model).\"\n },\n \"agents.defaults.model.fallbacks\": {\n \"label\": \"Model Fallbacks\",\n \"help\": \"Ordered fallback models (provider/model). Used when the primary model fails.\"\n },\n \"agents.defaults.imageModel.primary\": {\n \"label\": \"Image Model\",\n \"help\": \"Optional image model (provider/model) used when the primary model lacks image input.\"\n },\n \"agents.defaults.imageModel.fallbacks\": {\n \"label\": \"Image Model Fallbacks\",\n \"help\": \"Ordered fallback image models (provider/model).\"\n },\n \"agents.defaults.humanDelay.mode\": {\n \"label\": \"Human Delay Mode\",\n \"help\": \"Delay style for block replies (\\\"off\\\", \\\"natural\\\", \\\"custom\\\").\"\n },\n \"agents.defaults.humanDelay.minMs\": {\n \"label\": \"Human Delay Min (ms)\",\n \"help\": \"Minimum delay in ms for custom humanDelay (default: 800).\"\n },\n \"agents.defaults.humanDelay.maxMs\": {\n \"label\": \"Human Delay Max (ms)\",\n \"help\": \"Maximum delay in ms for custom humanDelay (default: 2500).\"\n },\n \"agents.defaults.cliBackends\": {\n \"label\": \"CLI Backends\",\n \"help\": \"Optional CLI backends for text-only fallback (claude-cli, etc.).\"\n },\n \"commands.native\": {\n \"label\": \"Native Commands\",\n \"help\": \"Register native commands with channels that support it (Discord/Slack/Telegram).\"\n },\n \"commands.nativeSkills\": {\n \"label\": \"Native Skill Commands\",\n \"help\": \"Register native skill commands (user-invocable skills) with channels that support it.\"\n },\n \"commands.text\": {\n \"label\": \"Text Commands\",\n \"help\": \"Allow text command parsing (slash commands only).\"\n },\n \"commands.bash\": {\n \"label\": \"Allow Bash Chat Command\",\n \"help\": \"Allow bash chat command (`!`; `/bash` alias) to run host shell commands (default: false; requires tools.elevated).\"\n },\n \"commands.bashForegroundMs\": {\n \"label\": \"Bash Foreground Window (ms)\",\n \"help\": \"How long bash waits before backgrounding (default: 2000; 0 backgrounds immediately).\"\n },\n \"commands.config\": {\n \"label\": \"Allow /config\",\n \"help\": \"Allow /config chat command to read/write config on disk (default: false).\"\n },\n \"commands.debug\": {\n \"label\": \"Allow /debug\",\n \"help\": \"Allow /debug chat command for runtime-only overrides (default: false).\"\n },\n \"commands.restart\": {\n \"label\": \"Allow Restart\",\n \"help\": \"Allow /restart and gateway restart tool actions (default: false).\"\n },\n \"commands.useAccessGroups\": {\n \"label\": \"Use Access Groups\",\n \"help\": \"Enforce access-group allowlists/policies for commands.\"\n },\n \"ui.seamColor\": {\n \"label\": \"Accent Color\"\n },\n \"ui.assistant.name\": {\n \"label\": \"Assistant Name\"\n },\n \"ui.assistant.avatar\": {\n \"label\": \"Assistant Avatar\"\n },\n \"browser.controlUrl\": {\n \"label\": \"Browser Control URL\"\n },\n \"browser.snapshotDefaults\": {\n \"label\": \"Browser Snapshot Defaults\"\n },\n \"browser.snapshotDefaults.mode\": {\n \"label\": \"Browser Snapshot Mode\"\n },\n \"browser.remoteCdpTimeoutMs\": {\n \"label\": \"Remote CDP Timeout (ms)\"\n },\n \"browser.remoteCdpHandshakeTimeoutMs\": {\n \"label\": \"Remote CDP Handshake Timeout (ms)\"\n },\n \"session.dmScope\": {\n \"label\": \"DM Session Scope\",\n \"help\": \"DM session scoping: \\\"main\\\" keeps continuity; \\\"per-peer\\\" or \\\"per-channel-peer\\\" isolates DM history (recommended for shared inboxes).\"\n },\n \"session.agentToAgent.maxPingPongTurns\": {\n \"label\": \"Agent-to-Agent Ping-Pong Turns\",\n \"help\": \"Max reply-back turns between requester and target (05).\"\n },\n \"messages.ackReaction\": {\n \"label\": \"Ack Reaction Emoji\",\n \"help\": \"Emoji reaction used to acknowledge inbound messages (empty disables).\"\n },\n \"messages.ackReactionScope\": {\n \"label\": \"Ack Reaction Scope\",\n \"help\": \"When to send ack reactions (\\\"group-mentions\\\", \\\"group-all\\\", \\\"direct\\\", \\\"all\\\").\"\n },\n \"messages.inbound.debounceMs\": {\n \"label\": \"Inbound Message Debounce (ms)\",\n \"help\": \"Debounce window (ms) for batching rapid inbound messages from the same sender (0 to disable).\"\n },\n \"talk.apiKey\": {\n \"label\": \"Talk API Key\",\n \"sensitive\": true\n },\n \"channels.whatsapp\": {\n \"label\": \"WhatsApp\"\n },\n \"channels.telegram\": {\n \"label\": \"Telegram\",\n \"help\": \"simplest way to get started — register a bot with @BotFather and get going.\"\n },\n \"channels.telegram.customCommands\": {\n \"label\": \"Telegram Custom Commands\",\n \"help\": \"Additional Telegram bot menu commands (merged with native; conflicts ignored).\"\n },\n \"channels.discord\": {\n \"label\": \"Discord\"\n },\n \"channels.slack\": {\n \"label\": \"Slack\"\n },\n \"channels.mattermost\": {\n \"label\": \"Mattermost\"\n },\n \"channels.signal\": {\n \"label\": \"Signal\"\n },\n \"channels.imessage\": {\n \"label\": \"iMessage\"\n },\n \"channels.bluebubbles\": {\n \"label\": \"BlueBubbles\"\n },\n \"channels.msteams\": {\n \"label\": \"MS Teams\"\n },\n \"channels.telegram.botToken\": {\n \"label\": \"Telegram Bot Token\",\n \"sensitive\": true\n },\n \"channels.telegram.dmPolicy\": {\n \"label\": \"Telegram DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.telegram.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.telegram.streamMode\": {\n \"label\": \"Telegram Draft Stream Mode\",\n \"help\": \"Draft streaming mode for Telegram replies (off | partial | block). Separate from block streaming; requires private topics + sendMessageDraft.\"\n },\n \"channels.telegram.draftChunk.minChars\": {\n \"label\": \"Telegram Draft Chunk Min Chars\",\n \"help\": \"Minimum chars before emitting a Telegram draft update when channels.telegram.streamMode=\\\"block\\\" (default: 200).\"\n },\n \"channels.telegram.draftChunk.maxChars\": {\n \"label\": \"Telegram Draft Chunk Max Chars\",\n \"help\": \"Target max size for a Telegram draft update chunk when channels.telegram.streamMode=\\\"block\\\" (default: 800; clamped to channels.telegram.textChunkLimit).\"\n },\n \"channels.telegram.draftChunk.breakPreference\": {\n \"label\": \"Telegram Draft Chunk Break Preference\",\n \"help\": \"Preferred breakpoints for Telegram draft chunks (paragraph | newline | sentence). Default: paragraph.\"\n },\n \"channels.telegram.retry.attempts\": {\n \"label\": \"Telegram Retry Attempts\",\n \"help\": \"Max retry attempts for outbound Telegram API calls (default: 3).\"\n },\n \"channels.telegram.retry.minDelayMs\": {\n \"label\": \"Telegram Retry Min Delay (ms)\",\n \"help\": \"Minimum retry delay in ms for Telegram outbound calls.\"\n },\n \"channels.telegram.retry.maxDelayMs\": {\n \"label\": \"Telegram Retry Max Delay (ms)\",\n \"help\": \"Maximum retry delay cap in ms for Telegram outbound calls.\"\n },\n \"channels.telegram.retry.jitter\": {\n \"label\": \"Telegram Retry Jitter\",\n \"help\": \"Jitter factor (0-1) applied to Telegram retry delays.\"\n },\n \"channels.telegram.timeoutSeconds\": {\n \"label\": \"Telegram API Timeout (seconds)\",\n \"help\": \"Max seconds before Telegram API requests are aborted (default: 500 per grammY).\"\n },\n \"channels.telegram.capabilities.inlineButtons\": {\n \"label\": \"Telegram Inline Buttons\"\n },\n \"channels.whatsapp.dmPolicy\": {\n \"label\": \"WhatsApp DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.whatsapp.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.whatsapp.selfChatMode\": {\n \"label\": \"WhatsApp Self-Phone Mode\",\n \"help\": \"Same-phone setup (bot uses your personal WhatsApp number).\"\n },\n \"channels.whatsapp.debounceMs\": {\n \"label\": \"WhatsApp Message Debounce (ms)\",\n \"help\": \"Debounce window (ms) for batching rapid consecutive messages from the same sender (0 to disable).\"\n },\n \"channels.signal.dmPolicy\": {\n \"label\": \"Signal DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.signal.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.imessage.dmPolicy\": {\n \"label\": \"iMessage DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.imessage.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.bluebubbles.dmPolicy\": {\n \"label\": \"BlueBubbles DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.bluebubbles.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.discord.dm.policy\": {\n \"label\": \"Discord DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.discord.dm.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.discord.retry.attempts\": {\n \"label\": \"Discord Retry Attempts\",\n \"help\": \"Max retry attempts for outbound Discord API calls (default: 3).\"\n },\n \"channels.discord.retry.minDelayMs\": {\n \"label\": \"Discord Retry Min Delay (ms)\",\n \"help\": \"Minimum retry delay in ms for Discord outbound calls.\"\n },\n \"channels.discord.retry.maxDelayMs\": {\n \"label\": \"Discord Retry Max Delay (ms)\",\n \"help\": \"Maximum retry delay cap in ms for Discord outbound calls.\"\n },\n \"channels.discord.retry.jitter\": {\n \"label\": \"Discord Retry Jitter\",\n \"help\": \"Jitter factor (0-1) applied to Discord retry delays.\"\n },\n \"channels.discord.maxLinesPerMessage\": {\n \"label\": \"Discord Max Lines Per Message\",\n \"help\": \"Soft max line count per Discord message (default: 17).\"\n },\n \"channels.slack.dm.policy\": {\n \"label\": \"Slack DM Policy\",\n \"help\": \"Direct message access control (\\\"pairing\\\" recommended). \\\"open\\\" requires channels.slack.dm.allowFrom=[\\\"*\\\"].\"\n },\n \"channels.slack.allowBots\": {\n \"label\": \"Slack Allow Bot Messages\",\n \"help\": \"Allow bot-authored messages to trigger Slack replies (default: false).\"\n },\n \"channels.discord.token\": {\n \"label\": \"Discord Bot Token\",\n \"sensitive\": true\n },\n \"channels.slack.botToken\": {\n \"label\": \"Slack Bot Token\",\n \"sensitive\": true\n },\n \"channels.slack.appToken\": {\n \"label\": \"Slack App Token\",\n \"sensitive\": true\n },\n \"channels.slack.userToken\": {\n \"label\": \"Slack User Token\",\n \"sensitive\": true\n },\n \"channels.slack.userTokenReadOnly\": {\n \"label\": \"Slack User Token Read Only\",\n \"sensitive\": true\n },\n \"channels.slack.thread.historyScope\": {\n \"label\": \"Slack Thread History Scope\",\n \"help\": \"Scope for Slack thread history context (\\\"thread\\\" isolates per thread; \\\"channel\\\" reuses channel history).\"\n },\n \"channels.slack.thread.inheritParent\": {\n \"label\": \"Slack Thread Parent Inheritance\",\n \"help\": \"If true, Slack thread sessions inherit the parent channel transcript (default: false).\"\n },\n \"channels.mattermost.botToken\": {\n \"label\": \"Mattermost Bot Token\",\n \"help\": \"Bot token from Mattermost System Console -> Integrations -> Bot Accounts.\",\n \"sensitive\": true\n },\n \"channels.mattermost.baseUrl\": {\n \"label\": \"Mattermost Base URL\",\n \"help\": \"Base URL for your Mattermost server (e.g., https://chat.example.com).\",\n \"placeholder\": \"https://chat.example.com\"\n },\n \"channels.mattermost.chatmode\": {\n \"label\": \"Mattermost Chat Mode\",\n \"help\": \"Reply to channel messages on mention (\\\"oncall\\\"), on trigger chars (\\\">\\\" or \\\"!\\\") (\\\"onchar\\\"), or on every message (\\\"onmessage\\\").\"\n },\n \"channels.mattermost.oncharPrefixes\": {\n \"label\": \"Mattermost Onchar Prefixes\",\n \"help\": \"Trigger prefixes for onchar mode (default: [\\\">\\\", \\\"!\\\"]).\"\n },\n \"channels.mattermost.requireMention\": {\n \"label\": \"Mattermost Require Mention\",\n \"help\": \"Require @mention in channels before responding (default: true).\"\n },\n \"channels.signal.account\": {\n \"label\": \"Signal Account\"\n },\n \"channels.imessage.cliPath\": {\n \"label\": \"iMessage CLI Path\"\n },\n \"agents.list[].identity.avatar\": {\n \"label\": \"Agent Avatar\",\n \"help\": \"Avatar image path (relative to the agent workspace only) or a remote URL/data URL.\",\n \"placeholder\": \"avatars/clawd.png\"\n },\n \"plugins.enabled\": {\n \"label\": \"Enable Plugins\",\n \"help\": \"Enable plugin/extension loading (default: true).\"\n },\n \"plugins.allow\": {\n \"label\": \"Plugin Allowlist\",\n \"help\": \"Optional allowlist of plugin ids; when set, only listed plugins load.\"\n },\n \"plugins.deny\": {\n \"label\": \"Plugin Denylist\",\n \"help\": \"Optional denylist of plugin ids; deny wins over allowlist.\"\n },\n \"plugins.load.paths\": {\n \"label\": \"Plugin Load Paths\",\n \"help\": \"Additional plugin files or directories to load.\"\n },\n \"plugins.slots\": {\n \"label\": \"Plugin Slots\",\n \"help\": \"Select which plugins own exclusive slots (memory, etc.).\"\n },\n \"plugins.slots.memory\": {\n \"label\": \"Memory Plugin\",\n \"help\": \"Select the active memory plugin by id, or \\\"none\\\" to disable memory plugins.\"\n },\n \"plugins.entries\": {\n \"label\": \"Plugin Entries\",\n \"help\": \"Per-plugin settings keyed by plugin id (enable/disable + config payloads).\"\n },\n \"plugins.entries.*.enabled\": {\n \"label\": \"Plugin Enabled\",\n \"help\": \"Overrides plugin enable/disable for this entry (restart required).\"\n },\n \"plugins.entries.*.config\": {\n \"label\": \"Plugin Config\",\n \"help\": \"Plugin-defined config payload (schema is provided by the plugin).\"\n },\n \"plugins.installs\": {\n \"label\": \"Plugin Install Records\",\n \"help\": \"CLI-managed install metadata (used by `clawdbot plugins update` to locate install sources).\"\n },\n \"plugins.installs.*.source\": {\n \"label\": \"Plugin Install Source\",\n \"help\": \"Install source (\\\"npm\\\", \\\"archive\\\", or \\\"path\\\").\"\n },\n \"plugins.installs.*.spec\": {\n \"label\": \"Plugin Install Spec\",\n \"help\": \"Original npm spec used for install (if source is npm).\"\n },\n \"plugins.installs.*.sourcePath\": {\n \"label\": \"Plugin Install Source Path\",\n \"help\": \"Original archive/path used for install (if any).\"\n },\n \"plugins.installs.*.installPath\": {\n \"label\": \"Plugin Install Path\",\n \"help\": \"Resolved install directory (usually ~/.clawdbot/extensions/<id>).\"\n },\n \"plugins.installs.*.version\": {\n \"label\": \"Plugin Install Version\",\n \"help\": \"Version recorded at install time (if available).\"\n },\n \"plugins.installs.*.installedAt\": {\n \"label\": \"Plugin Install Time\",\n \"help\": \"ISO timestamp of last install/update.\"\n },\n \"tools.web.search.perplexity.apiKey\": {\n \"help\": \"Perplexity or OpenRouter API key (fallback: PERPLEXITY_API_KEY or OPENROUTER_API_KEY env var).\",\n \"sensitive\": true\n },\n \"tools.web.search.perplexity.baseUrl\": {\n \"help\": \"Perplexity base URL override (default: https://openrouter.ai/api/v1 or https://api.perplexity.ai).\"\n },\n \"tools.web.search.perplexity.model\": {\n \"help\": \"Perplexity model override (default: \\\"perplexity/sonar-pro\\\").\"\n },\n \"tools.web.fetch.readability\": {\n \"help\": \"Use Readability to extract main content from HTML (fallbacks to basic HTML cleanup).\"\n },\n \"tools.web.fetch.firecrawl.enabled\": {\n \"help\": \"Enable Firecrawl fallback for web_fetch (if configured).\"\n },\n \"tools.web.fetch.firecrawl.apiKey\": {\n \"help\": \"Firecrawl API key (fallback: FIRECRAWL_API_KEY env var).\",\n \"sensitive\": true\n },\n \"tools.web.fetch.firecrawl.baseUrl\": {\n \"help\": \"Firecrawl base URL (e.g. https://api.firecrawl.dev or custom endpoint).\"\n },\n \"tools.web.fetch.firecrawl.onlyMainContent\": {\n \"help\": \"When true, Firecrawl returns only the main content (default: true).\"\n },\n \"tools.web.fetch.firecrawl.maxAgeMs\": {\n \"help\": \"Firecrawl maxAge (ms) for cached results when supported by the API.\"\n },\n \"tools.web.fetch.firecrawl.timeoutSeconds\": {\n \"help\": \"Timeout in seconds for Firecrawl requests.\"\n },\n \"agents.defaults.memorySearch.remote.batch.enabled\": {\n \"help\": \"Enable batch API for memory embeddings (OpenAI/Gemini; default: true).\"\n },\n \"agents.defaults.memorySearch.remote.batch.wait\": {\n \"help\": \"Wait for batch completion when indexing (default: true).\"\n },\n \"agents.defaults.memorySearch.remote.batch.pollIntervalMs\": {\n \"help\": \"Polling interval in ms for batch status (default: 2000).\"\n },\n \"agents.defaults.memorySearch.remote.batch.timeoutMinutes\": {\n \"help\": \"Timeout in minutes for batch indexing (default: 60).\"\n },\n \"session.identityLinks\": {\n \"help\": \"Map canonical identities to provider-prefixed peer IDs for DM session linking (example: telegram:123456).\"\n },\n \"channels.telegram.configWrites\": {\n \"help\": \"Allow Telegram to write config in response to channel events/commands (default: true).\"\n },\n \"channels.slack.configWrites\": {\n \"help\": \"Allow Slack to write config in response to channel events/commands (default: true).\"\n },\n \"channels.mattermost.configWrites\": {\n \"help\": \"Allow Mattermost to write config in response to channel events/commands (default: true).\"\n },\n \"channels.discord.configWrites\": {\n \"help\": \"Allow Discord to write config in response to channel events/commands (default: true).\"\n },\n \"channels.whatsapp.configWrites\": {\n \"help\": \"Allow WhatsApp to write config in response to channel events/commands (default: true).\"\n },\n \"channels.signal.configWrites\": {\n \"help\": \"Allow Signal to write config in response to channel events/commands (default: true).\"\n },\n \"channels.imessage.configWrites\": {\n \"help\": \"Allow iMessage to write config in response to channel events/commands (default: true).\"\n },\n \"channels.msteams.configWrites\": {\n \"help\": \"Allow Microsoft Teams to write config in response to channel events/commands (default: true).\"\n },\n \"channels.discord.commands.native\": {\n \"help\": \"Override native commands for Discord (bool or \\\"auto\\\").\"\n },\n \"channels.discord.commands.nativeSkills\": {\n \"help\": \"Override native skill commands for Discord (bool or \\\"auto\\\").\"\n },\n \"channels.telegram.commands.native\": {\n \"help\": \"Override native commands for Telegram (bool or \\\"auto\\\").\"\n },\n \"channels.telegram.commands.nativeSkills\": {\n \"help\": \"Override native skill commands for Telegram (bool or \\\"auto\\\").\"\n },\n \"channels.slack.commands.native\": {\n \"help\": \"Override native commands for Slack (bool or \\\"auto\\\").\"\n },\n \"channels.slack.commands.nativeSkills\": {\n \"help\": \"Override native skill commands for Slack (bool or \\\"auto\\\").\"\n },\n \"plugins.entries.bluebubbles\": {\n \"label\": \"@clawdbot/bluebubbles\",\n \"help\": \"Clawdbot BlueBubbles channel plugin (plugin: bluebubbles)\"\n },\n \"plugins.entries.bluebubbles.enabled\": {\n \"label\": \"Enable @clawdbot/bluebubbles\"\n },\n \"plugins.entries.bluebubbles.config\": {\n \"label\": \"@clawdbot/bluebubbles Config\",\n \"help\": \"Plugin-defined config payload for bluebubbles.\"\n },\n \"plugins.entries.copilot-proxy\": {\n \"label\": \"@clawdbot/copilot-proxy\",\n \"help\": \"Clawdbot Copilot Proxy provider plugin (plugin: copilot-proxy)\"\n },\n \"plugins.entries.copilot-proxy.enabled\": {\n \"label\": \"Enable @clawdbot/copilot-proxy\"\n },\n \"plugins.entries.copilot-proxy.config\": {\n \"label\": \"@clawdbot/copilot-proxy Config\",\n \"help\": \"Plugin-defined config payload for copilot-proxy.\"\n },\n \"plugins.entries.diagnostics-otel\": {\n \"label\": \"@clawdbot/diagnostics-otel\",\n \"help\": \"Clawdbot diagnostics OpenTelemetry exporter (plugin: diagnostics-otel)\"\n },\n \"plugins.entries.diagnostics-otel.enabled\": {\n \"label\": \"Enable @clawdbot/diagnostics-otel\"\n },\n \"plugins.entries.diagnostics-otel.config\": {\n \"label\": \"@clawdbot/diagnostics-otel Config\",\n \"help\": \"Plugin-defined config payload for diagnostics-otel.\"\n },\n \"plugins.entries.discord\": {\n \"label\": \"@clawdbot/discord\",\n \"help\": \"Clawdbot Discord channel plugin (plugin: discord)\"\n },\n \"plugins.entries.discord.enabled\": {\n \"label\": \"Enable @clawdbot/discord\"\n },\n \"plugins.entries.discord.config\": {\n \"label\": \"@clawdbot/discord Config\",\n \"help\": \"Plugin-defined config payload for discord.\"\n },\n \"plugins.entries.google-antigravity-auth\": {\n \"label\": \"@clawdbot/google-antigravity-auth\",\n \"help\": \"Clawdbot Google Antigravity OAuth provider plugin (plugin: google-antigravity-auth)\"\n },\n \"plugins.entries.google-antigravity-auth.enabled\": {\n \"label\": \"Enable @clawdbot/google-antigravity-auth\"\n },\n \"plugins.entries.google-antigravity-auth.config\": {\n \"label\": \"@clawdbot/google-antigravity-auth Config\",\n \"help\": \"Plugin-defined config payload for google-antigravity-auth.\"\n },\n \"plugins.entries.google-gemini-cli-auth\": {\n \"label\": \"@clawdbot/google-gemini-cli-auth\",\n \"help\": \"Clawdbot Gemini CLI OAuth provider plugin (plugin: google-gemini-cli-auth)\"\n },\n \"plugins.entries.google-gemini-cli-auth.enabled\": {\n \"label\": \"Enable @clawdbot/google-gemini-cli-auth\"\n },\n \"plugins.entries.google-gemini-cli-auth.config\": {\n \"label\": \"@clawdbot/google-gemini-cli-auth Config\",\n \"help\": \"Plugin-defined config payload for google-gemini-cli-auth.\"\n },\n \"plugins.entries.googlechat\": {\n \"label\": \"@clawdbot/googlechat\",\n \"help\": \"Clawdbot Google Chat channel plugin (plugin: googlechat)\"\n },\n \"plugins.entries.googlechat.enabled\": {\n \"label\": \"Enable @clawdbot/googlechat\"\n },\n \"plugins.entries.googlechat.config\": {\n \"label\": \"@clawdbot/googlechat Config\",\n \"help\": \"Plugin-defined config payload for googlechat.\"\n },\n \"plugins.entries.imessage\": {\n \"label\": \"@clawdbot/imessage\",\n \"help\": \"Clawdbot iMessage channel plugin (plugin: imessage)\"\n },\n \"plugins.entries.imessage.enabled\": {\n \"label\": \"Enable @clawdbot/imessage\"\n },\n \"plugins.entries.imessage.config\": {\n \"label\": \"@clawdbot/imessage Config\",\n \"help\": \"Plugin-defined config payload for imessage.\"\n },\n \"plugins.entries.line\": {\n \"label\": \"@clawdbot/line\",\n \"help\": \"Clawdbot LINE channel plugin (plugin: line)\"\n },\n \"plugins.entries.line.enabled\": {\n \"label\": \"Enable @clawdbot/line\"\n },\n \"plugins.entries.line.config\": {\n \"label\": \"@clawdbot/line Config\",\n \"help\": \"Plugin-defined config payload for line.\"\n },\n \"plugins.entries.llm-task\": {\n \"label\": \"LLM Task\",\n \"help\": \"Generic JSON-only LLM tool for structured tasks callable from workflows. (plugin: llm-task)\"\n },\n \"plugins.entries.llm-task.enabled\": {\n \"label\": \"Enable LLM Task\"\n },\n \"plugins.entries.llm-task.config\": {\n \"label\": \"LLM Task Config\",\n \"help\": \"Plugin-defined config payload for llm-task.\"\n },\n \"plugins.entries.lobster\": {\n \"label\": \"Lobster\",\n \"help\": \"Typed workflow tool with resumable approvals. (plugin: lobster)\"\n },\n \"plugins.entries.lobster.enabled\": {\n \"label\": \"Enable Lobster\"\n },\n \"plugins.entries.lobster.config\": {\n \"label\": \"Lobster Config\",\n \"help\": \"Plugin-defined config payload for lobster.\"\n },\n \"plugins.entries.matrix\": {\n \"label\": \"@clawdbot/matrix\",\n \"help\": \"Clawdbot Matrix channel plugin (plugin: matrix)\"\n },\n \"plugins.entries.matrix.enabled\": {\n \"label\": \"Enable @clawdbot/matrix\"\n },\n \"plugins.entries.matrix.config\": {\n \"label\": \"@clawdbot/matrix Config\",\n \"help\": \"Plugin-defined config payload for matrix.\"\n },\n \"plugins.entries.mattermost\": {\n \"label\": \"@clawdbot/mattermost\",\n \"help\": \"Clawdbot Mattermost channel plugin (plugin: mattermost)\"\n },\n \"plugins.entries.mattermost.enabled\": {\n \"label\": \"Enable @clawdbot/mattermost\"\n },\n \"plugins.entries.mattermost.config\": {\n \"label\": \"@clawdbot/mattermost Config\",\n \"help\": \"Plugin-defined config payload for mattermost.\"\n },\n \"plugins.entries.memory-core\": {\n \"label\": \"Memory (Core)\",\n \"help\": \"File-backed memory search tools and CLI (plugin: memory-core)\"\n },\n \"plugins.entries.memory-core.enabled\": {\n \"label\": \"Enable Memory (Core)\"\n },\n \"plugins.entries.memory-core.config\": {\n \"label\": \"Memory (Core) Config\",\n \"help\": \"Plugin-defined config payload for memory-core.\"\n },\n \"plugins.entries.memory-lancedb\": {\n \"label\": \"@clawdbot/memory-lancedb\",\n \"help\": \"Clawdbot LanceDB-backed long-term memory plugin with auto-recall/capture (plugin: memory-lancedb)\"\n },\n \"plugins.entries.memory-lancedb.enabled\": {\n \"label\": \"Enable @clawdbot/memory-lancedb\"\n },\n \"plugins.entries.memory-lancedb.config\": {\n \"label\": \"@clawdbot/memory-lancedb Config\",\n \"help\": \"Plugin-defined config payload for memory-lancedb.\"\n },\n \"plugins.entries.memory-lancedb.config.embedding.apiKey\": {\n \"label\": \"OpenAI API Key\",\n \"sensitive\": true,\n \"placeholder\": \"sk-proj-...\",\n \"help\": \"API key for OpenAI embeddings (or use ${OPENAI_API_KEY})\"\n },\n \"plugins.entries.memory-lancedb.config.embedding.model\": {\n \"label\": \"Embedding Model\",\n \"placeholder\": \"text-embedding-3-small\",\n \"help\": \"OpenAI embedding model to use\"\n },\n \"plugins.entries.memory-lancedb.config.dbPath\": {\n \"label\": \"Database Path\",\n \"placeholder\": \"~/.clawdbot/memory/lancedb\",\n \"advanced\": true\n },\n \"plugins.entries.memory-lancedb.config.autoCapture\": {\n \"label\": \"Auto-Capture\",\n \"help\": \"Automatically capture important information from conversations\"\n },\n \"plugins.entries.memory-lancedb.config.autoRecall\": {\n \"label\": \"Auto-Recall\",\n \"help\": \"Automatically inject relevant memories into context\"\n },\n \"plugins.entries.msteams\": {\n \"label\": \"@clawdbot/msteams\",\n \"help\": \"Clawdbot Microsoft Teams channel plugin (plugin: msteams)\"\n },\n \"plugins.entries.msteams.enabled\": {\n \"label\": \"Enable @clawdbot/msteams\"\n },\n \"plugins.entries.msteams.config\": {\n \"label\": \"@clawdbot/msteams Config\",\n \"help\": \"Plugin-defined config payload for msteams.\"\n },\n \"plugins.entries.nextcloud-talk\": {\n \"label\": \"@clawdbot/nextcloud-talk\",\n \"help\": \"Clawdbot Nextcloud Talk channel plugin (plugin: nextcloud-talk)\"\n },\n \"plugins.entries.nextcloud-talk.enabled\": {\n \"label\": \"Enable @clawdbot/nextcloud-talk\"\n },\n \"plugins.entries.nextcloud-talk.config\": {\n \"label\": \"@clawdbot/nextcloud-talk Config\",\n \"help\": \"Plugin-defined config payload for nextcloud-talk.\"\n },\n \"plugins.entries.nostr\": {\n \"label\": \"@clawdbot/nostr\",\n \"help\": \"Clawdbot Nostr channel plugin for NIP-04 encrypted DMs (plugin: nostr)\"\n },\n \"plugins.entries.nostr.enabled\": {\n \"label\": \"Enable @clawdbot/nostr\"\n },\n \"plugins.entries.nostr.config\": {\n \"label\": \"@clawdbot/nostr Config\",\n \"help\": \"Plugin-defined config payload for nostr.\"\n },\n \"plugins.entries.open-prose\": {\n \"label\": \"OpenProse\",\n \"help\": \"OpenProse VM skill pack with a /prose slash command. (plugin: open-prose)\"\n },\n \"plugins.entries.open-prose.enabled\": {\n \"label\": \"Enable OpenProse\"\n },\n \"plugins.entries.open-prose.config\": {\n \"label\": \"OpenProse Config\",\n \"help\": \"Plugin-defined config payload for open-prose.\"\n },\n \"plugins.entries.qwen-portal-auth\": {\n \"label\": \"qwen-portal-auth\",\n \"help\": \"Plugin entry for qwen-portal-auth.\"\n },\n \"plugins.entries.qwen-portal-auth.enabled\": {\n \"label\": \"Enable qwen-portal-auth\"\n },\n \"plugins.entries.qwen-portal-auth.config\": {\n \"label\": \"qwen-portal-auth Config\",\n \"help\": \"Plugin-defined config payload for qwen-portal-auth.\"\n },\n \"plugins.entries.signal\": {\n \"label\": \"@clawdbot/signal\",\n \"help\": \"Clawdbot Signal channel plugin (plugin: signal)\"\n },\n \"plugins.entries.signal.enabled\": {\n \"label\": \"Enable @clawdbot/signal\"\n },\n \"plugins.entries.signal.config\": {\n \"label\": \"@clawdbot/signal Config\",\n \"help\": \"Plugin-defined config payload for signal.\"\n },\n \"plugins.entries.slack\": {\n \"label\": \"@clawdbot/slack\",\n \"help\": \"Clawdbot Slack channel plugin (plugin: slack)\"\n },\n \"plugins.entries.slack.enabled\": {\n \"label\": \"Enable @clawdbot/slack\"\n },\n \"plugins.entries.slack.config\": {\n \"label\": \"@clawdbot/slack Config\",\n \"help\": \"Plugin-defined config payload for slack.\"\n },\n \"plugins.entries.telegram\": {\n \"label\": \"Telegram\",\n \"help\": \"Telegram channel plugin (plugin: telegram)\"\n },\n \"plugins.entries.telegram.enabled\": {\n \"label\": \"Enable Telegram\"\n },\n \"plugins.entries.telegram.config\": {\n \"label\": \"Telegram Config\",\n \"help\": \"Plugin-defined config payload for telegram.\"\n },\n \"plugins.entries.tlon\": {\n \"label\": \"@clawdbot/tlon\",\n \"help\": \"Clawdbot Tlon/Urbit channel plugin (plugin: tlon)\"\n },\n \"plugins.entries.tlon.enabled\": {\n \"label\": \"Enable @clawdbot/tlon\"\n },\n \"plugins.entries.tlon.config\": {\n \"label\": \"@clawdbot/tlon Config\",\n \"help\": \"Plugin-defined config payload for tlon.\"\n },\n \"plugins.entries.voice-call\": {\n \"label\": \"@clawdbot/voice-call\",\n \"help\": \"Clawdbot voice-call plugin (plugin: voice-call)\"\n },\n \"plugins.entries.voice-call.enabled\": {\n \"label\": \"Enable @clawdbot/voice-call\"\n },\n \"plugins.entries.voice-call.config\": {\n \"label\": \"@clawdbot/voice-call Config\",\n \"help\": \"Plugin-defined config payload for voice-call.\"\n },\n \"plugins.entries.voice-call.config.provider\": {\n \"label\": \"Provider\",\n \"help\": \"Use twilio, telnyx, or mock for dev/no-network.\"\n },\n \"plugins.entries.voice-call.config.fromNumber\": {\n \"label\": \"From Number\",\n \"placeholder\": \"+15550001234\"\n },\n \"plugins.entries.voice-call.config.toNumber\": {\n \"label\": \"Default To Number\",\n \"placeholder\": \"+15550001234\"\n },\n \"plugins.entries.voice-call.config.inboundPolicy\": {\n \"label\": \"Inbound Policy\"\n },\n \"plugins.entries.voice-call.config.allowFrom\": {\n \"label\": \"Inbound Allowlist\"\n },\n \"plugins.entries.voice-call.config.inboundGreeting\": {\n \"label\": \"Inbound Greeting\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.telnyx.apiKey\": {\n \"label\": \"Telnyx API Key\",\n \"sensitive\": true\n },\n \"plugins.entries.voice-call.config.telnyx.connectionId\": {\n \"label\": \"Telnyx Connection ID\"\n },\n \"plugins.entries.voice-call.config.telnyx.publicKey\": {\n \"label\": \"Telnyx Public Key\",\n \"sensitive\": true\n },\n \"plugins.entries.voice-call.config.twilio.accountSid\": {\n \"label\": \"Twilio Account SID\"\n },\n \"plugins.entries.voice-call.config.twilio.authToken\": {\n \"label\": \"Twilio Auth Token\",\n \"sensitive\": true\n },\n \"plugins.entries.voice-call.config.outbound.defaultMode\": {\n \"label\": \"Default Call Mode\"\n },\n \"plugins.entries.voice-call.config.outbound.notifyHangupDelaySec\": {\n \"label\": \"Notify Hangup Delay (sec)\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.serve.port\": {\n \"label\": \"Webhook Port\"\n },\n \"plugins.entries.voice-call.config.serve.bind\": {\n \"label\": \"Webhook Bind\"\n },\n \"plugins.entries.voice-call.config.serve.path\": {\n \"label\": \"Webhook Path\"\n },\n \"plugins.entries.voice-call.config.tailscale.mode\": {\n \"label\": \"Tailscale Mode\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tailscale.path\": {\n \"label\": \"Tailscale Path\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tunnel.provider\": {\n \"label\": \"Tunnel Provider\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tunnel.ngrokAuthToken\": {\n \"label\": \"ngrok Auth Token\",\n \"sensitive\": true,\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tunnel.ngrokDomain\": {\n \"label\": \"ngrok Domain\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tunnel.allowNgrokFreeTier\": {\n \"label\": \"Allow ngrok Free Tier\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.streaming.enabled\": {\n \"label\": \"Enable Streaming\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.streaming.openaiApiKey\": {\n \"label\": \"OpenAI Realtime API Key\",\n \"sensitive\": true,\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.streaming.sttModel\": {\n \"label\": \"Realtime STT Model\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.streaming.streamPath\": {\n \"label\": \"Media Stream Path\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.provider\": {\n \"label\": \"TTS Provider Override\",\n \"help\": \"Deep-merges with messages.tts (Edge is ignored for calls).\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.openai.model\": {\n \"label\": \"OpenAI TTS Model\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.openai.voice\": {\n \"label\": \"OpenAI TTS Voice\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.openai.apiKey\": {\n \"label\": \"OpenAI API Key\",\n \"sensitive\": true,\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.elevenlabs.modelId\": {\n \"label\": \"ElevenLabs Model ID\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.elevenlabs.voiceId\": {\n \"label\": \"ElevenLabs Voice ID\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.elevenlabs.apiKey\": {\n \"label\": \"ElevenLabs API Key\",\n \"sensitive\": true,\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.tts.elevenlabs.baseUrl\": {\n \"label\": \"ElevenLabs Base URL\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.publicUrl\": {\n \"label\": \"Public Webhook URL\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.skipSignatureVerification\": {\n \"label\": \"Skip Signature Verification\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.store\": {\n \"label\": \"Call Log Store Path\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.responseModel\": {\n \"label\": \"Response Model\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.responseSystemPrompt\": {\n \"label\": \"Response System Prompt\",\n \"advanced\": true\n },\n \"plugins.entries.voice-call.config.responseTimeoutMs\": {\n \"label\": \"Response Timeout (ms)\",\n \"advanced\": true\n },\n \"plugins.entries.whatsapp\": {\n \"label\": \"@clawdbot/whatsapp\",\n \"help\": \"Clawdbot WhatsApp channel plugin (plugin: whatsapp)\"\n },\n \"plugins.entries.whatsapp.enabled\": {\n \"label\": \"Enable @clawdbot/whatsapp\"\n },\n \"plugins.entries.whatsapp.config\": {\n \"label\": \"@clawdbot/whatsapp Config\",\n \"help\": \"Plugin-defined config payload for whatsapp.\"\n },\n \"plugins.entries.zalo\": {\n \"label\": \"@clawdbot/zalo\",\n \"help\": \"Clawdbot Zalo channel plugin (plugin: zalo)\"\n },\n \"plugins.entries.zalo.enabled\": {\n \"label\": \"Enable @clawdbot/zalo\"\n },\n \"plugins.entries.zalo.config\": {\n \"label\": \"@clawdbot/zalo Config\",\n \"help\": \"Plugin-defined config payload for zalo.\"\n },\n \"plugins.entries.zalouser\": {\n \"label\": \"@clawdbot/zalouser\",\n \"help\": \"Clawdbot Zalo Personal Account plugin via zca-cli (plugin: zalouser)\"\n },\n \"plugins.entries.zalouser.enabled\": {\n \"label\": \"Enable @clawdbot/zalouser\"\n },\n \"plugins.entries.zalouser.config\": {\n \"label\": \"@clawdbot/zalouser Config\",\n \"help\": \"Plugin-defined config payload for zalouser.\"\n },\n \"agents.defaults.heartbeat.target\": {\n \"help\": \"Delivery target (\\\"last\\\", \\\"none\\\", or a channel id). Known channels: telegram, whatsapp, discord, googlechat, slack, signal, imessage.\",\n \"placeholder\": \"last\"\n },\n \"agents.list.*.heartbeat.target\": {\n \"help\": \"Delivery target (\\\"last\\\", \\\"none\\\", or a channel id). Known channels: telegram, whatsapp, discord, googlechat, slack, signal, imessage.\",\n \"placeholder\": \"last\"\n }\n },\n \"version\": \"2026.1.24-3\",\n \"generatedAt\": \"2026-01-30T00:22:59.256Z\"\n }\n}"}],"details":{"ok":true,"result":{"schema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"meta":{"type":"object","properties":{"lastTouchedVersion":{"type":"string"},"lastTouchedAt":{"type":"string"}},"additionalProperties":false},"env":{"type":"object","properties":{"shellEnv":{"type":"object","properties":{"enabled":{"type":"boolean"},"timeoutMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"vars":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"additionalProperties":{"type":"string"}},"wizard":{"type":"object","properties":{"lastRunAt":{"type":"string"},"lastRunVersion":{"type":"string"},"lastRunCommit":{"type":"string"},"lastRunCommand":{"type":"string"},"lastRunMode":{"anyOf":[{"type":"string","const":"local"},{"type":"string","const":"remote"}]}},"additionalProperties":false},"diagnostics":{"type":"object","properties":{"enabled":{"type":"boolean"},"flags":{"type":"array","items":{"type":"string"}},"otel":{"type":"object","properties":{"enabled":{"type":"boolean"},"endpoint":{"type":"string"},"protocol":{"anyOf":[{"type":"string","const":"http/protobuf"},{"type":"string","const":"grpc"}]},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"serviceName":{"type":"string"},"traces":{"type":"boolean"},"metrics":{"type":"boolean"},"logs":{"type":"boolean"},"sampleRate":{"type":"number","minimum":0,"maximum":1},"flushIntervalMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"cacheTrace":{"type":"object","properties":{"enabled":{"type":"boolean"},"filePath":{"type":"string"},"includeMessages":{"type":"boolean"},"includePrompt":{"type":"boolean"},"includeSystem":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"logging":{"type":"object","properties":{"level":{"anyOf":[{"type":"string","const":"silent"},{"type":"string","const":"fatal"},{"type":"string","const":"error"},{"type":"string","const":"warn"},{"type":"string","const":"info"},{"type":"string","const":"debug"},{"type":"string","const":"trace"}]},"file":{"type":"string"},"consoleLevel":{"anyOf":[{"type":"string","const":"silent"},{"type":"string","const":"fatal"},{"type":"string","const":"error"},{"type":"string","const":"warn"},{"type":"string","const":"info"},{"type":"string","const":"debug"},{"type":"string","const":"trace"}]},"consoleStyle":{"anyOf":[{"type":"string","const":"pretty"},{"type":"string","const":"compact"},{"type":"string","const":"json"}]},"redactSensitive":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"tools"}]},"redactPatterns":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"update":{"type":"object","properties":{"channel":{"anyOf":[{"type":"string","const":"stable"},{"type":"string","const":"beta"},{"type":"string","const":"dev"}]},"checkOnStart":{"type":"boolean"}},"additionalProperties":false},"browser":{"type":"object","properties":{"enabled":{"type":"boolean"},"controlUrl":{"type":"string"},"controlToken":{"type":"string"},"cdpUrl":{"type":"string"},"remoteCdpTimeoutMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"remoteCdpHandshakeTimeoutMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"color":{"type":"string"},"executablePath":{"type":"string"},"headless":{"type":"boolean"},"noSandbox":{"type":"boolean"},"attachOnly":{"type":"boolean"},"defaultProfile":{"type":"string"},"snapshotDefaults":{"type":"object","properties":{"mode":{"type":"string","const":"efficient"}},"additionalProperties":false},"profiles":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z0-9-]+$"},"additionalProperties":{"type":"object","properties":{"cdpPort":{"type":"integer","minimum":1,"maximum":65535},"cdpUrl":{"type":"string"},"driver":{"anyOf":[{"type":"string","const":"clawd"},{"type":"string","const":"extension"}]},"color":{"type":"string","pattern":"^#?[0-9a-fA-F]{6}$"}},"required":["color"],"additionalProperties":false}}},"additionalProperties":false},"ui":{"type":"object","properties":{"seamColor":{"type":"string","pattern":"^#?[0-9a-fA-F]{6}$"},"assistant":{"type":"object","properties":{"name":{"type":"string","maxLength":50},"avatar":{"type":"string","maxLength":200}},"additionalProperties":false}},"additionalProperties":false},"auth":{"type":"object","properties":{"profiles":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"provider":{"type":"string"},"mode":{"anyOf":[{"type":"string","const":"api_key"},{"type":"string","const":"oauth"},{"type":"string","const":"token"}]},"email":{"type":"string"}},"required":["provider","mode"],"additionalProperties":false}},"order":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"cooldowns":{"type":"object","properties":{"billingBackoffHours":{"type":"number","exclusiveMinimum":0},"billingBackoffHoursByProvider":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number","exclusiveMinimum":0}},"billingMaxHours":{"type":"number","exclusiveMinimum":0},"failureWindowHours":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false}},"additionalProperties":false},"models":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"merge"},{"type":"string","const":"replace"}]},"providers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"baseUrl":{"type":"string","minLength":1},"apiKey":{"type":"string"},"auth":{"anyOf":[{"type":"string","const":"api-key"},{"type":"string","const":"aws-sdk"},{"type":"string","const":"oauth"},{"type":"string","const":"token"}]},"api":{"anyOf":[{"type":"string","const":"openai-completions"},{"type":"string","const":"openai-responses"},{"type":"string","const":"anthropic-messages"},{"type":"string","const":"google-generative-ai"},{"type":"string","const":"github-copilot"},{"type":"string","const":"bedrock-converse-stream"}]},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"authHeader":{"type":"boolean"},"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"api":{"anyOf":[{"type":"string","const":"openai-completions"},{"type":"string","const":"openai-responses"},{"type":"string","const":"anthropic-messages"},{"type":"string","const":"google-generative-ai"},{"type":"string","const":"github-copilot"},{"type":"string","const":"bedrock-converse-stream"}]},"reasoning":{"type":"boolean"},"input":{"type":"array","items":{"anyOf":[{"type":"string","const":"text"},{"type":"string","const":"image"}]}},"cost":{"type":"object","properties":{"input":{"type":"number"},"output":{"type":"number"},"cacheRead":{"type":"number"},"cacheWrite":{"type":"number"}},"additionalProperties":false},"contextWindow":{"type":"number","exclusiveMinimum":0},"maxTokens":{"type":"number","exclusiveMinimum":0},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"compat":{"type":"object","properties":{"supportsStore":{"type":"boolean"},"supportsDeveloperRole":{"type":"boolean"},"supportsReasoningEffort":{"type":"boolean"},"maxTokensField":{"anyOf":[{"type":"string","const":"max_completion_tokens"},{"type":"string","const":"max_tokens"}]}},"additionalProperties":false}},"required":["id","name"],"additionalProperties":false}}},"required":["baseUrl","models"],"additionalProperties":false}},"bedrockDiscovery":{"type":"object","properties":{"enabled":{"type":"boolean"},"region":{"type":"string"},"providerFilter":{"type":"array","items":{"type":"string"}},"refreshInterval":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultContextWindow":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"defaultMaxTokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"nodeHost":{"type":"object","properties":{"browserProxy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowProfiles":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false},"agents":{"type":"object","properties":{"defaults":{"type":"object","properties":{"model":{"type":"object","properties":{"primary":{"type":"string"},"fallbacks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"imageModel":{"type":"object","properties":{"primary":{"type":"string"},"fallbacks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"models":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"alias":{"type":"string"},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":false}},"workspace":{"type":"string"},"repoRoot":{"type":"string"},"skipBootstrap":{"type":"boolean"},"bootstrapMaxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userTimezone":{"type":"string"},"timeFormat":{"anyOf":[{"type":"string","const":"auto"},{"type":"string","const":"12"},{"type":"string","const":"24"}]},"envelopeTimezone":{"type":"string"},"envelopeTimestamp":{"anyOf":[{"type":"string","const":"on"},{"type":"string","const":"off"}]},"envelopeElapsed":{"anyOf":[{"type":"string","const":"on"},{"type":"string","const":"off"}]},"contextTokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cliBackends":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"output":{"anyOf":[{"type":"string","const":"json"},{"type":"string","const":"text"},{"type":"string","const":"jsonl"}]},"resumeOutput":{"anyOf":[{"type":"string","const":"json"},{"type":"string","const":"text"},{"type":"string","const":"jsonl"}]},"input":{"anyOf":[{"type":"string","const":"arg"},{"type":"string","const":"stdin"}]},"maxPromptArgChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"clearEnv":{"type":"array","items":{"type":"string"}},"modelArg":{"type":"string"},"modelAliases":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"sessionArg":{"type":"string"},"sessionArgs":{"type":"array","items":{"type":"string"}},"resumeArgs":{"type":"array","items":{"type":"string"}},"sessionMode":{"anyOf":[{"type":"string","const":"always"},{"type":"string","const":"existing"},{"type":"string","const":"none"}]},"sessionIdFields":{"type":"array","items":{"type":"string"}},"systemPromptArg":{"type":"string"},"systemPromptMode":{"anyOf":[{"type":"string","const":"append"},{"type":"string","const":"replace"}]},"systemPromptWhen":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"always"},{"type":"string","const":"never"}]},"imageArg":{"type":"string"},"imageMode":{"anyOf":[{"type":"string","const":"repeat"},{"type":"string","const":"list"}]},"serialize":{"type":"boolean"}},"required":["command"],"additionalProperties":false}},"memorySearch":{"type":"object","properties":{"enabled":{"type":"boolean"},"sources":{"type":"array","items":{"anyOf":[{"type":"string","const":"memory"},{"type":"string","const":"sessions"}]}},"experimental":{"type":"object","properties":{"sessionMemory":{"type":"boolean"}},"additionalProperties":false},"provider":{"anyOf":[{"type":"string","const":"openai"},{"type":"string","const":"local"},{"type":"string","const":"gemini"}]},"remote":{"type":"object","properties":{"baseUrl":{"type":"string"},"apiKey":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"batch":{"type":"object","properties":{"enabled":{"type":"boolean"},"wait":{"type":"boolean"},"concurrency":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pollIntervalMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"timeoutMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"fallback":{"anyOf":[{"type":"string","const":"openai"},{"type":"string","const":"gemini"},{"type":"string","const":"local"},{"type":"string","const":"none"}]},"model":{"type":"string"},"local":{"type":"object","properties":{"modelPath":{"type":"string"},"modelCacheDir":{"type":"string"}},"additionalProperties":false},"store":{"type":"object","properties":{"driver":{"type":"string","const":"sqlite"},"path":{"type":"string"},"vector":{"type":"object","properties":{"enabled":{"type":"boolean"},"extensionPath":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"chunking":{"type":"object","properties":{"tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"overlap":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"sync":{"type":"object","properties":{"onSessionStart":{"type":"boolean"},"onSearch":{"type":"boolean"},"watch":{"type":"boolean"},"watchDebounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"intervalMinutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"sessions":{"type":"object","properties":{"deltaBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"deltaMessages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"query":{"type":"object","properties":{"maxResults":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minScore":{"type":"number","minimum":0,"maximum":1},"hybrid":{"type":"object","properties":{"enabled":{"type":"boolean"},"vectorWeight":{"type":"number","minimum":0,"maximum":1},"textWeight":{"type":"number","minimum":0,"maximum":1},"candidateMultiplier":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"cache":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxEntries":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"contextPruning":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"cache-ttl"}]},"ttl":{"type":"string"},"keepLastAssistants":{"type":"integer","minimum":0,"maximum":9007199254740991},"softTrimRatio":{"type":"number","minimum":0,"maximum":1},"hardClearRatio":{"type":"number","minimum":0,"maximum":1},"minPrunableToolChars":{"type":"integer","minimum":0,"maximum":9007199254740991},"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"softTrim":{"type":"object","properties":{"maxChars":{"type":"integer","minimum":0,"maximum":9007199254740991},"headChars":{"type":"integer","minimum":0,"maximum":9007199254740991},"tailChars":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"hardClear":{"type":"object","properties":{"enabled":{"type":"boolean"},"placeholder":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"compaction":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"default"},{"type":"string","const":"safeguard"}]},"reserveTokensFloor":{"type":"integer","minimum":0,"maximum":9007199254740991},"memoryFlush":{"type":"object","properties":{"enabled":{"type":"boolean"},"softThresholdTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompt":{"type":"string"},"systemPrompt":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"thinkingDefault":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"minimal"},{"type":"string","const":"low"},{"type":"string","const":"medium"},{"type":"string","const":"high"},{"type":"string","const":"xhigh"}]},"verboseDefault":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"on"},{"type":"string","const":"full"}]},"elevatedDefault":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"on"},{"type":"string","const":"ask"},{"type":"string","const":"full"}]},"blockStreamingDefault":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"on"}]},"blockStreamingBreak":{"anyOf":[{"type":"string","const":"text_end"},{"type":"string","const":"message_end"}]},"blockStreamingChunk":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"breakPreference":{"anyOf":[{"type":"string","const":"paragraph"},{"type":"string","const":"newline"},{"type":"string","const":"sentence"}]}},"additionalProperties":false},"blockStreamingCoalesce":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"idleMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"humanDelay":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"natural"},{"type":"string","const":"custom"}]},"minMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mediaMaxMb":{"type":"number","exclusiveMinimum":0},"typingIntervalSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"typingMode":{"anyOf":[{"type":"string","const":"never"},{"type":"string","const":"instant"},{"type":"string","const":"thinking"},{"type":"string","const":"message"}]},"heartbeat":{"type":"object","properties":{"every":{"type":"string"},"activeHours":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"timezone":{"type":"string"}},"additionalProperties":false},"model":{"type":"string"},"session":{"type":"string"},"includeReasoning":{"type":"boolean"},"target":{"type":"string"},"to":{"type":"string"},"prompt":{"type":"string"},"ackMaxChars":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"maxConcurrent":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"subagents":{"type":"object","properties":{"maxConcurrent":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"archiveAfterMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"model":{"anyOf":[{"type":"string"},{"type":"object","properties":{"primary":{"type":"string"},"fallbacks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}},"additionalProperties":false},"sandbox":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"non-main"},{"type":"string","const":"all"}]},"workspaceAccess":{"anyOf":[{"type":"string","const":"none"},{"type":"string","const":"ro"},{"type":"string","const":"rw"}]},"sessionToolsVisibility":{"anyOf":[{"type":"string","const":"spawned"},{"type":"string","const":"all"}]},"scope":{"anyOf":[{"type":"string","const":"session"},{"type":"string","const":"agent"},{"type":"string","const":"shared"}]},"perSession":{"type":"boolean"},"workspaceRoot":{"type":"string"},"docker":{"type":"object","properties":{"image":{"type":"string"},"containerPrefix":{"type":"string"},"workdir":{"type":"string"},"readOnlyRoot":{"type":"boolean"},"tmpfs":{"type":"array","items":{"type":"string"}},"network":{"type":"string"},"user":{"type":"string"},"capDrop":{"type":"array","items":{"type":"string"}},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"setupCommand":{"type":"string"},"pidsLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"memory":{"anyOf":[{"type":"string"},{"type":"number"}]},"memorySwap":{"anyOf":[{"type":"string"},{"type":"number"}]},"cpus":{"type":"number","exclusiveMinimum":0},"ulimits":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"object","properties":{"soft":{"type":"integer","minimum":0,"maximum":9007199254740991},"hard":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}]}},"seccompProfile":{"type":"string"},"apparmorProfile":{"type":"string"},"dns":{"type":"array","items":{"type":"string"}},"extraHosts":{"type":"array","items":{"type":"string"}},"binds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"browser":{"type":"object","properties":{"enabled":{"type":"boolean"},"image":{"type":"string"},"containerPrefix":{"type":"string"},"cdpPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"vncPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"noVncPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"headless":{"type":"boolean"},"enableNoVnc":{"type":"boolean"},"allowHostControl":{"type":"boolean"},"allowedControlUrls":{"type":"array","items":{"type":"string"}},"allowedControlHosts":{"type":"array","items":{"type":"string"}},"allowedControlPorts":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"autoStart":{"type":"boolean"},"autoStartTimeoutMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"prune":{"type":"object","properties":{"idleHours":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxAgeDays":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"default":{"type":"boolean"},"name":{"type":"string"},"workspace":{"type":"string"},"agentDir":{"type":"string"},"model":{"anyOf":[{"type":"string"},{"type":"object","properties":{"primary":{"type":"string"},"fallbacks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]},"memorySearch":{"type":"object","properties":{"enabled":{"type":"boolean"},"sources":{"type":"array","items":{"anyOf":[{"type":"string","const":"memory"},{"type":"string","const":"sessions"}]}},"experimental":{"type":"object","properties":{"sessionMemory":{"type":"boolean"}},"additionalProperties":false},"provider":{"anyOf":[{"type":"string","const":"openai"},{"type":"string","const":"local"},{"type":"string","const":"gemini"}]},"remote":{"type":"object","properties":{"baseUrl":{"type":"string"},"apiKey":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"batch":{"type":"object","properties":{"enabled":{"type":"boolean"},"wait":{"type":"boolean"},"concurrency":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pollIntervalMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"timeoutMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"fallback":{"anyOf":[{"type":"string","const":"openai"},{"type":"string","const":"gemini"},{"type":"string","const":"local"},{"type":"string","const":"none"}]},"model":{"type":"string"},"local":{"type":"object","properties":{"modelPath":{"type":"string"},"modelCacheDir":{"type":"string"}},"additionalProperties":false},"store":{"type":"object","properties":{"driver":{"type":"string","const":"sqlite"},"path":{"type":"string"},"vector":{"type":"object","properties":{"enabled":{"type":"boolean"},"extensionPath":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"chunking":{"type":"object","properties":{"tokens":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"overlap":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"sync":{"type":"object","properties":{"onSessionStart":{"type":"boolean"},"onSearch":{"type":"boolean"},"watch":{"type":"boolean"},"watchDebounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"intervalMinutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"sessions":{"type":"object","properties":{"deltaBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"deltaMessages":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"query":{"type":"object","properties":{"maxResults":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minScore":{"type":"number","minimum":0,"maximum":1},"hybrid":{"type":"object","properties":{"enabled":{"type":"boolean"},"vectorWeight":{"type":"number","minimum":0,"maximum":1},"textWeight":{"type":"number","minimum":0,"maximum":1},"candidateMultiplier":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"cache":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxEntries":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"humanDelay":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"natural"},{"type":"string","const":"custom"}]},"minMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"heartbeat":{"type":"object","properties":{"every":{"type":"string"},"activeHours":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"timezone":{"type":"string"}},"additionalProperties":false},"model":{"type":"string"},"session":{"type":"string"},"includeReasoning":{"type":"boolean"},"target":{"type":"string"},"to":{"type":"string"},"prompt":{"type":"string"},"ackMaxChars":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"identity":{"type":"object","properties":{"name":{"type":"string"},"theme":{"type":"string"},"emoji":{"type":"string"},"avatar":{"type":"string"}},"additionalProperties":false},"groupChat":{"type":"object","properties":{"mentionPatterns":{"type":"array","items":{"type":"string"}},"historyLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"subagents":{"type":"object","properties":{"allowAgents":{"type":"array","items":{"type":"string"}},"model":{"anyOf":[{"type":"string"},{"type":"object","properties":{"primary":{"type":"string"},"fallbacks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}},"additionalProperties":false},"sandbox":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"non-main"},{"type":"string","const":"all"}]},"workspaceAccess":{"anyOf":[{"type":"string","const":"none"},{"type":"string","const":"ro"},{"type":"string","const":"rw"}]},"sessionToolsVisibility":{"anyOf":[{"type":"string","const":"spawned"},{"type":"string","const":"all"}]},"scope":{"anyOf":[{"type":"string","const":"session"},{"type":"string","const":"agent"},{"type":"string","const":"shared"}]},"perSession":{"type":"boolean"},"workspaceRoot":{"type":"string"},"docker":{"type":"object","properties":{"image":{"type":"string"},"containerPrefix":{"type":"string"},"workdir":{"type":"string"},"readOnlyRoot":{"type":"boolean"},"tmpfs":{"type":"array","items":{"type":"string"}},"network":{"type":"string"},"user":{"type":"string"},"capDrop":{"type":"array","items":{"type":"string"}},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"setupCommand":{"type":"string"},"pidsLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"memory":{"anyOf":[{"type":"string"},{"type":"number"}]},"memorySwap":{"anyOf":[{"type":"string"},{"type":"number"}]},"cpus":{"type":"number","exclusiveMinimum":0},"ulimits":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"object","properties":{"soft":{"type":"integer","minimum":0,"maximum":9007199254740991},"hard":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}]}},"seccompProfile":{"type":"string"},"apparmorProfile":{"type":"string"},"dns":{"type":"array","items":{"type":"string"}},"extraHosts":{"type":"array","items":{"type":"string"}},"binds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"browser":{"type":"object","properties":{"enabled":{"type":"boolean"},"image":{"type":"string"},"containerPrefix":{"type":"string"},"cdpPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"vncPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"noVncPort":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"headless":{"type":"boolean"},"enableNoVnc":{"type":"boolean"},"allowHostControl":{"type":"boolean"},"allowedControlUrls":{"type":"array","items":{"type":"string"}},"allowedControlHosts":{"type":"array","items":{"type":"string"}},"allowedControlPorts":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"autoStart":{"type":"boolean"},"autoStartTimeoutMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"prune":{"type":"object","properties":{"idleHours":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxAgeDays":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"tools":{"type":"object","properties":{"profile":{"anyOf":[{"type":"string","const":"minimal"},{"type":"string","const":"coding"},{"type":"string","const":"messaging"},{"type":"string","const":"full"}]},"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}},"byProvider":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}},"profile":{"anyOf":[{"type":"string","const":"minimal"},{"type":"string","const":"coding"},{"type":"string","const":"messaging"},{"type":"string","const":"full"}]}},"additionalProperties":false}},"elevated":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowFrom":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}}},"additionalProperties":false},"exec":{"type":"object","properties":{"host":{"type":"string","enum":["sandbox","gateway","node"]},"security":{"type":"string","enum":["deny","allowlist","full"]},"ask":{"type":"string","enum":["off","on-miss","always"]},"node":{"type":"string"},"pathPrepend":{"type":"array","items":{"type":"string"}},"safeBins":{"type":"array","items":{"type":"string"}},"backgroundMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"approvalRunningNoticeMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"cleanupMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"notifyOnExit":{"type":"boolean"},"applyPatch":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowModels":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false},"sandbox":{"type":"object","properties":{"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}}},"additionalProperties":false},"tools":{"type":"object","properties":{"profile":{"anyOf":[{"type":"string","const":"minimal"},{"type":"string","const":"coding"},{"type":"string","const":"messaging"},{"type":"string","const":"full"}]},"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}},"byProvider":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}},"profile":{"anyOf":[{"type":"string","const":"minimal"},{"type":"string","const":"coding"},{"type":"string","const":"messaging"},{"type":"string","const":"full"}]}},"additionalProperties":false}},"web":{"type":"object","properties":{"search":{"type":"object","properties":{"enabled":{"type":"boolean"},"provider":{"anyOf":[{"type":"string","const":"brave"},{"type":"string","const":"perplexity"}]},"apiKey":{"type":"string"},"maxResults":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cacheTtlMinutes":{"type":"number","minimum":0},"perplexity":{"type":"object","properties":{"apiKey":{"type":"string"},"baseUrl":{"type":"string"},"model":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"fetch":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cacheTtlMinutes":{"type":"number","minimum":0},"maxRedirects":{"type":"integer","minimum":0,"maximum":9007199254740991},"userAgent":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"media":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"capabilities":{"type":"array","items":{"anyOf":[{"type":"string","const":"image"},{"type":"string","const":"audio"},{"type":"string","const":"video"}]}},"type":{"anyOf":[{"type":"string","const":"provider"},{"type":"string","const":"cli"}]},"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"profile":{"type":"string"},"preferredProfile":{"type":"string"}},"additionalProperties":false}},"concurrency":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"image":{"type":"object","properties":{"enabled":{"type":"boolean"},"scope":{"type":"object","properties":{"default":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"rules":{"type":"array","items":{"type":"object","properties":{"action":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"match":{"type":"object","properties":{"channel":{"type":"string"},"chatType":{"anyOf":[{"type":"string","const":"direct"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"keyPrefix":{"type":"string"}},"additionalProperties":false}},"required":["action"],"additionalProperties":false}}},"additionalProperties":false},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prompt":{"type":"string"},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"attachments":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"all"}]},"maxAttachments":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prefer":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"last"},{"type":"string","const":"path"},{"type":"string","const":"url"}]}},"additionalProperties":false},"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"capabilities":{"type":"array","items":{"anyOf":[{"type":"string","const":"image"},{"type":"string","const":"audio"},{"type":"string","const":"video"}]}},"type":{"anyOf":[{"type":"string","const":"provider"},{"type":"string","const":"cli"}]},"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"profile":{"type":"string"},"preferredProfile":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false},"audio":{"type":"object","properties":{"enabled":{"type":"boolean"},"scope":{"type":"object","properties":{"default":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"rules":{"type":"array","items":{"type":"object","properties":{"action":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"match":{"type":"object","properties":{"channel":{"type":"string"},"chatType":{"anyOf":[{"type":"string","const":"direct"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"keyPrefix":{"type":"string"}},"additionalProperties":false}},"required":["action"],"additionalProperties":false}}},"additionalProperties":false},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prompt":{"type":"string"},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"attachments":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"all"}]},"maxAttachments":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prefer":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"last"},{"type":"string","const":"path"},{"type":"string","const":"url"}]}},"additionalProperties":false},"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"capabilities":{"type":"array","items":{"anyOf":[{"type":"string","const":"image"},{"type":"string","const":"audio"},{"type":"string","const":"video"}]}},"type":{"anyOf":[{"type":"string","const":"provider"},{"type":"string","const":"cli"}]},"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"profile":{"type":"string"},"preferredProfile":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false},"video":{"type":"object","properties":{"enabled":{"type":"boolean"},"scope":{"type":"object","properties":{"default":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"rules":{"type":"array","items":{"type":"object","properties":{"action":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"match":{"type":"object","properties":{"channel":{"type":"string"},"chatType":{"anyOf":[{"type":"string","const":"direct"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"keyPrefix":{"type":"string"}},"additionalProperties":false}},"required":["action"],"additionalProperties":false}}},"additionalProperties":false},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prompt":{"type":"string"},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"attachments":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"all"}]},"maxAttachments":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"prefer":{"anyOf":[{"type":"string","const":"first"},{"type":"string","const":"last"},{"type":"string","const":"path"},{"type":"string","const":"url"}]}},"additionalProperties":false},"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"capabilities":{"type":"array","items":{"anyOf":[{"type":"string","const":"image"},{"type":"string","const":"audio"},{"type":"string","const":"video"}]}},"type":{"anyOf":[{"type":"string","const":"provider"},{"type":"string","const":"cli"}]},"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"language":{"type":"string"},"providerOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"deepgram":{"type":"object","properties":{"detectLanguage":{"type":"boolean"},"punctuate":{"type":"boolean"},"smartFormat":{"type":"boolean"}},"additionalProperties":false},"baseUrl":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"profile":{"type":"string"},"preferredProfile":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"links":{"type":"object","properties":{"enabled":{"type":"boolean"},"scope":{"type":"object","properties":{"default":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"rules":{"type":"array","items":{"type":"object","properties":{"action":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"match":{"type":"object","properties":{"channel":{"type":"string"},"chatType":{"anyOf":[{"type":"string","const":"direct"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"keyPrefix":{"type":"string"}},"additionalProperties":false}},"required":["action"],"additionalProperties":false}}},"additionalProperties":false},"maxLinks":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"models":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"cli"},"command":{"type":"string","minLength":1},"args":{"type":"array","items":{"type":"string"}},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["command"],"additionalProperties":false}}},"additionalProperties":false},"message":{"type":"object","properties":{"allowCrossContextSend":{"type":"boolean"},"crossContext":{"type":"object","properties":{"allowWithinProvider":{"type":"boolean"},"allowAcrossProviders":{"type":"boolean"},"marker":{"type":"object","properties":{"enabled":{"type":"boolean"},"prefix":{"type":"string"},"suffix":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"broadcast":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"agentToAgent":{"type":"object","properties":{"enabled":{"type":"boolean"},"allow":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"elevated":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowFrom":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}}},"additionalProperties":false},"exec":{"type":"object","properties":{"host":{"type":"string","enum":["sandbox","gateway","node"]},"security":{"type":"string","enum":["deny","allowlist","full"]},"ask":{"type":"string","enum":["off","on-miss","always"]},"node":{"type":"string"},"pathPrepend":{"type":"array","items":{"type":"string"}},"safeBins":{"type":"array","items":{"type":"string"}},"backgroundMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timeoutSec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cleanupMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"notifyOnExit":{"type":"boolean"},"applyPatch":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowModels":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false},"subagents":{"type":"object","properties":{"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false},"sandbox":{"type":"object","properties":{"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"bindings":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string"},"match":{"type":"object","properties":{"channel":{"type":"string"},"accountId":{"type":"string"},"peer":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","const":"dm"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},"guildId":{"type":"string"},"teamId":{"type":"string"}},"required":["channel"],"additionalProperties":false}},"required":["agentId","match"],"additionalProperties":false}},"broadcast":{"type":"object","properties":{"strategy":{"type":"string","enum":["parallel","sequential"]}},"additionalProperties":{"type":"array","items":{"type":"string"}}},"audio":{"type":"object","properties":{"transcription":{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"}},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["command"],"additionalProperties":false}},"additionalProperties":false},"media":{"type":"object","properties":{"preserveFilenames":{"type":"boolean"}},"additionalProperties":false},"messages":{"type":"object","properties":{"messagePrefix":{"type":"string"},"responsePrefix":{"type":"string"},"groupChat":{"type":"object","properties":{"mentionPatterns":{"type":"array","items":{"type":"string"}},"historyLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"queue":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"byChannel":{"type":"object","properties":{"whatsapp":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"telegram":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"discord":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"slack":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"mattermost":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"signal":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"imessage":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"msteams":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]},"webchat":{"anyOf":[{"type":"string","const":"steer"},{"type":"string","const":"followup"},{"type":"string","const":"collect"},{"type":"string","const":"steer-backlog"},{"type":"string","const":"steer+backlog"},{"type":"string","const":"queue"},{"type":"string","const":"interrupt"}]}},"additionalProperties":false},"debounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"debounceMsByChannel":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":0,"maximum":9007199254740991}},"cap":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"drop":{"anyOf":[{"type":"string","const":"old"},{"type":"string","const":"new"},{"type":"string","const":"summarize"}]}},"additionalProperties":false},"inbound":{"type":"object","properties":{"debounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"byChannel":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"additionalProperties":false},"ackReaction":{"type":"string"},"ackReactionScope":{"type":"string","enum":["group-mentions","group-all","direct","all"]},"removeAckAfterReply":{"type":"boolean"},"tts":{"type":"object","properties":{"auto":{"type":"string","enum":["off","always","inbound","tagged"]},"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["final","all"]},"provider":{"type":"string","enum":["elevenlabs","openai","edge"]},"summaryModel":{"type":"string"},"modelOverrides":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowText":{"type":"boolean"},"allowProvider":{"type":"boolean"},"allowVoice":{"type":"boolean"},"allowModelId":{"type":"boolean"},"allowVoiceSettings":{"type":"boolean"},"allowNormalization":{"type":"boolean"},"allowSeed":{"type":"boolean"}},"additionalProperties":false},"elevenlabs":{"type":"object","properties":{"apiKey":{"type":"string"},"baseUrl":{"type":"string"},"voiceId":{"type":"string"},"modelId":{"type":"string"},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"applyTextNormalization":{"type":"string","enum":["auto","on","off"]},"languageCode":{"type":"string"},"voiceSettings":{"type":"object","properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"useSpeakerBoost":{"type":"boolean"},"speed":{"type":"number","minimum":0.5,"maximum":2}},"additionalProperties":false}},"additionalProperties":false},"openai":{"type":"object","properties":{"apiKey":{"type":"string"},"model":{"type":"string"},"voice":{"type":"string"}},"additionalProperties":false},"edge":{"type":"object","properties":{"enabled":{"type":"boolean"},"voice":{"type":"string"},"lang":{"type":"string"},"outputFormat":{"type":"string"},"pitch":{"type":"string"},"rate":{"type":"string"},"volume":{"type":"string"},"saveSubtitles":{"type":"boolean"},"proxy":{"type":"string"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":120000}},"additionalProperties":false},"prefsPath":{"type":"string"},"maxTextLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"timeoutMs":{"type":"integer","minimum":1000,"maximum":120000}},"additionalProperties":false}},"additionalProperties":false},"commands":{"default":{"native":"auto","nativeSkills":"auto"},"type":"object","properties":{"native":{"default":"auto","anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]},"nativeSkills":{"default":"auto","anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]},"text":{"type":"boolean"},"bash":{"type":"boolean"},"bashForegroundMs":{"type":"integer","minimum":0,"maximum":30000},"config":{"type":"boolean"},"debug":{"type":"boolean"},"restart":{"type":"boolean"},"useAccessGroups":{"type":"boolean"}},"required":["native","nativeSkills"],"additionalProperties":false},"approvals":{"type":"object","properties":{"exec":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"anyOf":[{"type":"string","const":"session"},{"type":"string","const":"targets"},{"type":"string","const":"both"}]},"agentFilter":{"type":"array","items":{"type":"string"}},"sessionFilter":{"type":"array","items":{"type":"string"}},"targets":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"accountId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"number"}]}},"required":["channel","to"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"session":{"type":"object","properties":{"scope":{"anyOf":[{"type":"string","const":"per-sender"},{"type":"string","const":"global"}]},"dmScope":{"anyOf":[{"type":"string","const":"main"},{"type":"string","const":"per-peer"},{"type":"string","const":"per-channel-peer"}]},"identityLinks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"resetTriggers":{"type":"array","items":{"type":"string"}},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"reset":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"daily"},{"type":"string","const":"idle"}]},"atHour":{"type":"integer","minimum":0,"maximum":23},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"resetByType":{"type":"object","properties":{"dm":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"daily"},{"type":"string","const":"idle"}]},"atHour":{"type":"integer","minimum":0,"maximum":23},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"group":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"daily"},{"type":"string","const":"idle"}]},"atHour":{"type":"integer","minimum":0,"maximum":23},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"thread":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"daily"},{"type":"string","const":"idle"}]},"atHour":{"type":"integer","minimum":0,"maximum":23},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"resetByChannel":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"daily"},{"type":"string","const":"idle"}]},"atHour":{"type":"integer","minimum":0,"maximum":23},"idleMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"store":{"type":"string"},"typingIntervalSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"typingMode":{"anyOf":[{"type":"string","const":"never"},{"type":"string","const":"instant"},{"type":"string","const":"thinking"},{"type":"string","const":"message"}]},"mainKey":{"type":"string"},"sendPolicy":{"type":"object","properties":{"default":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"rules":{"type":"array","items":{"type":"object","properties":{"action":{"anyOf":[{"type":"string","const":"allow"},{"type":"string","const":"deny"}]},"match":{"type":"object","properties":{"channel":{"type":"string"},"chatType":{"anyOf":[{"type":"string","const":"direct"},{"type":"string","const":"group"},{"type":"string","const":"channel"}]},"keyPrefix":{"type":"string"}},"additionalProperties":false}},"required":["action"],"additionalProperties":false}}},"additionalProperties":false},"agentToAgent":{"type":"object","properties":{"maxPingPongTurns":{"type":"integer","minimum":0,"maximum":5}},"additionalProperties":false}},"additionalProperties":false},"cron":{"type":"object","properties":{"enabled":{"type":"boolean"},"store":{"type":"string"},"maxConcurrentRuns":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"hooks":{"type":"object","properties":{"enabled":{"type":"boolean"},"path":{"type":"string"},"token":{"type":"string"},"maxBodyBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"presets":{"type":"array","items":{"type":"string"}},"transformsDir":{"type":"string"},"mappings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"match":{"type":"object","properties":{"path":{"type":"string"},"source":{"type":"string"}},"additionalProperties":false},"action":{"anyOf":[{"type":"string","const":"wake"},{"type":"string","const":"agent"}]},"wakeMode":{"anyOf":[{"type":"string","const":"now"},{"type":"string","const":"next-heartbeat"}]},"name":{"type":"string"},"sessionKey":{"type":"string"},"messageTemplate":{"type":"string"},"textTemplate":{"type":"string"},"deliver":{"type":"boolean"},"channel":{"anyOf":[{"type":"string","const":"last"},{"type":"string","const":"whatsapp"},{"type":"string","const":"telegram"},{"type":"string","const":"discord"},{"type":"string","const":"slack"},{"type":"string","const":"signal"},{"type":"string","const":"imessage"},{"type":"string","const":"msteams"}]},"to":{"type":"string"},"model":{"type":"string"},"thinking":{"type":"string"},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"transform":{"type":"object","properties":{"module":{"type":"string"},"export":{"type":"string"}},"required":["module"],"additionalProperties":false}},"additionalProperties":false}},"gmail":{"type":"object","properties":{"account":{"type":"string"},"label":{"type":"string"},"topic":{"type":"string"},"subscription":{"type":"string"},"pushToken":{"type":"string"},"hookUrl":{"type":"string"},"includeBody":{"type":"boolean"},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"renewEveryMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"serve":{"type":"object","properties":{"bind":{"type":"string"},"port":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"path":{"type":"string"}},"additionalProperties":false},"tailscale":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"serve"},{"type":"string","const":"funnel"}]},"path":{"type":"string"},"target":{"type":"string"}},"additionalProperties":false},"model":{"type":"string"},"thinking":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"minimal"},{"type":"string","const":"low"},{"type":"string","const":"medium"},{"type":"string","const":"high"}]}},"additionalProperties":false},"internal":{"type":"object","properties":{"enabled":{"type":"boolean"},"handlers":{"type":"array","items":{"type":"object","properties":{"event":{"type":"string"},"module":{"type":"string"},"export":{"type":"string"}},"required":["event","module"],"additionalProperties":false}},"entries":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean"},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"additionalProperties":false}},"load":{"type":"object","properties":{"extraDirs":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"installs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"source":{"anyOf":[{"type":"string","const":"npm"},{"type":"string","const":"archive"},{"type":"string","const":"path"}]},"spec":{"type":"string"},"sourcePath":{"type":"string"},"installPath":{"type":"string"},"version":{"type":"string"},"installedAt":{"type":"string"},"hooks":{"type":"array","items":{"type":"string"}}},"required":["source"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"web":{"type":"object","properties":{"enabled":{"type":"boolean"},"heartbeatSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"reconnect":{"type":"object","properties":{"initialMs":{"type":"number","exclusiveMinimum":0},"maxMs":{"type":"number","exclusiveMinimum":0},"factor":{"type":"number","exclusiveMinimum":0},"jitter":{"type":"number","minimum":0,"maximum":1},"maxAttempts":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"channels":{"type":"object","properties":{"telegram":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"name":{"type":"string"},"capabilities":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"inlineButtons":{"type":"string","enum":["off","dm","group","all","allowlist"]}},"additionalProperties":false}]},"markdown":{"type":"object","properties":{"tables":{"type":"string","enum":["off","bullets","code"]}},"additionalProperties":false},"enabled":{"type":"boolean"},"commands":{"type":"object","properties":{"native":{"anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]},"nativeSkills":{"anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]}},"additionalProperties":false},"customCommands":{"type":"array","items":{"type":"object","properties":{"command":{},"description":{}},"required":["command","description"],"additionalProperties":false}},"configWrites":{"type":"boolean"},"dmPolicy":{"default":"pairing","type":"string","enum":["pairing","allowlist","open","disabled"]},"botToken":{"type":"string"},"tokenFile":{"type":"string"},"replyToMode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"first"},{"type":"string","const":"all"}]},"groups":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"requireMention":{"type":"boolean"},"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"skills":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"systemPrompt":{"type":"string"},"topics":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"requireMention":{"type":"boolean"},"skills":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"systemPrompt":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false}},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"groupAllowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"groupPolicy":{"default":"allowlist","type":"string","enum":["open","disabled","allowlist"]},"historyLimit":{"type":"integer","minimum":0,"maximum":9007199254740991},"dmHistoryLimit":{"type":"integer","minimum":0,"maximum":9007199254740991},"dms":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"historyLimit":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"textChunkLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"chunkMode":{"type":"string","enum":["length","newline"]},"blockStreaming":{"type":"boolean"},"draftChunk":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"breakPreference":{"anyOf":[{"type":"string","const":"paragraph"},{"type":"string","const":"newline"},{"type":"string","const":"sentence"}]}},"additionalProperties":false},"blockStreamingCoalesce":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"idleMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"streamMode":{"default":"partial","type":"string","enum":["off","partial","block"]},"mediaMaxMb":{"type":"number","exclusiveMinimum":0},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"retry":{"type":"object","properties":{"attempts":{"type":"integer","minimum":1,"maximum":9007199254740991},"minDelayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxDelayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"jitter":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"proxy":{"type":"string"},"webhookUrl":{"type":"string"},"webhookSecret":{"type":"string"},"webhookPath":{"type":"string"},"actions":{"type":"object","properties":{"reactions":{"type":"boolean"},"sendMessage":{"type":"boolean"},"deleteMessage":{"type":"boolean"}},"additionalProperties":false},"reactionNotifications":{"type":"string","enum":["off","own","all"]},"reactionLevel":{"type":"string","enum":["off","ack","minimal","extensive"]},"heartbeat":{"type":"object","properties":{"showOk":{"type":"boolean"},"showAlerts":{"type":"boolean"},"useIndicator":{"type":"boolean"}},"additionalProperties":false},"linkPreview":{"type":"boolean"},"accounts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"capabilities":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"inlineButtons":{"type":"string","enum":["off","dm","group","all","allowlist"]}},"additionalProperties":false}]},"markdown":{"type":"object","properties":{"tables":{"type":"string","enum":["off","bullets","code"]}},"additionalProperties":false},"enabled":{"type":"boolean"},"commands":{"type":"object","properties":{"native":{"anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]},"nativeSkills":{"anyOf":[{"type":"boolean"},{"type":"string","const":"auto"}]}},"additionalProperties":false},"customCommands":{"type":"array","items":{"type":"object","properties":{"command":{},"description":{}},"required":["command","description"],"additionalProperties":false}},"configWrites":{"type":"boolean"},"dmPolicy":{"default":"pairing","type":"string","enum":["pairing","allowlist","open","disabled"]},"botToken":{"type":"string"},"tokenFile":{"type":"string"},"replyToMode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"first"},{"type":"string","const":"all"}]},"groups":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"requireMention":{"type":"boolean"},"tools":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"skills":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"systemPrompt":{"type":"string"},"topics":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"requireMention":{"type":"boolean"},"skills":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"systemPrompt":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false}},"allowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"groupAllowFrom":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"groupPolicy":{"default":"allowlist","type":"string","enum":["open","disabled","allowlist"]},"historyLimit":{"type":"integer","minimum":0,"maximum":9007199254740991},"dmHistoryLimit":{"type":"integer","minimum":0,"maximum":9007199254740991},"dms":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"historyLimit":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"textChunkLimit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"chunkMode":{"type":"string","enum":["length","newline"]},"blockStreaming":{"type":"boolean"},"draftChunk":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"breakPreference":{"anyOf":[{"type":"string","const":"paragraph"},{"type":"string","const":"newline"},{"type":"string","const":"sentence"}]}},"additionalProperties":false},"blockStreamingCoalesce":{"type":"object","properties":{"minChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"idleMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"streamMode":{"default":"partial","type":"string","enum":["off","partial","block"]},"mediaMaxMb":{"type":"number","exclusiveMinimum":0},"timeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"retry":{"type":"object","properties":{"attempts":{"type":"integer","minimum":1,"maximum":9007199254740991},"minDelayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxDelayMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"jitter":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"proxy":{"type":"string"},"webhookUrl":{"type":"string"},"webhookSecret":{"type":"string"},"webhookPath":{"type":"string"},"actions":{"type":"object","properties":{"reactions":{"type":"boolean"},"sendMessage":{"type":"boolean"},"deleteMessage":{"type":"boolean"}},"additionalProperties":false},"reactionNotifications":{"type":"string","enum":["off","own","all"]},"reactionLevel":{"type":"string","enum":["off","ack","minimal","extensive"]},"heartbeat":{"type":"object","properties":{"showOk":{"type":"boolean"},"showAlerts":{"type":"boolean"},"useIndicator":{"type":"boolean"}},"additionalProperties":false},"linkPreview":{"type":"boolean"}},"required":["dmPolicy","groupPolicy","streamMode"],"additionalProperties":false}}},"required":["dmPolicy","groupPolicy","streamMode"],"additionalProperties":false}},"additionalProperties":true,"required":[]},"discovery":{"type":"object","properties":{"wideArea":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"canvasHost":{"type":"object","properties":{"enabled":{"type":"boolean"},"root":{"type":"string"},"port":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"liveReload":{"type":"boolean"}},"additionalProperties":false},"talk":{"type":"object","properties":{"voiceId":{"type":"string"},"voiceAliases":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"modelId":{"type":"string"},"outputFormat":{"type":"string"},"apiKey":{"type":"string"},"interruptOnSpeech":{"type":"boolean"}},"additionalProperties":false},"gateway":{"type":"object","properties":{"port":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"anyOf":[{"type":"string","const":"local"},{"type":"string","const":"remote"}]},"bind":{"anyOf":[{"type":"string","const":"auto"},{"type":"string","const":"lan"},{"type":"string","const":"loopback"},{"type":"string","const":"custom"},{"type":"string","const":"tailnet"}]},"controlUi":{"type":"object","properties":{"enabled":{"type":"boolean"},"basePath":{"type":"string"},"allowInsecureAuth":{"type":"boolean"}},"additionalProperties":false},"auth":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"token"},{"type":"string","const":"password"}]},"token":{"type":"string"},"password":{"type":"string"},"allowTailscale":{"type":"boolean"}},"additionalProperties":false},"trustedProxies":{"type":"array","items":{"type":"string"}},"tailscale":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"serve"},{"type":"string","const":"funnel"}]},"resetOnExit":{"type":"boolean"}},"additionalProperties":false},"remote":{"type":"object","properties":{"url":{"type":"string"},"transport":{"anyOf":[{"type":"string","const":"ssh"},{"type":"string","const":"direct"}]},"token":{"type":"string"},"password":{"type":"string"},"tlsFingerprint":{"type":"string"},"sshTarget":{"type":"string"},"sshIdentity":{"type":"string"}},"additionalProperties":false},"reload":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"off"},{"type":"string","const":"restart"},{"type":"string","const":"hot"},{"type":"string","const":"hybrid"}]},"debounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"tls":{"type":"object","properties":{"enabled":{"type":"boolean"},"autoGenerate":{"type":"boolean"},"certPath":{"type":"string"},"keyPath":{"type":"string"},"caPath":{"type":"string"}},"additionalProperties":false},"http":{"type":"object","properties":{"endpoints":{"type":"object","properties":{"chatCompletions":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"responses":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxBodyBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"files":{"type":"object","properties":{"allowUrl":{"type":"boolean"},"allowedMimes":{"type":"array","items":{"type":"string"}},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxChars":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxRedirects":{"type":"integer","minimum":0,"maximum":9007199254740991},"timeoutMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pdf":{"type":"object","properties":{"maxPages":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxPixels":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minTextChars":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"images":{"type":"object","properties":{"allowUrl":{"type":"boolean"},"allowedMimes":{"type":"array","items":{"type":"string"}},"maxBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxRedirects":{"type":"integer","minimum":0,"maximum":9007199254740991},"timeoutMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"nodes":{"type":"object","properties":{"browser":{"type":"object","properties":{"mode":{"anyOf":[{"type":"string","const":"auto"},{"type":"string","const":"manual"},{"type":"string","const":"off"}]},"node":{"type":"string"}},"additionalProperties":false},"allowCommands":{"type":"array","items":{"type":"string"}},"denyCommands":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false},"skills":{"type":"object","properties":{"allowBundled":{"type":"array","items":{"type":"string"}},"load":{"type":"object","properties":{"extraDirs":{"type":"array","items":{"type":"string"}},"watch":{"type":"boolean"},"watchDebounceMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"install":{"type":"object","properties":{"preferBrew":{"type":"boolean"},"nodeManager":{"anyOf":[{"type":"string","const":"npm"},{"type":"string","const":"pnpm"},{"type":"string","const":"yarn"},{"type":"string","const":"bun"}]}},"additionalProperties":false},"entries":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean"},"apiKey":{"type":"string"},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":false}}},"additionalProperties":false},"plugins":{"type":"object","properties":{"enabled":{"type":"boolean"},"allow":{"type":"array","items":{"type":"string"}},"deny":{"type":"array","items":{"type":"string"}},"load":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"slots":{"type":"object","properties":{"memory":{"type":"string"}},"additionalProperties":false},"entries":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":false},"properties":{"bluebubbles":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"copilot-proxy":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"diagnostics-otel":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"discord":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"google-antigravity-auth":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"google-gemini-cli-auth":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"googlechat":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"imessage":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"line":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"llm-task":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{"defaultProvider":{"type":"string"},"defaultModel":{"type":"string"},"defaultAuthProfileId":{"type":"string"},"allowedModels":{"type":"array","items":{"type":"string"},"description":"Allowlist of provider/model keys like openai-codex/gpt-5.2."},"maxTokens":{"type":"number"},"timeoutMs":{"type":"number"}}}},"additionalProperties":false},"lobster":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"matrix":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"mattermost":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"memory-core":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"memory-lancedb":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{"embedding":{"type":"object","additionalProperties":false,"properties":{"apiKey":{"type":"string"},"model":{"type":"string","enum":["text-embedding-3-small","text-embedding-3-large"]}},"required":["apiKey"]},"dbPath":{"type":"string"},"autoCapture":{"type":"boolean"},"autoRecall":{"type":"boolean"}},"required":["embedding"]}},"additionalProperties":false},"msteams":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"nextcloud-talk":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"nostr":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"open-prose":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"qwen-portal-auth":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"signal":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"slack":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"telegram":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"tlon":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"voice-call":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{"enabled":{"type":"boolean"},"provider":{"type":"string","enum":["telnyx","twilio","plivo","mock"]},"telnyx":{"type":"object","additionalProperties":false,"properties":{"apiKey":{"type":"string"},"connectionId":{"type":"string"},"publicKey":{"type":"string"}}},"twilio":{"type":"object","additionalProperties":false,"properties":{"accountSid":{"type":"string"},"authToken":{"type":"string"}}},"plivo":{"type":"object","additionalProperties":false,"properties":{"authId":{"type":"string"},"authToken":{"type":"string"}}},"fromNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$"},"toNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$"},"inboundPolicy":{"type":"string","enum":["disabled","allowlist","pairing","open"]},"allowFrom":{"type":"array","items":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$"}},"inboundGreeting":{"type":"string"},"outbound":{"type":"object","additionalProperties":false,"properties":{"defaultMode":{"type":"string","enum":["notify","conversation"]},"notifyHangupDelaySec":{"type":"integer","minimum":0}}},"maxDurationSeconds":{"type":"integer","minimum":1},"silenceTimeoutMs":{"type":"integer","minimum":1},"transcriptTimeoutMs":{"type":"integer","minimum":1},"ringTimeoutMs":{"type":"integer","minimum":1},"maxConcurrentCalls":{"type":"integer","minimum":1},"serve":{"type":"object","additionalProperties":false,"properties":{"port":{"type":"integer","minimum":1},"bind":{"type":"string"},"path":{"type":"string"}}},"tailscale":{"type":"object","additionalProperties":false,"properties":{"mode":{"type":"string","enum":["off","serve","funnel"]},"path":{"type":"string"}}},"tunnel":{"type":"object","additionalProperties":false,"properties":{"provider":{"type":"string","enum":["none","ngrok","tailscale-serve","tailscale-funnel"]},"ngrokAuthToken":{"type":"string"},"ngrokDomain":{"type":"string"},"allowNgrokFreeTier":{"type":"boolean"}}},"streaming":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"},"sttProvider":{"type":"string","enum":["openai-realtime"]},"openaiApiKey":{"type":"string"},"sttModel":{"type":"string"},"silenceDurationMs":{"type":"integer","minimum":1},"vadThreshold":{"type":"number","minimum":0,"maximum":1},"streamPath":{"type":"string"}}},"publicUrl":{"type":"string"},"skipSignatureVerification":{"type":"boolean"},"stt":{"type":"object","additionalProperties":false,"properties":{"provider":{"type":"string","enum":["openai"]},"model":{"type":"string"}}},"tts":{"type":"object","additionalProperties":false,"properties":{"auto":{"type":"string","enum":["off","always","inbound","tagged"]},"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["final","all"]},"provider":{"type":"string","enum":["openai","elevenlabs","edge"]},"summaryModel":{"type":"string"},"modelOverrides":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"},"allowText":{"type":"boolean"},"allowProvider":{"type":"boolean"},"allowVoice":{"type":"boolean"},"allowModelId":{"type":"boolean"},"allowVoiceSettings":{"type":"boolean"},"allowNormalization":{"type":"boolean"},"allowSeed":{"type":"boolean"}}},"elevenlabs":{"type":"object","additionalProperties":false,"properties":{"apiKey":{"type":"string"},"baseUrl":{"type":"string"},"voiceId":{"type":"string"},"modelId":{"type":"string"},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"applyTextNormalization":{"type":"string","enum":["auto","on","off"]},"languageCode":{"type":"string"},"voiceSettings":{"type":"object","additionalProperties":false,"properties":{"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"useSpeakerBoost":{"type":"boolean"},"speed":{"type":"number","minimum":0.5,"maximum":2}}}}},"openai":{"type":"object","additionalProperties":false,"properties":{"apiKey":{"type":"string"},"model":{"type":"string"},"voice":{"type":"string"}}},"edge":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"},"voice":{"type":"string"},"lang":{"type":"string"},"outputFormat":{"type":"string"},"pitch":{"type":"string"},"rate":{"type":"string"},"volume":{"type":"string"},"saveSubtitles":{"type":"boolean"},"proxy":{"type":"string"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":120000}}},"prefsPath":{"type":"string"},"maxTextLength":{"type":"integer","minimum":1},"timeoutMs":{"type":"integer","minimum":1000,"maximum":120000}}},"store":{"type":"string"},"responseModel":{"type":"string"},"responseSystemPrompt":{"type":"string"},"responseTimeoutMs":{"type":"integer","minimum":1}}}},"additionalProperties":false},"whatsapp":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"zalo":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false},"zalouser":{"type":"object","properties":{"enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false,"properties":{}}},"additionalProperties":false}}},"installs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"source":{"anyOf":[{"type":"string","const":"npm"},{"type":"string","const":"archive"},{"type":"string","const":"path"}]},"spec":{"type":"string"},"sourcePath":{"type":"string"},"installPath":{"type":"string"},"version":{"type":"string"},"installedAt":{"type":"string"}},"required":["source"],"additionalProperties":false}}},"additionalProperties":false}},"required":["commands"],"additionalProperties":false,"title":"ClawdbotConfig"},"uiHints":{"wizard":{"label":"Wizard","group":"Wizard","order":20},"update":{"label":"Update","group":"Update","order":25},"diagnostics":{"label":"Diagnostics","group":"Diagnostics","order":27},"logging":{"label":"Logging","group":"Logging","order":900},"gateway":{"label":"Gateway","group":"Gateway","order":30},"nodeHost":{"label":"Node Host","group":"Node Host","order":35},"agents":{"label":"Agents","group":"Agents","order":40},"tools":{"label":"Tools","group":"Tools","order":50},"bindings":{"label":"Bindings","group":"Bindings","order":55},"audio":{"label":"Audio","group":"Audio","order":60},"models":{"label":"Models","group":"Models","order":70},"messages":{"label":"Messages","group":"Messages","order":80},"commands":{"label":"Commands","group":"Commands","order":85},"session":{"label":"Session","group":"Session","order":90},"cron":{"label":"Cron","group":"Cron","order":100},"hooks":{"label":"Hooks","group":"Hooks","order":110},"ui":{"label":"UI","group":"UI","order":120},"browser":{"label":"Browser","group":"Browser","order":130},"talk":{"label":"Talk","group":"Talk","order":140},"channels":{"label":"Messaging Channels","group":"Messaging Channels","order":150},"skills":{"label":"Skills","group":"Skills","order":200},"plugins":{"label":"Plugins","group":"Plugins","order":205},"discovery":{"label":"Discovery","group":"Discovery","order":210},"presence":{"label":"Presence","group":"Presence","order":220},"voicewake":{"label":"Voice Wake","group":"Voice Wake","order":230},"meta.lastTouchedVersion":{"label":"Config Last Touched Version","help":"Auto-set when Clawdbot writes the config."},"meta.lastTouchedAt":{"label":"Config Last Touched At","help":"ISO timestamp of the last config write (auto-set)."},"update.channel":{"label":"Update Channel","help":"Update channel for git + npm installs (\"stable\", \"beta\", or \"dev\")."},"update.checkOnStart":{"label":"Update Check on Start","help":"Check for npm updates when the gateway starts (default: true)."},"diagnostics.enabled":{"label":"Diagnostics Enabled"},"diagnostics.flags":{"label":"Diagnostics Flags","help":"Enable targeted diagnostics logs by flag (e.g. [\"telegram.http\"]). Supports wildcards like \"telegram.*\" or \"*\"."},"diagnostics.otel.enabled":{"label":"OpenTelemetry Enabled"},"diagnostics.otel.endpoint":{"label":"OpenTelemetry Endpoint"},"diagnostics.otel.protocol":{"label":"OpenTelemetry Protocol"},"diagnostics.otel.headers":{"label":"OpenTelemetry Headers"},"diagnostics.otel.serviceName":{"label":"OpenTelemetry Service Name"},"diagnostics.otel.traces":{"label":"OpenTelemetry Traces Enabled"},"diagnostics.otel.metrics":{"label":"OpenTelemetry Metrics Enabled"},"diagnostics.otel.logs":{"label":"OpenTelemetry Logs Enabled"},"diagnostics.otel.sampleRate":{"label":"OpenTelemetry Trace Sample Rate"},"diagnostics.otel.flushIntervalMs":{"label":"OpenTelemetry Flush Interval (ms)"},"diagnostics.cacheTrace.enabled":{"label":"Cache Trace Enabled","help":"Log cache trace snapshots for embedded agent runs (default: false)."},"diagnostics.cacheTrace.filePath":{"label":"Cache Trace File Path","help":"JSONL output path for cache trace logs (default: $CLAWDBOT_STATE_DIR/logs/cache-trace.jsonl)."},"diagnostics.cacheTrace.includeMessages":{"label":"Cache Trace Include Messages","help":"Include full message payloads in trace output (default: true)."},"diagnostics.cacheTrace.includePrompt":{"label":"Cache Trace Include Prompt","help":"Include prompt text in trace output (default: true)."},"diagnostics.cacheTrace.includeSystem":{"label":"Cache Trace Include System","help":"Include system prompt in trace output (default: true)."},"agents.list.*.identity.avatar":{"label":"Identity Avatar","help":"Agent avatar (workspace-relative path, http(s) URL, or data URI)."},"gateway.remote.url":{"label":"Remote Gateway URL","help":"Remote Gateway WebSocket URL (ws:// or wss://).","placeholder":"ws://host:18789"},"gateway.remote.sshTarget":{"label":"Remote Gateway SSH Target","help":"Remote gateway over SSH (tunnels the gateway port to localhost). Format: user@host or user@host:port.","placeholder":"user@host"},"gateway.remote.sshIdentity":{"label":"Remote Gateway SSH Identity","help":"Optional SSH identity file path (passed to ssh -i)."},"gateway.remote.token":{"label":"Remote Gateway Token","sensitive":true},"gateway.remote.password":{"label":"Remote Gateway Password","sensitive":true},"gateway.remote.tlsFingerprint":{"label":"Remote Gateway TLS Fingerprint","help":"Expected sha256 TLS fingerprint for the remote gateway (pin to avoid MITM).","placeholder":"sha256:ab12cd34…"},"gateway.auth.token":{"label":"Gateway Token","help":"Recommended for all gateways; required for non-loopback binds.","sensitive":true},"gateway.auth.password":{"label":"Gateway Password","help":"Required for Tailscale funnel.","sensitive":true},"tools.media.image.enabled":{"label":"Enable Image Understanding"},"tools.media.image.maxBytes":{"label":"Image Understanding Max Bytes"},"tools.media.image.maxChars":{"label":"Image Understanding Max Chars"},"tools.media.image.prompt":{"label":"Image Understanding Prompt"},"tools.media.image.timeoutSeconds":{"label":"Image Understanding Timeout (sec)"},"tools.media.image.attachments":{"label":"Image Understanding Attachment Policy"},"tools.media.image.models":{"label":"Image Understanding Models"},"tools.media.image.scope":{"label":"Image Understanding Scope"},"tools.media.models":{"label":"Media Understanding Shared Models"},"tools.media.concurrency":{"label":"Media Understanding Concurrency"},"tools.media.audio.enabled":{"label":"Enable Audio Understanding"},"tools.media.audio.maxBytes":{"label":"Audio Understanding Max Bytes"},"tools.media.audio.maxChars":{"label":"Audio Understanding Max Chars"},"tools.media.audio.prompt":{"label":"Audio Understanding Prompt"},"tools.media.audio.timeoutSeconds":{"label":"Audio Understanding Timeout (sec)"},"tools.media.audio.language":{"label":"Audio Understanding Language"},"tools.media.audio.attachments":{"label":"Audio Understanding Attachment Policy"},"tools.media.audio.models":{"label":"Audio Understanding Models"},"tools.media.audio.scope":{"label":"Audio Understanding Scope"},"tools.media.video.enabled":{"label":"Enable Video Understanding"},"tools.media.video.maxBytes":{"label":"Video Understanding Max Bytes"},"tools.media.video.maxChars":{"label":"Video Understanding Max Chars"},"tools.media.video.prompt":{"label":"Video Understanding Prompt"},"tools.media.video.timeoutSeconds":{"label":"Video Understanding Timeout (sec)"},"tools.media.video.attachments":{"label":"Video Understanding Attachment Policy"},"tools.media.video.models":{"label":"Video Understanding Models"},"tools.media.video.scope":{"label":"Video Understanding Scope"},"tools.links.enabled":{"label":"Enable Link Understanding"},"tools.links.maxLinks":{"label":"Link Understanding Max Links"},"tools.links.timeoutSeconds":{"label":"Link Understanding Timeout (sec)"},"tools.links.models":{"label":"Link Understanding Models"},"tools.links.scope":{"label":"Link Understanding Scope"},"tools.profile":{"label":"Tool Profile"},"agents.list[].tools.profile":{"label":"Agent Tool Profile"},"tools.byProvider":{"label":"Tool Policy by Provider"},"agents.list[].tools.byProvider":{"label":"Agent Tool Policy by Provider"},"tools.exec.applyPatch.enabled":{"label":"Enable apply_patch","help":"Experimental. Enables apply_patch for OpenAI models when allowed by tool policy."},"tools.exec.applyPatch.allowModels":{"label":"apply_patch Model Allowlist","help":"Optional allowlist of model ids (e.g. \"gpt-5.2\" or \"openai/gpt-5.2\")."},"tools.exec.notifyOnExit":{"label":"Exec Notify On Exit","help":"When true (default), backgrounded exec sessions enqueue a system event and request a heartbeat on exit."},"tools.exec.approvalRunningNoticeMs":{"label":"Exec Approval Running Notice (ms)"},"tools.exec.host":{"label":"Exec Host"},"tools.exec.security":{"label":"Exec Security"},"tools.exec.ask":{"label":"Exec Ask"},"tools.exec.node":{"label":"Exec Node Binding"},"tools.exec.pathPrepend":{"label":"Exec PATH Prepend","help":"Directories to prepend to PATH for exec runs (gateway/sandbox)."},"tools.exec.safeBins":{"label":"Exec Safe Bins","help":"Allow stdin-only safe binaries to run without explicit allowlist entries."},"tools.message.allowCrossContextSend":{"label":"Allow Cross-Context Messaging","help":"Legacy override: allow cross-context sends across all providers."},"tools.message.crossContext.allowWithinProvider":{"label":"Allow Cross-Context (Same Provider)","help":"Allow sends to other channels within the same provider (default: true)."},"tools.message.crossContext.allowAcrossProviders":{"label":"Allow Cross-Context (Across Providers)","help":"Allow sends across different providers (default: false)."},"tools.message.crossContext.marker.enabled":{"label":"Cross-Context Marker","help":"Add a visible origin marker when sending cross-context (default: true)."},"tools.message.crossContext.marker.prefix":{"label":"Cross-Context Marker Prefix","help":"Text prefix for cross-context markers (supports \"{channel}\")."},"tools.message.crossContext.marker.suffix":{"label":"Cross-Context Marker Suffix","help":"Text suffix for cross-context markers (supports \"{channel}\")."},"tools.message.broadcast.enabled":{"label":"Enable Message Broadcast","help":"Enable broadcast action (default: true)."},"tools.web.search.enabled":{"label":"Enable Web Search Tool","help":"Enable the web_search tool (requires a provider API key)."},"tools.web.search.provider":{"label":"Web Search Provider","help":"Search provider (\"brave\" or \"perplexity\")."},"tools.web.search.apiKey":{"label":"Brave Search API Key","help":"Brave Search API key (fallback: BRAVE_API_KEY env var).","sensitive":true},"tools.web.search.maxResults":{"label":"Web Search Max Results","help":"Default number of results to return (1-10)."},"tools.web.search.timeoutSeconds":{"label":"Web Search Timeout (sec)","help":"Timeout in seconds for web_search requests."},"tools.web.search.cacheTtlMinutes":{"label":"Web Search Cache TTL (min)","help":"Cache TTL in minutes for web_search results."},"tools.web.fetch.enabled":{"label":"Enable Web Fetch Tool","help":"Enable the web_fetch tool (lightweight HTTP fetch)."},"tools.web.fetch.maxChars":{"label":"Web Fetch Max Chars","help":"Max characters returned by web_fetch (truncated)."},"tools.web.fetch.timeoutSeconds":{"label":"Web Fetch Timeout (sec)","help":"Timeout in seconds for web_fetch requests."},"tools.web.fetch.cacheTtlMinutes":{"label":"Web Fetch Cache TTL (min)","help":"Cache TTL in minutes for web_fetch results."},"tools.web.fetch.maxRedirects":{"label":"Web Fetch Max Redirects","help":"Maximum redirects allowed for web_fetch (default: 3)."},"tools.web.fetch.userAgent":{"label":"Web Fetch User-Agent","help":"Override User-Agent header for web_fetch requests."},"gateway.controlUi.basePath":{"label":"Control UI Base Path","help":"Optional URL prefix where the Control UI is served (e.g. /clawdbot).","placeholder":"/clawdbot"},"gateway.controlUi.allowInsecureAuth":{"label":"Allow Insecure Control UI Auth","help":"Allow Control UI auth over insecure HTTP (token-only; not recommended)."},"gateway.http.endpoints.chatCompletions.enabled":{"label":"OpenAI Chat Completions Endpoint","help":"Enable the OpenAI-compatible `POST /v1/chat/completions` endpoint (default: false)."},"gateway.reload.mode":{"label":"Config Reload Mode","help":"Hot reload strategy for config changes (\"hybrid\" recommended)."},"gateway.reload.debounceMs":{"label":"Config Reload Debounce (ms)","help":"Debounce window (ms) before applying config changes."},"gateway.nodes.browser.mode":{"label":"Gateway Node Browser Mode","help":"Node browser routing (\"auto\" = pick single connected browser node, \"manual\" = require node param, \"off\" = disable)."},"gateway.nodes.browser.node":{"label":"Gateway Node Browser Pin","help":"Pin browser routing to a specific node id or name (optional)."},"gateway.nodes.allowCommands":{"label":"Gateway Node Allowlist (Extra Commands)","help":"Extra node.invoke commands to allow beyond the gateway defaults (array of command strings)."},"gateway.nodes.denyCommands":{"label":"Gateway Node Denylist","help":"Commands to block even if present in node claims or default allowlist."},"nodeHost.browserProxy.enabled":{"label":"Node Browser Proxy Enabled","help":"Expose the local browser control server via node proxy."},"nodeHost.browserProxy.allowProfiles":{"label":"Node Browser Proxy Allowed Profiles","help":"Optional allowlist of browser profile names exposed via the node proxy."},"skills.load.watch":{"label":"Watch Skills"},"skills.load.watchDebounceMs":{"label":"Skills Watch Debounce (ms)"},"agents.defaults.workspace":{"label":"Workspace"},"agents.defaults.repoRoot":{"label":"Repo Root","help":"Optional repository root shown in the system prompt runtime line (overrides auto-detect)."},"agents.defaults.bootstrapMaxChars":{"label":"Bootstrap Max Chars","help":"Max characters of each workspace bootstrap file injected into the system prompt before truncation (default: 20000)."},"agents.defaults.envelopeTimezone":{"label":"Envelope Timezone","help":"Timezone for message envelopes (\"utc\", \"local\", \"user\", or an IANA timezone string)."},"agents.defaults.envelopeTimestamp":{"label":"Envelope Timestamp","help":"Include absolute timestamps in message envelopes (\"on\" or \"off\")."},"agents.defaults.envelopeElapsed":{"label":"Envelope Elapsed","help":"Include elapsed time in message envelopes (\"on\" or \"off\")."},"agents.defaults.memorySearch":{"label":"Memory Search","help":"Vector search over MEMORY.md and memory/*.md (per-agent overrides supported)."},"agents.defaults.memorySearch.enabled":{"label":"Enable Memory Search"},"agents.defaults.memorySearch.sources":{"label":"Memory Search Sources","help":"Sources to index for memory search (default: [\"memory\"]; add \"sessions\" to include session transcripts)."},"agents.defaults.memorySearch.experimental.sessionMemory":{"label":"Memory Search Session Index (Experimental)","help":"Enable experimental session transcript indexing for memory search (default: false)."},"agents.defaults.memorySearch.provider":{"label":"Memory Search Provider","help":"Embedding provider (\"openai\", \"gemini\", or \"local\")."},"agents.defaults.memorySearch.remote.baseUrl":{"label":"Remote Embedding Base URL","help":"Custom base URL for remote embeddings (OpenAI-compatible proxies or Gemini overrides)."},"agents.defaults.memorySearch.remote.apiKey":{"label":"Remote Embedding API Key","help":"Custom API key for the remote embedding provider.","sensitive":true},"agents.defaults.memorySearch.remote.headers":{"label":"Remote Embedding Headers","help":"Extra headers for remote embeddings (merged; remote overrides OpenAI headers)."},"agents.defaults.memorySearch.remote.batch.concurrency":{"label":"Remote Batch Concurrency","help":"Max concurrent embedding batch jobs for memory indexing (default: 2)."},"agents.defaults.memorySearch.model":{"label":"Memory Search Model"},"agents.defaults.memorySearch.fallback":{"label":"Memory Search Fallback","help":"Fallback provider when embeddings fail (\"openai\", \"gemini\", \"local\", or \"none\")."},"agents.defaults.memorySearch.local.modelPath":{"label":"Local Embedding Model Path","help":"Local GGUF model path or hf: URI (node-llama-cpp)."},"agents.defaults.memorySearch.store.path":{"label":"Memory Search Index Path","help":"SQLite index path (default: ~/.clawdbot/memory/{agentId}.sqlite)."},"agents.defaults.memorySearch.store.vector.enabled":{"label":"Memory Search Vector Index","help":"Enable sqlite-vec extension for vector search (default: true)."},"agents.defaults.memorySearch.store.vector.extensionPath":{"label":"Memory Search Vector Extension Path","help":"Optional override path to sqlite-vec extension library (.dylib/.so/.dll)."},"agents.defaults.memorySearch.chunking.tokens":{"label":"Memory Chunk Tokens","sensitive":true},"agents.defaults.memorySearch.chunking.overlap":{"label":"Memory Chunk Overlap Tokens"},"agents.defaults.memorySearch.sync.onSessionStart":{"label":"Index on Session Start"},"agents.defaults.memorySearch.sync.onSearch":{"label":"Index on Search (Lazy)","help":"Lazy sync: schedule a reindex on search after changes."},"agents.defaults.memorySearch.sync.watch":{"label":"Watch Memory Files","help":"Watch memory files for changes (chokidar)."},"agents.defaults.memorySearch.sync.watchDebounceMs":{"label":"Memory Watch Debounce (ms)"},"agents.defaults.memorySearch.sync.sessions.deltaBytes":{"label":"Session Delta Bytes","help":"Minimum appended bytes before session transcripts trigger reindex (default: 100000)."},"agents.defaults.memorySearch.sync.sessions.deltaMessages":{"label":"Session Delta Messages","help":"Minimum appended JSONL lines before session transcripts trigger reindex (default: 50)."},"agents.defaults.memorySearch.query.maxResults":{"label":"Memory Search Max Results"},"agents.defaults.memorySearch.query.minScore":{"label":"Memory Search Min Score"},"agents.defaults.memorySearch.query.hybrid.enabled":{"label":"Memory Search Hybrid","help":"Enable hybrid BM25 + vector search for memory (default: true)."},"agents.defaults.memorySearch.query.hybrid.vectorWeight":{"label":"Memory Search Vector Weight","help":"Weight for vector similarity when merging results (0-1)."},"agents.defaults.memorySearch.query.hybrid.textWeight":{"label":"Memory Search Text Weight","help":"Weight for BM25 text relevance when merging results (0-1)."},"agents.defaults.memorySearch.query.hybrid.candidateMultiplier":{"label":"Memory Search Hybrid Candidate Multiplier","help":"Multiplier for candidate pool size (default: 4)."},"agents.defaults.memorySearch.cache.enabled":{"label":"Memory Search Embedding Cache","help":"Cache chunk embeddings in SQLite to speed up reindexing and frequent updates (default: true)."},"agents.defaults.memorySearch.cache.maxEntries":{"label":"Memory Search Embedding Cache Max Entries","help":"Optional cap on cached embeddings (best-effort)."},"auth.profiles":{"label":"Auth Profiles","help":"Named auth profiles (provider + mode + optional email)."},"auth.order":{"label":"Auth Profile Order","help":"Ordered auth profile IDs per provider (used for automatic failover)."},"auth.cooldowns.billingBackoffHours":{"label":"Billing Backoff (hours)","help":"Base backoff (hours) when a profile fails due to billing/insufficient credits (default: 5)."},"auth.cooldowns.billingBackoffHoursByProvider":{"label":"Billing Backoff Overrides","help":"Optional per-provider overrides for billing backoff (hours)."},"auth.cooldowns.billingMaxHours":{"label":"Billing Backoff Cap (hours)","help":"Cap (hours) for billing backoff (default: 24)."},"auth.cooldowns.failureWindowHours":{"label":"Failover Window (hours)","help":"Failure window (hours) for backoff counters (default: 24)."},"agents.defaults.models":{"label":"Models","help":"Configured model catalog (keys are full provider/model IDs)."},"agents.defaults.model.primary":{"label":"Primary Model","help":"Primary model (provider/model)."},"agents.defaults.model.fallbacks":{"label":"Model Fallbacks","help":"Ordered fallback models (provider/model). Used when the primary model fails."},"agents.defaults.imageModel.primary":{"label":"Image Model","help":"Optional image model (provider/model) used when the primary model lacks image input."},"agents.defaults.imageModel.fallbacks":{"label":"Image Model Fallbacks","help":"Ordered fallback image models (provider/model)."},"agents.defaults.humanDelay.mode":{"label":"Human Delay Mode","help":"Delay style for block replies (\"off\", \"natural\", \"custom\")."},"agents.defaults.humanDelay.minMs":{"label":"Human Delay Min (ms)","help":"Minimum delay in ms for custom humanDelay (default: 800)."},"agents.defaults.humanDelay.maxMs":{"label":"Human Delay Max (ms)","help":"Maximum delay in ms for custom humanDelay (default: 2500)."},"agents.defaults.cliBackends":{"label":"CLI Backends","help":"Optional CLI backends for text-only fallback (claude-cli, etc.)."},"commands.native":{"label":"Native Commands","help":"Register native commands with channels that support it (Discord/Slack/Telegram)."},"commands.nativeSkills":{"label":"Native Skill Commands","help":"Register native skill commands (user-invocable skills) with channels that support it."},"commands.text":{"label":"Text Commands","help":"Allow text command parsing (slash commands only)."},"commands.bash":{"label":"Allow Bash Chat Command","help":"Allow bash chat command (`!`; `/bash` alias) to run host shell commands (default: false; requires tools.elevated)."},"commands.bashForegroundMs":{"label":"Bash Foreground Window (ms)","help":"How long bash waits before backgrounding (default: 2000; 0 backgrounds immediately)."},"commands.config":{"label":"Allow /config","help":"Allow /config chat command to read/write config on disk (default: false)."},"commands.debug":{"label":"Allow /debug","help":"Allow /debug chat command for runtime-only overrides (default: false)."},"commands.restart":{"label":"Allow Restart","help":"Allow /restart and gateway restart tool actions (default: false)."},"commands.useAccessGroups":{"label":"Use Access Groups","help":"Enforce access-group allowlists/policies for commands."},"ui.seamColor":{"label":"Accent Color"},"ui.assistant.name":{"label":"Assistant Name"},"ui.assistant.avatar":{"label":"Assistant Avatar"},"browser.controlUrl":{"label":"Browser Control URL"},"browser.snapshotDefaults":{"label":"Browser Snapshot Defaults"},"browser.snapshotDefaults.mode":{"label":"Browser Snapshot Mode"},"browser.remoteCdpTimeoutMs":{"label":"Remote CDP Timeout (ms)"},"browser.remoteCdpHandshakeTimeoutMs":{"label":"Remote CDP Handshake Timeout (ms)"},"session.dmScope":{"label":"DM Session Scope","help":"DM session scoping: \"main\" keeps continuity; \"per-peer\" or \"per-channel-peer\" isolates DM history (recommended for shared inboxes)."},"session.agentToAgent.maxPingPongTurns":{"label":"Agent-to-Agent Ping-Pong Turns","help":"Max reply-back turns between requester and target (05)."},"messages.ackReaction":{"label":"Ack Reaction Emoji","help":"Emoji reaction used to acknowledge inbound messages (empty disables)."},"messages.ackReactionScope":{"label":"Ack Reaction Scope","help":"When to send ack reactions (\"group-mentions\", \"group-all\", \"direct\", \"all\")."},"messages.inbound.debounceMs":{"label":"Inbound Message Debounce (ms)","help":"Debounce window (ms) for batching rapid inbound messages from the same sender (0 to disable)."},"talk.apiKey":{"label":"Talk API Key","sensitive":true},"channels.whatsapp":{"label":"WhatsApp"},"channels.telegram":{"label":"Telegram","help":"simplest way to get started — register a bot with @BotFather and get going."},"channels.telegram.customCommands":{"label":"Telegram Custom Commands","help":"Additional Telegram bot menu commands (merged with native; conflicts ignored)."},"channels.discord":{"label":"Discord"},"channels.slack":{"label":"Slack"},"channels.mattermost":{"label":"Mattermost"},"channels.signal":{"label":"Signal"},"channels.imessage":{"label":"iMessage"},"channels.bluebubbles":{"label":"BlueBubbles"},"channels.msteams":{"label":"MS Teams"},"channels.telegram.botToken":{"label":"Telegram Bot Token","sensitive":true},"channels.telegram.dmPolicy":{"label":"Telegram DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.telegram.allowFrom=[\"*\"]."},"channels.telegram.streamMode":{"label":"Telegram Draft Stream Mode","help":"Draft streaming mode for Telegram replies (off | partial | block). Separate from block streaming; requires private topics + sendMessageDraft."},"channels.telegram.draftChunk.minChars":{"label":"Telegram Draft Chunk Min Chars","help":"Minimum chars before emitting a Telegram draft update when channels.telegram.streamMode=\"block\" (default: 200)."},"channels.telegram.draftChunk.maxChars":{"label":"Telegram Draft Chunk Max Chars","help":"Target max size for a Telegram draft update chunk when channels.telegram.streamMode=\"block\" (default: 800; clamped to channels.telegram.textChunkLimit)."},"channels.telegram.draftChunk.breakPreference":{"label":"Telegram Draft Chunk Break Preference","help":"Preferred breakpoints for Telegram draft chunks (paragraph | newline | sentence). Default: paragraph."},"channels.telegram.retry.attempts":{"label":"Telegram Retry Attempts","help":"Max retry attempts for outbound Telegram API calls (default: 3)."},"channels.telegram.retry.minDelayMs":{"label":"Telegram Retry Min Delay (ms)","help":"Minimum retry delay in ms for Telegram outbound calls."},"channels.telegram.retry.maxDelayMs":{"label":"Telegram Retry Max Delay (ms)","help":"Maximum retry delay cap in ms for Telegram outbound calls."},"channels.telegram.retry.jitter":{"label":"Telegram Retry Jitter","help":"Jitter factor (0-1) applied to Telegram retry delays."},"channels.telegram.timeoutSeconds":{"label":"Telegram API Timeout (seconds)","help":"Max seconds before Telegram API requests are aborted (default: 500 per grammY)."},"channels.telegram.capabilities.inlineButtons":{"label":"Telegram Inline Buttons"},"channels.whatsapp.dmPolicy":{"label":"WhatsApp DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.whatsapp.allowFrom=[\"*\"]."},"channels.whatsapp.selfChatMode":{"label":"WhatsApp Self-Phone Mode","help":"Same-phone setup (bot uses your personal WhatsApp number)."},"channels.whatsapp.debounceMs":{"label":"WhatsApp Message Debounce (ms)","help":"Debounce window (ms) for batching rapid consecutive messages from the same sender (0 to disable)."},"channels.signal.dmPolicy":{"label":"Signal DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.signal.allowFrom=[\"*\"]."},"channels.imessage.dmPolicy":{"label":"iMessage DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.imessage.allowFrom=[\"*\"]."},"channels.bluebubbles.dmPolicy":{"label":"BlueBubbles DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.bluebubbles.allowFrom=[\"*\"]."},"channels.discord.dm.policy":{"label":"Discord DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.discord.dm.allowFrom=[\"*\"]."},"channels.discord.retry.attempts":{"label":"Discord Retry Attempts","help":"Max retry attempts for outbound Discord API calls (default: 3)."},"channels.discord.retry.minDelayMs":{"label":"Discord Retry Min Delay (ms)","help":"Minimum retry delay in ms for Discord outbound calls."},"channels.discord.retry.maxDelayMs":{"label":"Discord Retry Max Delay (ms)","help":"Maximum retry delay cap in ms for Discord outbound calls."},"channels.discord.retry.jitter":{"label":"Discord Retry Jitter","help":"Jitter factor (0-1) applied to Discord retry delays."},"channels.discord.maxLinesPerMessage":{"label":"Discord Max Lines Per Message","help":"Soft max line count per Discord message (default: 17)."},"channels.slack.dm.policy":{"label":"Slack DM Policy","help":"Direct message access control (\"pairing\" recommended). \"open\" requires channels.slack.dm.allowFrom=[\"*\"]."},"channels.slack.allowBots":{"label":"Slack Allow Bot Messages","help":"Allow bot-authored messages to trigger Slack replies (default: false)."},"channels.discord.token":{"label":"Discord Bot Token","sensitive":true},"channels.slack.botToken":{"label":"Slack Bot Token","sensitive":true},"channels.slack.appToken":{"label":"Slack App Token","sensitive":true},"channels.slack.userToken":{"label":"Slack User Token","sensitive":true},"channels.slack.userTokenReadOnly":{"label":"Slack User Token Read Only","sensitive":true},"channels.slack.thread.historyScope":{"label":"Slack Thread History Scope","help":"Scope for Slack thread history context (\"thread\" isolates per thread; \"channel\" reuses channel history)."},"channels.slack.thread.inheritParent":{"label":"Slack Thread Parent Inheritance","help":"If true, Slack thread sessions inherit the parent channel transcript (default: false)."},"channels.mattermost.botToken":{"label":"Mattermost Bot Token","help":"Bot token from Mattermost System Console -> Integrations -> Bot Accounts.","sensitive":true},"channels.mattermost.baseUrl":{"label":"Mattermost Base URL","help":"Base URL for your Mattermost server (e.g., https://chat.example.com).","placeholder":"https://chat.example.com"},"channels.mattermost.chatmode":{"label":"Mattermost Chat Mode","help":"Reply to channel messages on mention (\"oncall\"), on trigger chars (\">\" or \"!\") (\"onchar\"), or on every message (\"onmessage\")."},"channels.mattermost.oncharPrefixes":{"label":"Mattermost Onchar Prefixes","help":"Trigger prefixes for onchar mode (default: [\">\", \"!\"])."},"channels.mattermost.requireMention":{"label":"Mattermost Require Mention","help":"Require @mention in channels before responding (default: true)."},"channels.signal.account":{"label":"Signal Account"},"channels.imessage.cliPath":{"label":"iMessage CLI Path"},"agents.list[].identity.avatar":{"label":"Agent Avatar","help":"Avatar image path (relative to the agent workspace only) or a remote URL/data URL.","placeholder":"avatars/clawd.png"},"plugins.enabled":{"label":"Enable Plugins","help":"Enable plugin/extension loading (default: true)."},"plugins.allow":{"label":"Plugin Allowlist","help":"Optional allowlist of plugin ids; when set, only listed plugins load."},"plugins.deny":{"label":"Plugin Denylist","help":"Optional denylist of plugin ids; deny wins over allowlist."},"plugins.load.paths":{"label":"Plugin Load Paths","help":"Additional plugin files or directories to load."},"plugins.slots":{"label":"Plugin Slots","help":"Select which plugins own exclusive slots (memory, etc.)."},"plugins.slots.memory":{"label":"Memory Plugin","help":"Select the active memory plugin by id, or \"none\" to disable memory plugins."},"plugins.entries":{"label":"Plugin Entries","help":"Per-plugin settings keyed by plugin id (enable/disable + config payloads)."},"plugins.entries.*.enabled":{"label":"Plugin Enabled","help":"Overrides plugin enable/disable for this entry (restart required)."},"plugins.entries.*.config":{"label":"Plugin Config","help":"Plugin-defined config payload (schema is provided by the plugin)."},"plugins.installs":{"label":"Plugin Install Records","help":"CLI-managed install metadata (used by `clawdbot plugins update` to locate install sources)."},"plugins.installs.*.source":{"label":"Plugin Install Source","help":"Install source (\"npm\", \"archive\", or \"path\")."},"plugins.installs.*.spec":{"label":"Plugin Install Spec","help":"Original npm spec used for install (if source is npm)."},"plugins.installs.*.sourcePath":{"label":"Plugin Install Source Path","help":"Original archive/path used for install (if any)."},"plugins.installs.*.installPath":{"label":"Plugin Install Path","help":"Resolved install directory (usually ~/.clawdbot/extensions/<id>)."},"plugins.installs.*.version":{"label":"Plugin Install Version","help":"Version recorded at install time (if available)."},"plugins.installs.*.installedAt":{"label":"Plugin Install Time","help":"ISO timestamp of last install/update."},"tools.web.search.perplexity.apiKey":{"help":"Perplexity or OpenRouter API key (fallback: PERPLEXITY_API_KEY or OPENROUTER_API_KEY env var).","sensitive":true},"tools.web.search.perplexity.baseUrl":{"help":"Perplexity base URL override (default: https://openrouter.ai/api/v1 or https://api.perplexity.ai)."},"tools.web.search.perplexity.model":{"help":"Perplexity model override (default: \"perplexity/sonar-pro\")."},"tools.web.fetch.readability":{"help":"Use Readability to extract main content from HTML (fallbacks to basic HTML cleanup)."},"tools.web.fetch.firecrawl.enabled":{"help":"Enable Firecrawl fallback for web_fetch (if configured)."},"tools.web.fetch.firecrawl.apiKey":{"help":"Firecrawl API key (fallback: FIRECRAWL_API_KEY env var).","sensitive":true},"tools.web.fetch.firecrawl.baseUrl":{"help":"Firecrawl base URL (e.g. https://api.firecrawl.dev or custom endpoint)."},"tools.web.fetch.firecrawl.onlyMainContent":{"help":"When true, Firecrawl returns only the main content (default: true)."},"tools.web.fetch.firecrawl.maxAgeMs":{"help":"Firecrawl maxAge (ms) for cached results when supported by the API."},"tools.web.fetch.firecrawl.timeoutSeconds":{"help":"Timeout in seconds for Firecrawl requests."},"agents.defaults.memorySearch.remote.batch.enabled":{"help":"Enable batch API for memory embeddings (OpenAI/Gemini; default: true)."},"agents.defaults.memorySearch.remote.batch.wait":{"help":"Wait for batch completion when indexing (default: true)."},"agents.defaults.memorySearch.remote.batch.pollIntervalMs":{"help":"Polling interval in ms for batch status (default: 2000)."},"agents.defaults.memorySearch.remote.batch.timeoutMinutes":{"help":"Timeout in minutes for batch indexing (default: 60)."},"session.identityLinks":{"help":"Map canonical identities to provider-prefixed peer IDs for DM session linking (example: telegram:123456)."},"channels.telegram.configWrites":{"help":"Allow Telegram to write config in response to channel events/commands (default: true)."},"channels.slack.configWrites":{"help":"Allow Slack to write config in response to channel events/commands (default: true)."},"channels.mattermost.configWrites":{"help":"Allow Mattermost to write config in response to channel events/commands (default: true)."},"channels.discord.configWrites":{"help":"Allow Discord to write config in response to channel events/commands (default: true)."},"channels.whatsapp.configWrites":{"help":"Allow WhatsApp to write config in response to channel events/commands (default: true)."},"channels.signal.configWrites":{"help":"Allow Signal to write config in response to channel events/commands (default: true)."},"channels.imessage.configWrites":{"help":"Allow iMessage to write config in response to channel events/commands (default: true)."},"channels.msteams.configWrites":{"help":"Allow Microsoft Teams to write config in response to channel events/commands (default: true)."},"channels.discord.commands.native":{"help":"Override native commands for Discord (bool or \"auto\")."},"channels.discord.commands.nativeSkills":{"help":"Override native skill commands for Discord (bool or \"auto\")."},"channels.telegram.commands.native":{"help":"Override native commands for Telegram (bool or \"auto\")."},"channels.telegram.commands.nativeSkills":{"help":"Override native skill commands for Telegram (bool or \"auto\")."},"channels.slack.commands.native":{"help":"Override native commands for Slack (bool or \"auto\")."},"channels.slack.commands.nativeSkills":{"help":"Override native skill commands for Slack (bool or \"auto\")."},"plugins.entries.bluebubbles":{"label":"@clawdbot/bluebubbles","help":"Clawdbot BlueBubbles channel plugin (plugin: bluebubbles)"},"plugins.entries.bluebubbles.enabled":{"label":"Enable @clawdbot/bluebubbles"},"plugins.entries.bluebubbles.config":{"label":"@clawdbot/bluebubbles Config","help":"Plugin-defined config payload for bluebubbles."},"plugins.entries.copilot-proxy":{"label":"@clawdbot/copilot-proxy","help":"Clawdbot Copilot Proxy provider plugin (plugin: copilot-proxy)"},"plugins.entries.copilot-proxy.enabled":{"label":"Enable @clawdbot/copilot-proxy"},"plugins.entries.copilot-proxy.config":{"label":"@clawdbot/copilot-proxy Config","help":"Plugin-defined config payload for copilot-proxy."},"plugins.entries.diagnostics-otel":{"label":"@clawdbot/diagnostics-otel","help":"Clawdbot diagnostics OpenTelemetry exporter (plugin: diagnostics-otel)"},"plugins.entries.diagnostics-otel.enabled":{"label":"Enable @clawdbot/diagnostics-otel"},"plugins.entries.diagnostics-otel.config":{"label":"@clawdbot/diagnostics-otel Config","help":"Plugin-defined config payload for diagnostics-otel."},"plugins.entries.discord":{"label":"@clawdbot/discord","help":"Clawdbot Discord channel plugin (plugin: discord)"},"plugins.entries.discord.enabled":{"label":"Enable @clawdbot/discord"},"plugins.entries.discord.config":{"label":"@clawdbot/discord Config","help":"Plugin-defined config payload for discord."},"plugins.entries.google-antigravity-auth":{"label":"@clawdbot/google-antigravity-auth","help":"Clawdbot Google Antigravity OAuth provider plugin (plugin: google-antigravity-auth)"},"plugins.entries.google-antigravity-auth.enabled":{"label":"Enable @clawdbot/google-antigravity-auth"},"plugins.entries.google-antigravity-auth.config":{"label":"@clawdbot/google-antigravity-auth Config","help":"Plugin-defined config payload for google-antigravity-auth."},"plugins.entries.google-gemini-cli-auth":{"label":"@clawdbot/google-gemini-cli-auth","help":"Clawdbot Gemini CLI OAuth provider plugin (plugin: google-gemini-cli-auth)"},"plugins.entries.google-gemini-cli-auth.enabled":{"label":"Enable @clawdbot/google-gemini-cli-auth"},"plugins.entries.google-gemini-cli-auth.config":{"label":"@clawdbot/google-gemini-cli-auth Config","help":"Plugin-defined config payload for google-gemini-cli-auth."},"plugins.entries.googlechat":{"label":"@clawdbot/googlechat","help":"Clawdbot Google Chat channel plugin (plugin: googlechat)"},"plugins.entries.googlechat.enabled":{"label":"Enable @clawdbot/googlechat"},"plugins.entries.googlechat.config":{"label":"@clawdbot/googlechat Config","help":"Plugin-defined config payload for googlechat."},"plugins.entries.imessage":{"label":"@clawdbot/imessage","help":"Clawdbot iMessage channel plugin (plugin: imessage)"},"plugins.entries.imessage.enabled":{"label":"Enable @clawdbot/imessage"},"plugins.entries.imessage.config":{"label":"@clawdbot/imessage Config","help":"Plugin-defined config payload for imessage."},"plugins.entries.line":{"label":"@clawdbot/line","help":"Clawdbot LINE channel plugin (plugin: line)"},"plugins.entries.line.enabled":{"label":"Enable @clawdbot/line"},"plugins.entries.line.config":{"label":"@clawdbot/line Config","help":"Plugin-defined config payload for line."},"plugins.entries.llm-task":{"label":"LLM Task","help":"Generic JSON-only LLM tool for structured tasks callable from workflows. (plugin: llm-task)"},"plugins.entries.llm-task.enabled":{"label":"Enable LLM Task"},"plugins.entries.llm-task.config":{"label":"LLM Task Config","help":"Plugin-defined config payload for llm-task."},"plugins.entries.lobster":{"label":"Lobster","help":"Typed workflow tool with resumable approvals. (plugin: lobster)"},"plugins.entries.lobster.enabled":{"label":"Enable Lobster"},"plugins.entries.lobster.config":{"label":"Lobster Config","help":"Plugin-defined config payload for lobster."},"plugins.entries.matrix":{"label":"@clawdbot/matrix","help":"Clawdbot Matrix channel plugin (plugin: matrix)"},"plugins.entries.matrix.enabled":{"label":"Enable @clawdbot/matrix"},"plugins.entries.matrix.config":{"label":"@clawdbot/matrix Config","help":"Plugin-defined config payload for matrix."},"plugins.entries.mattermost":{"label":"@clawdbot/mattermost","help":"Clawdbot Mattermost channel plugin (plugin: mattermost)"},"plugins.entries.mattermost.enabled":{"label":"Enable @clawdbot/mattermost"},"plugins.entries.mattermost.config":{"label":"@clawdbot/mattermost Config","help":"Plugin-defined config payload for mattermost."},"plugins.entries.memory-core":{"label":"Memory (Core)","help":"File-backed memory search tools and CLI (plugin: memory-core)"},"plugins.entries.memory-core.enabled":{"label":"Enable Memory (Core)"},"plugins.entries.memory-core.config":{"label":"Memory (Core) Config","help":"Plugin-defined config payload for memory-core."},"plugins.entries.memory-lancedb":{"label":"@clawdbot/memory-lancedb","help":"Clawdbot LanceDB-backed long-term memory plugin with auto-recall/capture (plugin: memory-lancedb)"},"plugins.entries.memory-lancedb.enabled":{"label":"Enable @clawdbot/memory-lancedb"},"plugins.entries.memory-lancedb.config":{"label":"@clawdbot/memory-lancedb Config","help":"Plugin-defined config payload for memory-lancedb."},"plugins.entries.memory-lancedb.config.embedding.apiKey":{"label":"OpenAI API Key","sensitive":true,"placeholder":"sk-proj-...","help":"API key for OpenAI embeddings (or use ${OPENAI_API_KEY})"},"plugins.entries.memory-lancedb.config.embedding.model":{"label":"Embedding Model","placeholder":"text-embedding-3-small","help":"OpenAI embedding model to use"},"plugins.entries.memory-lancedb.config.dbPath":{"label":"Database Path","placeholder":"~/.clawdbot/memory/lancedb","advanced":true},"plugins.entries.memory-lancedb.config.autoCapture":{"label":"Auto-Capture","help":"Automatically capture important information from conversations"},"plugins.entries.memory-lancedb.config.autoRecall":{"label":"Auto-Recall","help":"Automatically inject relevant memories into context"},"plugins.entries.msteams":{"label":"@clawdbot/msteams","help":"Clawdbot Microsoft Teams channel plugin (plugin: msteams)"},"plugins.entries.msteams.enabled":{"label":"Enable @clawdbot/msteams"},"plugins.entries.msteams.config":{"label":"@clawdbot/msteams Config","help":"Plugin-defined config payload for msteams."},"plugins.entries.nextcloud-talk":{"label":"@clawdbot/nextcloud-talk","help":"Clawdbot Nextcloud Talk channel plugin (plugin: nextcloud-talk)"},"plugins.entries.nextcloud-talk.enabled":{"label":"Enable @clawdbot/nextcloud-talk"},"plugins.entries.nextcloud-talk.config":{"label":"@clawdbot/nextcloud-talk Config","help":"Plugin-defined config payload for nextcloud-talk."},"plugins.entries.nostr":{"label":"@clawdbot/nostr","help":"Clawdbot Nostr channel plugin for NIP-04 encrypted DMs (plugin: nostr)"},"plugins.entries.nostr.enabled":{"label":"Enable @clawdbot/nostr"},"plugins.entries.nostr.config":{"label":"@clawdbot/nostr Config","help":"Plugin-defined config payload for nostr."},"plugins.entries.open-prose":{"label":"OpenProse","help":"OpenProse VM skill pack with a /prose slash command. (plugin: open-prose)"},"plugins.entries.open-prose.enabled":{"label":"Enable OpenProse"},"plugins.entries.open-prose.config":{"label":"OpenProse Config","help":"Plugin-defined config payload for open-prose."},"plugins.entries.qwen-portal-auth":{"label":"qwen-portal-auth","help":"Plugin entry for qwen-portal-auth."},"plugins.entries.qwen-portal-auth.enabled":{"label":"Enable qwen-portal-auth"},"plugins.entries.qwen-portal-auth.config":{"label":"qwen-portal-auth Config","help":"Plugin-defined config payload for qwen-portal-auth."},"plugins.entries.signal":{"label":"@clawdbot/signal","help":"Clawdbot Signal channel plugin (plugin: signal)"},"plugins.entries.signal.enabled":{"label":"Enable @clawdbot/signal"},"plugins.entries.signal.config":{"label":"@clawdbot/signal Config","help":"Plugin-defined config payload for signal."},"plugins.entries.slack":{"label":"@clawdbot/slack","help":"Clawdbot Slack channel plugin (plugin: slack)"},"plugins.entries.slack.enabled":{"label":"Enable @clawdbot/slack"},"plugins.entries.slack.config":{"label":"@clawdbot/slack Config","help":"Plugin-defined config payload for slack."},"plugins.entries.telegram":{"label":"Telegram","help":"Telegram channel plugin (plugin: telegram)"},"plugins.entries.telegram.enabled":{"label":"Enable Telegram"},"plugins.entries.telegram.config":{"label":"Telegram Config","help":"Plugin-defined config payload for telegram."},"plugins.entries.tlon":{"label":"@clawdbot/tlon","help":"Clawdbot Tlon/Urbit channel plugin (plugin: tlon)"},"plugins.entries.tlon.enabled":{"label":"Enable @clawdbot/tlon"},"plugins.entries.tlon.config":{"label":"@clawdbot/tlon Config","help":"Plugin-defined config payload for tlon."},"plugins.entries.voice-call":{"label":"@clawdbot/voice-call","help":"Clawdbot voice-call plugin (plugin: voice-call)"},"plugins.entries.voice-call.enabled":{"label":"Enable @clawdbot/voice-call"},"plugins.entries.voice-call.config":{"label":"@clawdbot/voice-call Config","help":"Plugin-defined config payload for voice-call."},"plugins.entries.voice-call.config.provider":{"label":"Provider","help":"Use twilio, telnyx, or mock for dev/no-network."},"plugins.entries.voice-call.config.fromNumber":{"label":"From Number","placeholder":"+15550001234"},"plugins.entries.voice-call.config.toNumber":{"label":"Default To Number","placeholder":"+15550001234"},"plugins.entries.voice-call.config.inboundPolicy":{"label":"Inbound Policy"},"plugins.entries.voice-call.config.allowFrom":{"label":"Inbound Allowlist"},"plugins.entries.voice-call.config.inboundGreeting":{"label":"Inbound Greeting","advanced":true},"plugins.entries.voice-call.config.telnyx.apiKey":{"label":"Telnyx API Key","sensitive":true},"plugins.entries.voice-call.config.telnyx.connectionId":{"label":"Telnyx Connection ID"},"plugins.entries.voice-call.config.telnyx.publicKey":{"label":"Telnyx Public Key","sensitive":true},"plugins.entries.voice-call.config.twilio.accountSid":{"label":"Twilio Account SID"},"plugins.entries.voice-call.config.twilio.authToken":{"label":"Twilio Auth Token","sensitive":true},"plugins.entries.voice-call.config.outbound.defaultMode":{"label":"Default Call Mode"},"plugins.entries.voice-call.config.outbound.notifyHangupDelaySec":{"label":"Notify Hangup Delay (sec)","advanced":true},"plugins.entries.voice-call.config.serve.port":{"label":"Webhook Port"},"plugins.entries.voice-call.config.serve.bind":{"label":"Webhook Bind"},"plugins.entries.voice-call.config.serve.path":{"label":"Webhook Path"},"plugins.entries.voice-call.config.tailscale.mode":{"label":"Tailscale Mode","advanced":true},"plugins.entries.voice-call.config.tailscale.path":{"label":"Tailscale Path","advanced":true},"plugins.entries.voice-call.config.tunnel.provider":{"label":"Tunnel Provider","advanced":true},"plugins.entries.voice-call.config.tunnel.ngrokAuthToken":{"label":"ngrok Auth Token","sensitive":true,"advanced":true},"plugins.entries.voice-call.config.tunnel.ngrokDomain":{"label":"ngrok Domain","advanced":true},"plugins.entries.voice-call.config.tunnel.allowNgrokFreeTier":{"label":"Allow ngrok Free Tier","advanced":true},"plugins.entries.voice-call.config.streaming.enabled":{"label":"Enable Streaming","advanced":true},"plugins.entries.voice-call.config.streaming.openaiApiKey":{"label":"OpenAI Realtime API Key","sensitive":true,"advanced":true},"plugins.entries.voice-call.config.streaming.sttModel":{"label":"Realtime STT Model","advanced":true},"plugins.entries.voice-call.config.streaming.streamPath":{"label":"Media Stream Path","advanced":true},"plugins.entries.voice-call.config.tts.provider":{"label":"TTS Provider Override","help":"Deep-merges with messages.tts (Edge is ignored for calls).","advanced":true},"plugins.entries.voice-call.config.tts.openai.model":{"label":"OpenAI TTS Model","advanced":true},"plugins.entries.voice-call.config.tts.openai.voice":{"label":"OpenAI TTS Voice","advanced":true},"plugins.entries.voice-call.config.tts.openai.apiKey":{"label":"OpenAI API Key","sensitive":true,"advanced":true},"plugins.entries.voice-call.config.tts.elevenlabs.modelId":{"label":"ElevenLabs Model ID","advanced":true},"plugins.entries.voice-call.config.tts.elevenlabs.voiceId":{"label":"ElevenLabs Voice ID","advanced":true},"plugins.entries.voice-call.config.tts.elevenlabs.apiKey":{"label":"ElevenLabs API Key","sensitive":true,"advanced":true},"plugins.entries.voice-call.config.tts.elevenlabs.baseUrl":{"label":"ElevenLabs Base URL","advanced":true},"plugins.entries.voice-call.config.publicUrl":{"label":"Public Webhook URL","advanced":true},"plugins.entries.voice-call.config.skipSignatureVerification":{"label":"Skip Signature Verification","advanced":true},"plugins.entries.voice-call.config.store":{"label":"Call Log Store Path","advanced":true},"plugins.entries.voice-call.config.responseModel":{"label":"Response Model","advanced":true},"plugins.entries.voice-call.config.responseSystemPrompt":{"label":"Response System Prompt","advanced":true},"plugins.entries.voice-call.config.responseTimeoutMs":{"label":"Response Timeout (ms)","advanced":true},"plugins.entries.whatsapp":{"label":"@clawdbot/whatsapp","help":"Clawdbot WhatsApp channel plugin (plugin: whatsapp)"},"plugins.entries.whatsapp.enabled":{"label":"Enable @clawdbot/whatsapp"},"plugins.entries.whatsapp.config":{"label":"@clawdbot/whatsapp Config","help":"Plugin-defined config payload for whatsapp."},"plugins.entries.zalo":{"label":"@clawdbot/zalo","help":"Clawdbot Zalo channel plugin (plugin: zalo)"},"plugins.entries.zalo.enabled":{"label":"Enable @clawdbot/zalo"},"plugins.entries.zalo.config":{"label":"@clawdbot/zalo Config","help":"Plugin-defined config payload for zalo."},"plugins.entries.zalouser":{"label":"@clawdbot/zalouser","help":"Clawdbot Zalo Personal Account plugin via zca-cli (plugin: zalouser)"},"plugins.entries.zalouser.enabled":{"label":"Enable @clawdbot/zalouser"},"plugins.entries.zalouser.config":{"label":"@clawdbot/zalouser Config","help":"Plugin-defined config payload for zalouser."},"agents.defaults.heartbeat.target":{"help":"Delivery target (\"last\", \"none\", or a channel id). Known channels: telegram, whatsapp, discord, googlechat, slack, signal, imessage.","placeholder":"last"},"agents.list.*.heartbeat.target":{"help":"Delivery target (\"last\", \"none\", or a channel id). Known channels: telegram, whatsapp, discord, googlechat, slack, signal, imessage.","placeholder":"last"}},"version":"2026.1.24-3","generatedAt":"2026-01-30T00:22:59.256Z"}},"isError":false,"timestamp":1769734111981}}
{"type":"message","id":"3ff664e9","parentId":"3c87748f","timestamp":"2026-01-30T00:48:35.171Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"gateway_1769734115150_8","name":"gateway","arguments":{"reason":"Enable Telegram channel for 大哥 (ID: 977408090). Using 'allowFrom' instead of 'allowedUsers' based on config schema.","raw":"{\"channels\": {\"telegram\": {\"enabled\": true, \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\", \"allowFrom\": [\"977408090\"]}}}","action":"config.patch"},"thoughtSignature":"EjQKMgFyyNp8vVECK5J4OUcvIjCl2CdxCxdv7Omx9c8gJVhu42/Lnguhl1RRs1SEl6hTcQXR"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":87726,"output":129,"cacheRead":0,"cacheWrite":0,"totalTokens":87855,"cost":{"input":0.043863,"output":0.00038700000000000003,"cacheRead":0,"cacheWrite":0,"total":0.04425}},"stopReason":"toolUse","timestamp":1769734112024}}
{"type":"message","id":"887dcd38","parentId":"3ff664e9","timestamp":"2026-01-30T00:48:35.281Z","message":{"role":"toolResult","toolCallId":"gateway_1769734115150_8","toolName":"gateway","content":[{"type":"text","text":"{\n \"ok\": true,\n \"result\": {\n \"ok\": true,\n \"path\": \"/home/node/.clawdbot/clawdbot.json\",\n \"config\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T00:39:00.370Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs\",\n \"allowFrom\": [\n \"977408090\"\n ],\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n },\n \"restart\": {\n \"ok\": true,\n \"pid\": 148,\n \"signal\": \"SIGUSR1\",\n \"delayMs\": 2000,\n \"reason\": \"config.patch\",\n \"mode\": \"emit\"\n },\n \"sentinel\": {\n \"path\": \"/home/node/.clawdbot/restart-sentinel.json\",\n \"payload\": {\n \"kind\": \"config-apply\",\n \"status\": \"ok\",\n \"ts\": 1769734115253,\n \"sessionKey\": \"agent:main:main\",\n \"message\": null,\n \"doctorHint\": \"Run: clawdbot doctor --non-interactive\",\n \"stats\": {\n \"mode\": \"config.patch\",\n \"root\": \"/home/node/.clawdbot/clawdbot.json\"\n }\n }\n }\n }\n}"}],"details":{"ok":true,"result":{"ok":true,"path":"/home/node/.clawdbot/clawdbot.json","config":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T00:39:00.370Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7750955152:AAGVQcWDL7iYDPpVWnreuFA3pBzB2nksoEs","allowFrom":["977408090"],"groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}}},"restart":{"ok":true,"pid":148,"signal":"SIGUSR1","delayMs":2000,"reason":"config.patch","mode":"emit"},"sentinel":{"path":"/home/node/.clawdbot/restart-sentinel.json","payload":{"kind":"config-apply","status":"ok","ts":1769734115253,"sessionKey":"agent:main:main","message":null,"doctorHint":"Run: clawdbot doctor --non-interactive","stats":{"mode":"config.patch","root":"/home/node/.clawdbot/clawdbot.json"}}}}},"isError":false,"timestamp":1769734115264}}
{"type":"message","id":"cefa718c","parentId":"887dcd38","timestamp":"2026-01-30T02:04:19.157Z","message":{"role":"user","content":[{"type":"text","text":"grant telegram access for user 977408090, the pairing code is QFH5MPHP\n[message_id: a05c4650-fd94-4056-baee-68b119a66682]"}],"timestamp":1769738659070}}
{"type":"message","id":"6685eb03","parentId":"cefa718c","timestamp":"2026-01-30T02:04:23.270Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"exec_1769738662970_1","name":"exec","arguments":{"command":"clawdbot pair QFH5MPHP --channel telegram --id 977408090"},"thoughtSignature":"EjQKMgFyyNp8pMkSKQqI/n4JdJYyXDPSwVLijeAVaRhLTYtdV4fXPuSfy/Gxwmkk0ZlMFZBq"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":89182,"output":37,"cacheRead":0,"cacheWrite":0,"totalTokens":89219,"cost":{"input":0.044591,"output":0.000111,"cacheRead":0,"cacheWrite":0,"total":0.044702}},"stopReason":"toolUse","timestamp":1769738659144}}
{"type":"message","id":"a8696539","parentId":"6685eb03","timestamp":"2026-01-30T02:04:29.359Z","message":{"role":"toolResult","toolCallId":"exec_1769738662970_1","toolName":"exec","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"exec\",\n \"error\": \"error: unknown command 'pair'\\n(Did you mean pairing?)\\n\\nCommand exited with code 1\"\n}"}],"details":{"status":"error","tool":"exec","error":"error: unknown command 'pair'\n(Did you mean pairing?)\n\nCommand exited with code 1"},"isError":false,"timestamp":1769738669317}}
{"type":"message","id":"59d777a6","parentId":"a8696539","timestamp":"2026-01-30T02:04:31.345Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"exec_1769738671323_2","name":"exec","arguments":{"command":"clawdbot pairing QFH5MPHP --channel telegram --id 977408090"},"thoughtSignature":"EjQKMgFyyNp83+6aQVBZnEGJ92JbUYCD9l6GwAmEcPy7KTndxYr8B00KaAFqUJoL8n7ZJFPA"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":89280,"output":37,"cacheRead":81719,"cacheWrite":0,"totalTokens":89317,"cost":{"input":0.04464,"output":0.000111,"cacheRead":0.0040859500000000005,"cacheWrite":0,"total":0.04883695}},"stopReason":"toolUse","timestamp":1769738669360}}
{"type":"message","id":"d557a351","parentId":"59d777a6","timestamp":"2026-01-30T02:04:37.423Z","message":{"role":"toolResult","toolCallId":"exec_1769738671323_2","toolName":"exec","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"exec\",\n \"error\": \"error: unknown command 'QFH5MPHP'\\n\\nCommand exited with code 1\"\n}"}],"details":{"status":"error","tool":"exec","error":"error: unknown command 'QFH5MPHP'\n\nCommand exited with code 1"},"isError":false,"timestamp":1769738677403}}
{"type":"message","id":"fb8c9ae0","parentId":"d557a351","timestamp":"2026-01-30T02:04:38.187Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738677424,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 21.858375202s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"21s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"58f547bf","parentId":"fb8c9ae0","timestamp":"2026-01-30T02:04:40.732Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738680270,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 19.30994572s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"19s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"27174a6d","parentId":"58f547bf","timestamp":"2026-01-30T02:04:45.386Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738684787,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 14.656525382s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"14s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"5d871946","parentId":"27174a6d","timestamp":"2026-01-30T02:04:54.065Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738693448,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 5.977582531s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"5s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"6bf784e1","parentId":"5d871946","timestamp":"2026-01-30T02:05:52.447Z","message":{"role":"user","content":[{"type":"text","text":"[Telegram Junv (@wooha) id:977408090 +17s 2026-01-30 02:05 UTC] 我是你的大哥哦\n[message_id: 10]"}],"timestamp":1769738752421}}
{"type":"message","id":"bfbf1804","parentId":"6bf784e1","timestamp":"2026-01-30T02:05:55.985Z","message":{"role":"assistant","content":[{"type":"text","text":"大哥,收到!我已经看到你在 Telegram 上给我发的消息了,我们的连接已经正式建立啦!😊\n\n以后你可以随时在 Telegram 上找我,不管是问天气、记账、聊聊天还是让我帮你处理文件,我都会在那里守候着你。\n\n墨尔本现在的天气怎么样?有没有什么我能帮你的?","textSignature":"EjQKMgFyyNp8oiiqtFiw2KyFfOiHVZB1kl7Wwn6J80IPBMVFbeIkmAVoBUE+gQoERxCoqOTT"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":89504,"output":70,"cacheRead":0,"cacheWrite":0,"totalTokens":89574,"cost":{"input":0.044752,"output":0.00021,"cacheRead":0,"cacheWrite":0,"total":0.044962}},"stopReason":"stop","timestamp":1769738752442}}
{"type":"message","id":"dd592bce","parentId":"bfbf1804","timestamp":"2026-01-30T02:06:08.342Z","message":{"role":"user","content":[{"type":"text","text":"[Telegram Junv (@wooha) id:977408090 +10s 2026-01-30 02:06 UTC] 今天墨尔本天气如何\n[message_id: 12]"}],"timestamp":1769738768304}}
{"type":"message","id":"9e4f5f32","parentId":"dd592bce","timestamp":"2026-01-30T02:06:10.812Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"read_1769738770797_3","name":"read","arguments":{"path":"/usr/local/lib/node_modules/clawdbot/skills/weather/SKILL.md"},"thoughtSignature":"EjQKMgFyyNp8RgrqUqW4pB/tDNGepzE/+H/B/F+YKzpnc5DfPiwIaBFeDH0dzkv/kWtwXbk5"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":89634,"output":36,"cacheRead":81703,"cacheWrite":0,"totalTokens":89670,"cost":{"input":0.044816999999999996,"output":0.000108,"cacheRead":0.00408515,"cacheWrite":0,"total":0.049010149999999995}},"stopReason":"toolUse","timestamp":1769738768336}}
{"type":"message","id":"5bef1f5a","parentId":"9e4f5f32","timestamp":"2026-01-30T02:06:10.859Z","message":{"role":"toolResult","toolCallId":"read_1769738770797_3","toolName":"read","content":[{"type":"text","text":"---\nname: weather\ndescription: Get current weather and forecasts (no API key required).\nhomepage: https://wttr.in/:help\nmetadata: {\"clawdbot\":{\"emoji\":\"🌤️\",\"requires\":{\"bins\":[\"curl\"]}}}\n---\n\n# Weather\n\nTwo free services, no API keys needed.\n\n## wttr.in (primary)\n\nQuick one-liner:\n```bash\ncurl -s \"wttr.in/London?format=3\"\n# Output: London: ⛅️ +8°C\n```\n\nCompact format:\n```bash\ncurl -s \"wttr.in/London?format=%l:+%c+%t+%h+%w\"\n# Output: London: ⛅️ +8°C 71% ↙5km/h\n```\n\nFull forecast:\n```bash\ncurl -s \"wttr.in/London?T\"\n```\n\nFormat codes: `%c` condition · `%t` temp · `%h` humidity · `%w` wind · `%l` location · `%m` moon\n\nTips:\n- URL-encode spaces: `wttr.in/New+York`\n- Airport codes: `wttr.in/JFK`\n- Units: `?m` (metric) `?u` (USCS)\n- Today only: `?1` · Current only: `?0`\n- PNG: `curl -s \"wttr.in/Berlin.png\" -o /tmp/weather.png`\n\n## Open-Meteo (fallback, JSON)\n\nFree, no key, good for programmatic use:\n```bash\ncurl -s \"https://api.open-meteo.com/v1/forecast?latitude=51.5&longitude=-0.12&current_weather=true\"\n```\n\nFind coordinates for a city, then query. Returns JSON with temp, windspeed, weathercode.\n\nDocs: https://open-meteo.com/en/docs\n"}],"isError":false,"timestamp":1769738770838}}
{"type":"message","id":"ee7daee5","parentId":"5bef1f5a","timestamp":"2026-01-30T02:06:11.491Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738770859,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 48.55151848s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"48s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"e0e71972","parentId":"ee7daee5","timestamp":"2026-01-30T02:06:14.064Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738773570,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 45.983208095s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"45s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"40b50f3a","parentId":"e0e71972","timestamp":"2026-01-30T02:06:18.707Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738778124,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 41.335675192s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"model\\\": \\\"gemini-3-flash\\\",\\n \\\"location\\\": \\\"global\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"41s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"747106ab","parentId":"40b50f3a","timestamp":"2026-01-30T02:06:29.136Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"exec_1769738789104_4","name":"exec","arguments":{"command":"curl -s \"wttr.in/Oakleigh+South,Melbourne?format=%l:+%c+%t+Humidity:%h+Wind:%w&m\""},"thoughtSignature":"EjQKMgFyyNp86GbGuv9iF3jAUr9ZAP/FXOnfu6aRe719PvIrBNB8ZRNeoU13unFSsqqAQKRL"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":90111,"output":48,"cacheRead":81695,"cacheWrite":0,"totalTokens":90159,"cost":{"input":0.0450555,"output":0.000144,"cacheRead":0.004084750000000001,"cacheWrite":0,"total":0.049284249999999995}},"stopReason":"toolUse","timestamp":1769738786763}}
{"type":"message","id":"d585e1db","parentId":"747106ab","timestamp":"2026-01-30T02:06:30.322Z","message":{"role":"toolResult","toolCallId":"exec_1769738789104_4","toolName":"exec","content":[{"type":"text","text":"Oakleigh+South,Melbourne: ☀️ +28°C Humidity:51% Wind:↗11km/h"}],"details":{"status":"completed","exitCode":0,"durationMs":1172,"aggregated":"Oakleigh+South,Melbourne: ☀️ +28°C Humidity:51% Wind:↗11km/h","cwd":"/home/node/clawd"},"isError":false,"timestamp":1769738790291}}
{"type":"message","id":"c7bd732e","parentId":"d585e1db","timestamp":"2026-01-30T02:06:32.620Z","message":{"role":"assistant","content":[{"type":"text","text":"大哥,墨尔本 Oakleigh South 今天的天气非常棒!☀️ \n\n目前气温大约是 **28°C**,湿度 51%,吹着 11km/h 的东北偏北风。\n\n是个阳光明媚的好天气,如果出门的话记得注意防晒哦!😊","textSignature":"EjQKMgFyyNp81KniLpVmRytmSlsuYlsSgsvoqHjX+mmy2zjduncmbiHdKM217nH291oJoFK7"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":90198,"output":66,"cacheRead":89854,"cacheWrite":0,"totalTokens":90264,"cost":{"input":0.045099,"output":0.00019800000000000002,"cacheRead":0.0044927000000000005,"cacheWrite":0,"total":0.0497897}},"stopReason":"stop","timestamp":1769738790323}}
{"type":"message","id":"9f86ff0b","parentId":"c7bd732e","timestamp":"2026-01-30T02:07:04.492Z","message":{"role":"user","content":[{"type":"text","text":"[Telegram Junv (@wooha) id:977408090 +30s 2026-01-30 02:07 UTC] 搜索下今天澳网的比赛\n[message_id: 14]"}],"timestamp":1769738824459}}
{"type":"message","id":"96a90696","parentId":"9f86ff0b","timestamp":"2026-01-30T02:07:05.264Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738824486,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 54.781385713s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"model\\\": \\\"gemini-3-flash\\\",\\n \\\"location\\\": \\\"global\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"54s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"43e8b5e7","parentId":"96a90696","timestamp":"2026-01-30T02:07:07.802Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738827328,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 52.240159805s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"52s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"7ea952ce","parentId":"43e8b5e7","timestamp":"2026-01-30T02:07:12.450Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738831868,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 47.592690663s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"47s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"a14da586","parentId":"7ea952ce","timestamp":"2026-01-30T02:07:22.717Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"web_search_1769738842698_5","name":"web_search","arguments":{"query":"Australian Open 2026 schedule results today January 30"},"thoughtSignature":"EjQKMgFyyNp8tphe3LG8ZeqQY2gvLk9zJjN30SB21rfTf5deUyQFEdl/EqLyqqGE4zlFwEx8"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":90326,"output":29,"cacheRead":81686,"cacheWrite":0,"totalTokens":90355,"cost":{"input":0.045162999999999995,"output":0.000087,"cacheRead":0.004084300000000001,"cacheWrite":0,"total":0.04933429999999999}},"stopReason":"toolUse","timestamp":1769738840506}}
{"type":"message","id":"a73ef648","parentId":"a14da586","timestamp":"2026-01-30T02:07:23.745Z","message":{"role":"toolResult","toolCallId":"web_search_1769738842698_5","toolName":"web_search","content":[{"type":"text","text":"{\n \"query\": \"Australian Open 2026 schedule results today January 30\",\n \"provider\": \"brave\",\n \"count\": 5,\n \"tookMs\": 999,\n \"results\": [\n {\n \"title\": \"Match Schedule | AO\",\n \"url\": \"https://ausopen.com/schedule\",\n \"description\": \"Thanks for visiting the Australian Open Website. We can see youre using Internet Explorer, and wanted to let you know that we will no longer be supporting this browser in future. Wed recommend you download a new browser if you&#x27;d like to continue keeping up with all of the latest tennis ...\",\n \"siteName\": \"ausopen.com\"\n },\n {\n \"title\": \"Australian Open 2026 schedule, draw, results, order of play - BBC Sport\",\n \"url\": \"https://www.bbc.com/sport/tennis/articles/cn42q0yjylno\",\n \"description\": \"30 January: <strong>Men&#x27;s singles semi-finals, mixed doubles final, wheelchair singles semi-finals and doubles finals</strong>\",\n \"published\": \"13 hours ago\",\n \"siteName\": \"www.bbc.com\"\n },\n {\n \"title\": \"Australian Open LIVE, Scores, schedule, results, updates for AO tennis 2026 | Sporting News\",\n \"url\": \"https://www.sportingnews.com/us/tennis/news/australian-open-live-schedule-results-scores-updates-ao-tennis-2026/3fbaef2a7ae994ec8793c0e7\",\n \"description\": \"Everything you need to be across what&#x27;s happening at Melbourne Park.\",\n \"published\": \"14 hours ago\",\n \"siteName\": \"www.sportingnews.com\"\n },\n {\n \"title\": \"Australian Open | Daily Schedule | ATP Tour | Tennis\",\n \"url\": \"https://www.atptour.com/en/scores/current/australian-open/580/daily-schedule\",\n \"description\": \"Australia | 18 Jan - 1 Feb, 2026 · Live · Results · Schedule · Draws · Seeds · Day 20 · Day 19 Day · Use Local Time Zone Switch · Print · Refresh · Rod Laver Arena Starts at 2:30 PM · SF · SF · C. Alcaraz · (1) Vs · (3) A. Zverev · ––– H2H ·\",\n \"siteName\": \"www.atptour.com\"\n },\n {\n \"title\": \"Australian Open 2026 - Schedule, Results & Draws | TNT Sports\",\n \"url\": \"https://www.tntsports.co.uk/tennis/australian-open/2026/calendar-results.shtml\",\n \"description\": \"Get the full Australian Open 2026 schedule here. TNT Sports brings you today&#x27;s order of play, real-time results and all of the latest Tennis news.\",\n \"siteName\": \"www.tntsports.co.uk\"\n }\n ]\n}"}],"details":{"query":"Australian Open 2026 schedule results today January 30","provider":"brave","count":5,"tookMs":999,"results":[{"title":"Match Schedule | AO","url":"https://ausopen.com/schedule","description":"Thanks for visiting the Australian Open Website. We can see youre using Internet Explorer, and wanted to let you know that we will no longer be supporting this browser in future. Wed recommend you download a new browser if you&#x27;d like to continue keeping up with all of the latest tennis ...","siteName":"ausopen.com"},{"title":"Australian Open 2026 schedule, draw, results, order of play - BBC Sport","url":"https://www.bbc.com/sport/tennis/articles/cn42q0yjylno","description":"30 January: <strong>Men&#x27;s singles semi-finals, mixed doubles final, wheelchair singles semi-finals and doubles finals</strong>","published":"13 hours ago","siteName":"www.bbc.com"},{"title":"Australian Open LIVE, Scores, schedule, results, updates for AO tennis 2026 | Sporting News","url":"https://www.sportingnews.com/us/tennis/news/australian-open-live-schedule-results-scores-updates-ao-tennis-2026/3fbaef2a7ae994ec8793c0e7","description":"Everything you need to be across what&#x27;s happening at Melbourne Park.","published":"14 hours ago","siteName":"www.sportingnews.com"},{"title":"Australian Open | Daily Schedule | ATP Tour | Tennis","url":"https://www.atptour.com/en/scores/current/australian-open/580/daily-schedule","description":"Australia | 18 Jan - 1 Feb, 2026 · Live · Results · Schedule · Draws · Seeds · Day 20 · Day 19 Day · Use Local Time Zone Switch · Print · Refresh · Rod Laver Arena Starts at 2:30 PM · SF · SF · C. Alcaraz · (1) Vs · (3) A. Zverev · ––– H2H ·","siteName":"www.atptour.com"},{"title":"Australian Open 2026 - Schedule, Results & Draws | TNT Sports","url":"https://www.tntsports.co.uk/tennis/australian-open/2026/calendar-results.shtml","description":"Get the full Australian Open 2026 schedule here. TNT Sports brings you today&#x27;s order of play, real-time results and all of the latest Tennis news.","siteName":"www.tntsports.co.uk"}]},"isError":false,"timestamp":1769738843710}}
{"type":"message","id":"fb5e64b4","parentId":"a73ef648","timestamp":"2026-01-30T02:07:26.466Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"web_fetch_1769738846451_6","name":"web_fetch","arguments":{"url":"https://www.atptour.com/en/scores/current/australian-open/580/daily-schedule"},"thoughtSignature":"EjQKMgFyyNp8CeVHP7LY9KQPlDqcG8SX9ieJD8nu3XF+LSjhoHa5vuxWnhgcZ8930d0JtOrG"},{"type":"text","text":""}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":91118,"output":43,"cacheRead":89847,"cacheWrite":0,"totalTokens":91161,"cost":{"input":0.045558999999999995,"output":0.000129,"cacheRead":0.00449235,"cacheWrite":0,"total":0.05018034999999999}},"stopReason":"toolUse","timestamp":1769738843745}}
{"type":"message","id":"71846baa","parentId":"fb5e64b4","timestamp":"2026-01-30T02:07:26.614Z","message":{"role":"toolResult","toolCallId":"web_fetch_1769738846451_6","toolName":"web_fetch","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"web_fetch\",\n \"error\": \"Web fetch failed (403): Just a moment...\\nJust a moment...\"\n}"}],"details":{"status":"error","tool":"web_fetch","error":"Web fetch failed (403): Just a moment...\nJust a moment..."},"isError":false,"timestamp":1769738846597}}
{"type":"message","id":"d5ef3a5a","parentId":"71846baa","timestamp":"2026-01-30T02:07:27.237Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738846614,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 32.806424255s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"32s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"b1311f8e","parentId":"d5ef3a5a","timestamp":"2026-01-30T02:08:14.371Z","message":{"role":"user","content":[{"type":"text","text":"我可以配置多个LLM provider吗\n[message_id: f4f50e2f-5bfc-4867-a957-68d7899ba4d3]"}],"timestamp":1769738894339}}
{"type":"message","id":"41dac6d3","parentId":"b1311f8e","timestamp":"2026-01-30T02:08:14.978Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738894365,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 45.066390615s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"model\\\": \\\"gemini-3-flash\\\",\\n \\\"location\\\": \\\"global\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"45s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"6a4507aa","parentId":"41dac6d3","timestamp":"2026-01-30T02:08:17.493Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769738897034,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 250000, model: gemini-3-flash\\\\nPlease retry in 42.550690649s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\\\",\\n \\\"quotaId\\\": \\\"GenerateContentInputTokensPerModelPerMinute-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"250000\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"42s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"78852120","parentId":"6a4507aa","timestamp":"2026-01-30T02:08:26.428Z","message":{"role":"assistant","content":[{"type":"text","text":"当然可以,大哥!Clawdbot 的强大之处就在于它可以同时配置多个 LLM Provider(如 OpenAI, Anthropic, Google Gemini 等),并支持在它们之间进行故障切换(Failover)或为不同的任务指定不同的模型。\n\n你可以通过修改 `models` 配置来实现。主要分为两部分:\n\n### 1. 配置 Auth Profiles (API Key)\n首先,你需要为每个 Provider 添加 API Key\n```bash\n# 添加 OpenAI\nclawdbot config patch '{\"auth\": {\"profiles\": {\"openai:default\": {\"provider\": \"openai\", \"mode\": \"api_key\", \"apiKey\": \"你的SK-...\"}}}}'\n\n# 添加 Anthropic (Claude)\nclawdbot config patch '{\"auth\": {\"profiles\": {\"anthropic:default\": {\"provider\": \"anthropic\", \"mode\": \"api_key\", \"apiKey\": \"你的SK-ANT-...\"}}}}'\n```\n\n### 2. 定义模型别名和优先级\n在 `agents` 配置中,你可以定义哪些模型可用,以及谁是首选:\n\n```json\n{\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\", \n \"fallbacks\": [\n \"openai/gpt-4o\",\n \"anthropic/claude-3-5-sonnet\"\n ]\n }\n }\n }\n}\n```\n* **Primary**: 我默认使用的模型。\n* **Fallbacks**: 如果首选模型欠费、限流或挂了,我会**自动**按顺序切换到这些备选模型。\n\n### 3. 如何操作?\n你可以直接发给我你的其他 API Key,我来帮你写进配置;或者你也可以运行 `/config` 命令(如果你开启了该权限)来查看当前的结构。\n\n你想先添加哪一个 Provider?😊","textSignature":"EjQKMgFyyNp8i+S2aJbvTxQavUoZHH+0FR4AHnZrce2i7VneqNXYpsWpcQPwQ8oXtgoRSC6A"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":91194,"output":414,"cacheRead":81670,"cacheWrite":0,"totalTokens":91608,"cost":{"input":0.045597,"output":0.001242,"cacheRead":0.0040835,"cacheWrite":0,"total":0.050922499999999996}},"stopReason":"stop","timestamp":1769738901552}}
{"type":"message","id":"a0559e69","parentId":"78852120","timestamp":"2026-01-30T02:09:44.987Z","message":{"role":"user","content":[{"type":"text","text":"那你帮我配置多个模型吧,这样一个坏了,就切换到另外一个,告诉我怎么配置!\n[message_id: 2c18d640-c4bc-4e01-a004-5ec5a4aba724]"}],"timestamp":1769738984960}}
{"type":"message","id":"bf47c908","parentId":"a0559e69","timestamp":"2026-01-30T02:09:50.349Z","message":{"role":"assistant","content":[{"type":"text","text":"大哥,配置多个模型来实现自动切换(Failover)其实非常简单。Clawdbot 的逻辑是:如果 **Primary(首选)** 模型报错(比如欠费、限流或服务器宕机),它会立刻尝试 **Fallbacks(备选)** 列表里的模型。\n\n具体配置步骤如下:\n\n### 第一步:准备好你的 API Key\n你需要把不同厂家的 API Key 告诉我。比如你想加 OpenAI 的 GPT-4o 或 Anthropic 的 Claude 3.5。\n\n你可以直接这样发给我(不用担心,我会处理好):\n> “小黑,帮我加个 OpenAI 的 key`sk-xxxx`,再加个 Anthropic 的 key`sk-ant-xxxx`”\n\n### 第二步:我会帮你运行的配置命令\n如果你想自己通过命令行操作,逻辑是这样的:\n\n1. **添加授权信息(Auth Profiles**\n ```bash\n clawdbot config patch '{\"auth\": {\"profiles\": {\"openai:main\": {\"provider\": \"openai\", \"mode\": \"api_key\", \"apiKey\": \"你的KEY\"}}}}'\n ```\n\n2. **设置自动切换顺序**\n 这是关键!在 `agents.defaults.model` 里指定顺序:\n ```json\n {\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"google/gemini-3-flash-preview\",\n \"fallbacks\": [\n \"openai/gpt-4o\",\n \"anthropic/claude-3-5-sonnet-20240620\"\n ]\n }\n }\n }\n }\n ```\n\n### 第三步:验证\n配置好后,你可以对我发送 `/status`。在弹出的状态卡片里,你会看到当前的 **Model** 以及它所属的 **Provider**。\n\n---\n\n**现在,大哥你可以直接把你的其他 API Key 发给我,我立刻帮你写好这套“双保险”甚至“三保险”的配置!** 😊","textSignature":"EjQKMgFyyNp8rNILdXyY59F/vGZ4f6QnbZPwJgvLq7eC09q+TUz53qriT2ehBMBcA+4CXL0P"}],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":91672,"output":453,"cacheRead":89830,"cacheWrite":0,"totalTokens":92125,"cost":{"input":0.045835999999999995,"output":0.001359,"cacheRead":0.004491500000000001,"cacheWrite":0,"total":0.051686499999999996}},"stopReason":"stop","timestamp":1769738984981}}
{"type":"message","id":"800b761a","parentId":"bf47c908","timestamp":"2026-01-30T02:14:42.055Z","message":{"role":"user","content":[{"type":"text","text":"帮我配置openrouter token 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\n[message_id: d264999a-f2c1-4348-bce6-3ababcc3684f]"}],"timestamp":1769739282011}}
{"type":"message","id":"57583f88","parentId":"800b761a","timestamp":"2026-01-30T02:14:42.848Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739282048,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 17.196008306s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"17s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"d36a1343","parentId":"57583f88","timestamp":"2026-01-30T02:14:45.398Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739284932,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 14.64575422s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"14s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"15a47a25","parentId":"d36a1343","timestamp":"2026-01-30T02:14:50.068Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739289460,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 9.976888133s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"9s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"424e1aae","parentId":"15a47a25","timestamp":"2026-01-30T02:14:58.753Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739298138,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 1.294990743s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"1s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"4a6df8d2","parentId":"424e1aae","timestamp":"2026-01-30T02:15:52.560Z","message":{"role":"user","content":[{"type":"text","text":"配置完成了吗\n[message_id: 99ad4392-c75c-486f-bed8-ba265adfee6e]"}],"timestamp":1769739352529}}
{"type":"message","id":"dc33ef4f","parentId":"4a6df8d2","timestamp":"2026-01-30T02:15:53.345Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739352555,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 6.699992021s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"6s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"3cb17ed2","parentId":"dc33ef4f","timestamp":"2026-01-30T02:15:55.878Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739355403,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 4.168324381s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"4s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"34379ff9","parentId":"3cb17ed2","timestamp":"2026-01-30T02:16:00.569Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739359959,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 59.472339348s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"model\\\": \\\"gemini-3-flash\\\",\\n \\\"location\\\": \\\"global\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"59s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"message","id":"19917c3f","parentId":"34379ff9","timestamp":"2026-01-30T02:16:09.235Z","message":{"role":"assistant","content":[],"api":"google-generative-ai","provider":"google","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1769739368643,"errorMessage":"{\"error\":{\"message\":\"{\\n \\\"error\\\": {\\n \\\"code\\\": 429,\\n \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-3-flash\\\\nPlease retry in 50.812058354s.\\\",\\n \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\",\\n \\\"details\\\": [\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.Help\\\",\\n \\\"links\\\": [\\n {\\n \\\"description\\\": \\\"Learn more about Gemini API quotas\\\",\\n \\\"url\\\": \\\"https://ai.google.dev/gemini-api/docs/rate-limits\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.QuotaFailure\\\",\\n \\\"violations\\\": [\\n {\\n \\\"quotaMetric\\\": \\\"generativelanguage.googleapis.com/generate_content_free_tier_requests\\\",\\n \\\"quotaId\\\": \\\"GenerateRequestsPerDayPerProjectPerModel-FreeTier\\\",\\n \\\"quotaDimensions\\\": {\\n \\\"location\\\": \\\"global\\\",\\n \\\"model\\\": \\\"gemini-3-flash\\\"\\n },\\n \\\"quotaValue\\\": \\\"20\\\"\\n }\\n ]\\n },\\n {\\n \\\"@type\\\": \\\"type.googleapis.com/google.rpc.RetryInfo\\\",\\n \\\"retryDelay\\\": \\\"50s\\\"\\n }\\n ]\\n }\\n}\\n\",\"code\":429,\"status\":\"Too Many Requests\"}}"}}
{"type":"custom","customType":"model-snapshot","data":{"timestamp":1769742883855,"provider":"openrouter","modelApi":"openai-completions","modelId":"google/gemini-3-flash-preview"},"id":"4fa55c50","parentId":"19917c3f","timestamp":"2026-01-30T03:14:43.855Z"}
{"type":"message","id":"5ab1dfe2","parentId":"4fa55c50","timestamp":"2026-01-30T03:14:43.981Z","message":{"role":"user","content":[{"type":"text","text":"你好\n[message_id: 26c6c5be-5f3e-4695-9967-38cf61d2efa8]"}],"timestamp":1769742883882}}
{"type":"message","id":"1d8f9141","parentId":"5ab1dfe2","timestamp":"2026-01-30T03:14:49.398Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"tool_gateway_ZuYW9OVwahConEcETxGu","name":"gateway","arguments":{"reason":"Add OpenRouter profile and set up model fallbacks for 大哥.","action":"config.patch","raw":"{\"auth\": {\"profiles\": {\"openrouter:大哥\": {\"provider\": \"openrouter\", \"mode\": \"api_key\", \"apiKey\": \"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\"}}}, \"agents\": {\"defaults\": {\"model\": {\"primary\": \"google/gemini-3-flash-preview\", \"fallbacks\": [\"openrouter/google/gemini-2.0-flash-exp:free\", \"openrouter/anthropic/claude-3.5-sonnet\"]}}}}"},"thoughtSignature":"{\"index\":0,\"id\":\"tool_gateway_ZuYW9OVwahConEcETxGu\",\"type\":\"reasoning.encrypted\",\"data\":\"CiEBjz1rX0K5fyyZF6psnE6/5o+9a09caee+1VmT+ioUK0U=\",\"format\":\"google-gemini-v1\"}"}],"api":"openai-completions","provider":"openrouter","model":"google/gemini-3-flash-preview","usage":{"input":35313,"output":189,"cacheRead":0,"cacheWrite":0,"totalTokens":35502,"cost":{"input":0.0176565,"output":0.000567,"cacheRead":0,"cacheWrite":0,"total":0.0182235}},"stopReason":"toolUse","timestamp":1769742883965}}
{"type":"message","id":"d1ca8400","parentId":"1d8f9141","timestamp":"2026-01-30T03:14:49.560Z","message":{"role":"toolResult","toolCallId":"tool_gateway_ZuYW9OVwahConEcETxGu","toolName":"gateway","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"gateway\",\n \"error\": \"invalid config\"\n}"}],"details":{"status":"error","tool":"gateway","error":"invalid config"},"isError":false,"timestamp":1769742889527}}
{"type":"message","id":"15aee454","parentId":"d1ca8400","timestamp":"2026-01-30T03:14:53.601Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"tool_gateway_dbKzFZI8YpzPJkrvpSRf","name":"gateway","arguments":{"action":"config.get"},"thoughtSignature":"{\"index\":0,\"id\":\"tool_gateway_dbKzFZI8YpzPJkrvpSRf\",\"type\":\"reasoning.encrypted\",\"data\":\"CiEBjz1rX80Bcx/m1DfPT+e+Oyumt3QlEp88/7oxmPF1EnA=\",\"format\":\"google-gemini-v1\"}"}],"api":"openai-completions","provider":"openrouter","model":"google/gemini-3-flash-preview","usage":{"input":2276,"output":9,"cacheRead":33243,"cacheWrite":0,"totalTokens":35528,"cost":{"input":0.001138,"output":0.000027,"cacheRead":0.0016621499999999998,"cacheWrite":0,"total":0.0028271499999999996}},"stopReason":"toolUse","timestamp":1769742889561}}
{"type":"message","id":"8bf72820","parentId":"15aee454","timestamp":"2026-01-30T03:14:53.675Z","message":{"role":"toolResult","toolCallId":"tool_gateway_dbKzFZI8YpzPJkrvpSRf","toolName":"gateway","content":[{"type":"text","text":"{\n \"ok\": true,\n \"result\": {\n \"path\": \"/home/node/.clawdbot/clawdbot.json\",\n \"exists\": true,\n \"raw\": \"{\\n \\\"meta\\\": {\\n \\\"lastTouchedVersion\\\": \\\"2026.1.24-3\\\",\\n \\\"lastTouchedAt\\\": \\\"2026-01-30T02:54:49.398Z\\\"\\n },\\n \\\"env\\\": {\\n \\\"shellEnv\\\": {\\n \\\"enabled\\\": true\\n }\\n },\\n \\\"wizard\\\": {\\n \\\"lastRunAt\\\": \\\"2026-01-30T00:39:00.352Z\\\",\\n \\\"lastRunVersion\\\": \\\"2026.1.24-3\\\",\\n \\\"lastRunCommand\\\": \\\"configure\\\",\\n \\\"lastRunMode\\\": \\\"local\\\"\\n },\\n \\\"auth\\\": {\\n \\\"profiles\\\": {\\n \\\"google:default\\\": {\\n \\\"provider\\\": \\\"google\\\",\\n \\\"mode\\\": \\\"api_key\\\"\\n },\\n \\\"openrouter:default\\\": {\\n \\\"provider\\\": \\\"openrouter\\\",\\n \\\"mode\\\": \\\"api_key\\\"\\n }\\n }\\n },\\n \\\"agents\\\": {\\n \\\"defaults\\\": {\\n \\\"model\\\": {\\n \\\"primary\\\": \\\"openrouter/google/gemini-3-flash-preview\\\"\\n },\\n \\\"models\\\": {\\n \\\"google/gemini-3-flash-preview\\\": {\\n \\\"alias\\\": \\\"gemini-flash\\\"\\n },\\n \\\"openrouter/google/gemini-3-flash-preview\\\": {\\n \\\"alias\\\": \\\"openrouter-gemini-flash\\\"\\n }\\n },\\n \\\"workspace\\\": \\\"/home/node/clawd\\\",\\n \\\"maxConcurrent\\\": 4,\\n \\\"subagents\\\": {\\n \\\"maxConcurrent\\\": 8\\n }\\n }\\n },\\n \\\"tools\\\": {\\n \\\"web\\\": {\\n \\\"search\\\": {\\n \\\"enabled\\\": true,\\n \\\"apiKey\\\": \\\"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\\\"\\n },\\n \\\"fetch\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n },\\n \\\"messages\\\": {\\n \\\"ackReactionScope\\\": \\\"group-mentions\\\"\\n },\\n \\\"commands\\\": {\\n \\\"native\\\": \\\"auto\\\",\\n \\\"nativeSkills\\\": \\\"auto\\\"\\n },\\n \\\"hooks\\\": {\\n \\\"internal\\\": {\\n \\\"enabled\\\": true,\\n \\\"entries\\\": {\\n \\\"boot-md\\\": {\\n \\\"enabled\\\": true\\n },\\n \\\"command-logger\\\": {\\n \\\"enabled\\\": true\\n },\\n \\\"session-memory\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n }\\n },\\n \\\"channels\\\": {\\n \\\"telegram\\\": {\\n \\\"enabled\\\": true,\\n \\\"dmPolicy\\\": \\\"pairing\\\",\\n \\\"botToken\\\": \\\"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30\\\",\\n \\\"groupPolicy\\\": \\\"allowlist\\\",\\n \\\"streamMode\\\": \\\"partial\\\"\\n }\\n },\\n \\\"gateway\\\": {\\n \\\"port\\\": 18789,\\n \\\"mode\\\": \\\"local\\\",\\n \\\"bind\\\": \\\"lan\\\",\\n \\\"controlUi\\\": {\\n \\\"allowInsecureAuth\\\": true\\n },\\n \\\"auth\\\": {\\n \\\"mode\\\": \\\"token\\\",\\n \\\"token\\\": \\\"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\\\"\\n },\\n \\\"trustedProxies\\\": [\\n \\\"10.42.0.0/16\\\",\\n \\\"10.43.0.0/16\\\",\\n \\\"192.168.1.0/24\\\"\\n ],\\n \\\"tailscale\\\": {\\n \\\"mode\\\": \\\"off\\\",\\n \\\"resetOnExit\\\": false\\n }\\n },\\n \\\"skills\\\": {\\n \\\"install\\\": {\\n \\\"nodeManager\\\": \\\"npm\\\"\\n },\\n \\\"entries\\\": {\\n \\\"nano-banana-pro\\\": {\\n \\\"apiKey\\\": \\\"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\\\"\\n }\\n }\\n },\\n \\\"plugins\\\": {\\n \\\"entries\\\": {\\n \\\"telegram\\\": {\\n \\\"enabled\\\": true\\n }\\n }\\n }\\n}\\n\",\n \"parsed\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T02:54:49.398Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n },\n \"openrouter:default\": {\n \"provider\": \"openrouter\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"openrouter/google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n },\n \"openrouter/google/gemini-3-flash-preview\": {\n \"alias\": \"openrouter-gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\",\n \"192.168.1.0/24\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n },\n \"valid\": true,\n \"config\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T02:54:49.398Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n },\n \"openrouter:default\": {\n \"provider\": \"openrouter\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"openrouter/google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n },\n \"openrouter/google/gemini-3-flash-preview\": {\n \"alias\": \"openrouter-gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\",\n \"192.168.1.0/24\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n },\n \"hash\": \"5f7a951cd22f44d1d092b3caac94ca01d33e54cad2b3dc763a7d0993b5d65d83\",\n \"issues\": [],\n \"warnings\": [],\n \"legacyIssues\": []\n }\n}"}],"details":{"ok":true,"result":{"path":"/home/node/.clawdbot/clawdbot.json","exists":true,"raw":"{\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T02:54:49.398Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n },\n \"openrouter:default\": {\n \"provider\": \"openrouter\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"openrouter/google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n },\n \"openrouter/google/gemini-3-flash-preview\": {\n \"alias\": \"openrouter-gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\",\n \"192.168.1.0/24\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n}\n","parsed":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T02:54:49.398Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"},"openrouter:default":{"provider":"openrouter","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"openrouter/google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"},"openrouter/google/gemini-3-flash-preview":{"alias":"openrouter-gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30","groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16","192.168.1.0/24"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}}},"valid":true,"config":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T02:54:49.398Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"},"openrouter:default":{"provider":"openrouter","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"openrouter/google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"},"openrouter/google/gemini-3-flash-preview":{"alias":"openrouter-gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30","groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16","192.168.1.0/24"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}}},"hash":"5f7a951cd22f44d1d092b3caac94ca01d33e54cad2b3dc763a7d0993b5d65d83","issues":[],"warnings":[],"legacyIssues":[]}},"isError":false,"timestamp":1769742893654}}
{"type":"message","id":"06e86f92","parentId":"8bf72820","timestamp":"2026-01-30T03:14:59.409Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"tool_gateway_861zkD9oXHhV4g331MRO","name":"gateway","arguments":{"reason":"Update OpenRouter key and set up fallback models for 大哥.","raw":"{\"auth\": {\"profiles\": {\"openrouter:default\": {\"provider\": \"openrouter\", \"mode\": \"api_key\", \"apiKey\": \"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\"}}}, \"agents\": {\"defaults\": {\"model\": {\"primary\": \"google/gemini-3-flash-preview\", \"fallbacks\": [\"openrouter/google/gemini-2.0-flash-exp:free\", \"openrouter/anthropic/claude-3.5-sonnet\"]}}}}","action":"config.patch"},"thoughtSignature":"{\"index\":0,\"id\":\"tool_gateway_861zkD9oXHhV4g331MRO\",\"type\":\"reasoning.encrypted\",\"data\":\"CiEBjz1rX1sAPitUu3ABnk7TLoTfsJg0m0aIcR/M3EvcVNw=\",\"format\":\"google-gemini-v1\"}"}],"api":"openai-completions","provider":"openrouter","model":"google/gemini-3-flash-preview","usage":{"input":3794,"output":188,"cacheRead":33785,"cacheWrite":0,"totalTokens":37767,"cost":{"input":0.0018969999999999998,"output":0.000564,"cacheRead":0.00168925,"cacheWrite":0,"total":0.004150249999999999}},"stopReason":"toolUse","timestamp":1769742893675}}
{"type":"message","id":"6132cbe3","parentId":"06e86f92","timestamp":"2026-01-30T03:14:59.778Z","message":{"role":"toolResult","toolCallId":"tool_gateway_861zkD9oXHhV4g331MRO","toolName":"gateway","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"gateway\",\n \"error\": \"invalid config\"\n}"}],"details":{"status":"error","tool":"gateway","error":"invalid config"},"isError":false,"timestamp":1769742899710}}
{"type":"message","id":"21cf5111","parentId":"6132cbe3","timestamp":"2026-01-30T03:15:04.083Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"tool_gateway_79aiQPzqJ05nlhq4QnZL","name":"gateway","arguments":{"raw":"{\"auth\": {\"profiles\": {\"openrouter:default\": {\"provider\": \"openrouter\", \"mode\": \"api_key\", \"apiKey\": \"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\"}}}}","reason":"Set OpenRouter API key for 大哥.","action":"config.patch"},"thoughtSignature":"{\"index\":0,\"id\":\"tool_gateway_79aiQPzqJ05nlhq4QnZL\",\"type\":\"reasoning.encrypted\",\"data\":\"CiEBjz1rX/VLvfR75+EeAqqFsEKMYnSTiGwSYykj58nTGuM=\",\"format\":\"google-gemini-v1\"}"}],"api":"openai-completions","provider":"openrouter","model":"google/gemini-3-flash-preview","usage":{"input":1535,"output":119,"cacheRead":36256,"cacheWrite":0,"totalTokens":37910,"cost":{"input":0.0007675,"output":0.000357,"cacheRead":0.0018127999999999998,"cacheWrite":0,"total":0.0029373}},"stopReason":"toolUse","timestamp":1769742899778}}
{"type":"message","id":"c1002c0f","parentId":"21cf5111","timestamp":"2026-01-30T03:15:04.182Z","message":{"role":"toolResult","toolCallId":"tool_gateway_79aiQPzqJ05nlhq4QnZL","toolName":"gateway","content":[{"type":"text","text":"{\n \"status\": \"error\",\n \"tool\": \"gateway\",\n \"error\": \"invalid config\"\n}"}],"details":{"status":"error","tool":"gateway","error":"invalid config"},"isError":false,"timestamp":1769742904165}}
{"type":"message","id":"44dd5d3e","parentId":"c1002c0f","timestamp":"2026-01-30T03:15:09.967Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"tool_gateway_VcmFDInjUuvjaeFhDgRO","name":"gateway","arguments":{"action":"config.patch","raw":"{\"auth\": {\"profiles\": {\"openrouter:default\": {\"provider\": \"openrouter\", \"mode\": \"api_key\"}}}}","reason":"Testing simple config patch structure."},"thoughtSignature":"{\"index\":0,\"id\":\"tool_gateway_VcmFDInjUuvjaeFhDgRO\",\"type\":\"reasoning.encrypted\",\"data\":\"CiEBjz1rX349evsEP/CbJ9YjFtgHJsVYAYh4mqis8CY6F/4=\",\"format\":\"google-gemini-v1\"}"}],"api":"openai-completions","provider":"openrouter","model":"google/gemini-3-flash-preview","usage":{"input":37931,"output":45,"cacheRead":0,"cacheWrite":0,"totalTokens":37976,"cost":{"input":0.0189655,"output":0.000135,"cacheRead":0,"cacheWrite":0,"total":0.0191005}},"stopReason":"toolUse","timestamp":1769742904182}}
{"type":"message","id":"5efe2836","parentId":"44dd5d3e","timestamp":"2026-01-30T03:15:10.112Z","message":{"role":"toolResult","toolCallId":"tool_gateway_VcmFDInjUuvjaeFhDgRO","toolName":"gateway","content":[{"type":"text","text":"{\n \"ok\": true,\n \"result\": {\n \"ok\": true,\n \"path\": \"/home/node/.clawdbot/clawdbot.json\",\n \"config\": {\n \"meta\": {\n \"lastTouchedVersion\": \"2026.1.24-3\",\n \"lastTouchedAt\": \"2026-01-30T02:54:49.398Z\"\n },\n \"env\": {\n \"shellEnv\": {\n \"enabled\": true\n }\n },\n \"wizard\": {\n \"lastRunAt\": \"2026-01-30T00:39:00.352Z\",\n \"lastRunVersion\": \"2026.1.24-3\",\n \"lastRunCommand\": \"configure\",\n \"lastRunMode\": \"local\"\n },\n \"auth\": {\n \"profiles\": {\n \"google:default\": {\n \"provider\": \"google\",\n \"mode\": \"api_key\"\n },\n \"openrouter:default\": {\n \"provider\": \"openrouter\",\n \"mode\": \"api_key\"\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"model\": {\n \"primary\": \"openrouter/google/gemini-3-flash-preview\"\n },\n \"models\": {\n \"google/gemini-3-flash-preview\": {\n \"alias\": \"gemini-flash\"\n },\n \"openrouter/google/gemini-3-flash-preview\": {\n \"alias\": \"openrouter-gemini-flash\"\n }\n },\n \"workspace\": \"/home/node/clawd\",\n \"maxConcurrent\": 4,\n \"subagents\": {\n \"maxConcurrent\": 8\n }\n }\n },\n \"tools\": {\n \"web\": {\n \"search\": {\n \"enabled\": true,\n \"apiKey\": \"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU\"\n },\n \"fetch\": {\n \"enabled\": true\n }\n }\n },\n \"messages\": {\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"internal\": {\n \"enabled\": true,\n \"entries\": {\n \"boot-md\": {\n \"enabled\": true\n },\n \"command-logger\": {\n \"enabled\": true\n },\n \"session-memory\": {\n \"enabled\": true\n }\n }\n }\n },\n \"channels\": {\n \"telegram\": {\n \"enabled\": true,\n \"dmPolicy\": \"pairing\",\n \"botToken\": \"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30\",\n \"groupPolicy\": \"allowlist\",\n \"streamMode\": \"partial\"\n }\n },\n \"gateway\": {\n \"port\": 18789,\n \"mode\": \"local\",\n \"bind\": \"lan\",\n \"controlUi\": {\n \"allowInsecureAuth\": true\n },\n \"auth\": {\n \"mode\": \"token\",\n \"token\": \"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b\"\n },\n \"trustedProxies\": [\n \"10.42.0.0/16\",\n \"10.43.0.0/16\",\n \"192.168.1.0/24\"\n ],\n \"tailscale\": {\n \"mode\": \"off\",\n \"resetOnExit\": false\n }\n },\n \"skills\": {\n \"install\": {\n \"nodeManager\": \"npm\"\n },\n \"entries\": {\n \"nano-banana-pro\": {\n \"apiKey\": \"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY\"\n }\n }\n },\n \"plugins\": {\n \"entries\": {\n \"telegram\": {\n \"enabled\": true\n }\n }\n }\n },\n \"restart\": {\n \"ok\": true,\n \"pid\": 14,\n \"signal\": \"SIGUSR1\",\n \"delayMs\": 2000,\n \"reason\": \"config.patch\",\n \"mode\": \"emit\"\n },\n \"sentinel\": {\n \"path\": \"/home/node/.clawdbot/restart-sentinel.json\",\n \"payload\": {\n \"kind\": \"config-apply\",\n \"status\": \"ok\",\n \"ts\": 1769742910066,\n \"sessionKey\": \"agent:main:main\",\n \"message\": null,\n \"doctorHint\": \"Run: clawdbot doctor --non-interactive\",\n \"stats\": {\n \"mode\": \"config.patch\",\n \"root\": \"/home/node/.clawdbot/clawdbot.json\"\n }\n }\n }\n }\n}"}],"details":{"ok":true,"result":{"ok":true,"path":"/home/node/.clawdbot/clawdbot.json","config":{"meta":{"lastTouchedVersion":"2026.1.24-3","lastTouchedAt":"2026-01-30T02:54:49.398Z"},"env":{"shellEnv":{"enabled":true}},"wizard":{"lastRunAt":"2026-01-30T00:39:00.352Z","lastRunVersion":"2026.1.24-3","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"google:default":{"provider":"google","mode":"api_key"},"openrouter:default":{"provider":"openrouter","mode":"api_key"}}},"agents":{"defaults":{"model":{"primary":"openrouter/google/gemini-3-flash-preview"},"models":{"google/gemini-3-flash-preview":{"alias":"gemini-flash"},"openrouter/google/gemini-3-flash-preview":{"alias":"openrouter-gemini-flash"}},"workspace":"/home/node/clawd","maxConcurrent":4,"subagents":{"maxConcurrent":8}}},"tools":{"web":{"search":{"enabled":true,"apiKey":"BSACrDZ918Sfqw1sNDGWjxx4pRAtLyU"},"fetch":{"enabled":true}}},"messages":{"ackReactionScope":"group-mentions"},"commands":{"native":"auto","nativeSkills":"auto"},"hooks":{"internal":{"enabled":true,"entries":{"boot-md":{"enabled":true},"command-logger":{"enabled":true},"session-memory":{"enabled":true}}}},"channels":{"telegram":{"enabled":true,"dmPolicy":"pairing","botToken":"7958869300:AAG3wMgtsYYQfclDvre6RA6u_QNXAeedx30","groupPolicy":"allowlist","streamMode":"partial"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowInsecureAuth":true},"auth":{"mode":"token","token":"0c0366b30b8bf6cd31aa65f91eeb37a37a6cabf108a8966b"},"trustedProxies":["10.42.0.0/16","10.43.0.0/16","192.168.1.0/24"],"tailscale":{"mode":"off","resetOnExit":false}},"skills":{"install":{"nodeManager":"npm"},"entries":{"nano-banana-pro":{"apiKey":"AIzaSyDhMmnYcVglgdK_YBFfqyOI8sE-52_AMOY"}}},"plugins":{"entries":{"telegram":{"enabled":true}}}},"restart":{"ok":true,"pid":14,"signal":"SIGUSR1","delayMs":2000,"reason":"config.patch","mode":"emit"},"sentinel":{"path":"/home/node/.clawdbot/restart-sentinel.json","payload":{"kind":"config-apply","status":"ok","ts":1769742910066,"sessionKey":"agent:main:main","message":null,"doctorHint":"Run: clawdbot doctor --non-interactive","stats":{"mode":"config.patch","root":"/home/node/.clawdbot/clawdbot.json"}}}}},"isError":false,"timestamp":1769742910081}}