@quantumclaw/quantumclaw 2026.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (821) hide show
  1. package/CHANGELOG.md +4601 -0
  2. package/LICENSE +21 -0
  3. package/README.md +559 -0
  4. package/assets/avatar-placeholder.svg +19 -0
  5. package/assets/chrome-extension/icons/icon128.png +0 -0
  6. package/assets/chrome-extension/icons/icon16.png +0 -0
  7. package/assets/chrome-extension/icons/icon32.png +0 -0
  8. package/assets/chrome-extension/icons/icon48.png +0 -0
  9. package/assets/dmg-background-small.png +0 -0
  10. package/assets/dmg-background.png +0 -0
  11. package/docs/.i18n/README.md +31 -0
  12. package/docs/.i18n/glossary.ja-JP.json +14 -0
  13. package/docs/.i18n/glossary.zh-CN.json +302 -0
  14. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  15. package/docs/assets/install-script.svg +1 -0
  16. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  17. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  18. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  19. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  20. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  21. package/docs/assets/pixel-lobster.svg +60 -0
  22. package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
  23. package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
  24. package/docs/assets/quantumclaw-logo-text.png +0 -0
  25. package/docs/assets/quantumclaw-logo-text.svg +418 -0
  26. package/docs/assets/showcase/agents-ui.jpg +0 -0
  27. package/docs/assets/showcase/bambu-cli.png +0 -0
  28. package/docs/assets/showcase/codexmonitor.png +0 -0
  29. package/docs/assets/showcase/gohome-grafana.png +0 -0
  30. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  31. package/docs/assets/showcase/oura-health.png +0 -0
  32. package/docs/assets/showcase/padel-cli.svg +11 -0
  33. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  34. package/docs/assets/showcase/papla-tts.jpg +0 -0
  35. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  36. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  37. package/docs/assets/showcase/roborock-status.svg +13 -0
  38. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  39. package/docs/assets/showcase/snag.png +0 -0
  40. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  41. package/docs/assets/showcase/wienerlinien.png +0 -0
  42. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  43. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  44. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  45. package/docs/assets/sponsors/blacksmith.svg +14 -0
  46. package/docs/assets/sponsors/convex.svg +16 -0
  47. package/docs/assets/sponsors/openai.svg +3 -0
  48. package/docs/assets/sponsors/vercel.svg +5 -0
  49. package/docs/auth-credential-semantics.md +53 -0
  50. package/docs/automation/auth-monitoring.md +44 -0
  51. package/docs/automation/cron-jobs.md +727 -0
  52. package/docs/automation/cron-vs-heartbeat.md +286 -0
  53. package/docs/automation/gmail-pubsub.md +256 -0
  54. package/docs/automation/hooks.md +1056 -0
  55. package/docs/automation/poll.md +86 -0
  56. package/docs/automation/standing-orders.md +251 -0
  57. package/docs/automation/troubleshooting.md +122 -0
  58. package/docs/automation/webhook.md +217 -0
  59. package/docs/brave-search.md +93 -0
  60. package/docs/channels/bluebubbles.md +347 -0
  61. package/docs/channels/broadcast-groups.md +442 -0
  62. package/docs/channels/channel-routing.md +139 -0
  63. package/docs/channels/discord.md +1229 -0
  64. package/docs/channels/feishu.md +747 -0
  65. package/docs/channels/googlechat.md +261 -0
  66. package/docs/channels/group-messages.md +84 -0
  67. package/docs/channels/groups.md +379 -0
  68. package/docs/channels/imessage.md +367 -0
  69. package/docs/channels/index.md +47 -0
  70. package/docs/channels/irc.md +242 -0
  71. package/docs/channels/line.md +194 -0
  72. package/docs/channels/location.md +56 -0
  73. package/docs/channels/matrix.md +677 -0
  74. package/docs/channels/mattermost.md +427 -0
  75. package/docs/channels/msteams.md +780 -0
  76. package/docs/channels/nextcloud-talk.md +138 -0
  77. package/docs/channels/nostr.md +249 -0
  78. package/docs/channels/pairing.md +114 -0
  79. package/docs/channels/signal.md +329 -0
  80. package/docs/channels/slack.md +603 -0
  81. package/docs/channels/synology-chat.md +134 -0
  82. package/docs/channels/telegram.md +987 -0
  83. package/docs/channels/tlon.md +276 -0
  84. package/docs/channels/troubleshooting.md +118 -0
  85. package/docs/channels/twitch.md +379 -0
  86. package/docs/channels/whatsapp.md +460 -0
  87. package/docs/channels/zalo.md +243 -0
  88. package/docs/channels/zalouser.md +181 -0
  89. package/docs/ci.md +55 -0
  90. package/docs/cli/acp.md +288 -0
  91. package/docs/cli/agent.md +29 -0
  92. package/docs/cli/agents.md +123 -0
  93. package/docs/cli/approvals.md +50 -0
  94. package/docs/cli/backup.md +76 -0
  95. package/docs/cli/browser.md +106 -0
  96. package/docs/cli/channels.md +102 -0
  97. package/docs/cli/clawbot.md +21 -0
  98. package/docs/cli/completion.md +35 -0
  99. package/docs/cli/config.md +295 -0
  100. package/docs/cli/configure.md +36 -0
  101. package/docs/cli/cron.md +77 -0
  102. package/docs/cli/daemon.md +53 -0
  103. package/docs/cli/dashboard.md +22 -0
  104. package/docs/cli/devices.md +139 -0
  105. package/docs/cli/directory.md +63 -0
  106. package/docs/cli/dns.md +23 -0
  107. package/docs/cli/docs.md +15 -0
  108. package/docs/cli/doctor.md +48 -0
  109. package/docs/cli/gateway.md +235 -0
  110. package/docs/cli/health.md +21 -0
  111. package/docs/cli/hooks.md +329 -0
  112. package/docs/cli/index.md +1150 -0
  113. package/docs/cli/logs.md +28 -0
  114. package/docs/cli/memory.md +66 -0
  115. package/docs/cli/message.md +278 -0
  116. package/docs/cli/models.md +81 -0
  117. package/docs/cli/node.md +127 -0
  118. package/docs/cli/nodes.md +75 -0
  119. package/docs/cli/onboard.md +157 -0
  120. package/docs/cli/pairing.md +32 -0
  121. package/docs/cli/plugins.md +210 -0
  122. package/docs/cli/qr.md +46 -0
  123. package/docs/cli/reset.md +20 -0
  124. package/docs/cli/sandbox.md +197 -0
  125. package/docs/cli/secrets.md +188 -0
  126. package/docs/cli/security.md +79 -0
  127. package/docs/cli/sessions.md +110 -0
  128. package/docs/cli/setup.md +29 -0
  129. package/docs/cli/skills.md +36 -0
  130. package/docs/cli/status.md +30 -0
  131. package/docs/cli/system.md +60 -0
  132. package/docs/cli/tui.md +30 -0
  133. package/docs/cli/uninstall.md +20 -0
  134. package/docs/cli/update.md +103 -0
  135. package/docs/cli/voicecall.md +34 -0
  136. package/docs/cli/webhooks.md +25 -0
  137. package/docs/concepts/agent-loop.md +148 -0
  138. package/docs/concepts/agent-workspace.md +236 -0
  139. package/docs/concepts/agent.md +122 -0
  140. package/docs/concepts/architecture.md +137 -0
  141. package/docs/concepts/compaction.md +123 -0
  142. package/docs/concepts/context-engine.md +268 -0
  143. package/docs/concepts/context.md +172 -0
  144. package/docs/concepts/delegate-architecture.md +296 -0
  145. package/docs/concepts/features.md +73 -0
  146. package/docs/concepts/markdown-formatting.md +130 -0
  147. package/docs/concepts/memory.md +108 -0
  148. package/docs/concepts/messages.md +154 -0
  149. package/docs/concepts/model-failover.md +152 -0
  150. package/docs/concepts/model-providers.md +607 -0
  151. package/docs/concepts/models.md +225 -0
  152. package/docs/concepts/multi-agent.md +552 -0
  153. package/docs/concepts/oauth.md +158 -0
  154. package/docs/concepts/presence.md +102 -0
  155. package/docs/concepts/queue.md +89 -0
  156. package/docs/concepts/retry.md +69 -0
  157. package/docs/concepts/session-pruning.md +121 -0
  158. package/docs/concepts/session-tool.md +242 -0
  159. package/docs/concepts/session.md +310 -0
  160. package/docs/concepts/streaming.md +155 -0
  161. package/docs/concepts/system-prompt.md +132 -0
  162. package/docs/concepts/timezone.md +91 -0
  163. package/docs/concepts/typebox.md +291 -0
  164. package/docs/concepts/typing-indicators.md +68 -0
  165. package/docs/concepts/usage-tracking.md +35 -0
  166. package/docs/date-time.md +128 -0
  167. package/docs/debug/node-issue.md +85 -0
  168. package/docs/diagnostics/flags.md +91 -0
  169. package/docs/docs.json +2078 -0
  170. package/docs/gateway/authentication.md +179 -0
  171. package/docs/gateway/background-process.md +97 -0
  172. package/docs/gateway/bonjour.md +177 -0
  173. package/docs/gateway/bridge-protocol.md +91 -0
  174. package/docs/gateway/cli-backends.md +225 -0
  175. package/docs/gateway/configuration-examples.md +651 -0
  176. package/docs/gateway/configuration-reference.md +3123 -0
  177. package/docs/gateway/configuration.md +633 -0
  178. package/docs/gateway/discovery.md +123 -0
  179. package/docs/gateway/doctor.md +362 -0
  180. package/docs/gateway/gateway-lock.md +34 -0
  181. package/docs/gateway/health.md +44 -0
  182. package/docs/gateway/heartbeat.md +393 -0
  183. package/docs/gateway/index.md +261 -0
  184. package/docs/gateway/local-models.md +152 -0
  185. package/docs/gateway/logging.md +113 -0
  186. package/docs/gateway/multiple-gateways.md +112 -0
  187. package/docs/gateway/network-model.md +22 -0
  188. package/docs/gateway/openai-http-api.md +132 -0
  189. package/docs/gateway/openresponses-http-api.md +295 -0
  190. package/docs/gateway/openshell.md +307 -0
  191. package/docs/gateway/pairing.md +99 -0
  192. package/docs/gateway/protocol.md +267 -0
  193. package/docs/gateway/remote-gateway-readme.md +158 -0
  194. package/docs/gateway/remote.md +153 -0
  195. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
  196. package/docs/gateway/sandboxing.md +469 -0
  197. package/docs/gateway/secrets-plan-contract.md +116 -0
  198. package/docs/gateway/secrets.md +503 -0
  199. package/docs/gateway/security/index.md +1220 -0
  200. package/docs/gateway/tailscale.md +132 -0
  201. package/docs/gateway/tools-invoke-http-api.md +118 -0
  202. package/docs/gateway/troubleshooting.md +378 -0
  203. package/docs/gateway/trusted-proxy-auth.md +330 -0
  204. package/docs/help/debugging.md +168 -0
  205. package/docs/help/environment.md +163 -0
  206. package/docs/help/faq.md +2997 -0
  207. package/docs/help/index.md +28 -0
  208. package/docs/help/scripts.md +28 -0
  209. package/docs/help/testing.md +526 -0
  210. package/docs/help/troubleshooting.md +297 -0
  211. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  212. package/docs/images/feishu-step2-create-app.png +0 -0
  213. package/docs/images/feishu-step3-credentials.png +0 -0
  214. package/docs/images/feishu-step4-permissions.png +0 -0
  215. package/docs/images/feishu-step5-bot-capability.png +0 -0
  216. package/docs/images/feishu-step6-event-subscription.png +0 -0
  217. package/docs/images/feishu-verification-token.png +0 -0
  218. package/docs/images/groups-flow.svg +52 -0
  219. package/docs/images/mobile-ui-screenshot.png +0 -0
  220. package/docs/index.md +196 -0
  221. package/docs/install/ansible.md +230 -0
  222. package/docs/install/azure.md +311 -0
  223. package/docs/install/bun.md +55 -0
  224. package/docs/install/development-channels.md +120 -0
  225. package/docs/install/digitalocean.md +129 -0
  226. package/docs/install/docker-vm-runtime.md +142 -0
  227. package/docs/install/docker.md +375 -0
  228. package/docs/install/exe-dev.md +126 -0
  229. package/docs/install/fly.md +501 -0
  230. package/docs/install/gcp.md +402 -0
  231. package/docs/install/hetzner.md +251 -0
  232. package/docs/install/index.md +183 -0
  233. package/docs/install/installer.md +415 -0
  234. package/docs/install/kubernetes.md +191 -0
  235. package/docs/install/macos-vm.md +281 -0
  236. package/docs/install/migrating-matrix.md +346 -0
  237. package/docs/install/migrating.md +110 -0
  238. package/docs/install/nix.md +89 -0
  239. package/docs/install/node.md +138 -0
  240. package/docs/install/northflank.mdx +54 -0
  241. package/docs/install/oracle.md +156 -0
  242. package/docs/install/podman.md +133 -0
  243. package/docs/install/railway.mdx +100 -0
  244. package/docs/install/raspberry-pi.md +159 -0
  245. package/docs/install/render.mdx +169 -0
  246. package/docs/install/uninstall.md +128 -0
  247. package/docs/install/updating.md +128 -0
  248. package/docs/ja-JP/index.md +186 -0
  249. package/docs/ja-JP/start/getting-started.md +125 -0
  250. package/docs/ja-JP/start/wizard.md +77 -0
  251. package/docs/logging.md +352 -0
  252. package/docs/nav-tabs-underline.js +100 -0
  253. package/docs/network.md +54 -0
  254. package/docs/nodes/audio.md +187 -0
  255. package/docs/nodes/camera.md +162 -0
  256. package/docs/nodes/images.md +72 -0
  257. package/docs/nodes/index.md +393 -0
  258. package/docs/nodes/location-command.md +98 -0
  259. package/docs/nodes/media-understanding.md +394 -0
  260. package/docs/nodes/talk.md +92 -0
  261. package/docs/nodes/troubleshooting.md +114 -0
  262. package/docs/nodes/voicewake.md +66 -0
  263. package/docs/perplexity.md +174 -0
  264. package/docs/pi-dev.md +80 -0
  265. package/docs/pi.md +567 -0
  266. package/docs/platforms/android.md +168 -0
  267. package/docs/platforms/digitalocean.md +266 -0
  268. package/docs/platforms/index.md +54 -0
  269. package/docs/platforms/ios.md +220 -0
  270. package/docs/platforms/linux.md +94 -0
  271. package/docs/platforms/mac/bundled-gateway.md +73 -0
  272. package/docs/platforms/mac/canvas.md +125 -0
  273. package/docs/platforms/mac/child-process.md +69 -0
  274. package/docs/platforms/mac/dev-setup.md +104 -0
  275. package/docs/platforms/mac/health.md +34 -0
  276. package/docs/platforms/mac/icon.md +31 -0
  277. package/docs/platforms/mac/logging.md +57 -0
  278. package/docs/platforms/mac/menu-bar.md +81 -0
  279. package/docs/platforms/mac/peekaboo.md +65 -0
  280. package/docs/platforms/mac/permissions.md +50 -0
  281. package/docs/platforms/mac/remote.md +84 -0
  282. package/docs/platforms/mac/signing.md +47 -0
  283. package/docs/platforms/mac/skills.md +33 -0
  284. package/docs/platforms/mac/voice-overlay.md +60 -0
  285. package/docs/platforms/mac/voicewake.md +67 -0
  286. package/docs/platforms/mac/webchat.md +43 -0
  287. package/docs/platforms/mac/xpc.md +61 -0
  288. package/docs/platforms/macos.md +226 -0
  289. package/docs/platforms/oracle.md +303 -0
  290. package/docs/platforms/raspberry-pi.md +412 -0
  291. package/docs/platforms/windows.md +241 -0
  292. package/docs/plugins/agent-tools.md +10 -0
  293. package/docs/plugins/architecture.md +1366 -0
  294. package/docs/plugins/building-extensions.md +10 -0
  295. package/docs/plugins/building-plugins.md +239 -0
  296. package/docs/plugins/bundles.md +181 -0
  297. package/docs/plugins/community.md +145 -0
  298. package/docs/plugins/manifest.md +241 -0
  299. package/docs/plugins/sdk-channel-plugins.md +370 -0
  300. package/docs/plugins/sdk-entrypoints.md +161 -0
  301. package/docs/plugins/sdk-migration.md +172 -0
  302. package/docs/plugins/sdk-overview.md +196 -0
  303. package/docs/plugins/sdk-provider-plugins.md +370 -0
  304. package/docs/plugins/sdk-runtime.md +345 -0
  305. package/docs/plugins/sdk-setup.md +331 -0
  306. package/docs/plugins/sdk-testing.md +263 -0
  307. package/docs/plugins/voice-call.md +380 -0
  308. package/docs/plugins/zalouser.md +77 -0
  309. package/docs/prose.md +134 -0
  310. package/docs/providers/anthropic.md +259 -0
  311. package/docs/providers/bedrock.md +176 -0
  312. package/docs/providers/claude-max-api-proxy.md +154 -0
  313. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  314. package/docs/providers/deepgram.md +93 -0
  315. package/docs/providers/github-copilot.md +72 -0
  316. package/docs/providers/glm.md +43 -0
  317. package/docs/providers/google.md +78 -0
  318. package/docs/providers/groq.md +96 -0
  319. package/docs/providers/huggingface.md +209 -0
  320. package/docs/providers/index.md +69 -0
  321. package/docs/providers/kilocode.md +74 -0
  322. package/docs/providers/litellm.md +154 -0
  323. package/docs/providers/minimax.md +224 -0
  324. package/docs/providers/mistral.md +54 -0
  325. package/docs/providers/models.md +45 -0
  326. package/docs/providers/modelstudio.md +66 -0
  327. package/docs/providers/moonshot.md +175 -0
  328. package/docs/providers/nvidia.md +55 -0
  329. package/docs/providers/ollama.md +352 -0
  330. package/docs/providers/openai.md +303 -0
  331. package/docs/providers/opencode-go.md +45 -0
  332. package/docs/providers/opencode.md +64 -0
  333. package/docs/providers/openrouter.md +37 -0
  334. package/docs/providers/perplexity-provider.md +62 -0
  335. package/docs/providers/qianfan.md +38 -0
  336. package/docs/providers/qwen.md +53 -0
  337. package/docs/providers/sglang.md +104 -0
  338. package/docs/providers/synthetic.md +99 -0
  339. package/docs/providers/together.md +66 -0
  340. package/docs/providers/venice.md +282 -0
  341. package/docs/providers/vercel-ai-gateway.md +60 -0
  342. package/docs/providers/vllm.md +92 -0
  343. package/docs/providers/volcengine.md +74 -0
  344. package/docs/providers/xai.md +60 -0
  345. package/docs/providers/xiaomi.md +86 -0
  346. package/docs/providers/zai.md +46 -0
  347. package/docs/reference/AGENTS.default.md +126 -0
  348. package/docs/reference/RELEASING.md +42 -0
  349. package/docs/reference/api-usage-costs.md +144 -0
  350. package/docs/reference/credits.md +30 -0
  351. package/docs/reference/device-models.md +47 -0
  352. package/docs/reference/memory-config.md +711 -0
  353. package/docs/reference/prompt-caching.md +185 -0
  354. package/docs/reference/rpc.md +43 -0
  355. package/docs/reference/secretref-credential-surface.md +140 -0
  356. package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
  357. package/docs/reference/session-management-compaction.md +324 -0
  358. package/docs/reference/templates/AGENTS.dev.md +83 -0
  359. package/docs/reference/templates/AGENTS.md +219 -0
  360. package/docs/reference/templates/BOOT.md +11 -0
  361. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  362. package/docs/reference/templates/HEARTBEAT.md +14 -0
  363. package/docs/reference/templates/IDENTITY.dev.md +47 -0
  364. package/docs/reference/templates/IDENTITY.md +29 -0
  365. package/docs/reference/templates/SOUL.dev.md +76 -0
  366. package/docs/reference/templates/SOUL.md +43 -0
  367. package/docs/reference/templates/TOOLS.dev.md +24 -0
  368. package/docs/reference/templates/TOOLS.md +47 -0
  369. package/docs/reference/templates/USER.dev.md +18 -0
  370. package/docs/reference/templates/USER.md +23 -0
  371. package/docs/reference/test.md +90 -0
  372. package/docs/reference/token-use.md +175 -0
  373. package/docs/reference/transcript-hygiene.md +151 -0
  374. package/docs/reference/wizard.md +235 -0
  375. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  376. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  377. package/docs/security/formal-verification.md +167 -0
  378. package/docs/start/bootstrapping.md +41 -0
  379. package/docs/start/docs-directory.md +66 -0
  380. package/docs/start/getting-started.md +116 -0
  381. package/docs/start/hubs.md +198 -0
  382. package/docs/start/lore.md +219 -0
  383. package/docs/start/onboarding-overview.md +67 -0
  384. package/docs/start/onboarding.md +91 -0
  385. package/docs/start/openclaw.md +221 -0
  386. package/docs/start/quickstart.md +22 -0
  387. package/docs/start/setup.md +164 -0
  388. package/docs/start/showcase.md +418 -0
  389. package/docs/start/wizard-cli-automation.md +215 -0
  390. package/docs/start/wizard-cli-reference.md +299 -0
  391. package/docs/start/wizard.md +125 -0
  392. package/docs/style.css +37 -0
  393. package/docs/tools/acp-agents.md +623 -0
  394. package/docs/tools/agent-send.md +100 -0
  395. package/docs/tools/apply-patch.md +51 -0
  396. package/docs/tools/brave-search.md +93 -0
  397. package/docs/tools/browser-linux-troubleshooting.md +138 -0
  398. package/docs/tools/browser-login.md +73 -0
  399. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
  400. package/docs/tools/browser.md +731 -0
  401. package/docs/tools/btw.md +142 -0
  402. package/docs/tools/capability-cookbook.md +119 -0
  403. package/docs/tools/clawhub.md +298 -0
  404. package/docs/tools/creating-skills.md +117 -0
  405. package/docs/tools/diffs.md +386 -0
  406. package/docs/tools/elevated.md +114 -0
  407. package/docs/tools/exec-approvals.md +430 -0
  408. package/docs/tools/exec.md +207 -0
  409. package/docs/tools/firecrawl.md +140 -0
  410. package/docs/tools/index.md +137 -0
  411. package/docs/tools/llm-task.md +119 -0
  412. package/docs/tools/lobster.md +340 -0
  413. package/docs/tools/loop-detection.md +100 -0
  414. package/docs/tools/multi-agent-sandbox-tools.md +364 -0
  415. package/docs/tools/pdf.md +156 -0
  416. package/docs/tools/perplexity-search.md +174 -0
  417. package/docs/tools/plugin.md +255 -0
  418. package/docs/tools/reactions.md +64 -0
  419. package/docs/tools/skills-config.md +86 -0
  420. package/docs/tools/skills.md +309 -0
  421. package/docs/tools/slash-commands.md +294 -0
  422. package/docs/tools/subagents.md +295 -0
  423. package/docs/tools/tavily.md +125 -0
  424. package/docs/tools/thinking.md +96 -0
  425. package/docs/tools/tts.md +406 -0
  426. package/docs/tools/web.md +516 -0
  427. package/docs/tts.md +406 -0
  428. package/docs/vps.md +112 -0
  429. package/docs/web/control-ui.md +275 -0
  430. package/docs/web/dashboard.md +54 -0
  431. package/docs/web/index.md +120 -0
  432. package/docs/web/tui.md +170 -0
  433. package/docs/web/webchat.md +61 -0
  434. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  435. package/docs/whatsapp-openclaw.jpg +0 -0
  436. package/docs/zh-CN/AGENTS.md +61 -0
  437. package/docs/zh-CN/automation/auth-monitoring.md +47 -0
  438. package/docs/zh-CN/automation/cron-jobs.md +435 -0
  439. package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
  440. package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
  441. package/docs/zh-CN/automation/hooks.md +1051 -0
  442. package/docs/zh-CN/automation/poll.md +76 -0
  443. package/docs/zh-CN/automation/troubleshooting.md +8 -0
  444. package/docs/zh-CN/automation/webhook.md +163 -0
  445. package/docs/zh-CN/brave-search.md +60 -0
  446. package/docs/zh-CN/channels/bluebubbles.md +354 -0
  447. package/docs/zh-CN/channels/broadcast-groups.md +449 -0
  448. package/docs/zh-CN/channels/channel-routing.md +117 -0
  449. package/docs/zh-CN/channels/discord.md +468 -0
  450. package/docs/zh-CN/channels/feishu.md +728 -0
  451. package/docs/zh-CN/channels/googlechat.md +257 -0
  452. package/docs/zh-CN/channels/grammy.md +38 -0
  453. package/docs/zh-CN/channels/group-messages.md +91 -0
  454. package/docs/zh-CN/channels/groups.md +379 -0
  455. package/docs/zh-CN/channels/imessage.md +302 -0
  456. package/docs/zh-CN/channels/index.md +53 -0
  457. package/docs/zh-CN/channels/line.md +180 -0
  458. package/docs/zh-CN/channels/location.md +63 -0
  459. package/docs/zh-CN/channels/matrix.md +221 -0
  460. package/docs/zh-CN/channels/mattermost.md +144 -0
  461. package/docs/zh-CN/channels/msteams.md +775 -0
  462. package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
  463. package/docs/zh-CN/channels/nostr.md +249 -0
  464. package/docs/zh-CN/channels/pairing.md +89 -0
  465. package/docs/zh-CN/channels/signal.md +209 -0
  466. package/docs/zh-CN/channels/slack.md +531 -0
  467. package/docs/zh-CN/channels/synology-chat.md +138 -0
  468. package/docs/zh-CN/channels/telegram.md +751 -0
  469. package/docs/zh-CN/channels/tlon.md +136 -0
  470. package/docs/zh-CN/channels/troubleshooting.md +36 -0
  471. package/docs/zh-CN/channels/twitch.md +385 -0
  472. package/docs/zh-CN/channels/whatsapp.md +411 -0
  473. package/docs/zh-CN/channels/zalo.md +196 -0
  474. package/docs/zh-CN/channels/zalouser.md +147 -0
  475. package/docs/zh-CN/cli/acp.md +173 -0
  476. package/docs/zh-CN/cli/agent.md +30 -0
  477. package/docs/zh-CN/cli/agents.md +82 -0
  478. package/docs/zh-CN/cli/approvals.md +57 -0
  479. package/docs/zh-CN/cli/browser.md +114 -0
  480. package/docs/zh-CN/cli/channels.md +86 -0
  481. package/docs/zh-CN/cli/config.md +57 -0
  482. package/docs/zh-CN/cli/configure.md +38 -0
  483. package/docs/zh-CN/cli/cron.md +43 -0
  484. package/docs/zh-CN/cli/dashboard.md +23 -0
  485. package/docs/zh-CN/cli/devices.md +74 -0
  486. package/docs/zh-CN/cli/directory.md +70 -0
  487. package/docs/zh-CN/cli/dns.md +30 -0
  488. package/docs/zh-CN/cli/docs.md +22 -0
  489. package/docs/zh-CN/cli/doctor.md +48 -0
  490. package/docs/zh-CN/cli/gateway.md +206 -0
  491. package/docs/zh-CN/cli/health.md +28 -0
  492. package/docs/zh-CN/cli/hooks.md +298 -0
  493. package/docs/zh-CN/cli/index.md +1143 -0
  494. package/docs/zh-CN/cli/logs.md +31 -0
  495. package/docs/zh-CN/cli/memory.md +52 -0
  496. package/docs/zh-CN/cli/message.md +246 -0
  497. package/docs/zh-CN/cli/models.md +85 -0
  498. package/docs/zh-CN/cli/node.md +115 -0
  499. package/docs/zh-CN/cli/nodes.md +80 -0
  500. package/docs/zh-CN/cli/onboard.md +164 -0
  501. package/docs/zh-CN/cli/pairing.md +28 -0
  502. package/docs/zh-CN/cli/plugins.md +66 -0
  503. package/docs/zh-CN/cli/reset.md +24 -0
  504. package/docs/zh-CN/cli/sandbox.md +158 -0
  505. package/docs/zh-CN/cli/security.md +33 -0
  506. package/docs/zh-CN/cli/sessions.md +23 -0
  507. package/docs/zh-CN/cli/setup.md +36 -0
  508. package/docs/zh-CN/cli/skills.md +33 -0
  509. package/docs/zh-CN/cli/status.md +33 -0
  510. package/docs/zh-CN/cli/system.md +63 -0
  511. package/docs/zh-CN/cli/tui.md +30 -0
  512. package/docs/zh-CN/cli/uninstall.md +24 -0
  513. package/docs/zh-CN/cli/update.md +101 -0
  514. package/docs/zh-CN/cli/voicecall.md +41 -0
  515. package/docs/zh-CN/cli/webhooks.md +32 -0
  516. package/docs/zh-CN/concepts/agent-loop.md +146 -0
  517. package/docs/zh-CN/concepts/agent-workspace.md +219 -0
  518. package/docs/zh-CN/concepts/agent.md +115 -0
  519. package/docs/zh-CN/concepts/architecture.md +123 -0
  520. package/docs/zh-CN/concepts/compaction.md +67 -0
  521. package/docs/zh-CN/concepts/context.md +168 -0
  522. package/docs/zh-CN/concepts/features.md +59 -0
  523. package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
  524. package/docs/zh-CN/concepts/memory.md +412 -0
  525. package/docs/zh-CN/concepts/messages.md +141 -0
  526. package/docs/zh-CN/concepts/model-failover.md +145 -0
  527. package/docs/zh-CN/concepts/model-providers.md +606 -0
  528. package/docs/zh-CN/concepts/models.md +225 -0
  529. package/docs/zh-CN/concepts/multi-agent.md +372 -0
  530. package/docs/zh-CN/concepts/oauth.md +164 -0
  531. package/docs/zh-CN/concepts/presence.md +99 -0
  532. package/docs/zh-CN/concepts/queue.md +94 -0
  533. package/docs/zh-CN/concepts/retry.md +76 -0
  534. package/docs/zh-CN/concepts/session-pruning.md +129 -0
  535. package/docs/zh-CN/concepts/session-tool.md +200 -0
  536. package/docs/zh-CN/concepts/session.md +166 -0
  537. package/docs/zh-CN/concepts/streaming.md +133 -0
  538. package/docs/zh-CN/concepts/system-prompt.md +101 -0
  539. package/docs/zh-CN/concepts/timezone.md +96 -0
  540. package/docs/zh-CN/concepts/typebox.md +284 -0
  541. package/docs/zh-CN/concepts/typing-indicators.md +74 -0
  542. package/docs/zh-CN/concepts/usage-tracking.md +42 -0
  543. package/docs/zh-CN/date-time.md +129 -0
  544. package/docs/zh-CN/debug/node-issue.md +90 -0
  545. package/docs/zh-CN/diagnostics/flags.md +98 -0
  546. package/docs/zh-CN/gateway/authentication.md +184 -0
  547. package/docs/zh-CN/gateway/background-process.md +100 -0
  548. package/docs/zh-CN/gateway/bonjour.md +174 -0
  549. package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
  550. package/docs/zh-CN/gateway/cli-backends.md +213 -0
  551. package/docs/zh-CN/gateway/configuration-examples.md +587 -0
  552. package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
  553. package/docs/zh-CN/gateway/configuration.md +640 -0
  554. package/docs/zh-CN/gateway/discovery.md +123 -0
  555. package/docs/zh-CN/gateway/doctor.md +238 -0
  556. package/docs/zh-CN/gateway/gateway-lock.md +41 -0
  557. package/docs/zh-CN/gateway/health.md +42 -0
  558. package/docs/zh-CN/gateway/heartbeat.md +274 -0
  559. package/docs/zh-CN/gateway/index.md +335 -0
  560. package/docs/zh-CN/gateway/local-models.md +159 -0
  561. package/docs/zh-CN/gateway/logging.md +114 -0
  562. package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
  563. package/docs/zh-CN/gateway/network-model.md +23 -0
  564. package/docs/zh-CN/gateway/openai-http-api.md +125 -0
  565. package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
  566. package/docs/zh-CN/gateway/pairing.md +99 -0
  567. package/docs/zh-CN/gateway/protocol.md +220 -0
  568. package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
  569. package/docs/zh-CN/gateway/remote.md +133 -0
  570. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
  571. package/docs/zh-CN/gateway/sandboxing.md +188 -0
  572. package/docs/zh-CN/gateway/security/index.md +777 -0
  573. package/docs/zh-CN/gateway/tailscale.md +124 -0
  574. package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
  575. package/docs/zh-CN/gateway/troubleshooting.md +771 -0
  576. package/docs/zh-CN/help/debugging.md +160 -0
  577. package/docs/zh-CN/help/environment.md +88 -0
  578. package/docs/zh-CN/help/faq.md +2640 -0
  579. package/docs/zh-CN/help/index.md +28 -0
  580. package/docs/zh-CN/help/scripts.md +35 -0
  581. package/docs/zh-CN/help/testing.md +375 -0
  582. package/docs/zh-CN/help/troubleshooting.md +104 -0
  583. package/docs/zh-CN/index.md +186 -0
  584. package/docs/zh-CN/install/ansible.md +215 -0
  585. package/docs/zh-CN/install/bun.md +65 -0
  586. package/docs/zh-CN/install/development-channels.md +81 -0
  587. package/docs/zh-CN/install/docker.md +532 -0
  588. package/docs/zh-CN/install/exe-dev.md +133 -0
  589. package/docs/zh-CN/install/fly.md +490 -0
  590. package/docs/zh-CN/install/gcp.md +510 -0
  591. package/docs/zh-CN/install/hetzner.md +337 -0
  592. package/docs/zh-CN/install/index.md +235 -0
  593. package/docs/zh-CN/install/installer.md +422 -0
  594. package/docs/zh-CN/install/macos-vm.md +288 -0
  595. package/docs/zh-CN/install/migrating.md +199 -0
  596. package/docs/zh-CN/install/nix.md +99 -0
  597. package/docs/zh-CN/install/node.md +8 -0
  598. package/docs/zh-CN/install/northflank.mdx +60 -0
  599. package/docs/zh-CN/install/railway.mdx +106 -0
  600. package/docs/zh-CN/install/render.mdx +169 -0
  601. package/docs/zh-CN/install/uninstall.md +135 -0
  602. package/docs/zh-CN/install/updating.md +233 -0
  603. package/docs/zh-CN/logging.md +329 -0
  604. package/docs/zh-CN/network.md +59 -0
  605. package/docs/zh-CN/nodes/audio.md +120 -0
  606. package/docs/zh-CN/nodes/camera.md +162 -0
  607. package/docs/zh-CN/nodes/images.md +79 -0
  608. package/docs/zh-CN/nodes/index.md +348 -0
  609. package/docs/zh-CN/nodes/location-command.md +120 -0
  610. package/docs/zh-CN/nodes/media-understanding.md +380 -0
  611. package/docs/zh-CN/nodes/talk.md +97 -0
  612. package/docs/zh-CN/nodes/troubleshooting.md +8 -0
  613. package/docs/zh-CN/nodes/voicewake.md +72 -0
  614. package/docs/zh-CN/perplexity.md +102 -0
  615. package/docs/zh-CN/pi-dev.md +77 -0
  616. package/docs/zh-CN/pi.md +619 -0
  617. package/docs/zh-CN/platforms/android.md +155 -0
  618. package/docs/zh-CN/platforms/digitalocean.md +273 -0
  619. package/docs/zh-CN/platforms/index.md +60 -0
  620. package/docs/zh-CN/platforms/ios.md +114 -0
  621. package/docs/zh-CN/platforms/linux.md +100 -0
  622. package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
  623. package/docs/zh-CN/platforms/mac/canvas.md +128 -0
  624. package/docs/zh-CN/platforms/mac/child-process.md +73 -0
  625. package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
  626. package/docs/zh-CN/platforms/mac/health.md +41 -0
  627. package/docs/zh-CN/platforms/mac/icon.md +38 -0
  628. package/docs/zh-CN/platforms/mac/logging.md +64 -0
  629. package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
  630. package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
  631. package/docs/zh-CN/platforms/mac/permissions.md +46 -0
  632. package/docs/zh-CN/platforms/mac/remote.md +90 -0
  633. package/docs/zh-CN/platforms/mac/signing.md +54 -0
  634. package/docs/zh-CN/platforms/mac/skills.md +40 -0
  635. package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
  636. package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
  637. package/docs/zh-CN/platforms/mac/webchat.md +43 -0
  638. package/docs/zh-CN/platforms/mac/xpc.md +68 -0
  639. package/docs/zh-CN/platforms/macos.md +193 -0
  640. package/docs/zh-CN/platforms/oracle.md +310 -0
  641. package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
  642. package/docs/zh-CN/platforms/windows.md +247 -0
  643. package/docs/zh-CN/plugins/agent-tools.md +99 -0
  644. package/docs/zh-CN/plugins/manifest.md +68 -0
  645. package/docs/zh-CN/plugins/voice-call.md +250 -0
  646. package/docs/zh-CN/plugins/zalouser.md +88 -0
  647. package/docs/zh-CN/prose.md +141 -0
  648. package/docs/zh-CN/providers/anthropic.md +265 -0
  649. package/docs/zh-CN/providers/bedrock.md +170 -0
  650. package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
  651. package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
  652. package/docs/zh-CN/providers/deepgram.md +97 -0
  653. package/docs/zh-CN/providers/github-copilot.md +67 -0
  654. package/docs/zh-CN/providers/glm.md +50 -0
  655. package/docs/zh-CN/providers/huggingface.md +216 -0
  656. package/docs/zh-CN/providers/index.md +69 -0
  657. package/docs/zh-CN/providers/kilocode.md +80 -0
  658. package/docs/zh-CN/providers/litellm.md +160 -0
  659. package/docs/zh-CN/providers/minimax.md +222 -0
  660. package/docs/zh-CN/providers/mistral.md +61 -0
  661. package/docs/zh-CN/providers/models.md +51 -0
  662. package/docs/zh-CN/providers/moonshot.md +182 -0
  663. package/docs/zh-CN/providers/nvidia.md +62 -0
  664. package/docs/zh-CN/providers/ollama.md +359 -0
  665. package/docs/zh-CN/providers/openai.md +308 -0
  666. package/docs/zh-CN/providers/opencode-go.md +52 -0
  667. package/docs/zh-CN/providers/opencode.md +71 -0
  668. package/docs/zh-CN/providers/openrouter.md +44 -0
  669. package/docs/zh-CN/providers/qianfan.md +45 -0
  670. package/docs/zh-CN/providers/qwen.md +55 -0
  671. package/docs/zh-CN/providers/sglang.md +111 -0
  672. package/docs/zh-CN/providers/synthetic.md +106 -0
  673. package/docs/zh-CN/providers/together.md +72 -0
  674. package/docs/zh-CN/providers/venice.md +289 -0
  675. package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
  676. package/docs/zh-CN/providers/xiaomi.md +93 -0
  677. package/docs/zh-CN/providers/zai.md +53 -0
  678. package/docs/zh-CN/reference/AGENTS.default.md +131 -0
  679. package/docs/zh-CN/reference/RELEASING.md +48 -0
  680. package/docs/zh-CN/reference/api-usage-costs.md +141 -0
  681. package/docs/zh-CN/reference/credits.md +34 -0
  682. package/docs/zh-CN/reference/device-models.md +54 -0
  683. package/docs/zh-CN/reference/rpc.md +48 -0
  684. package/docs/zh-CN/reference/session-management-compaction.md +287 -0
  685. package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
  686. package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
  687. package/docs/zh-CN/reference/templates/BOOT.md +17 -0
  688. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
  689. package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
  690. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
  691. package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
  692. package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
  693. package/docs/zh-CN/reference/templates/SOUL.md +49 -0
  694. package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
  695. package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
  696. package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
  697. package/docs/zh-CN/reference/templates/USER.md +30 -0
  698. package/docs/zh-CN/reference/test.md +57 -0
  699. package/docs/zh-CN/reference/token-use.md +119 -0
  700. package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
  701. package/docs/zh-CN/reference/wizard.md +242 -0
  702. package/docs/zh-CN/security/formal-verification.md +171 -0
  703. package/docs/zh-CN/start/bootstrapping.md +9 -0
  704. package/docs/zh-CN/start/docs-directory.md +70 -0
  705. package/docs/zh-CN/start/getting-started.md +143 -0
  706. package/docs/zh-CN/start/hubs.md +194 -0
  707. package/docs/zh-CN/start/lore.md +226 -0
  708. package/docs/zh-CN/start/onboarding-overview.md +58 -0
  709. package/docs/zh-CN/start/onboarding.md +105 -0
  710. package/docs/zh-CN/start/openclaw.md +248 -0
  711. package/docs/zh-CN/start/quickstart.md +88 -0
  712. package/docs/zh-CN/start/setup.md +153 -0
  713. package/docs/zh-CN/start/showcase.md +423 -0
  714. package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
  715. package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
  716. package/docs/zh-CN/start/wizard.md +132 -0
  717. package/docs/zh-CN/tools/agent-send.md +59 -0
  718. package/docs/zh-CN/tools/apply-patch.md +57 -0
  719. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
  720. package/docs/zh-CN/tools/browser-login.md +75 -0
  721. package/docs/zh-CN/tools/browser.md +553 -0
  722. package/docs/zh-CN/tools/chrome-extension.md +183 -0
  723. package/docs/zh-CN/tools/clawhub.md +209 -0
  724. package/docs/zh-CN/tools/creating-skills.md +61 -0
  725. package/docs/zh-CN/tools/elevated.md +64 -0
  726. package/docs/zh-CN/tools/exec-approvals.md +234 -0
  727. package/docs/zh-CN/tools/exec.md +169 -0
  728. package/docs/zh-CN/tools/firecrawl.md +68 -0
  729. package/docs/zh-CN/tools/index.md +515 -0
  730. package/docs/zh-CN/tools/llm-task.md +117 -0
  731. package/docs/zh-CN/tools/lobster.md +349 -0
  732. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
  733. package/docs/zh-CN/tools/plugin.md +1612 -0
  734. package/docs/zh-CN/tools/reactions.md +29 -0
  735. package/docs/zh-CN/tools/skills-config.md +78 -0
  736. package/docs/zh-CN/tools/skills.md +279 -0
  737. package/docs/zh-CN/tools/slash-commands.md +205 -0
  738. package/docs/zh-CN/tools/subagents.md +167 -0
  739. package/docs/zh-CN/tools/thinking.md +80 -0
  740. package/docs/zh-CN/tools/web.md +289 -0
  741. package/docs/zh-CN/tts.md +375 -0
  742. package/docs/zh-CN/vps.md +47 -0
  743. package/docs/zh-CN/web/control-ui.md +191 -0
  744. package/docs/zh-CN/web/dashboard.md +53 -0
  745. package/docs/zh-CN/web/index.md +118 -0
  746. package/docs/zh-CN/web/tui.md +166 -0
  747. package/docs/zh-CN/web/webchat.md +56 -0
  748. package/package.json +841 -0
  749. package/quantumclaw.mjs +135 -0
  750. package/skills/1password/SKILL.md +70 -0
  751. package/skills/1password/references/cli-examples.md +29 -0
  752. package/skills/1password/references/get-started.md +17 -0
  753. package/skills/apple-notes/SKILL.md +77 -0
  754. package/skills/apple-reminders/SKILL.md +118 -0
  755. package/skills/bear-notes/SKILL.md +107 -0
  756. package/skills/blogwatcher/SKILL.md +69 -0
  757. package/skills/blucli/SKILL.md +47 -0
  758. package/skills/bluebubbles/SKILL.md +131 -0
  759. package/skills/camsnap/SKILL.md +45 -0
  760. package/skills/canvas/SKILL.md +198 -0
  761. package/skills/clawhub/SKILL.md +77 -0
  762. package/skills/coding-agent/SKILL.md +295 -0
  763. package/skills/discord/SKILL.md +197 -0
  764. package/skills/eightctl/SKILL.md +50 -0
  765. package/skills/gemini/SKILL.md +43 -0
  766. package/skills/gh-issues/SKILL.md +865 -0
  767. package/skills/gifgrep/SKILL.md +79 -0
  768. package/skills/github/SKILL.md +163 -0
  769. package/skills/gog/SKILL.md +116 -0
  770. package/skills/goplaces/SKILL.md +52 -0
  771. package/skills/healthcheck/SKILL.md +245 -0
  772. package/skills/himalaya/SKILL.md +257 -0
  773. package/skills/himalaya/references/configuration.md +184 -0
  774. package/skills/himalaya/references/message-composition.md +199 -0
  775. package/skills/imsg/SKILL.md +122 -0
  776. package/skills/mcporter/SKILL.md +61 -0
  777. package/skills/model-usage/SKILL.md +69 -0
  778. package/skills/model-usage/references/codexbar-cli.md +33 -0
  779. package/skills/model-usage/scripts/model_usage.py +320 -0
  780. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  781. package/skills/nano-pdf/SKILL.md +38 -0
  782. package/skills/node-connect/SKILL.md +142 -0
  783. package/skills/notion/SKILL.md +174 -0
  784. package/skills/obsidian/SKILL.md +81 -0
  785. package/skills/openai-image-gen/SKILL.md +92 -0
  786. package/skills/openai-image-gen/scripts/gen.py +328 -0
  787. package/skills/openai-image-gen/scripts/test_gen.py +140 -0
  788. package/skills/openai-whisper/SKILL.md +38 -0
  789. package/skills/openai-whisper-api/SKILL.md +52 -0
  790. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  791. package/skills/openhue/SKILL.md +112 -0
  792. package/skills/oracle/SKILL.md +125 -0
  793. package/skills/ordercli/SKILL.md +78 -0
  794. package/skills/peekaboo/SKILL.md +190 -0
  795. package/skills/sag/SKILL.md +87 -0
  796. package/skills/session-logs/SKILL.md +115 -0
  797. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  798. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  799. package/skills/skill-creator/SKILL.md +372 -0
  800. package/skills/skill-creator/license.txt +202 -0
  801. package/skills/skill-creator/scripts/init_skill.py +378 -0
  802. package/skills/skill-creator/scripts/package_skill.py +139 -0
  803. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  804. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  805. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  806. package/skills/slack/SKILL.md +144 -0
  807. package/skills/songsee/SKILL.md +49 -0
  808. package/skills/sonoscli/SKILL.md +65 -0
  809. package/skills/spotify-player/SKILL.md +64 -0
  810. package/skills/summarize/SKILL.md +87 -0
  811. package/skills/things-mac/SKILL.md +86 -0
  812. package/skills/tmux/SKILL.md +153 -0
  813. package/skills/tmux/scripts/find-sessions.sh +112 -0
  814. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  815. package/skills/trello/SKILL.md +95 -0
  816. package/skills/video-frames/SKILL.md +46 -0
  817. package/skills/video-frames/scripts/frame.sh +81 -0
  818. package/skills/voice-call/SKILL.md +45 -0
  819. package/skills/wacli/SKILL.md +72 -0
  820. package/skills/weather/SKILL.md +112 -0
  821. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,780 @@
