fengming 0.3.10 → 0.3.12

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 (871) hide show
  1. package/dist/build-info.json +2 -2
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/cli/run-main.js +3 -3
  4. package/dist/cli-startup-metadata.json +8 -8
  5. package/dist/{command-registry-DMB-HKIk.js → command-registry-BHIBvpgR.js} +2 -2
  6. package/dist/{command-registry-C5ooX6PF.js → command-registry-BT5icv-c.js} +2 -2
  7. package/dist/{command-registry-core-B2w_XWvn.js → command-registry-core-C-a3GaYV.js} +2 -2
  8. package/dist/{completion-cli-Bf4mEw2W.js → completion-cli-BUfFF31m.js} +2 -2
  9. package/dist/control-ui/assets/{activity-D-mnRThU.js → activity-DF1iC1pF.js} +2 -2
  10. package/dist/control-ui/assets/{agents-U_KSP5I_.js → agents-CDGNJA8n.js} +2 -2
  11. package/dist/control-ui/assets/{channels-ohK9_G1O.js → channels-CAPFdCrE.js} +2 -2
  12. package/dist/control-ui/assets/{cron-6ZCzfU29.js → cron-DUUdUzzu.js} +2 -2
  13. package/dist/control-ui/assets/{debug-CSsDLg_s.js → debug-BwfVXGKK.js} +2 -2
  14. package/dist/control-ui/assets/{index-jUDczxhd.js → index-JWV4rMUy.js} +4 -4
  15. package/dist/control-ui/assets/{instances-782ZoDT4.js → instances-BqAPpn0Y.js} +2 -2
  16. package/dist/control-ui/assets/{nodes-BMX16BKM.js → nodes-gya-0PkG.js} +2 -2
  17. package/dist/control-ui/assets/{sessions-jLGSApYa.js → sessions-BdttyTpI.js} +2 -2
  18. package/dist/control-ui/assets/{skills-DweBwUhs.js → skills-D_rtwBjc.js} +2 -2
  19. package/dist/control-ui/assets/{workboard-BsU-FXIo.js → workboard-CIGDGkWB.js} +2 -2
  20. package/dist/control-ui/index.html +1 -1
  21. package/dist/control-ui/sw.js +1 -1
  22. package/dist/crestodian/crestodian.js +1 -1
  23. package/dist/crestodian/rescue-message.js +1 -1
  24. package/dist/{crestodian-C0x7JjF-.js → crestodian-CAxGCgHM.js} +3 -3
  25. package/dist/{dialogue-No0NvYX7.js → dialogue-CHuN9qet.js} +1 -1
  26. package/dist/gateway/protocol/index.d.ts +1 -1
  27. package/dist/{index-AZzJCgph.d.ts → index-DbpfOFUf.d.ts} +1 -1
  28. package/dist/{operations-Z85LFqsT.js → operations-Mvnrndji.js} +1 -1
  29. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  30. package/dist/plugin-sdk/{agent-harness-runtime-CgQiThzm.d.ts → agent-harness-runtime-Bkrjji63.d.ts} +2 -2
  31. package/dist/plugin-sdk/agent-harness-runtime.d.ts +4 -4
  32. package/dist/plugin-sdk/agent-harness-task-runtime.d.ts +1 -1
  33. package/dist/plugin-sdk/agent-harness.d.ts +4 -4
  34. package/dist/plugin-sdk/agent-runtime.d.ts +1 -1
  35. package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-ZTBQez8k.d.ts} +9 -9
  36. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +1 -1
  37. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +1 -1
  38. package/dist/plugin-sdk/channel-core.d.ts +2 -2
  39. package/dist/plugin-sdk/channel-entry-contract.d.ts +1 -1
  40. package/dist/plugin-sdk/{channel-pairing-CX6ncj1r.d.ts → channel-pairing-CzsPAHgH.d.ts} +1 -1
  41. package/dist/plugin-sdk/channel-pairing.d.ts +1 -1
  42. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  43. package/dist/plugin-sdk/cli-backend.d.ts +1 -1
  44. package/dist/plugin-sdk/compat.d.ts +4 -4
  45. package/dist/plugin-sdk/{config-schema-DuJUjn6k.d.ts → config-schema-N64y7n8C.d.ts} +1 -1
  46. package/dist/plugin-sdk/config-schema.d.ts +4 -4
  47. package/dist/plugin-sdk/{core-CPtu2Ftl.d.ts → core-BWZB2hNB.d.ts} +1 -1
  48. package/dist/plugin-sdk/core.d.ts +7 -7
  49. package/dist/plugin-sdk/{delegate-uk6vAMkc.d.ts → delegate-o5xckIuc.d.ts} +1 -1
  50. package/dist/plugin-sdk/discord.d.ts +3 -3
  51. package/dist/plugin-sdk/{fengming-runtime-Dt2ZEVYX.d.ts → fengming-runtime-abXAXyq2.d.ts} +1 -1
  52. package/dist/plugin-sdk/gateway-runtime.d.ts +1 -1
  53. package/dist/plugin-sdk/{host-compat-CM0h9ODw.d.ts → host-compat-D2Ky8seZ.d.ts} +1 -1
  54. package/dist/plugin-sdk/{http-registry-BniL_epL.d.ts → http-registry-oxJbX3E-.d.ts} +2 -2
  55. package/dist/plugin-sdk/image-generation-core.d.ts +4 -4
  56. package/dist/plugin-sdk/image-generation-runtime.d.ts +3 -3
  57. package/dist/plugin-sdk/index.d.ts +4 -4
  58. package/dist/plugin-sdk/lmstudio.d.ts +1 -1
  59. package/dist/plugin-sdk/{loader-aELh60PE.d.ts → loader-CgJhYjxT.d.ts} +3 -3
  60. package/dist/plugin-sdk/{logger-BpB3--7Z.d.ts → logger-CyDIBtoX.d.ts} +1 -1
  61. package/dist/plugin-sdk/logging-core.d.ts +3 -3
  62. package/dist/plugin-sdk/memory-core-host-engine-embeddings.d.ts +2 -2
  63. package/dist/plugin-sdk/memory-core-host-engine-foundation.d.ts +3 -3
  64. package/dist/plugin-sdk/{memory-core-host-engine-storage-DYPjOQCg.d.ts → memory-core-host-engine-storage-DfW7ZqD0.d.ts} +1 -1
  65. package/dist/plugin-sdk/memory-core-host-engine-storage.d.ts +1 -1
  66. package/dist/plugin-sdk/memory-core-host-runtime-cli.d.ts +1 -1
  67. package/dist/plugin-sdk/memory-core-host-runtime-core.d.ts +3 -3
  68. package/dist/plugin-sdk/memory-core.d.ts +3 -3
  69. package/dist/plugin-sdk/memory-host-core.d.ts +3 -3
  70. package/dist/plugin-sdk/migration-runtime.d.ts +1 -1
  71. package/dist/plugin-sdk/migration.d.ts +1 -1
  72. package/dist/plugin-sdk/music-generation-core.d.ts +2 -2
  73. package/dist/plugin-sdk/{plugin-entry-DO9kQeTr.d.ts → plugin-entry-C9xM-ZA9.d.ts} +1 -1
  74. package/dist/plugin-sdk/plugin-entry.d.ts +3 -3
  75. package/dist/plugin-sdk/plugin-runtime.d.ts +3 -3
  76. package/dist/plugin-sdk/{provider-api-key-auth-DvIiojS6.d.ts → provider-api-key-auth-DOmYPTC2.d.ts} +1 -1
  77. package/dist/plugin-sdk/provider-auth-api-key.d.ts +4 -4
  78. package/dist/plugin-sdk/{provider-auth-helpers-CYkWZ0vq.d.ts → provider-auth-helpers-pqDNrZTd.d.ts} +1 -1
  79. package/dist/plugin-sdk/{provider-auth-input-DUV6ZTw4.d.ts → provider-auth-input-Ckt-cU4H.d.ts} +1 -1
  80. package/dist/plugin-sdk/provider-auth-result.d.ts +1 -1
  81. package/dist/plugin-sdk/provider-auth-runtime.d.ts +1 -1
  82. package/dist/plugin-sdk/provider-auth.d.ts +5 -5
  83. package/dist/plugin-sdk/provider-catalog-runtime.d.ts +2 -2
  84. package/dist/plugin-sdk/{provider-catalog-shared-Cm3SyFfL.d.ts → provider-catalog-shared-QvOT8Wz1.d.ts} +1 -1
  85. package/dist/plugin-sdk/provider-catalog-shared.d.ts +2 -2
  86. package/dist/plugin-sdk/provider-entry.d.ts +3 -3
  87. package/dist/plugin-sdk/{provider-model-shared-D5rgn7Gb.d.ts → provider-model-shared-Bnc8IMx5.d.ts} +1 -1
  88. package/dist/plugin-sdk/provider-model-shared.d.ts +2 -2
  89. package/dist/plugin-sdk/{provider-registry-DxdZT9UN.d.ts → provider-registry-Ba1nNfhA.d.ts} +1 -1
  90. package/dist/plugin-sdk/{provider-registry-DiKX35tc.d.ts → provider-registry-CqB5bSAD.d.ts} +1 -1
  91. package/dist/plugin-sdk/{provider-registry-D0vmhPWL.d.ts → provider-registry-CxdVib8g.d.ts} +1 -1
  92. package/dist/plugin-sdk/{provider-self-hosted-setup-BPx7JMDC.d.ts → provider-self-hosted-setup-eMoeVPnF.d.ts} +1 -1
  93. package/dist/plugin-sdk/provider-setup.d.ts +2 -2
  94. package/dist/plugin-sdk/{provider-stream-DcC2vn_N.d.ts → provider-stream-CGaLae9n.d.ts} +1 -1
  95. package/dist/plugin-sdk/provider-stream-family.d.ts +2 -2
  96. package/dist/plugin-sdk/{provider-stream-shared-ByDv3QKm.d.ts → provider-stream-shared-u5mt-8_i.d.ts} +1 -1
  97. package/dist/plugin-sdk/provider-stream-shared.d.ts +1 -1
  98. package/dist/plugin-sdk/provider-stream.d.ts +2 -2
  99. package/dist/plugin-sdk/provider-tools.d.ts +1 -1
  100. package/dist/plugin-sdk/provider-web-fetch-contract.d.ts +1 -1
  101. package/dist/plugin-sdk/provider-web-fetch.d.ts +1 -1
  102. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  103. package/dist/plugin-sdk/{provider-web-search-contract-fields-CY4v8kS-.d.ts → provider-web-search-contract-fields-BiWOSs_d.d.ts} +1 -1
  104. package/dist/plugin-sdk/provider-web-search-contract.d.ts +2 -2
  105. package/dist/plugin-sdk/provider-web-search.d.ts +1 -1
  106. package/dist/plugin-sdk/realtime-transcription.d.ts +1 -1
  107. package/dist/plugin-sdk/realtime-voice.d.ts +1 -1
  108. package/dist/plugin-sdk/{redact-identifier-CVwkabcI.d.ts → redact-identifier-CVqsKaEK.d.ts} +1 -1
  109. package/dist/plugin-sdk/{registry-CzaGoAKH.d.ts → registry-Gq9OFlb3.d.ts} +2 -2
  110. package/dist/plugin-sdk/{registry-types-DN1yiH3F.d.ts → registry-types-DyBkef1H.d.ts} +2 -2
  111. package/dist/plugin-sdk/reply-runtime.d.ts +1 -1
  112. package/dist/plugin-sdk/runtime-env.d.ts +3 -3
  113. package/dist/plugin-sdk/runtime-store.d.ts +1 -1
  114. package/dist/plugin-sdk/runtime.d.ts +3 -3
  115. package/dist/plugin-sdk/self-hosted-provider-setup.d.ts +2 -2
  116. package/dist/plugin-sdk/simple-completion-runtime.d.ts +1 -1
  117. package/dist/plugin-sdk/speech-core.d.ts +2 -2
  118. package/dist/plugin-sdk/speech.d.ts +2 -2
  119. package/dist/plugin-sdk/{subsystem-n4Y4vCcQ.d.ts → subsystem-Boo2DQIV.d.ts} +1 -1
  120. package/dist/plugin-sdk/text-runtime.d.ts +2 -2
  121. package/dist/plugin-sdk/tool-plugin.d.ts +2 -2
  122. package/dist/plugin-sdk/{types-BI8R-vGd.d.ts → types-DGF1KeaJ.d.ts} +2 -2
  123. package/dist/plugin-sdk/{types-CsqNt0j8.d.ts → types-DpaN54PS.d.ts} +1 -1
  124. package/dist/plugin-sdk/{unhandled-rejections-D9eBl3hT.d.ts → unhandled-rejections-Bez6JG0y.d.ts} +2 -2
  125. package/dist/plugin-sdk/video-generation-core.d.ts +3 -3
  126. package/dist/plugin-sdk/video-generation-runtime.d.ts +3 -3
  127. package/dist/plugin-sdk/webhook-ingress.d.ts +1 -1
  128. package/dist/plugin-sdk/webhook-targets.d.ts +1 -1
  129. package/dist/{program-D19g2jaa.js → program-BaCHjV-F.js} +1 -1
  130. package/dist/{register.crestodian-BhIukKDA.js → register.crestodian-DMJEPMf3.js} +1 -1
  131. package/dist/register.subclis-B0BgjwyK.js +3 -0
  132. package/dist/{register.subclis-DVk0HU4k.js → register.subclis-BuoWG93n.js} +2 -2
  133. package/dist/{register.subclis-core-BK7nVvl6.js → register.subclis-core-BGBFrWE3.js} +2 -2
  134. package/dist/{standalone-CHrieUsw.js → standalone-CV2Ud6F7.js} +1 -1
  135. package/dist/tui-Bvt7hhwe.js +3 -0
  136. package/dist/tui-CFSmzhsm.js +2 -0
  137. package/dist/{tui-backend-_Pn3Byj-.js → tui-backend-Bm_t5G7x.js} +4 -4
  138. package/dist/{tui-cli-CAiC39zd.js → tui-cli-9Ny23hmo.js} +1 -1
  139. package/dist/tui-ink-run-CuExfFLV.js +2 -0
  140. package/dist/{tui-ink-run-ChXEGj1h.js → tui-ink-run-qNL49iQn.js} +17 -1
  141. package/package.json +6 -410
  142. package/CHANGELOG.md +0 -42
  143. package/THIRD_PARTY_NOTICES.md +0 -37
  144. package/dist/register.subclis-Bsvdh8RI.js +0 -3
  145. package/dist/tui-C733Qov0.js +0 -2
  146. package/dist/tui-DqbscVN5.js +0 -3
  147. package/dist/tui-ink-run-D4mSfLHj.js +0 -2
  148. package/docs/.i18n/README.md +0 -81
  149. package/docs/.i18n/ar-navigation.json +0 -18
  150. package/docs/.i18n/de-navigation.json +0 -18
  151. package/docs/.i18n/es-navigation.json +0 -18
  152. package/docs/.i18n/fr-navigation.json +0 -18
  153. package/docs/.i18n/glossary.ar.json +0 -78
  154. package/docs/.i18n/glossary.de.json +0 -78
  155. package/docs/.i18n/glossary.es.json +0 -78
  156. package/docs/.i18n/glossary.fa.json +0 -78
  157. package/docs/.i18n/glossary.fr.json +0 -78
  158. package/docs/.i18n/glossary.id.json +0 -78
  159. package/docs/.i18n/glossary.it.json +0 -78
  160. package/docs/.i18n/glossary.ja-JP.json +0 -98
  161. package/docs/.i18n/glossary.ko.json +0 -78
  162. package/docs/.i18n/glossary.nl.json +0 -78
  163. package/docs/.i18n/glossary.pl.json +0 -78
  164. package/docs/.i18n/glossary.pt-BR.json +0 -78
  165. package/docs/.i18n/glossary.th.json +0 -78
  166. package/docs/.i18n/glossary.tr.json +0 -78
  167. package/docs/.i18n/glossary.uk.json +0 -78
  168. package/docs/.i18n/glossary.vi.json +0 -78
  169. package/docs/.i18n/glossary.zh-CN.json +0 -1122
  170. package/docs/.i18n/glossary.zh-TW.json +0 -78
  171. package/docs/.i18n/id-navigation.json +0 -18
  172. package/docs/.i18n/it-navigation.json +0 -18
  173. package/docs/.i18n/ja-navigation.json +0 -18
  174. package/docs/.i18n/ko-navigation.json +0 -18
  175. package/docs/.i18n/pl-navigation.json +0 -18
  176. package/docs/.i18n/pt-BR-navigation.json +0 -18
  177. package/docs/.i18n/tr-navigation.json +0 -18
  178. package/docs/.i18n/translation-workflow.md +0 -111
  179. package/docs/.i18n/zh-Hans-navigation.json +0 -552
  180. package/docs/AGENTS.md +0 -36
  181. package/docs/CLAUDE.md +0 -1
  182. package/docs/agent-runtime-architecture.md +0 -48
  183. package/docs/announcements/bluebubbles-imessage.md +0 -79
  184. package/docs/auth-credential-semantics.md +0 -124
  185. package/docs/automation/auth-monitoring.md +0 -11
  186. package/docs/automation/clawflow.md +0 -12
  187. package/docs/automation/cron-jobs.md +0 -534
  188. package/docs/automation/cron-vs-heartbeat.md +0 -11
  189. package/docs/automation/gmail-pubsub.md +0 -11
  190. package/docs/automation/hooks.md +0 -387
  191. package/docs/automation/index.md +0 -135
  192. package/docs/automation/poll.md +0 -12
  193. package/docs/automation/standing-orders.md +0 -250
  194. package/docs/automation/taskflow.md +0 -155
  195. package/docs/automation/tasks.md +0 -374
  196. package/docs/automation/troubleshooting.md +0 -12
  197. package/docs/automation/webhook.md +0 -12
  198. package/docs/brave-search.md +0 -11
  199. package/docs/channels/access-groups.md +0 -201
  200. package/docs/channels/ambient-room-events.md +0 -214
  201. package/docs/channels/bot-loop-protection.md +0 -131
  202. package/docs/channels/broadcast-groups.md +0 -472
  203. package/docs/channels/channel-routing.md +0 -162
  204. package/docs/channels/clickclack.md +0 -138
  205. package/docs/channels/discord.md +0 -1758
  206. package/docs/channels/feishu.md +0 -650
  207. package/docs/channels/googlechat.md +0 -284
  208. package/docs/channels/group-messages.md +0 -95
  209. package/docs/channels/groups.md +0 -524
  210. package/docs/channels/imessage-from-bluebubbles.md +0 -259
  211. package/docs/channels/imessage.md +0 -839
  212. package/docs/channels/index.md +0 -64
  213. package/docs/channels/irc.md +0 -253
  214. package/docs/channels/line.md +0 -243
  215. package/docs/channels/location.md +0 -71
  216. package/docs/channels/matrix-migration.md +0 -370
  217. package/docs/channels/matrix-presentation.md +0 -77
  218. package/docs/channels/matrix-push-rules.md +0 -150
  219. package/docs/channels/matrix.md +0 -921
  220. package/docs/channels/mattermost.md +0 -542
  221. package/docs/channels/msteams.md +0 -1096
  222. package/docs/channels/nextcloud-talk.md +0 -176
  223. package/docs/channels/nostr.md +0 -253
  224. package/docs/channels/pairing.md +0 -214
  225. package/docs/channels/qqbot.md +0 -314
  226. package/docs/channels/signal.md +0 -417
  227. package/docs/channels/slack.md +0 -1623
  228. package/docs/channels/synology-chat.md +0 -187
  229. package/docs/channels/telegram.md +0 -1124
  230. package/docs/channels/tlon.md +0 -296
  231. package/docs/channels/troubleshooting.md +0 -162
  232. package/docs/channels/twitch.md +0 -431
  233. package/docs/channels/wechat.md +0 -171
  234. package/docs/channels/whatsapp.md +0 -796
  235. package/docs/channels/yuanbao.md +0 -416
  236. package/docs/channels/zalo.md +0 -253
  237. package/docs/channels/zalouser.md +0 -217
  238. package/docs/ci.md +0 -657
  239. package/docs/clawhub/publishing.md +0 -96
  240. package/docs/cli/acp.md +0 -370
  241. package/docs/cli/agent.md +0 -109
  242. package/docs/cli/agents.md +0 -253
  243. package/docs/cli/approvals.md +0 -190
  244. package/docs/cli/backup.md +0 -98
  245. package/docs/cli/browser.md +0 -307
  246. package/docs/cli/channels.md +0 -154
  247. package/docs/cli/clawbot.md +0 -25
  248. package/docs/cli/commitments.md +0 -90
  249. package/docs/cli/completion.md +0 -39
  250. package/docs/cli/config.md +0 -504
  251. package/docs/cli/configure.md +0 -77
  252. package/docs/cli/crestodian.md +0 -337
  253. package/docs/cli/cron.md +0 -304
  254. package/docs/cli/daemon.md +0 -67
  255. package/docs/cli/dashboard.md +0 -33
  256. package/docs/cli/devices.md +0 -240
  257. package/docs/cli/directory.md +0 -68
  258. package/docs/cli/dns.md +0 -53
  259. package/docs/cli/docs.md +0 -63
  260. package/docs/cli/doctor.md +0 -241
  261. package/docs/cli/flows.md +0 -52
  262. package/docs/cli/gateway.md +0 -572
  263. package/docs/cli/health.md +0 -43
  264. package/docs/cli/hooks.md +0 -345
  265. package/docs/cli/index.md +0 -400
  266. package/docs/cli/infer.md +0 -364
  267. package/docs/cli/logs.md +0 -68
  268. package/docs/cli/mcp.md +0 -529
  269. package/docs/cli/memory.md +0 -183
  270. package/docs/cli/message.md +0 -317
  271. package/docs/cli/migrate.md +0 -334
  272. package/docs/cli/models.md +0 -239
  273. package/docs/cli/node.md +0 -177
  274. package/docs/cli/nodes.md +0 -76
  275. package/docs/cli/onboard.md +0 -250
  276. package/docs/cli/pairing.md +0 -77
  277. package/docs/cli/path.md +0 -511
  278. package/docs/cli/plugins.md +0 -459
  279. package/docs/cli/policy.md +0 -886
  280. package/docs/cli/proxy.md +0 -89
  281. package/docs/cli/qr.md +0 -56
  282. package/docs/cli/reset.md +0 -39
  283. package/docs/cli/sandbox.md +0 -208
  284. package/docs/cli/secrets.md +0 -202
  285. package/docs/cli/security.md +0 -136
  286. package/docs/cli/sessions.md +0 -164
  287. package/docs/cli/setup.md +0 -59
  288. package/docs/cli/skills.md +0 -122
  289. package/docs/cli/status.md +0 -45
  290. package/docs/cli/system.md +0 -89
  291. package/docs/cli/tasks.md +0 -111
  292. package/docs/cli/transcripts.md +0 -151
  293. package/docs/cli/tui.md +0 -91
  294. package/docs/cli/uninstall.md +0 -44
  295. package/docs/cli/update.md +0 -243
  296. package/docs/cli/voicecall.md +0 -204
  297. package/docs/cli/webhooks.md +0 -117
  298. package/docs/cli/wiki.md +0 -256
  299. package/docs/concepts/active-memory.md +0 -856
  300. package/docs/concepts/agent-loop.md +0 -185
  301. package/docs/concepts/agent-runtimes.md +0 -276
  302. package/docs/concepts/agent-workspace.md +0 -230
  303. package/docs/concepts/agent.md +0 -140
  304. package/docs/concepts/architecture.md +0 -154
  305. package/docs/concepts/channel-docking.md +0 -145
  306. package/docs/concepts/commitments.md +0 -150
  307. package/docs/concepts/compaction.md +0 -203
  308. package/docs/concepts/context-engine.md +0 -347
  309. package/docs/concepts/context.md +0 -199
  310. package/docs/concepts/delegate-architecture.md +0 -319
  311. package/docs/concepts/dreaming.md +0 -264
  312. package/docs/concepts/experimental-features.md +0 -109
  313. package/docs/concepts/features.md +0 -91
  314. package/docs/concepts/fengming-sdk.md +0 -323
  315. package/docs/concepts/mantis-slack-desktop-runbook.md +0 -231
  316. package/docs/concepts/mantis.md +0 -744
  317. package/docs/concepts/markdown-formatting.md +0 -139
  318. package/docs/concepts/memory-builtin.md +0 -148
  319. package/docs/concepts/memory-honcho.md +0 -144
  320. package/docs/concepts/memory-qmd.md +0 -271
  321. package/docs/concepts/memory-search.md +0 -167
  322. package/docs/concepts/memory.md +0 -299
  323. package/docs/concepts/message-lifecycle-refactor.md +0 -1126
  324. package/docs/concepts/messages.md +0 -214
  325. package/docs/concepts/model-failover.md +0 -384
  326. package/docs/concepts/model-providers.md +0 -719
  327. package/docs/concepts/models.md +0 -371
  328. package/docs/concepts/multi-agent.md +0 -625
  329. package/docs/concepts/oauth.md +0 -198
  330. package/docs/concepts/parallel-specialist-lanes.md +0 -127
  331. package/docs/concepts/personal-agent-benchmark-pack.md +0 -74
  332. package/docs/concepts/presence.md +0 -117
  333. package/docs/concepts/progress-drafts.md +0 -406
  334. package/docs/concepts/qa-e2e-automation.md +0 -947
  335. package/docs/concepts/qa-matrix.md +0 -139
  336. package/docs/concepts/queue-steering.md +0 -90
  337. package/docs/concepts/queue.md +0 -136
  338. package/docs/concepts/retry.md +0 -86
  339. package/docs/concepts/session-pruning.md +0 -104
  340. package/docs/concepts/session-tool.md +0 -188
  341. package/docs/concepts/session.md +0 -164
  342. package/docs/concepts/soul.md +0 -116
  343. package/docs/concepts/streaming.md +0 -257
  344. package/docs/concepts/system-prompt.md +0 -328
  345. package/docs/concepts/timezone.md +0 -47
  346. package/docs/concepts/typebox.md +0 -309
  347. package/docs/concepts/typing-indicators.md +0 -88
  348. package/docs/concepts/usage-tracking.md +0 -66
  349. package/docs/date-time.md +0 -126
  350. package/docs/debug/node-issue.md +0 -90
  351. package/docs/diagnostics/flags.md +0 -182
  352. package/docs/docs.json +0 -1862
  353. package/docs/fengming-agent-runtime.md +0 -82
  354. package/docs/gateway/authentication.md +0 -256
  355. package/docs/gateway/background-process.md +0 -147
  356. package/docs/gateway/bonjour.md +0 -303
  357. package/docs/gateway/bridge-protocol.md +0 -97
  358. package/docs/gateway/cli-backends.md +0 -439
  359. package/docs/gateway/config-agents.md +0 -1525
  360. package/docs/gateway/config-channels.md +0 -945
  361. package/docs/gateway/config-tools.md +0 -774
  362. package/docs/gateway/configuration-examples.md +0 -704
  363. package/docs/gateway/configuration-reference.md +0 -1391
  364. package/docs/gateway/configuration.md +0 -739
  365. package/docs/gateway/diagnostics.md +0 -213
  366. package/docs/gateway/discovery.md +0 -154
  367. package/docs/gateway/doctor.md +0 -575
  368. package/docs/gateway/gateway-lock.md +0 -37
  369. package/docs/gateway/health.md +0 -73
  370. package/docs/gateway/heartbeat.md +0 -498
  371. package/docs/gateway/index.md +0 -383
  372. package/docs/gateway/local-model-services.md +0 -205
  373. package/docs/gateway/local-models.md +0 -355
  374. package/docs/gateway/logging.md +0 -149
  375. package/docs/gateway/multiple-gateways.md +0 -178
  376. package/docs/gateway/network-model.md +0 -15
  377. package/docs/gateway/openai-http-api.md +0 -378
  378. package/docs/gateway/openresponses-http-api.md +0 -347
  379. package/docs/gateway/openshell.md +0 -316
  380. package/docs/gateway/opentelemetry.md +0 -433
  381. package/docs/gateway/operator-scopes.md +0 -119
  382. package/docs/gateway/pairing.md +0 -207
  383. package/docs/gateway/prometheus.md +0 -249
  384. package/docs/gateway/protocol.md +0 -826
  385. package/docs/gateway/remote-gateway-readme.md +0 -169
  386. package/docs/gateway/remote.md +0 -280
  387. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -148
  388. package/docs/gateway/sandboxing.md +0 -546
  389. package/docs/gateway/secrets-plan-contract.md +0 -159
  390. package/docs/gateway/secrets.md +0 -805
  391. package/docs/gateway/security/audit-checks.md +0 -127
  392. package/docs/gateway/security/exposure-runbook.md +0 -212
  393. package/docs/gateway/security/index.md +0 -1343
  394. package/docs/gateway/security/secure-file-operations.md +0 -76
  395. package/docs/gateway/security/shrinkwrap.md +0 -111
  396. package/docs/gateway/tailscale.md +0 -156
  397. package/docs/gateway/tools-invoke-http-api.md +0 -169
  398. package/docs/gateway/troubleshooting.md +0 -877
  399. package/docs/gateway/trusted-proxy-auth.md +0 -483
  400. package/docs/help/debugging.md +0 -341
  401. package/docs/help/environment.md +0 -233
  402. package/docs/help/faq-first-run.md +0 -870
  403. package/docs/help/faq-models.md +0 -556
  404. package/docs/help/faq.md +0 -2041
  405. package/docs/help/index.md +0 -39
  406. package/docs/help/scripts.md +0 -56
  407. package/docs/help/testing-live.md +0 -587
  408. package/docs/help/testing-updates-plugins.md +0 -299
  409. package/docs/help/testing.md +0 -977
  410. package/docs/help/troubleshooting.md +0 -449
  411. package/docs/index.md +0 -196
  412. package/docs/install/ansible.md +0 -233
  413. package/docs/install/azure.md +0 -315
  414. package/docs/install/bun.md +0 -59
  415. package/docs/install/clawdock.md +0 -112
  416. package/docs/install/development-channels.md +0 -148
  417. package/docs/install/digitalocean.md +0 -174
  418. package/docs/install/docker-vm-runtime.md +0 -154
  419. package/docs/install/docker.md +0 -564
  420. package/docs/install/exe-dev.md +0 -201
  421. package/docs/install/fly.md +0 -524
  422. package/docs/install/gcp.md +0 -418
  423. package/docs/install/hetzner.md +0 -285
  424. package/docs/install/hostinger.md +0 -98
  425. package/docs/install/index.md +0 -232
  426. package/docs/install/installer.md +0 -447
  427. package/docs/install/kubernetes.md +0 -196
  428. package/docs/install/macos-vm.md +0 -281
  429. package/docs/install/migrating-claude.md +0 -165
  430. package/docs/install/migrating-hermes.md +0 -178
  431. package/docs/install/migrating.md +0 -137
  432. package/docs/install/nix.md +0 -112
  433. package/docs/install/node.md +0 -142
  434. package/docs/install/northflank.mdx +0 -44
  435. package/docs/install/oracle.md +0 -218
  436. package/docs/install/podman.md +0 -216
  437. package/docs/install/railway.mdx +0 -92
  438. package/docs/install/raspberry-pi.md +0 -234
  439. package/docs/install/render.mdx +0 -167
  440. package/docs/install/uninstall.md +0 -131
  441. package/docs/install/updating.md +0 -284
  442. package/docs/install/upstash.md +0 -96
  443. package/docs/logging.md +0 -320
  444. package/docs/nav-tabs-underline.js +0 -100
  445. package/docs/network.md +0 -72
  446. package/docs/nodes/audio.md +0 -216
  447. package/docs/nodes/camera.md +0 -166
  448. package/docs/nodes/images.md +0 -77
  449. package/docs/nodes/index.md +0 -439
  450. package/docs/nodes/location-command.md +0 -102
  451. package/docs/nodes/media-understanding.md +0 -495
  452. package/docs/nodes/talk.md +0 -160
  453. package/docs/nodes/troubleshooting.md +0 -123
  454. package/docs/nodes/voicewake.md +0 -93
  455. package/docs/perplexity.md +0 -11
  456. package/docs/plan/codex-context-engine-harness.md +0 -624
  457. package/docs/plan/ui-channels.md +0 -284
  458. package/docs/platforms/digitalocean.md +0 -12
  459. package/docs/platforms/easyrunner.md +0 -109
  460. package/docs/platforms/index.md +0 -51
  461. package/docs/platforms/linux.md +0 -141
  462. package/docs/platforms/mac/bundled-gateway.md +0 -79
  463. package/docs/platforms/mac/canvas.md +0 -128
  464. package/docs/platforms/mac/child-process.md +0 -72
  465. package/docs/platforms/mac/dev-setup.md +0 -112
  466. package/docs/platforms/mac/health.md +0 -39
  467. package/docs/platforms/mac/icon.md +0 -36
  468. package/docs/platforms/mac/logging.md +0 -62
  469. package/docs/platforms/mac/menu-bar.md +0 -93
  470. package/docs/platforms/mac/peekaboo.md +0 -96
  471. package/docs/platforms/mac/permissions.md +0 -73
  472. package/docs/platforms/mac/remote.md +0 -123
  473. package/docs/platforms/mac/signing.md +0 -52
  474. package/docs/platforms/mac/skills.md +0 -43
  475. package/docs/platforms/mac/voice-overlay.md +0 -66
  476. package/docs/platforms/mac/voicewake.md +0 -73
  477. package/docs/platforms/mac/webchat.md +0 -54
  478. package/docs/platforms/mac/xpc.md +0 -66
  479. package/docs/platforms/oracle.md +0 -12
  480. package/docs/platforms/raspberry-pi.md +0 -13
  481. package/docs/platforms/windows.md +0 -286
  482. package/docs/plugins/adding-capabilities.md +0 -146
  483. package/docs/plugins/admin-http-rpc.md +0 -216
  484. package/docs/plugins/agent-tools.md +0 -13
  485. package/docs/plugins/architecture-internals.md +0 -1196
  486. package/docs/plugins/architecture.md +0 -483
  487. package/docs/plugins/building-extensions.md +0 -13
  488. package/docs/plugins/building-plugins.md +0 -335
  489. package/docs/plugins/bundles.md +0 -310
  490. package/docs/plugins/cli-backend-plugins.md +0 -310
  491. package/docs/plugins/codex-computer-use.md +0 -297
  492. package/docs/plugins/codex-harness-reference.md +0 -470
  493. package/docs/plugins/codex-harness-runtime.md +0 -268
  494. package/docs/plugins/codex-harness.md +0 -780
  495. package/docs/plugins/codex-native-plugins.md +0 -276
  496. package/docs/plugins/community.md +0 -77
  497. package/docs/plugins/compatibility.md +0 -167
  498. package/docs/plugins/copilot.md +0 -356
  499. package/docs/plugins/dependency-resolution.md +0 -176
  500. package/docs/plugins/google-meet.md +0 -1737
  501. package/docs/plugins/hooks.md +0 -484
  502. package/docs/plugins/install-overrides.md +0 -80
  503. package/docs/plugins/manage-plugins.md +0 -210
  504. package/docs/plugins/manifest.md +0 -1457
  505. package/docs/plugins/memory-lancedb.md +0 -385
  506. package/docs/plugins/memory-wiki.md +0 -529
  507. package/docs/plugins/message-presentation.md +0 -473
  508. package/docs/plugins/oc-path.md +0 -166
  509. package/docs/plugins/plugin-inventory.md +0 -189
  510. package/docs/plugins/plugin-permission-requests.md +0 -193
  511. package/docs/plugins/reference/acpx.md +0 -23
  512. package/docs/plugins/reference/admin-http-rpc.md +0 -23
  513. package/docs/plugins/reference/alibaba.md +0 -23
  514. package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -23
  515. package/docs/plugins/reference/amazon-bedrock.md +0 -23
  516. package/docs/plugins/reference/anthropic-vertex.md +0 -19
  517. package/docs/plugins/reference/anthropic.md +0 -23
  518. package/docs/plugins/reference/arcee.md +0 -23
  519. package/docs/plugins/reference/azure-speech.md +0 -23
  520. package/docs/plugins/reference/bonjour.md +0 -19
  521. package/docs/plugins/reference/brave.md +0 -23
  522. package/docs/plugins/reference/browser.md +0 -23
  523. package/docs/plugins/reference/byteplus.md +0 -19
  524. package/docs/plugins/reference/canvas.md +0 -19
  525. package/docs/plugins/reference/cerebras.md +0 -23
  526. package/docs/plugins/reference/chutes.md +0 -23
  527. package/docs/plugins/reference/clickclack.md +0 -23
  528. package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -23
  529. package/docs/plugins/reference/codex-supervisor.md +0 -27
  530. package/docs/plugins/reference/codex.md +0 -23
  531. package/docs/plugins/reference/comfy.md +0 -23
  532. package/docs/plugins/reference/copilot-proxy.md +0 -19
  533. package/docs/plugins/reference/copilot.md +0 -23
  534. package/docs/plugins/reference/deepgram.md +0 -23
  535. package/docs/plugins/reference/deepinfra.md +0 -23
  536. package/docs/plugins/reference/deepseek.md +0 -23
  537. package/docs/plugins/reference/diagnostics-otel.md +0 -19
  538. package/docs/plugins/reference/diagnostics-prometheus.md +0 -19
  539. package/docs/plugins/reference/diffs-language-pack.md +0 -19
  540. package/docs/plugins/reference/diffs.md +0 -19
  541. package/docs/plugins/reference/discord.md +0 -23
  542. package/docs/plugins/reference/document-extract.md +0 -23
  543. package/docs/plugins/reference/duckduckgo.md +0 -23
  544. package/docs/plugins/reference/elevenlabs.md +0 -23
  545. package/docs/plugins/reference/exa.md +0 -23
  546. package/docs/plugins/reference/fal.md +0 -23
  547. package/docs/plugins/reference/feishu.md +0 -23
  548. package/docs/plugins/reference/file-transfer.md +0 -19
  549. package/docs/plugins/reference/firecrawl.md +0 -23
  550. package/docs/plugins/reference/fireworks.md +0 -23
  551. package/docs/plugins/reference/github-copilot.md +0 -23
  552. package/docs/plugins/reference/gmi.md +0 -23
  553. package/docs/plugins/reference/google-meet.md +0 -23
  554. package/docs/plugins/reference/google.md +0 -23
  555. package/docs/plugins/reference/googlechat.md +0 -23
  556. package/docs/plugins/reference/gradium.md +0 -23
  557. package/docs/plugins/reference/groq.md +0 -23
  558. package/docs/plugins/reference/huggingface.md +0 -23
  559. package/docs/plugins/reference/imessage.md +0 -23
  560. package/docs/plugins/reference/inworld.md +0 -23
  561. package/docs/plugins/reference/irc.md +0 -23
  562. package/docs/plugins/reference/kilocode.md +0 -23
  563. package/docs/plugins/reference/kimi.md +0 -23
  564. package/docs/plugins/reference/line.md +0 -23
  565. package/docs/plugins/reference/litellm.md +0 -23
  566. package/docs/plugins/reference/llm-task.md +0 -19
  567. package/docs/plugins/reference/lmstudio.md +0 -23
  568. package/docs/plugins/reference/lobster.md +0 -19
  569. package/docs/plugins/reference/matrix.md +0 -23
  570. package/docs/plugins/reference/mattermost.md +0 -23
  571. package/docs/plugins/reference/memory-core.md +0 -19
  572. package/docs/plugins/reference/memory-lancedb.md +0 -23
  573. package/docs/plugins/reference/memory-wiki.md +0 -23
  574. package/docs/plugins/reference/microsoft-foundry.md +0 -19
  575. package/docs/plugins/reference/microsoft.md +0 -19
  576. package/docs/plugins/reference/migrate-claude.md +0 -19
  577. package/docs/plugins/reference/migrate-hermes.md +0 -19
  578. package/docs/plugins/reference/minimax.md +0 -23
  579. package/docs/plugins/reference/mistral.md +0 -23
  580. package/docs/plugins/reference/moonshot.md +0 -23
  581. package/docs/plugins/reference/msteams.md +0 -23
  582. package/docs/plugins/reference/nextcloud-talk.md +0 -23
  583. package/docs/plugins/reference/nostr.md +0 -23
  584. package/docs/plugins/reference/novita.md +0 -23
  585. package/docs/plugins/reference/nvidia.md +0 -23
  586. package/docs/plugins/reference/oc-path.md +0 -23
  587. package/docs/plugins/reference/ollama.md +0 -23
  588. package/docs/plugins/reference/open-prose.md +0 -19
  589. package/docs/plugins/reference/openai.md +0 -23
  590. package/docs/plugins/reference/opencode-go.md +0 -23
  591. package/docs/plugins/reference/opencode.md +0 -23
  592. package/docs/plugins/reference/openrouter.md +0 -23
  593. package/docs/plugins/reference/openshell.md +0 -19
  594. package/docs/plugins/reference/perplexity.md +0 -23
  595. package/docs/plugins/reference/pixverse.md +0 -23
  596. package/docs/plugins/reference/policy.md +0 -72
  597. package/docs/plugins/reference/qa-channel.md +0 -23
  598. package/docs/plugins/reference/qa-lab.md +0 -19
  599. package/docs/plugins/reference/qa-matrix.md +0 -19
  600. package/docs/plugins/reference/qianfan.md +0 -23
  601. package/docs/plugins/reference/qqbot.md +0 -23
  602. package/docs/plugins/reference/qwen.md +0 -23
  603. package/docs/plugins/reference/runway.md +0 -23
  604. package/docs/plugins/reference/searxng.md +0 -19
  605. package/docs/plugins/reference/senseaudio.md +0 -23
  606. package/docs/plugins/reference/sglang.md +0 -23
  607. package/docs/plugins/reference/signal.md +0 -23
  608. package/docs/plugins/reference/skill-workshop.md +0 -23
  609. package/docs/plugins/reference/slack.md +0 -23
  610. package/docs/plugins/reference/stepfun.md +0 -23
  611. package/docs/plugins/reference/synology-chat.md +0 -23
  612. package/docs/plugins/reference/synthetic.md +0 -23
  613. package/docs/plugins/reference/tavily.md +0 -23
  614. package/docs/plugins/reference/telegram.md +0 -23
  615. package/docs/plugins/reference/tencent.md +0 -23
  616. package/docs/plugins/reference/tlon.md +0 -23
  617. package/docs/plugins/reference/together.md +0 -23
  618. package/docs/plugins/reference/tokenjuice.md +0 -23
  619. package/docs/plugins/reference/tts-local-cli.md +0 -19
  620. package/docs/plugins/reference/twitch.md +0 -23
  621. package/docs/plugins/reference/venice.md +0 -23
  622. package/docs/plugins/reference/vercel-ai-gateway.md +0 -23
  623. package/docs/plugins/reference/vllm.md +0 -23
  624. package/docs/plugins/reference/voice-call.md +0 -23
  625. package/docs/plugins/reference/volcengine.md +0 -23
  626. package/docs/plugins/reference/voyage.md +0 -19
  627. package/docs/plugins/reference/vydra.md +0 -23
  628. package/docs/plugins/reference/web-readability.md +0 -19
  629. package/docs/plugins/reference/webhooks.md +0 -23
  630. package/docs/plugins/reference/whatsapp.md +0 -23
  631. package/docs/plugins/reference/workboard.md +0 -23
  632. package/docs/plugins/reference/xai.md +0 -23
  633. package/docs/plugins/reference/xiaomi.md +0 -23
  634. package/docs/plugins/reference/zai.md +0 -23
  635. package/docs/plugins/reference/zalo.md +0 -23
  636. package/docs/plugins/reference/zalouser.md +0 -24
  637. package/docs/plugins/reference.md +0 -145
  638. package/docs/plugins/sdk-agent-harness.md +0 -338
  639. package/docs/plugins/sdk-channel-inbound.md +0 -70
  640. package/docs/plugins/sdk-channel-ingress.md +0 -137
  641. package/docs/plugins/sdk-channel-message.md +0 -18
  642. package/docs/plugins/sdk-channel-outbound.md +0 -113
  643. package/docs/plugins/sdk-channel-plugins.md +0 -765
  644. package/docs/plugins/sdk-channel-turn.md +0 -9
  645. package/docs/plugins/sdk-entrypoints.md +0 -344
  646. package/docs/plugins/sdk-migration.md +0 -979
  647. package/docs/plugins/sdk-overview.md +0 -511
  648. package/docs/plugins/sdk-provider-plugins.md +0 -846
  649. package/docs/plugins/sdk-runtime.md +0 -676
  650. package/docs/plugins/sdk-setup.md +0 -550
  651. package/docs/plugins/sdk-subpaths.md +0 -391
  652. package/docs/plugins/sdk-testing.md +0 -403
  653. package/docs/plugins/skill-workshop.md +0 -713
  654. package/docs/plugins/tool-plugins.md +0 -411
  655. package/docs/plugins/voice-call.md +0 -942
  656. package/docs/plugins/webhooks.md +0 -192
  657. package/docs/plugins/workboard.md +0 -252
  658. package/docs/plugins/zalouser.md +0 -86
  659. package/docs/prose.md +0 -137
  660. package/docs/providers/alibaba.md +0 -158
  661. package/docs/providers/anthropic.md +0 -381
  662. package/docs/providers/arcee.md +0 -144
  663. package/docs/providers/azure-speech.md +0 -119
  664. package/docs/providers/bedrock-mantle.md +0 -211
  665. package/docs/providers/bedrock.md +0 -414
  666. package/docs/providers/cerebras.md +0 -130
  667. package/docs/providers/chutes.md +0 -153
  668. package/docs/providers/claude-max-api-proxy.md +0 -191
  669. package/docs/providers/cloudflare-ai-gateway.md +0 -119
  670. package/docs/providers/comfy.md +0 -362
  671. package/docs/providers/deepgram.md +0 -184
  672. package/docs/providers/deepinfra.md +0 -92
  673. package/docs/providers/deepseek.md +0 -146
  674. package/docs/providers/ds4.md +0 -309
  675. package/docs/providers/elevenlabs.md +0 -130
  676. package/docs/providers/fal.md +0 -240
  677. package/docs/providers/fireworks.md +0 -144
  678. package/docs/providers/github-copilot.md +0 -257
  679. package/docs/providers/gmi.md +0 -92
  680. package/docs/providers/google.md +0 -472
  681. package/docs/providers/gradium.md +0 -123
  682. package/docs/providers/groq.md +0 -171
  683. package/docs/providers/huggingface.md +0 -235
  684. package/docs/providers/index.md +0 -105
  685. package/docs/providers/inferrs.md +0 -272
  686. package/docs/providers/inworld.md +0 -120
  687. package/docs/providers/kilocode.md +0 -135
  688. package/docs/providers/litellm.md +0 -234
  689. package/docs/providers/lmstudio.md +0 -224
  690. package/docs/providers/minimax.md +0 -505
  691. package/docs/providers/mistral.md +0 -235
  692. package/docs/providers/models.md +0 -64
  693. package/docs/providers/moonshot.md +0 -413
  694. package/docs/providers/novita.md +0 -92
  695. package/docs/providers/nvidia.md +0 -158
  696. package/docs/providers/ollama-cloud.md +0 -115
  697. package/docs/providers/ollama.md +0 -1225
  698. package/docs/providers/openai.md +0 -1093
  699. package/docs/providers/opencode-go.md +0 -123
  700. package/docs/providers/opencode.md +0 -149
  701. package/docs/providers/openrouter.md +0 -349
  702. package/docs/providers/perplexity-provider.md +0 -123
  703. package/docs/providers/pixverse.md +0 -165
  704. package/docs/providers/qianfan.md +0 -132
  705. package/docs/providers/qwen-oauth.md +0 -115
  706. package/docs/providers/qwen.md +0 -364
  707. package/docs/providers/runway.md +0 -103
  708. package/docs/providers/senseaudio.md +0 -68
  709. package/docs/providers/sglang.md +0 -161
  710. package/docs/providers/stepfun.md +0 -229
  711. package/docs/providers/synthetic.md +0 -154
  712. package/docs/providers/tencent.md +0 -130
  713. package/docs/providers/together.md +0 -140
  714. package/docs/providers/venice.md +0 -312
  715. package/docs/providers/vercel-ai-gateway.md +0 -128
  716. package/docs/providers/vllm.md +0 -407
  717. package/docs/providers/volcengine.md +0 -199
  718. package/docs/providers/vydra.md +0 -180
  719. package/docs/providers/xai.md +0 -571
  720. package/docs/providers/xiaomi.md +0 -262
  721. package/docs/providers/zai.md +0 -224
  722. package/docs/refactor/access.md +0 -9
  723. package/docs/refactor/acp.md +0 -298
  724. package/docs/refactor/canvas.md +0 -131
  725. package/docs/refactor/database-first.md +0 -2256
  726. package/docs/refactor/ingress-core.md +0 -341
  727. package/docs/reference/AGENTS.default.md +0 -131
  728. package/docs/reference/RELEASING.md +0 -799
  729. package/docs/reference/api-usage-costs.md +0 -208
  730. package/docs/reference/application-modernization-plan.md +0 -208
  731. package/docs/reference/code-mode.md +0 -773
  732. package/docs/reference/credits.md +0 -33
  733. package/docs/reference/device-models.md +0 -50
  734. package/docs/reference/fengming-sdk-api-design.md +0 -390
  735. package/docs/reference/full-release-validation.md +0 -202
  736. package/docs/reference/memory-config.md +0 -604
  737. package/docs/reference/prompt-caching.md +0 -358
  738. package/docs/reference/release-performance-sweep.md +0 -360
  739. package/docs/reference/rich-output-protocol.md +0 -101
  740. package/docs/reference/rpc.md +0 -43
  741. package/docs/reference/secret-placeholder-conventions.md +0 -33
  742. package/docs/reference/secretref-credential-surface.md +0 -159
  743. package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -663
  744. package/docs/reference/session-management-compaction.md +0 -474
  745. package/docs/reference/templates/AGENTS.dev.md +0 -90
  746. package/docs/reference/templates/AGENTS.md +0 -227
  747. package/docs/reference/templates/BOOT.md +0 -16
  748. package/docs/reference/templates/BOOTSTRAP.md +0 -66
  749. package/docs/reference/templates/CLAUDE.md +0 -1
  750. package/docs/reference/templates/HEARTBEAT.md +0 -24
  751. package/docs/reference/templates/IDENTITY.dev.md +0 -52
  752. package/docs/reference/templates/IDENTITY.md +0 -34
  753. package/docs/reference/templates/SOUL.dev.md +0 -82
  754. package/docs/reference/templates/SOUL.md +0 -49
  755. package/docs/reference/templates/TOOLS.dev.md +0 -29
  756. package/docs/reference/templates/TOOLS.md +0 -51
  757. package/docs/reference/templates/USER.dev.md +0 -23
  758. package/docs/reference/templates/USER.md +0 -28
  759. package/docs/reference/test.md +0 -247
  760. package/docs/reference/token-use.md +0 -246
  761. package/docs/reference/transcript-hygiene.md +0 -214
  762. package/docs/reference/wizard.md +0 -252
  763. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -101
  764. package/docs/security/THREAT-MODEL-ATLAS.md +0 -611
  765. package/docs/security/formal-verification.md +0 -170
  766. package/docs/security/incident-response.md +0 -59
  767. package/docs/security/network-proxy.md +0 -268
  768. package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -12
  769. package/docs/snippets/plugin-publish/minimal-package.json +0 -16
  770. package/docs/specs/claw-supervisor.md +0 -247
  771. package/docs/start/bootstrapping.md +0 -49
  772. package/docs/start/docs-directory.md +0 -69
  773. package/docs/start/fengming.md +0 -252
  774. package/docs/start/getting-started.md +0 -152
  775. package/docs/start/hubs.md +0 -201
  776. package/docs/start/lore.md +0 -223
  777. package/docs/start/onboarding-overview.md +0 -72
  778. package/docs/start/onboarding.md +0 -98
  779. package/docs/start/quickstart.md +0 -25
  780. package/docs/start/setup.md +0 -178
  781. package/docs/start/showcase.md +0 -363
  782. package/docs/start/wizard-cli-automation.md +0 -232
  783. package/docs/start/wizard-cli-reference.md +0 -331
  784. package/docs/start/wizard.md +0 -141
  785. package/docs/style.css +0 -137
  786. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -316
  787. package/docs/tools/acp-agents-setup.md +0 -351
  788. package/docs/tools/acp-agents.md +0 -854
  789. package/docs/tools/agent-send.md +0 -130
  790. package/docs/tools/apply-patch.md +0 -64
  791. package/docs/tools/brave-search.md +0 -139
  792. package/docs/tools/browser-control.md +0 -391
  793. package/docs/tools/browser-linux-troubleshooting.md +0 -173
  794. package/docs/tools/browser-login.md +0 -77
  795. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -219
  796. package/docs/tools/browser.md +0 -810
  797. package/docs/tools/btw.md +0 -159
  798. package/docs/tools/capability-cookbook.md +0 -12
  799. package/docs/tools/clawhub.md +0 -5
  800. package/docs/tools/code-execution.md +0 -173
  801. package/docs/tools/creating-skills.md +0 -158
  802. package/docs/tools/diffs.md +0 -525
  803. package/docs/tools/duckduckgo-search.md +0 -109
  804. package/docs/tools/elevated.md +0 -128
  805. package/docs/tools/exa-search.md +0 -152
  806. package/docs/tools/exec-approvals-advanced.md +0 -444
  807. package/docs/tools/exec-approvals.md +0 -494
  808. package/docs/tools/exec.md +0 -285
  809. package/docs/tools/firecrawl.md +0 -155
  810. package/docs/tools/gemini-search.md +0 -114
  811. package/docs/tools/goal.md +0 -217
  812. package/docs/tools/grok-search.md +0 -129
  813. package/docs/tools/image-generation.md +0 -493
  814. package/docs/tools/index.md +0 -178
  815. package/docs/tools/kimi-search.md +0 -105
  816. package/docs/tools/llm-task.md +0 -137
  817. package/docs/tools/lobster.md +0 -365
  818. package/docs/tools/loop-detection.md +0 -154
  819. package/docs/tools/media-overview.md +0 -160
  820. package/docs/tools/minimax-search.md +0 -102
  821. package/docs/tools/multi-agent-sandbox-tools.md +0 -409
  822. package/docs/tools/music-generation.md +0 -372
  823. package/docs/tools/ollama-search.md +0 -153
  824. package/docs/tools/pdf.md +0 -213
  825. package/docs/tools/perplexity-search.md +0 -220
  826. package/docs/tools/plugin.md +0 -363
  827. package/docs/tools/reactions.md +0 -100
  828. package/docs/tools/searxng-search.md +0 -141
  829. package/docs/tools/skills-config.md +0 -195
  830. package/docs/tools/skills.md +0 -569
  831. package/docs/tools/slash-commands.md +0 -487
  832. package/docs/tools/steer.md +0 -77
  833. package/docs/tools/subagents.md +0 -651
  834. package/docs/tools/tavily.md +0 -162
  835. package/docs/tools/thinking.md +0 -142
  836. package/docs/tools/tokenjuice.md +0 -84
  837. package/docs/tools/tool-search.md +0 -269
  838. package/docs/tools/trajectory.md +0 -229
  839. package/docs/tools/tts.md +0 -1009
  840. package/docs/tools/video-generation.md +0 -555
  841. package/docs/tools/web-fetch.md +0 -210
  842. package/docs/tools/web.md +0 -461
  843. package/docs/tts.md +0 -11
  844. package/docs/vps.md +0 -139
  845. package/docs/web/control-ui.md +0 -512
  846. package/docs/web/dashboard.md +0 -107
  847. package/docs/web/index.md +0 -133
  848. package/docs/web/tui.md +0 -250
  849. package/docs/web/webchat.md +0 -102
  850. package/npm-shrinkwrap.json +0 -12861
  851. package/patches/.gitkeep +0 -0
  852. package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -41
  853. package/pnpm-workspace.yaml +0 -120
  854. package/scripts/crabbox-wrapper.mjs +0 -2004
  855. package/scripts/lib/official-external-channel-catalog.json +0 -560
  856. package/scripts/lib/official-external-plugin-catalog.json +0 -264
  857. package/scripts/lib/official-external-provider-catalog.json +0 -158
  858. package/scripts/lib/package-dist-imports.mjs +0 -171
  859. package/scripts/npm-runner.mjs +0 -91
  860. package/scripts/postinstall-bundled-plugins.mjs +0 -978
  861. package/scripts/preinstall-package-manager-warning.mjs +0 -64
  862. package/scripts/prepare-git-hooks.mjs +0 -72
  863. package/scripts/windows-cmd-helpers.mjs +0 -22
  864. package/skills/batch/SKILL.md +0 -118
  865. package/skills/code-review/SKILL.md +0 -107
  866. package/skills/debug/SKILL.md +0 -83
  867. package/skills/loop/SKILL.md +0 -118
  868. package/skills/run/SKILL.md +0 -79
  869. package/skills/run-skill-generator/SKILL.md +0 -179
  870. package/skills/verify/SKILL.md +0 -103
  871. package/src/agents/templates/HEARTBEAT.md +0 -3
