@symerian/symi 3.0.16 → 3.0.18

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 (310) hide show
  1. package/dist/{audio-preflight-CBDFctZN.js → audio-preflight-BfmZbg4Y.js} +4 -4
  2. package/dist/{audio-preflight-gsZSpG-6.js → audio-preflight-DcuC-liM.js} +4 -4
  3. package/dist/build-info.json +3 -3
  4. package/dist/bundled/boot-md/handler.js +8 -8
  5. package/dist/bundled/session-memory/handler.js +7 -7
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/{chrome-nPMY1XTJ.js → chrome-Bo7cbvFK.js} +5 -5
  8. package/dist/{chrome-BjVab8gM.js → chrome-DYp18Q0t.js} +5 -5
  9. package/dist/{deliver-D-QFqm31.js → deliver-ChSIbiMM.js} +1 -1
  10. package/dist/{deliver-B4-bcot9.js → deliver-DEgRQM4J.js} +1 -1
  11. package/dist/extensionAPI.js +7 -7
  12. package/dist/{image-CDwtQjmt.js → image-Bx-hvoNJ.js} +1 -1
  13. package/dist/{image-CcS-vzTA.js → image-CQl_mjWk.js} +1 -1
  14. package/dist/llm-slug-generator.js +7 -7
  15. package/dist/{manager-BnEdHzmO.js → manager-D_pn0urG.js} +1 -1
  16. package/dist/{manager-09r0qPze.js → manager-YQxK2t0C.js} +1 -1
  17. package/dist/{pi-embedded-CWsY69-4.js → pi-embedded-CLw_ZzEZ.js} +16 -16
  18. package/dist/{pi-embedded-helpers-BBMy-lqr.js → pi-embedded-helpers-B5I53aw6.js} +4 -4
  19. package/dist/{pi-embedded-helpers-ChEYbgVj.js → pi-embedded-helpers-sUAEIC9X.js} +4 -4
  20. package/dist/plugin-sdk/{accounts-BfyWsC_i.js → accounts-CWFytwbR.js} +3 -3
  21. package/dist/plugin-sdk/{active-listener-DcJW7xAT.js → active-listener-BkZ4jHrL.js} +2 -2
  22. package/dist/plugin-sdk/{agent-scope-ChbGV6of.js → agent-scope-C9gfY_Gk.js} +2 -2
  23. package/dist/plugin-sdk/{audio-preflight-D3GtNLqW.js → audio-preflight-HKbdzXLZ.js} +21 -21
  24. package/dist/plugin-sdk/{bindings-CN2Qmefj.js → bindings-BaKIqPPy.js} +2 -2
  25. package/dist/plugin-sdk/{channel-web-DTyqujjA.js → channel-web-D5nWiTH1.js} +18 -18
  26. package/dist/plugin-sdk/{chrome-BKzAKr3K.js → chrome-klTSnz-9.js} +3 -3
  27. package/dist/plugin-sdk/{chunk-DhDkBujV.js → chunk-BbrYSny_.js} +1 -1
  28. package/dist/plugin-sdk/{command-format-CVrYFyZS.js → command-format-BN6tyZt6.js} +1 -1
  29. package/dist/plugin-sdk/{commands-registry-17yfZkHZ.js → commands-registry-CTzKKtY6.js} +4 -4
  30. package/dist/plugin-sdk/{config-7wk65zKC.js → config-Crv2qEdJ.js} +9 -9
  31. package/dist/plugin-sdk/{consolidate-exbAW0ml.js → consolidate-DT1QH65Q.js} +2 -2
  32. package/dist/plugin-sdk/{deliver-TxAcw7J5.js → deliver-7rOvAlrc.js} +12 -12
  33. package/dist/plugin-sdk/{diagnostic-Debx4frd.js → diagnostic-0nsxhWp7.js} +1 -1
  34. package/dist/plugin-sdk/{fs-safe-wBYbAkJF.js → fs-safe-DfWYBeWF.js} +1 -1
  35. package/dist/plugin-sdk/{gemini-auth-7U2pm2Ky.js → gemini-auth-C0N0_u49.js} +1 -1
  36. package/dist/plugin-sdk/{image-BtDVmYA5.js → image-WOSl2apK.js} +4 -4
  37. package/dist/plugin-sdk/index.js +43 -43
  38. package/dist/plugin-sdk/{ir-CKMvRrGW.js → ir-9J84MTls.js} +4 -4
  39. package/dist/plugin-sdk/{local-roots-c_gaPs01.js → local-roots-OLRDbvyY.js} +3 -3
  40. package/dist/plugin-sdk/{login-DUym1Jy0.js → login-C7x4q0i2.js} +7 -7
  41. package/dist/plugin-sdk/{login-qr-B-WBdvrX.js → login-qr-Dv5_MoAW.js} +9 -9
  42. package/dist/plugin-sdk/{manager-B71SCzos.js → manager-C83tK17x.js} +8 -8
  43. package/dist/plugin-sdk/{manifest-registry-Dnic6Chh.js → manifest-registry-CJMV-PI7.js} +1 -1
  44. package/dist/plugin-sdk/{markdown-tables-Dur7OTlM.js → markdown-tables-DXNKz5y_.js} +1 -1
  45. package/dist/plugin-sdk/{message-channel-BrAhJJV_.js → message-channel-aGy1HbQQ.js} +1 -1
  46. package/dist/plugin-sdk/{model-selection-B9qaVQSJ.js → model-selection-C-3-tpe7.js} +4 -4
  47. package/dist/plugin-sdk/{outbound-DB1wDM8b.js → outbound-DquCeSy5.js} +6 -6
  48. package/dist/plugin-sdk/{pi-auth-json-ZO118hoy.js → pi-auth-json-D9PDCXGn.js} +1 -1
  49. package/dist/plugin-sdk/{pi-embedded-helpers-s_U0Un7j.js → pi-embedded-helpers-D3ygfH7l.js} +16 -16
  50. package/dist/plugin-sdk/{plugins-DF81oSaI.js → plugins-DOwnSg9D.js} +4 -4
  51. package/dist/plugin-sdk/{pw-ai-CTwP02uv.js → pw-ai-rlengLjb.js} +8 -8
  52. package/dist/plugin-sdk/{qmd-manager-CBaSGant.js → qmd-manager-BzxFjRFa.js} +4 -4
  53. package/dist/plugin-sdk/{registry-CZVURNhF.js → registry-5iFfixlB.js} +2 -2
  54. package/dist/plugin-sdk/{replies-hwRbkU3z.js → replies-BXOzO_H5.js} +7 -7
  55. package/dist/plugin-sdk/{reply-prefix-CaXmzZlx.js → reply-prefix-INAKTqCU.js} +1 -1
  56. package/dist/plugin-sdk/{resolve-outbound-target-fxVSOBmk.js → resolve-outbound-target-DvbxHtqp.js} +2 -2
  57. package/dist/plugin-sdk/{resolve-route-ClCyiOeu.js → resolve-route-URXlY3AK.js} +3 -3
  58. package/dist/plugin-sdk/{runner-Cq5jvwQ7.js → runner-Bv0_DWoH.js} +9 -9
  59. package/dist/plugin-sdk/{session-B_TkB65Y.js → session-C3r8l7ou.js} +4 -4
  60. package/dist/plugin-sdk/{skill-commands-0LF9HTGr.js → skill-commands-KjLUGIdZ.js} +5 -5
  61. package/dist/plugin-sdk/{skills-BIT_O7J0.js → skills-BrsD4L5c.js} +7 -7
  62. package/dist/plugin-sdk/{sqlite-Bx5Y5U5X.js → sqlite-CjW7ME1H.js} +1 -1
  63. package/dist/plugin-sdk/{subsystem-CXqYeDy-.js → subsystem-DcOg1xJr.js} +1 -1
  64. package/dist/plugin-sdk/{synthesis-DtsYAj1E.js → synthesis-CY7YAasV.js} +38 -38
  65. package/dist/plugin-sdk/{target-errors-B8mokOeH.js → target-errors-BVWJGWFq.js} +2 -2
  66. package/dist/plugin-sdk/{thinking-Ca0DhqzO.js → thinking-CtsTDPOi.js} +3 -3
  67. package/dist/plugin-sdk/{tokens-CvlONEqh.js → tokens-8lqOTZCB.js} +1 -1
  68. package/dist/plugin-sdk/{tool-images-DpBaWEHT.js → tool-images-Cl_rGIUZ.js} +2 -2
  69. package/dist/plugin-sdk/{tool-loop-detection-BOvUFa0f.js → tool-loop-detection-Da4WUT_P.js} +2 -2
  70. package/dist/plugin-sdk/{unified-runner-CnM7lyNd.js → unified-runner-nwMnsZyj.js} +60 -60
  71. package/dist/plugin-sdk/web-BlweOZDp.js +54 -0
  72. package/dist/plugin-sdk/{whatsapp-actions-CvnfsFJm.js → whatsapp-actions-DpfaGYs7.js} +21 -21
  73. package/dist/{pw-ai-BW8_KeDf.js → pw-ai-BqxJG-Wh.js} +1 -1
  74. package/dist/{pw-ai-j9IE1K0-.js → pw-ai-C-NSGye0.js} +1 -1
  75. package/dist/{runner-8ALr2UII.js → runner-COGFTeDw.js} +1 -1
  76. package/dist/{runner-C4-9kFdR.js → runner-DhCi2lT1.js} +1 -1
  77. package/dist/{synthesis-Cph3LhA1.js → synthesis-CXZu24Vx.js} +7 -7
  78. package/dist/{synthesis-Cus0A2dL.js → synthesis-DrPxcMlQ.js} +7 -7
  79. package/dist/{unified-runner-CX80YMTk.js → unified-runner-iByUazvW.js} +16 -16
  80. package/dist/{web-ChozvJ7I.js → web-EsMQBIYf.js} +7 -7
  81. package/dist/{web-DFlsbXmQ.js → web-PPg5y6xI.js} +7 -7
  82. package/docs/.i18n/zh-CN.tm.jsonl +0 -20
  83. package/docs/automation/cron-jobs.md +0 -2
  84. package/docs/automation/hooks.md +0 -2
  85. package/docs/automation/poll.md +0 -8
  86. package/docs/automation/webhook.md +0 -2
  87. package/docs/capabilities.md +0 -2
  88. package/docs/channels/broadcast-groups.md +0 -1
  89. package/docs/channels/channel-routing.md +4 -10
  90. package/docs/channels/group-messages.md +0 -2
  91. package/docs/channels/groups.md +0 -10
  92. package/docs/channels/index.md +0 -1
  93. package/docs/channels/matrix.md +0 -2
  94. package/docs/channels/msteams.md +0 -2
  95. package/docs/channels/pairing.md +0 -3
  96. package/docs/channels/signal.md +0 -2
  97. package/docs/channels/troubleshooting.md +0 -7
  98. package/docs/cli/channels.md +0 -6
  99. package/docs/cli/configure.md +0 -1
  100. package/docs/cli/directory.md +0 -1
  101. package/docs/cli/index.md +0 -7
  102. package/docs/cli/message.md +1 -47
  103. package/docs/cli/status.md +0 -1
  104. package/docs/concepts/architecture.md +0 -1
  105. package/docs/concepts/features.md +0 -2
  106. package/docs/concepts/markdown-formatting.md +6 -8
  107. package/docs/concepts/memory.md +0 -4
  108. package/docs/concepts/messages.md +0 -1
  109. package/docs/concepts/models.md +0 -1
  110. package/docs/concepts/multi-agent.md +4 -19
  111. package/docs/concepts/queue.md +0 -3
  112. package/docs/concepts/retry.md +0 -5
  113. package/docs/concepts/session-tool.md +0 -2
  114. package/docs/concepts/session.md +2 -9
  115. package/docs/concepts/streaming.md +0 -2
  116. package/docs/concepts/system-prompt.md +0 -1
  117. package/docs/concepts/timezone.md +0 -1
  118. package/docs/date-time.md +0 -1
  119. package/docs/docs.json +2 -11
  120. package/docs/experiments/plans/cron-add-hardening.md +0 -1
  121. package/docs/experiments/plans/session-binding-channel-agnostic.md +2 -23
  122. package/docs/experiments/plans/thread-bound-subagents.md +7 -64
  123. package/docs/gateway/configuration-examples.md +0 -10
  124. package/docs/gateway/configuration-reference.md +22 -47
  125. package/docs/gateway/configuration.md +0 -3
  126. package/docs/gateway/heartbeat.md +0 -2
  127. package/docs/gateway/security/index.md +1 -6
  128. package/docs/gateway/troubleshooting.md +0 -1
  129. package/docs/help/faq.md +0 -13
  130. package/docs/help/troubleshooting.md +0 -1
  131. package/docs/index.md +0 -6
  132. package/docs/install/ansible.md +2 -3
  133. package/docs/install/docker.md +1 -7
  134. package/docs/install/fly.md +0 -14
  135. package/docs/install/northflank.mdx +7 -11
  136. package/docs/install/railway.mdx +6 -10
  137. package/docs/install/render.mdx +1 -2
  138. package/docs/ja-JP/index.md +0 -3
  139. package/docs/pi.md +3 -5
  140. package/docs/platforms/digitalocean.md +0 -1
  141. package/docs/platforms/mac/voicewake.md +0 -1
  142. package/docs/providers/index.md +0 -2
  143. package/docs/refactor/outbound-session-mirroring.md +0 -2
  144. package/docs/reference/AGENTS.default.md +0 -1
  145. package/docs/reference/RELEASING.md +0 -1
  146. package/docs/reference/session-management-compaction.md +0 -1
  147. package/docs/reference/templates/AGENTS.md +0 -7
  148. package/docs/reference/wizard.md +0 -4
  149. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -1
  150. package/docs/security/README.md +0 -1
  151. package/docs/security/THREAT-MODEL-ATLAS.md +7 -10
  152. package/docs/start/docs-directory.md +0 -1
  153. package/docs/start/hubs.md +0 -1
  154. package/docs/start/lore.md +0 -3
  155. package/docs/start/setup.md +0 -2
  156. package/docs/start/showcase.md +0 -2
  157. package/docs/start/symi.md +0 -4
  158. package/docs/start/wizard-cli-reference.md +0 -4
  159. package/docs/start/wizard.md +3 -4
  160. package/docs/tools/agent-send.md +0 -1
  161. package/docs/tools/elevated.md +0 -2
  162. package/docs/tools/exec-approvals.md +0 -1
  163. package/docs/tools/index.md +0 -7
  164. package/docs/tools/multi-agent-sandbox-tools.md +1 -2
  165. package/docs/tools/reactions.md +0 -1
  166. package/docs/tools/slash-commands.md +0 -14
  167. package/docs/tools/symihub.md +0 -1
  168. package/docs/tts.md +0 -1
  169. package/docs/web/control-ui.md +0 -1
  170. package/docs/zh-CN/automation/cron-jobs.md +0 -2
  171. package/docs/zh-CN/automation/poll.md +0 -8
  172. package/docs/zh-CN/automation/webhook.md +0 -2
  173. package/docs/zh-CN/channels/broadcast-groups.md +0 -1
  174. package/docs/zh-CN/channels/channel-routing.md +4 -9
  175. package/docs/zh-CN/channels/group-messages.md +0 -2
  176. package/docs/zh-CN/channels/groups.md +0 -10
  177. package/docs/zh-CN/channels/imessage.md +0 -2
  178. package/docs/zh-CN/channels/index.md +0 -1
  179. package/docs/zh-CN/channels/msteams.md +0 -2
  180. package/docs/zh-CN/channels/pairing.md +0 -3
  181. package/docs/zh-CN/channels/signal.md +0 -2
  182. package/docs/zh-CN/channels/slack.md +0 -2
  183. package/docs/zh-CN/channels/telegram.md +0 -3
  184. package/docs/zh-CN/channels/troubleshooting.md +0 -2
  185. package/docs/zh-CN/cli/channels.md +0 -6
  186. package/docs/zh-CN/cli/configure.md +0 -1
  187. package/docs/zh-CN/cli/directory.md +0 -1
  188. package/docs/zh-CN/cli/index.md +0 -7
  189. package/docs/zh-CN/cli/message.md +1 -42
  190. package/docs/zh-CN/cli/status.md +0 -1
  191. package/docs/zh-CN/concepts/architecture.md +0 -1
  192. package/docs/zh-CN/concepts/features.md +0 -2
  193. package/docs/zh-CN/concepts/markdown-formatting.md +6 -8
  194. package/docs/zh-CN/concepts/messages.md +0 -1
  195. package/docs/zh-CN/concepts/multi-agent.md +4 -5
  196. package/docs/zh-CN/concepts/queue.md +0 -3
  197. package/docs/zh-CN/concepts/retry.md +0 -5
  198. package/docs/zh-CN/concepts/session-tool.md +0 -2
  199. package/docs/zh-CN/concepts/session.md +3 -11
  200. package/docs/zh-CN/concepts/streaming.md +0 -2
  201. package/docs/zh-CN/concepts/system-prompt.md +0 -2
  202. package/docs/zh-CN/concepts/timezone.md +0 -2
  203. package/docs/zh-CN/date-time.md +0 -1
  204. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -1
  205. package/docs/zh-CN/gateway/configuration-examples.md +0 -7
  206. package/docs/zh-CN/gateway/configuration.md +2 -50
  207. package/docs/zh-CN/gateway/heartbeat.md +0 -2
  208. package/docs/zh-CN/gateway/security/index.md +1 -6
  209. package/docs/zh-CN/gateway/troubleshooting.md +1 -14
  210. package/docs/zh-CN/help/faq.md +0 -15
  211. package/docs/zh-CN/index.md +0 -3
  212. package/docs/zh-CN/install/ansible.md +2 -3
  213. package/docs/zh-CN/install/docker.md +1 -7
  214. package/docs/zh-CN/install/fly.md +0 -14
  215. package/docs/zh-CN/install/northflank.mdx +7 -11
  216. package/docs/zh-CN/install/railway.mdx +6 -10
  217. package/docs/zh-CN/install/render.mdx +1 -2
  218. package/docs/zh-CN/pi.md +3 -5
  219. package/docs/zh-CN/platforms/digitalocean.md +0 -1
  220. package/docs/zh-CN/platforms/mac/voicewake.md +0 -1
  221. package/docs/zh-CN/providers/index.md +0 -2
  222. package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -2
  223. package/docs/zh-CN/reference/AGENTS.default.md +0 -1
  224. package/docs/zh-CN/reference/RELEASING.md +0 -1
  225. package/docs/zh-CN/reference/session-management-compaction.md +0 -1
  226. package/docs/zh-CN/reference/templates/AGENTS.md +0 -5
  227. package/docs/zh-CN/start/docs-directory.md +0 -1
  228. package/docs/zh-CN/start/getting-started.md +0 -5
  229. package/docs/zh-CN/start/hubs.md +0 -1
  230. package/docs/zh-CN/start/lore.md +0 -3
  231. package/docs/zh-CN/start/setup.md +0 -2
  232. package/docs/zh-CN/start/showcase.md +0 -2
  233. package/docs/zh-CN/start/symi.md +0 -4
  234. package/docs/zh-CN/start/wizard.md +0 -5
  235. package/docs/zh-CN/tools/agent-send.md +0 -1
  236. package/docs/zh-CN/tools/elevated.md +0 -2
  237. package/docs/zh-CN/tools/exec-approvals.md +0 -1
  238. package/docs/zh-CN/tools/index.md +0 -7
  239. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +1 -2
  240. package/docs/zh-CN/tools/reactions.md +0 -1
  241. package/docs/zh-CN/tools/slash-commands.md +0 -9
  242. package/docs/zh-CN/tts.md +0 -2
  243. package/docs/zh-CN/web/control-ui.md +0 -1
  244. package/package.json +1 -1
  245. package/dist/plugin-sdk/web-CIPJBHAU.js +0 -54
  246. package/docs/channels/discord.md +0 -998
  247. package/docs/zh-CN/channels/discord.md +0 -468
  248. package/skills/1password/SKILL.md +0 -71
  249. package/skills/1password/references/cli-examples.md +0 -29
  250. package/skills/1password/references/get-started.md +0 -17
  251. package/skills/apple-notes/SKILL.md +0 -78
  252. package/skills/apple-reminders/SKILL.md +0 -119
  253. package/skills/bear-notes/SKILL.md +0 -108
  254. package/skills/blogwatcher/SKILL.md +0 -70
  255. package/skills/blucli/SKILL.md +0 -48
  256. package/skills/bluebubbles/SKILL.md +0 -132
  257. package/skills/camsnap/SKILL.md +0 -46
  258. package/skills/canvas/SKILL.md +0 -204
  259. package/skills/connect-email/SKILL.md +0 -142
  260. package/skills/document-generation/SKILL.md +0 -83
  261. package/skills/eightctl/SKILL.md +0 -51
  262. package/skills/food-order/SKILL.md +0 -49
  263. package/skills/gemini/SKILL.md +0 -44
  264. package/skills/gh-issues/SKILL.md +0 -865
  265. package/skills/gifgrep/SKILL.md +0 -80
  266. package/skills/github/SKILL.md +0 -164
  267. package/skills/gog/SKILL.md +0 -117
  268. package/skills/goplaces/SKILL.md +0 -53
  269. package/skills/healthcheck/SKILL.md +0 -246
  270. package/skills/himalaya/SKILL.md +0 -258
  271. package/skills/himalaya/references/configuration.md +0 -184
  272. package/skills/himalaya/references/message-composition.md +0 -199
  273. package/skills/imsg/SKILL.md +0 -122
  274. package/skills/long-task/SKILL.md +0 -58
  275. package/skills/long-task/scripts/detach-task.sh +0 -187
  276. package/skills/nano-banana-pro/SKILL.md +0 -59
  277. package/skills/nano-banana-pro/scripts/generate_image.py +0 -184
  278. package/skills/nano-pdf/SKILL.md +0 -39
  279. package/skills/notion/SKILL.md +0 -173
  280. package/skills/obsidian/SKILL.md +0 -82
  281. package/skills/openai-image-gen/SKILL.md +0 -90
  282. package/skills/openai-image-gen/scripts/gen.py +0 -240
  283. package/skills/openai-whisper/SKILL.md +0 -39
  284. package/skills/openai-whisper-api/SKILL.md +0 -53
  285. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  286. package/skills/openhue/SKILL.md +0 -113
  287. package/skills/oracle/SKILL.md +0 -126
  288. package/skills/ordercli/SKILL.md +0 -79
  289. package/skills/peekaboo/SKILL.md +0 -191
  290. package/skills/reactions-extensive/SKILL.md +0 -30
  291. package/skills/reactions-minimal/SKILL.md +0 -31
  292. package/skills/safe-edit/SKILL.md +0 -51
  293. package/skills/sag/SKILL.md +0 -88
  294. package/skills/sherpa-onnx-tts/SKILL.md +0 -104
  295. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  296. package/skills/songsee/SKILL.md +0 -50
  297. package/skills/sonoscli/SKILL.md +0 -66
  298. package/skills/spotify-player/SKILL.md +0 -65
  299. package/skills/symihub/SKILL.md +0 -78
  300. package/skills/things-mac/SKILL.md +0 -87
  301. package/skills/tmux/SKILL.md +0 -153
  302. package/skills/tmux/scripts/find-sessions.sh +0 -112
  303. package/skills/tmux/scripts/wait-for-text.sh +0 -83
  304. package/skills/trello/SKILL.md +0 -96
  305. package/skills/video-frames/SKILL.md +0 -47
  306. package/skills/video-frames/scripts/frame.sh +0 -81
  307. package/skills/voice-call/SKILL.md +0 -46
  308. package/skills/wacli/SKILL.md +0 -73
  309. package/skills/weather/SKILL.md +0 -113
  310. package/skills/xurl/SKILL.md +0 -462