1
+ ---
2
+ summary: "Microsoft Teams bot support status, capabilities, and configuration"
3
+ read_when:
4
+ - Working on Microsoft Teams channel features
5
+ title: "Microsoft Teams"
6
+ ---
7
+
8
+ # Microsoft Teams (plugin)
9
+
10
+ > "Abandon all hope, ye who enter here."
11
+
12
+ Updated: 2026-01-21
13
+
14
+ Status: text + DM attachments are supported; channel/group file sending requires `sharePointSiteId` + Graph permissions (see [Sending files in group chats](#sending-files-in-group-chats)). Polls are sent via Adaptive Cards.
15
+
16
+ ## Plugin required
17
+
18
+ Microsoft Teams ships as a plugin and is not bundled with the core install.
19
+
20
+ **Breaking change (2026.1.15):** Microsoft Teams moved out of core. If you use it, you must install the plugin.
21
+
22
+ Explainable: keeps core installs lighter and lets Microsoft Teams dependencies update independently.
23
+
24
+ Install via CLI (npm registry):
25
+
26
+ ```bash
27
+ quantumclaw plugins install @quantumclaw/msteams
28
+ ```
29
+
30
+ Local checkout (when running from a git repo):
31
+
32
+ ```bash
33
+ quantumclaw plugins install ./extensions/msteams
34
+ ```
35
+
36
+ If you choose Teams during setup and a git checkout is detected,
37
+ QuantumClaw will offer the local install path automatically.
38
+
39
+ Details: [Plugins](/tools/plugin)
40
+
41
+ ## Quick setup (beginner)
42
+
43
+ 1. Install the Microsoft Teams plugin.
44
+ 2. Create an **Azure Bot** (App ID + client secret + tenant ID).
45
+ 3. Configure QuantumClaw with those credentials.
46
+ 4. Expose `/api/messages` (port 3978 by default) via a public URL or tunnel.
47
+ 5. Install the Teams app package and start the gateway.
48
+
49
+ Minimal config:
50
+
51
+ ```json5
52
+ {
53
+ channels: {
54
+ msteams: {
55
+ enabled: true,
56
+ appId: "<APP_ID>",
57
+ appPassword: "<APP_PASSWORD>",
58
+ tenantId: "<TENANT_ID>",
59
+ webhook: { port: 3978, path: "/api/messages" },
60
+ },
61
+ },
62
+ }
63
+ ```
64
+
65
+ Note: group chats are blocked by default (`channels.msteams.groupPolicy: "allowlist"`). To allow group replies, set `channels.msteams.groupAllowFrom` (or use `groupPolicy: "open"` to allow any member, mention-gated).
66
+
67
+ ## Goals
68
+
69
+ - Talk to QuantumClaw via Teams DMs, group chats, or channels.
70
+ - Keep routing deterministic: replies always go back to the channel they arrived on.
71
+ - Default to safe channel behavior (mentions required unless configured otherwise).
72
+
73
+ ## Config writes
74
+
75
+ By default, Microsoft Teams is allowed to write config updates triggered by `/config set|unset` (requires `commands.config: true`).
76
+
77
+ Disable with:
78
+
79
+ ```json5
80
+ {
81
+ channels: { msteams: { configWrites: false } },
82
+ }
83
+ ```
84
+
85
+ ## Access control (DMs + groups)
86
+
87
+ **DM access**
88
+
89
+ - Default: `channels.msteams.dmPolicy = "pairing"`. Unknown senders are ignored until approved.
90
+ - `channels.msteams.allowFrom` should use stable AAD object IDs.
91
+ - UPNs/display names are mutable; direct matching is disabled by default and only enabled with `channels.msteams.dangerouslyAllowNameMatching: true`.
92
+ - The wizard can resolve names to IDs via Microsoft Graph when credentials allow.
93
+
94
+ **Group access**
95
+
96
+ - Default: `channels.msteams.groupPolicy = "allowlist"` (blocked unless you add `groupAllowFrom`). Use `channels.defaults.groupPolicy` to override the default when unset.
97
+ - `channels.msteams.groupAllowFrom` controls which senders can trigger in group chats/channels (falls back to `channels.msteams.allowFrom`).
98
+ - Set `groupPolicy: "open"` to allow any member (still mention‑gated by default).
99
+ - To allow **no channels**, set `channels.msteams.groupPolicy: "disabled"`.
100
+
101
+ Example:
102
+
103
+ ```json5
104
+ {
105
+ channels: {
106
+ msteams: {
107
+ groupPolicy: "allowlist",
108
+ groupAllowFrom: ["user@org.com"],
109
+ },
110
+ },
111
+ }
112
+ ```
113
+
114
+ **Teams + channel allowlist**
115
+
116
+ - Scope group/channel replies by listing teams and channels under `channels.msteams.teams`.
117
+ - Keys should use stable team IDs and channel conversation IDs.
118
+ - When `groupPolicy="allowlist"` and a teams allowlist is present, only listed teams/channels are accepted (mention‑gated).
119
+ - The configure wizard accepts `Team/Channel` entries and stores them for you.
120
+ - On startup, QuantumClaw resolves team/channel and user allowlist names to IDs (when Graph permissions allow)
121
+ and logs the mapping; unresolved team/channel names are kept as typed but ignored for routing by default unless `channels.msteams.dangerouslyAllowNameMatching: true` is enabled.
122
+
123
+ Example:
124
+
125
+ ```json5
126
+ {
127
+ channels: {
128
+ msteams: {
129
+ groupPolicy: "allowlist",
130
+ teams: {
131
+ "My Team": {
132
+ channels: {
133
+ General: { requireMention: true },
134
+ },
135
+ },
136
+ },
137
+ },
138
+ },
139
+ }
140
+ ```
141
+
142
+ ## How it works
143
+
144
+ 1. Install the Microsoft Teams plugin.
145
+ 2. Create an **Azure Bot** (App ID + secret + tenant ID).
146
+ 3. Build a **Teams app package** that references the bot and includes the RSC permissions below.
147
+ 4. Upload/install the Teams app into a team (or personal scope for DMs).
148
+ 5. Configure `msteams` in `~/.quantumclaw/quantumclaw.json` (or env vars) and start the gateway.
149
+ 6. The gateway listens for Bot Framework webhook traffic on `/api/messages` by default.
150
+
151
+ ## Azure Bot Setup (Prerequisites)
152
+
153
+ Before configuring QuantumClaw, you need to create an Azure Bot resource.
154
+
155
+ ### Step 1: Create Azure Bot
156
+
157
+ 1. Go to [Create Azure Bot](https://portal.azure.com/#create/Microsoft.AzureBot)
158
+ 2. Fill in the **Basics** tab:
159
+
160
+ | Field | Value |
161
+ | ------------------ | -------------------------------------------------------- |
162
+ | **Bot handle** | Your bot name, e.g., `quantumclaw-msteams` (must be unique) |
163
+ | **Subscription** | Select your Azure subscription |
164
+ | **Resource group** | Create new or use existing |
165
+ | **Pricing tier** | **Free** for dev/testing |
166
+ | **Type of App** | **Single Tenant** (recommended - see note below) |
167
+ | **Creation type** | **Create new Microsoft App ID** |
168
+
169
+ > **Deprecation notice:** Creation of new multi-tenant bots was deprecated after 2025-07-31. Use **Single Tenant** for new bots.
170
+
171
+ 3. Click **Review + create** → **Create** (wait ~1-2 minutes)
172
+
173
+ ### Step 2: Get Credentials
174
+
175
+ 1. Go to your Azure Bot resource → **Configuration**
176
+ 2. Copy **Microsoft App ID** → this is your `appId`
177
+ 3. Click **Manage Password** → go to the App Registration
178
+ 4. Under **Certificates & secrets** → **New client secret** → copy the **Value** → this is your `appPassword`
179
+ 5. Go to **Overview** → copy **Directory (tenant) ID** → this is your `tenantId`
180
+
181
+ ### Step 3: Configure Messaging Endpoint
182
+
183
+ 1. In Azure Bot → **Configuration**
184
+ 2. Set **Messaging endpoint** to your webhook URL:
185
+ - Production: `https://your-domain.com/api/messages`
186
+ - Local dev: Use a tunnel (see [Local Development](#local-development-tunneling) below)
187
+
188
+ ### Step 4: Enable Teams Channel
189
+
190
+ 1. In Azure Bot → **Channels**
191
+ 2. Click **Microsoft Teams** → Configure → Save
192
+ 3. Accept the Terms of Service
193
+
194
+ ## Local Development (Tunneling)
195
+
196
+ Teams can't reach `localhost`. Use a tunnel for local development:
197
+
198
+ **Option A: ngrok**
199
+
200
+ ```bash
201
+ ngrok http 3978
202
+ # Copy the https URL, e.g., https://abc123.ngrok.io
203
+ # Set messaging endpoint to: https://abc123.ngrok.io/api/messages
204
+ ```
205
+
206
+ **Option B: Tailscale Funnel**
207
+
208
+ ```bash
209
+ tailscale funnel 3978
210
+ # Use your Tailscale funnel URL as the messaging endpoint
211
+ ```
212
+
213
+ ## Teams Developer Portal (Alternative)
214
+
215
+ Instead of manually creating a manifest ZIP, you can use the [Teams Developer Portal](https://dev.teams.microsoft.com/apps):
216
+
217
+ 1. Click **+ New app**
218
+ 2. Fill in basic info (name, description, developer info)
219
+ 3. Go to **App features** → **Bot**
220
+ 4. Select **Enter a bot ID manually** and paste your Azure Bot App ID
221
+ 5. Check scopes: **Personal**, **Team**, **Group Chat**
222
+ 6. Click **Distribute** → **Download app package**
223
+ 7. In Teams: **Apps** → **Manage your apps** → **Upload a custom app** → select the ZIP
224
+
225
+ This is often easier than hand-editing JSON manifests.
226
+
227
+ ## Testing the Bot
228
+
229
+ **Option A: Azure Web Chat (verify webhook first)**
230
+
231
+ 1. In Azure Portal → your Azure Bot resource → **Test in Web Chat**
232
+ 2. Send a message - you should see a response
233
+ 3. This confirms your webhook endpoint works before Teams setup
234
+
235
+ **Option B: Teams (after app installation)**
236
+
237
+ 1. Install the Teams app (sideload or org catalog)
238
+ 2. Find the bot in Teams and send a DM
239
+ 3. Check gateway logs for incoming activity
240
+
241
+ ## Setup (minimal text-only)
242
+
243
+ 1. **Install the Microsoft Teams plugin**
244
+ - From npm: `quantumclaw plugins install @quantumclaw/msteams`
245
+ - From a local checkout: `quantumclaw plugins install ./extensions/msteams`
246
+
247
+ 2. **Bot registration**
248
+ - Create an Azure Bot (see above) and note:
249
+ - App ID
250
+ - Client secret (App password)
251
+ - Tenant ID (single-tenant)
252
+
253
+ 3. **Teams app manifest**
254
+ - Include a `bot` entry with `botId = <App ID>`.
255
+ - Scopes: `personal`, `team`, `groupChat`.
256
+ - `supportsFiles: true` (required for personal scope file handling).
257
+ - Add RSC permissions (below).
258
+ - Create icons: `outline.png` (32x32) and `color.png` (192x192).
259
+ - Zip all three files together: `manifest.json`, `outline.png`, `color.png`.
260
+
261
+ 4. **Configure QuantumClaw**
262
+
263
+ ```json5
264
+ {
265
+ channels: {
266
+ msteams: {
267
+ enabled: true,
268
+ appId: "<APP_ID>",
269
+ appPassword: "<APP_PASSWORD>",
270
+ tenantId: "<TENANT_ID>",
271
+ webhook: { port: 3978, path: "/api/messages" },
272
+ },
273
+ },
274
+ }
275
+ ```
276
+
277
+ You can also use environment variables instead of config keys:
278
+ - `MSTEAMS_APP_ID`
279
+ - `MSTEAMS_APP_PASSWORD`
280
+ - `MSTEAMS_TENANT_ID`
281
+
282
+ 5. **Bot endpoint**
283
+ - Set the Azure Bot Messaging Endpoint to:
284
+ - `https://<host>:3978/api/messages` (or your chosen path/port).
285
+
286
+ 6. **Run the gateway**
287
+ - The Teams channel starts automatically when the plugin is installed and `msteams` config exists with credentials.
288
+
289
+ ## History context
290
+
291
+ - `channels.msteams.historyLimit` controls how many recent channel/group messages are wrapped into the prompt.
292
+ - Falls back to `messages.groupChat.historyLimit`. Set `0` to disable (default 50).
293
+ - DM history can be limited with `channels.msteams.dmHistoryLimit` (user turns). Per-user overrides: `channels.msteams.dms["<user_id>"].historyLimit`.
294
+
295
+ ## Current Teams RSC Permissions (Manifest)
296
+
297
+ These are the **existing resourceSpecific permissions** in our Teams app manifest. They only apply inside the team/chat where the app is installed.
298
+
299
+ **For channels (team scope):**
300
+
301
+ - `ChannelMessage.Read.Group` (Application) - receive all channel messages without @mention
302
+ - `ChannelMessage.Send.Group` (Application)
303
+ - `Member.Read.Group` (Application)
304
+ - `Owner.Read.Group` (Application)
305
+ - `ChannelSettings.Read.Group` (Application)
306
+ - `TeamMember.Read.Group` (Application)
307
+ - `TeamSettings.Read.Group` (Application)
308
+
309
+ **For group chats:**
310
+
311
+ - `ChatMessage.Read.Chat` (Application) - receive all group chat messages without @mention
312
+
313
+ ## Example Teams Manifest (redacted)
314
+
315
+ Minimal, valid example with the required fields. Replace IDs and URLs.
316
+
317
+ ```json5
318
+ {
319
+ $schema: "https://developer.microsoft.com/en-us/json-schemas/teams/v1.23/MicrosoftTeams.schema.json",
320
+ manifestVersion: "1.23",
321
+ version: "1.0.0",
322
+ id: "00000000-0000-0000-0000-000000000000",
323
+ name: { short: "QuantumClaw" },
324
+ developer: {
325
+ name: "Your Org",
326
+ websiteUrl: "https://example.com",
327
+ privacyUrl: "https://example.com/privacy",
328
+ termsOfUseUrl: "https://example.com/terms",
329
+ },
330
+ description: { short: "QuantumClaw in Teams", full: "QuantumClaw in Teams" },
331
+ icons: { outline: "outline.png", color: "color.png" },
332
+ accentColor: "#5B6DEF",
333
+ bots: [
334
+ {
335
+ botId: "11111111-1111-1111-1111-111111111111",
336
+ scopes: ["personal", "team", "groupChat"],
337
+ isNotificationOnly: false,
338
+ supportsCalling: false,
339
+ supportsVideo: false,
340
+ supportsFiles: true,
341
+ },
342
+ ],
343
+ webApplicationInfo: {
344
+ id: "11111111-1111-1111-1111-111111111111",
345
+ },
346
+ authorization: {
347
+ permissions: {
348
+ resourceSpecific: [
349
+ { name: "ChannelMessage.Read.Group", type: "Application" },
350
+ { name: "ChannelMessage.Send.Group", type: "Application" },
351
+ { name: "Member.Read.Group", type: "Application" },
352
+ { name: "Owner.Read.Group", type: "Application" },
353
+ { name: "ChannelSettings.Read.Group", type: "Application" },
354
+ { name: "TeamMember.Read.Group", type: "Application" },
355
+ { name: "TeamSettings.Read.Group", type: "Application" },
356
+ { name: "ChatMessage.Read.Chat", type: "Application" },
357
+ ],
358
+ },
359
+ },
360
+ }
361
+ ```
362
+
363
+ ### Manifest caveats (must-have fields)
364
+
365
+ - `bots[].botId` **must** match the Azure Bot App ID.
366
+ - `webApplicationInfo.id` **must** match the Azure Bot App ID.
367
+ - `bots[].scopes` must include the surfaces you plan to use (`personal`, `team`, `groupChat`).
368
+ - `bots[].supportsFiles: true` is required for file handling in personal scope.
369
+ - `authorization.permissions.resourceSpecific` must include channel read/send if you want channel traffic.
370
+
371
+ ### Updating an existing app
372
+
373
+ To update an already-installed Teams app (e.g., to add RSC permissions):
374
+
375
+ 1. Update your `manifest.json` with the new settings
376
+ 2. **Increment the `version` field** (e.g., `1.0.0` → `1.1.0`)
377
+ 3. **Re-zip** the manifest with icons (`manifest.json`, `outline.png`, `color.png`)
378
+ 4. Upload the new zip:
379
+ - **Option A (Teams Admin Center):** Teams Admin Center → Teams apps → Manage apps → find your app → Upload new version
380
+ - **Option B (Sideload):** In Teams → Apps → Manage your apps → Upload a custom app
381
+ 5. **For team channels:** Reinstall the app in each team for new permissions to take effect
382
+ 6. **Fully quit and relaunch Teams** (not just close the window) to clear cached app metadata
383
+
384
+ ## Capabilities: RSC only vs Graph
385
+
386
+ ### With **Teams RSC only** (app installed, no Graph API permissions)
387
+
388
+ Works:
389
+
390
+ - Read channel message **text** content.
391
+ - Send channel message **text** content.
392
+ - Receive **personal (DM)** file attachments.
393
+
394
+ Does NOT work:
395
+
396
+ - Channel/group **image or file contents** (payload only includes HTML stub).
397
+ - Downloading attachments stored in SharePoint/OneDrive.
398
+ - Reading message history (beyond the live webhook event).
399
+
400
+ ### With **Teams RSC + Microsoft Graph Application permissions**
401
+
402
+ Adds:
403
+
404
+ - Downloading hosted contents (images pasted into messages).
405
+ - Downloading file attachments stored in SharePoint/OneDrive.
406
+ - Reading channel/chat message history via Graph.
407
+
408
+ ### RSC vs Graph API
409
+
410
+ | Capability | RSC Permissions | Graph API |
411
+ | ----------------------- | -------------------- | ----------------------------------- |
412
+ | **Real-time messages** | Yes (via webhook) | No (polling only) |
413
+ | **Historical messages** | No | Yes (can query history) |
414
+ | **Setup complexity** | App manifest only | Requires admin consent + token flow |
415
+ | **Works offline** | No (must be running) | Yes (query anytime) |
416
+
417
+ **Bottom line:** RSC is for real-time listening; Graph API is for historical access. For catching up on missed messages while offline, you need Graph API with `ChannelMessage.Read.All` (requires admin consent).
418
+
419
+ ## Graph-enabled media + history (required for channels)
420
+
421
+ If you need images/files in **channels** or want to fetch **message history**, you must enable Microsoft Graph permissions and grant admin consent.
422
+
423
+ 1. In Entra ID (Azure AD) **App Registration**, add Microsoft Graph **Application permissions**:
424
+ - `ChannelMessage.Read.All` (channel attachments + history)
425
+ - `Chat.Read.All` or `ChatMessage.Read.All` (group chats)
426
+ 2. **Grant admin consent** for the tenant.
427
+ 3. Bump the Teams app **manifest version**, re-upload, and **reinstall the app in Teams**.
428
+ 4. **Fully quit and relaunch Teams** to clear cached app metadata.
429
+
430
+ **Additional permission for user mentions:** User @mentions work out of the box for users in the conversation. However, if you want to dynamically search and mention users who are **not in the current conversation**, add `User.Read.All` (Application) permission and grant admin consent.
431
+
432
+ ## Known Limitations
433
+
434
+ ### Webhook timeouts
435
+
436
+ Teams delivers messages via HTTP webhook. If processing takes too long (e.g., slow LLM responses), you may see:
437
+
438
+ - Gateway timeouts
439
+ - Teams retrying the message (causing duplicates)
440
+ - Dropped replies
441
+
442
+ QuantumClaw handles this by returning quickly and sending replies proactively, but very slow responses may still cause issues.
443
+
444
+ ### Formatting
445
+
446
+ Teams markdown is more limited than Slack or Discord:
447
+
448
+ - Basic formatting works: **bold**, _italic_, `code`, links
449
+ - Complex markdown (tables, nested lists) may not render correctly
450
+ - Adaptive Cards are supported for polls and arbitrary card sends (see below)
451
+
452
+ ## Configuration
453
+
454
+ Key settings (see `/gateway/configuration` for shared channel patterns):
455
+
456
+ - `channels.msteams.enabled`: enable/disable the channel.
457
+ - `channels.msteams.appId`, `channels.msteams.appPassword`, `channels.msteams.tenantId`: bot credentials.
458
+ - `channels.msteams.webhook.port` (default `3978`)
459
+ - `channels.msteams.webhook.path` (default `/api/messages`)
460
+ - `channels.msteams.dmPolicy`: `pairing | allowlist | open | disabled` (default: pairing)
461
+ - `channels.msteams.allowFrom`: DM allowlist (AAD object IDs recommended). The wizard resolves names to IDs during setup when Graph access is available.
462
+ - `channels.msteams.dangerouslyAllowNameMatching`: break-glass toggle to re-enable mutable UPN/display-name matching and direct team/channel name routing.
463
+ - `channels.msteams.textChunkLimit`: outbound text chunk size.
464
+ - `channels.msteams.chunkMode`: `length` (default) or `newline` to split on blank lines (paragraph boundaries) before length chunking.
465
+ - `channels.msteams.mediaAllowHosts`: allowlist for inbound attachment hosts (defaults to Microsoft/Teams domains).
466
+ - `channels.msteams.mediaAuthAllowHosts`: allowlist for attaching Authorization headers on media retries (defaults to Graph + Bot Framework hosts).
467
+ - `channels.msteams.requireMention`: require @mention in channels/groups (default true).
468
+ - `channels.msteams.replyStyle`: `thread | top-level` (see [Reply Style](#reply-style-threads-vs-posts)).
469
+ - `channels.msteams.teams.<teamId>.replyStyle`: per-team override.
470
+ - `channels.msteams.teams.<teamId>.requireMention`: per-team override.
471
+ - `channels.msteams.teams.<teamId>.tools`: default per-team tool policy overrides (`allow`/`deny`/`alsoAllow`) used when a channel override is missing.
472
+ - `channels.msteams.teams.<teamId>.toolsBySender`: default per-team per-sender tool policy overrides (`"*"` wildcard supported).
473
+ - `channels.msteams.teams.<teamId>.channels.<conversationId>.replyStyle`: per-channel override.
474
+ - `channels.msteams.teams.<teamId>.channels.<conversationId>.requireMention`: per-channel override.
475
+ - `channels.msteams.teams.<teamId>.channels.<conversationId>.tools`: per-channel tool policy overrides (`allow`/`deny`/`alsoAllow`).
476
+ - `channels.msteams.teams.<teamId>.channels.<conversationId>.toolsBySender`: per-channel per-sender tool policy overrides (`"*"` wildcard supported).
477
+ - `toolsBySender` keys should use explicit prefixes:
478
+ `id:`, `e164:`, `username:`, `name:` (legacy unprefixed keys still map to `id:` only).
479
+ - `channels.msteams.sharePointSiteId`: SharePoint site ID for file uploads in group chats/channels (see [Sending files in group chats](#sending-files-in-group-chats)).
480
+
481
+ ## Routing & Sessions
482
+
483
+ - Session keys follow the standard agent format (see [/concepts/session](/concepts/session)):
484
+ - Direct messages share the main session (`agent:<agentId>:<mainKey>`).
485
+ - Channel/group messages use conversation id:
486
+ - `agent:<agentId>:msteams:channel:<conversationId>`
487
+ - `agent:<agentId>:msteams:group:<conversationId>`
488
+
489
+ ## Reply Style: Threads vs Posts
490
+
491
+ Teams recently introduced two channel UI styles over the same underlying data model:
492
+
493
+ | Style | Description | Recommended `replyStyle` |
494
+ | ------------------------ | --------------------------------------------------------- | ------------------------ |
495
+ | **Posts** (classic) | Messages appear as cards with threaded replies underneath | `thread` (default) |
496
+ | **Threads** (Slack-like) | Messages flow linearly, more like Slack | `top-level` |
497
+
498
+ **The problem:** The Teams API does not expose which UI style a channel uses. If you use the wrong `replyStyle`:
499
+
500
+ - `thread` in a Threads-style channel → replies appear nested awkwardly
501
+ - `top-level` in a Posts-style channel → replies appear as separate top-level posts instead of in-thread
502
+
503
+ **Solution:** Configure `replyStyle` per-channel based on how the channel is set up:
504
+
505
+ ```json5
506
+ {
507
+ channels: {
508
+ msteams: {
509
+ replyStyle: "thread",
510
+ teams: {
511
+ "19:abc...@thread.tacv2": {
512
+ channels: {
513
+ "19:xyz...@thread.tacv2": {
514
+ replyStyle: "top-level",
515
+ },
516
+ },
517
+ },
518
+ },
519
+ },
520
+ },
521
+ }
522
+ ```
523
+
524
+ ## Attachments & Images
525
+
526
+ **Current limitations:**
527
+
528
+ - **DMs:** Images and file attachments work via Teams bot file APIs.
529
+ - **Channels/groups:** Attachments live in M365 storage (SharePoint/OneDrive). The webhook payload only includes an HTML stub, not the actual file bytes. **Graph API permissions are required** to download channel attachments.
530
+
531
+ Without Graph permissions, channel messages with images will be received as text-only (the image content is not accessible to the bot).
532
+ By default, QuantumClaw only downloads media from Microsoft/Teams hostnames. Override with `channels.msteams.mediaAllowHosts` (use `["*"]` to allow any host).
533
+ Authorization headers are only attached for hosts in `channels.msteams.mediaAuthAllowHosts` (defaults to Graph + Bot Framework hosts). Keep this list strict (avoid multi-tenant suffixes).
534
+
535
+ ## Sending files in group chats
536
+
537
+ Bots can send files in DMs using the FileConsentCard flow (built-in). However, **sending files in group chats/channels** requires additional setup:
538
+
539
+ | Context | How files are sent | Setup needed |
540
+ | ------------------------ | -------------------------------------------- | ----------------------------------------------- |
541
+ | **DMs** | FileConsentCard → user accepts → bot uploads | Works out of the box |
542
+ | **Group chats/channels** | Upload to SharePoint → share link | Requires `sharePointSiteId` + Graph permissions |
543
+ | **Images (any context)** | Base64-encoded inline | Works out of the box |
544
+
545
+ ### Why group chats need SharePoint
546
+
547
+ Bots don't have a personal OneDrive drive (the `/me/drive` Graph API endpoint doesn't work for application identities). To send files in group chats/channels, the bot uploads to a **SharePoint site** and creates a sharing link.
548
+
549
+ ### Setup
550
+
551
+ 1. **Add Graph API permissions** in Entra ID (Azure AD) → App Registration:
552
+ - `Sites.ReadWrite.All` (Application) - upload files to SharePoint
553
+ - `Chat.Read.All` (Application) - optional, enables per-user sharing links
554
+
555
+ 2. **Grant admin consent** for the tenant.
556
+
557
+ 3. **Get your SharePoint site ID:**
558
+
559
+ ```bash
560
+ # Via Graph Explorer or curl with a valid token:
561
+ curl -H "Authorization: Bearer $TOKEN" \
562
+ "https://graph.microsoft.com/v1.0/sites/{hostname}:/{site-path}"
563
+
564
+ # Example: for a site at "contoso.sharepoint.com/sites/BotFiles"
565
+ curl -H "Authorization: Bearer $TOKEN" \
566
+ "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/BotFiles"
567
+
568
+ # Response includes: "id": "contoso.sharepoint.com,guid1,guid2"
569
+ ```
570
+
571
+ 4. **Configure QuantumClaw:**
572
+
573
+ ```json5
574
+ {
575
+ channels: {
576
+ msteams: {
577
+ // ... other config ...
578
+ sharePointSiteId: "contoso.sharepoint.com,guid1,guid2",
579
+ },
580
+ },
581
+ }
582
+ ```
583
+
584
+ ### Sharing behavior
585
+
586
+ | Permission | Sharing behavior |
587
+ | --------------------------------------- | --------------------------------------------------------- |
588
+ | `Sites.ReadWrite.All` only | Organization-wide sharing link (anyone in org can access) |
589
+ | `Sites.ReadWrite.All` + `Chat.Read.All` | Per-user sharing link (only chat members can access) |
590
+
591
+ Per-user sharing is more secure as only the chat participants can access the file. If `Chat.Read.All` permission is missing, the bot falls back to organization-wide sharing.
592
+
593
+ ### Fallback behavior
594
+
595
+ | Scenario | Result |
596
+ | ------------------------------------------------- | -------------------------------------------------- |
597
+ | Group chat + file + `sharePointSiteId` configured | Upload to SharePoint, send sharing link |
598
+ | Group chat + file + no `sharePointSiteId` | Attempt OneDrive upload (may fail), send text only |
599
+ | Personal chat + file | FileConsentCard flow (works without SharePoint) |
600
+ | Any context + image | Base64-encoded inline (works without SharePoint) |
601
+
602
+ ### Files stored location
603
+
604
+ Uploaded files are stored in a `/QuantumClawShared/` folder in the configured SharePoint site's default document library.
605
+
606
+ ## Polls (Adaptive Cards)
607
+
608
+ QuantumClaw sends Teams polls as Adaptive Cards (there is no native Teams poll API).
609
+
610
+ - CLI: `quantumclaw message poll --channel msteams --target conversation:<id> ...`
611
+ - Votes are recorded by the gateway in `~/.quantumclaw/msteams-polls.json`.
612
+ - The gateway must stay online to record votes.
613
+ - Polls do not auto-post result summaries yet (inspect the store file if needed).
614
+
615
+ ## Adaptive Cards (arbitrary)
616
+
617
+ Send any Adaptive Card JSON to Teams users or conversations using the `message` tool or CLI.
618
+
619
+ The `card` parameter accepts an Adaptive Card JSON object. When `card` is provided, the message text is optional.
620
+
621
+ **Agent tool:**
622
+
623
+ ```json5
624
+ {
625
+ action: "send",
626
+ channel: "msteams",
627
+ target: "user:<id>",
628
+ card: {
629
+ type: "AdaptiveCard",
630
+ version: "1.5",
631
+ body: [{ type: "TextBlock", text: "Hello!" }],
632
+ },
633
+ }
634
+ ```
635
+
636
+ **CLI:**
637
+
638
+ ```bash
639
+ quantumclaw message send --channel msteams \
640
+ --target "conversation:19:abc...@thread.tacv2" \
641
+ --card '{"type":"AdaptiveCard","version":"1.5","body":[{"type":"TextBlock","text":"Hello!"}]}'
642
+ ```
643
+
644
+ See [Adaptive Cards documentation](https://adaptivecards.io/) for card schema and examples. For target format details, see [Target formats](#target-formats) below.
645
+
646
+ ## Target formats
647
+
648
+ MSTeams targets use prefixes to distinguish between users and conversations:
649
+
650
+ | Target type | Format | Example |
651
+ | ------------------- | -------------------------------- | --------------------------------------------------- |
652
+ | User (by ID) | `user:<aad-object-id>` | `user:40a1a0ed-4ff2-4164-a219-55518990c197` |
653
+ | User (by name) | `user:<display-name>` | `user:John Smith` (requires Graph API) |
654
+ | Group/channel | `conversation:<conversation-id>` | `conversation:19:abc123...@thread.tacv2` |
655
+ | Group/channel (raw) | `<conversation-id>` | `19:abc123...@thread.tacv2` (if contains `@thread`) |
656
+
657
+ **CLI examples:**
658
+
659
+ ```bash
660
+ # Send to a user by ID
661
+ quantumclaw message send --channel msteams --target "user:40a1a0ed-..." --message "Hello"
662
+
663
+ # Send to a user by display name (triggers Graph API lookup)
664
+ quantumclaw message send --channel msteams --target "user:John Smith" --message "Hello"
665
+
666
+ # Send to a group chat or channel
667
+ quantumclaw message send --channel msteams --target "conversation:19:abc...@thread.tacv2" --message "Hello"
668
+
669
+ # Send an Adaptive Card to a conversation
670
+ quantumclaw message send --channel msteams --target "conversation:19:abc...@thread.tacv2" \
671
+ --card '{"type":"AdaptiveCard","version":"1.5","body":[{"type":"TextBlock","text":"Hello"}]}'
672
+ ```
673
+
674
+ **Agent tool examples:**
675
+
676
+ ```json5
677
+ {
678
+ action: "send",
679
+ channel: "msteams",
680
+ target: "user:John Smith",
681
+ message: "Hello!",
682
+ }
683
+ ```
684
+
685
+ ```json5
686
+ {
687
+ action: "send",
688
+ channel: "msteams",
689
+ target: "conversation:19:abc...@thread.tacv2",
690
+ card: {
691
+ type: "AdaptiveCard",
692
+ version: "1.5",
693
+ body: [{ type: "TextBlock", text: "Hello" }],
694
+ },
695
+ }
696
+ ```
697
+
698
+ Note: Without the `user:` prefix, names default to group/team resolution. Always use `user:` when targeting people by display name.
699
+
700
+ ## Proactive messaging
701
+
702
+ - Proactive messages are only possible **after** a user has interacted, because we store conversation references at that point.
703
+ - See `/gateway/configuration` for `dmPolicy` and allowlist gating.
704
+
705
+ ## Team and Channel IDs (Common Gotcha)
706
+
707
+ The `groupId` query parameter in Teams URLs is **NOT** the team ID used for configuration. Extract IDs from the URL path instead:
708
+
709
+ **Team URL:**
710
+
711
+ ```
712
+ https://teams.microsoft.com/l/team/19%3ABk4j...%40thread.tacv2/conversations?groupId=...
713
+ └────────────────────────────┘
714
+ Team ID (URL-decode this)
715
+ ```
716
+
717
+ **Channel URL:**
718
+
719
+ ```
720
+ https://teams.microsoft.com/l/channel/19%3A15bc...%40thread.tacv2/ChannelName?groupId=...
721
+ └─────────────────────────┘
722
+ Channel ID (URL-decode this)
723
+ ```
724
+
725
+ **For config:**
726
+
727
+ - Team ID = path segment after `/team/` (URL-decoded, e.g., `19:Bk4j...@thread.tacv2`)
728
+ - Channel ID = path segment after `/channel/` (URL-decoded)
729
+ - **Ignore** the `groupId` query parameter
730
+
731
+ ## Private Channels
732
+
733
+ Bots have limited support in private channels:
734
+
735
+ | Feature | Standard Channels | Private Channels |
736
+ | ---------------------------- | ----------------- | ---------------------- |
737
+ | Bot installation | Yes | Limited |
738
+ | Real-time messages (webhook) | Yes | May not work |
739
+ | RSC permissions | Yes | May behave differently |
740
+ | @mentions | Yes | If bot is accessible |
741
+ | Graph API history | Yes | Yes (with permissions) |
742
+
743
+ **Workarounds if private channels don't work:**
744
+
745
+ 1. Use standard channels for bot interactions
746
+ 2. Use DMs - users can always message the bot directly
747
+ 3. Use Graph API for historical access (requires `ChannelMessage.Read.All`)
748
+
749
+ ## Troubleshooting
750
+
751
+ ### Common issues
752
+
753
+ - **Images not showing in channels:** Graph permissions or admin consent missing. Reinstall the Teams app and fully quit/reopen Teams.
754
+ - **No responses in channel:** mentions are required by default; set `channels.msteams.requireMention=false` or configure per team/channel.
755
+ - **Version mismatch (Teams still shows old manifest):** remove + re-add the app and fully quit Teams to refresh.
756
+ - **401 Unauthorized from webhook:** Expected when testing manually without Azure JWT - means endpoint is reachable but auth failed. Use Azure Web Chat to test properly.
757
+
758
+ ### Manifest upload errors
759
+
760
+ - **"Icon file cannot be empty":** The manifest references icon files that are 0 bytes. Create valid PNG icons (32x32 for `outline.png`, 192x192 for `color.png`).
761
+ - **"webApplicationInfo.Id already in use":** The app is still installed in another team/chat. Find and uninstall it first, or wait 5-10 minutes for propagation.
762
+ - **"Something went wrong" on upload:** Upload via [https://admin.teams.microsoft.com](https://admin.teams.microsoft.com) instead, open browser DevTools (F12) → Network tab, and check the response body for the actual error.
763
+ - **Sideload failing:** Try "Upload an app to your org's app catalog" instead of "Upload a custom app" - this often bypasses sideload restrictions.
764
+
765
+ ### RSC permissions not working
766
+
767
+ 1. Verify `webApplicationInfo.id` matches your bot's App ID exactly
768
+ 2. Re-upload the app and reinstall in the team/chat
769
+ 3. Check if your org admin has blocked RSC permissions
770
+ 4. Confirm you're using the right scope: `ChannelMessage.Read.Group` for teams, `ChatMessage.Read.Chat` for group chats
771
+
772
+ ## References
773
+
774
+ - [Create Azure Bot](https://learn.microsoft.com/en-us/azure/bot-service/bot-service-quickstart-registration) - Azure Bot setup guide
775
+ - [Teams Developer Portal](https://dev.teams.microsoft.com/apps) - create/manage Teams apps
776
+ - [Teams app manifest schema](https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema)
777
+ - [Receive channel messages with RSC](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/channel-messages-with-rsc)
778
+ - [RSC permissions reference](https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/rsc/resource-specific-consent)
779
+ - [Teams bot file handling](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/bots-filesv4) (channel/group requires Graph)
780
+ - [Proactive messaging](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages)