durar-ai 2026.4.4

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 (571) hide show
  1. package/CHANGELOG.md +5497 -0
  2. package/LICENSE +21 -0
  3. package/README.md +614 -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 +72 -0
  12. package/docs/.i18n/ar-navigation.json +18 -0
  13. package/docs/.i18n/de-navigation.json +18 -0
  14. package/docs/.i18n/es-navigation.json +18 -0
  15. package/docs/.i18n/fr-navigation.json +18 -0
  16. package/docs/.i18n/glossary.ar.json +5 -0
  17. package/docs/.i18n/glossary.de.json +5 -0
  18. package/docs/.i18n/glossary.es.json +5 -0
  19. package/docs/.i18n/glossary.fr.json +5 -0
  20. package/docs/.i18n/glossary.id.json +5 -0
  21. package/docs/.i18n/glossary.it.json +5 -0
  22. package/docs/.i18n/glossary.ja-JP.json +14 -0
  23. package/docs/.i18n/glossary.ko.json +5 -0
  24. package/docs/.i18n/glossary.pl.json +5 -0
  25. package/docs/.i18n/glossary.pt-BR.json +5 -0
  26. package/docs/.i18n/glossary.tr.json +5 -0
  27. package/docs/.i18n/glossary.zh-CN.json +358 -0
  28. package/docs/.i18n/id-navigation.json +18 -0
  29. package/docs/.i18n/it-navigation.json +18 -0
  30. package/docs/.i18n/ja-navigation.json +18 -0
  31. package/docs/.i18n/ko-navigation.json +18 -0
  32. package/docs/.i18n/pl-navigation.json +18 -0
  33. package/docs/.i18n/pt-BR-navigation.json +18 -0
  34. package/docs/.i18n/tr-navigation.json +18 -0
  35. package/docs/.i18n/zh-Hans-navigation.json +544 -0
  36. package/docs/assets/install-script.svg +1 -0
  37. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  38. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  39. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  40. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  41. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  42. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  43. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  44. package/docs/assets/openclaw-logo-text.png +0 -0
  45. package/docs/assets/openclaw-logo-text.svg +418 -0
  46. package/docs/assets/pixel-lobster.svg +60 -0
  47. package/docs/assets/showcase/agents-ui.jpg +0 -0
  48. package/docs/assets/showcase/bambu-cli.png +0 -0
  49. package/docs/assets/showcase/codexmonitor.png +0 -0
  50. package/docs/assets/showcase/gohome-grafana.png +0 -0
  51. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  52. package/docs/assets/showcase/oura-health.png +0 -0
  53. package/docs/assets/showcase/padel-cli.svg +11 -0
  54. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  55. package/docs/assets/showcase/papla-tts.jpg +0 -0
  56. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  57. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  58. package/docs/assets/showcase/roborock-status.svg +13 -0
  59. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  60. package/docs/assets/showcase/snag.png +0 -0
  61. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  62. package/docs/assets/showcase/wienerlinien.png +0 -0
  63. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  64. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  65. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  66. package/docs/assets/sponsors/blacksmith-light.svg +14 -0
  67. package/docs/assets/sponsors/blacksmith.svg +14 -0
  68. package/docs/assets/sponsors/convex-light.svg +16 -0
  69. package/docs/assets/sponsors/convex.svg +16 -0
  70. package/docs/assets/sponsors/github-light.svg +3 -0
  71. package/docs/assets/sponsors/github.svg +3 -0
  72. package/docs/assets/sponsors/nvidia-dark.svg +9 -0
  73. package/docs/assets/sponsors/nvidia.svg +9 -0
  74. package/docs/assets/sponsors/openai-light.svg +3 -0
  75. package/docs/assets/sponsors/openai.svg +3 -0
  76. package/docs/assets/sponsors/vercel-light.svg +5 -0
  77. package/docs/assets/sponsors/vercel.svg +5 -0
  78. package/docs/auth-credential-semantics.md +80 -0
  79. package/docs/automation/auth-monitoring.md +8 -0
  80. package/docs/automation/clawflow.md +8 -0
  81. package/docs/automation/cron-jobs.md +410 -0
  82. package/docs/automation/cron-vs-heartbeat.md +8 -0
  83. package/docs/automation/gmail-pubsub.md +8 -0
  84. package/docs/automation/hooks.md +303 -0
  85. package/docs/automation/index.md +115 -0
  86. package/docs/automation/poll.md +8 -0
  87. package/docs/automation/standing-orders.md +254 -0
  88. package/docs/automation/taskflow.md +82 -0
  89. package/docs/automation/tasks.md +323 -0
  90. package/docs/automation/troubleshooting.md +8 -0
  91. package/docs/automation/webhook.md +8 -0
  92. package/docs/brave-search.md +103 -0
  93. package/docs/channels/bluebubbles.md +435 -0
  94. package/docs/channels/broadcast-groups.md +442 -0
  95. package/docs/channels/channel-routing.md +139 -0
  96. package/docs/channels/discord.md +1254 -0
  97. package/docs/channels/feishu.md +793 -0
  98. package/docs/channels/googlechat.md +270 -0
  99. package/docs/channels/group-messages.md +84 -0
  100. package/docs/channels/groups.md +410 -0
  101. package/docs/channels/imessage.md +427 -0
  102. package/docs/channels/index.md +50 -0
  103. package/docs/channels/irc.md +252 -0
  104. package/docs/channels/line.md +225 -0
  105. package/docs/channels/location.md +56 -0
  106. package/docs/channels/matrix.md +869 -0
  107. package/docs/channels/mattermost.md +472 -0
  108. package/docs/channels/msteams.md +805 -0
  109. package/docs/channels/nextcloud-talk.md +149 -0
  110. package/docs/channels/nostr.md +252 -0
  111. package/docs/channels/pairing.md +129 -0
  112. package/docs/channels/qqbot.md +193 -0
  113. package/docs/channels/signal.md +337 -0
  114. package/docs/channels/slack.md +681 -0
  115. package/docs/channels/synology-chat.md +185 -0
  116. package/docs/channels/telegram.md +1072 -0
  117. package/docs/channels/tlon.md +290 -0
  118. package/docs/channels/troubleshooting.md +133 -0
  119. package/docs/channels/twitch.md +394 -0
  120. package/docs/channels/whatsapp.md +488 -0
  121. package/docs/channels/zalo.md +254 -0
  122. package/docs/channels/zalouser.md +195 -0
  123. package/docs/ci.md +66 -0
  124. package/docs/cli/acp.md +316 -0
  125. package/docs/cli/agent.md +57 -0
  126. package/docs/cli/agents.md +220 -0
  127. package/docs/cli/approvals.md +136 -0
  128. package/docs/cli/backup.md +84 -0
  129. package/docs/cli/browser.md +233 -0
  130. package/docs/cli/channels.md +131 -0
  131. package/docs/cli/clawbot.md +21 -0
  132. package/docs/cli/completion.md +35 -0
  133. package/docs/cli/config.md +353 -0
  134. package/docs/cli/configure.md +70 -0
  135. package/docs/cli/cron.md +167 -0
  136. package/docs/cli/daemon.md +57 -0
  137. package/docs/cli/dashboard.md +22 -0
  138. package/docs/cli/devices.md +171 -0
  139. package/docs/cli/directory.md +63 -0
  140. package/docs/cli/dns.md +48 -0
  141. package/docs/cli/docs.md +28 -0
  142. package/docs/cli/doctor.md +63 -0
  143. package/docs/cli/flows.md +18 -0
  144. package/docs/cli/gateway.md +307 -0
  145. package/docs/cli/health.md +36 -0
  146. package/docs/cli/hooks.md +337 -0
  147. package/docs/cli/index.md +1836 -0
  148. package/docs/cli/logs.md +59 -0
  149. package/docs/cli/mcp.md +505 -0
  150. package/docs/cli/memory.md +139 -0
  151. package/docs/cli/message.md +300 -0
  152. package/docs/cli/models.md +136 -0
  153. package/docs/cli/node.md +137 -0
  154. package/docs/cli/nodes.md +66 -0
  155. package/docs/cli/onboard.md +171 -0
  156. package/docs/cli/pairing.md +65 -0
  157. package/docs/cli/plugins.md +305 -0
  158. package/docs/cli/qr.md +52 -0
  159. package/docs/cli/reset.md +35 -0
  160. package/docs/cli/sandbox.md +197 -0
  161. package/docs/cli/secrets.md +197 -0
  162. package/docs/cli/security.md +86 -0
  163. package/docs/cli/sessions.md +113 -0
  164. package/docs/cli/setup.md +45 -0
  165. package/docs/cli/skills.md +59 -0
  166. package/docs/cli/status.md +35 -0
  167. package/docs/cli/system.md +71 -0
  168. package/docs/cli/tui.md +30 -0
  169. package/docs/cli/uninstall.md +39 -0
  170. package/docs/cli/update.md +113 -0
  171. package/docs/cli/voicecall.md +34 -0
  172. package/docs/cli/webhooks.md +91 -0
  173. package/docs/concepts/agent-loop.md +168 -0
  174. package/docs/concepts/agent-workspace.md +246 -0
  175. package/docs/concepts/agent.md +129 -0
  176. package/docs/concepts/architecture.md +156 -0
  177. package/docs/concepts/compaction.md +122 -0
  178. package/docs/concepts/context-engine.md +274 -0
  179. package/docs/concepts/context.md +179 -0
  180. package/docs/concepts/delegate-architecture.md +307 -0
  181. package/docs/concepts/dreaming.md +173 -0
  182. package/docs/concepts/features.md +76 -0
  183. package/docs/concepts/markdown-formatting.md +130 -0
  184. package/docs/concepts/memory-builtin.md +105 -0
  185. package/docs/concepts/memory-honcho.md +140 -0
  186. package/docs/concepts/memory-qmd.md +163 -0
  187. package/docs/concepts/memory-search.md +141 -0
  188. package/docs/concepts/memory.md +121 -0
  189. package/docs/concepts/messages.md +161 -0
  190. package/docs/concepts/model-failover.md +349 -0
  191. package/docs/concepts/model-providers.md +799 -0
  192. package/docs/concepts/models.md +255 -0
  193. package/docs/concepts/multi-agent.md +615 -0
  194. package/docs/concepts/oauth.md +225 -0
  195. package/docs/concepts/presence.md +102 -0
  196. package/docs/concepts/queue.md +89 -0
  197. package/docs/concepts/retry.md +69 -0
  198. package/docs/concepts/session-pruning.md +92 -0
  199. package/docs/concepts/session-tool.md +141 -0
  200. package/docs/concepts/session.md +116 -0
  201. package/docs/concepts/soul.md +110 -0
  202. package/docs/concepts/streaming.md +161 -0
  203. package/docs/concepts/system-prompt.md +182 -0
  204. package/docs/concepts/timezone.md +97 -0
  205. package/docs/concepts/typebox.md +307 -0
  206. package/docs/concepts/typing-indicators.md +69 -0
  207. package/docs/concepts/usage-tracking.md +59 -0
  208. package/docs/date-time.md +128 -0
  209. package/docs/debug/node-issue.md +85 -0
  210. package/docs/diagnostics/flags.md +91 -0
  211. package/docs/docs.json +1601 -0
  212. package/docs/gateway/authentication.md +218 -0
  213. package/docs/gateway/background-process.md +131 -0
  214. package/docs/gateway/bonjour.md +179 -0
  215. package/docs/gateway/bridge-protocol.md +89 -0
  216. package/docs/gateway/cli-backends.md +310 -0
  217. package/docs/gateway/configuration-examples.md +631 -0
  218. package/docs/gateway/configuration-reference.md +3618 -0
  219. package/docs/gateway/configuration.md +698 -0
  220. package/docs/gateway/discovery.md +141 -0
  221. package/docs/gateway/doctor.md +494 -0
  222. package/docs/gateway/gateway-lock.md +37 -0
  223. package/docs/gateway/health.md +61 -0
  224. package/docs/gateway/heartbeat.md +443 -0
  225. package/docs/gateway/index.md +367 -0
  226. package/docs/gateway/local-models.md +163 -0
  227. package/docs/gateway/logging.md +113 -0
  228. package/docs/gateway/multiple-gateways.md +120 -0
  229. package/docs/gateway/network-model.md +25 -0
  230. package/docs/gateway/openai-http-api.md +280 -0
  231. package/docs/gateway/openresponses-http-api.md +340 -0
  232. package/docs/gateway/openshell.md +307 -0
  233. package/docs/gateway/pairing.md +138 -0
  234. package/docs/gateway/protocol.md +588 -0
  235. package/docs/gateway/remote-gateway-readme.md +164 -0
  236. package/docs/gateway/remote.md +251 -0
  237. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +141 -0
  238. package/docs/gateway/sandboxing.md +473 -0
  239. package/docs/gateway/secrets-plan-contract.md +116 -0
  240. package/docs/gateway/secrets.md +541 -0
  241. package/docs/gateway/security/index.md +1362 -0
  242. package/docs/gateway/tailscale.md +136 -0
  243. package/docs/gateway/tools-invoke-http-api.md +161 -0
  244. package/docs/gateway/troubleshooting.md +451 -0
  245. package/docs/gateway/trusted-proxy-auth.md +399 -0
  246. package/docs/help/debugging.md +168 -0
  247. package/docs/help/environment.md +165 -0
  248. package/docs/help/faq.md +3244 -0
  249. package/docs/help/index.md +28 -0
  250. package/docs/help/scripts.md +27 -0
  251. package/docs/help/testing.md +640 -0
  252. package/docs/help/troubleshooting.md +372 -0
  253. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  254. package/docs/images/feishu-step2-create-app.png +0 -0
  255. package/docs/images/feishu-step3-credentials.png +0 -0
  256. package/docs/images/feishu-step4-permissions.png +0 -0
  257. package/docs/images/feishu-step5-bot-capability.png +0 -0
  258. package/docs/images/feishu-step6-event-subscription.png +0 -0
  259. package/docs/images/feishu-verification-token.png +0 -0
  260. package/docs/images/groups-flow.svg +52 -0
  261. package/docs/images/mobile-ui-screenshot.png +0 -0
  262. package/docs/index.md +196 -0
  263. package/docs/install/ansible.md +230 -0
  264. package/docs/install/azure.md +311 -0
  265. package/docs/install/bun.md +55 -0
  266. package/docs/install/clawdock.md +106 -0
  267. package/docs/install/development-channels.md +131 -0
  268. package/docs/install/digitalocean.md +129 -0
  269. package/docs/install/docker-vm-runtime.md +142 -0
  270. package/docs/install/docker.md +412 -0
  271. package/docs/install/exe-dev.md +133 -0
  272. package/docs/install/fly.md +504 -0
  273. package/docs/install/gcp.md +412 -0
  274. package/docs/install/hetzner.md +259 -0
  275. package/docs/install/index.md +212 -0
  276. package/docs/install/installer.md +443 -0
  277. package/docs/install/kubernetes.md +192 -0
  278. package/docs/install/macos-vm.md +281 -0
  279. package/docs/install/migrating-matrix.md +349 -0
  280. package/docs/install/migrating.md +112 -0
  281. package/docs/install/nix.md +89 -0
  282. package/docs/install/node.md +144 -0
  283. package/docs/install/northflank.mdx +42 -0
  284. package/docs/install/oracle.md +158 -0
  285. package/docs/install/podman.md +210 -0
  286. package/docs/install/railway.mdx +90 -0
  287. package/docs/install/raspberry-pi.md +159 -0
  288. package/docs/install/render.mdx +165 -0
  289. package/docs/install/uninstall.md +128 -0
  290. package/docs/install/updating.md +142 -0
  291. package/docs/logging.md +389 -0
  292. package/docs/nav-tabs-underline.js +100 -0
  293. package/docs/network.md +69 -0
  294. package/docs/nodes/audio.md +191 -0
  295. package/docs/nodes/camera.md +162 -0
  296. package/docs/nodes/images.md +73 -0
  297. package/docs/nodes/index.md +408 -0
  298. package/docs/nodes/location-command.md +98 -0
  299. package/docs/nodes/media-understanding.md +432 -0
  300. package/docs/nodes/talk.md +92 -0
  301. package/docs/nodes/troubleshooting.md +123 -0
  302. package/docs/nodes/voicewake.md +66 -0
  303. package/docs/perplexity.md +181 -0
  304. package/docs/pi-dev.md +80 -0
  305. package/docs/pi.md +570 -0
  306. package/docs/platforms/android.md +244 -0
  307. package/docs/platforms/digitalocean.md +266 -0
  308. package/docs/platforms/index.md +55 -0
  309. package/docs/platforms/ios.md +223 -0
  310. package/docs/platforms/linux.md +100 -0
  311. package/docs/platforms/mac/bundled-gateway.md +75 -0
  312. package/docs/platforms/mac/canvas.md +125 -0
  313. package/docs/platforms/mac/child-process.md +69 -0
  314. package/docs/platforms/mac/dev-setup.md +107 -0
  315. package/docs/platforms/mac/health.md +34 -0
  316. package/docs/platforms/mac/icon.md +31 -0
  317. package/docs/platforms/mac/logging.md +57 -0
  318. package/docs/platforms/mac/menu-bar.md +81 -0
  319. package/docs/platforms/mac/peekaboo.md +65 -0
  320. package/docs/platforms/mac/permissions.md +50 -0
  321. package/docs/platforms/mac/remote.md +84 -0
  322. package/docs/platforms/mac/signing.md +47 -0
  323. package/docs/platforms/mac/skills.md +40 -0
  324. package/docs/platforms/mac/voice-overlay.md +60 -0
  325. package/docs/platforms/mac/voicewake.md +67 -0
  326. package/docs/platforms/mac/webchat.md +51 -0
  327. package/docs/platforms/mac/xpc.md +61 -0
  328. package/docs/platforms/macos.md +229 -0
  329. package/docs/platforms/oracle.md +305 -0
  330. package/docs/platforms/raspberry-pi.md +420 -0
  331. package/docs/platforms/windows.md +241 -0
  332. package/docs/plugins/agent-tools.md +10 -0
  333. package/docs/plugins/architecture.md +1609 -0
  334. package/docs/plugins/building-extensions.md +10 -0
  335. package/docs/plugins/building-plugins.md +319 -0
  336. package/docs/plugins/bundles.md +292 -0
  337. package/docs/plugins/community.md +149 -0
  338. package/docs/plugins/manifest.md +412 -0
  339. package/docs/plugins/sdk-channel-plugins.md +508 -0
  340. package/docs/plugins/sdk-entrypoints.md +210 -0
  341. package/docs/plugins/sdk-migration.md +359 -0
  342. package/docs/plugins/sdk-overview.md +475 -0
  343. package/docs/plugins/sdk-provider-plugins.md +712 -0
  344. package/docs/plugins/sdk-runtime.md +381 -0
  345. package/docs/plugins/sdk-setup.md +516 -0
  346. package/docs/plugins/sdk-testing.md +263 -0
  347. package/docs/plugins/voice-call.md +466 -0
  348. package/docs/plugins/zalouser.md +78 -0
  349. package/docs/prose.md +134 -0
  350. package/docs/providers/anthropic.md +402 -0
  351. package/docs/providers/bedrock-mantle.md +91 -0
  352. package/docs/providers/bedrock.md +273 -0
  353. package/docs/providers/chutes.md +103 -0
  354. package/docs/providers/claude-max-api-proxy.md +163 -0
  355. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  356. package/docs/providers/deepgram.md +93 -0
  357. package/docs/providers/deepseek.md +53 -0
  358. package/docs/providers/fireworks.md +69 -0
  359. package/docs/providers/github-copilot.md +80 -0
  360. package/docs/providers/glm.md +68 -0
  361. package/docs/providers/google.md +149 -0
  362. package/docs/providers/groq.md +105 -0
  363. package/docs/providers/huggingface.md +193 -0
  364. package/docs/providers/index.md +81 -0
  365. package/docs/providers/kilocode.md +89 -0
  366. package/docs/providers/litellm.md +159 -0
  367. package/docs/providers/minimax.md +281 -0
  368. package/docs/providers/mistral.md +68 -0
  369. package/docs/providers/models.md +56 -0
  370. package/docs/providers/moonshot.md +224 -0
  371. package/docs/providers/nvidia.md +58 -0
  372. package/docs/providers/ollama.md +379 -0
  373. package/docs/providers/openai.md +472 -0
  374. package/docs/providers/opencode-go.md +45 -0
  375. package/docs/providers/opencode.md +68 -0
  376. package/docs/providers/openrouter.md +59 -0
  377. package/docs/providers/perplexity-provider.md +62 -0
  378. package/docs/providers/qianfan.md +90 -0
  379. package/docs/providers/qwen.md +128 -0
  380. package/docs/providers/qwen_modelstudio.md +137 -0
  381. package/docs/providers/sglang.md +115 -0
  382. package/docs/providers/stepfun.md +152 -0
  383. package/docs/providers/synthetic.md +101 -0
  384. package/docs/providers/together.md +70 -0
  385. package/docs/providers/venice.md +282 -0
  386. package/docs/providers/vercel-ai-gateway.md +60 -0
  387. package/docs/providers/vllm.md +103 -0
  388. package/docs/providers/volcengine.md +94 -0
  389. package/docs/providers/xai.md +94 -0
  390. package/docs/providers/xiaomi.md +89 -0
  391. package/docs/providers/zai.md +75 -0
  392. package/docs/reference/AGENTS.default.md +126 -0
  393. package/docs/reference/RELEASING.md +138 -0
  394. package/docs/reference/api-usage-costs.md +198 -0
  395. package/docs/reference/credits.md +30 -0
  396. package/docs/reference/device-models.md +47 -0
  397. package/docs/reference/memory-config.md +421 -0
  398. package/docs/reference/prompt-caching.md +344 -0
  399. package/docs/reference/rpc.md +43 -0
  400. package/docs/reference/secretref-credential-surface.md +148 -0
  401. package/docs/reference/secretref-user-supplied-credentials-matrix.json +607 -0
  402. package/docs/reference/session-management-compaction.md +352 -0
  403. package/docs/reference/templates/AGENTS.dev.md +84 -0
  404. package/docs/reference/templates/AGENTS.md +219 -0
  405. package/docs/reference/templates/BOOT.md +12 -0
  406. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  407. package/docs/reference/templates/CLAUDE.md +1 -0
  408. package/docs/reference/templates/HEARTBEAT.md +14 -0
  409. package/docs/reference/templates/IDENTITY.dev.md +48 -0
  410. package/docs/reference/templates/IDENTITY.md +30 -0
  411. package/docs/reference/templates/SOUL.dev.md +77 -0
  412. package/docs/reference/templates/SOUL.md +45 -0
  413. package/docs/reference/templates/TOOLS.dev.md +25 -0
  414. package/docs/reference/templates/TOOLS.md +47 -0
  415. package/docs/reference/templates/USER.dev.md +19 -0
  416. package/docs/reference/templates/USER.md +24 -0
  417. package/docs/reference/test.md +119 -0
  418. package/docs/reference/token-use.md +197 -0
  419. package/docs/reference/transcript-hygiene.md +151 -0
  420. package/docs/reference/wizard.md +245 -0
  421. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  422. package/docs/security/THREAT-MODEL-ATLAS.md +608 -0
  423. package/docs/security/formal-verification.md +167 -0
  424. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +9 -0
  425. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  426. package/docs/start/bootstrapping.md +41 -0
  427. package/docs/start/docs-directory.md +67 -0
  428. package/docs/start/getting-started.md +148 -0
  429. package/docs/start/hubs.md +199 -0
  430. package/docs/start/lore.md +219 -0
  431. package/docs/start/onboarding-overview.md +69 -0
  432. package/docs/start/onboarding.md +92 -0
  433. package/docs/start/openclaw.md +225 -0
  434. package/docs/start/quickstart.md +22 -0
  435. package/docs/start/setup.md +172 -0
  436. package/docs/start/showcase.md +418 -0
  437. package/docs/start/wizard-cli-automation.md +233 -0
  438. package/docs/start/wizard-cli-reference.md +324 -0
  439. package/docs/start/wizard.md +127 -0
  440. package/docs/style.css +37 -0
  441. package/docs/tools/acp-agents.md +837 -0
  442. package/docs/tools/agent-send.md +100 -0
  443. package/docs/tools/apply-patch.md +52 -0
  444. package/docs/tools/brave-search.md +107 -0
  445. package/docs/tools/browser-linux-troubleshooting.md +145 -0
  446. package/docs/tools/browser-login.md +73 -0
  447. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +221 -0
  448. package/docs/tools/browser.md +890 -0
  449. package/docs/tools/btw.md +142 -0
  450. package/docs/tools/capability-cookbook.md +119 -0
  451. package/docs/tools/clawhub.md +348 -0
  452. package/docs/tools/code-execution.md +90 -0
  453. package/docs/tools/creating-skills.md +119 -0
  454. package/docs/tools/diffs.md +434 -0
  455. package/docs/tools/duckduckgo-search.md +102 -0
  456. package/docs/tools/elevated.md +116 -0
  457. package/docs/tools/exa-search.md +127 -0
  458. package/docs/tools/exec-approvals.md +635 -0
  459. package/docs/tools/exec.md +237 -0
  460. package/docs/tools/firecrawl.md +147 -0
  461. package/docs/tools/gemini-search.md +98 -0
  462. package/docs/tools/grok-search.md +102 -0
  463. package/docs/tools/image-generation.md +139 -0
  464. package/docs/tools/index.md +174 -0
  465. package/docs/tools/kimi-search.md +98 -0
  466. package/docs/tools/llm-task.md +119 -0
  467. package/docs/tools/lobster.md +348 -0
  468. package/docs/tools/loop-detection.md +100 -0
  469. package/docs/tools/minimax-search.md +99 -0
  470. package/docs/tools/multi-agent-sandbox-tools.md +373 -0
  471. package/docs/tools/ollama-search.md +100 -0
  472. package/docs/tools/pdf.md +176 -0
  473. package/docs/tools/perplexity-search.md +185 -0
  474. package/docs/tools/plugin.md +348 -0
  475. package/docs/tools/reactions.md +78 -0
  476. package/docs/tools/searxng-search.md +132 -0
  477. package/docs/tools/skills-config.md +133 -0
  478. package/docs/tools/skills.md +377 -0
  479. package/docs/tools/slash-commands.md +322 -0
  480. package/docs/tools/subagents.md +341 -0
  481. package/docs/tools/tavily.md +129 -0
  482. package/docs/tools/thinking.md +102 -0
  483. package/docs/tools/tts.md +452 -0
  484. package/docs/tools/web-fetch.md +159 -0
  485. package/docs/tools/web.md +417 -0
  486. package/docs/tts.md +452 -0
  487. package/docs/vps.md +115 -0
  488. package/docs/web/control-ui.md +318 -0
  489. package/docs/web/dashboard.md +93 -0
  490. package/docs/web/index.md +126 -0
  491. package/docs/web/tui.md +176 -0
  492. package/docs/web/webchat.md +77 -0
  493. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  494. package/docs/whatsapp-openclaw.jpg +0 -0
  495. package/durar.mjs +180 -0
  496. package/package.json +1259 -0
  497. package/scripts/npm-runner.mjs +111 -0
  498. package/scripts/postinstall-bundled-plugins.mjs +188 -0
  499. package/skills/1password/SKILL.md +70 -0
  500. package/skills/1password/references/cli-examples.md +29 -0
  501. package/skills/1password/references/get-started.md +17 -0
  502. package/skills/apple-notes/SKILL.md +77 -0
  503. package/skills/apple-reminders/SKILL.md +118 -0
  504. package/skills/bear-notes/SKILL.md +107 -0
  505. package/skills/blogwatcher/SKILL.md +69 -0
  506. package/skills/blucli/SKILL.md +47 -0
  507. package/skills/bluebubbles/SKILL.md +131 -0
  508. package/skills/camsnap/SKILL.md +45 -0
  509. package/skills/canvas/SKILL.md +199 -0
  510. package/skills/clawhub/SKILL.md +77 -0
  511. package/skills/coding-agent/SKILL.md +316 -0
  512. package/skills/discord/SKILL.md +197 -0
  513. package/skills/eightctl/SKILL.md +50 -0
  514. package/skills/gemini/SKILL.md +43 -0
  515. package/skills/gh-issues/SKILL.md +885 -0
  516. package/skills/gifgrep/SKILL.md +79 -0
  517. package/skills/github/SKILL.md +163 -0
  518. package/skills/gog/SKILL.md +116 -0
  519. package/skills/goplaces/SKILL.md +52 -0
  520. package/skills/healthcheck/SKILL.md +245 -0
  521. package/skills/himalaya/SKILL.md +257 -0
  522. package/skills/himalaya/references/configuration.md +184 -0
  523. package/skills/himalaya/references/message-composition.md +199 -0
  524. package/skills/imsg/SKILL.md +122 -0
  525. package/skills/mcporter/SKILL.md +61 -0
  526. package/skills/model-usage/SKILL.md +69 -0
  527. package/skills/model-usage/references/codexbar-cli.md +33 -0
  528. package/skills/model-usage/scripts/model_usage.py +320 -0
  529. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  530. package/skills/nano-pdf/SKILL.md +38 -0
  531. package/skills/node-connect/SKILL.md +142 -0
  532. package/skills/notion/SKILL.md +174 -0
  533. package/skills/obsidian/SKILL.md +81 -0
  534. package/skills/openai-whisper/SKILL.md +38 -0
  535. package/skills/openai-whisper-api/SKILL.md +62 -0
  536. package/skills/openai-whisper-api/scripts/transcribe.sh +88 -0
  537. package/skills/openhue/SKILL.md +112 -0
  538. package/skills/oracle/SKILL.md +125 -0
  539. package/skills/ordercli/SKILL.md +78 -0
  540. package/skills/peekaboo/SKILL.md +190 -0
  541. package/skills/sag/SKILL.md +87 -0
  542. package/skills/session-logs/SKILL.md +151 -0
  543. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  544. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  545. package/skills/skill-creator/SKILL.md +372 -0
  546. package/skills/skill-creator/license.txt +202 -0
  547. package/skills/skill-creator/scripts/init_skill.py +378 -0
  548. package/skills/skill-creator/scripts/package_skill.py +139 -0
  549. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  550. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  551. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  552. package/skills/slack/SKILL.md +144 -0
  553. package/skills/songsee/SKILL.md +49 -0
  554. package/skills/sonoscli/SKILL.md +65 -0
  555. package/skills/spotify-player/SKILL.md +64 -0
  556. package/skills/summarize/SKILL.md +87 -0
  557. package/skills/taskflow/SKILL.md +149 -0
  558. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  559. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  560. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  561. package/skills/things-mac/SKILL.md +86 -0
  562. package/skills/tmux/SKILL.md +170 -0
  563. package/skills/tmux/scripts/find-sessions.sh +112 -0
  564. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  565. package/skills/trello/SKILL.md +108 -0
  566. package/skills/video-frames/SKILL.md +46 -0
  567. package/skills/video-frames/scripts/frame.sh +81 -0
  568. package/skills/voice-call/SKILL.md +45 -0
  569. package/skills/wacli/SKILL.md +72 -0
  570. package/skills/weather/SKILL.md +129 -0
  571. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,185 @@
1
+ ---
2
+ summary: "Perplexity Search API and Sonar/OpenRouter compatibility for web_search"
3
+ read_when:
4
+ - You want to use Perplexity Search for web search
5
+ - You need PERPLEXITY_API_KEY or OPENROUTER_API_KEY setup
6
+ title: "Perplexity Search"
7
+ ---
8
+
9
+ # Perplexity Search API
10
+
11
+ Durar supports Perplexity Search API as a `web_search` provider.
12
+ It returns structured results with `title`, `url`, and `snippet` fields.
13
+
14
+ For compatibility, Durar also supports legacy Perplexity Sonar/OpenRouter setups.
15
+ If you use `OPENROUTER_API_KEY`, an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`, or set `plugins.entries.perplexity.config.webSearch.baseUrl` / `model`, the provider switches to the chat-completions path and returns AI-synthesized answers with citations instead of structured Search API results.
16
+
17
+ ## Getting a Perplexity API key
18
+
19
+ 1. Create a Perplexity account at [perplexity.ai/settings/api](https://www.perplexity.ai/settings/api)
20
+ 2. Generate an API key in the dashboard
21
+ 3. Store the key in config or set `PERPLEXITY_API_KEY` in the Gateway environment.
22
+
23
+ ## OpenRouter compatibility
24
+
25
+ If you were already using OpenRouter for Perplexity Sonar, keep `provider: "perplexity"` and set `OPENROUTER_API_KEY` in the Gateway environment, or store an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`.
26
+
27
+ Optional compatibility controls:
28
+
29
+ - `plugins.entries.perplexity.config.webSearch.baseUrl`
30
+ - `plugins.entries.perplexity.config.webSearch.model`
31
+
32
+ ## Config examples
33
+
34
+ ### Native Perplexity Search API
35
+
36
+ ```json5
37
+ {
38
+ plugins: {
39
+ entries: {
40
+ perplexity: {
41
+ config: {
42
+ webSearch: {
43
+ apiKey: "pplx-...",
44
+ },
45
+ },
46
+ },
47
+ },
48
+ },
49
+ tools: {
50
+ web: {
51
+ search: {
52
+ provider: "perplexity",
53
+ },
54
+ },
55
+ },
56
+ }
57
+ ```
58
+
59
+ ### OpenRouter / Sonar compatibility
60
+
61
+ ```json5
62
+ {
63
+ plugins: {
64
+ entries: {
65
+ perplexity: {
66
+ config: {
67
+ webSearch: {
68
+ apiKey: "<openrouter-api-key>",
69
+ baseUrl: "https://openrouter.ai/api/v1",
70
+ model: "perplexity/sonar-pro",
71
+ },
72
+ },
73
+ },
74
+ },
75
+ },
76
+ tools: {
77
+ web: {
78
+ search: {
79
+ provider: "perplexity",
80
+ },
81
+ },
82
+ },
83
+ }
84
+ ```
85
+
86
+ ## Where to set the key
87
+
88
+ **Via config:** run `Durar configure --section web`. It stores the key in
89
+ `~/.Durar/Durar.json` under `plugins.entries.perplexity.config.webSearch.apiKey`.
90
+ That field also accepts SecretRef objects.
91
+
92
+ **Via environment:** set `PERPLEXITY_API_KEY` or `OPENROUTER_API_KEY`
93
+ in the Gateway process environment. For a gateway install, put it in
94
+ `~/.Durar/.env` (or your service environment). See [Env vars](/help/faq#env-vars-and-env-loading).
95
+
96
+ If `provider: "perplexity"` is configured and the Perplexity key SecretRef is unresolved with no env fallback, startup/reload fails fast.
97
+
98
+ ## Tool parameters
99
+
100
+ These parameters apply to the native Perplexity Search API path.
101
+
102
+ | Parameter | Description |
103
+ | --------------------- | ---------------------------------------------------- |
104
+ | `query` | Search query (required) |
105
+ | `count` | Number of results to return (1-10, default: 5) |
106
+ | `country` | 2-letter ISO country code (e.g., "US", "DE") |
107
+ | `language` | ISO 639-1 language code (e.g., "en", "de", "fr") |
108
+ | `freshness` | Time filter: `day` (24h), `week`, `month`, or `year` |
109
+ | `date_after` | Only results published after this date (YYYY-MM-DD) |
110
+ | `date_before` | Only results published before this date (YYYY-MM-DD) |
111
+ | `domain_filter` | Domain allowlist/denylist array (max 20) |
112
+ | `max_tokens` | Total content budget (default: 25000, max: 1000000) |
113
+ | `max_tokens_per_page` | Per-page token limit (default: 2048) |
114
+
115
+ For the legacy Sonar/OpenRouter compatibility path:
116
+
117
+ - `query`, `count`, and `freshness` are accepted
118
+ - `count` is compatibility-only there; the response is still one synthesized
119
+ answer with citations rather than an N-result list
120
+ - Search API-only filters such as `country`, `language`, `date_after`,
121
+ `date_before`, `domain_filter`, `max_tokens`, and `max_tokens_per_page`
122
+ return explicit errors
123
+
124
+ **Examples:**
125
+
126
+ ```javascript
127
+ // Country and language-specific search
128
+ await web_search({
129
+ query: "renewable energy",
130
+ country: "DE",
131
+ language: "de",
132
+ });
133
+
134
+ // Recent results (past week)
135
+ await web_search({
136
+ query: "AI news",
137
+ freshness: "week",
138
+ });
139
+
140
+ // Date range search
141
+ await web_search({
142
+ query: "AI developments",
143
+ date_after: "2024-01-01",
144
+ date_before: "2024-06-30",
145
+ });
146
+
147
+ // Domain filtering (allowlist)
148
+ await web_search({
149
+ query: "climate research",
150
+ domain_filter: ["nature.com", "science.org", ".edu"],
151
+ });
152
+
153
+ // Domain filtering (denylist - prefix with -)
154
+ await web_search({
155
+ query: "product reviews",
156
+ domain_filter: ["-reddit.com", "-pinterest.com"],
157
+ });
158
+
159
+ // More content extraction
160
+ await web_search({
161
+ query: "detailed AI research",
162
+ max_tokens: 50000,
163
+ max_tokens_per_page: 4096,
164
+ });
165
+ ```
166
+
167
+ ### Domain filter rules
168
+
169
+ - Maximum 20 domains per filter
170
+ - Cannot mix allowlist and denylist in the same request
171
+ - Use `-` prefix for denylist entries (e.g., `["-reddit.com"]`)
172
+
173
+ ## Notes
174
+
175
+ - Perplexity Search API returns structured web search results (`title`, `url`, `snippet`)
176
+ - OpenRouter or explicit `plugins.entries.perplexity.config.webSearch.baseUrl` / `model` switches Perplexity back to Sonar chat completions for compatibility
177
+ - Sonar/OpenRouter compatibility returns one synthesized answer with citations, not structured result rows
178
+ - Results are cached for 15 minutes by default (configurable via `cacheTtlMinutes`)
179
+
180
+ ## Related
181
+
182
+ - [Web Search overview](/tools/web) -- all providers and auto-detection
183
+ - [Perplexity Search API docs](https://docs.perplexity.ai/docs/search/quickstart) -- official Perplexity documentation
184
+ - [Brave Search](/tools/brave-search) -- structured results with country/language filters
185
+ - [Exa Search](/tools/exa-search) -- neural search with content extraction
@@ -0,0 +1,348 @@
1
+ ---
2
+ summary: "Install, configure, and manage Durar plugins"
3
+ read_when:
4
+ - Installing or configuring plugins
5
+ - Understanding plugin discovery and load rules
6
+ - Working with Codex/Claude-compatible plugin bundles
7
+ title: "Plugins"
8
+ sidebarTitle: "Install and Configure"
9
+ ---
10
+
11
+ # Plugins
12
+
13
+ Plugins extend Durar with new capabilities: channels, model providers,
14
+ tools, skills, speech, realtime transcription, realtime voice,
15
+ media-understanding, image generation, video generation, web fetch, web
16
+ search, and more. Some plugins are **core** (shipped with Durar), others
17
+ are **external** (published on npm by the community).
18
+
19
+ ## Quick start
20
+
21
+ <Steps>
22
+ <Step title="See what is loaded">
23
+ ```bash
24
+ Durar plugins list
25
+ ```
26
+ </Step>
27
+
28
+ <Step title="Install a plugin">
29
+ ```bash
30
+ # From npm
31
+ Durar plugins install @Durar/voice-call
32
+
33
+ # From a local directory or archive
34
+ Durar plugins install ./my-plugin
35
+ Durar plugins install ./my-plugin.tgz
36
+ ```
37
+
38
+ </Step>
39
+
40
+ <Step title="Restart the Gateway">
41
+ ```bash
42
+ Durar gateway restart
43
+ ```
44
+
45
+ Then configure under `plugins.entries.\<id\>.config` in your config file.
46
+
47
+ </Step>
48
+ </Steps>
49
+
50
+ If you prefer chat-native control, enable `commands.plugins: true` and use:
51
+
52
+ ```text
53
+ /plugin install Durar Gateway:@Durar/voice-call
54
+ /plugin show voice-call
55
+ /plugin enable voice-call
56
+ ```
57
+
58
+ The install path uses the same resolver as the CLI: local path/archive, explicit
59
+ `Durar Gateway:<pkg>`, or bare package spec (Durar Gateway first, then npm fallback).
60
+
61
+ If config is invalid, install normally fails closed and points you at
62
+ `Durar doctor --fix`. The only recovery exception is a narrow bundled-plugin
63
+ reinstall path for plugins that opt into
64
+ `Durar.install.allowInvalidConfigRecovery`.
65
+
66
+ ## Plugin types
67
+
68
+ Durar recognizes two plugin formats:
69
+
70
+ | Format | How it works | Examples |
71
+ | ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
72
+ | **Native** | `Durar.plugin.json` + runtime module; executes in-process | Official plugins, community npm packages |
73
+ | **Bundle** | Codex/Claude/Cursor-compatible layout; mapped to Durar features | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
74
+
75
+ Both show up under `Durar plugins list`. See [Plugin Bundles](/plugins/bundles) for bundle details.
76
+
77
+ If you are writing a native plugin, start with [Building Plugins](/plugins/building-plugins)
78
+ and the [Plugin SDK Overview](/plugins/sdk-overview).
79
+
80
+ ## Official plugins
81
+
82
+ ### Installable (npm)
83
+
84
+ | Plugin | Package | Docs |
85
+ | --------------- | ---------------------- | ------------------------------------ |
86
+ | Matrix | `@Durar/matrix` | [Matrix](/channels/matrix) |
87
+ | Microsoft Teams | `@Durar/msteams` | [Microsoft Teams](/channels/msteams) |
88
+ | Nostr | `@Durar/nostr` | [Nostr](/channels/nostr) |
89
+ | Voice Call | `@Durar/voice-call` | [Voice Call](/plugins/voice-call) |
90
+ | Zalo | `@Durar/zalo` | [Zalo](/channels/zalo) |
91
+ | Zalo Personal | `@Durar/zalouser` | [Zalo Personal](/plugins/zalouser) |
92
+
93
+ ### Core (shipped with Durar)
94
+
95
+ <AccordionGroup>
96
+ <Accordion title="Model providers (enabled by default)">
97
+ `anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`,
98
+ `huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `qwen`,
99
+ `moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`,
100
+ `qianfan`, `synthetic`, `together`, `venice`,
101
+ `vercel-ai-gateway`, `volcengine`, `xiaomi`, `zai`
102
+ </Accordion>
103
+
104
+ <Accordion title="Memory plugins">
105
+ - `memory-core` — bundled memory search (default via `plugins.slots.memory`)
106
+ - `memory-lancedb` — install-on-demand long-term memory with auto-recall/capture (set `plugins.slots.memory = "memory-lancedb"`)
107
+ </Accordion>
108
+
109
+ <Accordion title="Speech providers (enabled by default)">
110
+ `elevenlabs`, `microsoft`
111
+ </Accordion>
112
+
113
+ <Accordion title="Other">
114
+ - `browser` — bundled browser plugin for the browser tool, `Durar browser` CLI, `browser.request` gateway method, browser runtime, and default browser control service (enabled by default; disable before replacing it)
115
+ - `copilot-proxy` — VS Code Copilot Proxy bridge (disabled by default)
116
+ </Accordion>
117
+ </AccordionGroup>
118
+
119
+ Looking for third-party plugins? See [Community Plugins](/plugins/community).
120
+
121
+ ## Configuration
122
+
123
+ ```json5
124
+ {
125
+ plugins: {
126
+ enabled: true,
127
+ allow: ["voice-call"],
128
+ deny: ["untrusted-plugin"],
129
+ load: { paths: ["~/Projects/oss/voice-call-extension"] },
130
+ entries: {
131
+ "voice-call": { enabled: true, config: { provider: "twilio" } },
132
+ },
133
+ },
134
+ }
135
+ ```
136
+
137
+ | Field | Description |
138
+ | ---------------- | --------------------------------------------------------- |
139
+ | `enabled` | Master toggle (default: `true`) |
140
+ | `allow` | Plugin allowlist (optional) |
141
+ | `deny` | Plugin denylist (optional; deny wins) |
142
+ | `load.paths` | Extra plugin files/directories |
143
+ | `slots` | Exclusive slot selectors (e.g. `memory`, `contextEngine`) |
144
+ | `entries.\<id\>` | Per-plugin toggles + config |
145
+
146
+ Config changes **require a gateway restart**. If the Gateway is running with config
147
+ watch + in-process restart enabled (the default `Durar gateway` path), that
148
+ restart is usually performed automatically a moment after the config write lands.
149
+
150
+ <Accordion title="Plugin states: disabled vs missing vs invalid">
151
+ - **Disabled**: plugin exists but enablement rules turned it off. Config is preserved.
152
+ - **Missing**: config references a plugin id that discovery did not find.
153
+ - **Invalid**: plugin exists but its config does not match the declared schema.
154
+ </Accordion>
155
+
156
+ ## Discovery and precedence
157
+
158
+ Durar scans for plugins in this order (first match wins):
159
+
160
+ <Steps>
161
+ <Step title="Config paths">
162
+ `plugins.load.paths` — explicit file or directory paths.
163
+ </Step>
164
+
165
+ <Step title="Workspace extensions">
166
+ `\<workspace\>/.Durar/<plugin-root>/*.ts` and `\<workspace\>/.Durar/<plugin-root>/*/index.ts`.
167
+ </Step>
168
+
169
+ <Step title="Global extensions">
170
+ `~/.Durar/<plugin-root>/*.ts` and `~/.Durar/<plugin-root>/*/index.ts`.
171
+ </Step>
172
+
173
+ <Step title="Bundled plugins">
174
+ Shipped with Durar. Many are enabled by default (model providers, speech).
175
+ Others require explicit enablement.
176
+ </Step>
177
+ </Steps>
178
+
179
+ ### Enablement rules
180
+
181
+ - `plugins.enabled: false` disables all plugins
182
+ - `plugins.deny` always wins over allow
183
+ - `plugins.entries.\<id\>.enabled: false` disables that plugin
184
+ - Workspace-origin plugins are **disabled by default** (must be explicitly enabled)
185
+ - Bundled plugins follow the built-in default-on set unless overridden
186
+ - Exclusive slots can force-enable the selected plugin for that slot
187
+
188
+ ## Plugin slots (exclusive categories)
189
+
190
+ Some categories are exclusive (only one active at a time):
191
+
192
+ ```json5
193
+ {
194
+ plugins: {
195
+ slots: {
196
+ memory: "memory-core", // or "none" to disable
197
+ contextEngine: "legacy", // or a plugin id
198
+ },
199
+ },
200
+ }
201
+ ```
202
+
203
+ | Slot | What it controls | Default |
204
+ | --------------- | --------------------- | ------------------- |
205
+ | `memory` | Active memory plugin | `memory-core` |
206
+ | `contextEngine` | Active context engine | `legacy` (built-in) |
207
+
208
+ ## CLI reference
209
+
210
+ ```bash
211
+ Durar plugins list # compact inventory
212
+ Durar plugins list --enabled # only loaded plugins
213
+ Durar plugins list --verbose # per-plugin detail lines
214
+ Durar plugins list --json # machine-readable inventory
215
+ Durar plugins inspect <id> # deep detail
216
+ Durar plugins inspect <id> --json # machine-readable
217
+ Durar plugins inspect --all # fleet-wide table
218
+ Durar plugins info <id> # inspect alias
219
+ Durar plugins doctor # diagnostics
220
+
221
+ Durar plugins install <package> # install (Durar Gateway first, then npm)
222
+ Durar plugins install Durar Gateway:<pkg> # install from Durar Gateway only
223
+ Durar plugins install <spec> --force # overwrite existing install
224
+ Durar plugins install <path> # install from local path
225
+ Durar plugins install -l <path> # link (no copy) for dev
226
+ Durar plugins install <plugin> --marketplace <source>
227
+ Durar plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
228
+ Durar plugins install <spec> --pin # record exact resolved npm spec
229
+ Durar plugins install <spec> --dangerously-force-unsafe-install
230
+ Durar plugins update <id> # update one plugin
231
+ Durar plugins update <id> --dangerously-force-unsafe-install
232
+ Durar plugins update --all # update all
233
+ Durar plugins uninstall <id> # remove config/install records
234
+ Durar plugins uninstall <id> --keep-files
235
+ Durar plugins marketplace list <source>
236
+ Durar plugins marketplace list <source> --json
237
+
238
+ Durar plugins enable <id>
239
+ Durar plugins disable <id>
240
+ ```
241
+
242
+ Bundled plugins ship with Durar. Many are enabled by default (for example
243
+ bundled model providers, bundled speech providers, and the bundled browser
244
+ plugin). Other bundled plugins still need `Durar plugins enable <id>`.
245
+
246
+ `--force` overwrites an existing installed plugin or hook pack in place.
247
+ It is not supported with `--link`, which reuses the source path instead of
248
+ copying over a managed install target.
249
+
250
+ `--pin` is npm-only. It is not supported with `--marketplace`, because
251
+ marketplace installs persist marketplace source metadata instead of an npm spec.
252
+
253
+ `--dangerously-force-unsafe-install` is a break-glass override for false
254
+ positives from the built-in dangerous-code scanner. It allows plugin installs
255
+ and plugin updates to continue past built-in `critical` findings, but it still
256
+ does not bypass plugin `before_install` policy blocks or scan-failure blocking.
257
+
258
+ This CLI flag applies to plugin install/update flows only. Gateway-backed skill
259
+ dependency installs use the matching `dangerouslyForceUnsafeInstall` request
260
+ override instead, while `Durar skills install` remains the separate Durar Gateway
261
+ skill download/install flow.
262
+
263
+ Compatible bundles participate in the same plugin list/inspect/enable/disable
264
+ flow. Current runtime support includes bundle skills, Claude command-skills,
265
+ Claude `settings.json` defaults, Claude `.lsp.json` and manifest-declared
266
+ `lspServers` defaults, Cursor command-skills, and compatible Codex hook
267
+ directories.
268
+
269
+ `Durar plugins inspect <id>` also reports detected bundle capabilities plus
270
+ supported or unsupported MCP and LSP server entries for bundle-backed plugins.
271
+
272
+ Marketplace sources can be a Claude known-marketplace name from
273
+ `~/.claude/plugins/known_marketplaces.json`, a local marketplace root or
274
+ `marketplace.json` path, a GitHub shorthand like `owner/repo`, a GitHub repo
275
+ URL, or a git URL. For remote marketplaces, plugin entries must stay inside the
276
+ cloned marketplace repo and use relative path sources only.
277
+
278
+ See [`Durar plugins` CLI reference](/cli/plugins) for full details.
279
+
280
+ ## Plugin API overview
281
+
282
+ Native plugins export an entry object that exposes `register(api)`. Older
283
+ plugins may still use `activate(api)` as a legacy alias, but new plugins should
284
+ use `register`.
285
+
286
+ ```typescript
287
+ export default definePluginEntry({
288
+ id: "my-plugin",
289
+ name: "My Plugin",
290
+ register(api) {
291
+ api.registerProvider({
292
+ /* ... */
293
+ });
294
+ api.registerTool({
295
+ /* ... */
296
+ });
297
+ api.registerChannel({
298
+ /* ... */
299
+ });
300
+ },
301
+ });
302
+ ```
303
+
304
+ Durar loads the entry object and calls `register(api)` during plugin
305
+ activation. The loader still falls back to `activate(api)` for older plugins,
306
+ but bundled plugins and new external plugins should treat `register` as the
307
+ public contract.
308
+
309
+ Common registration methods:
310
+
311
+ | Method | What it registers |
312
+ | --------------------------------------- | --------------------------- |
313
+ | `registerProvider` | Model provider (LLM) |
314
+ | `registerChannel` | Chat channel |
315
+ | `registerTool` | Agent tool |
316
+ | `registerHook` / `on(...)` | Lifecycle hooks |
317
+ | `registerSpeechProvider` | Text-to-speech / STT |
318
+ | `registerRealtimeTranscriptionProvider` | Streaming STT |
319
+ | `registerRealtimeVoiceProvider` | Duplex realtime voice |
320
+ | `registerMediaUnderstandingProvider` | Image/audio analysis |
321
+ | `registerImageGenerationProvider` | Image generation |
322
+ | `registerVideoGenerationProvider` | Video generation |
323
+ | `registerWebFetchProvider` | Web fetch / scrape provider |
324
+ | `registerWebSearchProvider` | Web search |
325
+ | `registerHttpRoute` | HTTP endpoint |
326
+ | `registerCommand` / `registerCli` | CLI commands |
327
+ | `registerContextEngine` | Context engine |
328
+ | `registerService` | Background service |
329
+
330
+ Hook guard behavior for typed lifecycle hooks:
331
+
332
+ - `before_tool_call`: `{ block: true }` is terminal; lower-priority handlers are skipped.
333
+ - `before_tool_call`: `{ block: false }` is a no-op and does not clear an earlier block.
334
+ - `before_install`: `{ block: true }` is terminal; lower-priority handlers are skipped.
335
+ - `before_install`: `{ block: false }` is a no-op and does not clear an earlier block.
336
+ - `message_sending`: `{ cancel: true }` is terminal; lower-priority handlers are skipped.
337
+ - `message_sending`: `{ cancel: false }` is a no-op and does not clear an earlier cancel.
338
+
339
+ For full typed hook behavior, see [SDK Overview](/plugins/sdk-overview#hook-decision-semantics).
340
+
341
+ ## Related
342
+
343
+ - [Building Plugins](/plugins/building-plugins) — create your own plugin
344
+ - [Plugin Bundles](/plugins/bundles) — Codex/Claude/Cursor bundle compatibility
345
+ - [Plugin Manifest](/plugins/manifest) — manifest schema
346
+ - [Registering Tools](/plugins/building-plugins#registering-agent-tools) — add agent tools in a plugin
347
+ - [Plugin Internals](/plugins/architecture) — capability model and load pipeline
348
+ - [Community Plugins](/plugins/community) — third-party listings
@@ -0,0 +1,78 @@
1
+ ---
2
+ summary: "Reaction tool semantics across all supported channels"
3
+ read_when:
4
+ - Working on reactions in any channel
5
+ - Understanding how emoji reactions differ across platforms
6
+ title: "Reactions"
7
+ ---
8
+
9
+ # Reactions
10
+
11
+ The agent can add and remove emoji reactions on messages using the `message`
12
+ tool with the `react` action. Reaction behavior varies by channel.
13
+
14
+ ## How it works
15
+
16
+ ```json
17
+ {
18
+ "action": "react",
19
+ "messageId": "msg-123",
20
+ "emoji": "thumbsup"
21
+ }
22
+ ```
23
+
24
+ - `emoji` is required when adding a reaction.
25
+ - Set `emoji` to an empty string (`""`) to remove the bot's reaction(s).
26
+ - Set `remove: true` to remove a specific emoji (requires non-empty `emoji`).
27
+
28
+ ## Channel behavior
29
+
30
+ <AccordionGroup>
31
+ <Accordion title="Discord and Slack">
32
+ - Empty `emoji` removes all of the bot's reactions on the message.
33
+ - `remove: true` removes just the specified emoji.
34
+ </Accordion>
35
+
36
+ <Accordion title="Google Chat">
37
+ - Empty `emoji` removes the app's reactions on the message.
38
+ - `remove: true` removes just the specified emoji.
39
+ </Accordion>
40
+
41
+ <Accordion title="Telegram">
42
+ - Empty `emoji` removes the bot's reactions.
43
+ - `remove: true` also removes reactions but still requires a non-empty `emoji` for tool validation.
44
+ </Accordion>
45
+
46
+ <Accordion title="WhatsApp">
47
+ - Empty `emoji` removes the bot reaction.
48
+ - `remove: true` maps to empty emoji internally (still requires `emoji` in the tool call).
49
+ </Accordion>
50
+
51
+ <Accordion title="Zalo Personal (zalouser)">
52
+ - Requires non-empty `emoji`.
53
+ - `remove: true` removes that specific emoji reaction.
54
+ </Accordion>
55
+
56
+ <Accordion title="Feishu/Lark">
57
+ - Use the `feishu_reaction` tool with actions `add`, `remove`, and `list`.
58
+ - Add/remove requires `emoji_type`; remove also requires `reaction_id`.
59
+ </Accordion>
60
+
61
+ <Accordion title="Signal">
62
+ - Inbound reaction notifications are controlled by `channels.signal.reactionNotifications`: `"off"` disables them, `"own"` (default) emits events when users react to bot messages, and `"all"` emits events for all reactions.
63
+ </Accordion>
64
+ </AccordionGroup>
65
+
66
+ ## Reaction level
67
+
68
+ Per-channel `reactionLevel` config controls how broadly the agent uses reactions. Values are typically `off`, `ack`, `minimal`, or `extensive`.
69
+
70
+ - [Telegram reactionLevel](/channels/telegram#reaction-notifications) — `channels.telegram.reactionLevel`
71
+ - [WhatsApp reactionLevel](/channels/whatsapp#reactions) — `channels.whatsapp.reactionLevel`
72
+
73
+ Set `reactionLevel` on individual channels to tune how actively the agent reacts to messages on each platform.
74
+
75
+ ## Related
76
+
77
+ - [Agent Send](/tools/agent-send) — the `message` tool that includes `react`
78
+ - [Channels](/channels) — channel-specific configuration