@@ -36,7 +36,6 @@ Outbound sends were mirrored into the _current_ agent session (tool session key)
36
36
  ## Thread/Topic Handling
37
37
 
38
38
  - Slack: replyTo/threadId -> `resolveThreadSessionKeys` (suffix).
39
- - Discord: threadId/replyTo -> `resolveThreadSessionKeys` with `useSuffix=false` to match inbound (thread channel id already scopes session).
40
39
  - Telegram: topic IDs map to `chatId:topic:<id>` via `buildTelegramGroupPeerId`.
41
40
 
42
41
  ## Extensions Covered
@@ -61,7 +60,6 @@ Outbound sends were mirrored into the _current_ agent session (tool session key)
61
60
  - `src/infra/outbound/outbound-session.test.ts`
62
61
  - Slack thread session key.
63
62
  - Telegram topic session key.
64
- - dmScope identityLinks with Discord.
65
63
  - `src/agents/tools/message-tool.test.ts`
66
64
  - Derives agentId from session key (no sessionKey passed through).
67
65
  - `src/gateway/server-methods/send.test.ts`
@@ -102,7 +102,6 @@ git commit -m "Add Symi workspace"
102
102
  - **eightctl** — Control your sleep, from the terminal.
103
103
  - **imsg** — Send, read, stream iMessage & SMS.