@@ -1,765 +0,0 @@
1
- ---
2
- summary: "Step-by-step guide to building a messaging channel plugin for FengMing"
3
- title: "Building channel plugins"
4
- sidebarTitle: "Channel Plugins"
5
- read_when:
6
- - You are building a new messaging channel plugin
7
- - You want to connect FengMing to a messaging platform
8
- - You need to understand the ChannelPlugin adapter surface
9
- ---
10
-
11
- This guide walks through building a channel plugin that connects FengMing to a
12
- messaging platform. By the end you will have a working channel with DM security,
13
- pairing, reply threading, and outbound messaging.
14
-
15
- <Info>
16
- If you have not built any FengMing plugin before, read
17
- [Getting Started](/plugins/building-plugins) first for the basic package
18
- structure and manifest setup.
19
- </Info>
20
-
21
- ## How channel plugins work
22
-
23
- Channel plugins do not need their own send/edit/react tools. FengMing keeps one
24
- shared `message` tool in core. Your plugin owns:
25
-
26
- - **Config** - account resolution and setup wizard
27
- - **Security** - DM policy and allowlists
28
- - **Pairing** - DM approval flow
29
- - **Session grammar** - how provider-specific conversation ids map to base chats, thread ids, and parent fallbacks
30
- - **Outbound** - sending text, media, and polls to the platform
31
- - **Threading** - how replies are threaded
32
- - **Heartbeat typing** - optional typing/busy signals for heartbeat delivery targets
33
-
34
- Core owns the shared message tool, prompt wiring, the outer session-key shape,
35
- generic `:thread:` bookkeeping, and dispatch.
36
-
37
- New channel plugins should also expose a `message` adapter with
38
- `defineChannelMessageAdapter` from `fengming/plugin-sdk/channel-outbound`. The
39
- adapter declares which durable final-send capabilities the native transport
40
- actually supports and points text/media sends at the same transport functions as
41
- the legacy `outbound` adapter. Only declare a capability when a contract test
42
- proves the native side effect and returned receipt.
43
- For the full API contract, examples, capability matrix, receipt rules, live
44
- preview finalization, receive ack policy, tests, and migration table, see
45
- [Channel outbound API](/plugins/sdk-channel-outbound).
46
- If the existing `outbound` adapter already has the right send methods and
47
- capability metadata, use `createChannelMessageAdapterFromOutbound(...)` to
48
- derive the `message` adapter instead of hand-writing another bridge.
49
- Adapter sends should return `MessageReceipt` values. When compatibility code
50
- still needs legacy ids, derive them with `listMessageReceiptPlatformIds(...)`
51
- or `resolveMessageReceiptPrimaryId(...)` instead of keeping parallel
52
- `messageIds` fields in new lifecycle code.
53
- Preview-capable channels should also declare `message.live.capabilities` with
54
- the exact live lifecycle they own, such as `draftPreview`,
55
- `previewFinalization`, `progressUpdates`, `nativeStreaming`, or
56
- `quietFinalization`. Channels that finalize a draft preview in place should
57
- also declare `message.live.finalizer.capabilities`, such as `finalEdit`,
58
- `normalFallback`, `discardPending`, `previewReceipt`, and
59
- `retainOnAmbiguousFailure`, and route the runtime logic through
60
- `defineFinalizableLivePreviewAdapter(...)` plus
61
- `deliverWithFinalizableLivePreviewAdapter(...)`. Keep those capabilities backed
62
- by `verifyChannelMessageLiveCapabilityAdapterProofs(...)` and
63
- `verifyChannelMessageLiveFinalizerProofs(...)` tests so native preview,
64
- progress, edit, fallback/retention, cleanup, and receipt behavior cannot drift
65
- silently.
66
- Inbound receivers that defer platform acknowledgements should declare
67
- `message.receive.defaultAckPolicy` and `supportedAckPolicies` instead of hiding
68
- ack timing in monitor-local state. Cover every declared policy with
69
- `verifyChannelMessageReceiveAckPolicyAdapterProofs(...)`.
70
-
71
- Legacy reply helpers such as `createChannelTurnReplyPipeline`,
72
- `dispatchInboundReplyWithBase`, and `recordInboundSessionAndDispatchReply`
73
- remain available for compatibility dispatchers. Do not use those names for new
74
- channel code; new plugins should start with the `message` adapter, receipts, and
75
- receive/send lifecycle helpers on `fengming/plugin-sdk/channel-outbound`.
76
-
77
- Channels migrating inbound authorization can use the experimental
78
- `fengming/plugin-sdk/channel-ingress-runtime` subpath from runtime receive
79
- paths. The subpath keeps platform lookup and side effects in the plugin, while
80
- sharing allowlist state resolution, route/sender/command/event/activation
81
- decisions, redacted diagnostics, and turn-admission mapping. Keep plugin
82
- identity normalization in the descriptor you pass to the resolver; do not
83
- serialize raw match values from the resolved state or decision. See
84
- [Channel ingress API](/plugins/sdk-channel-ingress) for the API design,
85
- ownership boundary, and test expectations.
86
-
87
- If your channel supports typing indicators outside inbound replies, expose
88
- `heartbeat.sendTyping(...)` on the channel plugin. Core calls it with the
89
- resolved heartbeat delivery target before the heartbeat model run starts and
90
- uses the shared typing keepalive/cleanup lifecycle. Add `heartbeat.clearTyping(...)`
91
- when the platform needs an explicit stop signal.
92
-
93
- If your channel adds message-tool params that carry media sources, expose those
94
- param names through `describeMessageTool(...).mediaSourceParams`. Core uses
95
- that explicit list for sandbox path normalization and outbound media-access
96
- policy, so plugins do not need shared-core special cases for provider-specific
97
- avatar, attachment, or cover-image params.
98
- Prefer returning an action-keyed map such as
99
- `{ "set-profile": ["avatarUrl", "avatarPath"] }` so unrelated actions do not
100
- inherit another action's media args. A flat array still works for params that
101
- are intentionally shared across every exposed action.
102
-
103
- If your channel needs provider-specific shaping for `message(action="send")`,
104
- prefer `actions.prepareSendPayload(...)`. Put native cards, blocks, embeds, or
105
- other durable data under `payload.channelData.<channel>` and let core perform
106
- the actual send through the outbound/message adapter. Use
107
- `actions.handleAction(...)` for send only as a compatibility fallback for
108
- payloads that cannot be serialized and retried.
109
-
110
- If your platform stores extra scope inside conversation ids, keep that parsing
111
- in the plugin with `messaging.resolveSessionConversation(...)`. That is the
112
- canonical hook for mapping `rawId` to the base conversation id, optional thread
113
- id, explicit `baseConversationId`, and any `parentConversationCandidates`.
114
- When you return `parentConversationCandidates`, keep them ordered from the
115
- narrowest parent to the broadest/base conversation.
116
-
117
- Use `fengming/plugin-sdk/channel-route` when plugin code needs to normalize
118
- route-like fields, compare a child thread with its parent route, or build a
119
- stable dedupe key from `{ channel, to, accountId, threadId }`. The helper
120
- normalizes numeric thread ids the same way core does, so plugins should prefer
121
- it over ad hoc `String(threadId)` comparisons.
122
- Plugins with provider-specific target grammar should expose
123
- `messaging.resolveOutboundSessionRoute(...)` so core gets provider-native
124
- session and thread identity without using parser shims.
125
-
126
- Bundled plugins that need the same parsing before the channel registry boots
127
- can also expose a top-level `session-key-api.ts` file with a matching
128
- `resolveSessionConversation(...)` export. Core uses that bootstrap-safe surface
129
- only when the runtime plugin registry is not available yet.
130
-
131
- `messaging.resolveParentConversationCandidates(...)` remains available as a
132
- legacy compatibility fallback when a plugin only needs parent fallbacks on top
133
- of the generic/raw id. If both hooks exist, core uses
134
- `resolveSessionConversation(...).parentConversationCandidates` first and only
135
- falls back to `resolveParentConversationCandidates(...)` when the canonical hook
136
- omits them.
137
-
138
- ## Approvals and channel capabilities
139
-
140
- Most channel plugins do not need approval-specific code.
141
-
142
- - Core owns same-chat `/approve`, shared approval button payloads, and generic fallback delivery.
143
- - Prefer one `approvalCapability` object on the channel plugin when the channel needs approval-specific behavior.
144
- - `ChannelPlugin.approvals` is removed. Put approval delivery/native/render/auth facts on `approvalCapability`.
145
- - `plugin.auth` is login/logout only; core no longer reads approval auth hooks from that object.
146
- - `approvalCapability.authorizeActorAction` and `approvalCapability.getActionAvailabilityState` are the canonical approval-auth seam.
147
- - Use `approvalCapability.getActionAvailabilityState` for same-chat approval auth availability.
148
- - If your channel exposes native exec approvals, use `approvalCapability.getExecInitiatingSurfaceState` for the initiating-surface/native-client state when it differs from same-chat approval auth. Core uses that exec-specific hook to distinguish `enabled` vs `disabled`, decide whether the initiating channel supports native exec approvals, and include the channel in native-client fallback guidance. `createApproverRestrictedNativeApprovalCapability(...)` fills this in for the common case.
149
- - Use `outbound.shouldSuppressLocalPayloadPrompt` or `outbound.beforeDeliverPayload` for channel-specific payload lifecycle behavior such as hiding duplicate local approval prompts or sending typing indicators before delivery.
150
- - Use `approvalCapability.delivery` only for native approval routing or fallback suppression.
151
- - Use `approvalCapability.nativeRuntime` for channel-owned native approval facts. Keep it lazy on hot channel entrypoints with `createLazyChannelApprovalNativeRuntimeAdapter(...)`, which can import your runtime module on demand while still letting core assemble the approval lifecycle.
152
- - Use `approvalCapability.render` only when a channel truly needs custom approval payloads instead of the shared renderer.
153
- - Use `approvalCapability.describeExecApprovalSetup` when the channel wants the disabled-path reply to explain the exact config knobs needed to enable native exec approvals. The hook receives `{ channel, channelLabel, accountId }`; named-account channels should render account-scoped paths such as `channels.<channel>.accounts.<id>.execApprovals.*` instead of top-level defaults.
154
- - If a channel can infer stable owner-like DM identities from existing config, use `createResolvedApproverActionAuthAdapter` from `fengming/plugin-sdk/approval-runtime` to restrict same-chat `/approve` without adding approval-specific core logic.
155
- - If custom approval auth intentionally allows only same-chat fallback, return `markImplicitSameChatApprovalAuthorization({ authorized: true })` from `fengming/plugin-sdk/approval-auth-runtime`; otherwise core treats the result as explicit approver authorization.
156
- - If a channel-owned native callback resolves approvals directly, use `isImplicitSameChatApprovalAuthorization(...)` before resolving so implicit fallback still goes through the channel's normal actor authorization.
157
- - If a channel needs native approval delivery, keep channel code focused on target normalization plus transport/presentation facts. Use `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver`, and `createApproverRestrictedNativeApprovalCapability` from `fengming/plugin-sdk/approval-runtime`. Put the channel-specific facts behind `approvalCapability.nativeRuntime`, ideally via `createChannelApprovalNativeRuntimeAdapter(...)` or `createLazyChannelApprovalNativeRuntimeAdapter(...)`, so core can assemble the handler and own request filtering, routing, dedupe, expiry, gateway subscription, and routed-elsewhere notices. `nativeRuntime` is split into a few smaller seams:
158
- - Use `createNativeApprovalChannelRouteGates` from `fengming/plugin-sdk/approval-native-runtime` when a channel supports both session-origin native delivery and explicit approval forwarding targets. The helper centralizes approval config selection, `mode` handling, agent/session filters, account binding, session-target matching, and target-list matching while callers still own the channel id, default forwarding mode, account lookup, transport-enabled check, target normalization, and turn-source target resolution. Do not use it to create core-owned channel policy defaults; pass the channel's documented default mode explicitly.
159
- - `createChannelNativeOriginTargetResolver` uses the shared channel-route matcher by default for `{ to, accountId, threadId }` targets. Pass `targetsMatch` only when a channel has provider-specific equivalence rules, such as Slack timestamp prefix matching.
160
- - Pass `normalizeTargetForMatch` to `createChannelNativeOriginTargetResolver` when the channel needs to canonicalize provider ids before the default route matcher or a custom `targetsMatch` callback runs, while preserving the original target for delivery. Use `normalizeTarget` only when the resolved delivery target itself should be canonicalized.
161
- - `availability` - whether the account is configured and whether a request should be handled
162
- - `presentation` - map the shared approval view model into pending/resolved/expired native payloads or final actions
163
- - `transport` - prepare targets plus send/update/delete native approval messages
164
- - `interactions` - optional bind/unbind/clear-action hooks for native buttons or reactions, plus an optional `cancelDelivered` hook. Implement `cancelDelivered` when `deliverPending` registers in-process or persistent state (such as a reaction target store) so that state can be released if a handler stop cancels the delivery before `bindPending` runs or when `bindPending` returns no handle
165
- - `observe` - optional delivery diagnostics hooks
166
- - If the channel needs runtime-owned objects such as a client, token, Bolt app, or webhook receiver, register them through `fengming/plugin-sdk/channel-runtime-context`. The generic runtime-context registry lets core bootstrap capability-driven handlers from channel startup state without adding approval-specific wrapper glue.
167
- - Reach for the lower-level `createChannelApprovalHandler` or `createChannelNativeApprovalRuntime` only when the capability-driven seam is not expressive enough yet.
168
- - Native approval channels must route both `accountId` and `approvalKind` through those helpers. `accountId` keeps multi-account approval policy scoped to the right bot account, and `approvalKind` keeps exec vs plugin approval behavior available to the channel without hardcoded branches in core.
169
- - Core now owns approval reroute notices too. Channel plugins should not send their own "approval went to DMs / another channel" follow-up messages from `createChannelNativeApprovalRuntime`; instead, expose accurate origin + approver-DM routing through the shared approval capability helpers and let core aggregate actual deliveries before posting any notice back to the initiating chat.
170
- - Preserve the delivered approval id kind end-to-end. Native clients should not
171
- guess or rewrite exec vs plugin approval routing from channel-local state.
172
- - Different approval kinds can intentionally expose different native surfaces.
173
- Current bundled examples:
174
- - Slack keeps native approval routing available for both exec and plugin ids.
175
- - Matrix keeps the same native DM/channel routing and reaction UX for exec
176
- and plugin approvals, while still letting auth differ by approval kind.
177
- - `createApproverRestrictedNativeApprovalAdapter` still exists as a compatibility wrapper, but new code should prefer the capability builder and expose `approvalCapability` on the plugin.
178
-
179
- For hot channel entrypoints, prefer the narrower runtime subpaths when you only
180
- need one part of that family:
181
-
182
- - `fengming/plugin-sdk/approval-auth-runtime`
183
- - `fengming/plugin-sdk/approval-client-runtime`
184
- - `fengming/plugin-sdk/approval-delivery-runtime`
185
- - `fengming/plugin-sdk/approval-gateway-runtime`
186
- - `fengming/plugin-sdk/approval-handler-adapter-runtime`
187
- - `fengming/plugin-sdk/approval-handler-runtime`
188
- - `fengming/plugin-sdk/approval-native-runtime`
189
- - `fengming/plugin-sdk/approval-reply-runtime`
190
- - `fengming/plugin-sdk/channel-runtime-context`
191
-
192
- Likewise, prefer `fengming/plugin-sdk/setup-runtime`,
193
- `fengming/plugin-sdk/setup-runtime`,
194
- `fengming/plugin-sdk/reply-runtime`,
195
- `fengming/plugin-sdk/reply-dispatch-runtime`,
196
- `fengming/plugin-sdk/reply-reference`, and
197
- `fengming/plugin-sdk/reply-chunking` when you do not need the broader umbrella
198
- surface.
199
-
200
- For setup specifically:
201
-
202
- - `fengming/plugin-sdk/setup-runtime` covers the runtime-safe setup helpers:
203
- `createSetupTranslator`, import-safe setup patch adapters (`createPatchedAccountSetupAdapter`,
204
- `createEnvPatchedAccountSetupAdapter`,
205
- `createSetupInputPresenceValidator`), lookup-note output,
206
- `promptResolvedAllowFrom`, `splitSetupEntries`, and the delegated
207
- setup-proxy builders
208
- - `fengming/plugin-sdk/setup-runtime` includes the env-aware adapter seam for
209
- `createEnvPatchedAccountSetupAdapter`
210
- - `fengming/plugin-sdk/channel-setup` covers the optional-install setup
211
- builders plus a few setup-safe primitives:
212
- `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
213
-
214
- If your channel supports env-driven setup or auth and generic startup/config
215
- flows should know those env names before runtime loads, declare them in the
216
- plugin manifest with `channelEnvVars`. Keep channel runtime `envVars` or local
217
- constants for operator-facing copy only.
218
-
219
- If your channel can appear in `status`, `channels list`, `channels status`, or
220
- SecretRef scans before the plugin runtime starts, add `fengming.setupEntry` in
221
- `package.json`. That entrypoint should be safe to import in read-only command
222
- paths and should return the channel metadata, setup-safe config adapter, status
223
- adapter, and channel secret target metadata needed for those summaries. Do not
224
- start clients, listeners, or transport runtimes from the setup entry.
225
-
226
- Keep the main channel entry import path narrow too. Discovery can evaluate the
227
- entry and the channel plugin module to register capabilities without activating
228
- the channel. Files such as `channel-plugin-api.ts` should export the channel
229
- plugin object without importing setup wizards, transport clients, socket
230
- listeners, subprocess launchers, or service startup modules. Put those runtime
231
- pieces in modules loaded from `registerFull(...)`, runtime setters, or lazy
232
- capability adapters.
233
-
234
- `createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
235
- `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, and
236
- `splitSetupEntries`
237
-
238
- - use the broader `fengming/plugin-sdk/setup` seam only when you also need the
239
- heavier shared setup/config helpers such as
240
- `moveSingleAccountChannelSectionToDefaultAccount(...)`
241
-
242
- If your channel only wants to advertise "install this plugin first" in setup
243
- surfaces, prefer `createOptionalChannelSetupSurface(...)`. The generated
244
- adapter/wizard fail closed on config writes and finalization, and they reuse
245
- the same install-required message across validation, finalize, and docs-link
246
- copy.
247
-
248
- For other hot channel paths, prefer the narrow helpers over broader legacy
249
- surfaces:
250
-
251
- - `fengming/plugin-sdk/account-core`,
252
- `fengming/plugin-sdk/account-id`,
253
- `fengming/plugin-sdk/account-resolution`, and
254
- `fengming/plugin-sdk/account-helpers` for multi-account config and
255
- default-account fallback
256
- - `fengming/plugin-sdk/inbound-envelope` and
257
- `fengming/plugin-sdk/channel-inbound` for inbound route/envelope and
258
- record-and-dispatch wiring
259
- - `fengming/plugin-sdk/channel-targets` for target parsing helpers
260
- - `fengming/plugin-sdk/outbound-media` for media loading and
261
- `fengming/plugin-sdk/channel-outbound` for outbound identity/send delegates
262
- and payload planning
263
- - `buildThreadAwareOutboundSessionRoute(...)` from
264
- `fengming/plugin-sdk/channel-core` when an outbound route should preserve an
265
- explicit `replyToId`/`threadId` or recover the current `:thread:` session
266
- after the base session key still matches. Provider plugins can override
267
- precedence, suffix behavior, and thread id normalization when their platform
268
- has native thread delivery semantics.
269
- - `fengming/plugin-sdk/thread-bindings-runtime` for thread-binding lifecycle
270
- and adapter registration
271
- - `fengming/plugin-sdk/agent-media-payload` only when a legacy agent/media
272
- payload field layout is still required
273
- - `fengming/plugin-sdk/telegram-command-config` for Telegram custom-command
274
- normalization, duplicate/conflict validation, and a fallback-stable command
275
- config contract
276
-
277
- Auth-only channels can usually stop at the default path: core handles approvals and the plugin just exposes outbound/auth capabilities. Native approval channels such as Matrix, Slack, Telegram, and custom chat transports should use the shared native helpers instead of rolling their own approval lifecycle.
278
-
279
- ## Inbound mention policy
280
-
281
- Keep inbound mention handling split in two layers:
282
-
283
- - plugin-owned evidence gathering
284
- - shared policy evaluation
285
-
286
- Use `fengming/plugin-sdk/channel-mention-gating` for mention-policy decisions.
287
- Use `fengming/plugin-sdk/channel-inbound` only when you need the broader inbound
288
- helper barrel.
289
-
290
- Good fit for plugin-local logic:
291
-
292
- - reply-to-bot detection
293
- - quoted-bot detection
294
- - thread-participation checks
295
- - service/system-message exclusions
296
- - platform-native caches needed to prove bot participation
297
-
298
- Good fit for the shared helper:
299
-
300
- - `requireMention`
301
- - explicit mention result
302
- - implicit mention allowlist
303
- - command bypass
304
- - final skip decision
305
-
306
- Preferred flow:
307
-
308
- 1. Compute local mention facts.
309
- 2. Pass those facts into `resolveInboundMentionDecision({ facts, policy })`.
310
- 3. Use `decision.effectiveWasMentioned`, `decision.shouldBypassMention`, and `decision.shouldSkip` in your inbound gate.
311
-
312
- ```typescript
313
- import {
314
- implicitMentionKindWhen,
315
- matchesMentionWithExplicit,
316
- resolveInboundMentionDecision,
317
- } from "fengming/plugin-sdk/channel-inbound";
318
-
319
- const mentionMatch = matchesMentionWithExplicit(text, {
320
- mentionRegexes,
321
- mentionPatterns,
322
- });
323
-
324
- const facts = {
325
- canDetectMention: true,
326
- wasMentioned: mentionMatch.matched,
327
- hasAnyMention: mentionMatch.hasExplicitMention,
328
- implicitMentionKinds: [
329
- ...implicitMentionKindWhen("reply_to_bot", isReplyToBot),
330
- ...implicitMentionKindWhen("quoted_bot", isQuoteOfBot),
331
- ],
332
- };
333
-
334
- const decision = resolveInboundMentionDecision({
335
- facts,
336
- policy: {
337
- isGroup,
338
- requireMention,
339
- allowedImplicitMentionKinds: requireExplicitMention ? [] : ["reply_to_bot", "quoted_bot"],
340
- allowTextCommands,
341
- hasControlCommand,
342
- commandAuthorized,
343
- },
344
- });
345
-
346
- if (decision.shouldSkip) return;
347
- ```
348
-
349
- `api.runtime.channel.mentions` exposes the same shared mention helpers for
350
- bundled channel plugins that already depend on runtime injection:
351
-
352
- - `buildMentionRegexes`
353
- - `matchesMentionPatterns`
354
- - `matchesMentionWithExplicit`
355
- - `implicitMentionKindWhen`
356
- - `resolveInboundMentionDecision`
357
-
358
- If you only need `implicitMentionKindWhen` and
359
- `resolveInboundMentionDecision`, import from
360
- `fengming/plugin-sdk/channel-mention-gating` to avoid loading unrelated inbound
361
- runtime helpers.
362
-
363
- Use `resolveInboundMentionDecision({ facts, policy })` for mention gating.
364
-
365
- ## Walkthrough
366
-
367
- <Steps>
368
- <a id="step-1-package-and-manifest"></a>
369
- <Step title="Package and manifest">
370
- Create the standard plugin files. The `channel` field in `package.json` is
371
- what makes this a channel plugin. For the full package-metadata surface,
372
- see [Plugin Setup and Config](/plugins/sdk-setup#fengming-channel):
373
-
374
- <CodeGroup>
375
- ```json package.json
376
- {
377
- "name": "@myorg/fengming-acme-chat",
378
- "version": "1.0.0",
379
- "type": "module",
380
- "fengming": {
381
- "extensions": ["./index.ts"],
382
- "setupEntry": "./setup-entry.ts",
383
- "channel": {
384
- "id": "acme-chat",
385
- "label": "Acme Chat",
386
- "blurb": "Connect FengMing to Acme Chat."
387
- }
388
- }
389
- }
390
- ```
391
-
392
- ```json fengming.plugin.json
393
- {
394
- "id": "acme-chat",
395
- "kind": "channel",
396
- "channels": ["acme-chat"],
397
- "name": "Acme Chat",
398
- "description": "Acme Chat channel plugin",
399
- "configSchema": {
400
- "type": "object",
401
- "additionalProperties": false,
402
- "properties": {}
403
- },
404
- "channelConfigs": {
405
- "acme-chat": {
406
- "schema": {
407
- "type": "object",
408
- "additionalProperties": false,
409
- "properties": {
410
- "token": { "type": "string" },
411
- "allowFrom": {
412
- "type": "array",
413
- "items": { "type": "string" }
414
- }
415
- }
416
- },
417
- "uiHints": {
418
- "token": {
419
- "label": "Bot token",
420
- "sensitive": true
421
- }
422
- }
423
- }
424
- }
425
- }
426
- ```
427
- </CodeGroup>
428
-
429
- `configSchema` validates `plugins.entries.acme-chat.config`. Use it for
430
- plugin-owned settings that are not the channel account config. `channelConfigs`
431
- validates `channels.acme-chat` and is the cold-path source used by config
432
- schema, setup, and UI surfaces before the plugin runtime loads.
433
-
434
- </Step>
435
-
436
- <Step title="Build the channel plugin object">
437
- The `ChannelPlugin` interface has many optional adapter surfaces. Start with
438
- the minimum - `id` and `setup` - and add adapters as you need them.
439
-
440
- Create `src/channel.ts`:
441
-
442
- ```typescript src/channel.ts
443
- import {
444
- createChatChannelPlugin,
445
- createChannelPluginBase,
446
- } from "fengming/plugin-sdk/channel-core";
447
- import type { FengMingConfig } from "fengming/plugin-sdk/channel-core";
448
- import { acmeChatApi } from "./client.js"; // your platform API client
449
-
450
- type ResolvedAccount = {
451
- accountId: string | null;
452
- token: string;
453
- allowFrom: string[];
454
- dmPolicy: string | undefined;
455
- };
456
-
457
- function resolveAccount(
458
- cfg: FengMingConfig,
459
- accountId?: string | null,
460
- ): ResolvedAccount {
461
- const section = (cfg.channels as Record<string, any>)?.["acme-chat"];
462
- const token = section?.token;
463
- if (!token) throw new Error("acme-chat: token is required");
464
- return {
465
- accountId: accountId ?? null,
466
- token,
467
- allowFrom: section?.allowFrom ?? [],
468
- dmPolicy: section?.dmSecurity,
469
- };
470
- }
471
-
472
- export const acmeChatPlugin = createChatChannelPlugin<ResolvedAccount>({
473
- base: createChannelPluginBase({
474
- id: "acme-chat",
475
- setup: {
476
- resolveAccount,
477
- inspectAccount(cfg, accountId) {
478
- const section =
479
- (cfg.channels as Record<string, any>)?.["acme-chat"];
480
- return {
481
- enabled: Boolean(section?.token),
482
- configured: Boolean(section?.token),
483
- tokenStatus: section?.token ? "available" : "missing",
484
- };
485
- },
486
- },
487
- }),
488
-
489
- // DM security: who can message the bot
490
- security: {
491
- dm: {
492
- channelKey: "acme-chat",
493
- resolvePolicy: (account) => account.dmPolicy,
494
- resolveAllowFrom: (account) => account.allowFrom,
495
- defaultPolicy: "allowlist",
496
- },
497
- },
498
-
499
- // Pairing: approval flow for new DM contacts
500
- pairing: {
501
- text: {
502
- idLabel: "Acme Chat username",
503
- message: "Send this code to verify your identity:",
504
- notify: async ({ target, code }) => {
505
- await acmeChatApi.sendDm(target, `Pairing code: ${code}`);
506
- },
507
- },
508
- },
509
-
510
- // Threading: how replies are delivered
511
- threading: { topLevelReplyToMode: "reply" },
512
-
513
- // Outbound: send messages to the platform
514
- outbound: {
515
- attachedResults: {
516
- sendText: async (params) => {
517
- const result = await acmeChatApi.sendMessage(
518
- params.to,
519
- params.text,
520
- );
521
- return { messageId: result.id };
522
- },
523
- },
524
- base: {
525
- sendMedia: async (params) => {
526
- await acmeChatApi.sendFile(params.to, params.filePath);
527
- },
528
- },
529
- },
530
- });
531
- ```
532
-
533
- For channels that accept both canonical top-level DM keys and legacy nested keys, use the helpers from `plugin-sdk/channel-config-helpers`: `resolveChannelDmAccess`, `resolveChannelDmPolicy`, `resolveChannelDmAllowFrom`, and `normalizeChannelDmPolicy` keep account-local values ahead of inherited root values. Pair the same resolver with doctor repair through `normalizeLegacyDmAliases` so runtime and migration read the same contract.
534
-
535
- <Accordion title="What createChatChannelPlugin does for you">
536
- Instead of implementing low-level adapter interfaces manually, you pass
537
- declarative options and the builder composes them:
538
-
539
- | Option | What it wires |
540
- | --- | --- |
541
- | `security.dm` | Scoped DM security resolver from config fields |
542
- | `pairing.text` | Text-based DM pairing flow with code exchange |
543
- | `threading` | Reply-to-mode resolver (fixed, account-scoped, or custom) |
544
- | `outbound.attachedResults` | Send functions that return result metadata (message IDs) |
545
-
546
- You can also pass raw adapter objects instead of the declarative options
547
- if you need full control.
548
-
549
- Raw outbound adapters may define a `chunker(text, limit, ctx)` function.
550
- The optional `ctx.formatting` carries delivery-time formatting decisions
551
- such as `maxLinesPerMessage`; apply it before sending so reply threading
552
- and chunk boundaries are resolved once by shared outbound delivery.
553
- Send contexts also include `replyToIdSource` (`implicit` or `explicit`)
554
- when a native reply target was resolved, so payload helpers can preserve
555
- explicit reply tags without consuming an implicit single-use reply slot.
556
- </Accordion>
557
-
558
- </Step>
559
-
560
- <Step title="Wire the entry point">
561
- Create `index.ts`:
562
-
563
- ```typescript index.ts
564
- import { defineChannelPluginEntry } from "fengming/plugin-sdk/channel-core";
565
- import { acmeChatPlugin } from "./src/channel.js";
566
-
567
- export default defineChannelPluginEntry({
568
- id: "acme-chat",
569
- name: "Acme Chat",
570
- description: "Acme Chat channel plugin",
571
- plugin: acmeChatPlugin,
572
- registerCliMetadata(api) {
573
- api.registerCli(
574
- ({ program }) => {
575
- program
576
- .command("acme-chat")
577
- .description("Acme Chat management");
578
- },
579
- {
580
- descriptors: [
581
- {
582
- name: "acme-chat",
583
- description: "Acme Chat management",
584
- hasSubcommands: false,
585
- },
586
- ],
587
- },
588
- );
589
- },
590
- registerFull(api) {
591
- api.registerGatewayMethod(/* ... */);
592
- },
593
- });
594
- ```
595
-
596
- Put channel-owned CLI descriptors in `registerCliMetadata(...)` so FengMing
597
- can show them in root help without activating the full channel runtime,
598
- while normal full loads still pick up the same descriptors for real command
599
- registration. Keep `registerFull(...)` for runtime-only work.
600
- If `registerFull(...)` registers gateway RPC methods, use a
601
- plugin-specific prefix. Core admin namespaces (`config.*`,
602
- `exec.approvals.*`, `wizard.*`, `update.*`) stay reserved and always
603
- resolve to `operator.admin`.
604
- `defineChannelPluginEntry` handles the registration-mode split automatically. See
605
- [Entry Points](/plugins/sdk-entrypoints#definechannelpluginentry) for all
606
- options.
607
-
608
- </Step>
609
-
610
- <Step title="Add a setup entry">
611
- Create `setup-entry.ts` for lightweight loading during onboarding:
612
-
613
- ```typescript setup-entry.ts
614
- import { defineSetupPluginEntry } from "fengming/plugin-sdk/channel-core";
615
- import { acmeChatPlugin } from "./src/channel.js";
616
-
617
- export default defineSetupPluginEntry(acmeChatPlugin);
618
- ```
619
-
620
- FengMing loads this instead of the full entry when the channel is disabled
621
- or unconfigured. It avoids pulling in heavy runtime code during setup flows.
622
- See [Setup and Config](/plugins/sdk-setup#setup-entry) for details.
623
-
624
- Bundled workspace channels that split setup-safe exports into sidecar
625
- modules can use `defineBundledChannelSetupEntry(...)` from
626
- `fengming/plugin-sdk/channel-entry-contract` when they also need an
627
- explicit setup-time runtime setter.
628
-
629
- </Step>
630
-
631
- <Step title="Handle inbound messages">
632
- Your plugin needs to receive messages from the platform and forward them to
633
- FengMing. The typical pattern is a webhook that verifies the request and
634
- dispatches it through your channel's inbound handler:
635
-
636
- ```typescript
637
- registerFull(api) {
638
- api.registerHttpRoute({
639
- path: "/acme-chat/webhook",
640
- auth: "plugin", // plugin-managed auth (verify signatures yourself)
641
- handler: async (req, res) => {
642
- const event = parseWebhookPayload(req);
643
-
644
- // Your inbound handler dispatches the message to FengMing.
645
- // The exact wiring depends on your platform SDK -
646
- // see a real example in the bundled Microsoft Teams or Google Chat plugin package.
647
- await handleAcmeChatInbound(api, event);
648
-
649
- res.statusCode = 200;
650
- res.end("ok");
651
- return true;
652
- },
653
- });
654
- }
655
- ```
656
-
657
- <Note>
658
- Inbound message handling is channel-specific. Each channel plugin owns
659
- its own inbound pipeline. Look at bundled channel plugins
660
- (for example the Microsoft Teams or Google Chat plugin package) for real patterns.
661
- </Note>
662
-
663
- </Step>
664
-
665
- <a id="step-6-test"></a>
666
- <Step title="Test">
667
- Write colocated tests in `src/channel.test.ts`:
668
-
669
- ```typescript src/channel.test.ts
670
- import { describe, it, expect } from "vitest";
671
- import { acmeChatPlugin } from "./channel.js";
672
-
673
- describe("acme-chat plugin", () => {
674
- it("resolves account from config", () => {
675
- const cfg = {
676
- channels: {
677
- "acme-chat": { token: "test-token", allowFrom: ["user1"] },
678
- },
679
- } as any;
680
- const account = acmeChatPlugin.setup!.resolveAccount(cfg, undefined);
681
- expect(account.token).toBe("test-token");
682
- });
683
-
684
- it("inspects account without materializing secrets", () => {
685
- const cfg = {
686
- channels: { "acme-chat": { token: "test-token" } },
687
- } as any;
688
- const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined);
689
- expect(result.configured).toBe(true);
690
- expect(result.tokenStatus).toBe("available");
691
- });
692
-
693
- it("reports missing config", () => {
694
- const cfg = { channels: {} } as any;
695
- const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined);
696
- expect(result.configured).toBe(false);
697
- });
698
- });
699
- ```
700
-
701
- ```bash
702
- pnpm test -- <bundled-plugin-root>/acme-chat/
703
- ```
704
-
705
- For shared test helpers, see [Testing](/plugins/sdk-testing).
706
-
707
- </Step>
708
- </Steps>
709
-
710
- ## File structure
711
-
712
- ```
713
- <bundled-plugin-root>/acme-chat/
714
- ├── package.json # fengming.channel metadata
715
- ├── fengming.plugin.json # Manifest with config schema
716
- ├── index.ts # defineChannelPluginEntry
717
- ├── setup-entry.ts # defineSetupPluginEntry
718
- ├── api.ts # Public exports (optional)
719
- ├── runtime-api.ts # Internal runtime exports (optional)
720
- └── src/
721
- ├── channel.ts # ChannelPlugin via createChatChannelPlugin
722
- ├── channel.test.ts # Tests
723
- ├── client.ts # Platform API client
724
- └── runtime.ts # Runtime store (if needed)
725
- ```
726
-
727
- ## Advanced topics
728
-
729
- <CardGroup cols={2}>
730
- <Card title="Threading options" icon="git-branch" href="/plugins/sdk-entrypoints#registration-mode">
731
- Fixed, account-scoped, or custom reply modes
732
- </Card>
733
- <Card title="Message tool integration" icon="puzzle" href="/plugins/architecture#channel-plugins-and-the-shared-message-tool">
734
- describeMessageTool and action discovery
735
- </Card>
736
- <Card title="Target resolution" icon="crosshair" href="/plugins/architecture-internals#channel-target-resolution">
737
- inferTargetChatType, looksLikeId, resolveTarget
738
- </Card>
739
- <Card title="Runtime helpers" icon="settings" href="/plugins/sdk-runtime">
740
- TTS, STT, media, subagent via api.runtime
741
- </Card>
742
- <Card title="Channel inbound API" icon="bolt" href="/plugins/sdk-channel-inbound">
743
- Shared inbound event lifecycle: ingest, resolve, record, dispatch, finalize
744
- </Card>
745
- </CardGroup>
746
-
747
- <Note>
748
- Some bundled helper seams still exist for bundled-plugin maintenance and
749
- compatibility. They are not the recommended pattern for new channel plugins;
750
- prefer the generic channel/setup/reply/runtime subpaths from the common SDK
751
- surface unless you are maintaining that bundled plugin family directly.
752
- </Note>
753
-
754
- ## Next steps
755
-
756
- - [Provider Plugins](/plugins/sdk-provider-plugins) - if your plugin also provides models
757
- - [SDK Overview](/plugins/sdk-overview) - full subpath import reference
758
- - [SDK Testing](/plugins/sdk-testing) - test utilities and contract tests
759
- - [Plugin Manifest](/plugins/manifest) - full manifest schema
760
-
761
- ## Related
762
-
763
- - [Plugin SDK setup](/plugins/sdk-setup)
764
- - [Building plugins](/plugins/building-plugins)
765
- - [Agent harness plugins](/plugins/sdk-agent-harness)