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,846 +0,0 @@
1
- ---
2
- summary: "Step-by-step guide to building a model provider plugin for FengMing"
3
- title: "Building provider plugins"
4
- sidebarTitle: "Provider plugins"
5
- read_when:
6
- - You are building a new model provider plugin
7
- - You want to add an OpenAI-compatible proxy or custom LLM to FengMing
8
- - You need to understand provider auth, catalogs, and runtime hooks
9
- ---
10
-
11
- This guide walks through building a provider plugin that adds a model provider
12
- (LLM) to FengMing. By the end you will have a provider with a model catalog,
13
- API key auth, and dynamic model resolution.
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
- <Tip>
22
- Provider plugins add models to FengMing's normal inference loop. If the model
23
- must run through a native agent daemon that owns threads, compaction, or tool
24
- events, pair the provider with an [agent harness](/plugins/sdk-agent-harness)
25
- instead of putting daemon protocol details in core.
26
- </Tip>
27
-
28
- ## Walkthrough
29
-
30
- <Steps>
31
- <Step title="Package and manifest">
32
- ### Step 1: Package and manifest
33
-
34
- <CodeGroup>
35
- ```json package.json
36
- {
37
- "name": "@myorg/fengming-acme-ai",
38
- "version": "1.0.0",
39
- "type": "module",
40
- "fengming": {
41
- "extensions": ["./index.ts"],
42
- "providers": ["acme-ai"],
43
- "compat": {
44
- "pluginApi": ">=2026.3.24-beta.2",
45
- "minGatewayVersion": "2026.3.24-beta.2"
46
- },
47
- "build": {
48
- "fengmingVersion": "2026.3.24-beta.2",
49
- "pluginSdkVersion": "2026.3.24-beta.2"
50
- }
51
- }
52
- }
53
- ```
54
-
55
- ```json fengming.plugin.json
56
- {
57
- "id": "acme-ai",
58
- "name": "Acme AI",
59
- "description": "Acme AI model provider",
60
- "providers": ["acme-ai"],
61
- "modelSupport": {
62
- "modelPrefixes": ["acme-"]
63
- },
64
- "setup": {
65
- "providers": [
66
- {
67
- "id": "acme-ai",
68
- "envVars": ["ACME_AI_API_KEY"]
69
- }
70
- ]
71
- },
72
- "providerAuthAliases": {
73
- "acme-ai-coding": "acme-ai"
74
- },
75
- "providerAuthChoices": [
76
- {
77
- "provider": "acme-ai",
78
- "method": "api-key",
79
- "choiceId": "acme-ai-api-key",
80
- "choiceLabel": "Acme AI API key",
81
- "groupId": "acme-ai",
82
- "groupLabel": "Acme AI",
83
- "cliFlag": "--acme-ai-api-key",
84
- "cliOption": "--acme-ai-api-key <key>",
85
- "cliDescription": "Acme AI API key"
86
- }
87
- ],
88
- "configSchema": {
89
- "type": "object",
90
- "additionalProperties": false
91
- }
92
- }
93
- ```
94
- </CodeGroup>
95
-
96
- The manifest declares `setup.providers[].envVars` so FengMing can detect
97
- credentials without loading your plugin runtime. Add `providerAuthAliases`
98
- when a provider variant should reuse another provider id's auth. `modelSupport`
99
- is optional and lets FengMing auto-load your provider plugin from shorthand
100
- model ids like `acme-large` before runtime hooks exist. If you publish the
101
- provider on ClawHub, those `fengming.compat` and `fengming.build` fields
102
- are required in `package.json`.
103
-
104
- </Step>
105
-
106
- <Step title="Register the provider">
107
- A minimal text provider needs an `id`, `label`, `auth`, and `catalog`.
108
- `catalog` is the provider-owned runtime/config hook; it can call live
109
- vendor APIs and returns `models.providers` entries.
110
-
111
- ```typescript index.ts
112
- import { definePluginEntry } from "fengming/plugin-sdk/plugin-entry";
113
- import { createProviderApiKeyAuthMethod } from "fengming/plugin-sdk/provider-auth";
114
-
115
- export default definePluginEntry({
116
- id: "acme-ai",
117
- name: "Acme AI",
118
- description: "Acme AI model provider",
119
- register(api) {
120
- api.registerProvider({
121
- id: "acme-ai",
122
- label: "Acme AI",
123
- docsPath: "/providers/acme-ai",
124
- envVars: ["ACME_AI_API_KEY"],
125
-
126
- auth: [
127
- createProviderApiKeyAuthMethod({
128
- providerId: "acme-ai",
129
- methodId: "api-key",
130
- label: "Acme AI API key",
131
- hint: "API key from your Acme AI dashboard",
132
- optionKey: "acmeAiApiKey",
133
- flagName: "--acme-ai-api-key",
134
- envVar: "ACME_AI_API_KEY",
135
- promptMessage: "Enter your Acme AI API key",
136
- defaultModel: "acme-ai/acme-large",
137
- }),
138
- ],
139
-
140
- catalog: {
141
- order: "simple",
142
- run: async (ctx) => {
143
- const apiKey =
144
- ctx.resolveProviderApiKey("acme-ai").apiKey;
145
- if (!apiKey) return null;
146
- return {
147
- provider: {
148
- baseUrl: "https://api.acme-ai.com/v1",
149
- apiKey,
150
- api: "openai-completions",
151
- models: [
152
- {
153
- id: "acme-large",
154
- name: "Acme Large",
155
- reasoning: true,
156
- input: ["text", "image"],
157
- cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
158
- contextWindow: 200000,
159
- maxTokens: 32768,
160
- },
161
- {
162
- id: "acme-small",
163
- name: "Acme Small",
164
- reasoning: false,
165
- input: ["text"],
166
- cost: { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
167
- contextWindow: 128000,
168
- maxTokens: 8192,
169
- },
170
- ],
171
- },
172
- };
173
- },
174
- },
175
- });
176
-
177
- api.registerModelCatalogProvider({
178
- provider: "acme-ai",
179
- kinds: ["text"],
180
- liveCatalog: async (ctx) => {
181
- const apiKey = ctx.resolveProviderApiKey("acme-ai").apiKey;
182
- if (!apiKey) return null;
183
- return [
184
- {
185
- kind: "text",
186
- provider: "acme-ai",
187
- model: "acme-large",
188
- label: "Acme Large",
189
- source: "live",
190
- },
191
- ];
192
- },
193
- });
194
- },
195
- });
196
- ```
197
-
198
- `registerModelCatalogProvider` is the newer control-plane catalog surface
199
- for list/help/picker UI. Use it for text, image-generation,
200
- video-generation, and music-generation rows. Keep vendor endpoint calls and
201
- response mapping in the plugin; FengMing owns the shared row shape, source
202
- labels, and help rendering.
203
-
204
- That is a working provider. Users can now
205
- `fengming onboard --acme-ai-api-key <key>` and select
206
- `acme-ai/acme-large` as their model.
207
-
208
- If the upstream provider uses different control tokens than FengMing, add a
209
- small bidirectional text transform instead of replacing the stream path:
210
-
211
- ```typescript
212
- api.registerTextTransforms({
213
- input: [
214
- { from: /red basket/g, to: "blue basket" },
215
- { from: /paper ticket/g, to: "digital ticket" },
216
- { from: /left shelf/g, to: "right shelf" },
217
- ],
218
- output: [
219
- { from: /blue basket/g, to: "red basket" },
220
- { from: /digital ticket/g, to: "paper ticket" },
221
- { from: /right shelf/g, to: "left shelf" },
222
- ],
223
- });
224
- ```
225
-
226
- `input` rewrites the final system prompt and text message content before
227
- transport. `output` rewrites assistant text deltas and final text before
228
- FengMing parses its own control markers or channel delivery.
229
-
230
- For bundled providers that only register one text provider with API-key
231
- auth plus a single catalog-backed runtime, prefer the narrower
232
- `defineSingleProviderPluginEntry(...)` helper:
233
-
234
- ```typescript
235
- import { defineSingleProviderPluginEntry } from "fengming/plugin-sdk/provider-entry";
236
-
237
- export default defineSingleProviderPluginEntry({
238
- id: "acme-ai",
239
- name: "Acme AI",
240
- description: "Acme AI model provider",
241
- provider: {
242
- label: "Acme AI",
243
- docsPath: "/providers/acme-ai",
244
- auth: [
245
- {
246
- methodId: "api-key",
247
- label: "Acme AI API key",
248
- hint: "API key from your Acme AI dashboard",
249
- optionKey: "acmeAiApiKey",
250
- flagName: "--acme-ai-api-key",
251
- envVar: "ACME_AI_API_KEY",
252
- promptMessage: "Enter your Acme AI API key",
253
- defaultModel: "acme-ai/acme-large",
254
- },
255
- ],
256
- catalog: {
257
- buildProvider: () => ({
258
- api: "openai-completions",
259
- baseUrl: "https://api.acme-ai.com/v1",
260
- models: [{ id: "acme-large", name: "Acme Large" }],
261
- }),
262
- buildStaticProvider: () => ({
263
- api: "openai-completions",
264
- baseUrl: "https://api.acme-ai.com/v1",
265
- models: [{ id: "acme-large", name: "Acme Large" }],
266
- }),
267
- },
268
- },
269
- });
270
- ```
271
-
272
- `buildProvider` is the live catalog path used when FengMing can resolve real
273
- provider auth. It may perform provider-specific discovery. Use
274
- `buildStaticProvider` only for offline rows that are safe to show before auth
275
- is configured; it must not require credentials or make network requests.
276
- FengMing's `models list --all` display currently executes static catalogs
277
- only for bundled provider plugins, with an empty config, empty env, and no
278
- agent/workspace paths.
279
-
280
- If your auth flow also needs to patch `models.providers.*`, aliases, and
281
- the agent default model during onboarding, use the preset helpers from
282
- `fengming/plugin-sdk/provider-onboard`. The narrowest helpers are
283
- `createDefaultModelPresetAppliers(...)`,
284
- `createDefaultModelsPresetAppliers(...)`, and
285
- `createModelCatalogPresetAppliers(...)`.
286
-
287
- When a provider's native endpoint supports streamed usage blocks on the
288
- normal `openai-completions` transport, prefer the shared catalog helpers in
289
- `fengming/plugin-sdk/provider-catalog-shared` instead of hardcoding
290
- provider-id checks. `supportsNativeStreamingUsageCompat(...)` and
291
- `applyProviderNativeStreamingUsageCompat(...)` detect support from the
292
- endpoint capability map, so native Moonshot/DashScope-style endpoints still
293
- opt in even when a plugin is using a custom provider id.
294
-
295
- </Step>
296
-
297
- <Step title="Add dynamic model resolution">
298
- If your provider accepts arbitrary model IDs (like a proxy or router),
299
- add `resolveDynamicModel`:
300
-
301
- ```typescript
302
- api.registerProvider({
303
- // ... id, label, auth, catalog from above
304
-
305
- resolveDynamicModel: (ctx) => ({
306
- id: ctx.modelId,
307
- name: ctx.modelId,
308
- provider: "acme-ai",
309
- api: "openai-completions",
310
- baseUrl: "https://api.acme-ai.com/v1",
311
- reasoning: false,
312
- input: ["text"],
313
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
314
- contextWindow: 128000,
315
- maxTokens: 8192,
316
- }),
317
- });
318
- ```
319
-
320
- If resolving requires a network call, use `prepareDynamicModel` for async
321
- warm-up - `resolveDynamicModel` runs again after it completes.
322
-
323
- </Step>
324
-
325
- <Step title="Add runtime hooks (as needed)">
326
- Most providers only need `catalog` + `resolveDynamicModel`. Add hooks
327
- incrementally as your provider requires them.
328
-
329
- Shared helper builders now cover the most common replay/tool-compat
330
- families, so plugins usually do not need to hand-wire each hook one by one:
331
-
332
- ```typescript
333
- import { buildProviderReplayFamilyHooks } from "fengming/plugin-sdk/provider-model-shared";
334
- import { buildProviderStreamFamilyHooks } from "fengming/plugin-sdk/provider-stream";
335
- import { buildProviderToolCompatFamilyHooks } from "fengming/plugin-sdk/provider-tools";
336
-
337
- const GOOGLE_FAMILY_HOOKS = {
338
- ...buildProviderReplayFamilyHooks({ family: "google-gemini" }),
339
- ...buildProviderStreamFamilyHooks("google-thinking"),
340
- ...buildProviderToolCompatFamilyHooks("gemini"),
341
- };
342
-
343
- api.registerProvider({
344
- id: "acme-gemini-compatible",
345
- // ...
346
- ...GOOGLE_FAMILY_HOOKS,
347
- });
348
- ```
349
-
350
- Available replay families today:
351
-
352
- | Family | What it wires in | Bundled examples |
353
- | --- | --- | --- |
354
- | `openai-compatible` | Shared OpenAI-style replay policy for OpenAI-compatible transports, including tool-call-id sanitation, assistant-first ordering fixes, and generic Gemini-turn validation where the transport needs it | `moonshot`, `ollama`, `xai`, `zai` |
355
- | `anthropic-by-model` | Claude-aware replay policy chosen by `modelId`, so Anthropic-message transports only get Claude-specific thinking-block cleanup when the resolved model is actually a Claude id | `amazon-bedrock`, `anthropic-vertex` |
356
- | `google-gemini` | Native Gemini replay policy plus bootstrap replay sanitation and tagged reasoning-output mode | `google`, `google-gemini-cli` |
357
- | `passthrough-gemini` | Gemini thought-signature sanitation for Gemini models running through OpenAI-compatible proxy transports; does not enable native Gemini replay validation or bootstrap rewrites | `openrouter`, `kilocode`, `opencode`, `opencode-go` |
358
- | `hybrid-anthropic-openai` | Hybrid policy for providers that mix Anthropic-message and OpenAI-compatible model surfaces in one plugin; optional Claude-only thinking-block dropping stays scoped to the Anthropic side | `minimax` |
359
-
360
- Available stream families today:
361
-
362
- | Family | What it wires in | Bundled examples |
363
- | --- | --- | --- |
364
- | `google-thinking` | Gemini thinking payload normalization on the shared stream path | `google`, `google-gemini-cli` |
365
- | `kilocode-thinking` | Kilo reasoning wrapper on the shared proxy stream path, with `kilo/auto` and unsupported proxy reasoning ids skipping injected thinking | `kilocode` |
366
- | `moonshot-thinking` | Moonshot binary native-thinking payload mapping from config + `/think` level | `moonshot` |
367
- | `minimax-fast-mode` | MiniMax fast-mode model rewrite on the shared stream path | `minimax`, `minimax-portal` |
368
- | `openai-responses-defaults` | Shared native OpenAI/Codex Responses wrappers: attribution headers, `/fast`/`serviceTier`, text verbosity, native Codex web search, reasoning-compat payload shaping, and Responses context management | `openai` |
369
- | `openrouter-thinking` | OpenRouter reasoning wrapper for proxy routes, with unsupported-model/`auto` skips handled centrally | `openrouter` |
370
- | `tool-stream-default-on` | Default-on `tool_stream` wrapper for providers like Z.AI that want tool streaming unless explicitly disabled | `zai` |
371
-
372
- <Accordion title="SDK seams powering the family builders">
373
- Each family builder is composed from lower-level public helpers exported from the same package, which you can reach for when a provider needs to go off the common pattern:
374
-
375
- - `fengming/plugin-sdk/provider-model-shared` - `ProviderReplayFamily`, `buildProviderReplayFamilyHooks(...)`, and the raw replay builders (`buildOpenAICompatibleReplayPolicy`, `buildAnthropicReplayPolicyForModel`, `buildGoogleGeminiReplayPolicy`, `buildHybridAnthropicOrOpenAIReplayPolicy`). Also exports Gemini replay helpers (`sanitizeGoogleGeminiReplayHistory`, `resolveTaggedReasoningOutputMode`) and endpoint/model helpers (`resolveProviderEndpoint`, `normalizeProviderId`, `normalizeGooglePreviewModelId`).
376
- - `fengming/plugin-sdk/provider-stream` - `ProviderStreamFamily`, `buildProviderStreamFamilyHooks(...)`, `composeProviderStreamWrappers(...)`, plus the shared OpenAI/Codex wrappers (`createOpenAIAttributionHeadersWrapper`, `createOpenAIFastModeWrapper`, `createOpenAIServiceTierWrapper`, `createOpenAIResponsesContextManagementWrapper`, `createCodexNativeWebSearchWrapper`), DeepSeek V4 OpenAI-compatible wrapper (`createDeepSeekV4OpenAICompatibleThinkingWrapper`), Anthropic Messages thinking prefill cleanup (`createAnthropicThinkingPrefillPayloadWrapper`), plain-text tool-call compat (`createPlainTextToolCallCompatWrapper`), and shared proxy/provider wrappers (`createOpenRouterWrapper`, `createToolStreamWrapper`, `createMinimaxFastModeWrapper`).
377
- - `fengming/plugin-sdk/provider-tools` - `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks("deepseek" | "gemini" | "openai")`, and underlying provider schema helpers.
378
-
379
- Some stream helpers stay provider-local on purpose. `@fengming/anthropic-provider` keeps `wrapAnthropicProviderStream`, `resolveAnthropicBetas`, `resolveAnthropicFastMode`, `resolveAnthropicServiceTier`, and the lower-level Anthropic wrapper builders in its own public `api.ts` / `contract-api.ts` seam because they encode Claude OAuth beta handling and `context1m` gating. The xAI plugin similarly keeps native xAI Responses shaping in its own `wrapStreamFn` (`/fast` aliases, default `tool_stream`, unsupported strict-tool cleanup, xAI-specific reasoning-payload removal).
380
-
381
- The same package-root pattern also backs `@fengming/openai-provider` (provider builders, default-model helpers, realtime provider builders) and `@fengming/openrouter-provider` (provider builder plus onboarding/config helpers).
382
- </Accordion>
383
-
384
- <Tabs>
385
- <Tab title="Token exchange">
386
- For providers that need a token exchange before each inference call:
387
-
388
- ```typescript
389
- prepareRuntimeAuth: async (ctx) => {
390
- const exchanged = await exchangeToken(ctx.apiKey);
391
- return {
392
- apiKey: exchanged.token,
393
- baseUrl: exchanged.baseUrl,
394
- expiresAt: exchanged.expiresAt,
395
- };
396
- },
397
- ```
398
- </Tab>
399
- <Tab title="Custom headers">
400
- For providers that need custom request headers or body modifications:
401
-
402
- ```typescript
403
- // wrapStreamFn returns a StreamFn derived from ctx.streamFn
404
- wrapStreamFn: (ctx) => {
405
- if (!ctx.streamFn) return undefined;
406
- const inner = ctx.streamFn;
407
- return async (params) => {
408
- params.headers = {
409
- ...params.headers,
410
- "X-Acme-Version": "2",
411
- };
412
- return inner(params);
413
- };
414
- },
415
- ```
416
- </Tab>
417
- <Tab title="Native transport identity">
418
- For providers that need native request/session headers or metadata on
419
- generic HTTP or WebSocket transports:
420
-
421
- ```typescript
422
- resolveTransportTurnState: (ctx) => ({
423
- headers: {
424
- "x-request-id": ctx.turnId,
425
- },
426
- metadata: {
427
- session_id: ctx.sessionId ?? "",
428
- turn_id: ctx.turnId,
429
- },
430
- }),
431
- resolveWebSocketSessionPolicy: (ctx) => ({
432
- headers: {
433
- "x-session-id": ctx.sessionId ?? "",
434
- },
435
- degradeCooldownMs: 60_000,
436
- }),
437
- ```
438
- </Tab>
439
- <Tab title="Usage and billing">
440
- For providers that expose usage/billing data:
441
-
442
- ```typescript
443
- resolveUsageAuth: async (ctx) => {
444
- const auth = await ctx.resolveOAuthToken();
445
- return auth ? { token: auth.token } : null;
446
- },
447
- fetchUsageSnapshot: async (ctx) => {
448
- return await fetchAcmeUsage(ctx.token, ctx.timeoutMs);
449
- },
450
- ```
451
- </Tab>
452
- </Tabs>
453
-
454
- <Accordion title="All available provider hooks">
455
- FengMing calls hooks in this order. Most providers only use 2-3:
456
- Compatibility-only provider fields that FengMing no longer calls, such as
457
- `ProviderPlugin.capabilities` and `suppressBuiltInModel`, are not listed
458
- here.
459
-
460
- | # | Hook | When to use |
461
- | --- | --- | --- |
462
- | 1 | `catalog` | Model catalog or base URL defaults |
463
- | 2 | `applyConfigDefaults` | Provider-owned global defaults during config materialization |
464
- | 3 | `normalizeModelId` | Legacy/preview model-id alias cleanup before lookup |
465
- | 4 | `normalizeTransport` | Provider-family `api` / `baseUrl` cleanup before generic model assembly |
466
- | 5 | `normalizeConfig` | Normalize `models.providers.<id>` config |
467
- | 6 | `applyNativeStreamingUsageCompat` | Native streaming-usage compat rewrites for config providers |
468
- | 7 | `resolveConfigApiKey` | Provider-owned env-marker auth resolution |
469
- | 8 | `resolveSyntheticAuth` | Local/self-hosted or config-backed synthetic auth |
470
- | 9 | `shouldDeferSyntheticProfileAuth` | Lower synthetic stored-profile placeholders behind env/config auth |
471
- | 10 | `resolveDynamicModel` | Accept arbitrary upstream model IDs |
472
- | 11 | `prepareDynamicModel` | Async metadata fetch before resolving |
473
- | 12 | `normalizeResolvedModel` | Transport rewrites before the runner |
474
- | 13 | `normalizeToolSchemas` | Provider-owned tool-schema cleanup before registration |
475
- | 14 | `inspectToolSchemas` | Provider-owned tool-schema diagnostics |
476
- | 15 | `resolveReasoningOutputMode` | Tagged vs native reasoning-output contract |
477
- | 16 | `prepareExtraParams` | Default request params |
478
- | 17 | `createStreamFn` | Fully custom StreamFn transport |
479
- | 19 | `wrapStreamFn` | Custom headers/body wrappers on the normal stream path |
480
- | 20 | `resolveTransportTurnState` | Native per-turn headers/metadata |
481
- | 21 | `resolveWebSocketSessionPolicy` | Native WS session headers/cool-down |
482
- | 22 | `formatApiKey` | Custom runtime token shape |
483
- | 23 | `refreshOAuth` | Custom OAuth refresh |
484
- | 24 | `buildAuthDoctorHint` | Auth repair guidance |
485
- | 25 | `matchesContextOverflowError` | Provider-owned overflow detection |
486
- | 26 | `classifyFailoverReason` | Provider-owned rate-limit/overload classification |
487
- | 27 | `isCacheTtlEligible` | Prompt cache TTL gating |
488
- | 28 | `buildMissingAuthMessage` | Custom missing-auth hint |
489
- | 29 | `augmentModelCatalog` | Synthetic forward-compat rows |
490
- | 30 | `resolveThinkingProfile` | Model-specific `/think` option set |
491
- | 31 | `isBinaryThinking` | Binary thinking on/off compatibility |
492
- | 32 | `supportsXHighThinking` | `xhigh` reasoning support compatibility |
493
- | 33 | `resolveDefaultThinkingLevel` | Default `/think` policy compatibility |
494
- | 34 | `isModernModelRef` | Live/smoke model matching |
495
- | 35 | `prepareRuntimeAuth` | Token exchange before inference |
496
- | 36 | `resolveUsageAuth` | Custom usage credential parsing |
497
- | 37 | `fetchUsageSnapshot` | Custom usage endpoint |
498
- | 38 | `createEmbeddingProvider` | Provider-owned embedding adapter for memory/search |
499
- | 39 | `buildReplayPolicy` | Custom transcript replay/compaction policy |
500
- | 40 | `sanitizeReplayHistory` | Provider-specific replay rewrites after generic cleanup |
501
- | 41 | `validateReplayTurns` | Strict replay-turn validation before the embedded runner |
502
- | 42 | `onModelSelected` | Post-selection callback (e.g. telemetry) |
503
-
504
- Runtime fallback notes:
505
-
506
- - `normalizeConfig` checks the matched provider first, then other hook-capable provider plugins until one actually changes the config. If no provider hook rewrites a supported Google-family config entry, the bundled Google config normalizer still applies.
507
- - `resolveConfigApiKey` uses the provider hook when exposed. Amazon Bedrock keeps AWS env-marker resolution in its provider plugin; runtime auth itself still uses the AWS SDK default chain when configured with `auth: "aws-sdk"`.
508
- - `resolveThinkingProfile(ctx)` receives the selected `provider`, `modelId`, optional merged `reasoning` catalog hint, and optional merged model `compat` facts. Use `compat` only to select the provider's thinking UI/profile.
509
- - `resolveSystemPromptContribution` lets a provider inject cache-aware system-prompt guidance for a model family. Prefer it over `before_prompt_build` when the behavior belongs to one provider/model family and should preserve the stable/dynamic cache split.
510
-
511
- For detailed descriptions and real-world examples, see [Internals: Provider Runtime Hooks](/plugins/architecture-internals#provider-runtime-hooks).
512
- </Accordion>
513
-
514
- </Step>
515
-
516
- <Step title="Add extra capabilities (optional)">
517
- ### Step 5: Add extra capabilities
518
-
519
- A provider plugin can register embeddings, speech, realtime transcription,
520
- realtime voice, media understanding, image generation, video generation,
521
- web fetch, and web search alongside text inference. FengMing classifies this as a
522
- **hybrid-capability** plugin - the recommended pattern for company plugins
523
- (one plugin per vendor). See
524
- [Internals: Capability Ownership](/plugins/architecture#capability-ownership-model).
525
-
526
- Register each capability inside `register(api)` alongside your existing
527
- `api.registerProvider(...)` call. Pick only the tabs you need:
528
-
529
- <Tabs>
530
- <Tab title="Speech (TTS)">
531
- ```typescript
532
- import {
533
- assertOkOrThrowProviderError,
534
- postJsonRequest,
535
- } from "fengming/plugin-sdk/provider-http";
536
-
537
- api.registerSpeechProvider({
538
- id: "acme-ai",
539
- label: "Acme Speech",
540
- defaultTimeoutMs: 120_000,
541
- isConfigured: ({ config }) => Boolean(config.messages?.tts),
542
- synthesize: async (req) => {
543
- const { response, release } = await postJsonRequest({
544
- url: "https://api.example.com/v1/speech",
545
- headers: new Headers({ "Content-Type": "application/json" }),
546
- body: { text: req.text },
547
- timeoutMs: req.timeoutMs,
548
- fetchFn: fetch,
549
- auditContext: "acme speech",
550
- });
551
- try {
552
- await assertOkOrThrowProviderError(response, "Acme Speech API error");
553
- return {
554
- audioBuffer: Buffer.from(await response.arrayBuffer()),
555
- outputFormat: "mp3",
556
- fileExtension: ".mp3",
557
- voiceCompatible: false,
558
- };
559
- } finally {
560
- await release();
561
- }
562
- },
563
- });
564
- ```
565
-
566
- Use `assertOkOrThrowProviderError(...)` for provider HTTP failures so
567
- plugins share capped error-body reads, JSON error parsing, and
568
- request-id suffixes.
569
- </Tab>
570
- <Tab title="Realtime transcription">
571
- Prefer `createRealtimeTranscriptionWebSocketSession(...)` - the shared
572
- helper handles proxy capture, reconnect backoff, close flushing, ready
573
- handshakes, audio queueing, and close-event diagnostics. Your plugin
574
- only maps upstream events.
575
-
576
- ```typescript
577
- api.registerRealtimeTranscriptionProvider({
578
- id: "acme-ai",
579
- label: "Acme Realtime Transcription",
580
- isConfigured: () => true,
581
- createSession: (req) => {
582
- const apiKey = String(req.providerConfig.apiKey ?? "");
583
- return createRealtimeTranscriptionWebSocketSession({
584
- providerId: "acme-ai",
585
- callbacks: req,
586
- url: "wss://api.example.com/v1/realtime-transcription",
587
- headers: { Authorization: `Bearer ${apiKey}` },
588
- onMessage: (event, transport) => {
589
- if (event.type === "session.created") {
590
- transport.sendJson({ type: "session.update" });
591
- transport.markReady();
592
- return;
593
- }
594
- if (event.type === "transcript.final") {
595
- req.onTranscript?.(event.text);
596
- }
597
- },
598
- sendAudio: (audio, transport) => {
599
- transport.sendJson({
600
- type: "audio.append",
601
- audio: audio.toString("base64"),
602
- });
603
- },
604
- onClose: (transport) => {
605
- transport.sendJson({ type: "audio.end" });
606
- },
607
- });
608
- },
609
- });
610
- ```
611
-
612
- Batch STT providers that POST multipart audio should use
613
- `buildAudioTranscriptionFormData(...)` from
614
- `fengming/plugin-sdk/provider-http`. The helper normalizes upload
615
- filenames, including AAC uploads that need an M4A-style filename for
616
- compatible transcription APIs.
617
- </Tab>
618
- <Tab title="Realtime voice">
619
- ```typescript
620
- api.registerRealtimeVoiceProvider({
621
- id: "acme-ai",
622
- label: "Acme Realtime Voice",
623
- capabilities: {
624
- transports: ["gateway-relay"],
625
- inputAudioFormats: [{ encoding: "pcm16", sampleRateHz: 24000, channels: 1 }],
626
- outputAudioFormats: [{ encoding: "pcm16", sampleRateHz: 24000, channels: 1 }],
627
- supportsBargeIn: true,
628
- supportsToolCalls: true,
629
- },
630
- isConfigured: ({ providerConfig }) => Boolean(providerConfig.apiKey),
631
- createBridge: (req) => ({
632
- // Set this only if the provider accepts multiple tool responses for
633
- // one call, for example an immediate "working" response followed by
634
- // the final result.
635
- supportsToolResultContinuation: false,
636
- connect: async () => {},
637
- sendAudio: () => {},
638
- setMediaTimestamp: () => {},
639
- handleBargeIn: () => {},
640
- submitToolResult: () => {},
641
- acknowledgeMark: () => {},
642
- close: () => {},
643
- isConnected: () => true,
644
- }),
645
- });
646
- ```
647
-
648
- Declare `capabilities` so `talk.catalog` can expose valid modes,
649
- transports, audio formats, and feature flags to browser and native Talk
650
- clients. Implement `handleBargeIn` when a transport can detect that a
651
- human is interrupting assistant playback and the provider supports
652
- truncating or clearing the active audio response.
653
- </Tab>
654
- <Tab title="Media understanding">
655
- ```typescript
656
- api.registerMediaUnderstandingProvider({
657
- id: "acme-ai",
658
- capabilities: ["image", "audio"],
659
- describeImage: async (req) => ({ text: "A photo of..." }),
660
- transcribeAudio: async (req) => ({ text: "Transcript..." }),
661
- });
662
- ```
663
- </Tab>
664
- <Tab title="Embeddings">
665
- ```typescript
666
- api.registerEmbeddingProvider({
667
- id: "acme-ai",
668
- defaultModel: "acme-embed",
669
- transport: "remote",
670
- authProviderId: "acme-ai",
671
- create: async ({ model }) => ({
672
- provider: {
673
- id: "acme-ai",
674
- model,
675
- dimensions: 1536,
676
- embed: async (input) => {
677
- const text = typeof input === "string" ? input : input.text;
678
- return fetchAcmeEmbedding(text);
679
- },
680
- embedBatch: async (inputs) =>
681
- Promise.all(
682
- inputs.map((input) =>
683
- fetchAcmeEmbedding(typeof input === "string" ? input : input.text),
684
- ),
685
- ),
686
- },
687
- }),
688
- });
689
- ```
690
-
691
- Declare the same id in `contracts.embeddingProviders`. This is the
692
- general embedding contract for reusable vector generation, including
693
- memory search. `registerMemoryEmbeddingProvider(...)` is deprecated
694
- compatibility for existing memory-specific adapters.
695
- </Tab>
696
- <Tab title="Image and video generation">
697
- Video capabilities use a **mode-aware** shape: `generate`,
698
- `imageToVideo`, and `videoToVideo`. Flat aggregate fields like
699
- `maxInputImages` / `maxInputVideos` / `maxDurationSeconds` are not
700
- enough to advertise transform-mode support or disabled modes cleanly.
701
- Music generation follows the same pattern with explicit `generate` /
702
- `edit` blocks.
703
-
704
- ```typescript
705
- api.registerImageGenerationProvider({
706
- id: "acme-ai",
707
- label: "Acme Images",
708
- generate: async (req) => ({ /* image result */ }),
709
- });
710
-
711
- api.registerVideoGenerationProvider({
712
- id: "acme-ai",
713
- label: "Acme Video",
714
- defaultTimeoutMs: 600_000,
715
- capabilities: {
716
- generate: { maxVideos: 1, maxDurationSeconds: 10, supportsResolution: true },
717
- imageToVideo: {
718
- enabled: true,
719
- maxVideos: 1,
720
- maxInputImages: 1,
721
- maxInputImagesByModel: { "acme/reference-to-video": 9 },
722
- maxDurationSeconds: 5,
723
- },
724
- videoToVideo: { enabled: false },
725
- },
726
- generateVideo: async (req) => ({ videos: [] }),
727
- });
728
- ```
729
- </Tab>
730
- <Tab title="Web fetch and search">
731
- ```typescript
732
- api.registerWebFetchProvider({
733
- id: "acme-ai-fetch",
734
- label: "Acme Fetch",
735
- hint: "Fetch pages through Acme's rendering backend.",
736
- envVars: ["ACME_FETCH_API_KEY"],
737
- placeholder: "acme-...",
738
- signupUrl: "https://acme.example.com/fetch",
739
- credentialPath: "plugins.entries.acme.config.webFetch.apiKey",
740
- getCredentialValue: (fetchConfig) => fetchConfig?.acme?.apiKey,
741
- setCredentialValue: (fetchConfigTarget, value) => {
742
- const acme = (fetchConfigTarget.acme ??= {});
743
- acme.apiKey = value;
744
- },
745
- createTool: () => ({
746
- description: "Fetch a page through Acme Fetch.",
747
- parameters: {},
748
- execute: async (args) => ({ content: [] }),
749
- }),
750
- });
751
-
752
- api.registerWebSearchProvider({
753
- id: "acme-ai-search",
754
- label: "Acme Search",
755
- search: async (req) => ({ content: [] }),
756
- });
757
- ```
758
- </Tab>
759
- </Tabs>
760
-
761
- </Step>
762
-
763
- <Step title="Test">
764
- ### Step 6: Test
765
-
766
- ```typescript src/provider.test.ts
767
- import { describe, it, expect } from "vitest";
768
- // Export your provider config object from index.ts or a dedicated file
769
- import { acmeProvider } from "./provider.js";
770
-
771
- describe("acme-ai provider", () => {
772
- it("resolves dynamic models", () => {
773
- const model = acmeProvider.resolveDynamicModel!({
774
- modelId: "acme-beta-v3",
775
- } as any);
776
- expect(model.id).toBe("acme-beta-v3");
777
- expect(model.provider).toBe("acme-ai");
778
- });
779
-
780
- it("returns catalog when key is available", async () => {
781
- const result = await acmeProvider.catalog!.run({
782
- resolveProviderApiKey: () => ({ apiKey: "test-key" }),
783
- } as any);
784
- expect(result?.provider?.models).toHaveLength(2);
785
- });
786
-
787
- it("returns null catalog when no key", async () => {
788
- const result = await acmeProvider.catalog!.run({
789
- resolveProviderApiKey: () => ({ apiKey: undefined }),
790
- } as any);
791
- expect(result).toBeNull();
792
- });
793
- });
794
- ```
795
-
796
- </Step>
797
- </Steps>
798
-
799
- ## Publish to ClawHub
800
-
801
- Provider plugins publish the same way as any other external code plugin:
802
-
803
- ```bash
804
- clawhub package publish your-org/your-plugin --dry-run
805
- clawhub package publish your-org/your-plugin
806
- ```
807
-
808
- Do not use the legacy skill-only publish alias here; plugin packages should use
809
- `clawhub package publish`.
810
-
811
- ## File structure
812
-
813
- ```
814
- <bundled-plugin-root>/acme-ai/
815
- ├── package.json # fengming.providers metadata
816
- ├── fengming.plugin.json # Manifest with provider auth metadata
817
- ├── index.ts # definePluginEntry + registerProvider
818
- └── src/
819
- ├── provider.test.ts # Tests
820
- └── usage.ts # Usage endpoint (optional)
821
- ```
822
-
823
- ## Catalog order reference
824
-
825
- `catalog.order` controls when your catalog merges relative to built-in
826
- providers:
827
-
828
- | Order | When | Use case |
829
- | --------- | ------------- | ----------------------------------------------- |
830
- | `simple` | First pass | Plain API-key providers |
831
- | `profile` | After simple | Providers gated on auth profiles |
832
- | `paired` | After profile | Synthesize multiple related entries |
833
- | `late` | Last pass | Override existing providers (wins on collision) |
834
-
835
- ## Next steps
836
-
837
- - [Channel Plugins](/plugins/sdk-channel-plugins) - if your plugin also provides a channel
838
- - [SDK Runtime](/plugins/sdk-runtime) - `api.runtime` helpers (TTS, search, subagent)
839
- - [SDK Overview](/plugins/sdk-overview) - full subpath import reference
840
- - [Plugin Internals](/plugins/architecture-internals#provider-runtime-hooks) - hook details and bundled examples
841
-
842
- ## Related
843
-
844
- - [Plugin SDK setup](/plugins/sdk-setup)
845
- - [Building plugins](/plugins/building-plugins)
846
- - [Building channel plugins](/plugins/sdk-channel-plugins)