104
104
  - **wacli** — WhatsApp CLI: sync, search, send.
105
- - **discord** — Discord actions: react, stickers, polls. Use `user:<id>` or `channel:<id>` targets (bare numeric ids are ambiguous).
106
105
  - **gog** — Google Suite CLI: Gmail, Calendar, Drive, Contacts.
107
106
  - **spotify-player** — Terminal Spotify client to search/queue/control playback.
108
107
  - **sag** — ElevenLabs speech with mac-style say UX; streams to speakers by default.
@@ -106,7 +106,6 @@ Current npm plugin list (update as needed):
106
106
 
107
107
  - @symi/bluebubbles
108
108
  - @symi/diagnostics-otel
109
- - @symi/discord
110
109
  - @symi/feishu
111
110
  - @symi/pipeline
112
111
  - @symi/matrix
@@ -73,7 +73,6 @@ Common patterns:
73
73
 
74
74
  - Main/direct chat (per agent): `agent:<agentId>:<mainKey>` (default `main`)
75
75
  - Group: `agent:<agentId>:<channel>:group:<id>`
76
- - Room/channel (Discord/Slack): `agent:<agentId>:<channel>:channel:<id>` or `...:room:<id>`
77
76
  - Cron: `cron:<job.id>`
78
77
  - Webhook: `hook:<uuid>` (unless overridden)
