@symerian/symi 3.0.20 → 3.0.22
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-BaCdNfrk.js → audio-preflight-D7BVT-ls.js} +4 -4
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-UfmVM0xR.js → chrome-B5CO2vB5.js} +7 -7
- package/dist/{deliver-BqXdac6W.js → deliver-CrwjsDwv.js} +1 -1
- package/dist/extensionAPI.js +7 -7
- package/dist/{image-DIWsXYcW.js → image-Csu7WcLW.js} +1 -1
- package/dist/{manager-DW3SxcPr.js → manager-BkkVjTO8.js} +1 -1
- package/dist/{pi-embedded-BNch0U5F.js → pi-embedded-Dhp64z5l.js} +16 -16
- package/dist/{pi-embedded-helpers-IkHl02JF.js → pi-embedded-helpers-840E4hop.js} +4 -4
- package/dist/{pw-ai-nMkA-oDJ.js → pw-ai-CBgJf_RR.js} +1 -1
- package/dist/{runner-DNEC58JI.js → runner-BbFKo1ne.js} +1 -1
- package/dist/{synthesis-BWAr0sZ9.js → synthesis-DoEM0E8_.js} +7 -7
- package/dist/{web-7a-m_UxL.js → web-BYXJn-Ps.js} +7 -7
- package/package.json +1 -1
- package/docs/.i18n/README.md +0 -31
- package/docs/.i18n/glossary.ja-JP.json +0 -14
- package/docs/.i18n/glossary.zh-CN.json +0 -210
- package/docs/.i18n/ja-JP.tm.jsonl +0 -0
- package/docs/.i18n/zh-CN.tm.jsonl +0 -1303
- package/docs/CNAME +0 -1
- package/docs/assets/install-script.svg +0 -1
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/pixel-symi.svg +0 -60
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +0 -11
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +0 -13
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith.svg +0 -14
- package/docs/assets/sponsors/openai.svg +0 -3
- package/docs/assets/symi-logo-text-dark.png +0 -0
- package/docs/assets/symi-logo-text.png +0 -0
- package/docs/automation/auth-monitoring.md +0 -44
- package/docs/automation/cron-jobs.md +0 -540
- package/docs/automation/cron-vs-heartbeat.md +0 -286
- package/docs/automation/gmail-pubsub.md +0 -256
- package/docs/automation/hooks.md +0 -998
- package/docs/automation/poll.md +0 -61
- package/docs/automation/troubleshooting.md +0 -122
- package/docs/automation/webhook.md +0 -213
- package/docs/brave-search.md +0 -41
- package/docs/capabilities.md +0 -151
- package/docs/channels/bluebubbles.md +0 -346
- package/docs/channels/broadcast-groups.md +0 -441
- package/docs/channels/channel-routing.md +0 -112
- package/docs/channels/feishu.md +0 -586
- package/docs/channels/googlechat.md +0 -253
- package/docs/channels/grammy.md +0 -31
- package/docs/channels/group-messages.md +0 -82
- package/docs/channels/groups.md +0 -364
- package/docs/channels/imessage.md +0 -366
- package/docs/channels/index.md +0 -46
- package/docs/channels/irc.md +0 -234
- package/docs/channels/line.md +0 -186
- package/docs/channels/location.md +0 -56
- package/docs/channels/matrix.md +0 -300
- package/docs/channels/mattermost.md +0 -158
- package/docs/channels/msteams.md +0 -769
- package/docs/channels/nextcloud-talk.md +0 -138
- package/docs/channels/nostr.md +0 -233
- package/docs/channels/pairing.md +0 -100
- package/docs/channels/signal.md +0 -322
- package/docs/channels/slack.md +0 -510
- package/docs/channels/telegram.md +0 -748
- package/docs/channels/tlon.md +0 -148
- package/docs/channels/troubleshooting.md +0 -110
- package/docs/channels/twitch.md +0 -379
- package/docs/channels/whatsapp.md +0 -444
- package/docs/channels/zalo.md +0 -192
- package/docs/channels/zalouser.md +0 -140
- package/docs/ci.md +0 -50
- package/docs/cli/acp.md +0 -182
- package/docs/cli/agent.md +0 -24
- package/docs/cli/agents.md +0 -75
- package/docs/cli/approvals.md +0 -50
- package/docs/cli/browser.md +0 -107
- package/docs/cli/channels.md +0 -73
- package/docs/cli/config.md +0 -50
- package/docs/cli/configure.md +0 -32
- package/docs/cli/cron.md +0 -44
- package/docs/cli/dashboard.md +0 -16
- package/docs/cli/devices.md +0 -73
- package/docs/cli/directory.md +0 -62
- package/docs/cli/dns.md +0 -23
- package/docs/cli/docs.md +0 -15
- package/docs/cli/doctor.md +0 -41
- package/docs/cli/gateway.md +0 -202
- package/docs/cli/health.md +0 -21
- package/docs/cli/hooks.md +0 -313
- package/docs/cli/index.md +0 -1029
- package/docs/cli/logs.md +0 -28
- package/docs/cli/memory.md +0 -45
- package/docs/cli/message.md +0 -214
- package/docs/cli/models.md +0 -79
- package/docs/cli/node.md +0 -112
- package/docs/cli/nodes.md +0 -73
- package/docs/cli/onboard.md +0 -76
- package/docs/cli/pairing.md +0 -21
- package/docs/cli/plugins.md +0 -92
- package/docs/cli/reset.md +0 -17
- package/docs/cli/sandbox.md +0 -152
- package/docs/cli/security.md +0 -64
- package/docs/cli/sessions.md +0 -16
- package/docs/cli/setup.md +0 -29
- package/docs/cli/skills.md +0 -26
- package/docs/cli/status.md +0 -25
- package/docs/cli/system.md +0 -60
- package/docs/cli/tui.md +0 -23
- package/docs/cli/uninstall.md +0 -17
- package/docs/cli/update.md +0 -98
- package/docs/cli/voicecall.md +0 -34
- package/docs/cli/webhooks.md +0 -25
- package/docs/concepts/agent-loop.md +0 -148
- package/docs/concepts/agent-workspace.md +0 -234
- package/docs/concepts/agent.md +0 -123
- package/docs/concepts/architecture.md +0 -135
- package/docs/concepts/compaction.md +0 -61
- package/docs/concepts/context.md +0 -161
- package/docs/concepts/features.md +0 -51
- package/docs/concepts/markdown-formatting.md +0 -128
- package/docs/concepts/memory.md +0 -729
- package/docs/concepts/messages.md +0 -153
- package/docs/concepts/model-failover.md +0 -149
- package/docs/concepts/model-providers.md +0 -424
- package/docs/concepts/models.md +0 -208
- package/docs/concepts/multi-agent.md +0 -521
- package/docs/concepts/oauth.md +0 -145
- package/docs/concepts/presence.md +0 -102
- package/docs/concepts/queue.md +0 -86
- package/docs/concepts/retry.md +0 -64
- package/docs/concepts/session-pruning.md +0 -123
- package/docs/concepts/session-tool.md +0 -213
- package/docs/concepts/session.md +0 -199
- package/docs/concepts/sessions.md +0 -10
- package/docs/concepts/streaming.md +0 -129
- package/docs/concepts/system-prompt.md +0 -128
- package/docs/concepts/timezone.md +0 -90
- package/docs/concepts/typebox.md +0 -289
- package/docs/concepts/typing-indicators.md +0 -68
- package/docs/concepts/usage-tracking.md +0 -35
- package/docs/date-time.md +0 -127
- package/docs/debug/node-issue.md +0 -85
- package/docs/diagnostics/flags.md +0 -91
- package/docs/docs.json +0 -1849
- package/docs/experiments/onboarding-config-protocol.md +0 -40
- package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +0 -229
- package/docs/experiments/plans/cron-add-hardening.md +0 -62
- package/docs/experiments/plans/group-policy-hardening.md +0 -40
- package/docs/experiments/plans/openresponses-gateway.md +0 -123
- package/docs/experiments/plans/pty-process-supervision.md +0 -192
- package/docs/experiments/plans/session-binding-channel-agnostic.md +0 -202
- package/docs/experiments/plans/thread-bound-subagents.md +0 -281
- package/docs/experiments/proposals/model-config.md +0 -36
- package/docs/experiments/research/memory.md +0 -228
- package/docs/gateway/authentication.md +0 -162
- package/docs/gateway/background-process.md +0 -96
- package/docs/gateway/bonjour.md +0 -177
- package/docs/gateway/bridge-protocol.md +0 -91
- package/docs/gateway/cli-backends.md +0 -225
- package/docs/gateway/configuration-examples.md +0 -610
- package/docs/gateway/configuration-reference.md +0 -2465
- package/docs/gateway/configuration.md +0 -488
- package/docs/gateway/discovery.md +0 -123
- package/docs/gateway/doctor.md +0 -282
- package/docs/gateway/gateway-lock.md +0 -34
- package/docs/gateway/health.md +0 -35
- package/docs/gateway/heartbeat.md +0 -374
- package/docs/gateway/index.md +0 -254
- package/docs/gateway/local-models.md +0 -150
- package/docs/gateway/logging.md +0 -113
- package/docs/gateway/multiple-gateways.md +0 -112
- package/docs/gateway/network-model.md +0 -20
- package/docs/gateway/openai-http-api.md +0 -119
- package/docs/gateway/openresponses-http-api.md +0 -333
- package/docs/gateway/pairing.md +0 -99
- package/docs/gateway/protocol.md +0 -221
- package/docs/gateway/remote-gateway-readme.md +0 -158
- package/docs/gateway/remote.md +0 -131
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -128
- package/docs/gateway/sandboxing.md +0 -203
- package/docs/gateway/security/index.md +0 -931
- package/docs/gateway/tailscale.md +0 -132
- package/docs/gateway/tools-invoke-http-api.md +0 -110
- package/docs/gateway/troubleshooting.md +0 -317
- package/docs/gateway/trusted-proxy-auth.md +0 -270
- package/docs/glass-ui-rendering-invariants.md +0 -451
- package/docs/help/debugging.md +0 -162
- package/docs/help/environment.md +0 -107
- package/docs/help/faq.md +0 -2846
- package/docs/help/index.md +0 -21
- package/docs/help/scripts.md +0 -28
- package/docs/help/testing.md +0 -385
- package/docs/help/troubleshooting.md +0 -264
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/groups-flow.svg +0 -52
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +0 -186
- package/docs/install/ansible.md +0 -207
- package/docs/install/bun.md +0 -59
- package/docs/install/development-channels.md +0 -75
- package/docs/install/docker.md +0 -583
- package/docs/install/exe-dev.md +0 -126
- package/docs/install/fly.md +0 -472
- package/docs/install/gcp.md +0 -499
- package/docs/install/hetzner.md +0 -347
- package/docs/install/index.md +0 -218
- package/docs/install/installer.md +0 -405
- package/docs/install/macos-vm.md +0 -281
- package/docs/install/migrating.md +0 -192
- package/docs/install/nix.md +0 -98
- package/docs/install/node.md +0 -138
- package/docs/install/northflank.mdx +0 -49
- package/docs/install/podman.md +0 -108
- package/docs/install/railway.mdx +0 -95
- package/docs/install/render.mdx +0 -158
- package/docs/install/uninstall.md +0 -128
- package/docs/install/updating.md +0 -231
- package/docs/ja-JP/AGENTS.md +0 -37
- package/docs/ja-JP/index.md +0 -183
- package/docs/ja-JP/start/getting-started.md +0 -125
- package/docs/ja-JP/start/wizard.md +0 -77
- package/docs/logging.md +0 -350
- package/docs/nav-tabs-underline.js +0 -100
- package/docs/network.md +0 -54
- package/docs/nodes/audio.md +0 -133
- package/docs/nodes/camera.md +0 -156
- package/docs/nodes/images.md +0 -72
- package/docs/nodes/index.md +0 -342
- package/docs/nodes/location-command.md +0 -113
- package/docs/nodes/media-understanding.md +0 -379
- package/docs/nodes/talk.md +0 -90
- package/docs/nodes/troubleshooting.md +0 -112
- package/docs/nodes/voicewake.md +0 -65
- package/docs/perplexity.md +0 -80
- package/docs/phase-6.5-pre-flight-audit.md +0 -268
- package/docs/pi-dev.md +0 -70
- package/docs/pi.md +0 -610
- package/docs/platforms/android.md +0 -151
- package/docs/platforms/digitalocean.md +0 -265
- package/docs/platforms/index.md +0 -53
- package/docs/platforms/ios.md +0 -108
- package/docs/platforms/linux.md +0 -94
- package/docs/platforms/mac/bundled-gateway.md +0 -73
- package/docs/platforms/mac/canvas.md +0 -125
- package/docs/platforms/mac/child-process.md +0 -69
- package/docs/platforms/mac/dev-setup.md +0 -104
- package/docs/platforms/mac/health.md +0 -34
- package/docs/platforms/mac/icon.md +0 -31
- package/docs/platforms/mac/logging.md +0 -57
- package/docs/platforms/mac/menu-bar.md +0 -81
- package/docs/platforms/mac/peekaboo.md +0 -65
- package/docs/platforms/mac/permissions.md +0 -50
- package/docs/platforms/mac/release.md +0 -85
- package/docs/platforms/mac/remote.md +0 -84
- package/docs/platforms/mac/signing.md +0 -47
- package/docs/platforms/mac/skills.md +0 -33
- package/docs/platforms/mac/voice-overlay.md +0 -60
- package/docs/platforms/mac/voicewake.md +0 -66
- package/docs/platforms/mac/webchat.md +0 -43
- package/docs/platforms/mac/xpc.md +0 -61
- package/docs/platforms/macos.md +0 -204
- package/docs/platforms/oracle.md +0 -303
- package/docs/platforms/raspberry-pi.md +0 -358
- package/docs/platforms/windows.md +0 -159
- package/docs/plugins/agent-tools.md +0 -99
- package/docs/plugins/community.md +0 -44
- package/docs/plugins/manifest.md +0 -71
- package/docs/plugins/voice-call.md +0 -322
- package/docs/plugins/zalouser.md +0 -81
- package/docs/prose.md +0 -134
- package/docs/providers/anthropic.md +0 -174
- package/docs/providers/bedrock.md +0 -176
- package/docs/providers/claude-max-api-proxy.md +0 -148
- package/docs/providers/cloudflare-ai-gateway.md +0 -71
- package/docs/providers/deepgram.md +0 -93
- package/docs/providers/github-copilot.md +0 -72
- package/docs/providers/glm.md +0 -33
- package/docs/providers/huggingface.md +0 -209
- package/docs/providers/index.md +0 -67
- package/docs/providers/litellm.md +0 -153
- package/docs/providers/minimax.md +0 -208
- package/docs/providers/models.md +0 -52
- package/docs/providers/moonshot.md +0 -142
- package/docs/providers/nvidia.md +0 -55
- package/docs/providers/ollama.md +0 -250
- package/docs/providers/openai.md +0 -62
- package/docs/providers/opencode.md +0 -36
- package/docs/providers/openrouter.md +0 -37
- package/docs/providers/qianfan.md +0 -38
- package/docs/providers/qwen.md +0 -53
- package/docs/providers/synthetic.md +0 -99
- package/docs/providers/together.md +0 -65
- package/docs/providers/venice.md +0 -267
- package/docs/providers/vercel-ai-gateway.md +0 -50
- package/docs/providers/vllm.md +0 -92
- package/docs/providers/xiaomi.md +0 -64
- package/docs/providers/zai.md +0 -38
- package/docs/refactor/exec-host.md +0 -316
- package/docs/refactor/outbound-session-mirroring.md +0 -83
- package/docs/refactor/plugin-sdk.md +0 -214
- package/docs/refactor/strict-config.md +0 -93
- package/docs/refactor/syminet.md +0 -417
- package/docs/reference/AGENTS.default.md +0 -123
- package/docs/reference/RELEASING.md +0 -120
- package/docs/reference/api-usage-costs.md +0 -138
- package/docs/reference/credits.md +0 -28
- package/docs/reference/device-models.md +0 -47
- package/docs/reference/rpc.md +0 -43
- package/docs/reference/session-management-compaction.md +0 -284
- package/docs/reference/test.md +0 -51
- package/docs/reference/token-use.md +0 -136
- package/docs/reference/transcript-hygiene.md +0 -151
- package/docs/reference/wizard.md +0 -265
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -89
- package/docs/security/README.md +0 -16
- package/docs/security/THREAT-MODEL-ATLAS.md +0 -600
- package/docs/security/formal-verification.md +0 -164
- package/docs/start/bootstrapping.md +0 -41
- package/docs/start/docs-directory.md +0 -63
- package/docs/start/getting-started.md +0 -135
- package/docs/start/hubs.md +0 -196
- package/docs/start/lore.md +0 -216
- package/docs/start/onboarding-overview.md +0 -51
- package/docs/start/onboarding.md +0 -81
- package/docs/start/quickstart.md +0 -22
- package/docs/start/setup.md +0 -160
- package/docs/start/showcase.md +0 -414
- package/docs/start/symi.md +0 -211
- package/docs/start/wizard-cli-automation.md +0 -158
- package/docs/start/wizard-cli-reference.md +0 -255
- package/docs/start/wizard.md +0 -109
- package/docs/style.css +0 -37
- package/docs/tools/agent-send.md +0 -52
- package/docs/tools/apply-patch.md +0 -51
- package/docs/tools/browser-linux-troubleshooting.md +0 -139
- package/docs/tools/browser-login.md +0 -67
- package/docs/tools/browser.md +0 -587
- package/docs/tools/chrome-extension.md +0 -183
- package/docs/tools/creating-skills.md +0 -54
- package/docs/tools/elevated.md +0 -55
- package/docs/tools/exec-approvals.md +0 -261
- package/docs/tools/exec.md +0 -184
- package/docs/tools/firecrawl.md +0 -61
- package/docs/tools/index.md +0 -540
- package/docs/tools/llm-task.md +0 -115
- package/docs/tools/loop-detection.md +0 -98
- package/docs/tools/multi-agent-sandbox-tools.md +0 -396
- package/docs/tools/pipeline.md +0 -340
- package/docs/tools/plugin.md +0 -687
- package/docs/tools/reactions.md +0 -21
- package/docs/tools/skills-config.md +0 -76
- package/docs/tools/skills.md +0 -300
- package/docs/tools/slash-commands.md +0 -202
- package/docs/tools/subagents.md +0 -232
- package/docs/tools/symihub.md +0 -256
- package/docs/tools/thinking.md +0 -75
- package/docs/tools/web.md +0 -265
- package/docs/tts.md +0 -398
- package/docs/vps.md +0 -43
- package/docs/web/control-ui.md +0 -247
- package/docs/web/dashboard.md +0 -46
- package/docs/web/index.md +0 -118
- package/docs/web/tui.md +0 -162
- package/docs/web/webchat.md +0 -53
- package/docs/whatsapp-symi-ai-zh.jpg +0 -0
- package/docs/whatsapp-symi.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +0 -59
- package/docs/zh-CN/automation/auth-monitoring.md +0 -47
- package/docs/zh-CN/automation/cron-jobs.md +0 -422
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +0 -286
- package/docs/zh-CN/automation/gmail-pubsub.md +0 -249
- package/docs/zh-CN/automation/hooks.md +0 -881
- package/docs/zh-CN/automation/poll.md +0 -68
- package/docs/zh-CN/automation/troubleshooting.md +0 -8
- package/docs/zh-CN/automation/webhook.md +0 -161
- package/docs/zh-CN/brave-search.md +0 -48
- package/docs/zh-CN/channels/bluebubbles.md +0 -271
- package/docs/zh-CN/channels/broadcast-groups.md +0 -448
- package/docs/zh-CN/channels/channel-routing.md +0 -112
- package/docs/zh-CN/channels/feishu.md +0 -629
- package/docs/zh-CN/channels/googlechat.md +0 -257
- package/docs/zh-CN/channels/grammy.md +0 -38
- package/docs/zh-CN/channels/group-messages.md +0 -89
- package/docs/zh-CN/channels/groups.md +0 -369
- package/docs/zh-CN/channels/imessage.md +0 -300
- package/docs/zh-CN/channels/index.md +0 -52
- package/docs/zh-CN/channels/line.md +0 -180
- package/docs/zh-CN/channels/location.md +0 -63
- package/docs/zh-CN/channels/matrix.md +0 -221
- package/docs/zh-CN/channels/mattermost.md +0 -144
- package/docs/zh-CN/channels/msteams.md +0 -773
- package/docs/zh-CN/channels/nextcloud-talk.md +0 -142
- package/docs/zh-CN/channels/nostr.md +0 -240
- package/docs/zh-CN/channels/pairing.md +0 -86
- package/docs/zh-CN/channels/signal.md +0 -207
- package/docs/zh-CN/channels/slack.md +0 -529
- package/docs/zh-CN/channels/telegram.md +0 -748
- package/docs/zh-CN/channels/tlon.md +0 -136
- package/docs/zh-CN/channels/troubleshooting.md +0 -34
- package/docs/zh-CN/channels/twitch.md +0 -385
- package/docs/zh-CN/channels/whatsapp.md +0 -411
- package/docs/zh-CN/channels/zalo.md +0 -196
- package/docs/zh-CN/channels/zalouser.md +0 -147
- package/docs/zh-CN/cli/acp.md +0 -173
- package/docs/zh-CN/cli/agent.md +0 -30
- package/docs/zh-CN/cli/agents.md +0 -82
- package/docs/zh-CN/cli/approvals.md +0 -57
- package/docs/zh-CN/cli/browser.md +0 -114
- package/docs/zh-CN/cli/channels.md +0 -80
- package/docs/zh-CN/cli/config.md +0 -57
- package/docs/zh-CN/cli/configure.md +0 -37
- package/docs/zh-CN/cli/cron.md +0 -43
- package/docs/zh-CN/cli/dashboard.md +0 -23
- package/docs/zh-CN/cli/devices.md +0 -74
- package/docs/zh-CN/cli/directory.md +0 -69
- package/docs/zh-CN/cli/dns.md +0 -30
- package/docs/zh-CN/cli/docs.md +0 -22
- package/docs/zh-CN/cli/doctor.md +0 -48
- package/docs/zh-CN/cli/gateway.md +0 -206
- package/docs/zh-CN/cli/health.md +0 -28
- package/docs/zh-CN/cli/hooks.md +0 -298
- package/docs/zh-CN/cli/index.md +0 -1025
- package/docs/zh-CN/cli/logs.md +0 -31
- package/docs/zh-CN/cli/memory.md +0 -52
- package/docs/zh-CN/cli/message.md +0 -205
- package/docs/zh-CN/cli/models.md +0 -85
- package/docs/zh-CN/cli/node.md +0 -115
- package/docs/zh-CN/cli/nodes.md +0 -80
- package/docs/zh-CN/cli/onboard.md +0 -36
- package/docs/zh-CN/cli/pairing.md +0 -28
- package/docs/zh-CN/cli/plugins.md +0 -66
- package/docs/zh-CN/cli/reset.md +0 -24
- package/docs/zh-CN/cli/sandbox.md +0 -158
- package/docs/zh-CN/cli/security.md +0 -33
- package/docs/zh-CN/cli/sessions.md +0 -23
- package/docs/zh-CN/cli/setup.md +0 -36
- package/docs/zh-CN/cli/skills.md +0 -33
- package/docs/zh-CN/cli/status.md +0 -32
- package/docs/zh-CN/cli/system.md +0 -63
- package/docs/zh-CN/cli/tui.md +0 -30
- package/docs/zh-CN/cli/uninstall.md +0 -24
- package/docs/zh-CN/cli/update.md +0 -101
- package/docs/zh-CN/cli/voicecall.md +0 -41
- package/docs/zh-CN/cli/webhooks.md +0 -32
- package/docs/zh-CN/concepts/agent-loop.md +0 -146
- package/docs/zh-CN/concepts/agent-workspace.md +0 -219
- package/docs/zh-CN/concepts/agent.md +0 -115
- package/docs/zh-CN/concepts/architecture.md +0 -122
- package/docs/zh-CN/concepts/compaction.md +0 -67
- package/docs/zh-CN/concepts/context.md +0 -168
- package/docs/zh-CN/concepts/features.md +0 -57
- package/docs/zh-CN/concepts/markdown-formatting.md +0 -115
- package/docs/zh-CN/concepts/memory.md +0 -412
- package/docs/zh-CN/concepts/messages.md +0 -140
- package/docs/zh-CN/concepts/model-failover.md +0 -145
- package/docs/zh-CN/concepts/model-providers.md +0 -320
- package/docs/zh-CN/concepts/models.md +0 -196
- package/docs/zh-CN/concepts/multi-agent.md +0 -371
- package/docs/zh-CN/concepts/oauth.md +0 -151
- package/docs/zh-CN/concepts/presence.md +0 -99
- package/docs/zh-CN/concepts/queue.md +0 -91
- package/docs/zh-CN/concepts/retry.md +0 -71
- package/docs/zh-CN/concepts/session-pruning.md +0 -129
- package/docs/zh-CN/concepts/session-tool.md +0 -198
- package/docs/zh-CN/concepts/session.md +0 -158
- package/docs/zh-CN/concepts/sessions.md +0 -17
- package/docs/zh-CN/concepts/streaming.md +0 -131
- package/docs/zh-CN/concepts/system-prompt.md +0 -99
- package/docs/zh-CN/concepts/timezone.md +0 -94
- package/docs/zh-CN/concepts/typebox.md +0 -284
- package/docs/zh-CN/concepts/typing-indicators.md +0 -74
- package/docs/zh-CN/concepts/usage-tracking.md +0 -42
- package/docs/zh-CN/date-time.md +0 -128
- package/docs/zh-CN/debug/node-issue.md +0 -90
- package/docs/zh-CN/diagnostics/flags.md +0 -98
- package/docs/zh-CN/experiments/onboarding-config-protocol.md +0 -47
- package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -69
- package/docs/zh-CN/experiments/plans/group-policy-hardening.md +0 -45
- package/docs/zh-CN/experiments/plans/openresponses-gateway.md +0 -121
- package/docs/zh-CN/experiments/proposals/model-config.md +0 -42
- package/docs/zh-CN/experiments/research/memory.md +0 -235
- package/docs/zh-CN/gateway/authentication.md +0 -142
- package/docs/zh-CN/gateway/background-process.md +0 -100
- package/docs/zh-CN/gateway/bonjour.md +0 -174
- package/docs/zh-CN/gateway/bridge-protocol.md +0 -86
- package/docs/zh-CN/gateway/cli-backends.md +0 -213
- package/docs/zh-CN/gateway/configuration-examples.md +0 -580
- package/docs/zh-CN/gateway/configuration.md +0 -3284
- package/docs/zh-CN/gateway/discovery.md +0 -123
- package/docs/zh-CN/gateway/doctor.md +0 -238
- package/docs/zh-CN/gateway/gateway-lock.md +0 -41
- package/docs/zh-CN/gateway/health.md +0 -42
- package/docs/zh-CN/gateway/heartbeat.md +0 -272
- package/docs/zh-CN/gateway/index.md +0 -335
- package/docs/zh-CN/gateway/local-models.md +0 -157
- package/docs/zh-CN/gateway/logging.md +0 -114
- package/docs/zh-CN/gateway/multiple-gateways.md +0 -119
- package/docs/zh-CN/gateway/network-model.md +0 -23
- package/docs/zh-CN/gateway/openai-http-api.md +0 -125
- package/docs/zh-CN/gateway/openresponses-http-api.md +0 -317
- package/docs/zh-CN/gateway/pairing.md +0 -99
- package/docs/zh-CN/gateway/protocol.md +0 -220
- package/docs/zh-CN/gateway/remote-gateway-readme.md +0 -164
- package/docs/zh-CN/gateway/remote.md +0 -133
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -135
- package/docs/zh-CN/gateway/sandboxing.md +0 -188
- package/docs/zh-CN/gateway/security/index.md +0 -772
- package/docs/zh-CN/gateway/tailscale.md +0 -124
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +0 -92
- package/docs/zh-CN/gateway/troubleshooting.md +0 -758
- package/docs/zh-CN/help/debugging.md +0 -160
- package/docs/zh-CN/help/environment.md +0 -88
- package/docs/zh-CN/help/faq.md +0 -2613
- package/docs/zh-CN/help/index.md +0 -28
- package/docs/zh-CN/help/scripts.md +0 -35
- package/docs/zh-CN/help/testing.md +0 -375
- package/docs/zh-CN/help/troubleshooting.md +0 -104
- package/docs/zh-CN/index.md +0 -183
- package/docs/zh-CN/install/ansible.md +0 -214
- package/docs/zh-CN/install/bun.md +0 -65
- package/docs/zh-CN/install/development-channels.md +0 -81
- package/docs/zh-CN/install/docker.md +0 -525
- package/docs/zh-CN/install/exe-dev.md +0 -127
- package/docs/zh-CN/install/fly.md +0 -476
- package/docs/zh-CN/install/gcp.md +0 -509
- package/docs/zh-CN/install/hetzner.md +0 -336
- package/docs/zh-CN/install/index.md +0 -193
- package/docs/zh-CN/install/installer.md +0 -128
- package/docs/zh-CN/install/macos-vm.md +0 -288
- package/docs/zh-CN/install/migrating.md +0 -199
- package/docs/zh-CN/install/nix.md +0 -99
- package/docs/zh-CN/install/node.md +0 -8
- package/docs/zh-CN/install/northflank.mdx +0 -56
- package/docs/zh-CN/install/railway.mdx +0 -102
- package/docs/zh-CN/install/render.mdx +0 -168
- package/docs/zh-CN/install/uninstall.md +0 -135
- package/docs/zh-CN/install/updating.md +0 -233
- package/docs/zh-CN/logging.md +0 -329
- package/docs/zh-CN/network.md +0 -59
- package/docs/zh-CN/nodes/audio.md +0 -120
- package/docs/zh-CN/nodes/camera.md +0 -162
- package/docs/zh-CN/nodes/images.md +0 -79
- package/docs/zh-CN/nodes/index.md +0 -348
- package/docs/zh-CN/nodes/location-command.md +0 -120
- package/docs/zh-CN/nodes/media-understanding.md +0 -380
- package/docs/zh-CN/nodes/talk.md +0 -97
- package/docs/zh-CN/nodes/troubleshooting.md +0 -8
- package/docs/zh-CN/nodes/voicewake.md +0 -72
- package/docs/zh-CN/perplexity.md +0 -84
- package/docs/zh-CN/pi-dev.md +0 -77
- package/docs/zh-CN/pi.md +0 -617
- package/docs/zh-CN/platforms/android.md +0 -155
- package/docs/zh-CN/platforms/digitalocean.md +0 -268
- package/docs/zh-CN/platforms/index.md +0 -60
- package/docs/zh-CN/platforms/ios.md +0 -114
- package/docs/zh-CN/platforms/linux.md +0 -101
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +0 -75
- package/docs/zh-CN/platforms/mac/canvas.md +0 -128
- package/docs/zh-CN/platforms/mac/child-process.md +0 -73
- package/docs/zh-CN/platforms/mac/dev-setup.md +0 -109
- package/docs/zh-CN/platforms/mac/health.md +0 -41
- package/docs/zh-CN/platforms/mac/icon.md +0 -38
- package/docs/zh-CN/platforms/mac/logging.md +0 -64
- package/docs/zh-CN/platforms/mac/menu-bar.md +0 -88
- package/docs/zh-CN/platforms/mac/peekaboo.md +0 -62
- package/docs/zh-CN/platforms/mac/permissions.md +0 -46
- package/docs/zh-CN/platforms/mac/release.md +0 -92
- package/docs/zh-CN/platforms/mac/remote.md +0 -90
- package/docs/zh-CN/platforms/mac/signing.md +0 -54
- package/docs/zh-CN/platforms/mac/skills.md +0 -40
- package/docs/zh-CN/platforms/mac/voice-overlay.md +0 -67
- package/docs/zh-CN/platforms/mac/voicewake.md +0 -73
- package/docs/zh-CN/platforms/mac/webchat.md +0 -43
- package/docs/zh-CN/platforms/mac/xpc.md +0 -68
- package/docs/zh-CN/platforms/macos.md +0 -193
- package/docs/zh-CN/platforms/oracle.md +0 -310
- package/docs/zh-CN/platforms/raspberry-pi.md +0 -365
- package/docs/zh-CN/platforms/windows.md +0 -156
- package/docs/zh-CN/plugins/agent-tools.md +0 -99
- package/docs/zh-CN/plugins/manifest.md +0 -68
- package/docs/zh-CN/plugins/voice-call.md +0 -250
- package/docs/zh-CN/plugins/zalouser.md +0 -88
- package/docs/zh-CN/prose.md +0 -141
- package/docs/zh-CN/providers/anthropic.md +0 -159
- package/docs/zh-CN/providers/bedrock.md +0 -170
- package/docs/zh-CN/providers/claude-max-api-proxy.md +0 -155
- package/docs/zh-CN/providers/deepgram.md +0 -97
- package/docs/zh-CN/providers/github-copilot.md +0 -67
- package/docs/zh-CN/providers/glm.md +0 -39
- package/docs/zh-CN/providers/index.md +0 -66
- package/docs/zh-CN/providers/minimax.md +0 -206
- package/docs/zh-CN/providers/models.md +0 -55
- package/docs/zh-CN/providers/moonshot.md +0 -145
- package/docs/zh-CN/providers/ollama.md +0 -230
- package/docs/zh-CN/providers/openai.md +0 -68
- package/docs/zh-CN/providers/opencode.md +0 -41
- package/docs/zh-CN/providers/openrouter.md +0 -43
- package/docs/zh-CN/providers/qianfan.md +0 -8
- package/docs/zh-CN/providers/qwen.md +0 -55
- package/docs/zh-CN/providers/synthetic.md +0 -102
- package/docs/zh-CN/providers/venice.md +0 -274
- package/docs/zh-CN/providers/vercel-ai-gateway.md +0 -57
- package/docs/zh-CN/providers/xiaomi.md +0 -68
- package/docs/zh-CN/providers/zai.md +0 -41
- package/docs/zh-CN/refactor/exec-host.md +0 -323
- package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -90
- package/docs/zh-CN/refactor/plugin-sdk.md +0 -221
- package/docs/zh-CN/refactor/strict-config.md +0 -100
- package/docs/zh-CN/refactor/syminet.md +0 -424
- package/docs/zh-CN/reference/AGENTS.default.md +0 -130
- package/docs/zh-CN/reference/RELEASING.md +0 -122
- package/docs/zh-CN/reference/api-usage-costs.md +0 -136
- package/docs/zh-CN/reference/credits.md +0 -34
- package/docs/zh-CN/reference/device-models.md +0 -54
- package/docs/zh-CN/reference/rpc.md +0 -48
- package/docs/zh-CN/reference/session-management-compaction.md +0 -286
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +0 -89
- package/docs/zh-CN/reference/templates/AGENTS.md +0 -234
- package/docs/zh-CN/reference/templates/BOOT.md +0 -17
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +0 -68
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +0 -54
- package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
- package/docs/zh-CN/reference/templates/SYMICORE.dev.md +0 -83
- package/docs/zh-CN/reference/templates/SYMICORE.md +0 -49
- package/docs/zh-CN/reference/templates/SYMIPULSE.md +0 -69
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +0 -31
- package/docs/zh-CN/reference/templates/TOOLS.md +0 -53
- package/docs/zh-CN/reference/templates/USER.dev.md +0 -25
- package/docs/zh-CN/reference/templates/USER.md +0 -30
- package/docs/zh-CN/reference/test.md +0 -57
- package/docs/zh-CN/reference/token-use.md +0 -119
- package/docs/zh-CN/reference/transcript-hygiene.md +0 -109
- package/docs/zh-CN/reference/wizard.md +0 -9
- package/docs/zh-CN/security/formal-verification.md +0 -171
- package/docs/zh-CN/start/bootstrapping.md +0 -9
- package/docs/zh-CN/start/docs-directory.md +0 -69
- package/docs/zh-CN/start/getting-started.md +0 -201
- package/docs/zh-CN/start/hubs.md +0 -199
- package/docs/zh-CN/start/lore.md +0 -223
- package/docs/zh-CN/start/onboarding.md +0 -105
- package/docs/zh-CN/start/quickstart.md +0 -88
- package/docs/zh-CN/start/setup.md +0 -151
- package/docs/zh-CN/start/showcase.md +0 -421
- package/docs/zh-CN/start/symi.md +0 -244
- package/docs/zh-CN/start/wizard.md +0 -326
- package/docs/zh-CN/tools/agent-send.md +0 -58
- package/docs/zh-CN/tools/apply-patch.md +0 -57
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +0 -144
- package/docs/zh-CN/tools/browser-login.md +0 -75
- package/docs/zh-CN/tools/browser.md +0 -553
- package/docs/zh-CN/tools/chrome-extension.md +0 -183
- package/docs/zh-CN/tools/creating-skills.md +0 -61
- package/docs/zh-CN/tools/elevated.md +0 -62
- package/docs/zh-CN/tools/exec-approvals.md +0 -233
- package/docs/zh-CN/tools/exec.md +0 -169
- package/docs/zh-CN/tools/firecrawl.md +0 -68
- package/docs/zh-CN/tools/index.md +0 -508
- package/docs/zh-CN/tools/llm-task.md +0 -117
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +0 -400
- package/docs/zh-CN/tools/pipeline.md +0 -349
- package/docs/zh-CN/tools/plugin.md +0 -639
- package/docs/zh-CN/tools/reactions.md +0 -28
- package/docs/zh-CN/tools/skills-config.md +0 -78
- package/docs/zh-CN/tools/skills.md +0 -279
- package/docs/zh-CN/tools/slash-commands.md +0 -196
- package/docs/zh-CN/tools/subagents.md +0 -167
- package/docs/zh-CN/tools/symihub.md +0 -209
- package/docs/zh-CN/tools/thinking.md +0 -80
- package/docs/zh-CN/tools/web.md +0 -257
- package/docs/zh-CN/tts.md +0 -373
- package/docs/zh-CN/vps.md +0 -47
- package/docs/zh-CN/web/control-ui.md +0 -190
- package/docs/zh-CN/web/dashboard.md +0 -53
- package/docs/zh-CN/web/index.md +0 -118
- package/docs/zh-CN/web/tui.md +0 -166
- package/docs/zh-CN/web/webchat.md +0 -56
- package/extensions/imessage/index.ts +0 -17
- package/extensions/imessage/node_modules/.bin/symi +0 -21
- package/extensions/imessage/package.json +0 -15
- package/extensions/imessage/src/channel.outbound.test.ts +0 -66
- package/extensions/imessage/src/channel.ts +0 -298
- package/extensions/imessage/src/runtime.ts +0 -14
- package/extensions/imessage/symi.plugin.json +0 -9
- package/extensions/line/index.ts +0 -19
- package/extensions/line/node_modules/.bin/symi +0 -21
- package/extensions/line/package.json +0 -30
- package/extensions/line/src/card-command.ts +0 -344
- package/extensions/line/src/channel.logout.test.ts +0 -133
- package/extensions/line/src/channel.sendPayload.test.ts +0 -312
- package/extensions/line/src/channel.startup.test.ts +0 -133
- package/extensions/line/src/channel.ts +0 -801
- package/extensions/line/src/runtime.ts +0 -14
- package/extensions/line/symi.plugin.json +0 -9
- package/extensions/signal/index.ts +0 -17
- package/extensions/signal/node_modules/.bin/symi +0 -21
- package/extensions/signal/package.json +0 -15
- package/extensions/signal/src/channel.ts +0 -302
- package/extensions/signal/src/runtime.ts +0 -14
- package/extensions/signal/symi.plugin.json +0 -9
- package/extensions/telegram/index.ts +0 -17
- package/extensions/telegram/node_modules/.bin/symi +0 -21
- package/extensions/telegram/package.json +0 -15
- package/extensions/telegram/src/channel.test.ts +0 -125
- package/extensions/telegram/src/channel.ts +0 -560
- package/extensions/telegram/src/runtime.ts +0 -14
- package/extensions/telegram/symi.plugin.json +0 -9
- package/extensions/whatsapp/index.ts +0 -17
- package/extensions/whatsapp/node_modules/.bin/symi +0 -21
- package/extensions/whatsapp/package.json +0 -15
- package/extensions/whatsapp/src/channel.ts +0 -465
- package/extensions/whatsapp/src/resolve-target.test.ts +0 -170
- package/extensions/whatsapp/src/runtime.ts +0 -14
- package/extensions/whatsapp/symi.plugin.json +0 -9
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Channel agnostic session binding architecture and iteration 1 delivery scope"
|
|
3
|
-
owner: "onutc"
|
|
4
|
-
status: "in-progress"
|
|
5
|
-
last_updated: "2026-02-21"
|
|
6
|
-
title: "Session Binding Channel Agnostic Plan"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Session Binding Channel Agnostic Plan
|
|
10
|
-
|
|
11
|
-
## Overview
|
|
12
|
-
|
|
13
|
-
This document defines the long term channel agnostic session binding model and the concrete scope for the next implementation iteration.
|
|
14
|
-
|
|
15
|
-
Goal:
|
|
16
|
-
|
|
17
|
-
- make subagent bound session routing a core capability
|
|
18
|
-
- keep channel specific behavior in adapters
|
|
19
|
-
|
|
20
|
-
## Why this exists
|
|
21
|
-
|
|
22
|
-
Current behavior mixes:
|
|
23
|
-
|
|
24
|
-
- completion content policy
|
|
25
|
-
- destination routing policy
|
|
26
|
-
|
|
27
|
-
This caused edge cases such as:
|
|
28
|
-
|
|
29
|
-
- duplicate main and thread delivery under concurrent runs
|
|
30
|
-
- stale token usage on reused binding managers
|
|
31
|
-
- missing activity accounting for webhook sends
|
|
32
|
-
|
|
33
|
-
## Iteration 1 scope
|
|
34
|
-
|
|
35
|
-
This iteration is intentionally limited.
|
|
36
|
-
|
|
37
|
-
### 1. Add channel agnostic core interfaces
|
|
38
|
-
|
|
39
|
-
Add core types and service interfaces for bindings and routing.
|
|
40
|
-
|
|
41
|
-
Proposed core types:
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
export type BindingTargetKind = "subagent" | "session";
|
|
45
|
-
export type BindingStatus = "active" | "ending" | "ended";
|
|
46
|
-
|
|
47
|
-
export type ConversationRef = {
|
|
48
|
-
channel: string;
|
|
49
|
-
accountId: string;
|
|
50
|
-
conversationId: string;
|
|
51
|
-
parentConversationId?: string;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export type SessionBindingRecord = {
|
|
55
|
-
bindingId: string;
|
|
56
|
-
targetSessionKey: string;
|
|
57
|
-
targetKind: BindingTargetKind;
|
|
58
|
-
conversation: ConversationRef;
|
|
59
|
-
status: BindingStatus;
|
|
60
|
-
boundAt: number;
|
|
61
|
-
expiresAt?: number;
|
|
62
|
-
metadata?: Record<string, unknown>;
|
|
63
|
-
};
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Core service contract:
|
|
67
|
-
|
|
68
|
-
```ts
|
|
69
|
-
export interface SessionBindingService {
|
|
70
|
-
bind(input: {
|
|
71
|
-
targetSessionKey: string;
|
|
72
|
-
targetKind: BindingTargetKind;
|
|
73
|
-
conversation: ConversationRef;
|
|
74
|
-
metadata?: Record<string, unknown>;
|
|
75
|
-
ttlMs?: number;
|
|
76
|
-
}): Promise<SessionBindingRecord>;
|
|
77
|
-
|
|
78
|
-
listBySession(targetSessionKey: string): SessionBindingRecord[];
|
|
79
|
-
resolveByConversation(ref: ConversationRef): SessionBindingRecord | null;
|
|
80
|
-
touch(bindingId: string, at?: number): void;
|
|
81
|
-
unbind(input: {
|
|
82
|
-
bindingId?: string;
|
|
83
|
-
targetSessionKey?: string;
|
|
84
|
-
reason: string;
|
|
85
|
-
}): Promise<SessionBindingRecord[]>;
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### 2. Add one core delivery router for subagent completions
|
|
90
|
-
|
|
91
|
-
Add a single destination resolution path for completion events.
|
|
92
|
-
|
|
93
|
-
Router contract:
|
|
94
|
-
|
|
95
|
-
```ts
|
|
96
|
-
export interface BoundDeliveryRouter {
|
|
97
|
-
resolveDestination(input: {
|
|
98
|
-
eventKind: "task_completion";
|
|
99
|
-
targetSessionKey: string;
|
|
100
|
-
requester?: ConversationRef;
|
|
101
|
-
failClosed: boolean;
|
|
102
|
-
}): {
|
|
103
|
-
binding: SessionBindingRecord | null;
|
|
104
|
-
mode: "bound" | "fallback";
|
|
105
|
-
reason: string;
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
For this iteration:
|
|
111
|
-
|
|
112
|
-
- only `task_completion` is routed through this new path
|
|
113
|
-
- existing paths for other event kinds remain as-is
|
|
114
|
-
|
|
115
|
-
Adapter responsibilities:
|
|
116
|
-
|
|
117
|
-
- create/reuse thread conversations
|
|
118
|
-
- send bound messages via webhook or channel send
|
|
119
|
-
- validate thread state (archived/deleted)
|
|
120
|
-
- map adapter metadata (webhook identity, thread ids)
|
|
121
|
-
|
|
122
|
-
### 4. Fix currently known correctness issues
|
|
123
|
-
|
|
124
|
-
Required in this iteration:
|
|
125
|
-
|
|
126
|
-
- refresh token usage when reusing existing thread binding manager
|
|
127
|
-
- stop implicit main channel fallback when a bound thread destination is selected for session mode completion
|
|
128
|
-
|
|
129
|
-
### 5. Preserve current runtime safety defaults
|
|
130
|
-
|
|
131
|
-
No behavior change for users with thread bound spawn disabled.
|
|
132
|
-
|
|
133
|
-
Defaults stay:
|
|
134
|
-
|
|
135
|
-
Result:
|
|
136
|
-
|
|
137
|
-
- new core path affects only bound session completion routing where enabled
|
|
138
|
-
|
|
139
|
-
## Not in iteration 1
|
|
140
|
-
|
|
141
|
-
Explicitly deferred:
|
|
142
|
-
|
|
143
|
-
- ACP binding targets (`targetKind: "acp"`)
|
|
144
|
-
- global replacement of all delivery paths (`spawn_ack`, future `subagent_message`)
|
|
145
|
-
- protocol level changes
|
|
146
|
-
- store migration/versioning redesign for all binding persistence
|
|
147
|
-
|
|
148
|
-
Notes on ACP:
|
|
149
|
-
|
|
150
|
-
- interface design keeps room for ACP
|
|
151
|
-
- ACP implementation is not started in this iteration
|
|
152
|
-
|
|
153
|
-
## Routing invariants
|
|
154
|
-
|
|
155
|
-
These invariants are mandatory for iteration 1.
|
|
156
|
-
|
|
157
|
-
- destination selection and content generation are separate steps
|
|
158
|
-
- if session mode completion resolves to an active bound destination, delivery must target that destination
|
|
159
|
-
- no hidden reroute from bound destination to main channel
|
|
160
|
-
- fallback behavior must be explicit and observable
|
|
161
|
-
|
|
162
|
-
## Compatibility and rollout
|
|
163
|
-
|
|
164
|
-
Compatibility target:
|
|
165
|
-
|
|
166
|
-
- no regression for users with thread bound spawning off
|
|
167
|
-
|
|
168
|
-
Rollout:
|
|
169
|
-
|
|
170
|
-
1. Land interfaces and router behind current feature gates.
|
|
171
|
-
2. Keep legacy path for non-bound flows.
|
|
172
|
-
3. Verify with targeted tests and canary runtime logs.
|
|
173
|
-
|
|
174
|
-
## Tests required in iteration 1
|
|
175
|
-
|
|
176
|
-
Unit and integration coverage required:
|
|
177
|
-
|
|
178
|
-
- manager token rotation uses latest token after manager reuse
|
|
179
|
-
- webhook sends update channel activity timestamps
|
|
180
|
-
- two active bound sessions in same requester channel do not duplicate to main channel
|
|
181
|
-
- completion for bound session mode run resolves to thread destination only
|
|
182
|
-
- disabled spawn flag keeps legacy behavior unchanged
|
|
183
|
-
|
|
184
|
-
## Proposed implementation files
|
|
185
|
-
|
|
186
|
-
Core:
|
|
187
|
-
|
|
188
|
-
- `src/infra/outbound/session-binding-service.ts` (new)
|
|
189
|
-
- `src/infra/outbound/bound-delivery-router.ts` (new)
|
|
190
|
-
- `src/agents/subagent-announce.ts` (completion destination resolution integration)
|
|
191
|
-
|
|
192
|
-
Tests:
|
|
193
|
-
|
|
194
|
-
- `src/agents/subagent-announce.format.e2e.test.ts`
|
|
195
|
-
|
|
196
|
-
## Done criteria for iteration 1
|
|
197
|
-
|
|
198
|
-
- core interfaces exist and are wired for completion routing
|
|
199
|
-
- correctness fixes above are merged with tests
|
|
200
|
-
- no main and thread duplicate completion delivery in session mode bound runs
|
|
201
|
-
- no behavior change for disabled bound spawn deployments
|
|
202
|
-
- ACP remains explicitly deferred
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
owner: "onutc"
|
|
3
|
-
status: "implemented"
|
|
4
|
-
last_updated: "2026-02-21"
|
|
5
|
-
title: "Thread Bound Subagents"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Thread Bound Subagents
|
|
9
|
-
|
|
10
|
-
## Overview
|
|
11
|
-
|
|
12
|
-
Instead of only waiting for a completion summary in the parent session, users can move into a dedicated thread that routes messages to the spawned subagent session. Replies are sent in-thread with a thread bound persona.
|
|
13
|
-
|
|
14
|
-
## Goals
|
|
15
|
-
|
|
16
|
-
- Allow direct thread conversation with a spawned subagent session.
|
|
17
|
-
- Keep default subagent orchestration channel agnostic.
|
|
18
|
-
- Support both automatic thread creation on spawn and manual focus controls.
|
|
19
|
-
- Provide predictable cleanup on completion, kill, timeout, and thread lifecycle changes.
|
|
20
|
-
- Keep behavior configurable with global defaults plus channel and account overrides.
|
|
21
|
-
|
|
22
|
-
## Out of scope
|
|
23
|
-
|
|
24
|
-
- New ACP protocol features.
|
|
25
|
-
|
|
26
|
-
## What shipped
|
|
27
|
-
|
|
28
|
-
- `sessions_spawn` supports `thread: true` and `mode: "run" | "session"`.
|
|
29
|
-
- Spawn flow supports persistent thread bound sessions.
|
|
30
|
-
- Plugin hook lifecycle for subagents:
|
|
31
|
-
- `subagent_spawning`
|
|
32
|
-
- `subagent_spawned`
|
|
33
|
-
- `subagent_delivery_target`
|
|
34
|
-
- `subagent_ended`
|
|
35
|
-
- Text commands for manual control:
|
|
36
|
-
- `/focus`
|
|
37
|
-
- `/unfocus`
|
|
38
|
-
- `/agents`
|
|
39
|
-
- `/session ttl`
|
|
40
|
-
|
|
41
|
-
## Core concepts
|
|
42
|
-
|
|
43
|
-
### Spawn modes
|
|
44
|
-
|
|
45
|
-
- `mode: "run"`
|
|
46
|
-
- one task lifecycle
|
|
47
|
-
- completion announcement flow
|
|
48
|
-
- `mode: "session"`
|
|
49
|
-
- persistent thread bound session
|
|
50
|
-
- supports follow up user messages in thread
|
|
51
|
-
|
|
52
|
-
Default mode behavior:
|
|
53
|
-
|
|
54
|
-
- if `thread: true` and mode omitted, mode defaults to `"session"`
|
|
55
|
-
- otherwise mode defaults to `"run"`
|
|
56
|
-
|
|
57
|
-
Constraint:
|
|
58
|
-
|
|
59
|
-
- `mode: "session"` requires `thread: true`
|
|
60
|
-
|
|
61
|
-
### Thread binding target model
|
|
62
|
-
|
|
63
|
-
Bindings are generic targets, not only subagents.
|
|
64
|
-
|
|
65
|
-
- `targetKind: "subagent" | "acp"`
|
|
66
|
-
- `targetSessionKey: string`
|
|
67
|
-
|
|
68
|
-
This allows the same routing primitive to support ACP/session bindings as well.
|
|
69
|
-
|
|
70
|
-
### Thread binding manager
|
|
71
|
-
|
|
72
|
-
The manager is responsible for:
|
|
73
|
-
|
|
74
|
-
- binding or creating threads for a session target
|
|
75
|
-
- unbinding by thread or by target session
|
|
76
|
-
- managing webhook reuse and recent unbound webhook echo suppression
|
|
77
|
-
- TTL based unbind and stale thread cleanup
|
|
78
|
-
- persistence load and save
|
|
79
|
-
|
|
80
|
-
## Architecture
|
|
81
|
-
|
|
82
|
-
### Core and extension boundary
|
|
83
|
-
|
|
84
|
-
Core emits lifecycle intent through plugin hooks.
|
|
85
|
-
|
|
86
|
-
- pre spawn thread bind preparation
|
|
87
|
-
- completion delivery target override to bound thread
|
|
88
|
-
- unbind on subagent end
|
|
89
|
-
|
|
90
|
-
### Plugin hook flow
|
|
91
|
-
|
|
92
|
-
1. `subagent_spawning`
|
|
93
|
-
- before run starts
|
|
94
|
-
- can block spawn with `status: "error"`
|
|
95
|
-
- used to prepare thread binding when `thread: true`
|
|
96
|
-
2. `subagent_spawned`
|
|
97
|
-
- post run registration event
|
|
98
|
-
3. `subagent_delivery_target`
|
|
99
|
-
- completion routing override hook
|
|
100
|
-
4. `subagent_ended`
|
|
101
|
-
- cleanup and unbind signal
|
|
102
|
-
|
|
103
|
-
### Account ID normalization contract
|
|
104
|
-
|
|
105
|
-
Thread binding and routing state must use one canonical account id abstraction.
|
|
106
|
-
|
|
107
|
-
Specification:
|
|
108
|
-
|
|
109
|
-
- Introduce a shared account id module (proposed: `src/routing/account-id.ts`) and stop defining local normalizers.
|
|
110
|
-
- Expose two explicit helpers:
|
|
111
|
-
- `normalizeAccountId(value): string`
|
|
112
|
-
- returns canonical, defaulted id (current default is `default`)
|
|
113
|
-
- use for map keys, manager registration and lookup, persistence keys, routing keys
|
|
114
|
-
- `normalizeOptionalAccountId(value): string | undefined`
|
|
115
|
-
- returns canonical id when present, `undefined` when absent
|
|
116
|
-
- use for inbound optional context fields and merge logic
|
|
117
|
-
- Do not implement ad hoc account normalization in feature modules.
|
|
118
|
-
- This includes `trim`, `toLowerCase`, or defaulting logic in local helper functions.
|
|
119
|
-
- Any map keyed by account id must only accept canonical ids from shared helpers.
|
|
120
|
-
- Hook payloads and delivery context should carry raw optional account ids, and normalize at module boundaries only.
|
|
121
|
-
|
|
122
|
-
Migration guardrails:
|
|
123
|
-
|
|
124
|
-
- Replace duplicate normalizers in routing, reply payload, command context, and provider helpers with shared helpers.
|
|
125
|
-
- Add contract tests that assert identical normalization behavior across:
|
|
126
|
-
- route resolution
|
|
127
|
-
- thread binding manager lookup
|
|
128
|
-
- reply delivery target filtering
|
|
129
|
-
- command run context merge
|
|
130
|
-
|
|
131
|
-
### Persistence and state
|
|
132
|
-
|
|
133
|
-
Binding state path:
|
|
134
|
-
|
|
135
|
-
Record shape contains:
|
|
136
|
-
|
|
137
|
-
- account, channel, thread
|
|
138
|
-
- target kind and target session key
|
|
139
|
-
- agent label metadata
|
|
140
|
-
- webhook id/token
|
|
141
|
-
- boundBy, boundAt, expiresAt
|
|
142
|
-
|
|
143
|
-
State is stored on `globalThis` to keep one shared registry across ESM and Jiti loader paths.
|
|
144
|
-
|
|
145
|
-
## Configuration
|
|
146
|
-
|
|
147
|
-
### Effective precedence
|
|
148
|
-
|
|
149
|
-
- global: `session.threadBindings.<key>`
|
|
150
|
-
|
|
151
|
-
### Keys
|
|
152
|
-
|
|
153
|
-
| Key | Scope | Default | Notes |
|
|
154
|
-
| --------------------------------- | ------ | ------- | -------------------------- |
|
|
155
|
-
| `session.threadBindings.enabled` | global | `true` | master default kill switch |
|
|
156
|
-
| `session.threadBindings.ttlHours` | global | `24` | default auto unfocus TTL |
|
|
157
|
-
|
|
158
|
-
### Runtime effect of enable switch
|
|
159
|
-
|
|
160
|
-
- provider creates a noop thread binding manager for runtime wiring
|
|
161
|
-
- no real manager is registered for lookup by account id
|
|
162
|
-
- inbound bound thread routing is effectively disabled
|
|
163
|
-
- completion routing overrides do not resolve bound thread origins
|
|
164
|
-
- `/focus`, `/unfocus`, and thread binding specific operations report unavailable
|
|
165
|
-
|
|
166
|
-
## Flow and behavior
|
|
167
|
-
|
|
168
|
-
### Spawn with `thread: true`
|
|
169
|
-
|
|
170
|
-
1. Spawn validates mode and permissions.
|
|
171
|
-
2. `subagent_spawning` hook runs.
|
|
172
|
-
- thread bindings enabled
|
|
173
|
-
- `spawnSubagentSessions` enabled
|
|
174
|
-
3. Extension attempts auto bind and thread creation.
|
|
175
|
-
4. If bind fails:
|
|
176
|
-
- spawn returns error
|
|
177
|
-
- provisional child session is deleted
|
|
178
|
-
5. If bind succeeds:
|
|
179
|
-
- child run starts
|
|
180
|
-
- run is registered with spawn mode
|
|
181
|
-
|
|
182
|
-
### Manual focus and unfocus
|
|
183
|
-
|
|
184
|
-
- `/focus <target>`
|
|
185
|
-
- resolves subagent or session target
|
|
186
|
-
- binds current or created thread to target session
|
|
187
|
-
- `/unfocus`
|
|
188
|
-
- unbinds current thread
|
|
189
|
-
|
|
190
|
-
### Inbound routing
|
|
191
|
-
|
|
192
|
-
- If bound, effective session routing uses bound target session key.
|
|
193
|
-
- If not bound, normal routing path is used.
|
|
194
|
-
|
|
195
|
-
### Outbound routing
|
|
196
|
-
|
|
197
|
-
- Reply delivery checks whether current session has thread bindings.
|
|
198
|
-
- Bound sessions deliver to thread via webhook aware path.
|
|
199
|
-
- Unbound sessions use normal bot delivery.
|
|
200
|
-
|
|
201
|
-
### Completion routing
|
|
202
|
-
|
|
203
|
-
- Core completion flow calls `subagent_delivery_target`.
|
|
204
|
-
- Core merges hook origin with requester origin and delivers completion.
|
|
205
|
-
|
|
206
|
-
### Cleanup
|
|
207
|
-
|
|
208
|
-
Cleanup occurs on:
|
|
209
|
-
|
|
210
|
-
- completion
|
|
211
|
-
- error or timeout completion path
|
|
212
|
-
- kill and terminate paths
|
|
213
|
-
- TTL expiration
|
|
214
|
-
- archived or deleted thread probes
|
|
215
|
-
- manual `/unfocus`
|
|
216
|
-
|
|
217
|
-
Cleanup behavior includes unbind and optional farewell messaging.
|
|
218
|
-
|
|
219
|
-
## Commands and user UX
|
|
220
|
-
|
|
221
|
-
| Command | Purpose |
|
|
222
|
-
| ---------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------- | --------------- | ------------------------------------------- |
|
|
223
|
-
| `/subagents spawn <agentId> <task> [--model] [--thinking]` | spawn subagent; may be thread bound when `thread: true` path is used |
|
|
224
|
-
| `/focus <subagent-label | session-key | session-id | session-label>` | manually bind thread to subagent or session |
|
|
225
|
-
| `/unfocus` | remove binding from current thread |
|
|
226
|
-
| `/agents` | list active agents and binding state |
|
|
227
|
-
| `/session ttl <duration | off>` | update TTL for focused thread binding |
|
|
228
|
-
|
|
229
|
-
Notes:
|
|
230
|
-
|
|
231
|
-
- Thread intro and farewell text are generated by thread binding message helpers.
|
|
232
|
-
|
|
233
|
-
## Failure handling and safety
|
|
234
|
-
|
|
235
|
-
- Spawn returns explicit errors when thread binding cannot be prepared.
|
|
236
|
-
- Spawn failure after provisional bind attempts best effort unbind and session delete.
|
|
237
|
-
- Completion logic prevents duplicate ended hook emission.
|
|
238
|
-
- Retry and expiry guards prevent infinite completion announce retry loops.
|
|
239
|
-
- Webhook echo suppression avoids unbound webhook messages being reprocessed as inbound turns.
|
|
240
|
-
|
|
241
|
-
## Module map
|
|
242
|
-
|
|
243
|
-
### Core orchestration
|
|
244
|
-
|
|
245
|
-
- `src/agents/subagent-spawn.ts`
|
|
246
|
-
- `src/agents/subagent-announce.ts`
|
|
247
|
-
- `src/agents/subagent-registry.ts`
|
|
248
|
-
- `src/agents/subagent-registry-cleanup.ts`
|
|
249
|
-
- `src/agents/subagent-registry-completion.ts`
|
|
250
|
-
|
|
251
|
-
### Plugin hooks and extension
|
|
252
|
-
|
|
253
|
-
- `src/plugins/types.ts`
|
|
254
|
-
- `src/plugins/hooks.ts`
|
|
255
|
-
|
|
256
|
-
### Config and schema
|
|
257
|
-
|
|
258
|
-
- `src/config/types.base.ts`
|
|
259
|
-
- `src/config/zod-schema.session.ts`
|
|
260
|
-
- `src/config/zod-schema.providers-core.ts`
|
|
261
|
-
- `src/config/schema.help.ts`
|
|
262
|
-
- `src/config/schema.labels.ts`
|
|
263
|
-
|
|
264
|
-
## Test coverage highlights
|
|
265
|
-
|
|
266
|
-
- `src/auto-reply/reply/commands-subagents-focus.test.ts`
|
|
267
|
-
- `src/auto-reply/reply/commands-session-ttl.test.ts`
|
|
268
|
-
- `src/agents/subagent-registry.steer-restart.test.ts`
|
|
269
|
-
- `src/agents/subagent-registry-completion.test.ts`
|
|
270
|
-
|
|
271
|
-
## Operational summary
|
|
272
|
-
|
|
273
|
-
- Use `session.threadBindings.enabled` as the global kill switch default.
|
|
274
|
-
- Keep `spawnSubagentSessions` opt in for thread auto spawn behavior.
|
|
275
|
-
- Use TTL settings for automatic unfocus policy control.
|
|
276
|
-
|
|
277
|
-
## Related plan
|
|
278
|
-
|
|
279
|
-
For channel agnostic SessionBinding architecture and scoped iteration planning, see:
|
|
280
|
-
|
|
281
|
-
- `docs/experiments/plans/session-binding-channel-agnostic.md`
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Exploration: model config, auth profiles, and fallback behavior"
|
|
3
|
-
read_when:
|
|
4
|
-
- Exploring future model selection + auth profile ideas
|
|
5
|
-
title: "Model Config Exploration"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Model Config (Exploration)
|
|
9
|
-
|
|
10
|
-
This document captures **ideas** for future model configuration. It is not a
|
|
11
|
-
shipping spec. For current behavior, see:
|
|
12
|
-
|
|
13
|
-
- [Models](/concepts/models)
|
|
14
|
-
- [Model failover](/concepts/model-failover)
|
|
15
|
-
- [OAuth + profiles](/concepts/oauth)
|
|
16
|
-
|
|
17
|
-
## Motivation
|
|
18
|
-
|
|
19
|
-
Operators want:
|
|
20
|
-
|
|
21
|
-
- Multiple auth profiles per provider (personal vs work).
|
|
22
|
-
- Simple `/model` selection with predictable fallbacks.
|
|
23
|
-
- Clear separation between text models and image-capable models.
|
|
24
|
-
|
|
25
|
-
## Possible direction (high level)
|
|
26
|
-
|
|
27
|
-
- Keep model selection simple: `provider/model` with optional aliases.
|
|
28
|
-
- Let providers have multiple auth profiles, with an explicit order.
|
|
29
|
-
- Use a global fallback list so all sessions fail over consistently.
|
|
30
|
-
- Only override image routing when explicitly configured.
|
|
31
|
-
|
|
32
|
-
## Open questions
|
|
33
|
-
|
|
34
|
-
- Should profile rotation be per-provider or per-model?
|
|
35
|
-
- How should the UI surface profile selection for a session?
|
|
36
|
-
- What is the safest migration path from legacy config keys?
|