nodmix 2026.5.25

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 (827) hide show
  1. package/CHANGELOG.md +11573 -0
  2. package/LICENSE +21 -0
  3. package/README.md +486 -0
  4. package/docs/.i18n/README.md +81 -0
  5. package/docs/.i18n/ar-navigation.json +18 -0
  6. package/docs/.i18n/de-navigation.json +18 -0
  7. package/docs/.i18n/es-navigation.json +18 -0
  8. package/docs/.i18n/fr-navigation.json +18 -0
  9. package/docs/.i18n/glossary.ar.json +78 -0
  10. package/docs/.i18n/glossary.de.json +78 -0
  11. package/docs/.i18n/glossary.es.json +78 -0
  12. package/docs/.i18n/glossary.fa.json +78 -0
  13. package/docs/.i18n/glossary.fr.json +78 -0
  14. package/docs/.i18n/glossary.id.json +78 -0
  15. package/docs/.i18n/glossary.it.json +78 -0
  16. package/docs/.i18n/glossary.ja-JP.json +98 -0
  17. package/docs/.i18n/glossary.ko.json +78 -0
  18. package/docs/.i18n/glossary.nl.json +78 -0
  19. package/docs/.i18n/glossary.pl.json +78 -0
  20. package/docs/.i18n/glossary.pt-BR.json +78 -0
  21. package/docs/.i18n/glossary.th.json +78 -0
  22. package/docs/.i18n/glossary.tr.json +78 -0
  23. package/docs/.i18n/glossary.uk.json +78 -0
  24. package/docs/.i18n/glossary.vi.json +78 -0
  25. package/docs/.i18n/glossary.zh-CN.json +1002 -0
  26. package/docs/.i18n/glossary.zh-TW.json +78 -0
  27. package/docs/.i18n/id-navigation.json +18 -0
  28. package/docs/.i18n/it-navigation.json +18 -0
  29. package/docs/.i18n/ja-navigation.json +18 -0
  30. package/docs/.i18n/ko-navigation.json +18 -0
  31. package/docs/.i18n/pl-navigation.json +18 -0
  32. package/docs/.i18n/pt-BR-navigation.json +18 -0
  33. package/docs/.i18n/tr-navigation.json +18 -0
  34. package/docs/.i18n/translation-workflow.md +111 -0
  35. package/docs/.i18n/zh-Hans-navigation.json +542 -0
  36. package/docs/AGENTS.md +36 -0
  37. package/docs/announcements/bluebubbles-imessage.md +79 -0
  38. package/docs/assets/install-script.svg +1 -0
  39. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  40. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  41. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  42. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  43. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  44. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  45. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  46. package/docs/assets/openclaw-logo-text.png +0 -0
  47. package/docs/assets/openclaw-logo-text.svg +418 -0
  48. package/docs/assets/pixel-lobster.svg +60 -0
  49. package/docs/assets/pr/quick-settings-browser-tools.png +0 -0
  50. package/docs/assets/showcase/agents-ui.jpg +0 -0
  51. package/docs/assets/showcase/bambu-cli.png +0 -0
  52. package/docs/assets/showcase/codexmonitor.png +0 -0
  53. package/docs/assets/showcase/gohome-grafana.png +0 -0
  54. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  55. package/docs/assets/showcase/oura-health.png +0 -0
  56. package/docs/assets/showcase/padel-cli.svg +11 -0
  57. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  58. package/docs/assets/showcase/papla-tts.jpg +0 -0
  59. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  60. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  61. package/docs/assets/showcase/roborock-status.svg +13 -0
  62. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  63. package/docs/assets/showcase/snag.png +0 -0
  64. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  65. package/docs/assets/showcase/wienerlinien.png +0 -0
  66. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  67. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  68. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  69. package/docs/assets/sponsors/blacksmith-light.svg +14 -0
  70. package/docs/assets/sponsors/blacksmith.svg +14 -0
  71. package/docs/assets/sponsors/convex-light.svg +16 -0
  72. package/docs/assets/sponsors/convex.svg +16 -0
  73. package/docs/assets/sponsors/github-light.svg +3 -0
  74. package/docs/assets/sponsors/github.svg +3 -0
  75. package/docs/assets/sponsors/nvidia-dark.svg +9 -0
  76. package/docs/assets/sponsors/nvidia.svg +9 -0
  77. package/docs/assets/sponsors/openai-light.svg +3 -0
  78. package/docs/assets/sponsors/openai.svg +3 -0
  79. package/docs/assets/sponsors/vercel-light.svg +5 -0
  80. package/docs/assets/sponsors/vercel.svg +5 -0
  81. package/docs/auth-credential-semantics.md +124 -0
  82. package/docs/automation/auth-monitoring.md +11 -0
  83. package/docs/automation/clawflow.md +12 -0
  84. package/docs/automation/cron-jobs.md +500 -0
  85. package/docs/automation/cron-vs-heartbeat.md +11 -0
  86. package/docs/automation/gmail-pubsub.md +11 -0
  87. package/docs/automation/hooks.md +365 -0
  88. package/docs/automation/index.md +135 -0
  89. package/docs/automation/poll.md +12 -0
  90. package/docs/automation/standing-orders.md +250 -0
  91. package/docs/automation/taskflow.md +155 -0
  92. package/docs/automation/tasks.md +374 -0
  93. package/docs/automation/troubleshooting.md +12 -0
  94. package/docs/automation/webhook.md +12 -0
  95. package/docs/brave-search.md +11 -0
  96. package/docs/channels/access-groups.md +201 -0
  97. package/docs/channels/ambient-room-events.md +214 -0
  98. package/docs/channels/bot-loop-protection.md +131 -0
  99. package/docs/channels/broadcast-groups.md +472 -0
  100. package/docs/channels/channel-routing.md +162 -0
  101. package/docs/channels/clickclack.md +138 -0
  102. package/docs/channels/discord.md +1762 -0
  103. package/docs/channels/feishu.md +502 -0
  104. package/docs/channels/googlechat.md +284 -0
  105. package/docs/channels/group-messages.md +95 -0
  106. package/docs/channels/groups.md +519 -0
  107. package/docs/channels/imessage-from-bluebubbles.md +259 -0
  108. package/docs/channels/imessage.md +813 -0
  109. package/docs/channels/index.md +64 -0
  110. package/docs/channels/irc.md +253 -0
  111. package/docs/channels/line.md +243 -0
  112. package/docs/channels/location.md +71 -0
  113. package/docs/channels/matrix-migration.md +370 -0
  114. package/docs/channels/matrix-presentation.md +77 -0
  115. package/docs/channels/matrix-push-rules.md +150 -0
  116. package/docs/channels/matrix.md +921 -0
  117. package/docs/channels/mattermost.md +542 -0
  118. package/docs/channels/msteams.md +1042 -0
  119. package/docs/channels/nextcloud-talk.md +176 -0
  120. package/docs/channels/nostr.md +253 -0
  121. package/docs/channels/pairing.md +214 -0
  122. package/docs/channels/qqbot.md +309 -0
  123. package/docs/channels/signal.md +400 -0
  124. package/docs/channels/slack.md +1564 -0
  125. package/docs/channels/synology-chat.md +187 -0
  126. package/docs/channels/telegram.md +1107 -0
  127. package/docs/channels/tlon.md +296 -0
  128. package/docs/channels/troubleshooting.md +161 -0
  129. package/docs/channels/twitch.md +431 -0
  130. package/docs/channels/wechat.md +171 -0
  131. package/docs/channels/whatsapp.md +739 -0
  132. package/docs/channels/yuanbao.md +416 -0
  133. package/docs/channels/zalo.md +253 -0
  134. package/docs/channels/zalouser.md +199 -0
  135. package/docs/ci.md +612 -0
  136. package/docs/clawhub/publishing.md +96 -0
  137. package/docs/cli/acp.md +370 -0
  138. package/docs/cli/agent.md +103 -0
  139. package/docs/cli/agents.md +232 -0
  140. package/docs/cli/approvals.md +190 -0
  141. package/docs/cli/backup.md +97 -0
  142. package/docs/cli/browser.md +307 -0
  143. package/docs/cli/channels.md +154 -0
  144. package/docs/cli/clawbot.md +25 -0
  145. package/docs/cli/commitments.md +90 -0
  146. package/docs/cli/completion.md +39 -0
  147. package/docs/cli/config.md +504 -0
  148. package/docs/cli/configure.md +77 -0
  149. package/docs/cli/crestodian.md +332 -0
  150. package/docs/cli/cron.md +281 -0
  151. package/docs/cli/daemon.md +67 -0
  152. package/docs/cli/dashboard.md +33 -0
  153. package/docs/cli/devices.md +204 -0
  154. package/docs/cli/directory.md +68 -0
  155. package/docs/cli/dns.md +53 -0
  156. package/docs/cli/docs.md +73 -0
  157. package/docs/cli/doctor.md +237 -0
  158. package/docs/cli/flows.md +52 -0
  159. package/docs/cli/gateway.md +567 -0
  160. package/docs/cli/health.md +43 -0
  161. package/docs/cli/hooks.md +345 -0
  162. package/docs/cli/index.md +396 -0
  163. package/docs/cli/infer.md +364 -0
  164. package/docs/cli/logs.md +65 -0
  165. package/docs/cli/mcp.md +529 -0
  166. package/docs/cli/memory.md +183 -0
  167. package/docs/cli/message.md +317 -0
  168. package/docs/cli/migrate.md +290 -0
  169. package/docs/cli/models.md +224 -0
  170. package/docs/cli/node.md +177 -0
  171. package/docs/cli/nodes.md +76 -0
  172. package/docs/cli/onboard.md +245 -0
  173. package/docs/cli/pairing.md +77 -0
  174. package/docs/cli/path.md +502 -0
  175. package/docs/cli/plugins.md +454 -0
  176. package/docs/cli/policy.md +418 -0
  177. package/docs/cli/proxy.md +89 -0
  178. package/docs/cli/qr.md +56 -0
  179. package/docs/cli/reset.md +39 -0
  180. package/docs/cli/sandbox.md +208 -0
  181. package/docs/cli/secrets.md +202 -0
  182. package/docs/cli/security.md +124 -0
  183. package/docs/cli/sessions.md +164 -0
  184. package/docs/cli/setup.md +59 -0
  185. package/docs/cli/skills.md +102 -0
  186. package/docs/cli/status.md +45 -0
  187. package/docs/cli/system.md +89 -0
  188. package/docs/cli/tasks.md +111 -0
  189. package/docs/cli/tui.md +89 -0
  190. package/docs/cli/uninstall.md +44 -0
  191. package/docs/cli/update.md +242 -0
  192. package/docs/cli/voicecall.md +204 -0
  193. package/docs/cli/webhooks.md +117 -0
  194. package/docs/cli/wiki.md +256 -0
  195. package/docs/concepts/active-memory.md +856 -0
  196. package/docs/concepts/agent-loop.md +185 -0
  197. package/docs/concepts/agent-runtimes.md +243 -0
  198. package/docs/concepts/agent-workspace.md +230 -0
  199. package/docs/concepts/agent.md +136 -0
  200. package/docs/concepts/architecture.md +154 -0
  201. package/docs/concepts/channel-docking.md +145 -0
  202. package/docs/concepts/commitments.md +150 -0
  203. package/docs/concepts/compaction.md +203 -0
  204. package/docs/concepts/context-engine.md +306 -0
  205. package/docs/concepts/context.md +199 -0
  206. package/docs/concepts/delegate-architecture.md +319 -0
  207. package/docs/concepts/dreaming.md +261 -0
  208. package/docs/concepts/experimental-features.md +108 -0
  209. package/docs/concepts/features.md +91 -0
  210. package/docs/concepts/mantis-slack-desktop-runbook.md +202 -0
  211. package/docs/concepts/mantis.md +740 -0
  212. package/docs/concepts/markdown-formatting.md +139 -0
  213. package/docs/concepts/memory-builtin.md +146 -0
  214. package/docs/concepts/memory-honcho.md +144 -0
  215. package/docs/concepts/memory-qmd.md +271 -0
  216. package/docs/concepts/memory-search.md +166 -0
  217. package/docs/concepts/memory.md +258 -0
  218. package/docs/concepts/message-lifecycle-refactor.md +1128 -0
  219. package/docs/concepts/messages.md +214 -0
  220. package/docs/concepts/model-failover.md +385 -0
  221. package/docs/concepts/model-providers.md +715 -0
  222. package/docs/concepts/models.md +370 -0
  223. package/docs/concepts/multi-agent.md +619 -0
  224. package/docs/concepts/oauth.md +198 -0
  225. package/docs/concepts/openclaw-sdk.md +323 -0
  226. package/docs/concepts/parallel-specialist-lanes.md +127 -0
  227. package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
  228. package/docs/concepts/presence.md +117 -0
  229. package/docs/concepts/progress-drafts.md +362 -0
  230. package/docs/concepts/qa-e2e-automation.md +820 -0
  231. package/docs/concepts/qa-matrix.md +139 -0
  232. package/docs/concepts/queue-steering.md +90 -0
  233. package/docs/concepts/queue.md +122 -0
  234. package/docs/concepts/retry.md +86 -0
  235. package/docs/concepts/session-pruning.md +104 -0
  236. package/docs/concepts/session-tool.md +190 -0
  237. package/docs/concepts/session.md +164 -0
  238. package/docs/concepts/soul.md +116 -0
  239. package/docs/concepts/streaming.md +251 -0
  240. package/docs/concepts/system-prompt.md +310 -0
  241. package/docs/concepts/timezone.md +47 -0
  242. package/docs/concepts/typebox.md +309 -0
  243. package/docs/concepts/typing-indicators.md +88 -0
  244. package/docs/concepts/usage-tracking.md +66 -0
  245. package/docs/date-time.md +126 -0
  246. package/docs/debug/node-issue.md +90 -0
  247. package/docs/diagnostics/flags.md +138 -0
  248. package/docs/docs.json +1832 -0
  249. package/docs/gateway/authentication.md +239 -0
  250. package/docs/gateway/background-process.md +147 -0
  251. package/docs/gateway/bonjour.md +303 -0
  252. package/docs/gateway/bridge-protocol.md +94 -0
  253. package/docs/gateway/cli-backends.md +420 -0
  254. package/docs/gateway/config-agents.md +1514 -0
  255. package/docs/gateway/config-channels.md +945 -0
  256. package/docs/gateway/config-tools.md +769 -0
  257. package/docs/gateway/configuration-examples.md +705 -0
  258. package/docs/gateway/configuration-reference.md +1393 -0
  259. package/docs/gateway/configuration.md +737 -0
  260. package/docs/gateway/diagnostics.md +213 -0
  261. package/docs/gateway/discovery.md +154 -0
  262. package/docs/gateway/doctor.md +574 -0
  263. package/docs/gateway/gateway-lock.md +37 -0
  264. package/docs/gateway/health.md +73 -0
  265. package/docs/gateway/heartbeat.md +493 -0
  266. package/docs/gateway/index.md +383 -0
  267. package/docs/gateway/local-model-services.md +205 -0
  268. package/docs/gateway/local-models.md +355 -0
  269. package/docs/gateway/logging.md +149 -0
  270. package/docs/gateway/multiple-gateways.md +178 -0
  271. package/docs/gateway/network-model.md +15 -0
  272. package/docs/gateway/openai-http-api.md +350 -0
  273. package/docs/gateway/openresponses-http-api.md +347 -0
  274. package/docs/gateway/openshell.md +316 -0
  275. package/docs/gateway/opentelemetry.md +404 -0
  276. package/docs/gateway/operator-scopes.md +111 -0
  277. package/docs/gateway/pairing.md +207 -0
  278. package/docs/gateway/prometheus.md +230 -0
  279. package/docs/gateway/protocol.md +803 -0
  280. package/docs/gateway/remote-gateway-readme.md +169 -0
  281. package/docs/gateway/remote.md +280 -0
  282. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +146 -0
  283. package/docs/gateway/sandboxing.md +545 -0
  284. package/docs/gateway/secrets-plan-contract.md +114 -0
  285. package/docs/gateway/secrets.md +609 -0
  286. package/docs/gateway/security/audit-checks.md +127 -0
  287. package/docs/gateway/security/index.md +1326 -0
  288. package/docs/gateway/security/secure-file-operations.md +76 -0
  289. package/docs/gateway/tailscale.md +156 -0
  290. package/docs/gateway/tools-invoke-http-api.md +169 -0
  291. package/docs/gateway/troubleshooting.md +772 -0
  292. package/docs/gateway/trusted-proxy-auth.md +451 -0
  293. package/docs/help/debugging.md +344 -0
  294. package/docs/help/environment.md +214 -0
  295. package/docs/help/faq-first-run.md +867 -0
  296. package/docs/help/faq-models.md +553 -0
  297. package/docs/help/faq.md +1975 -0
  298. package/docs/help/gpt55-codex-agentic-parity-maintainers.md +196 -0
  299. package/docs/help/gpt55-codex-agentic-parity.md +230 -0
  300. package/docs/help/index.md +39 -0
  301. package/docs/help/scripts.md +56 -0
  302. package/docs/help/testing-live.md +580 -0
  303. package/docs/help/testing-updates-plugins.md +291 -0
  304. package/docs/help/testing.md +928 -0
  305. package/docs/help/troubleshooting.md +424 -0
  306. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  307. package/docs/images/feishu-get-group-id.png +0 -0
  308. package/docs/images/groups-flow.svg +52 -0
  309. package/docs/images/mobile-ui-screenshot.png +0 -0
  310. package/docs/index.md +196 -0
  311. package/docs/install/ansible.md +233 -0
  312. package/docs/install/azure.md +315 -0
  313. package/docs/install/bun.md +59 -0
  314. package/docs/install/clawdock.md +112 -0
  315. package/docs/install/development-channels.md +135 -0
  316. package/docs/install/digitalocean.md +174 -0
  317. package/docs/install/docker-vm-runtime.md +154 -0
  318. package/docs/install/docker.md +562 -0
  319. package/docs/install/exe-dev.md +201 -0
  320. package/docs/install/fly.md +524 -0
  321. package/docs/install/gcp.md +418 -0
  322. package/docs/install/hetzner.md +285 -0
  323. package/docs/install/hostinger.md +98 -0
  324. package/docs/install/index.md +221 -0
  325. package/docs/install/installer.md +455 -0
  326. package/docs/install/kubernetes.md +196 -0
  327. package/docs/install/macos-vm.md +281 -0
  328. package/docs/install/migrating-claude.md +165 -0
  329. package/docs/install/migrating-hermes.md +177 -0
  330. package/docs/install/migrating.md +137 -0
  331. package/docs/install/nix.md +112 -0
  332. package/docs/install/node.md +142 -0
  333. package/docs/install/northflank.mdx +44 -0
  334. package/docs/install/oracle.md +218 -0
  335. package/docs/install/podman.md +210 -0
  336. package/docs/install/railway.mdx +92 -0
  337. package/docs/install/raspberry-pi.md +234 -0
  338. package/docs/install/render.mdx +167 -0
  339. package/docs/install/uninstall.md +131 -0
  340. package/docs/install/updating.md +280 -0
  341. package/docs/logging.md +318 -0
  342. package/docs/nav-tabs-underline.js +100 -0
  343. package/docs/network.md +72 -0
  344. package/docs/nodes/audio.md +215 -0
  345. package/docs/nodes/camera.md +166 -0
  346. package/docs/nodes/images.md +77 -0
  347. package/docs/nodes/index.md +439 -0
  348. package/docs/nodes/location-command.md +102 -0
  349. package/docs/nodes/media-understanding.md +469 -0
  350. package/docs/nodes/talk.md +154 -0
  351. package/docs/nodes/troubleshooting.md +123 -0
  352. package/docs/nodes/voicewake.md +93 -0
  353. package/docs/perplexity.md +11 -0
  354. package/docs/pi-dev.md +82 -0
  355. package/docs/pi.md +573 -0
  356. package/docs/plan/codex-context-engine-harness.md +624 -0
  357. package/docs/plan/ui-channels.md +284 -0
  358. package/docs/platforms/android.md +285 -0
  359. package/docs/platforms/digitalocean.md +12 -0
  360. package/docs/platforms/index.md +60 -0
  361. package/docs/platforms/ios.md +283 -0
  362. package/docs/platforms/linux.md +141 -0
  363. package/docs/platforms/mac/bundled-gateway.md +79 -0
  364. package/docs/platforms/mac/canvas.md +128 -0
  365. package/docs/platforms/mac/child-process.md +72 -0
  366. package/docs/platforms/mac/dev-setup.md +112 -0
  367. package/docs/platforms/mac/health.md +39 -0
  368. package/docs/platforms/mac/icon.md +36 -0
  369. package/docs/platforms/mac/logging.md +62 -0
  370. package/docs/platforms/mac/menu-bar.md +93 -0
  371. package/docs/platforms/mac/peekaboo.md +92 -0
  372. package/docs/platforms/mac/permissions.md +53 -0
  373. package/docs/platforms/mac/remote.md +123 -0
  374. package/docs/platforms/mac/signing.md +52 -0
  375. package/docs/platforms/mac/skills.md +43 -0
  376. package/docs/platforms/mac/voice-overlay.md +66 -0
  377. package/docs/platforms/mac/voicewake.md +73 -0
  378. package/docs/platforms/mac/webchat.md +54 -0
  379. package/docs/platforms/mac/xpc.md +66 -0
  380. package/docs/platforms/macos.md +226 -0
  381. package/docs/platforms/oracle.md +12 -0
  382. package/docs/platforms/raspberry-pi.md +13 -0
  383. package/docs/platforms/windows.md +286 -0
  384. package/docs/plugins/adding-capabilities.md +133 -0
  385. package/docs/plugins/admin-http-rpc.md +216 -0
  386. package/docs/plugins/agent-tools.md +13 -0
  387. package/docs/plugins/architecture-internals.md +1195 -0
  388. package/docs/plugins/architecture.md +481 -0
  389. package/docs/plugins/building-extensions.md +13 -0
  390. package/docs/plugins/building-plugins.md +330 -0
  391. package/docs/plugins/bundles.md +310 -0
  392. package/docs/plugins/cli-backend-plugins.md +310 -0
  393. package/docs/plugins/codex-computer-use.md +293 -0
  394. package/docs/plugins/codex-harness-reference.md +409 -0
  395. package/docs/plugins/codex-harness-runtime.md +247 -0
  396. package/docs/plugins/codex-harness.md +746 -0
  397. package/docs/plugins/codex-native-plugins.md +276 -0
  398. package/docs/plugins/community.md +77 -0
  399. package/docs/plugins/compatibility.md +164 -0
  400. package/docs/plugins/dependency-resolution.md +143 -0
  401. package/docs/plugins/google-meet.md +1737 -0
  402. package/docs/plugins/hooks.md +459 -0
  403. package/docs/plugins/install-overrides.md +80 -0
  404. package/docs/plugins/manage-plugins.md +210 -0
  405. package/docs/plugins/manifest.md +1359 -0
  406. package/docs/plugins/memory-lancedb.md +385 -0
  407. package/docs/plugins/memory-wiki.md +529 -0
  408. package/docs/plugins/message-presentation.md +473 -0
  409. package/docs/plugins/oc-path.md +166 -0
  410. package/docs/plugins/plugin-inventory.md +182 -0
  411. package/docs/plugins/reference/acpx.md +23 -0
  412. package/docs/plugins/reference/admin-http-rpc.md +23 -0
  413. package/docs/plugins/reference/alibaba.md +23 -0
  414. package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
  415. package/docs/plugins/reference/amazon-bedrock.md +23 -0
  416. package/docs/plugins/reference/anthropic-vertex.md +19 -0
  417. package/docs/plugins/reference/anthropic.md +23 -0
  418. package/docs/plugins/reference/arcee.md +23 -0
  419. package/docs/plugins/reference/azure-speech.md +23 -0
  420. package/docs/plugins/reference/bonjour.md +19 -0
  421. package/docs/plugins/reference/brave.md +23 -0
  422. package/docs/plugins/reference/browser.md +23 -0
  423. package/docs/plugins/reference/byteplus.md +19 -0
  424. package/docs/plugins/reference/canvas.md +19 -0
  425. package/docs/plugins/reference/cerebras.md +23 -0
  426. package/docs/plugins/reference/chutes.md +23 -0
  427. package/docs/plugins/reference/clickclack.md +23 -0
  428. package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
  429. package/docs/plugins/reference/codex.md +23 -0
  430. package/docs/plugins/reference/comfy.md +23 -0
  431. package/docs/plugins/reference/copilot-proxy.md +19 -0
  432. package/docs/plugins/reference/deepgram.md +23 -0
  433. package/docs/plugins/reference/deepinfra.md +23 -0
  434. package/docs/plugins/reference/deepseek.md +23 -0
  435. package/docs/plugins/reference/diagnostics-otel.md +19 -0
  436. package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
  437. package/docs/plugins/reference/diffs.md +19 -0
  438. package/docs/plugins/reference/discord.md +23 -0
  439. package/docs/plugins/reference/document-extract.md +23 -0
  440. package/docs/plugins/reference/duckduckgo.md +23 -0
  441. package/docs/plugins/reference/elevenlabs.md +23 -0
  442. package/docs/plugins/reference/exa.md +23 -0
  443. package/docs/plugins/reference/fal.md +23 -0
  444. package/docs/plugins/reference/feishu.md +23 -0
  445. package/docs/plugins/reference/file-transfer.md +19 -0
  446. package/docs/plugins/reference/firecrawl.md +23 -0
  447. package/docs/plugins/reference/fireworks.md +23 -0
  448. package/docs/plugins/reference/github-copilot.md +23 -0
  449. package/docs/plugins/reference/google-meet.md +23 -0
  450. package/docs/plugins/reference/google.md +23 -0
  451. package/docs/plugins/reference/googlechat.md +23 -0
  452. package/docs/plugins/reference/gradium.md +23 -0
  453. package/docs/plugins/reference/groq.md +23 -0
  454. package/docs/plugins/reference/huggingface.md +23 -0
  455. package/docs/plugins/reference/imessage.md +23 -0
  456. package/docs/plugins/reference/inworld.md +23 -0
  457. package/docs/plugins/reference/irc.md +23 -0
  458. package/docs/plugins/reference/kilocode.md +23 -0
  459. package/docs/plugins/reference/kimi.md +23 -0
  460. package/docs/plugins/reference/line.md +23 -0
  461. package/docs/plugins/reference/litellm.md +23 -0
  462. package/docs/plugins/reference/llm-task.md +19 -0
  463. package/docs/plugins/reference/lmstudio.md +23 -0
  464. package/docs/plugins/reference/lobster.md +19 -0
  465. package/docs/plugins/reference/matrix.md +23 -0
  466. package/docs/plugins/reference/mattermost.md +23 -0
  467. package/docs/plugins/reference/memory-core.md +19 -0
  468. package/docs/plugins/reference/memory-lancedb.md +23 -0
  469. package/docs/plugins/reference/memory-wiki.md +23 -0
  470. package/docs/plugins/reference/microsoft-foundry.md +19 -0
  471. package/docs/plugins/reference/microsoft.md +19 -0
  472. package/docs/plugins/reference/migrate-claude.md +19 -0
  473. package/docs/plugins/reference/migrate-hermes.md +19 -0
  474. package/docs/plugins/reference/minimax.md +23 -0
  475. package/docs/plugins/reference/mistral.md +23 -0
  476. package/docs/plugins/reference/moonshot.md +23 -0
  477. package/docs/plugins/reference/msteams.md +23 -0
  478. package/docs/plugins/reference/nextcloud-talk.md +23 -0
  479. package/docs/plugins/reference/nostr.md +23 -0
  480. package/docs/plugins/reference/nvidia.md +23 -0
  481. package/docs/plugins/reference/oc-path.md +23 -0
  482. package/docs/plugins/reference/ollama.md +23 -0
  483. package/docs/plugins/reference/open-prose.md +19 -0
  484. package/docs/plugins/reference/openai.md +23 -0
  485. package/docs/plugins/reference/opencode-go.md +23 -0
  486. package/docs/plugins/reference/opencode.md +23 -0
  487. package/docs/plugins/reference/openrouter.md +23 -0
  488. package/docs/plugins/reference/openshell.md +19 -0
  489. package/docs/plugins/reference/perplexity.md +23 -0
  490. package/docs/plugins/reference/policy.md +23 -0
  491. package/docs/plugins/reference/qa-channel.md +23 -0
  492. package/docs/plugins/reference/qa-lab.md +19 -0
  493. package/docs/plugins/reference/qa-matrix.md +19 -0
  494. package/docs/plugins/reference/qianfan.md +23 -0
  495. package/docs/plugins/reference/qqbot.md +23 -0
  496. package/docs/plugins/reference/qwen.md +23 -0
  497. package/docs/plugins/reference/runway.md +23 -0
  498. package/docs/plugins/reference/searxng.md +19 -0
  499. package/docs/plugins/reference/senseaudio.md +23 -0
  500. package/docs/plugins/reference/sglang.md +23 -0
  501. package/docs/plugins/reference/signal.md +23 -0
  502. package/docs/plugins/reference/skill-workshop.md +23 -0
  503. package/docs/plugins/reference/slack.md +23 -0
  504. package/docs/plugins/reference/stepfun.md +23 -0
  505. package/docs/plugins/reference/synology-chat.md +23 -0
  506. package/docs/plugins/reference/synthetic.md +23 -0
  507. package/docs/plugins/reference/tavily.md +23 -0
  508. package/docs/plugins/reference/telegram.md +23 -0
  509. package/docs/plugins/reference/tencent.md +23 -0
  510. package/docs/plugins/reference/tlon.md +23 -0
  511. package/docs/plugins/reference/together.md +23 -0
  512. package/docs/plugins/reference/tokenjuice.md +23 -0
  513. package/docs/plugins/reference/tts-local-cli.md +19 -0
  514. package/docs/plugins/reference/twitch.md +23 -0
  515. package/docs/plugins/reference/venice.md +23 -0
  516. package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
  517. package/docs/plugins/reference/vllm.md +23 -0
  518. package/docs/plugins/reference/voice-call.md +23 -0
  519. package/docs/plugins/reference/volcengine.md +23 -0
  520. package/docs/plugins/reference/voyage.md +19 -0
  521. package/docs/plugins/reference/vydra.md +23 -0
  522. package/docs/plugins/reference/web-readability.md +19 -0
  523. package/docs/plugins/reference/webhooks.md +23 -0
  524. package/docs/plugins/reference/whatsapp.md +23 -0
  525. package/docs/plugins/reference/xai.md +23 -0
  526. package/docs/plugins/reference/xiaomi.md +23 -0
  527. package/docs/plugins/reference/zai.md +23 -0
  528. package/docs/plugins/reference/zalo.md +23 -0
  529. package/docs/plugins/reference/zalouser.md +24 -0
  530. package/docs/plugins/reference.md +138 -0
  531. package/docs/plugins/sdk-agent-harness.md +339 -0
  532. package/docs/plugins/sdk-channel-ingress.md +137 -0
  533. package/docs/plugins/sdk-channel-message.md +458 -0
  534. package/docs/plugins/sdk-channel-plugins.md +762 -0
  535. package/docs/plugins/sdk-channel-turn.md +580 -0
  536. package/docs/plugins/sdk-entrypoints.md +333 -0
  537. package/docs/plugins/sdk-migration.md +949 -0
  538. package/docs/plugins/sdk-overview.md +501 -0
  539. package/docs/plugins/sdk-provider-plugins.md +807 -0
  540. package/docs/plugins/sdk-runtime.md +676 -0
  541. package/docs/plugins/sdk-setup.md +550 -0
  542. package/docs/plugins/sdk-subpaths.md +396 -0
  543. package/docs/plugins/sdk-testing.md +401 -0
  544. package/docs/plugins/skill-workshop.md +713 -0
  545. package/docs/plugins/tool-plugins.md +411 -0
  546. package/docs/plugins/voice-call.md +943 -0
  547. package/docs/plugins/webhooks.md +192 -0
  548. package/docs/plugins/zalouser.md +86 -0
  549. package/docs/prose.md +137 -0
  550. package/docs/providers/alibaba.md +158 -0
  551. package/docs/providers/anthropic.md +344 -0
  552. package/docs/providers/arcee.md +144 -0
  553. package/docs/providers/azure-speech.md +119 -0
  554. package/docs/providers/bedrock-mantle.md +211 -0
  555. package/docs/providers/bedrock.md +414 -0
  556. package/docs/providers/cerebras.md +130 -0
  557. package/docs/providers/chutes.md +153 -0
  558. package/docs/providers/claude-max-api-proxy.md +188 -0
  559. package/docs/providers/cloudflare-ai-gateway.md +119 -0
  560. package/docs/providers/comfy.md +362 -0
  561. package/docs/providers/deepgram.md +184 -0
  562. package/docs/providers/deepinfra.md +87 -0
  563. package/docs/providers/deepseek.md +146 -0
  564. package/docs/providers/ds4.md +309 -0
  565. package/docs/providers/elevenlabs.md +130 -0
  566. package/docs/providers/fal.md +204 -0
  567. package/docs/providers/fireworks.md +144 -0
  568. package/docs/providers/github-copilot.md +225 -0
  569. package/docs/providers/glm.md +137 -0
  570. package/docs/providers/google.md +472 -0
  571. package/docs/providers/gradium.md +123 -0
  572. package/docs/providers/groq.md +180 -0
  573. package/docs/providers/huggingface.md +235 -0
  574. package/docs/providers/index.md +102 -0
  575. package/docs/providers/inferrs.md +272 -0
  576. package/docs/providers/inworld.md +120 -0
  577. package/docs/providers/kilocode.md +135 -0
  578. package/docs/providers/litellm.md +234 -0
  579. package/docs/providers/lmstudio.md +224 -0
  580. package/docs/providers/minimax.md +505 -0
  581. package/docs/providers/mistral.md +235 -0
  582. package/docs/providers/models.md +65 -0
  583. package/docs/providers/moonshot.md +413 -0
  584. package/docs/providers/nvidia.md +140 -0
  585. package/docs/providers/ollama.md +1180 -0
  586. package/docs/providers/openai.md +1057 -0
  587. package/docs/providers/opencode-go.md +123 -0
  588. package/docs/providers/opencode.md +149 -0
  589. package/docs/providers/openrouter.md +349 -0
  590. package/docs/providers/perplexity-provider.md +123 -0
  591. package/docs/providers/qianfan.md +132 -0
  592. package/docs/providers/qwen.md +332 -0
  593. package/docs/providers/runway.md +103 -0
  594. package/docs/providers/senseaudio.md +68 -0
  595. package/docs/providers/sglang.md +161 -0
  596. package/docs/providers/stepfun.md +229 -0
  597. package/docs/providers/synthetic.md +154 -0
  598. package/docs/providers/tencent.md +130 -0
  599. package/docs/providers/together.md +141 -0
  600. package/docs/providers/venice.md +315 -0
  601. package/docs/providers/vercel-ai-gateway.md +128 -0
  602. package/docs/providers/vllm.md +383 -0
  603. package/docs/providers/volcengine.md +199 -0
  604. package/docs/providers/vydra.md +180 -0
  605. package/docs/providers/xai.md +560 -0
  606. package/docs/providers/xiaomi.md +188 -0
  607. package/docs/providers/zai.md +203 -0
  608. package/docs/refactor/access.md +9 -0
  609. package/docs/refactor/acp.md +298 -0
  610. package/docs/refactor/canvas.md +131 -0
  611. package/docs/refactor/ingress-core.md +341 -0
  612. package/docs/reference/AGENTS.default.md +129 -0
  613. package/docs/reference/RELEASING.md +767 -0
  614. package/docs/reference/api-usage-costs.md +202 -0
  615. package/docs/reference/application-modernization-plan.md +208 -0
  616. package/docs/reference/code-mode.md +757 -0
  617. package/docs/reference/credits.md +33 -0
  618. package/docs/reference/device-models.md +50 -0
  619. package/docs/reference/full-release-validation.md +202 -0
  620. package/docs/reference/memory-config.md +630 -0
  621. package/docs/reference/openclaw-sdk-api-design.md +390 -0
  622. package/docs/reference/prompt-caching.md +358 -0
  623. package/docs/reference/rich-output-protocol.md +79 -0
  624. package/docs/reference/rpc.md +43 -0
  625. package/docs/reference/secretref-credential-surface.md +159 -0
  626. package/docs/reference/secretref-user-supplied-credentials-matrix.json +663 -0
  627. package/docs/reference/session-management-compaction.md +461 -0
  628. package/docs/reference/templates/AGENTS.dev.md +89 -0
  629. package/docs/reference/templates/AGENTS.md +225 -0
  630. package/docs/reference/templates/BOOT.md +16 -0
  631. package/docs/reference/templates/BOOTSTRAP.md +66 -0
  632. package/docs/reference/templates/HEARTBEAT.md +16 -0
  633. package/docs/reference/templates/IDENTITY.dev.md +52 -0
  634. package/docs/reference/templates/IDENTITY.md +34 -0
  635. package/docs/reference/templates/SOUL.dev.md +82 -0
  636. package/docs/reference/templates/SOUL.md +49 -0
  637. package/docs/reference/templates/TOOLS.dev.md +29 -0
  638. package/docs/reference/templates/TOOLS.md +51 -0
  639. package/docs/reference/templates/USER.dev.md +23 -0
  640. package/docs/reference/templates/USER.md +28 -0
  641. package/docs/reference/test.md +239 -0
  642. package/docs/reference/token-use.md +233 -0
  643. package/docs/reference/transcript-hygiene.md +214 -0
  644. package/docs/reference/wizard.md +252 -0
  645. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
  646. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  647. package/docs/security/formal-verification.md +170 -0
  648. package/docs/security/incident-response.md +59 -0
  649. package/docs/security/network-proxy.md +268 -0
  650. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
  651. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  652. package/docs/start/bootstrapping.md +49 -0
  653. package/docs/start/docs-directory.md +69 -0
  654. package/docs/start/getting-started.md +152 -0
  655. package/docs/start/hubs.md +201 -0
  656. package/docs/start/lore.md +223 -0
  657. package/docs/start/onboarding-overview.md +72 -0
  658. package/docs/start/onboarding.md +95 -0
  659. package/docs/start/openclaw.md +244 -0
  660. package/docs/start/quickstart.md +25 -0
  661. package/docs/start/setup.md +178 -0
  662. package/docs/start/showcase.md +383 -0
  663. package/docs/start/wizard-cli-automation.md +232 -0
  664. package/docs/start/wizard-cli-reference.md +331 -0
  665. package/docs/start/wizard.md +141 -0
  666. package/docs/style.css +184 -0
  667. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +316 -0
  668. package/docs/tools/acp-agents-setup.md +352 -0
  669. package/docs/tools/acp-agents.md +847 -0
  670. package/docs/tools/agent-send.md +112 -0
  671. package/docs/tools/apply-patch.md +64 -0
  672. package/docs/tools/brave-search.md +139 -0
  673. package/docs/tools/browser-control.md +391 -0
  674. package/docs/tools/browser-linux-troubleshooting.md +173 -0
  675. package/docs/tools/browser-login.md +77 -0
  676. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
  677. package/docs/tools/browser.md +769 -0
  678. package/docs/tools/btw.md +159 -0
  679. package/docs/tools/capability-cookbook.md +12 -0
  680. package/docs/tools/clawhub.md +5 -0
  681. package/docs/tools/code-execution.md +173 -0
  682. package/docs/tools/creating-skills.md +120 -0
  683. package/docs/tools/diffs.md +506 -0
  684. package/docs/tools/duckduckgo-search.md +109 -0
  685. package/docs/tools/elevated.md +128 -0
  686. package/docs/tools/exa-search.md +152 -0
  687. package/docs/tools/exec-approvals-advanced.md +360 -0
  688. package/docs/tools/exec-approvals.md +474 -0
  689. package/docs/tools/exec.md +282 -0
  690. package/docs/tools/firecrawl.md +155 -0
  691. package/docs/tools/gemini-search.md +114 -0
  692. package/docs/tools/grok-search.md +113 -0
  693. package/docs/tools/image-generation.md +433 -0
  694. package/docs/tools/index.md +178 -0
  695. package/docs/tools/kimi-search.md +105 -0
  696. package/docs/tools/llm-task.md +137 -0
  697. package/docs/tools/lobster.md +365 -0
  698. package/docs/tools/loop-detection.md +154 -0
  699. package/docs/tools/media-overview.md +157 -0
  700. package/docs/tools/minimax-search.md +102 -0
  701. package/docs/tools/multi-agent-sandbox-tools.md +409 -0
  702. package/docs/tools/music-generation.md +371 -0
  703. package/docs/tools/ollama-search.md +153 -0
  704. package/docs/tools/pdf.md +195 -0
  705. package/docs/tools/perplexity-search.md +220 -0
  706. package/docs/tools/plugin.md +327 -0
  707. package/docs/tools/reactions.md +100 -0
  708. package/docs/tools/searxng-search.md +141 -0
  709. package/docs/tools/skills-config.md +195 -0
  710. package/docs/tools/skills.md +535 -0
  711. package/docs/tools/slash-commands.md +488 -0
  712. package/docs/tools/steer.md +84 -0
  713. package/docs/tools/subagents.md +650 -0
  714. package/docs/tools/tavily.md +162 -0
  715. package/docs/tools/thinking.md +140 -0
  716. package/docs/tools/tokenjuice.md +81 -0
  717. package/docs/tools/tool-search.md +269 -0
  718. package/docs/tools/trajectory.md +229 -0
  719. package/docs/tools/tts.md +1004 -0
  720. package/docs/tools/video-generation.md +552 -0
  721. package/docs/tools/web-fetch.md +195 -0
  722. package/docs/tools/web.md +459 -0
  723. package/docs/tts.md +11 -0
  724. package/docs/vps.md +139 -0
  725. package/docs/web/control-ui.md +503 -0
  726. package/docs/web/dashboard.md +107 -0
  727. package/docs/web/index.md +133 -0
  728. package/docs/web/tui.md +246 -0
  729. package/docs/web/webchat.md +99 -0
  730. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  731. package/docs/whatsapp-openclaw.jpg +0 -0
  732. package/nodmix.mjs +487 -0
  733. package/package.json +1852 -0
  734. package/patches/.gitkeep +0 -0
  735. package/patches/@agentclientprotocol__claude-agent-acp@0.36.1.patch +41 -0
  736. package/pnpm-workspace.yaml +63 -0
  737. package/scripts/crabbox-wrapper.mjs +353 -0
  738. package/scripts/lib/official-external-channel-catalog.json +559 -0
  739. package/scripts/lib/official-external-plugin-catalog.json +192 -0
  740. package/scripts/lib/official-external-provider-catalog.json +117 -0
  741. package/scripts/lib/package-dist-imports.mjs +171 -0
  742. package/scripts/npm-runner.mjs +91 -0
  743. package/scripts/postinstall-bundled-plugins.mjs +978 -0
  744. package/scripts/preinstall-package-manager-warning.mjs +64 -0
  745. package/scripts/windows-cmd-helpers.mjs +20 -0
  746. package/skills/1password/SKILL.md +70 -0
  747. package/skills/1password/references/cli-examples.md +29 -0
  748. package/skills/1password/references/get-started.md +17 -0
  749. package/skills/apple-notes/SKILL.md +77 -0
  750. package/skills/apple-reminders/SKILL.md +118 -0
  751. package/skills/bear-notes/SKILL.md +107 -0
  752. package/skills/blogwatcher/SKILL.md +69 -0
  753. package/skills/blucli/SKILL.md +47 -0
  754. package/skills/camsnap/SKILL.md +45 -0
  755. package/skills/canvas/SKILL.md +78 -0
  756. package/skills/clawhub/SKILL.md +77 -0
  757. package/skills/coding-agent/SKILL.md +149 -0
  758. package/skills/diagram-maker/SKILL.md +53 -0
  759. package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
  760. package/skills/diagram-maker/references/svg-template.md +112 -0
  761. package/skills/discord/SKILL.md +136 -0
  762. package/skills/eightctl/SKILL.md +50 -0
  763. package/skills/gemini/SKILL.md +47 -0
  764. package/skills/gh-issues/SKILL.md +213 -0
  765. package/skills/gifgrep/SKILL.md +85 -0
  766. package/skills/github/SKILL.md +84 -0
  767. package/skills/gog/SKILL.md +116 -0
  768. package/skills/goplaces/SKILL.md +52 -0
  769. package/skills/healthcheck/SKILL.md +105 -0
  770. package/skills/himalaya/SKILL.md +80 -0
  771. package/skills/himalaya/references/configuration.md +184 -0
  772. package/skills/himalaya/references/message-composition.md +199 -0
  773. package/skills/imsg/SKILL.md +122 -0
  774. package/skills/mcporter/SKILL.md +61 -0
  775. package/skills/meme-maker/SKILL.md +42 -0
  776. package/skills/meme-maker/references/templates.json +358 -0
  777. package/skills/meme-maker/scripts/meme.mjs +398 -0
  778. package/skills/model-usage/SKILL.md +69 -0
  779. package/skills/model-usage/references/codexbar-cli.md +33 -0
  780. package/skills/model-usage/scripts/model_usage.py +319 -0
  781. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  782. package/skills/nano-pdf/SKILL.md +38 -0
  783. package/skills/node-connect/SKILL.md +142 -0
  784. package/skills/node-inspect-debugger/SKILL.md +85 -0
  785. package/skills/notion/SKILL.md +150 -0
  786. package/skills/obsidian/SKILL.md +119 -0
  787. package/skills/openai-whisper/SKILL.md +38 -0
  788. package/skills/openai-whisper-api/SKILL.md +71 -0
  789. package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
  790. package/skills/openhue/SKILL.md +112 -0
  791. package/skills/oracle/SKILL.md +126 -0
  792. package/skills/ordercli/SKILL.md +78 -0
  793. package/skills/peekaboo/SKILL.md +190 -0
  794. package/skills/pyproject.toml +10 -0
  795. package/skills/python-debugpy/SKILL.md +73 -0
  796. package/skills/sag/SKILL.md +87 -0
  797. package/skills/session-logs/SKILL.md +151 -0
  798. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  799. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  800. package/skills/skill-creator/SKILL.md +78 -0
  801. package/skills/skill-creator/license.txt +202 -0
  802. package/skills/skill-creator/scripts/init_skill.py +378 -0
  803. package/skills/skill-creator/scripts/package_skill.py +139 -0
  804. package/skills/skill-creator/scripts/quick_validate.py +169 -0
  805. package/skills/skill-creator/scripts/test_package_skill.py +161 -0
  806. package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
  807. package/skills/slack/SKILL.md +78 -0
  808. package/skills/songsee/SKILL.md +49 -0
  809. package/skills/sonoscli/SKILL.md +65 -0
  810. package/skills/spike/SKILL.md +51 -0
  811. package/skills/spotify-player/SKILL.md +64 -0
  812. package/skills/summarize/SKILL.md +87 -0
  813. package/skills/taskflow/SKILL.md +149 -0
  814. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  815. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  816. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  817. package/skills/things-mac/SKILL.md +86 -0
  818. package/skills/tmux/SKILL.md +91 -0
  819. package/skills/tmux/scripts/find-sessions.sh +112 -0
  820. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  821. package/skills/trello/SKILL.md +108 -0
  822. package/skills/video-frames/SKILL.md +46 -0
  823. package/skills/video-frames/scripts/frame.sh +81 -0
  824. package/skills/voice-call/SKILL.md +45 -0
  825. package/skills/wacli/SKILL.md +72 -0
  826. package/skills/weather/SKILL.md +64 -0
  827. package/skills/xurl/SKILL.md +120 -0