79
78
 
@@ -37,7 +37,6 @@ Capture what matters. Decisions, context, things to remember. Skip the secrets u
37
37
  ### 🧠 MEMORY.md — The Human's Notes
38
38
 
39
39
  - **ONLY load in main session** (direct chats with your human)
40
- - **DO NOT load in shared contexts** (Discord, group chats, sessions with other people)
41
40
  - This is for **security** — contains personal context that shouldn't leak to strangers
42
41
  - **Read-only for you.** The human authors this file. If you think it's wrong or out of date, tell them; don't edit.
43
42
 
@@ -61,8 +60,6 @@ Capture what matters. Decisions, context, things to remember. Skip the secrets u
61
60
 
62
61
  ### 🔌 Runtime Connection State — Don't Trust Memory Files
63
62
 
64
- Memory files (MEMORY.md, memory/YYYY-MM-DD.md, memory/symi-core.md, memory/symi-beliefs.md) record **historical** observations. Connection state for channels (Outlook, Gmail, Slack, Telegram, Discord, Signal, WhatsApp, Matrix, etc.) is **runtime state** — it can change between one turn and the next without any observation being written.
65
-
66
63
  When answering "am I connected to X?" questions:
67
64
 
68
65
  - **Trust the bracketed `[Channel]` block** at the top of the system prompt. It's rebuilt every turn from the live plugin state. Examples: `[Outlook 365] Connected as …`, `[Outlook 365] Last seen connected as … but … expired`, `[Outlook 365] Not connected`.
@@ -170,8 +167,6 @@ Participate, don't dominate.
170
167
 
171
168
  ### 😊 React Like a Human!
172
169
 
173
- On platforms that support reactions (Discord, Slack), use emoji reactions naturally:
174
-
175
170
  **React when:**
176
171
 
177
172
  - You appreciate something but don't need to reply (👍, ❤️, 🙌)
@@ -193,8 +188,6 @@ Skills provide your tools. When you need one, check its `SKILL.md`. Keep local n
193
188
 
194
189
  **📝 Platform Formatting:**
195
190
 
196
- - **Discord/WhatsApp:** No markdown tables! Use bullet lists instead
197
- - **Discord links:** Wrap multiple links in `<>` to suppress embeds: `<https://example.com>`
198
191
  - **WhatsApp:** No headers — use **bold** or CAPS for emphasis
199
192
 
200
193
  ## 💓 Heartbeats - Be Proactive!
@@ -74,7 +74,6 @@ For a high-level overview, see [Onboarding Wizard](/start/wizard).
74
74
  <Step title="Channels">
75
75
  - [WhatsApp](/channels/whatsapp): optional QR login.
76
76
  - [Telegram](/channels/telegram): bot token.
77
- - [Discord](/channels/discord): bot token.
78
77
  - [Google Chat](/channels/googlechat): service account JSON + webhook audience.
79
78
  - [Mattermost](/channels/mattermost) (plugin): bot token + base URL.
80
79
  - [Signal](/channels/signal): optional `signal-cli` install + account config.
@@ -243,8 +242,6 @@ Typical fields in `~/.symi/symi.json`:
243
242
  - `agents.defaults.workspace`
244
243
  - `agents.defaults.model` / `models.providers` (if Minimax chosen)
245
244
  - `gateway.*` (mode, bind, auth, tailscale)
246
- - `channels.telegram.botToken`, `channels.discord.token`, `channels.signal.*`, `channels.imessage.*`
247
- - Channel allowlists (Slack/Discord/Matrix/Microsoft Teams) when you opt in during the prompts (names resolve to IDs when possible).
248
245
  - `skills.install.nodeManager`
249
246
  - `wizard.lastRunAt`
250
247
  - `wizard.lastRunVersion`
@@ -265,5 +262,4 @@ will prompt to install it (npm or a local path) before it can be configured.
265
262
  - Wizard overview: [Onboarding Wizard](/start/wizard)
266
263
  - macOS app onboarding: [Onboarding](/start/onboarding)
267
264
  - Config reference: [Gateway configuration](/gateway/configuration)
268
- - Providers: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](/channels/discord), [Google Chat](/channels/googlechat), [Signal](/channels/signal), [BlueBubbles](/channels/bluebubbles) (iMessage), [iMessage](/channels/imessage) (legacy)
269
265
  - Skills: [Skills](/tools/skills), [Skills config](/tools/skills-config)
@@ -83,7 +83,6 @@ If you're unsure about the risk level, just describe the impact and we'll assess
83
83
 
