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,348 @@
1
+ ---
2
+ title: Lobster
3
+ summary: "Typed workflow runtime for Durar with resumable approval gates."
4
+ read_when:
5
+ - You want deterministic multi-step workflows with explicit approvals
6
+ - You need to resume a workflow without re-running earlier steps
7
+ ---
8
+
9
+ # Lobster
10
+
11
+ Lobster is a workflow shell that lets Durar run multi-step tool sequences as a single, deterministic operation with explicit approval checkpoints.
12
+
13
+ Lobster is one authoring layer above detached background work. For flow orchestration above individual tasks, see [Task Flow](/automation/taskflow) (`Durar tasks flow`). For the task activity ledger, see [`Durar tasks`](/automation/tasks).
14
+
15
+ ## Hook
16
+
17
+ Your assistant can build the tools that manage itself. Ask for a workflow, and 30 minutes later you have a CLI plus pipelines that run as one call. Lobster is the missing piece: deterministic pipelines, explicit approvals, and resumable state.
18
+
19
+ ## Why
20
+
21
+ Today, complex workflows require many back-and-forth tool calls. Each call costs tokens, and the LLM has to orchestrate every step. Lobster moves that orchestration into a typed runtime:
22
+
23
+ - **One call instead of many**: Durar runs one Lobster tool call and gets a structured result.
24
+ - **Approvals built in**: Side effects (send email, post comment) halt the workflow until explicitly approved.
25
+ - **Resumable**: Halted workflows return a token; approve and resume without re-running everything.
26
+
27
+ ## Why a DSL instead of plain programs?
28
+
29
+ Lobster is intentionally small. The goal is not "a new language," it's a predictable, AI-friendly pipeline spec with first-class approvals and resume tokens.
30
+
31
+ - **Approve/resume is built in**: A normal program can prompt a human, but it can’t _pause and resume_ with a durable token without you inventing that runtime yourself.
32
+ - **Determinism + auditability**: Pipelines are data, so they’re easy to log, diff, replay, and review.
33
+ - **Constrained surface for AI**: A tiny grammar + JSON piping reduces “creative” code paths and makes validation realistic.
34
+ - **Safety policy baked in**: Timeouts, output caps, sandbox checks, and allowlists are enforced by the runtime, not each script.
35
+ - **Still programmable**: Each step can call any CLI or script. If you want JS/TS, generate `.lobster` files from code.
36
+
37
+ ## How it works
38
+
39
+ Durar launches the local `lobster` CLI in **tool mode** and parses a JSON envelope from stdout.
40
+ If the pipeline pauses for approval, the tool returns a `resumeToken` so you can continue later.
41
+
42
+ ## Pattern: small CLI + JSON pipes + approvals
43
+
44
+ Build tiny commands that speak JSON, then chain them into a single Lobster call. (Example command names below — swap in your own.)
45
+
46
+ ```bash
47
+ inbox list --json
48
+ inbox categorize --json
49
+ inbox apply --json
50
+ ```
51
+
52
+ ```json
53
+ {
54
+ "action": "run",
55
+ "pipeline": "exec --json --shell 'inbox list --json' | exec --stdin json --shell 'inbox categorize --json' | exec --stdin json --shell 'inbox apply --json' | approve --preview-from-stdin --limit 5 --prompt 'Apply changes?'",
56
+ "timeoutMs": 30000
57
+ }
58
+ ```
59
+
60
+ If the pipeline requests approval, resume with the token:
61
+
62
+ ```json
63
+ {
64
+ "action": "resume",
65
+ "token": "<resumeToken>",
66
+ "approve": true
67
+ }
68
+ ```
69
+
70
+ AI triggers the workflow; Lobster executes the steps. Approval gates keep side effects explicit and auditable.
71
+
72
+ Example: map input items into tool calls:
73
+
74
+ ```bash
75
+ gog.gmail.search --query 'newer_than:1d' \
76
+ | Durar.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'
77
+ ```
78
+
79
+ ## JSON-only LLM steps (llm-task)
80
+
81
+ For workflows that need a **structured LLM step**, enable the optional
82
+ `llm-task` plugin tool and call it from Lobster. This keeps the workflow
83
+ deterministic while still letting you classify/summarize/draft with a model.
84
+
85
+ Enable the tool:
86
+
87
+ ```json
88
+ {
89
+ "plugins": {
90
+ "entries": {
91
+ "llm-task": { "enabled": true }
92
+ }
93
+ },
94
+ "agents": {
95
+ "list": [
96
+ {
97
+ "id": "main",
98
+ "tools": { "allow": ["llm-task"] }
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ ```
104
+
105
+ Use it in a pipeline:
106
+
107
+ ```lobster
108
+ Durar.invoke --tool llm-task --action json --args-json '{
109
+ "prompt": "Given the input email, return intent and draft.",
110
+ "thinking": "low",
111
+ "input": { "subject": "Hello", "body": "Can you help?" },
112
+ "schema": {
113
+ "type": "object",
114
+ "properties": {
115
+ "intent": { "type": "string" },
116
+ "draft": { "type": "string" }
117
+ },
118
+ "required": ["intent", "draft"],
119
+ "additionalProperties": false
120
+ }
121
+ }'
122
+ ```
123
+
124
+ See [LLM Task](/tools/llm-task) for details and configuration options.
125
+
126
+ ## Workflow files (.lobster)
127
+
128
+ Lobster can run YAML/JSON workflow files with `name`, `args`, `steps`, `env`, `condition`, and `approval` fields. In Durar tool calls, set `pipeline` to the file path.
129
+
130
+ ```yaml
131
+ name: inbox-triage
132
+ args:
133
+ tag:
134
+ default: "family"
135
+ steps:
136
+ - id: collect
137
+ command: inbox list --json
138
+ - id: categorize
139
+ command: inbox categorize --json
140
+ stdin: $collect.stdout
141
+ - id: approve
142
+ command: inbox apply --approve
143
+ stdin: $categorize.stdout
144
+ approval: required
145
+ - id: execute
146
+ command: inbox apply --execute
147
+ stdin: $categorize.stdout
148
+ condition: $approve.approved
149
+ ```
150
+
151
+ Notes:
152
+
153
+ - `stdin: $step.stdout` and `stdin: $step.json` pass a prior step’s output.
154
+ - `condition` (or `when`) can gate steps on `$step.approved`.
155
+
156
+ ## Install Lobster
157
+
158
+ Install the Lobster CLI on the **same host** that runs the Durar Gateway (see the [Lobster repo](https://github.com/Durar/lobster)), and ensure `lobster` is on `PATH`.
159
+
160
+ ## Enable the tool
161
+
162
+ Lobster is an **optional** plugin tool (not enabled by default).
163
+
164
+ Recommended (additive, safe):
165
+
166
+ ```json
167
+ {
168
+ "tools": {
169
+ "alsoAllow": ["lobster"]
170
+ }
171
+ }
172
+ ```
173
+
174
+ Or per-agent:
175
+
176
+ ```json
177
+ {
178
+ "agents": {
179
+ "list": [
180
+ {
181
+ "id": "main",
182
+ "tools": {
183
+ "alsoAllow": ["lobster"]
184
+ }
185
+ }
186
+ ]
187
+ }
188
+ }
189
+ ```
190
+
191
+ Avoid using `tools.allow: ["lobster"]` unless you intend to run in restrictive allowlist mode.
192
+
193
+ Note: allowlists are opt-in for optional plugins. If your allowlist only names
194
+ plugin tools (like `lobster`), Durar keeps core tools enabled. To restrict core
195
+ tools, include the core tools or groups you want in the allowlist too.
196
+
197
+ ## Example: Email triage
198
+
199
+ Without Lobster:
200
+
201
+ ```
202
+ User: "Check my email and draft replies"
203
+ → Durar calls gmail.list
204
+ → LLM summarizes
205
+ → User: "draft replies to #2 and #5"
206
+ → LLM drafts
207
+ → User: "send #2"
208
+ → Durar calls gmail.send
209
+ (repeat daily, no memory of what was triaged)
210
+ ```
211
+
212
+ With Lobster:
213
+
214
+ ```json
215
+ {
216
+ "action": "run",
217
+ "pipeline": "email.triage --limit 20",
218
+ "timeoutMs": 30000
219
+ }
220
+ ```
221
+
222
+ Returns a JSON envelope (truncated):
223
+
224
+ ```json
225
+ {
226
+ "ok": true,
227
+ "status": "needs_approval",
228
+ "output": [{ "summary": "5 need replies, 2 need action" }],
229
+ "requiresApproval": {
230
+ "type": "approval_request",
231
+ "prompt": "Send 2 draft replies?",
232
+ "items": [],
233
+ "resumeToken": "..."
234
+ }
235
+ }
236
+ ```
237
+
238
+ User approves → resume:
239
+
240
+ ```json
241
+ {
242
+ "action": "resume",
243
+ "token": "<resumeToken>",
244
+ "approve": true
245
+ }
246
+ ```
247
+
248
+ One workflow. Deterministic. Safe.
249
+
250
+ ## Tool parameters
251
+
252
+ ### `run`
253
+
254
+ Run a pipeline in tool mode.
255
+
256
+ ```json
257
+ {
258
+ "action": "run",
259
+ "pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage",
260
+ "cwd": "workspace",
261
+ "timeoutMs": 30000,
262
+ "maxStdoutBytes": 512000
263
+ }
264
+ ```
265
+
266
+ Run a workflow file with args:
267
+
268
+ ```json
269
+ {
270
+ "action": "run",
271
+ "pipeline": "/path/to/inbox-triage.lobster",
272
+ "argsJson": "{\"tag\":\"family\"}"
273
+ }
274
+ ```
275
+
276
+ ### `resume`
277
+
278
+ Continue a halted workflow after approval.
279
+
280
+ ```json
281
+ {
282
+ "action": "resume",
283
+ "token": "<resumeToken>",
284
+ "approve": true
285
+ }
286
+ ```
287
+
288
+ ### Optional inputs
289
+
290
+ - `cwd`: Relative working directory for the pipeline (must stay within the current process working directory).
291
+ - `timeoutMs`: Kill the subprocess if it exceeds this duration (default: 20000).
292
+ - `maxStdoutBytes`: Kill the subprocess if stdout exceeds this size (default: 512000).
293
+ - `argsJson`: JSON string passed to `lobster run --args-json` (workflow files only).
294
+
295
+ ## Output envelope
296
+
297
+ Lobster returns a JSON envelope with one of three statuses:
298
+
299
+ - `ok` → finished successfully
300
+ - `needs_approval` → paused; `requiresApproval.resumeToken` is required to resume
301
+ - `cancelled` → explicitly denied or cancelled
302
+
303
+ The tool surfaces the envelope in both `content` (pretty JSON) and `details` (raw object).
304
+
305
+ ## Approvals
306
+
307
+ If `requiresApproval` is present, inspect the prompt and decide:
308
+
309
+ - `approve: true` → resume and continue side effects
310
+ - `approve: false` → cancel and finalize the workflow
311
+
312
+ Use `approve --preview-from-stdin --limit N` to attach a JSON preview to approval requests without custom jq/heredoc glue. Resume tokens are now compact: Lobster stores workflow resume state under its state dir and hands back a small token key.
313
+
314
+ ## OpenProse
315
+
316
+ OpenProse pairs well with Lobster: use `/prose` to orchestrate multi-agent prep, then run a Lobster pipeline for deterministic approvals. If a Prose program needs Lobster, allow the `lobster` tool for sub-agents via `tools.subagents.tools`. See [OpenProse](/prose).
317
+
318
+ ## Safety
319
+
320
+ - **Local subprocess only** — no network calls from the plugin itself.
321
+ - **No secrets** — Lobster doesn't manage OAuth; it calls Durar tools that do.
322
+ - **Sandbox-aware** — disabled when the tool context is sandboxed.
323
+ - **Hardened** — fixed executable name (`lobster`) on `PATH`; timeouts and output caps enforced.
324
+
325
+ ## Troubleshooting
326
+
327
+ - **`lobster subprocess timed out`** → increase `timeoutMs`, or split a long pipeline.
328
+ - **`lobster output exceeded maxStdoutBytes`** → raise `maxStdoutBytes` or reduce output size.
329
+ - **`lobster returned invalid JSON`** → ensure the pipeline runs in tool mode and prints only JSON.
330
+ - **`lobster failed (code …)`** → run the same pipeline in a terminal to inspect stderr.
331
+
332
+ ## Learn more
333
+
334
+ - [Plugins](/tools/plugin)
335
+ - [Plugin tool authoring](/plugins/building-plugins#registering-agent-tools)
336
+
337
+ ## Case study: community workflows
338
+
339
+ One public example: a “second brain” CLI + Lobster pipelines that manage three Markdown vaults (personal, partner, shared). The CLI emits JSON for stats, inbox listings, and stale scans; Lobster chains those commands into workflows like `weekly-review`, `inbox-triage`, `memory-consolidation`, and `shared-task-sync`, each with approval gates. AI handles judgment (categorization) when available and falls back to deterministic rules when not.
340
+
341
+ - Thread: [https://x.com/plattenschieber/status/2014508656335770033](https://x.com/plattenschieber/status/2014508656335770033)
342
+ - Repo: [https://github.com/bloomedai/brain-cli](https://github.com/bloomedai/brain-cli)
343
+
344
+ ## Related
345
+
346
+ - [Automation & Tasks](/automation) — scheduling Lobster workflows
347
+ - [Automation Overview](/automation) — all automation mechanisms
348
+ - [Tools Overview](/tools) — all available agent tools
@@ -0,0 +1,100 @@
1
+ ---
2
+ title: "Tool-loop detection"
3
+ summary: "How to enable and tune guardrails that detect repetitive tool-call loops"
4
+ read_when:
5
+ - A user reports agents getting stuck repeating tool calls
6
+ - You need to tune repetitive-call protection
7
+ - You are editing agent tool/runtime policies
8
+ ---
9
+
10
+ # Tool-loop detection
11
+
12
+ Durar can keep agents from getting stuck in repeated tool-call patterns.
13
+ The guard is **disabled by default**.
14
+
15
+ Enable it only where needed, because it can block legitimate repeated calls with strict settings.
16
+
17
+ ## Why this exists
18
+
19
+ - Detect repetitive sequences that do not make progress.
20
+ - Detect high-frequency no-result loops (same tool, same inputs, repeated errors).
21
+ - Detect specific repeated-call patterns for known polling tools.
22
+
23
+ ## Configuration block
24
+
25
+ Global defaults:
26
+
27
+ ```json5
28
+ {
29
+ tools: {
30
+ loopDetection: {
31
+ enabled: false,
32
+ historySize: 30,
33
+ warningThreshold: 10,
34
+ criticalThreshold: 20,
35
+ globalCircuitBreakerThreshold: 30,
36
+ detectors: {
37
+ genericRepeat: true,
38
+ knownPollNoProgress: true,
39
+ pingPong: true,
40
+ },
41
+ },
42
+ },
43
+ }
44
+ ```
45
+
46
+ Per-agent override (optional):
47
+
48
+ ```json5
49
+ {
50
+ agents: {
51
+ list: [
52
+ {
53
+ id: "safe-runner",
54
+ tools: {
55
+ loopDetection: {
56
+ enabled: true,
57
+ warningThreshold: 8,
58
+ criticalThreshold: 16,
59
+ },
60
+ },
61
+ },
62
+ ],
63
+ },
64
+ }
65
+ ```
66
+
67
+ ### Field behavior
68
+
69
+ - `enabled`: Master switch. `false` means no loop detection is performed.
70
+ - `historySize`: number of recent tool calls kept for analysis.
71
+ - `warningThreshold`: threshold before classifying a pattern as warning-only.
72
+ - `criticalThreshold`: threshold for blocking repetitive loop patterns.
73
+ - `globalCircuitBreakerThreshold`: global no-progress breaker threshold.
74
+ - `detectors.genericRepeat`: detects repeated same-tool + same-params patterns.
75
+ - `detectors.knownPollNoProgress`: detects known polling-like patterns with no state change.
76
+ - `detectors.pingPong`: detects alternating ping-pong patterns.
77
+
78
+ ## Recommended setup
79
+
80
+ - Start with `enabled: true`, defaults unchanged.
81
+ - Keep thresholds ordered as `warningThreshold < criticalThreshold < globalCircuitBreakerThreshold`.
82
+ - If false positives occur:
83
+ - raise `warningThreshold` and/or `criticalThreshold`
84
+ - (optionally) raise `globalCircuitBreakerThreshold`
85
+ - disable only the detector causing issues
86
+ - reduce `historySize` for less strict historical context
87
+
88
+ ## Logs and expected behavior
89
+
90
+ When a loop is detected, Durar reports a loop event and blocks or dampens the next tool-cycle depending on severity.
91
+ This protects users from runaway token spend and lockups while preserving normal tool access.
92
+
93
+ - Prefer warning and temporary suppression first.
94
+ - Escalate only when repeated evidence accumulates.
95
+
96
+ ## Notes
97
+
98
+ - `tools.loopDetection` is merged with agent-level overrides.
99
+ - Per-agent config fully overrides or extends global values.
100
+ - If no config exists, guardrails stay off.
@@ -0,0 +1,99 @@
1
+ ---
2
+ summary: "MiniMax Search via the Coding Plan search API"
3
+ read_when:
4
+ - You want to use MiniMax for web_search
5
+ - You need a MiniMax Coding Plan key
6
+ - You want MiniMax CN/global search host guidance
7
+ title: "MiniMax Search"
8
+ ---
9
+
10
+ # MiniMax Search
11
+
12
+ Durar supports MiniMax as a `web_search` provider through the MiniMax
13
+ Coding Plan search API. It returns structured search results with titles, URLs,
14
+ snippets, and related queries.
15
+
16
+ ## Get a Coding Plan key
17
+
18
+ <Steps>
19
+ <Step title="Create a key">
20
+ Create or copy a MiniMax Coding Plan key from
21
+ [MiniMax Platform](https://platform.minimax.io/user-center/basic-information/interface-key).
22
+ </Step>
23
+ <Step title="Store the key">
24
+ Set `MINIMAX_CODE_PLAN_KEY` in the Gateway environment, or configure via:
25
+
26
+ ```bash
27
+ Durar configure --section web
28
+ ```
29
+
30
+ </Step>
31
+ </Steps>
32
+
33
+ Durar also accepts `MINIMAX_CODING_API_KEY` as an env alias. `MINIMAX_API_KEY`
34
+ is still read as a compatibility fallback when it already points at a coding-plan token.
35
+
36
+ ## Config
37
+
38
+ ```json5
39
+ {
40
+ plugins: {
41
+ entries: {
42
+ minimax: {
43
+ config: {
44
+ webSearch: {
45
+ apiKey: "sk-cp-...", // optional if MINIMAX_CODE_PLAN_KEY is set
46
+ region: "global", // or "cn"
47
+ },
48
+ },
49
+ },
50
+ },
51
+ },
52
+ tools: {
53
+ web: {
54
+ search: {
55
+ provider: "minimax",
56
+ },
57
+ },
58
+ },
59
+ }
60
+ ```
61
+
62
+ **Environment alternative:** set `MINIMAX_CODE_PLAN_KEY` in the Gateway environment.
63
+ For a gateway install, put it in `~/.Durar/.env`.
64
+
65
+ ## Region selection
66
+
67
+ MiniMax Search uses these endpoints:
68
+
69
+ - Global: `https://api.minimax.io/v1/coding_plan/search`
70
+ - CN: `https://api.minimaxi.com/v1/coding_plan/search`
71
+
72
+ If `plugins.entries.minimax.config.webSearch.region` is unset, Durar resolves
73
+ the region in this order:
74
+
75
+ 1. `tools.web.search.minimax.region` / plugin-owned `webSearch.region`
76
+ 2. `MINIMAX_API_HOST`
77
+ 3. `models.providers.minimax.baseUrl`
78
+ 4. `models.providers.minimax-portal.baseUrl`
79
+
80
+ That means CN onboarding or `MINIMAX_API_HOST=https://api.minimaxi.com/...`
81
+ automatically keeps MiniMax Search on the CN host too.
82
+
83
+ Even when you authenticated MiniMax through the OAuth `minimax-portal` path,
84
+ web search still registers as provider id `minimax`; the OAuth provider base URL
85
+ is only used as a region hint for CN/global host selection.
86
+
87
+ ## Supported parameters
88
+
89
+ MiniMax Search supports:
90
+
91
+ - `query`
92
+ - `count` (Durar trims the returned result list to the requested count)
93
+
94
+ Provider-specific filters are not currently supported.
95
+
96
+ ## Related
97
+
98
+ - [Web Search overview](/tools/web) -- all providers and auto-detection
99
+ - [MiniMax](/providers/minimax) -- model, image, speech, and auth setup