@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.
- package/dist/{audio-preflight-CBDFctZN.js → audio-preflight-BfmZbg4Y.js} +4 -4
- package/dist/{audio-preflight-gsZSpG-6.js → audio-preflight-DcuC-liM.js} +4 -4
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +8 -8
- package/dist/bundled/session-memory/handler.js +7 -7
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-nPMY1XTJ.js → chrome-Bo7cbvFK.js} +5 -5
- package/dist/{chrome-BjVab8gM.js → chrome-DYp18Q0t.js} +5 -5
- package/dist/{deliver-D-QFqm31.js → deliver-ChSIbiMM.js} +1 -1
- package/dist/{deliver-B4-bcot9.js → deliver-DEgRQM4J.js} +1 -1
- package/dist/extensionAPI.js +7 -7
- package/dist/{image-CDwtQjmt.js → image-Bx-hvoNJ.js} +1 -1
- package/dist/{image-CcS-vzTA.js → image-CQl_mjWk.js} +1 -1
- package/dist/llm-slug-generator.js +7 -7
- package/dist/{manager-BnEdHzmO.js → manager-D_pn0urG.js} +1 -1
- package/dist/{manager-09r0qPze.js → manager-YQxK2t0C.js} +1 -1
- package/dist/{pi-embedded-CWsY69-4.js → pi-embedded-CLw_ZzEZ.js} +16 -16
- package/dist/{pi-embedded-helpers-BBMy-lqr.js → pi-embedded-helpers-B5I53aw6.js} +4 -4
- package/dist/{pi-embedded-helpers-ChEYbgVj.js → pi-embedded-helpers-sUAEIC9X.js} +4 -4
- package/dist/plugin-sdk/{accounts-BfyWsC_i.js → accounts-CWFytwbR.js} +3 -3
- package/dist/plugin-sdk/{active-listener-DcJW7xAT.js → active-listener-BkZ4jHrL.js} +2 -2
- package/dist/plugin-sdk/{agent-scope-ChbGV6of.js → agent-scope-C9gfY_Gk.js} +2 -2
- package/dist/plugin-sdk/{audio-preflight-D3GtNLqW.js → audio-preflight-HKbdzXLZ.js} +21 -21
- package/dist/plugin-sdk/{bindings-CN2Qmefj.js → bindings-BaKIqPPy.js} +2 -2
- package/dist/plugin-sdk/{channel-web-DTyqujjA.js → channel-web-D5nWiTH1.js} +18 -18
- package/dist/plugin-sdk/{chrome-BKzAKr3K.js → chrome-klTSnz-9.js} +3 -3
- package/dist/plugin-sdk/{chunk-DhDkBujV.js → chunk-BbrYSny_.js} +1 -1
- package/dist/plugin-sdk/{command-format-CVrYFyZS.js → command-format-BN6tyZt6.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-17yfZkHZ.js → commands-registry-CTzKKtY6.js} +4 -4
- package/dist/plugin-sdk/{config-7wk65zKC.js → config-Crv2qEdJ.js} +9 -9
- package/dist/plugin-sdk/{consolidate-exbAW0ml.js → consolidate-DT1QH65Q.js} +2 -2
- package/dist/plugin-sdk/{deliver-TxAcw7J5.js → deliver-7rOvAlrc.js} +12 -12
- package/dist/plugin-sdk/{diagnostic-Debx4frd.js → diagnostic-0nsxhWp7.js} +1 -1
- package/dist/plugin-sdk/{fs-safe-wBYbAkJF.js → fs-safe-DfWYBeWF.js} +1 -1
- package/dist/plugin-sdk/{gemini-auth-7U2pm2Ky.js → gemini-auth-C0N0_u49.js} +1 -1
- package/dist/plugin-sdk/{image-BtDVmYA5.js → image-WOSl2apK.js} +4 -4
- package/dist/plugin-sdk/index.js +43 -43
- package/dist/plugin-sdk/{ir-CKMvRrGW.js → ir-9J84MTls.js} +4 -4
- package/dist/plugin-sdk/{local-roots-c_gaPs01.js → local-roots-OLRDbvyY.js} +3 -3
- package/dist/plugin-sdk/{login-DUym1Jy0.js → login-C7x4q0i2.js} +7 -7
- package/dist/plugin-sdk/{login-qr-B-WBdvrX.js → login-qr-Dv5_MoAW.js} +9 -9
- package/dist/plugin-sdk/{manager-B71SCzos.js → manager-C83tK17x.js} +8 -8
- package/dist/plugin-sdk/{manifest-registry-Dnic6Chh.js → manifest-registry-CJMV-PI7.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-Dur7OTlM.js → markdown-tables-DXNKz5y_.js} +1 -1
- package/dist/plugin-sdk/{message-channel-BrAhJJV_.js → message-channel-aGy1HbQQ.js} +1 -1
- package/dist/plugin-sdk/{model-selection-B9qaVQSJ.js → model-selection-C-3-tpe7.js} +4 -4
- package/dist/plugin-sdk/{outbound-DB1wDM8b.js → outbound-DquCeSy5.js} +6 -6
- package/dist/plugin-sdk/{pi-auth-json-ZO118hoy.js → pi-auth-json-D9PDCXGn.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-s_U0Un7j.js → pi-embedded-helpers-D3ygfH7l.js} +16 -16
- package/dist/plugin-sdk/{plugins-DF81oSaI.js → plugins-DOwnSg9D.js} +4 -4
- package/dist/plugin-sdk/{pw-ai-CTwP02uv.js → pw-ai-rlengLjb.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-CBaSGant.js → qmd-manager-BzxFjRFa.js} +4 -4
- package/dist/plugin-sdk/{registry-CZVURNhF.js → registry-5iFfixlB.js} +2 -2
- package/dist/plugin-sdk/{replies-hwRbkU3z.js → replies-BXOzO_H5.js} +7 -7
- package/dist/plugin-sdk/{reply-prefix-CaXmzZlx.js → reply-prefix-INAKTqCU.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-fxVSOBmk.js → resolve-outbound-target-DvbxHtqp.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-ClCyiOeu.js → resolve-route-URXlY3AK.js} +3 -3
- package/dist/plugin-sdk/{runner-Cq5jvwQ7.js → runner-Bv0_DWoH.js} +9 -9
- package/dist/plugin-sdk/{session-B_TkB65Y.js → session-C3r8l7ou.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-0LF9HTGr.js → skill-commands-KjLUGIdZ.js} +5 -5
- package/dist/plugin-sdk/{skills-BIT_O7J0.js → skills-BrsD4L5c.js} +7 -7
- package/dist/plugin-sdk/{sqlite-Bx5Y5U5X.js → sqlite-CjW7ME1H.js} +1 -1
- package/dist/plugin-sdk/{subsystem-CXqYeDy-.js → subsystem-DcOg1xJr.js} +1 -1
- package/dist/plugin-sdk/{synthesis-DtsYAj1E.js → synthesis-CY7YAasV.js} +38 -38
- package/dist/plugin-sdk/{target-errors-B8mokOeH.js → target-errors-BVWJGWFq.js} +2 -2
- package/dist/plugin-sdk/{thinking-Ca0DhqzO.js → thinking-CtsTDPOi.js} +3 -3
- package/dist/plugin-sdk/{tokens-CvlONEqh.js → tokens-8lqOTZCB.js} +1 -1
- package/dist/plugin-sdk/{tool-images-DpBaWEHT.js → tool-images-Cl_rGIUZ.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-BOvUFa0f.js → tool-loop-detection-Da4WUT_P.js} +2 -2
- package/dist/plugin-sdk/{unified-runner-CnM7lyNd.js → unified-runner-nwMnsZyj.js} +60 -60
- package/dist/plugin-sdk/web-BlweOZDp.js +54 -0
- package/dist/plugin-sdk/{whatsapp-actions-CvnfsFJm.js → whatsapp-actions-DpfaGYs7.js} +21 -21
- package/dist/{pw-ai-BW8_KeDf.js → pw-ai-BqxJG-Wh.js} +1 -1
- package/dist/{pw-ai-j9IE1K0-.js → pw-ai-C-NSGye0.js} +1 -1
- package/dist/{runner-8ALr2UII.js → runner-COGFTeDw.js} +1 -1
- package/dist/{runner-C4-9kFdR.js → runner-DhCi2lT1.js} +1 -1
- package/dist/{synthesis-Cph3LhA1.js → synthesis-CXZu24Vx.js} +7 -7
- package/dist/{synthesis-Cus0A2dL.js → synthesis-DrPxcMlQ.js} +7 -7
- package/dist/{unified-runner-CX80YMTk.js → unified-runner-iByUazvW.js} +16 -16
- package/dist/{web-ChozvJ7I.js → web-EsMQBIYf.js} +7 -7
- package/dist/{web-DFlsbXmQ.js → web-PPg5y6xI.js} +7 -7
- package/docs/.i18n/zh-CN.tm.jsonl +0 -20
- package/docs/automation/cron-jobs.md +0 -2
- package/docs/automation/hooks.md +0 -2
- package/docs/automation/poll.md +0 -8
- package/docs/automation/webhook.md +0 -2
- package/docs/capabilities.md +0 -2
- package/docs/channels/broadcast-groups.md +0 -1
- package/docs/channels/channel-routing.md +4 -10
- package/docs/channels/group-messages.md +0 -2
- package/docs/channels/groups.md +0 -10
- package/docs/channels/index.md +0 -1
- package/docs/channels/matrix.md +0 -2
- package/docs/channels/msteams.md +0 -2
- package/docs/channels/pairing.md +0 -3
- package/docs/channels/signal.md +0 -2
- package/docs/channels/troubleshooting.md +0 -7
- package/docs/cli/channels.md +0 -6
- package/docs/cli/configure.md +0 -1
- package/docs/cli/directory.md +0 -1
- package/docs/cli/index.md +0 -7
- package/docs/cli/message.md +1 -47
- package/docs/cli/status.md +0 -1
- package/docs/concepts/architecture.md +0 -1
- package/docs/concepts/features.md +0 -2
- package/docs/concepts/markdown-formatting.md +6 -8
- package/docs/concepts/memory.md +0 -4
- package/docs/concepts/messages.md +0 -1
- package/docs/concepts/models.md +0 -1
- package/docs/concepts/multi-agent.md +4 -19
- package/docs/concepts/queue.md +0 -3
- package/docs/concepts/retry.md +0 -5
- package/docs/concepts/session-tool.md +0 -2
- package/docs/concepts/session.md +2 -9
- package/docs/concepts/streaming.md +0 -2
- package/docs/concepts/system-prompt.md +0 -1
- package/docs/concepts/timezone.md +0 -1
- package/docs/date-time.md +0 -1
- package/docs/docs.json +2 -11
- package/docs/experiments/plans/cron-add-hardening.md +0 -1
- package/docs/experiments/plans/session-binding-channel-agnostic.md +2 -23
- package/docs/experiments/plans/thread-bound-subagents.md +7 -64
- package/docs/gateway/configuration-examples.md +0 -10
- package/docs/gateway/configuration-reference.md +22 -47
- package/docs/gateway/configuration.md +0 -3
- package/docs/gateway/heartbeat.md +0 -2
- package/docs/gateway/security/index.md +1 -6
- package/docs/gateway/troubleshooting.md +0 -1
- package/docs/help/faq.md +0 -13
- package/docs/help/troubleshooting.md +0 -1
- package/docs/index.md +0 -6
- package/docs/install/ansible.md +2 -3
- package/docs/install/docker.md +1 -7
- package/docs/install/fly.md +0 -14
- package/docs/install/northflank.mdx +7 -11
- package/docs/install/railway.mdx +6 -10
- package/docs/install/render.mdx +1 -2
- package/docs/ja-JP/index.md +0 -3
- package/docs/pi.md +3 -5
- package/docs/platforms/digitalocean.md +0 -1
- package/docs/platforms/mac/voicewake.md +0 -1
- package/docs/providers/index.md +0 -2
- package/docs/refactor/outbound-session-mirroring.md +0 -2
- package/docs/reference/AGENTS.default.md +0 -1
- package/docs/reference/RELEASING.md +0 -1
- package/docs/reference/session-management-compaction.md +0 -1
- package/docs/reference/templates/AGENTS.md +0 -7
- package/docs/reference/wizard.md +0 -4
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -1
- package/docs/security/README.md +0 -1
- package/docs/security/THREAT-MODEL-ATLAS.md +7 -10
- package/docs/start/docs-directory.md +0 -1
- package/docs/start/hubs.md +0 -1
- package/docs/start/lore.md +0 -3
- package/docs/start/setup.md +0 -2
- package/docs/start/showcase.md +0 -2
- package/docs/start/symi.md +0 -4
- package/docs/start/wizard-cli-reference.md +0 -4
- package/docs/start/wizard.md +3 -4
- package/docs/tools/agent-send.md +0 -1
- package/docs/tools/elevated.md +0 -2
- package/docs/tools/exec-approvals.md +0 -1
- package/docs/tools/index.md +0 -7
- package/docs/tools/multi-agent-sandbox-tools.md +1 -2
- package/docs/tools/reactions.md +0 -1
- package/docs/tools/slash-commands.md +0 -14
- package/docs/tools/symihub.md +0 -1
- package/docs/tts.md +0 -1
- package/docs/web/control-ui.md +0 -1
- package/docs/zh-CN/automation/cron-jobs.md +0 -2
- package/docs/zh-CN/automation/poll.md +0 -8
- package/docs/zh-CN/automation/webhook.md +0 -2
- package/docs/zh-CN/channels/broadcast-groups.md +0 -1
- package/docs/zh-CN/channels/channel-routing.md +4 -9
- package/docs/zh-CN/channels/group-messages.md +0 -2
- package/docs/zh-CN/channels/groups.md +0 -10
- package/docs/zh-CN/channels/imessage.md +0 -2
- package/docs/zh-CN/channels/index.md +0 -1
- package/docs/zh-CN/channels/msteams.md +0 -2
- package/docs/zh-CN/channels/pairing.md +0 -3
- package/docs/zh-CN/channels/signal.md +0 -2
- package/docs/zh-CN/channels/slack.md +0 -2
- package/docs/zh-CN/channels/telegram.md +0 -3
- package/docs/zh-CN/channels/troubleshooting.md +0 -2
- package/docs/zh-CN/cli/channels.md +0 -6
- package/docs/zh-CN/cli/configure.md +0 -1
- package/docs/zh-CN/cli/directory.md +0 -1
- package/docs/zh-CN/cli/index.md +0 -7
- package/docs/zh-CN/cli/message.md +1 -42
- package/docs/zh-CN/cli/status.md +0 -1
- package/docs/zh-CN/concepts/architecture.md +0 -1
- package/docs/zh-CN/concepts/features.md +0 -2
- package/docs/zh-CN/concepts/markdown-formatting.md +6 -8
- package/docs/zh-CN/concepts/messages.md +0 -1
- package/docs/zh-CN/concepts/multi-agent.md +4 -5
- package/docs/zh-CN/concepts/queue.md +0 -3
- package/docs/zh-CN/concepts/retry.md +0 -5
- package/docs/zh-CN/concepts/session-tool.md +0 -2
- package/docs/zh-CN/concepts/session.md +3 -11
- package/docs/zh-CN/concepts/streaming.md +0 -2
- package/docs/zh-CN/concepts/system-prompt.md +0 -2
- package/docs/zh-CN/concepts/timezone.md +0 -2
- package/docs/zh-CN/date-time.md +0 -1
- package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -1
- package/docs/zh-CN/gateway/configuration-examples.md +0 -7
- package/docs/zh-CN/gateway/configuration.md +2 -50
- package/docs/zh-CN/gateway/heartbeat.md +0 -2
- package/docs/zh-CN/gateway/security/index.md +1 -6
- package/docs/zh-CN/gateway/troubleshooting.md +1 -14
- package/docs/zh-CN/help/faq.md +0 -15
- package/docs/zh-CN/index.md +0 -3
- package/docs/zh-CN/install/ansible.md +2 -3
- package/docs/zh-CN/install/docker.md +1 -7
- package/docs/zh-CN/install/fly.md +0 -14
- package/docs/zh-CN/install/northflank.mdx +7 -11
- package/docs/zh-CN/install/railway.mdx +6 -10
- package/docs/zh-CN/install/render.mdx +1 -2
- package/docs/zh-CN/pi.md +3 -5
- package/docs/zh-CN/platforms/digitalocean.md +0 -1
- package/docs/zh-CN/platforms/mac/voicewake.md +0 -1
- package/docs/zh-CN/providers/index.md +0 -2
- package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -2
- package/docs/zh-CN/reference/AGENTS.default.md +0 -1
- package/docs/zh-CN/reference/RELEASING.md +0 -1
- package/docs/zh-CN/reference/session-management-compaction.md +0 -1
- package/docs/zh-CN/reference/templates/AGENTS.md +0 -5
- package/docs/zh-CN/start/docs-directory.md +0 -1
- package/docs/zh-CN/start/getting-started.md +0 -5
- package/docs/zh-CN/start/hubs.md +0 -1
- package/docs/zh-CN/start/lore.md +0 -3
- package/docs/zh-CN/start/setup.md +0 -2
- package/docs/zh-CN/start/showcase.md +0 -2
- package/docs/zh-CN/start/symi.md +0 -4
- package/docs/zh-CN/start/wizard.md +0 -5
- package/docs/zh-CN/tools/agent-send.md +0 -1
- package/docs/zh-CN/tools/elevated.md +0 -2
- package/docs/zh-CN/tools/exec-approvals.md +0 -1
- package/docs/zh-CN/tools/index.md +0 -7
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +1 -2
- package/docs/zh-CN/tools/reactions.md +0 -1
- package/docs/zh-CN/tools/slash-commands.md +0 -9
- package/docs/zh-CN/tts.md +0 -2
- package/docs/zh-CN/web/control-ui.md +0 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/web-CIPJBHAU.js +0 -54
- package/docs/channels/discord.md +0 -998
- package/docs/zh-CN/channels/discord.md +0 -468
- package/skills/1password/SKILL.md +0 -71
- package/skills/1password/references/cli-examples.md +0 -29
- package/skills/1password/references/get-started.md +0 -17
- package/skills/apple-notes/SKILL.md +0 -78
- package/skills/apple-reminders/SKILL.md +0 -119
- package/skills/bear-notes/SKILL.md +0 -108
- package/skills/blogwatcher/SKILL.md +0 -70
- package/skills/blucli/SKILL.md +0 -48
- package/skills/bluebubbles/SKILL.md +0 -132
- package/skills/camsnap/SKILL.md +0 -46
- package/skills/canvas/SKILL.md +0 -204
- package/skills/connect-email/SKILL.md +0 -142
- package/skills/document-generation/SKILL.md +0 -83
- package/skills/eightctl/SKILL.md +0 -51
- package/skills/food-order/SKILL.md +0 -49
- package/skills/gemini/SKILL.md +0 -44
- package/skills/gh-issues/SKILL.md +0 -865
- package/skills/gifgrep/SKILL.md +0 -80
- package/skills/github/SKILL.md +0 -164
- package/skills/gog/SKILL.md +0 -117
- package/skills/goplaces/SKILL.md +0 -53
- package/skills/healthcheck/SKILL.md +0 -246
- package/skills/himalaya/SKILL.md +0 -258
- package/skills/himalaya/references/configuration.md +0 -184
- package/skills/himalaya/references/message-composition.md +0 -199
- package/skills/imsg/SKILL.md +0 -122
- package/skills/long-task/SKILL.md +0 -58
- package/skills/long-task/scripts/detach-task.sh +0 -187
- package/skills/nano-banana-pro/SKILL.md +0 -59
- package/skills/nano-banana-pro/scripts/generate_image.py +0 -184
- package/skills/nano-pdf/SKILL.md +0 -39
- package/skills/notion/SKILL.md +0 -173
- package/skills/obsidian/SKILL.md +0 -82
- package/skills/openai-image-gen/SKILL.md +0 -90
- package/skills/openai-image-gen/scripts/gen.py +0 -240
- package/skills/openai-whisper/SKILL.md +0 -39
- package/skills/openai-whisper-api/SKILL.md +0 -53
- package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
- package/skills/openhue/SKILL.md +0 -113
- package/skills/oracle/SKILL.md +0 -126
- package/skills/ordercli/SKILL.md +0 -79
- package/skills/peekaboo/SKILL.md +0 -191
- package/skills/reactions-extensive/SKILL.md +0 -30
- package/skills/reactions-minimal/SKILL.md +0 -31
- package/skills/safe-edit/SKILL.md +0 -51
- package/skills/sag/SKILL.md +0 -88
- package/skills/sherpa-onnx-tts/SKILL.md +0 -104
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
- package/skills/songsee/SKILL.md +0 -50
- package/skills/sonoscli/SKILL.md +0 -66
- package/skills/spotify-player/SKILL.md +0 -65
- package/skills/symihub/SKILL.md +0 -78
- package/skills/things-mac/SKILL.md +0 -87
- package/skills/tmux/SKILL.md +0 -153
- package/skills/tmux/scripts/find-sessions.sh +0 -112
- package/skills/tmux/scripts/wait-for-text.sh +0 -83
- package/skills/trello/SKILL.md +0 -96
- package/skills/video-frames/SKILL.md +0 -47
- package/skills/video-frames/scripts/frame.sh +0 -81
- package/skills/voice-call/SKILL.md +0 -46
- package/skills/wacli/SKILL.md +0 -73
- package/skills/weather/SKILL.md +0 -113
- package/skills/xurl/SKILL.md +0 -462
package/docs/automation/poll.md
CHANGED
|
@@ -11,7 +11,6 @@ title: "Polls"
|
|
|
11
11
|
## Supported channels
|
|
12
12
|
|
|
13
13
|
- WhatsApp (web channel)
|
|
14
|
-
- Discord
|
|
15
14
|
- MS Teams (Adaptive Cards)
|
|
16
15
|
|
|
17
16
|
## CLI
|
|
@@ -23,10 +22,7 @@ symi message poll --target +15555550123 \
|
|
|
23
22
|
symi message poll --target 123456789@g.us \
|
|
24
23
|
--poll-question "Meeting time?" --poll-option "10am" --poll-option "2pm" --poll-option "4pm" --poll-multi
|
|
25
24
|
|
|
26
|
-
# Discord
|
|
27
|
-
symi message poll --channel discord --target channel:123456789 \
|
|
28
25
|
--poll-question "Snack?" --poll-option "Pizza" --poll-option "Sushi"
|
|
29
|
-
symi message poll --channel discord --target channel:123456789 \
|
|
30
26
|
--poll-question "Plan?" --poll-option "A" --poll-option "B" --poll-duration-hours 48
|
|
31
27
|
|
|
32
28
|
# MS Teams
|
|
@@ -36,9 +32,7 @@ symi message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
|
|
|
36
32
|
|
|
37
33
|
Options:
|
|
38
34
|
|
|
39
|
-
- `--channel`: `whatsapp` (default), `discord`, or `msteams`
|
|
40
35
|
- `--poll-multi`: allow selecting multiple options
|
|
41
|
-
- `--poll-duration-hours`: Discord-only (defaults to 24 when omitted)
|
|
42
36
|
|
|
43
37
|
## Gateway RPC
|
|
44
38
|
|
|
@@ -57,13 +51,11 @@ Params:
|
|
|
57
51
|
## Channel differences
|
|
58
52
|
|
|
59
53
|
- WhatsApp: 2-12 options, `maxSelections` must be within option count, ignores `durationHours`.
|
|
60
|
-
- Discord: 2-10 options, `durationHours` clamped to 1-768 hours (default 24). `maxSelections > 1` enables multi-select; Discord does not support a strict selection count.
|
|
61
54
|
- MS Teams: Adaptive Card polls (Symi-managed). No native poll API; `durationHours` is ignored.
|
|
62
55
|
|
|
63
56
|
## Agent tool (Message)
|
|
64
57
|
|
|
65
58
|
Use the `message` tool with `poll` action (`to`, `pollQuestion`, `pollOption`, optional `pollMulti`, `pollDurationHours`, `channel`).
|
|
66
59
|
|
|
67
|
-
Note: Discord has no “pick exactly N” mode; `pollMulti` maps to multi-select.
|
|
68
60
|
Teams polls are rendered as Adaptive Cards and require the gateway to stay online
|
|
69
61
|
to record votes in `~/.symi/msteams-polls.json`.
|
|
@@ -83,8 +83,6 @@ Payload:
|
|
|
83
83
|
- `sessionKey` optional (string): The key used to identify the agent's session. By default this field is rejected unless `hooks.allowRequestSessionKey=true`.
|
|
84
84
|
- `wakeMode` optional (`now` | `next-heartbeat`): Whether to trigger an immediate heartbeat (default `now`) or wait for the next periodic check.
|
|
85
85
|
- `deliver` optional (boolean): If `true`, the agent's response will be sent to the messaging channel. Defaults to `true`. Responses that are only heartbeat acknowledgments are automatically skipped.
|
|
86
|
-
- `channel` optional (string): The messaging channel for delivery. One of: `last`, `whatsapp`, `telegram`, `discord`, `slack`, `mattermost` (plugin), `signal`, `imessage`, `msteams`. Defaults to `last`.
|
|
87
|
-
- `to` optional (string): The recipient identifier for the channel (e.g., phone number for WhatsApp/Signal, chat ID for Telegram, channel ID for Discord/Slack/Mattermost (plugin), conversation ID for MS Teams). Defaults to the last recipient in the main session.
|
|
88
86
|
- `model` optional (string): Model override (e.g., `anthropic/claude-3-5-sonnet` or an alias). Must be in the allowed model list if restricted.
|
|
89
87
|
- `thinking` optional (string): Thinking level override (e.g., `low`, `medium`, `high`).
|
|
90
88
|
- `timeoutSeconds` optional (number): Maximum duration for the agent run in seconds.
|
package/docs/capabilities.md
CHANGED
|
@@ -34,7 +34,6 @@ block (Stage 3.5).
|
|
|
34
34
|
| `channel-routing` | Messaging conventions and channel routing rules. Reply in current session auto-routes to the source channel; cross-session messaging via sessions_send; sub-agent orchestration via subagents tool; syst | message, messaging, channel, route, routing, send, sessions_send, subagent |
|
|
35
35
|
| `coding-agent` | "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large co | coding-agent, coding, agent |
|
|
36
36
|
| `connect-email` | Connect a user's email account (Outlook 365 or Gmail) to Symi. Use when the user asks to connect, link, set up, configure, or troubleshoot email — including any mention of "my email", "work email", "o | connect-email, connect, email |
|
|
37
|
-
| `discord` | "Discord ops via the message tool (channel=discord)." | discord |
|
|
38
37
|
| `document-generation` | Generate Word (.docx), Excel (.xlsx), PowerPoint (.pptx), and PDF documents via npm packages bundled with Symi. Write a short Node.js script (.cjs for CommonJS), execute via exec with host=gateway. Us | document, docx, xlsx, pptx, pdf, word, excel, powerpoint |
|
|
39
38
|
| `eightctl` | Control Eight Sleep pods (status, temperature, alarms, schedules). | eightctl |
|
|
40
39
|
| `food-order` | Reorder Foodora orders + track ETA/status with ordercli. Never confirm without explicit user approval. Triggers: order food, reorder, track ETA. | food-order, food, order |
|
|
@@ -97,7 +96,6 @@ auth providers all live here. Each ships its own `package.json`.
|
|
|
97
96
|
| `bluebubbles` | 2.9.4 | Symi BlueBubbles channel plugin |
|
|
98
97
|
| `copilot-proxy` | 2.9.4 | Symi Copilot Proxy provider plugin |
|
|
99
98
|
| `diagnostics-otel` | 2.9.4 | Symi diagnostics OpenTelemetry exporter |
|
|
100
|
-
| `discord` | 2.9.4 | Symi Discord channel plugin |
|
|
101
99
|
| `feishu` | 2.9.4 | Symi Feishu/Lark channel plugin (community maintained by @m1heng) |
|
|
102
100
|
| `google-antigravity-auth` | 2.9.4 | Symi Google Antigravity OAuth provider plugin |
|
|
103
101
|
| `google-gemini-cli-auth` | 2.9.4 | Symi Gemini CLI OAuth provider plugin |
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "Routing rules per channel (WhatsApp, Telegram, Discord, Slack) and shared context"
|
|
3
2
|
read_when:
|
|
4
3
|
- Changing channel routing or inbox behavior
|
|
5
4
|
title: "Channel Routing"
|
|
@@ -13,7 +12,6 @@ host configuration.
|
|
|
13
12
|
|
|
14
13
|
## Key terms
|
|
15
14
|
|
|
16
|
-
- **Channel**: `whatsapp`, `telegram`, `discord`, `slack`, `signal`, `imessage`, `webchat`.
|
|
17
15
|
- **AccountId**: per‑channel account instance (when supported).
|
|
18
16
|
- **AgentId**: an isolated workspace + session store (“brain”).
|
|
19
17
|
- **SessionKey**: the bucket key used to store context and control concurrency.
|
|
@@ -31,13 +29,11 @@ Groups and channels remain isolated per channel:
|
|
|
31
29
|
|
|
32
30
|
Threads:
|
|
33
31
|
|
|
34
|
-
- Slack/Discord threads append `:thread:<threadId>` to the base key.
|
|
35
32
|
- Telegram forum topics embed `:topic:<topicId>` in the group key.
|
|
36
33
|
|
|
37
34
|
Examples:
|
|
38
35
|
|
|
39
36
|
- `agent:main:telegram:group:-1001234567890:topic:42`
|
|
40
|
-
- `agent:main:discord:channel:123456:thread:987654`
|
|
41
37
|
|
|
42
38
|
## Routing rules (how an agent is chosen)
|
|
43
39
|
|
|
@@ -45,12 +41,10 @@ Routing picks **one agent** for each inbound message:
|
|
|
45
41
|
|
|
46
42
|
1. **Exact peer match** (`bindings` with `peer.kind` + `peer.id`).
|
|
47
43
|
2. **Parent peer match** (thread inheritance).
|
|
48
|
-
3. **
|
|
49
|
-
4. **
|
|
50
|
-
5. **
|
|
51
|
-
6. **
|
|
52
|
-
7. **Channel match** (any account on that channel, `accountId: "*"`).
|
|
53
|
-
8. **Default agent** (`agents.list[].default`, else first list entry, fallback to `main`).
|
|
44
|
+
3. **Team match** (Slack) via `teamId`.
|
|
45
|
+
4. **Account match** (`accountId` on the channel).
|
|
46
|
+
5. **Channel match** (any account on that channel, `accountId: "*"`).
|
|
47
|
+
6. **Default agent** (`agents.list[].default`, else first list entry, fallback to `main`).
|
|
54
48
|
|
|
55
49
|
When a binding includes multiple match fields (`peer`, `guildId`, `teamId`, `roles`), **all provided fields must match** for that binding to apply.
|
|
56
50
|
|
|
@@ -9,8 +9,6 @@ title: "Group Messages"
|
|
|
9
9
|
|
|
10
10
|
Goal: let Symi sit in WhatsApp groups, wake up only when pinged, and keep that thread separate from the personal DM session.
|
|
11
11
|
|
|
12
|
-
Note: `agents.list[].groupChat.mentionPatterns` is now used by Telegram/Discord/Slack/iMessage as well; this doc focuses on WhatsApp-specific behavior. For multi-agent setups, set `agents.list[].groupChat.mentionPatterns` per agent (or use `messages.groupChat.mentionPatterns` as a global fallback).
|
|
13
|
-
|
|
14
12
|
## What’s implemented (2025-12-03)
|
|
15
13
|
|
|
16
14
|
- Activation modes: `mention` (default) or `always`. `mention` requires a ping (real WhatsApp @-mentions via `mentionedJids`, regex patterns, or the bot’s E.164 anywhere in the text). `always` wakes the agent on every message but it should reply only when it can add meaningful value; otherwise it returns the silent token `NO_REPLY`. Defaults can be set in config (`channels.whatsapp.groups`) and overridden per group via `/activation`. When `channels.whatsapp.groups` is set, it also acts as a group allowlist (include `"*"` to allow all).
|
package/docs/channels/groups.md
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "Group chat behavior across surfaces (WhatsApp/Telegram/Discord/Slack/Signal/iMessage/Microsoft Teams)"
|
|
3
2
|
read_when:
|
|
4
3
|
- Changing group chat behavior or mention gating
|
|
5
4
|
title: "Groups"
|
|
@@ -7,8 +6,6 @@ title: "Groups"
|
|
|
7
6
|
|
|
8
7
|
# Groups
|
|
9
8
|
|
|
10
|
-
Symi treats group chats consistently across surfaces: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams.
|
|
11
|
-
|
|
12
9
|
## Beginner intro (2 minutes)
|
|
13
10
|
|
|
14
11
|
Symi “lives” on your own messaging accounts. There is no separate WhatsApp bot user.
|
|
@@ -152,7 +149,6 @@ Control how group/room messages are handled per channel:
|
|
|
152
149
|
groupPolicy: "disabled",
|
|
153
150
|
groupAllowFrom: ["user@org.com"],
|
|
154
151
|
},
|
|
155
|
-
discord: {
|
|
156
152
|
groupPolicy: "allowlist",
|
|
157
153
|
guilds: {
|
|
158
154
|
GUILD_ID: { channels: { help: { allow: true } } },
|
|
@@ -184,10 +180,8 @@ Notes:
|
|
|
184
180
|
|
|
185
181
|
- `groupPolicy` is separate from mention-gating (which requires @mentions).
|
|
186
182
|
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: use `groupAllowFrom` (fallback: explicit `allowFrom`).
|
|
187
|
-
- Discord: allowlist uses `channels.discord.guilds.<id>.channels`.
|
|
188
183
|
- Slack: allowlist uses `channels.slack.channels`.
|
|
189
184
|
- Matrix: allowlist uses `channels.matrix.groups` (room IDs, aliases, or names). Use `channels.matrix.groupAllowFrom` to restrict senders; per-room `users` allowlists are also supported.
|
|
190
|
-
- Group DMs are controlled separately (`channels.discord.dm.*`, `channels.slack.dm.*`).
|
|
191
185
|
- Telegram allowlist can match user IDs (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) or usernames (`"@alice"` or `"alice"`); prefixes are case-insensitive.
|
|
192
186
|
- Default is `groupPolicy: "allowlist"`; if your group allowlist is empty, group messages are blocked.
|
|
193
187
|
|
|
@@ -201,8 +195,6 @@ Quick mental model (evaluation order for group messages):
|
|
|
201
195
|
|
|
202
196
|
Group messages require a mention unless overridden per group. Defaults live per subsystem under `*.groups."*"`.
|
|
203
197
|
|
|
204
|
-
Replying to a bot message counts as an implicit mention (when the channel supports reply metadata). This applies to Telegram, WhatsApp, Slack, Discord, and Microsoft Teams.
|
|
205
|
-
|
|
206
198
|
```json5
|
|
207
199
|
{
|
|
208
200
|
channels: {
|
|
@@ -245,7 +237,6 @@ Notes:
|
|
|
245
237
|
- Surfaces that provide explicit mentions still pass; patterns are a fallback.
|
|
246
238
|
- Per-agent override: `agents.list[].groupChat.mentionPatterns` (useful when multiple agents share a group).
|
|
247
239
|
- Mention gating is only enforced when mention detection is possible (native mentions or `mentionPatterns` are configured).
|
|
248
|
-
- Discord defaults live in `channels.discord.guilds."*"` (overridable per guild/channel).
|
|
249
240
|
- Group history context is wrapped uniformly across channels and is **pending-only** (messages skipped due to mention gating); use `messages.groupChat.historyLimit` for the global default and `channels.<channel>.historyLimit` (or `channels.<channel>.accounts.*.historyLimit`) for overrides. Set `0` to disable.
|
|
250
241
|
|
|
251
242
|
## Group/channel tool restrictions (optional)
|
|
@@ -285,7 +276,6 @@ Example (Telegram):
|
|
|
285
276
|
Notes:
|
|
286
277
|
|
|
287
278
|
- Group/channel tool restrictions are applied in addition to global/agent tool policy (deny still wins).
|
|
288
|
-
- Some channels use different nesting for rooms/channels (e.g., Discord `guilds.*.channels.*`, Slack `channels.*`, MS Teams `teams.*.channels.*`).
|
|
289
279
|
|
|
290
280
|
## Group allowlists
|
|
291
281
|
|
package/docs/channels/index.md
CHANGED
|
@@ -15,7 +15,6 @@ Text is supported everywhere; media and reactions vary by channel.
|
|
|
15
15
|
|
|
16
16
|
- [WhatsApp](/channels/whatsapp) — Most popular; uses Baileys and requires QR pairing.
|
|
17
17
|
- [Telegram](/channels/telegram) — Bot API via grammY; supports groups.
|
|
18
|
-
- [Discord](/channels/discord) — Discord Bot API + Gateway; supports servers, channels, and DMs.
|
|
19
18
|
- [IRC](/channels/irc) — Classic IRC servers; channels + DMs with pairing/allowlist controls.
|
|
20
19
|
- [Slack](/channels/slack) — Bolt SDK; workspace apps.
|
|
21
20
|
- [Feishu](/channels/feishu) — Feishu/Lark bot via WebSocket (plugin, installed separately).
|
package/docs/channels/matrix.md
CHANGED
|
@@ -138,8 +138,6 @@ Once verified, the bot can decrypt messages in encrypted rooms.
|
|
|
138
138
|
|
|
139
139
|
## Multi-account
|
|
140
140
|
|
|
141
|
-
Multi-account support: use `channels.matrix.accounts` with per-account credentials and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
|
142
|
-
|
|
143
141
|
Each account runs as a separate Matrix user on any homeserver. Per-account config
|
|
144
142
|
inherits from the top-level `channels.matrix` settings and can override any option
|
|
145
143
|
(DM policy, groups, encryption, etc.).
|
package/docs/channels/msteams.md
CHANGED
|
@@ -439,8 +439,6 @@ Symi handles this by returning quickly and sending replies proactively, but very
|
|
|
439
439
|
|
|
440
440
|
### Formatting
|
|
441
441
|
|
|
442
|
-
Teams markdown is more limited than Slack or Discord:
|
|
443
|
-
|
|
444
442
|
- Basic formatting works: **bold**, _italic_, `code`, links
|
|
445
443
|
- Complex markdown (tables, nested lists) may not render correctly
|
|
446
444
|
- Adaptive Cards are supported for polls and arbitrary card sends (see below)
|
package/docs/channels/pairing.md
CHANGED
|
@@ -36,8 +36,6 @@ symi pairing list telegram
|
|
|
36
36
|
symi pairing approve telegram <CODE>
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Supported channels: `telegram`, `whatsapp`, `signal`, `imessage`, `discord`, `slack`, `feishu`.
|
|
40
|
-
|
|
41
39
|
### Where the state lives
|
|
42
40
|
|
|
43
41
|
Stored under `~/.symi/credentials/`:
|
|
@@ -99,5 +97,4 @@ Stored under `~/.symi/devices/`:
|
|
|
99
97
|
- Signal: [Signal](/channels/signal)
|
|
100
98
|
- BlueBubbles (iMessage): [BlueBubbles](/channels/bluebubbles)
|
|
101
99
|
- iMessage (legacy): [iMessage](/channels/imessage)
|
|
102
|
-
- Discord: [Discord](/channels/discord)
|
|
103
100
|
- Slack: [Slack](/channels/slack)
|
package/docs/channels/signal.md
CHANGED
|
@@ -99,8 +99,6 @@ Example:
|
|
|
99
99
|
}
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
Multi-account support: use `channels.signal.accounts` with per-account config and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
|
103
|
-
|
|
104
102
|
## Onboarding (option B): register dedicated bot number (SMS, Linux)
|
|
105
103
|
|
|
106
104
|
Use this when you want a dedicated bot number instead of linking an existing Signal app account.
|
|
@@ -53,17 +53,10 @@ Full troubleshooting: [/channels/whatsapp#troubleshooting-quick](/channels/whats
|
|
|
53
53
|
|
|
54
54
|
Full troubleshooting: [/channels/telegram#troubleshooting](/channels/telegram#troubleshooting)
|
|
55
55
|
|
|
56
|
-
## Discord
|
|
57
|
-
|
|
58
|
-
### Discord failure signatures
|
|
59
|
-
|
|
60
56
|
| Symptom | Fastest check | Fix |
|
|
61
57
|
| ------------------------------- | ----------------------------------- | --------------------------------------------------------- |
|
|
62
58
|
| Bot online but no guild replies | `symi channels status --probe` | Allow guild/channel and verify message content intent. |
|
|
63
59
|
| Group messages ignored | Check logs for mention gating drops | Mention bot or set guild/channel `requireMention: false`. |
|
|
64
|
-
| DM replies missing | `symi pairing list discord` | Approve DM pairing or adjust DM policy. |
|
|
65
|
-
|
|
66
|
-
Full troubleshooting: [/channels/discord#troubleshooting](/channels/discord#troubleshooting)
|
|
67
60
|
|
|
68
61
|
## Slack
|
|
69
62
|
|
package/docs/cli/channels.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
summary: "CLI reference for `symi channels` (accounts, status, login/logout, logs)"
|
|
3
3
|
read_when:
|
|
4
|
-
- You want to add/remove channel accounts (WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (plugin)/Signal/iMessage)
|
|
5
4
|
- You want to check channel status or tail channel logs
|
|
6
5
|
title: "channels"
|
|
7
6
|
---
|
|
@@ -21,7 +20,6 @@ Related docs:
|
|
|
21
20
|
symi channels list
|
|
22
21
|
symi channels status
|
|
23
22
|
symi channels capabilities
|
|
24
|
-
symi channels capabilities --channel discord --target channel:123
|
|
25
23
|
symi channels resolve --channel slack "#general" "@jane"
|
|
26
24
|
symi channels logs --channel all
|
|
27
25
|
```
|
|
@@ -54,14 +52,11 @@ Fetch provider capability hints (intents/scopes where available) plus static fea
|
|
|
54
52
|
|
|
55
53
|
```bash
|
|
56
54
|
symi channels capabilities
|
|
57
|
-
symi channels capabilities --channel discord --target channel:123
|
|
58
55
|
```
|
|
59
56
|
|
|
60
57
|
Notes:
|
|
61
58
|
|
|
62
59
|
- `--channel` is optional; omit it to list every channel (including extensions).
|
|
63
|
-
- `--target` accepts `channel:<id>` or a raw numeric channel id and only applies to Discord.
|
|
64
|
-
- Probes are provider-specific: Discord intents + optional channel permissions; Slack bot + user scopes; Telegram bot flags + webhook; Signal daemon version; MS Teams app token + Graph roles/scopes (annotated where known). Channels without probes report `Probe: unavailable`.
|
|
65
60
|
|
|
66
61
|
## Resolve names to IDs
|
|
67
62
|
|
|
@@ -69,7 +64,6 @@ Resolve channel/user names to IDs using the provider directory:
|
|
|
69
64
|
|
|
70
65
|
```bash
|
|
71
66
|
symi channels resolve --channel slack "#general" "@jane"
|
|
72
|
-
symi channels resolve --channel discord "My Server/#support" "@someone"
|
|
73
67
|
symi channels resolve --channel matrix "Project Room"
|
|
74
68
|
```
|
|
75
69
|
|
package/docs/cli/configure.md
CHANGED
|
@@ -23,7 +23,6 @@ Related:
|
|
|
23
23
|
Notes:
|
|
24
24
|
|
|
25
25
|
- Choosing where the Gateway runs always updates `gateway.mode`. You can select "Continue" without other sections if that is all you need.
|
|
26
|
-
- Channel-oriented services (Slack/Discord/Matrix/Microsoft Teams) prompt for channel/room allowlists during setup. You can enter names or IDs; the wizard resolves names to IDs when possible.
|
|
27
26
|
|
|
28
27
|
## Examples
|
|
29
28
|
|
package/docs/cli/directory.md
CHANGED
|
@@ -34,7 +34,6 @@ symi message send --channel slack --target user:U012ABCDEF --message "hello"
|
|
|
34
34
|
- WhatsApp: `+15551234567` (DM), `1234567890-1234567890@g.us` (group)
|
|
35
35
|
- Telegram: `@username` or numeric chat id; groups are numeric ids
|
|
36
36
|
- Slack: `user:U…` and `channel:C…`
|
|
37
|
-
- Discord: `user:<id>` and `channel:<id>`
|
|
38
37
|
- Matrix (plugin): `user:@user:server`, `room:!roomId:server`, or `#alias:server`
|
|
39
38
|
- Microsoft Teams (plugin): `user:<id>` and `conversation:<id>`
|
|
40
39
|
- Zalo (plugin): user id (Bot API)
|
package/docs/cli/index.md
CHANGED
|
@@ -372,8 +372,6 @@ Options:
|
|
|
372
372
|
|
|
373
373
|
### `channels`
|
|
374
374
|
|
|
375
|
-
Manage chat channel accounts (WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (plugin)/Signal/iMessage/MS Teams).
|
|
376
|
-
|
|
377
375
|
Subcommands:
|
|
378
376
|
|
|
379
377
|
- `channels list`: show configured channels and auth profiles.
|
|
@@ -387,7 +385,6 @@ Subcommands:
|
|
|
387
385
|
|
|
388
386
|
Common options:
|
|
389
387
|
|
|
390
|
-
- `--channel <name>`: `whatsapp|telegram|discord|googlechat|slack|mattermost|signal|imessage|msteams`
|
|
391
388
|
- `--account <id>`: channel account id (default `default`)
|
|
392
389
|
- `--name <label>`: display name for the account
|
|
393
390
|
|
|
@@ -419,8 +416,6 @@ Examples:
|
|
|
419
416
|
|
|
420
417
|
```bash
|
|
421
418
|
symi channels add --channel telegram --account alerts --name "Alerts Bot" --token $TELEGRAM_BOT_TOKEN
|
|
422
|
-
symi channels add --channel discord --account work --name "Work Bot" --token $DISCORD_BOT_TOKEN
|
|
423
|
-
symi channels remove --channel discord --account work --delete
|
|
424
419
|
symi channels status --probe
|
|
425
420
|
symi status --deep
|
|
426
421
|
```
|
|
@@ -492,7 +487,6 @@ Subcommands:
|
|
|
492
487
|
Examples:
|
|
493
488
|
|
|
494
489
|
- `symi message send --target +15555550123 --message "Hi"`
|
|
495
|
-
- `symi message poll --channel discord --target channel:123 --poll-question "Snack?" --poll-option Pizza --poll-option Sushi`
|
|
496
490
|
|
|
497
491
|
### `agent`
|
|
498
492
|
|
|
@@ -508,7 +502,6 @@ Options:
|
|
|
508
502
|
- `--session-id <id>`
|
|
509
503
|
- `--thinking <off|minimal|low|medium|high|xhigh>` (GPT-5.2 + Codex models only)
|
|
510
504
|
- `--verbose <on|full|off>`
|
|
511
|
-
- `--channel <whatsapp|telegram|discord|slack|mattermost|signal|imessage|msteams>`
|
|
512
505
|
- `--local`
|
|
513
506
|
- `--deliver`
|
|
514
507
|
- `--json`
|
package/docs/cli/message.md
CHANGED
|
@@ -9,7 +9,6 @@ title: "message"
|
|
|
9
9
|
# `symi message`
|
|
10
10
|
|
|
11
11
|
Single outbound command for sending messages and channel actions
|
|
12
|
-
(Discord/Google Chat/Slack/Mattermost (plugin)/Telegram/WhatsApp/Signal/iMessage/MS Teams).
|
|
13
12
|
|
|
14
13
|
## Usage
|
|
15
14
|
|
|
@@ -21,13 +20,11 @@ Channel selection:
|
|
|
21
20
|
|
|
22
21
|
- `--channel` required if more than one channel is configured.
|
|
23
22
|
- If exactly one channel is configured, it becomes the default.
|
|
24
|
-
- Values: `whatsapp|telegram|discord|googlechat|slack|mattermost|signal|imessage|msteams` (Mattermost requires plugin)
|
|
25
23
|
|
|
26
24
|
Target formats (`--target`):
|
|
27
25
|
|
|
28
26
|
- WhatsApp: E.164 or group JID
|
|
29
27
|
- Telegram: chat id or `@username`
|
|
30
|
-
- Discord: `channel:<id>` or `user:<id>` (or `<@id>` mention; raw numeric ids are treated as channels)
|
|
31
28
|
- Google Chat: `spaces/<spaceId>` or `users/<userId>`
|
|
32
29
|
- Slack: `channel:<id>` or `user:<id>` (raw channel id is accepted)
|
|
33
30
|
- Mattermost (plugin): `channel:<id>`, `user:<id>`, or `@username` (bare ids are treated as channels)
|
|
@@ -37,7 +34,6 @@ Target formats (`--target`):
|
|
|
37
34
|
|
|
38
35
|
Name lookup:
|
|
39
36
|
|
|
40
|
-
- For supported providers (Discord/Slack/etc), channel names like `Help` or `#help` are resolved via the directory cache.
|
|
41
37
|
- On cache miss, Symi will attempt a live directory lookup when the provider supports it.
|
|
42
38
|
|
|
43
39
|
## Common flags
|
|
@@ -55,7 +51,6 @@ Name lookup:
|
|
|
55
51
|
### Core
|
|
56
52
|
|
|
57
53
|
- `send`
|
|
58
|
-
- Channels: WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (plugin)/Signal/iMessage/MS Teams
|
|
59
54
|
- Required: `--target`, plus `--message` or `--media`
|
|
60
55
|
- Optional: `--media`, `--reply-to`, `--thread-id`, `--gif-playback`
|
|
61
56
|
- Telegram only: `--buttons` (requires `channels.telegram.capabilities.inlineButtons` to allow it)
|
|
@@ -64,14 +59,11 @@ Name lookup:
|
|
|
64
59
|
- WhatsApp only: `--gif-playback`
|
|
65
60
|
|
|
66
61
|
- `poll`
|
|
67
|
-
- Channels: WhatsApp/Telegram/Discord/Matrix/MS Teams
|
|
68
62
|
- Required: `--target`, `--poll-question`, `--poll-option` (repeat)
|
|
69
63
|
- Optional: `--poll-multi`
|
|
70
|
-
- Discord only: `--poll-duration-hours`, `--silent`, `--message`
|
|
71
64
|
- Telegram only: `--poll-duration-seconds` (5-600), `--silent`, `--poll-anonymous` / `--poll-public`, `--thread-id`
|
|
72
65
|
|
|
73
66
|
- `react`
|
|
74
|
-
- Channels: Discord/Google Chat/Slack/Telegram/WhatsApp/Signal
|
|
75
67
|
- Required: `--message-id`, `--target`
|
|
76
68
|
- Optional: `--emoji`, `--remove`, `--participant`, `--from-me`, `--target-author`, `--target-author-uuid`
|
|
77
69
|
- Note: `--remove` requires `--emoji` (omit `--emoji` to clear own reactions where supported; see /tools/reactions)
|
|
@@ -79,96 +71,69 @@ Name lookup:
|
|
|
79
71
|
- Signal group reactions: `--target-author` or `--target-author-uuid` required
|
|
80
72
|
|
|
81
73
|
- `reactions`
|
|
82
|
-
- Channels: Discord/Google Chat/Slack
|
|
83
74
|
- Required: `--message-id`, `--target`
|
|
84
75
|
- Optional: `--limit`
|
|
85
76
|
|
|
86
77
|
- `read`
|
|
87
|
-
- Channels: Discord/Slack
|
|
88
78
|
- Required: `--target`
|
|
89
79
|
- Optional: `--limit`, `--before`, `--after`
|
|
90
|
-
- Discord only: `--around`
|
|
91
80
|
|
|
92
81
|
- `edit`
|
|
93
|
-
- Channels: Discord/Slack
|
|
94
82
|
- Required: `--message-id`, `--message`, `--target`
|
|
95
83
|
|
|
96
84
|
- `delete`
|
|
97
|
-
- Channels: Discord/Slack/Telegram
|
|
98
85
|
- Required: `--message-id`, `--target`
|
|
99
86
|
|
|
100
87
|
- `pin` / `unpin`
|
|
101
|
-
- Channels: Discord/Slack
|
|
102
88
|
- Required: `--message-id`, `--target`
|
|
103
89
|
|
|
104
90
|
- `pins` (list)
|
|
105
|
-
- Channels: Discord/Slack
|
|
106
91
|
- Required: `--target`
|
|
107
92
|
|
|
108
93
|
- `permissions`
|
|
109
|
-
- Channels: Discord
|
|
110
94
|
- Required: `--target`
|
|
111
95
|
|
|
112
96
|
- `search`
|
|
113
|
-
- Channels: Discord
|
|
114
97
|
- Required: `--guild-id`, `--query`
|
|
115
98
|
- Optional: `--channel-id`, `--channel-ids` (repeat), `--author-id`, `--author-ids` (repeat), `--limit`
|
|
116
99
|
|
|
117
100
|
### Threads
|
|
118
101
|
|
|
119
102
|
- `thread create`
|
|
120
|
-
- Channels: Discord
|
|
121
103
|
- Required: `--thread-name`, `--target` (channel id)
|
|
122
104
|
- Optional: `--message-id`, `--message`, `--auto-archive-min`
|
|
123
105
|
|
|
124
106
|
- `thread list`
|
|
125
|
-
- Channels: Discord
|
|
126
107
|
- Required: `--guild-id`
|
|
127
108
|
- Optional: `--channel-id`, `--include-archived`, `--before`, `--limit`
|
|
128
109
|
|
|
129
110
|
- `thread reply`
|
|
130
|
-
- Channels: Discord
|
|
131
111
|
- Required: `--target` (thread id), `--message`
|
|
132
112
|
- Optional: `--media`, `--reply-to`
|
|
133
113
|
|
|
134
114
|
### Emojis
|
|
135
115
|
|
|
136
116
|
- `emoji list`
|
|
137
|
-
- Discord: `--guild-id`
|
|
138
117
|
- Slack: no extra flags
|
|
139
118
|
|
|
140
119
|
- `emoji upload`
|
|
141
|
-
- Channels: Discord
|
|
142
120
|
- Required: `--guild-id`, `--emoji-name`, `--media`
|
|
143
121
|
- Optional: `--role-ids` (repeat)
|
|
144
122
|
|
|
145
123
|
### Stickers
|
|
146
124
|
|
|
147
125
|
- `sticker send`
|
|
148
|
-
- Channels: Discord
|
|
149
126
|
- Required: `--target`, `--sticker-id` (repeat)
|
|
150
127
|
- Optional: `--message`
|
|
151
128
|
|
|
152
129
|
- `sticker upload`
|
|
153
|
-
- Channels: Discord
|
|
154
130
|
- Required: `--guild-id`, `--sticker-name`, `--sticker-desc`, `--sticker-tags`, `--media`
|
|
155
131
|
|
|
156
132
|
### Roles / Channels / Members / Voice
|
|
157
133
|
|
|
158
|
-
- `role info` (Discord): `--guild-id`
|
|
159
|
-
- `role add` / `role remove` (Discord): `--guild-id`, `--user-id`, `--role-id`
|
|
160
|
-
- `channel info` (Discord): `--target`
|
|
161
|
-
- `channel list` (Discord): `--guild-id`
|
|
162
|
-
- `member info` (Discord/Slack): `--user-id` (+ `--guild-id` for Discord)
|
|
163
|
-
- `voice status` (Discord): `--guild-id`, `--user-id`
|
|
164
|
-
|
|
165
134
|
### Events
|
|
166
135
|
|
|
167
|
-
-
|
|
168
|
-
- `event create` (Discord): `--guild-id`, `--event-name`, `--start-time`
|
|
169
|
-
- Optional: `--end-time`, `--desc`, `--channel-id`, `--location`, `--event-type`
|
|
170
|
-
|
|
171
|
-
### Moderation (Discord)
|
|
136
|
+
- Optional: `--end-time`, `--desc`, `--channel-id`, `--location`, `--event-type`
|
|
172
137
|
|
|
173
138
|
- `timeout`: `--guild-id`, `--user-id` (optional `--duration-min` or `--until`; omit both to clear timeout)
|
|
174
139
|
- `kick`: `--guild-id`, `--user-id` (+ `--reason`)
|
|
@@ -184,27 +149,16 @@ Name lookup:
|
|
|
184
149
|
|
|
185
150
|
## Examples
|
|
186
151
|
|
|
187
|
-
Send a Discord reply:
|
|
188
|
-
|
|
189
152
|
```
|
|
190
|
-
symi message send --channel discord \
|
|
191
153
|
--target channel:123 --message "hi" --reply-to 456
|
|
192
154
|
```
|
|
193
155
|
|
|
194
|
-
Send a Discord message with components:
|
|
195
|
-
|
|
196
156
|
```
|
|
197
|
-
symi message send --channel discord \
|
|
198
157
|
--target channel:123 --message "Choose:" \
|
|
199
158
|
--components '{"text":"Choose a path","blocks":[{"type":"actions","buttons":[{"label":"Approve","style":"success"},{"label":"Decline","style":"danger"}]}]}'
|
|
200
159
|
```
|
|
201
160
|
|
|
202
|
-
See [Discord components](/channels/discord#interactive-components) for the full schema.
|
|
203
|
-
|
|
204
|
-
Create a Discord poll:
|
|
205
|
-
|
|
206
161
|
```
|
|
207
|
-
symi message poll --channel discord \
|
|
208
162
|
--target channel:123 \
|
|
209
163
|
--poll-question "Snack?" \
|
|
210
164
|
--poll-option Pizza --poll-option Sushi \
|
package/docs/cli/status.md
CHANGED
|
@@ -19,7 +19,6 @@ symi status --usage
|
|
|
19
19
|
|
|
20
20
|
Notes:
|
|
21
21
|
|
|
22
|
-
- `--deep` runs live probes (WhatsApp Web + Telegram + Discord + Google Chat + Slack + Signal).
|
|
23
22
|
- Output includes per-agent session stores when multiple agents are configured.
|
|
24
23
|
- Overview includes Gateway + node host service install/runtime status when available.
|
|
25
24
|
- Overview includes update channel + git SHA (for source checkouts).
|
|
@@ -12,7 +12,6 @@ Last updated: 2026-01-22
|
|
|
12
12
|
## Overview
|
|
13
13
|
|
|
14
14
|
- A single long‑lived **Gateway** owns all messaging surfaces (WhatsApp via
|
|
15
|
-
Baileys, Telegram via grammY, Slack, Discord, Signal, iMessage, WebChat).
|
|
16
15
|
- Control-plane clients (macOS app, CLI, web UI, automations) connect to the
|
|
17
16
|
Gateway over **WebSocket** on the configured bind host (default
|
|
18
17
|
`127.0.0.1:18789`).
|
|
@@ -9,7 +9,6 @@ title: "Features"
|
|
|
9
9
|
|
|
10
10
|
<Columns>
|
|
11
11
|
<Card title="Channels" icon="message-square">
|
|
12
|
-
WhatsApp, Telegram, Discord, and iMessage with a single Gateway.
|
|
13
12
|
</Card>
|
|
14
13
|
<Card title="Plugins" icon="plug">
|
|
15
14
|
Add Mattermost and more with extensions.
|
|
@@ -32,7 +31,6 @@ title: "Features"
|
|
|
32
31
|
|
|
33
32
|
- WhatsApp integration via WhatsApp Web (Baileys)
|
|
34
33
|
- Telegram bot support (grammY)
|
|
35
|
-
- Discord bot support (channels.discord.js)
|
|
36
34
|
- Mattermost bot support (plugin)
|
|
37
35
|
- iMessage integration via local imsg CLI (macOS)
|
|
38
36
|
- Agent bridge for Pi in RPC mode with tool streaming
|
|
@@ -57,7 +57,6 @@ IR (schematic):
|
|
|
57
57
|
## Where it is used
|
|
58
58
|
|
|
59
59
|
- Slack, Telegram, and Signal outbound adapters render from the IR.
|
|
60
|
-
- Other channels (WhatsApp, iMessage, MS Teams, Discord) still use plain text or
|
|
61
60
|
their own formatting rules, with Markdown table conversion applied before
|
|
62
61
|
chunking when enabled.
|
|
63
62
|
|
|
@@ -74,13 +73,12 @@ Config keys:
|
|
|
74
73
|
|
|
75
74
|
```yaml
|
|
76
75
|
channels:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
tables: off
|
|
76
|
+
markdown:
|
|
77
|
+
tables: code
|
|
78
|
+
accounts:
|
|
79
|
+
work:
|
|
80
|
+
markdown:
|
|
81
|
+
tables: off
|
|
84
82
|
```
|
|
85
83
|
|
|
86
84
|
## Chunking rules
|
package/docs/concepts/memory.md
CHANGED
|
@@ -203,9 +203,7 @@ out to QMD for retrieval. Key points:
|
|
|
203
203
|
Default is DM-only (`deny` all, `allow` direct chats); loosen it to surface QMD
|
|
204
204
|
hits in groups/channels.
|
|
205
205
|
- `match.keyPrefix` matches the **normalized** session key (lowercased, with any
|
|
206
|
-
leading `agent:<id>:` stripped). Example: `discord:channel:`.
|
|
207
206
|
- `match.rawKeyPrefix` matches the **raw** session key (lowercased), including
|
|
208
|
-
`agent:<id>:`. Example: `agent:main:discord:`.
|
|
209
207
|
- Legacy: `match.keyPrefix: "agent:..."` is still treated as a raw-key prefix,
|
|
210
208
|
but prefer `rawKeyPrefix` for clarity.
|
|
211
209
|
- When `scope` denies a search, Symi logs a warning with the derived
|
|
@@ -238,9 +236,7 @@ memory: {
|
|
|
238
236
|
rules: [
|
|
239
237
|
{ action: "allow", match: { chatType: "direct" } },
|
|
240
238
|
// Normalized session-key prefix (strips `agent:<id>:`).
|
|
241
|
-
{ action: "deny", match: { keyPrefix: "discord:channel:" } },
|
|
242
239
|
// Raw session-key prefix (includes `agent:<id>:`).
|
|
243
|
-
{ action: "deny", match: { rawKeyPrefix: "agent:main:discord:" } },
|
|
244
240
|
]
|
|
245
241
|
},
|
|
246
242
|
paths: [
|
package/docs/concepts/models.md
CHANGED
|
@@ -104,7 +104,6 @@ You can switch models for the current session without restarting:
|
|
|
104
104
|
Notes:
|
|
105
105
|
|
|
106
106
|
- `/model` (and `/model list`) is a compact, numbered picker (model family + available providers).
|
|
107
|
-
- On Discord, `/model` and `/models` open an interactive picker with provider and model dropdowns plus a Submit step.
|
|
108
107
|
- `/model <#>` selects from that picker.
|
|
109
108
|
- `/model status` is the detailed view (auth candidates and, when configured, provider endpoint `baseUrl` + `api` mode).
|
|
110
109
|
- Model refs are parsed by splitting on the **first** `/`. Use `provider/model` when typing `/model <ref>`.
|