84
84
  - **Security vulnerabilities:** See our [Trust page](https://trust.symi.ai) for reporting instructions
85
85
  - **Threat model questions:** Open an issue on [symi/trust](https://github.com/symi/trust/issues)
86
- - **General chat:** Discord #security channel
87
86
 
88
87
  ## Recognition
89
88
 
@@ -14,4 +14,3 @@ See the [Trust page](https://trust.symi.ai) for full reporting instructions cove
14
14
  ## Contact
15
15
 
16
16
  - **Jamieson O'Reilly** ([@theonejvo](https://twitter.com/theonejvo)) - Security & Trust
17
- - Discord: #security channel
@@ -38,14 +38,13 @@ This threat model documents adversarial threats to the Symi AI agent platform an
38
38
 
39
39
  ### 1.2 Scope
40
40
 
41
- | Component | Included | Notes |
42
- | -------------------- | -------- | ------------------------------------------------ |
43
- | Symi Agent Runtime | Yes | Core agent execution, tool calls, sessions |
44
- | Gateway | Yes | Authentication, routing, channel integration |
45
- | Channel Integrations | Yes | WhatsApp, Telegram, Discord, Signal, Slack, etc. |
46
- | SymiHub Marketplace | Yes | Skill publishing, moderation, distribution |
47
- | MCP Servers | Yes | External tool providers |
48
- | User Devices | Partial | Mobile apps, desktop clients |
41
+ | Component | Included | Notes |
42
+ | ------------------- | -------- | -------------------------------------------- |
43
+ | Symi Agent Runtime | Yes | Core agent execution, tool calls, sessions |
44
+ | Gateway | Yes | Authentication, routing, channel integration |
45
+ | SymiHub Marketplace | Yes | Skill publishing, moderation, distribution |
46
+ | MCP Servers | Yes | External tool providers |
47
+ | User Devices | Partial | Mobile apps, desktop clients |
49
48
 
50
49
  ### 1.3 Out of Scope
51
50
 
@@ -61,7 +60,6 @@ Nothing is explicitly out of scope for this threat model.
61
60
  ┌─────────────────────────────────────────────────────────────────┐
62
61
  │ UNTRUSTED ZONE │
63
62
  │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
64
- │ │ WhatsApp │ │ Telegram │ │ Discord │ ... │
65
63
  │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
66
64
  │ │ │ │ │
67
65
  └─────────┼────────────────┼────────────────┼──────────────────────┘
@@ -459,7 +457,6 @@ Current patterns in `moderation.ts`:
459
457
  /(malware|stealer|phish|phishing|keylogger)/i
460
458
  /(api[-_ ]?key|token|password|private key|secret)/i
461
459
  /(wallet|seed phrase|mnemonic|crypto)/i
462
- /(discord\.gg|webhook|hooks\.slack)/i
463
460
  /(curl[^\n]+\|\s*(sh|bash))/i
464
461
  /(bit\.ly|tinyurl\.com|t\.co|goo\.gl|is\.gd)/i
465
462
  ```
@@ -37,7 +37,6 @@ For a complete map of the docs, see [Docs hubs](/start/hubs).
37
37
  - [WebChat](/web/webchat)
38
38
  - [Control UI (browser)](/web/control-ui)
39
39
  - [Telegram](/channels/telegram)
40
- - [Discord](/channels/discord)
41
40
  - [Mattermost (plugin)](/channels/mattermost)
42
41
  - [BlueBubbles (iMessage)](/channels/bluebubbles)
43
42
  - [iMessage (legacy)](/channels/imessage)
@@ -75,7 +75,6 @@ Use these hubs to discover every page, including deep dives and reference docs t
75
75
  - [Telegram](/channels/telegram)
76
76
  - [Telegram (grammY notes)](/channels/grammy)
77
77
  - [Slack](/channels/slack)
78
- - [Discord](/channels/discord)
79
78
  - [Mattermost](/channels/mattermost) (plugin)
80
79
  - [Signal](/channels/signal)
81
80
  - [BlueBubbles (iMessage)](/channels/bluebubbles)
@@ -27,8 +27,6 @@ New shell, same pipeline soul. Third time's the charm.
27
27
 
28
28
  ## The First Molt (January 27, 2026)
29
29
 
30
- At 5am, the community gathered in Discord. Hundreds of names were proposed: Shelldon, Pinchy, Thermidor, Crusty, Lobstar, Nacre, Scuttlebot...
31
-
32
30
  In the end, **Symi** won. Because molting is what pipelines do to grow. And growth was exactly what was happening.
33
31
 
34
32
  _The crustacean known as Symi had officially molted._
@@ -127,7 +125,6 @@ In just 3 hours:
127
125
  - **ELU** created incredible logos including "THE SHELL IS THE LAW" western banner
128
126
  - **Whurley** (yes, THE William Hurley, quantum computing pioneer) made ASCII art
129
127
  - **Onur** handled GitHub, first to rock the affiliate badge
130
- - **Shadow** secured Discord vanity, nuked malware
131
128
  - **The whole Shell Crew** pulled an all-nighter
132
129
 
133
130
  **The Scammer Speedrun:** Crypto grifters launched a $SYMI token on Pump.fun within MINUTES. They stole artwork that was created 20 minutes earlier. Business-verified accounts pushed scams. The audacity was almost impressive.
@@ -128,7 +128,6 @@ Use this when debugging auth or deciding what to back up:
128
128
 
129
129
  - **WhatsApp**: `~/.symi/credentials/whatsapp/<accountId>/creds.json`
130
130
  - **Telegram bot token**: config/env or `channels.telegram.tokenFile`
131
- - **Discord bot token**: config/env (token file not yet supported)
132
131
  - **Slack tokens**: config/env (`channels.slack.*`)
133
132
  - **Pairing allowlists**: `~/.symi/credentials/<channel>-allowFrom.json`
134
133
  - **Model auth profiles**: `~/.symi/agents/<agentId>/agent/auth-profiles.json`
@@ -157,6 +156,5 @@ user service (no lingering needed). See [Gateway runbook](/gateway) for the syst
157
156
 
158
157
  - [Gateway runbook](/gateway) (flags, supervision, ports)
159
158
  - [Gateway configuration](/gateway/configuration) (config schema + examples)
160
- - [Discord](/channels/discord) and [Telegram](/channels/telegram) (reply tags + replyToMode settings)
161
159
  - [Symi assistant setup](/start/symi)
162
160
  - [macOS app](/platforms/macos) (gateway lifecycle)
@@ -82,8 +82,6 @@ Full setup walkthrough (28m) by VelvetShark.
82
82
 
83
83
  [Watch on YouTube](https://www.youtube.com/watch?v=5kkIJNUGFho)
84
84
 
85
- ## 🆕 Fresh from Discord
86
-
87
85
  <CardGroup cols={2}>
88
86
 
89
87
  <Card title="PR Review → Telegram Feedback" icon="code-pull-request" href="https://x.com/i/status/2010878524543131691">
@@ -8,15 +8,12 @@ title: "Personal Assistant Setup"
8
8
 
9
9
  # Building a personal assistant with Symi
10
10
 
11
- Symi is a WhatsApp + Telegram + Discord + iMessage gateway for **Pi** agents. Plugins add Mattermost. This guide is the "personal assistant" setup: one dedicated WhatsApp number that behaves like your always-on agent.
12
-
13
11
  ## ⚠️ Safety first
14
12
 
15
13
  You’re putting an agent in a position to:
16
14
 
17
15
  - run commands on your machine (depending on your Pi tool setup)
18
16
  - read/write files in your workspace
19
- - send messages back out via WhatsApp/Telegram/Discord/Mattermost (plugin)
20
17
 
21
18
  Start conservative:
22
19
 
@@ -196,7 +193,6 @@ Symi extracts these and sends them as media alongside the text.
196
193
  ```bash
197
194
  symi status # local status (creds, sessions, queued events)
198
195
  symi status --all # full diagnosis (read-only, pasteable)
199
- symi status --deep # adds gateway health probes (Telegram + Discord)
200
196
  symi health --json # gateway health snapshot (WS)
201
197
  ```
202
198
 
@@ -19,7 +19,6 @@ Local mode (default) walks you through:
19
19
  - Model and auth setup (OpenAI Code subscription OAuth, Anthropic API key or setup token, plus MiniMax, GLM, Moonshot, and AI Gateway options)
20
20
  - Workspace location and bootstrap files
21
21
  - Gateway settings (port, bind, auth, tailscale)
22
- - Channels and providers (Telegram, WhatsApp, Discord, Google Chat, Mattermost plugin, Signal)
23
22
  - Daemon install (LaunchAgent or systemd user unit)
24
23
  - Health check
25
24
  - Skills setup
@@ -56,7 +55,6 @@ It does not install or modify anything on the remote host.
56
55
  <Step title="Channels">
57
56
  - [WhatsApp](/channels/whatsapp): optional QR login
58
57
  - [Telegram](/channels/telegram): bot token
59
- - [Discord](/channels/discord): bot token
60
58
  - [Google Chat](/channels/googlechat): service account JSON + webhook audience
61
59
  - [Mattermost](/channels/mattermost) plugin: bot token + base URL
62
60
  - [Signal](/channels/signal): optional `signal-cli` install + account config
@@ -215,8 +213,6 @@ Typical fields in `~/.symi/symi.json`:
215
213
  - `agents.defaults.workspace`
216
214
  - `agents.defaults.model` / `models.providers` (if Minimax chosen)
217
215
  - `gateway.*` (mode, bind, auth, tailscale)
218
- - `channels.telegram.botToken`, `channels.discord.token`, `channels.signal.*`, `channels.imessage.*`
219
- - Channel allowlists (Slack, Discord, Matrix, Microsoft Teams) when you opt in during prompts (names resolve to IDs when possible)
220
216
  - `skills.install.nodeManager`
221
217
  - `wizard.lastRunAt`
222
218
  - `wizard.lastRunVersion`
@@ -66,10 +66,9 @@ The wizard starts with **QuickStart** (defaults) vs **Advanced** (full control).
66
66
  (OpenAI-compatible, Anthropic-compatible, or Unknown auto-detect). Pick a default model.
67
67
  2. **Workspace** — Location for agent files (default `~/.symi/workspace`). Seeds bootstrap files.
68
68
  3. **Gateway** — Port, bind address, auth mode, Tailscale exposure.
69
- 4. **Channels** — WhatsApp, Telegram, Discord, Google Chat, Mattermost, Signal, BlueBubbles, or iMessage.
70
- 5. **Daemon** — Installs a LaunchAgent (macOS) or systemd user unit (Linux/WSL2).
71
- 6. **Health check** — Starts the Gateway and verifies it's running.
72
- 7. **Skills** — Installs recommended skills and optional dependencies.
69
+ 4. **Daemon** — Installs a LaunchAgent (macOS) or systemd user unit (Linux/WSL2).
70
+ 5. **Health check** — Starts the Gateway and verifies it's running.
71
+ 6. **Skills** — Installs recommended skills and optional dependencies.
73
72
 
74
73
  <Note>
75
74
  Re-running the wizard does **not** wipe anything unless you explicitly choose **Reset** (or pass `--reset`).
@@ -43,7 +43,6 @@ symi agent --agent ops --message "Generate report" --deliver --reply-channel sla
43
43
 
44
44
  - `--local`: run locally (requires model provider API keys in your shell)
45
45
  - `--deliver`: send the reply to the chosen channel
46
- - `--channel`: delivery channel (`whatsapp|telegram|discord|googlechat|slack|signal|imessage`, default: `whatsapp`)
47
46
  - `--reply-to`: delivery target override
48
47
  - `--reply-channel`: delivery channel override
49
48
  - `--reply-account`: delivery account id override
@@ -45,10 +45,8 @@ title: "Elevated Mode"
45
45
  ## Availability + allowlists
46
46
 
47
47
  - Feature gate: `tools.elevated.enabled` (default can be off via config even if the code supports it).
48
- - Sender allowlist: `tools.elevated.allowFrom` with per-provider allowlists (e.g. `discord`, `whatsapp`).
49
48
  - Per-agent gate: `agents.list[].tools.elevated.enabled` (optional; can only further restrict).
50
49
  - Per-agent allowlist: `agents.list[].tools.elevated.allowFrom` (optional; when set, the sender must match **both** global + per-agent allowlists).
51
- - Discord fallback: if `tools.elevated.allowFrom.discord` is omitted, the `channels.discord.allowFrom` list is used as a fallback (legacy: `channels.discord.dm.allowFrom`). Set `tools.elevated.allowFrom.discord` (even `[]`) to override. Per-agent allowlists do **not** use the fallback.
52
50
  - All gates must pass; otherwise elevated is treated as unavailable.
53
51
 
54
52
  ## Logging + status
@@ -201,7 +201,6 @@ Config:
201
201
  enabled: true,
202
202
  mode: "session", // "session" | "targets" | "both"
203
203
  agentFilter: ["main"],
204
- sessionFilter: ["discord"], // substring or regex
205
204
  targets: [
206
205
  { channel: "slack", to: "U12345678" },
207
206
  { channel: "telegram", to: "123456789" },
@@ -41,13 +41,10 @@ Profiles:
41
41
  - `messaging`: `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status`
42
42
  - `full`: no restriction (same as unset)
43
43
 
44
- Example (messaging-only by default, allow Slack + Discord tools too):
45
-
46
44
  ```json5
47
45
  {
48
46
  tools: {
49
47
  profile: "messaging",
50
- allow: ["slack", "discord"],
51
48
  },
52
49
  }
53
50
  ```
@@ -397,12 +394,9 @@ Notes:
397
394
 
398
395
  ### `message`
399
396
 
400
- Send messages and channel actions across Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.
401
-
402
397
  Core actions:
403
398
 
404
399
  - `send` (text + optional media; MS Teams also supports `card` for Adaptive Cards)
405
- - `poll` (WhatsApp/Discord/MS Teams polls)
406
400
  - `react` / `reactions` / `read` / `edit` / `delete`
407
401
  - `pin` / `unpin` / `list-pins`
408
402
  - `permissions`
@@ -420,7 +414,6 @@ Core actions:
420
414
  Notes:
421
415
 
422
416
  - `send` routes WhatsApp via the Gateway; other channels go direct.
423
- - `poll` uses the Gateway for WhatsApp and MS Teams; Discord polls go direct.
424
417
  - When a message tool call is bound to an active chat session, sends are constrained to that session’s target to avoid cross-context leaks.
425
418
 
426
419
  ### `cron`
@@ -110,8 +110,7 @@ For debugging “why is this blocked?”, see [Sandbox vs Tool Policy vs Elevate
110
110
  "workspaceRoot": "/tmp/work-sandboxes"
111
111
  },
112
112
  "tools": {
113
- "allow": ["read", "write", "apply_patch", "exec"],
114
- "deny": ["browser", "gateway", "discord"]
113
+ "allow": ["read", "write", "apply_patch", "exec"]
115
114
  }
116
115
  }
117
116
  ]
@@ -15,7 +15,6 @@ Shared reaction semantics across channels:
15
15
 
16
16
  Channel notes:
17
17
 
18
- - **Discord/Slack**: empty `emoji` removes all of the bot's reactions on the message; `remove: true` removes just that emoji.
19
18
  - **Google Chat**: empty `emoji` removes the app's reactions on the message; `remove: true` removes just that emoji.
20
19
  - **Telegram**: empty `emoji` removes the bot's reactions; `remove: true` also removes reactions but still requires a non-empty `emoji` for tool validation.
21
20
  - **WhatsApp**: empty `emoji` removes the bot reaction; `remove: true` maps to empty emoji (still requires `emoji`).
@@ -40,7 +40,6 @@ They run immediately, are stripped before the model sees the message, and the re
40
40
  restart: false,
41
41
  allowFrom: {
42
42
  "*": ["user1"],
43
- discord: ["user:123"],
44
43
  },
45
44
  useAccessGroups: true,
46
45
  },
@@ -50,12 +49,7 @@ They run immediately, are stripped before the model sees the message, and the re
50
49
  - `commands.text` (default `true`) enables parsing `/...` in chat messages.
51
50
  - On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), text commands still work even if you set this to `false`.
52
51
  - `commands.native` (default `"auto"`) registers native commands.
53
- - Auto: on for Discord/Telegram; off for Slack (until you add slash commands); ignored for providers without native support.
54
- - Set `channels.discord.commands.native`, `channels.telegram.commands.native`, or `channels.slack.commands.native` to override per provider (bool or `"auto"`).
55
- - `false` clears previously registered commands on Discord/Telegram at startup. Slack commands are managed in the Slack app and are not removed automatically.
56
52
  - `commands.nativeSkills` (default `"auto"`) registers **skill** commands natively when supported.
57
- - Auto: on for Discord/Telegram; off for Slack (Slack requires creating a slash command per skill).
58
- - Set `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills`, or `channels.slack.commands.nativeSkills` to override per provider (bool or `"auto"`).
59
53
  - `commands.bash` (default `false`) enables `! <cmd>` to run host shell commands (`/bash <cmd>` is an alias; requires `tools.elevated` allowlists).
60
54
  - `commands.bashForegroundMs` (default `2000`) controls how long bash waits before switching to background mode (`0` backgrounds immediately).
61
55
  - `commands.config` (default `false`) enables `/config` (reads/writes `symi.json`).
@@ -81,8 +75,6 @@ Text + native (when enabled):
81
75
  - `/session ttl <duration|off>` (manage session-level settings, such as TTL)
82
76
  - `/subagents list|kill|log|info|send|steer|spawn` (inspect, control, or spawn sub-agent runs for the current session)
83
77
  - `/agents` (list thread-bound agents for this session)
84
- - `/focus <target>` (Discord: bind this thread, or a new thread, to a session/subagent target)
85
- - `/unfocus` (Discord: remove the current thread binding)
86
78
  - `/kill <id|#|all>` (immediately abort one or all running sub-agents for this session; no confirmation message)
87
79
  - `/steer <id|#> <message>` (steer a running sub-agent immediately: in-run when possible, otherwise abort current work and restart on the steer message)
88
80
  - `/tell <id|#> <message>` (alias for `/steer`)
@@ -90,11 +82,9 @@ Text + native (when enabled):
90
82
  - `/debug show|set|unset|reset` (runtime overrides, owner-only; requires `commands.debug: true`)
91
83
  - `/usage off|tokens|full|cost` (per-response usage footer or local cost summary)
92
84
  - `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (control TTS; see [/tts](/tts))
93
- - Discord: native command is `/voice` (Discord reserves `/tts`); text `/tts` still works.
94
85
  - `/stop`
95
86
  - `/restart`
96
87
  - `/dock-telegram` (alias: `/dock_telegram`) (switch replies to Telegram)
97
- - `/dock-discord` (alias: `/dock_discord`) (switch replies to Discord)
98
88
  - `/dock-slack` (alias: `/dock_slack`) (switch replies to Slack)
99
89
  - `/activation mention|always` (groups only)
100
90
  - `/send on|off|inherit` (owner-only)
@@ -123,7 +113,6 @@ Notes:
123
113
  - `/allowlist add|remove` requires `commands.config=true` and honors channel `configWrites`.
124
114
  - `/usage` controls the per-response usage footer; `/usage cost` prints a local cost summary from Symi session logs.
125
115
  - `/restart` is enabled by default; set `commands.restart: false` to disable it.
126
- - Discord-only native command: `/vc join|leave|status` controls voice channels (requires `channels.discord.voice` and native commands; not available as text).
127
116
  - `/verbose` is meant for debugging and extra visibility; keep it **off** in normal use.
128
117
  - `/reasoning` (and `/verbose`) are risky in group settings: they may reveal internal reasoning or tool output you did not intend to expose. Prefer leaving them off, especially in group chats.
129
118
  - **Fast path:** command-only messages from allowlisted senders are handled immediately (bypass queue + model).
@@ -137,7 +126,6 @@ Notes:
137
126
  - By default, skill commands are forwarded to the model as a normal request.
138
127
  - Skills may optionally declare `command-dispatch: tool` to route the command directly to a tool (deterministic, no model).
139
128
  - Example: `/prose` (OpenProse plugin) — see [OpenProse](/prose).
140
- - **Native command arguments:** Discord uses autocomplete for dynamic options (and button menus when you omit required args). Telegram and Slack show a button menu when a command supports choices and you omit the arg.
141
129
 
142
130
  ## Usage surfaces (what shows where)
143
131
 
@@ -163,7 +151,6 @@ Examples:
163
151
  Notes:
164
152
 
165
153
  - `/model` and `/model list` show a compact, numbered picker (model family + available providers).
166
- - On Discord, `/model` and `/models` open an interactive picker with provider and model dropdowns plus a Submit step.
167
154
  - `/model <#>` selects from that picker (and prefers the current provider when possible).
168
155
  - `/model status` shows the detailed view, including configured provider endpoint (`baseUrl`) and API mode (`api`) when available.
169
156
 
@@ -209,7 +196,6 @@ Notes:
209
196
 
210
197
  - **Text commands** run in the normal chat session (DMs share `main`, groups have their own session).
211
198
  - **Native commands** use isolated sessions:
212
- - Discord: `agent:<agentId>:discord:slash:<userId>`
213
199
  - Slack: `agent:<agentId>:slack:slash:<userId>` (prefix configurable via `channels.slack.slashCommand.sessionPrefix`)
214
200
  - Telegram: `telegram:slash:<userId>` (targets the chat session via `CommandTargetSessionKey`)
215
201
  - **`/stop`** targets the active chat session so it can abort the current run.
@@ -112,7 +112,6 @@ Reporting and moderation:
112
112
  - Moderators can view hidden skills, unhide them, delete them, or ban users.
113
113
  - Abusing the report feature can result in account bans.
114
114
 
115
- Interested in becoming a moderator? Ask in the Symi Discord and contact a
116
115
  moderator or maintainer.
117
116
 
118
117
  ## CLI commands and parameters
package/docs/tts.md CHANGED
@@ -358,7 +358,6 @@ Reply -> TTS enabled?
358
358
  There is a single command: `/tts`.
359
359
  See [Slash commands](/tools/slash-commands) for enablement details.
360
360
 
361
- Discord note: `/tts` is a built-in Discord command, so Symi registers
362
361
  `/voice` as the native command there. Text `/tts ...` still works.
363
362
 
364
363
  ```
@@ -64,7 +64,6 @@ you revoke it with `symi devices revoke --device <id> --role <role>`. See
64
64
 
65
65
  - Chat with the model via Gateway WS (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`)
66
66
  - Stream tool calls + live tool output cards in Chat (agent events)
67
- - Channels: WhatsApp/Telegram/Discord/Slack + plugin channels (Mattermost, etc.) status + QR login + per-channel config (`channels.status`, `web.login.*`, `config.patch`)
68
67
  - Instances: presence list + refresh (`system-presence`)
69
68
  - Sessions: list + per-session thinking/verbose overrides (`sessions.list`, `sessions.patch`)
70
69
  - Cron jobs: list/add/run/enable/disable + run history (`cron.*`)
@@ -173,7 +173,6 @@ Cron 表达式使用 `croner`。如果省略时区,将使用 Gateway网关主
173
173
  隔离任务可以通过顶层 `delivery` 配置投递输出:
174
174
 
175
175
  - `delivery.mode`:`announce`(投递摘要)或 `none`
176
- - `delivery.channel`:`whatsapp` / `telegram` / `discord` / `slack` / `mattermost`(插件)/ `signal` / `imessage` / `last`
177
176
  - `delivery.to`:渠道特定的接收目标
178
177
  - `delivery.bestEffort`:投递失败时避免任务失败
179
178
 
@@ -183,7 +182,6 @@ Cron 表达式使用 `croner`。如果省略时区,将使用 Gateway网关主
183
182
 
184
183
  目标格式提醒:
185
184
 
186
- - Slack/Discord/Mattermost(插件)目标应使用明确前缀(例如 `channel:<id>`、`user:<id>`)以避免歧义。
187
185
  - Telegram 主题应使用 `:topic:` 格式(见下文)。
188
186
 
189
187
  #### Telegram 投递目标(主题/论坛帖子)
@@ -18,7 +18,6 @@ x-i18n:
18
18
  ## 支持的渠道
19
19
 
20
20
  - WhatsApp(Web 渠道)
21
- - Discord
22
21
  - MS Teams(Adaptive Cards)
23
22
 
24
23
  ## CLI
@@ -30,10 +29,7 @@ symi message poll --target +15555550123 \
30
29
  symi message poll --target 123456789@g.us \
31
30
  --poll-question "Meeting time?" --poll-option "10am" --poll-option "2pm" --poll-option "4pm" --poll-multi
32
31
 
33
- # Discord
34
- symi message poll --channel discord --target channel:123456789 \
35
32
  --poll-question "Snack?" --poll-option "Pizza" --poll-option "Sushi"
36
- symi message poll --channel discord --target channel:123456789 \
37
33
  --poll-question "Plan?" --poll-option "A" --poll-option "B" --poll-duration-hours 48
38
34
 
39
35
  # MS Teams
@@ -43,9 +39,7 @@ symi message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
43
39
 
44
40
  选项:
45
41
 
46
- - `--channel`:`whatsapp`(默认)、`discord` 或 `msteams`
47
42
  - `--poll-multi`:允许选择多个选项
48
- - `--poll-duration-hours`:仅限 Discord(省略时默认为 24)
49
43
 
50
44
  ## Gateway 网关 RPC
51
45
 
@@ -64,13 +58,11 @@ symi message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
64
58
  ## 渠道差异
65
59
 
66
60
  - WhatsApp:2-12 个选项,`maxSelections` 必须在选项数量范围内,忽略 `durationHours`。
67
- - Discord:2-10 个选项,`durationHours` 限制在 1-768 小时之间(默认 24)。`maxSelections > 1` 启用多选;Discord 不支持严格的选择数量限制。
68
61
  - MS Teams:Adaptive Card 投票(由 Symi 管理)。无原生投票 API;`durationHours` 被忽略。
69
62
 
70
63
  ## 智能体工具(Message)
71
64
 
72
65
  使用 `message` 工具的 `poll` 操作(`to`、`pollQuestion`、`pollOption`,可选 `pollMulti`、`pollDurationHours`、`channel`)。
73
66
 
74
- 注意:Discord 没有"恰好选择 N 个"模式;`pollMulti` 映射为多选。
75
67
  Teams 投票以 Adaptive Cards 形式渲染,需要 Gateway 网关保持在线
76
68
  以将投票记录到 `~/.symi/msteams-polls.json`。
@@ -84,8 +84,6 @@ Gateway 网关可以暴露一个小型 HTTP webhook 端点用于外部触发。
84
84
  - `sessionKey` 可选(字符串):用于标识智能体会话的键。默认为随机的 `hook:<uuid>`。使用一致的键可以在 hook 上下文中进行多轮对话。
85
85
  - `wakeMode` 可选(`now` | `next-heartbeat`):是否立即触发心跳(默认 `now`)或等待下一次定期检查。
86
86
  - `deliver` 可选(布尔值):如果为 `true`,智能体的响应将发送到消息渠道。默认为 `true`。仅为心跳确认的响应会自动跳过。
87
- - `channel` 可选(字符串):用于投递的消息渠道。可选值:`last`、`whatsapp`、`telegram`、`discord`、`slack`、`mattermost`(插件)、`signal`、`imessage`、`msteams`。默认为 `last`。
88
- - `to` 可选(字符串):渠道的接收者标识符(例如 WhatsApp/Signal 的电话号码、Telegram 的聊天 ID、Discord/Slack/Mattermost(插件)的频道 ID、MS Teams 的会话 ID)。默认为主会话中的最后一个接收者。
89
87
  - `model` 可选(字符串):模型覆盖(例如 `anthropic/claude-3-5-sonnet` 或别名)。如果有限制,必须在允许的模型列表中。
90
88
  - `thinking` 可选(字符串):思考级别覆盖(例如 `low`、`medium`、`high`)。
91
89
  - `timeoutSeconds` 可选(数字):智能体运行的最大持续时间(秒)。
@@ -285,7 +285,6 @@ Result: Agent A and C respond, Agent B logs error
285
285
 
286
286
  - ✅ WhatsApp(已实现)
287
287
  - 🚧 Telegram(计划中)
288
- - 🚧 Discord(计划中)
289
288
  - 🚧 Slack(计划中)
290
289
 
291
290
  ### 路由
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  read_when:
3
3
  - 更改渠道路由或收件箱行为
4
- summary: 每个渠道(WhatsApp、Telegram、Discord、Slack)的路由规则及共享上下文
5
4
  title: 渠道路由
6
5
  x-i18n:
7
6
  generated_at: "2026-02-01T20:22:21Z"
@@ -18,7 +17,6 @@ Symi 将回复**路由回消息来源的渠道**。模型不会选择渠道;
18
17
 
19
18
  ## 关键术语
20
19
 
21
- - **渠道**:`whatsapp`、`telegram`、`discord`、`slack`、`signal`、`imessage`、`webchat`。
22
20
  - **AccountId**:每个渠道的账户实例(在支持的情况下)。
23
21
  - **AgentId**:隔离的工作区 + 会话存储("大脑")。
24
22
  - **SessionKey**:用于存储上下文和控制并发的桶键。
@@ -36,24 +34,21 @@ Symi 将回复**路由回消息来源的渠道**。模型不会选择渠道;
36
34
 
37
35
  线程:
38
36
 
39
- - Slack/Discord 线程会在基础键后追加 `:thread:<threadId>`。
40
37
  - Telegram 论坛主题在群组键中嵌入 `:topic:<topicId>`。
41
38
 
42
39
  示例:
43
40
 
44
41
  - `agent:main:telegram:group:-1001234567890:topic:42`
45
- - `agent:main:discord:channel:123456:thread:987654`
46
42
 
47
43
  ## 路由规则(如何选择智能体)
48
44
 
49
45
  路由为每条入站消息选择**一个智能体**:
50
46
 
51
47
  1. **精确对端匹配**(`bindings` 中的 `peer.kind` + `peer.id`)。
52
- 2. **Guild 匹配**(Discord)通过 `guildId`。
53
- 3. **Team 匹配**(Slack)通过 `teamId`。
54
- 4. **账户匹配**(渠道上的 `accountId`)。
55
- 5. **渠道匹配**(该渠道上的任意账户)。
56
- 6. **默认智能体**(`agents.list[].default`,否则取列表第一项,兜底为 `main`)。
48
+ 2. **Team 匹配**(Slack)通过 `teamId`。
49
+ 3. **账户匹配**(渠道上的 `accountId`)。
50
+ 4. **渠道匹配**(该渠道上的任意账户)。
51
+ 5. **默认智能体**(`agents.list[].default`,否则取列表第一项,兜底为 `main`)。
57
52
 
58
53
  匹配到的智能体决定使用哪个工作区和会话存储。
59
54
 
@@ -16,8 +16,6 @@ x-i18n:
16
16
 
17
17
  目标:让 Symi 留在 WhatsApp 群组中,仅在被提及时唤醒,并将该对话线程与个人私信会话分开。
18
18
 
19
- 注意:`agents.list[].groupChat.mentionPatterns` 现在也被 Telegram/Discord/Slack/iMessage 使用;本文档重点介绍 WhatsApp 特定的行为。对于多智能体设置,为每个智能体设置 `agents.list[].groupChat.mentionPatterns`(或使用 `messages.groupChat.mentionPatterns` 作为全局回退)。
20
-
21
19
  ## 已实现的功能(2025-12-03)
22
20
 
23
21
  - 激活模式:`mention`(默认)或 `always`。`mention` 需要被提及(通过 `mentionedJids` 的真实 WhatsApp @提及、正则表达式模式,或文本中任意位置的机器人 E.164 号码)。`always` 会在每条消息时唤醒智能体,但它应该只在能提供有意义价值时才回复;否则返回静默令牌 `NO_REPLY`。默认值可在配置中设置(`channels.whatsapp.groups`),并可通过 `/activation` 为每个群组单独覆盖。当设置了 `channels.whatsapp.groups` 时,它同时充当群组允许列表(包含 `"*"` 以允许所有群组)。