@@ -0,0 +1,137 @@
1
+ ---
2
+ summary: "Experimental channel ingress API for inbound message authorization"
3
+ read_when:
4
+ - Building or migrating a messaging channel plugin
5
+ - Changing DM or group allowlists, route gates, command auth, event auth, or mention activation
6
+ - Reviewing channel ingress redaction or SDK compatibility boundaries
7
+ title: "Channel ingress API"
8
+ sidebarTitle: "Channel Ingress"
9
+ ---
10
+
11
+ # Channel ingress API
12
+
13
+ Channel ingress is the experimental access-control boundary for inbound channel
14
+ events. Use `nodmix/plugin-sdk/channel-ingress-runtime` for receive paths.
15
+ The older `nodmix/plugin-sdk/channel-ingress` subpath stays exported as a
16
+ deprecated compatibility facade for third-party plugins.
17
+
18
+ Plugins own platform facts and side effects. Core owns generic policy: DM/group
19
+ allowlists, pairing-store DM entries, route gates, command gates, event auth,
20
+ mention activation, redacted diagnostics, and admission.
21
+
22
+ ## Runtime Resolver
23
+
24
+ ```ts
25
+ import {
26
+ defineStableChannelIngressIdentity,
27
+ resolveChannelMessageIngress,
28
+ } from "nodmix/plugin-sdk/channel-ingress-runtime";
29
+
30
+ const identity = defineStableChannelIngressIdentity({
31
+ key: "platform-user-id",
32
+ normalize: normalizePlatformUserId,
33
+ sensitivity: "pii",
34
+ });
35
+
36
+ const result = await resolveChannelMessageIngress({
37
+ channelId: "my-channel",
38
+ accountId,
39
+ identity,
40
+ subject: { stableId: platformUserId },
41
+ conversation: { kind: isGroup ? "group" : "direct", id: conversationId },
42
+ event: { kind: "message", authMode: "inbound", mayPair: !isGroup },
43
+ policy: {
44
+ dmPolicy: config.dmPolicy,
45
+ groupPolicy: config.groupPolicy,
46
+ groupAllowFromFallbackToAllowFrom: true,
47
+ },
48
+ allowFrom: config.allowFrom,
49
+ groupAllowFrom: config.groupAllowFrom,
50
+ accessGroups: cfg.accessGroups,
51
+ route,
52
+ readStoreAllowFrom,
53
+ command: hasControlCommand ? { allowTextCommands: true, hasControlCommand } : undefined,
54
+ });
55
+ ```
56
+
57
+ Do not precompute effective allowlists, command owners, or command groups. The
58
+ resolver derives them from raw allowlists, store callbacks, route descriptors,
59
+ access groups, policy, and conversation kind.
60
+
61
+ ## Result
62
+
63
+ Bundled plugins should consume modern projections directly:
64
+
65
+ - `ingress`: ordered gate decision and admission
66
+ - `senderAccess`: sender/conversation authorization only
67
+ - `routeAccess`: route and route-sender projection
68
+ - `commandAccess`: command authorization; false when no command gate ran
69
+ - `activationAccess`: mention/activation result
70
+
71
+ Event authorization remains available on the ordered `ingress.graph` and the
72
+ decisive `ingress.reasonCode`; no separate event projection is emitted.
73
+
74
+ Deprecated third-party SDK helpers may rebuild older shapes internally. New
75
+ bundled receive paths should not translate modern results back into local DTOs.
76
+
77
+ ## Access Groups
78
+
79
+ `accessGroup:<name>` entries stay redacted. Core resolves static
80
+ `message.senders` groups itself and calls `resolveAccessGroupMembership` only
81
+ for dynamic groups that require a platform lookup. Missing, unsupported, and
82
+ failed groups fail closed.
83
+
84
+ ## Event Modes
85
+
86
+ | `authMode` | Meaning |
87
+ | ---------------- | ------------------------------------------------ |
88
+ | `inbound` | normal inbound sender gates |
89
+ | `command` | command gates for callbacks or scoped buttons |
90
+ | `origin-subject` | actor must match the original message subject |
91
+ | `route-only` | route gates only for route-scoped trusted events |
92
+ | `none` | plugin-owned internal events bypass shared auth |
93
+
94
+ Use `mayPair: false` for reactions, buttons, callbacks, and native commands.
95
+
96
+ ## Routes And Activation
97
+
98
+ Use route descriptors for room, topic, guild, thread, or nested route policy:
99
+
100
+ ```ts
101
+ route: {
102
+ id: "room",
103
+ allowed: roomAllowed,
104
+ enabled: roomEnabled,
105
+ senderPolicy: "replace",
106
+ senderAllowFrom: roomAllowFrom,
107
+ blockReason: "room_sender_not_allowlisted",
108
+ }
109
+ ```
110
+
111
+ Use `channelIngressRoutes(...)` when a plugin has several optional route
112
+ descriptors; it filters disabled branches while keeping route facts generic and
113
+ ordered by each descriptor's `precedence`.
114
+
115
+ Mention gating is an activation gate. A mention miss returns
116
+ `admission: "skip"` so the turn kernel does not process an observe-only turn.
117
+ Most channels should leave activation after sender and command gates. Public
118
+ chat surfaces that must quiet non-mentioned traffic before sender allowlist
119
+ noise can opt into `activation.order: "before-sender"` when text-command
120
+ bypass is disabled. Channels with implicit activation, such as replies in bot
121
+ threads, can pass `activation.allowedImplicitMentionKinds`; the projected
122
+ `activationAccess.shouldBypassMention` then reports when command or implicit
123
+ activation bypassed an explicit mention.
124
+
125
+ ## Redaction
126
+
127
+ Raw sender values and raw allowlist entries are resolver input only. They must
128
+ not appear in resolved state, decisions, diagnostics, snapshots, or
129
+ compatibility facts. Use opaque subject ids, entry ids, route ids, and
130
+ diagnostic ids.
131
+
132
+ ## Verification
133
+
134
+ ```bash
135
+ pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts
136
+ pnpm plugin-sdk:api:check
137
+ ```
@@ -0,0 +1,458 @@
1
+ ---
2
+ summary: "Message lifecycle API for channel plugins, including durable sends, receipts, live preview, receive ack policy, and legacy migration"
3
+ title: "Channel message API"
4
+ read_when:
5
+ - You are building or refactoring a messaging channel plugin
6
+ - You need durable final reply delivery, receipts, live preview finalization, or receive acknowledgement policy
7
+ - You are migrating from legacy reply pipeline or inbound reply dispatch helpers
8
+ ---
9
+
10
+ Channel plugins should expose one `message` adapter from
11
+ `nodmix/plugin-sdk/channel-message`. The adapter describes the native message
12
+ lifecycle that the platform supports:
13
+
14
+ ```text
15
+ receive -> route and record -> agent turn -> durable final send
16
+ send -> render batch -> platform I/O -> receipt -> lifecycle side effects
17
+ live preview -> final edit or fallback -> receipt
18
+ ```
19
+
20
+ Core owns queueing, durability, generic retry policy, hooks, receipts, and the
21
+ shared `message` tool. The plugin owns native send/edit/delete calls, target
22
+ normalization, platform threading, selected quotes, notification flags, account
23
+ state, and platform-specific side effects.
24
+
25
+ Use this page together with [Building channel plugins](/plugins/sdk-channel-plugins).
26
+
27
+ The `channel-message` subpath is intentionally cheap enough for hot plugin
28
+ bootstrap files such as `channel.ts`: it exposes adapter contracts, capability
29
+ proofs, receipts, and compatibility facades without loading outbound delivery.
30
+ Runtime delivery helpers are available from
31
+ `nodmix/plugin-sdk/channel-message-runtime` for monitor/send code paths that
32
+ are already doing asynchronous message I/O.
33
+
34
+ New channel and plugin send code should use the message lifecycle helpers from
35
+ `nodmix/plugin-sdk/channel-message-runtime`: `sendDurableMessageBatch`,
36
+ `withDurableMessageSendContext`, or `deliverInboundReplyWithMessageSendContext`.
37
+ The older
38
+ `deliverOutboundPayloads(...)` helper in `nodmix/plugin-sdk/outbound-runtime`
39
+ is deprecated compatibility/runtime substrate for outbound internals, recovery,
40
+ and legacy adapters. Do not use it for new channel or plugin send paths.
41
+
42
+ `sendDurableMessageBatch(...)` returns an explicit lifecycle outcome:
43
+
44
+ - `sent` - at least one visible platform message was delivered.
45
+ - `suppressed` - no platform message should be treated as missing. Stable
46
+ reasons include `cancelled_by_message_sending_hook`,
47
+ `empty_after_message_sending_hook`, `no_visible_payload`,
48
+ `adapter_returned_no_identity`, and legacy `no_visible_result`.
49
+ - `partial_failed` - at least one platform message was delivered before a later
50
+ payload or side effect failed. The result includes the delivered receipt prefix
51
+ plus the failure.
52
+ - `failed` - no platform receipt was produced.
53
+
54
+ Use `payloadOutcomes` when a batch mixes sent, suppressed, and failed payloads.
55
+ Do not infer hook cancellation by checking whether the old direct-delivery array
56
+ is empty.
57
+
58
+ Compatibility dispatchers that still need the buffered reply dispatcher should
59
+ build reply-prefix options with `createChannelMessageReplyPipeline(...)` from
60
+ `nodmix/plugin-sdk/channel-message`, then call the runtime's
61
+ `channel.turn.runPrepared(...)`. That keeps session recording and dispatch
62
+ ordering on the shared turn lifecycle without adding another public turn wrapper.
63
+
64
+ ## Minimal adapter
65
+
66
+ Most new channel plugins can start with a small adapter:
67
+
68
+ ```typescript
69
+ import {
70
+ defineChannelMessageAdapter,
71
+ createMessageReceiptFromOutboundResults,
72
+ } from "nodmix/plugin-sdk/channel-message";
73
+
74
+ export const demoMessageAdapter = defineChannelMessageAdapter({
75
+ id: "demo",
76
+ durableFinal: {
77
+ capabilities: {
78
+ text: true,
79
+ replyTo: true,
80
+ thread: true,
81
+ messageSendingHooks: true,
82
+ },
83
+ },
84
+ send: {
85
+ text: async ({ cfg, to, text, accountId, replyToId, threadId, signal }) => {
86
+ const sent = await sendDemoMessage({
87
+ cfg,
88
+ to,
89
+ text,
90
+ accountId: accountId ?? undefined,
91
+ replyToId: replyToId ?? undefined,
92
+ threadId: threadId == null ? undefined : String(threadId),
93
+ signal,
94
+ });
95
+
96
+ return {
97
+ receipt: createMessageReceiptFromOutboundResults({
98
+ results: [{ channel: "demo", messageId: sent.id, conversationId: to }],
99
+ kind: "text",
100
+ threadId: threadId == null ? undefined : String(threadId),
101
+ replyToId: replyToId ?? undefined,
102
+ }),
103
+ };
104
+ },
105
+ },
106
+ });
107
+ ```
108
+
109
+ Then attach it to the channel plugin:
110
+
111
+ ```typescript
112
+ export const demoPlugin = createChatChannelPlugin({
113
+ base: {
114
+ id: "demo",
115
+ message: demoMessageAdapter,
116
+ // other channel plugin fields
117
+ },
118
+ });
119
+ ```
120
+
121
+ Only declare capabilities that the adapter really preserves. Every declared
122
+ capability should have a contract test.
123
+
124
+ ## Outbound bridge
125
+
126
+ If the channel already has a compatible `outbound` adapter, prefer deriving the
127
+ message adapter instead of duplicating send code:
128
+
129
+ ```typescript
130
+ import { createChannelMessageAdapterFromOutbound } from "nodmix/plugin-sdk/channel-message";
131
+
132
+ const demoMessageAdapter = createChannelMessageAdapterFromOutbound({
133
+ id: "demo",
134
+ outbound: demoOutboundAdapter,
135
+ });
136
+ ```
137
+
138
+ The bridge converts old outbound send results into `MessageReceipt` values. New
139
+ code should pass receipts end to end and only derive legacy ids at compatibility
140
+ edges with `listMessageReceiptPlatformIds(...)` or
141
+ `resolveMessageReceiptPrimaryId(...)`.
142
+ If no receive policy is supplied, `createChannelMessageAdapterFromOutbound(...)`
143
+ uses `manual` receive acknowledgement policy. That makes plugin-owned platform
144
+ acknowledgement explicit without changing channels that acknowledge webhooks,
145
+ sockets, or polling offsets outside generic receive context.
146
+
147
+ ## Message tool sends
148
+
149
+ The shared `message(action="send")` path should use the same core delivery
150
+ lifecycle as final replies. If a channel needs provider-specific shaping for the
151
+ tool send, implement `actions.prepareSendPayload(...)` instead of sending from
152
+ `actions.handleAction(...)`.
153
+
154
+ `prepareSendPayload(...)` receives the normalized core `ReplyPayload` plus the
155
+ full action context. Return a payload with channel-specific data in
156
+ `payload.channelData.<channel>` and let core call `sendMessage(...)`,
157
+ the message lifecycle runtime, the write-ahead queue, message-sending hooks,
158
+ retry, recovery, and ack cleanup. The lifecycle runtime may call
159
+ `deliverOutboundPayloads(...)` internally as compatibility substrate, but channel
160
+ plugins should not call it directly for new send behavior.
161
+
162
+ Return `null` only when the send cannot be represented as a durable payload, for
163
+ example because it contains a non-serializable component factory. Core will keep
164
+ the legacy plugin action fallback for compatibility, but new channel send
165
+ features should be expressible as durable payload data.
166
+
167
+ ```typescript
168
+ export const demoActions: ChannelMessageActionAdapter = {
169
+ describeMessageTool: () => ({ actions: ["send"], capabilities: ["presentation"] }),
170
+ prepareSendPayload: ({ ctx, payload }) => {
171
+ if (ctx.action !== "send") {
172
+ return null;
173
+ }
174
+ return {
175
+ ...payload,
176
+ channelData: {
177
+ ...payload.channelData,
178
+ demo: {
179
+ ...(payload.channelData?.demo as object | undefined),
180
+ nativeCard: ctx.params.card,
181
+ },
182
+ },
183
+ };
184
+ },
185
+ };
186
+ ```
187
+
188
+ The outbound adapter then reads `payload.channelData.demo` inside `sendPayload`.
189
+ This keeps platform-specific rendering in the plugin while core still owns
190
+ persist, retry, recover, hooks, and ack.
191
+
192
+ Prepared `message(action="send")` payloads and generic final-reply delivery use
193
+ core delivery with best-effort queueing by default. Required durable queueing is
194
+ only valid after core verifies the channel can reconcile a send whose outcome is
195
+ unknown after a crash. If the adapter cannot implement `reconcileUnknownSend`,
196
+ keep the prepared send path best-effort; core will still try the write-ahead
197
+ queue, but queue persistence or uncertain crash recovery is not part of the
198
+ required delivery contract.
199
+
200
+ ## Durable final capabilities
201
+
202
+ Durable final delivery is opt in per side effect. Core will only use generic
203
+ durable delivery when the adapter declares every capability needed by the
204
+ payload and delivery options.
205
+
206
+ | Capability | Declare when |
207
+ | ---------------------- | ------------------------------------------------------------------------------------ |
208
+ | `text` | The adapter can send text and return a receipt. |
209
+ | `media` | Media sends return receipts for every visible platform message. |
210
+ | `payload` | The adapter preserves rich reply payload semantics, not only text and one media URL. |
211
+ | `replyTo` | Native reply targets reach the platform. |
212
+ | `thread` | Native thread, topic, or channel thread targets reach the platform. |
213
+ | `silent` | Notification suppression reaches the platform. |
214
+ | `nativeQuote` | Selected quote metadata reaches the platform. |
215
+ | `messageSendingHooks` | Core message-sending hooks can cancel or rewrite content before platform I/O. |
216
+ | `batch` | Multi-part rendered batches are replayable as one durable plan. |
217
+ | `reconcileUnknownSend` | The adapter can resolve `unknown_after_send` recovery without blind replay. |
218
+ | `afterSendSuccess` | Channel-local after-send side effects run once. |
219
+ | `afterCommit` | Channel-local after-commit side effects run once. |
220
+
221
+ Best-effort final delivery does not require `reconcileUnknownSend`; it uses the
222
+ shared lifecycle when the adapter preserves the payload's visible semantics, and
223
+ falls back to direct platform I/O if queue persistence is unavailable. Required
224
+ durable final delivery must explicitly require `reconcileUnknownSend`. If the
225
+ adapter cannot determine whether a started/unknown send reached the platform,
226
+ do not declare that capability; core will reject required durable delivery
227
+ before queueing.
228
+
229
+ When a caller needs durable delivery, derive requirements instead of building
230
+ maps by hand:
231
+
232
+ ```typescript
233
+ import { deriveDurableFinalDeliveryRequirements } from "nodmix/plugin-sdk/channel-message";
234
+
235
+ const requiredCapabilities = deriveDurableFinalDeliveryRequirements({
236
+ payload,
237
+ replyToId,
238
+ threadId,
239
+ silent,
240
+ payloadTransport: true,
241
+ extraCapabilities: {
242
+ nativeQuote: hasSelectedQuote(payload),
243
+ },
244
+ });
245
+ ```
246
+
247
+ `messageSendingHooks` is required by default. Set `messageSendingHooks: false`
248
+ only for a path that intentionally cannot run global message-sending hooks.
249
+
250
+ ## Durable send contract
251
+
252
+ A durable final send has stricter semantics than legacy channel-owned delivery:
253
+
254
+ - Create the durable intent before platform I/O.
255
+ - If durable delivery returns a handled result, do not fall back to legacy send.
256
+ - Treat hook cancellation and no-send results as terminal.
257
+ - Treat `unsupported` as a pre-intent result only.
258
+ - For required durability, fail before platform I/O if the queue cannot record
259
+ that platform send has started.
260
+ - For required final delivery and required prepared message-tool sends,
261
+ preflight `reconcileUnknownSend`; recovery must be able to ack an
262
+ already-sent message or replay only after the adapter proves the original send
263
+ did not happen.
264
+ - For `best_effort`, queue write failures may fall back to direct platform I/O.
265
+ - Forward abort signals to media loading and platform sends.
266
+ - Run after-commit hooks after queue ack; direct best-effort fallback runs them
267
+ after successful platform I/O because there is no durable queue commit.
268
+ - Return receipts for every visible platform message id.
269
+ - Use `reconcileUnknownSend` when a platform can check whether an uncertain send
270
+ already reached the user.
271
+
272
+ This contract avoids duplicate sends after crashes and avoids bypassing
273
+ message-sending cancellation hooks.
274
+
275
+ ## Receipts
276
+
277
+ `MessageReceipt` is the new internal record of what the platform accepted:
278
+
279
+ ```typescript
280
+ type MessageReceipt = {
281
+ primaryPlatformMessageId?: string;
282
+ platformMessageIds: string[];
283
+ parts: MessageReceiptPart[];
284
+ threadId?: string;
285
+ replyToId?: string;
286
+ editToken?: string;
287
+ deleteToken?: string;
288
+ sentAt: number;
289
+ raw?: readonly MessageReceiptSourceResult[];
290
+ };
291
+ ```
292
+
293
+ Use `createMessageReceiptFromOutboundResults(...)` when adapting an existing
294
+ send result. Use `createPreviewMessageReceipt(...)` when a live preview message
295
+ becomes the final receipt. Avoid adding new owner-local `messageIds` fields.
296
+ Legacy `ChannelDeliveryResult.messageIds` is still produced at compatibility
297
+ edges.
298
+
299
+ ## Live preview
300
+
301
+ Channels that stream draft previews or progress updates should declare live
302
+ capabilities:
303
+
304
+ ```typescript
305
+ const demoMessageAdapter = defineChannelMessageAdapter({
306
+ id: "demo",
307
+ live: {
308
+ capabilities: {
309
+ draftPreview: true,
310
+ previewFinalization: true,
311
+ progressUpdates: true,
312
+ quietFinalization: true,
313
+ },
314
+ finalizer: {
315
+ capabilities: {
316
+ finalEdit: true,
317
+ normalFallback: true,
318
+ discardPending: true,
319
+ previewReceipt: true,
320
+ retainOnAmbiguousFailure: true,
321
+ },
322
+ },
323
+ },
324
+ });
325
+ ```
326
+
327
+ Use `defineFinalizableLivePreviewAdapter(...)` and
328
+ `deliverWithFinalizableLivePreviewAdapter(...)` for runtime finalization. The
329
+ finalizer decides whether the final reply edits the preview in place, sends a
330
+ normal fallback, discards pending preview state, keeps an ambiguous failed edit
331
+ without duplicating the message, and returns the final receipt.
332
+
333
+ ## Receive ack policy
334
+
335
+ Inbound receivers that control platform acknowledgement timing should declare
336
+ receive policy:
337
+
338
+ ```typescript
339
+ const demoMessageAdapter = defineChannelMessageAdapter({
340
+ id: "demo",
341
+ receive: {
342
+ defaultAckPolicy: "after_agent_dispatch",
343
+ supportedAckPolicies: ["after_receive_record", "after_agent_dispatch"],
344
+ },
345
+ });
346
+ ```
347
+
348
+ Adapters that do not declare receive policy default to:
349
+
350
+ ```typescript
351
+ {
352
+ receive: {
353
+ defaultAckPolicy: "manual",
354
+ supportedAckPolicies: ["manual"],
355
+ },
356
+ }
357
+ ```
358
+
359
+ Use the default when the platform has no acknowledgement to defer, already
360
+ acknowledges before asynchronous processing, or needs protocol-specific response
361
+ semantics. Declare one of the staged policies only when the receiver actually
362
+ uses receive context to move platform acknowledgement later.
363
+
364
+ Policies:
365
+
366
+ | Policy | Use when |
367
+ | ---------------------- | ---------------------------------------------------------------------------------------- |
368
+ | `after_receive_record` | The platform can be acknowledged after the inbound event is parsed and recorded. |
369
+ | `after_agent_dispatch` | The platform should wait until the agent dispatch has been accepted. |
370
+ | `after_durable_send` | The platform should wait until final delivery has a durable decision. |
371
+ | `manual` | The plugin owns acknowledgement because platform semantics do not match a generic stage. |
372
+
373
+ Use `createMessageReceiveContext(...)` in receivers that defer ack state, and
374
+ `shouldAckMessageAfterStage(...)` when the receiver needs to test whether a
375
+ stage has satisfied the configured policy.
376
+
377
+ ## Contract tests
378
+
379
+ Capability declarations are part of the plugin contract. Back them with tests:
380
+
381
+ ```typescript
382
+ import {
383
+ verifyChannelMessageAdapterCapabilityProofs,
384
+ verifyChannelMessageLiveCapabilityAdapterProofs,
385
+ verifyChannelMessageLiveFinalizerProofs,
386
+ verifyChannelMessageReceiveAckPolicyAdapterProofs,
387
+ } from "nodmix/plugin-sdk/channel-message";
388
+
389
+ it("backs declared message capabilities", async () => {
390
+ await expect(
391
+ verifyChannelMessageAdapterCapabilityProofs({
392
+ adapterName: "demo",
393
+ adapter: demoMessageAdapter,
394
+ proofs: {
395
+ text: async () => {
396
+ const result = await demoMessageAdapter.send!.text!(textCtx);
397
+ expect(result.receipt.platformMessageIds).toContain("msg-1");
398
+ },
399
+ replyTo: async () => {
400
+ await demoMessageAdapter.send!.text!({ ...textCtx, replyToId: "parent-1" });
401
+ expect(sendDemoMessage).toHaveBeenCalledWith(
402
+ expect.objectContaining({
403
+ replyToId: "parent-1",
404
+ }),
405
+ );
406
+ },
407
+ messageSendingHooks: () => {
408
+ expect(demoMessageAdapter.durableFinal!.capabilities!.messageSendingHooks).toBe(true);
409
+ },
410
+ },
411
+ }),
412
+ ).resolves.toContainEqual({ capability: "text", status: "verified" });
413
+ });
414
+ ```
415
+
416
+ Add live and receive proof suites when the adapter declares those features. A
417
+ missing proof should fail the test rather than silently widening the durable
418
+ surface.
419
+
420
+ ## Deprecated compatibility APIs
421
+
422
+ These APIs remain importable for third-party compatibility. Do not use them for
423
+ new channel code.
424
+
425
+ | Deprecated API | Replacement |
426
+ | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
427
+ | `nodmix/plugin-sdk/channel-reply-pipeline` | `nodmix/plugin-sdk/channel-message` |
428
+ | `createChannelTurnReplyPipeline(...)` | `createChannelMessageReplyPipeline(...)` for compatibility dispatchers, or a `message` adapter for new channel code |
429
+ | `buildChannelMessageReplyDispatchBase(...)` | `createChannelMessageReplyPipeline(...)` plus `channel.turn.runPrepared(...)`, or a `message` adapter for new channel code |
430
+ | `dispatchChannelMessageReplyWithBase(...)` | `createChannelMessageReplyPipeline(...)` plus `channel.turn.runPrepared(...)`, or a `message` adapter for new channel code |
431
+ | `recordChannelMessageReplyDispatch(...)` | `createChannelMessageReplyPipeline(...)` plus `channel.turn.runPrepared(...)`, or a `message` adapter for new channel code |
432
+ | `deliverOutboundPayloads(...)` | `sendDurableMessageBatch(...)` or `deliverInboundReplyWithMessageSendContext(...)` from `channel-message-runtime` |
433
+ | `deliverDurableInboundReplyPayload(...)` | `deliverInboundReplyWithMessageSendContext(...)` from `nodmix/plugin-sdk/channel-message-runtime` |
434
+ | `dispatchInboundReplyWithBase(...)` | `createChannelMessageReplyPipeline(...)` plus `channel.turn.runPrepared(...)`, or a `message` adapter for new channel code |
435
+ | `recordInboundSessionAndDispatchReply(...)` | `createChannelMessageReplyPipeline(...)` plus `channel.turn.runPrepared(...)`, or a `message` adapter for new channel code |
436
+ | `resolveChannelSourceReplyDeliveryMode(...)` | `resolveChannelMessageSourceReplyDeliveryMode(...)` |
437
+ | `deliverFinalizableDraftPreview(...)` | `defineFinalizableLivePreviewAdapter(...)` plus `deliverWithFinalizableLivePreviewAdapter(...)` |
438
+ | `DraftPreviewFinalizerDraft` | `LivePreviewFinalizerDraft` |
439
+ | `DraftPreviewFinalizerResult` | `LivePreviewFinalizerResult` |
440
+
441
+ Compatibility dispatchers can still use `createReplyPrefixContext(...)`,
442
+ `createReplyPrefixOptions(...)`, and `createTypingCallbacks(...)` through the
443
+ message facade. New lifecycle code should avoid the old
444
+ `channel-reply-pipeline` subpath.
445
+
446
+ ## Migration checklist
447
+
448
+ 1. Add `message: defineChannelMessageAdapter(...)` or
449
+ `message: createChannelMessageAdapterFromOutbound(...)` to the channel plugin.
450
+ 2. Return `MessageReceipt` from text, media, and payload sends.
451
+ 3. Declare only capabilities backed by native behavior and tests.
452
+ 4. Replace hand-written durable requirement maps with
453
+ `deriveDurableFinalDeliveryRequirements(...)`.
454
+ 5. Move preview finalization through the live preview helpers when the channel
455
+ edits draft messages in place.
456
+ 6. Declare receive ack policy only when the receiver can really defer platform
457
+ acknowledgement.
458
+ 7. Keep legacy reply dispatch helpers only at compatibility edges.