@symerian/symi 3.0.21 → 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/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- 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
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Expose an OpenResponses-compatible /v1/responses HTTP endpoint from the Gateway"
|
|
3
|
-
read_when:
|
|
4
|
-
- Integrating clients that speak the OpenResponses API
|
|
5
|
-
- You want item-based inputs, client tool calls, or SSE events
|
|
6
|
-
title: "OpenResponses API"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# OpenResponses API (HTTP)
|
|
10
|
-
|
|
11
|
-
Symi’s Gateway can serve an OpenResponses-compatible `POST /v1/responses` endpoint.
|
|
12
|
-
|
|
13
|
-
This endpoint is **disabled by default**. Enable it in config first.
|
|
14
|
-
|
|
15
|
-
- `POST /v1/responses`
|
|
16
|
-
- Same port as the Gateway (WS + HTTP multiplex): `http://<gateway-host>:<port>/v1/responses`
|
|
17
|
-
|
|
18
|
-
Under the hood, requests are executed as a normal Gateway agent run (same codepath as
|
|
19
|
-
`symi agent`), so routing/permissions/config match your Gateway.
|
|
20
|
-
|
|
21
|
-
## Authentication
|
|
22
|
-
|
|
23
|
-
Uses the Gateway auth configuration. Send a bearer token:
|
|
24
|
-
|
|
25
|
-
- `Authorization: Bearer <token>`
|
|
26
|
-
|
|
27
|
-
Notes:
|
|
28
|
-
|
|
29
|
-
- When `gateway.auth.mode="token"`, use `gateway.auth.token` (or `SYMI_GATEWAY_TOKEN`).
|
|
30
|
-
- When `gateway.auth.mode="password"`, use `gateway.auth.password` (or `SYMI_GATEWAY_PASSWORD`).
|
|
31
|
-
- If `gateway.auth.rateLimit` is configured and too many auth failures occur, the endpoint returns `429` with `Retry-After`.
|
|
32
|
-
|
|
33
|
-
## Choosing an agent
|
|
34
|
-
|
|
35
|
-
No custom headers required: encode the agent id in the OpenResponses `model` field:
|
|
36
|
-
|
|
37
|
-
- `model: "symi:<agentId>"` (example: `"symi:main"`, `"symi:beta"`)
|
|
38
|
-
- `model: "agent:<agentId>"` (alias)
|
|
39
|
-
|
|
40
|
-
Or target a specific Symi agent by header:
|
|
41
|
-
|
|
42
|
-
- `x-symi-agent-id: <agentId>` (default: `main`)
|
|
43
|
-
|
|
44
|
-
Advanced:
|
|
45
|
-
|
|
46
|
-
- `x-symi-session-key: <sessionKey>` to fully control session routing.
|
|
47
|
-
|
|
48
|
-
## Enabling the endpoint
|
|
49
|
-
|
|
50
|
-
Set `gateway.http.endpoints.responses.enabled` to `true`:
|
|
51
|
-
|
|
52
|
-
```json5
|
|
53
|
-
{
|
|
54
|
-
gateway: {
|
|
55
|
-
http: {
|
|
56
|
-
endpoints: {
|
|
57
|
-
responses: { enabled: true },
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Disabling the endpoint
|
|
65
|
-
|
|
66
|
-
Set `gateway.http.endpoints.responses.enabled` to `false`:
|
|
67
|
-
|
|
68
|
-
```json5
|
|
69
|
-
{
|
|
70
|
-
gateway: {
|
|
71
|
-
http: {
|
|
72
|
-
endpoints: {
|
|
73
|
-
responses: { enabled: false },
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Session behavior
|
|
81
|
-
|
|
82
|
-
By default the endpoint is **stateless per request** (a new session key is generated each call).
|
|
83
|
-
|
|
84
|
-
If the request includes an OpenResponses `user` string, the Gateway derives a stable session key
|
|
85
|
-
from it, so repeated calls can share an agent session.
|
|
86
|
-
|
|
87
|
-
## Request shape (supported)
|
|
88
|
-
|
|
89
|
-
The request follows the OpenResponses API with item-based input. Current support:
|
|
90
|
-
|
|
91
|
-
- `input`: string or array of item objects.
|
|
92
|
-
- `instructions`: merged into the system prompt.
|
|
93
|
-
- `tools`: client tool definitions (function tools).
|
|
94
|
-
- `tool_choice`: filter or require client tools.
|
|
95
|
-
- `stream`: enables SSE streaming.
|
|
96
|
-
- `max_output_tokens`: best-effort output limit (provider dependent).
|
|
97
|
-
- `user`: stable session routing.
|
|
98
|
-
|
|
99
|
-
Accepted but **currently ignored**:
|
|
100
|
-
|
|
101
|
-
- `max_tool_calls`
|
|
102
|
-
- `reasoning`
|
|
103
|
-
- `metadata`
|
|
104
|
-
- `store`
|
|
105
|
-
- `previous_response_id`
|
|
106
|
-
- `truncation`
|
|
107
|
-
|
|
108
|
-
## Items (input)
|
|
109
|
-
|
|
110
|
-
### `message`
|
|
111
|
-
|
|
112
|
-
Roles: `system`, `developer`, `user`, `assistant`.
|
|
113
|
-
|
|
114
|
-
- `system` and `developer` are appended to the system prompt.
|
|
115
|
-
- The most recent `user` or `function_call_output` item becomes the “current message.”
|
|
116
|
-
- Earlier user/assistant messages are included as history for context.
|
|
117
|
-
|
|
118
|
-
### `function_call_output` (turn-based tools)
|
|
119
|
-
|
|
120
|
-
Send tool results back to the model:
|
|
121
|
-
|
|
122
|
-
```json
|
|
123
|
-
{
|
|
124
|
-
"type": "function_call_output",
|
|
125
|
-
"call_id": "call_123",
|
|
126
|
-
"output": "{\"temperature\": \"72F\"}"
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### `reasoning` and `item_reference`
|
|
131
|
-
|
|
132
|
-
Accepted for schema compatibility but ignored when building the prompt.
|
|
133
|
-
|
|
134
|
-
## Tools (client-side function tools)
|
|
135
|
-
|
|
136
|
-
Provide tools with `tools: [{ type: "function", function: { name, description?, parameters? } }]`.
|
|
137
|
-
|
|
138
|
-
If the agent decides to call a tool, the response returns a `function_call` output item.
|
|
139
|
-
You then send a follow-up request with `function_call_output` to continue the turn.
|
|
140
|
-
|
|
141
|
-
## Images (`input_image`)
|
|
142
|
-
|
|
143
|
-
Supports base64 or URL sources:
|
|
144
|
-
|
|
145
|
-
```json
|
|
146
|
-
{
|
|
147
|
-
"type": "input_image",
|
|
148
|
-
"source": { "type": "url", "url": "https://example.com/image.png" }
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Allowed MIME types (current): `image/jpeg`, `image/png`, `image/gif`, `image/webp`.
|
|
153
|
-
Max size (current): 10MB.
|
|
154
|
-
|
|
155
|
-
## Files (`input_file`)
|
|
156
|
-
|
|
157
|
-
Supports base64 or URL sources:
|
|
158
|
-
|
|
159
|
-
```json
|
|
160
|
-
{
|
|
161
|
-
"type": "input_file",
|
|
162
|
-
"source": {
|
|
163
|
-
"type": "base64",
|
|
164
|
-
"media_type": "text/plain",
|
|
165
|
-
"data": "SGVsbG8gV29ybGQh",
|
|
166
|
-
"filename": "hello.txt"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Allowed MIME types (current): `text/plain`, `text/markdown`, `text/html`, `text/csv`,
|
|
172
|
-
`application/json`, `application/pdf`.
|
|
173
|
-
|
|
174
|
-
Max size (current): 5MB.
|
|
175
|
-
|
|
176
|
-
Current behavior:
|
|
177
|
-
|
|
178
|
-
- File content is decoded and added to the **system prompt**, not the user message,
|
|
179
|
-
so it stays ephemeral (not persisted in session history).
|
|
180
|
-
- PDFs are parsed for text. If little text is found, the first pages are rasterized
|
|
181
|
-
into images and passed to the model.
|
|
182
|
-
|
|
183
|
-
PDF parsing uses the Node-friendly `pdfjs-dist` legacy build (no worker). The modern
|
|
184
|
-
PDF.js build expects browser workers/DOM globals, so it is not used in the Gateway.
|
|
185
|
-
|
|
186
|
-
URL fetch defaults:
|
|
187
|
-
|
|
188
|
-
- `files.allowUrl`: `true`
|
|
189
|
-
- `images.allowUrl`: `true`
|
|
190
|
-
- `maxUrlParts`: `8` (total URL-based `input_file` + `input_image` parts per request)
|
|
191
|
-
- Requests are guarded (DNS resolution, private IP blocking, redirect caps, timeouts).
|
|
192
|
-
- Optional hostname allowlists are supported per input type (`files.urlAllowlist`, `images.urlAllowlist`).
|
|
193
|
-
- Exact host: `"cdn.example.com"`
|
|
194
|
-
- Wildcard subdomains: `"*.assets.example.com"` (does not match apex)
|
|
195
|
-
|
|
196
|
-
## File + image limits (config)
|
|
197
|
-
|
|
198
|
-
Defaults can be tuned under `gateway.http.endpoints.responses`:
|
|
199
|
-
|
|
200
|
-
```json5
|
|
201
|
-
{
|
|
202
|
-
gateway: {
|
|
203
|
-
http: {
|
|
204
|
-
endpoints: {
|
|
205
|
-
responses: {
|
|
206
|
-
enabled: true,
|
|
207
|
-
maxBodyBytes: 20000000,
|
|
208
|
-
maxUrlParts: 8,
|
|
209
|
-
files: {
|
|
210
|
-
allowUrl: true,
|
|
211
|
-
urlAllowlist: ["cdn.example.com", "*.assets.example.com"],
|
|
212
|
-
allowedMimes: [
|
|
213
|
-
"text/plain",
|
|
214
|
-
"text/markdown",
|
|
215
|
-
"text/html",
|
|
216
|
-
"text/csv",
|
|
217
|
-
"application/json",
|
|
218
|
-
"application/pdf",
|
|
219
|
-
],
|
|
220
|
-
maxBytes: 5242880,
|
|
221
|
-
maxChars: 200000,
|
|
222
|
-
maxRedirects: 3,
|
|
223
|
-
timeoutMs: 10000,
|
|
224
|
-
pdf: {
|
|
225
|
-
maxPages: 4,
|
|
226
|
-
maxPixels: 4000000,
|
|
227
|
-
minTextChars: 200,
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
images: {
|
|
231
|
-
allowUrl: true,
|
|
232
|
-
urlAllowlist: ["images.example.com"],
|
|
233
|
-
allowedMimes: ["image/jpeg", "image/png", "image/gif", "image/webp"],
|
|
234
|
-
maxBytes: 10485760,
|
|
235
|
-
maxRedirects: 3,
|
|
236
|
-
timeoutMs: 10000,
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
}
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
Defaults when omitted:
|
|
246
|
-
|
|
247
|
-
- `maxBodyBytes`: 20MB
|
|
248
|
-
- `maxUrlParts`: 8
|
|
249
|
-
- `files.maxBytes`: 5MB
|
|
250
|
-
- `files.maxChars`: 200k
|
|
251
|
-
- `files.maxRedirects`: 3
|
|
252
|
-
- `files.timeoutMs`: 10s
|
|
253
|
-
- `files.pdf.maxPages`: 4
|
|
254
|
-
- `files.pdf.maxPixels`: 4,000,000
|
|
255
|
-
- `files.pdf.minTextChars`: 200
|
|
256
|
-
- `images.maxBytes`: 10MB
|
|
257
|
-
- `images.maxRedirects`: 3
|
|
258
|
-
- `images.timeoutMs`: 10s
|
|
259
|
-
|
|
260
|
-
Security note:
|
|
261
|
-
|
|
262
|
-
- URL allowlists are enforced before fetch and on redirect hops.
|
|
263
|
-
- Allowlisting a hostname does not bypass private/internal IP blocking.
|
|
264
|
-
- For internet-exposed gateways, apply network egress controls in addition to app-level guards.
|
|
265
|
-
See [Security](/gateway/security).
|
|
266
|
-
|
|
267
|
-
## Streaming (SSE)
|
|
268
|
-
|
|
269
|
-
Set `stream: true` to receive Server-Sent Events (SSE):
|
|
270
|
-
|
|
271
|
-
- `Content-Type: text/event-stream`
|
|
272
|
-
- Each event line is `event: <type>` and `data: <json>`
|
|
273
|
-
- Stream ends with `data: [DONE]`
|
|
274
|
-
|
|
275
|
-
Event types currently emitted:
|
|
276
|
-
|
|
277
|
-
- `response.created`
|
|
278
|
-
- `response.in_progress`
|
|
279
|
-
- `response.output_item.added`
|
|
280
|
-
- `response.content_part.added`
|
|
281
|
-
- `response.output_text.delta`
|
|
282
|
-
- `response.output_text.done`
|
|
283
|
-
- `response.content_part.done`
|
|
284
|
-
- `response.output_item.done`
|
|
285
|
-
- `response.completed`
|
|
286
|
-
- `response.failed` (on error)
|
|
287
|
-
|
|
288
|
-
## Usage
|
|
289
|
-
|
|
290
|
-
`usage` is populated when the underlying provider reports token counts.
|
|
291
|
-
|
|
292
|
-
## Errors
|
|
293
|
-
|
|
294
|
-
Errors use a JSON object like:
|
|
295
|
-
|
|
296
|
-
```json
|
|
297
|
-
{ "error": { "message": "...", "type": "invalid_request_error" } }
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
Common cases:
|
|
301
|
-
|
|
302
|
-
- `401` missing/invalid auth
|
|
303
|
-
- `400` invalid request body
|
|
304
|
-
- `405` wrong method
|
|
305
|
-
|
|
306
|
-
## Examples
|
|
307
|
-
|
|
308
|
-
Non-streaming:
|
|
309
|
-
|
|
310
|
-
```bash
|
|
311
|
-
curl -sS http://127.0.0.1:18789/v1/responses \
|
|
312
|
-
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
313
|
-
-H 'Content-Type: application/json' \
|
|
314
|
-
-H 'x-symi-agent-id: main' \
|
|
315
|
-
-d '{
|
|
316
|
-
"model": "symi",
|
|
317
|
-
"input": "hi"
|
|
318
|
-
}'
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
Streaming:
|
|
322
|
-
|
|
323
|
-
```bash
|
|
324
|
-
curl -N http://127.0.0.1:18789/v1/responses \
|
|
325
|
-
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
326
|
-
-H 'Content-Type: application/json' \
|
|
327
|
-
-H 'x-symi-agent-id: main' \
|
|
328
|
-
-d '{
|
|
329
|
-
"model": "symi",
|
|
330
|
-
"stream": true,
|
|
331
|
-
"input": "hi"
|
|
332
|
-
}'
|
|
333
|
-
```
|
package/docs/gateway/pairing.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Gateway-owned node pairing (Option B) for iOS and other remote nodes"
|
|
3
|
-
read_when:
|
|
4
|
-
- Implementing node pairing approvals without macOS UI
|
|
5
|
-
- Adding CLI flows for approving remote nodes
|
|
6
|
-
- Extending gateway protocol with node management
|
|
7
|
-
title: "Gateway-Owned Pairing"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Gateway-owned pairing (Option B)
|
|
11
|
-
|
|
12
|
-
In Gateway-owned pairing, the **Gateway** is the source of truth for which nodes
|
|
13
|
-
are allowed to join. UIs (macOS app, future clients) are just frontends that
|
|
14
|
-
approve or reject pending requests.
|
|
15
|
-
|
|
16
|
-
**Important:** WS nodes use **device pairing** (role `node`) during `connect`.
|
|
17
|
-
`node.pair.*` is a separate pairing store and does **not** gate the WS handshake.
|
|
18
|
-
Only clients that explicitly call `node.pair.*` use this flow.
|
|
19
|
-
|
|
20
|
-
## Concepts
|
|
21
|
-
|
|
22
|
-
- **Pending request**: a node asked to join; requires approval.
|
|
23
|
-
- **Paired node**: approved node with an issued auth token.
|
|
24
|
-
- **Transport**: the Gateway WS endpoint forwards requests but does not decide
|
|
25
|
-
membership. (Legacy TCP bridge support is deprecated/removed.)
|
|
26
|
-
|
|
27
|
-
## How pairing works
|
|
28
|
-
|
|
29
|
-
1. A node connects to the Gateway WS and requests pairing.
|
|
30
|
-
2. The Gateway stores a **pending request** and emits `node.pair.requested`.
|
|
31
|
-
3. You approve or reject the request (CLI or UI).
|
|
32
|
-
4. On approval, the Gateway issues a **new token** (tokens are rotated on re‑pair).
|
|
33
|
-
5. The node reconnects using the token and is now “paired”.
|
|
34
|
-
|
|
35
|
-
Pending requests expire automatically after **5 minutes**.
|
|
36
|
-
|
|
37
|
-
## CLI workflow (headless friendly)
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
symi nodes pending
|
|
41
|
-
symi nodes approve <requestId>
|
|
42
|
-
symi nodes reject <requestId>
|
|
43
|
-
symi nodes status
|
|
44
|
-
symi nodes rename --node <id|name|ip> --name "Living Room iPad"
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
`nodes status` shows paired/connected nodes and their capabilities.
|
|
48
|
-
|
|
49
|
-
## API surface (gateway protocol)
|
|
50
|
-
|
|
51
|
-
Events:
|
|
52
|
-
|
|
53
|
-
- `node.pair.requested` — emitted when a new pending request is created.
|
|
54
|
-
- `node.pair.resolved` — emitted when a request is approved/rejected/expired.
|
|
55
|
-
|
|
56
|
-
Methods:
|
|
57
|
-
|
|
58
|
-
- `node.pair.request` — create or reuse a pending request.
|
|
59
|
-
- `node.pair.list` — list pending + paired nodes.
|
|
60
|
-
- `node.pair.approve` — approve a pending request (issues token).
|
|
61
|
-
- `node.pair.reject` — reject a pending request.
|
|
62
|
-
- `node.pair.verify` — verify `{ nodeId, token }`.
|
|
63
|
-
|
|
64
|
-
Notes:
|
|
65
|
-
|
|
66
|
-
- `node.pair.request` is idempotent per node: repeated calls return the same
|
|
67
|
-
pending request.
|
|
68
|
-
- Approval **always** generates a fresh token; no token is ever returned from
|
|
69
|
-
`node.pair.request`.
|
|
70
|
-
- Requests may include `silent: true` as a hint for auto-approval flows.
|
|
71
|
-
|
|
72
|
-
## Auto-approval (macOS app)
|
|
73
|
-
|
|
74
|
-
The macOS app can optionally attempt a **silent approval** when:
|
|
75
|
-
|
|
76
|
-
- the request is marked `silent`, and
|
|
77
|
-
- the app can verify an SSH connection to the gateway host using the same user.
|
|
78
|
-
|
|
79
|
-
If silent approval fails, it falls back to the normal “Approve/Reject” prompt.
|
|
80
|
-
|
|
81
|
-
## Storage (local, private)
|
|
82
|
-
|
|
83
|
-
Pairing state is stored under the Gateway state directory (default `~/.symi`):
|
|
84
|
-
|
|
85
|
-
- `~/.symi/nodes/paired.json`
|
|
86
|
-
- `~/.symi/nodes/pending.json`
|
|
87
|
-
|
|
88
|
-
If you override `SYMI_STATE_DIR`, the `nodes/` folder moves with it.
|
|
89
|
-
|
|
90
|
-
Security notes:
|
|
91
|
-
|
|
92
|
-
- Tokens are secrets; treat `paired.json` as sensitive.
|
|
93
|
-
- Rotating a token requires re-approval (or deleting the node entry).
|
|
94
|
-
|
|
95
|
-
## Transport behavior
|
|
96
|
-
|
|
97
|
-
- The transport is **stateless**; it does not store membership.
|
|
98
|
-
- If the Gateway is offline or pairing is disabled, nodes cannot pair.
|
|
99
|
-
- If the Gateway is in remote mode, pairing still happens against the remote Gateway’s store.
|
package/docs/gateway/protocol.md
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Gateway WebSocket protocol: handshake, frames, versioning"
|
|
3
|
-
read_when:
|
|
4
|
-
- Implementing or updating gateway WS clients
|
|
5
|
-
- Debugging protocol mismatches or connect failures
|
|
6
|
-
- Regenerating protocol schema/models
|
|
7
|
-
title: "Gateway Protocol"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Gateway protocol (WebSocket)
|
|
11
|
-
|
|
12
|
-
The Gateway WS protocol is the **single control plane + node transport** for
|
|
13
|
-
Symi. All clients (CLI, web UI, macOS app, iOS/Android nodes, headless
|
|
14
|
-
nodes) connect over WebSocket and declare their **role** + **scope** at
|
|
15
|
-
handshake time.
|
|
16
|
-
|
|
17
|
-
## Transport
|
|
18
|
-
|
|
19
|
-
- WebSocket, text frames with JSON payloads.
|
|
20
|
-
- First frame **must** be a `connect` request.
|
|
21
|
-
|
|
22
|
-
## Handshake (connect)
|
|
23
|
-
|
|
24
|
-
Gateway → Client (pre-connect challenge):
|
|
25
|
-
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"type": "event",
|
|
29
|
-
"event": "connect.challenge",
|
|
30
|
-
"payload": { "nonce": "…", "ts": 1737264000000 }
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Client → Gateway:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"type": "req",
|
|
39
|
-
"id": "…",
|
|
40
|
-
"method": "connect",
|
|
41
|
-
"params": {
|
|
42
|
-
"minProtocol": 3,
|
|
43
|
-
"maxProtocol": 3,
|
|
44
|
-
"client": {
|
|
45
|
-
"id": "cli",
|
|
46
|
-
"version": "1.2.3",
|
|
47
|
-
"platform": "macos",
|
|
48
|
-
"mode": "operator"
|
|
49
|
-
},
|
|
50
|
-
"role": "operator",
|
|
51
|
-
"scopes": ["operator.read", "operator.write"],
|
|
52
|
-
"caps": [],
|
|
53
|
-
"commands": [],
|
|
54
|
-
"permissions": {},
|
|
55
|
-
"auth": { "token": "…" },
|
|
56
|
-
"locale": "en-US",
|
|
57
|
-
"userAgent": "symi-cli/1.2.3",
|
|
58
|
-
"device": {
|
|
59
|
-
"id": "device_fingerprint",
|
|
60
|
-
"publicKey": "…",
|
|
61
|
-
"signature": "…",
|
|
62
|
-
"signedAt": 1737264000000,
|
|
63
|
-
"nonce": "…"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Gateway → Client:
|
|
70
|
-
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"type": "res",
|
|
74
|
-
"id": "…",
|
|
75
|
-
"ok": true,
|
|
76
|
-
"payload": { "type": "hello-ok", "protocol": 3, "policy": { "tickIntervalMs": 15000 } }
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
When a device token is issued, `hello-ok` also includes:
|
|
81
|
-
|
|
82
|
-
```json
|
|
83
|
-
{
|
|
84
|
-
"auth": {
|
|
85
|
-
"deviceToken": "…",
|
|
86
|
-
"role": "operator",
|
|
87
|
-
"scopes": ["operator.read", "operator.write"]
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Node example
|
|
93
|
-
|
|
94
|
-
```json
|
|
95
|
-
{
|
|
96
|
-
"type": "req",
|
|
97
|
-
"id": "…",
|
|
98
|
-
"method": "connect",
|
|
99
|
-
"params": {
|
|
100
|
-
"minProtocol": 3,
|
|
101
|
-
"maxProtocol": 3,
|
|
102
|
-
"client": {
|
|
103
|
-
"id": "ios-node",
|
|
104
|
-
"version": "1.2.3",
|
|
105
|
-
"platform": "ios",
|
|
106
|
-
"mode": "node"
|
|
107
|
-
},
|
|
108
|
-
"role": "node",
|
|
109
|
-
"scopes": [],
|
|
110
|
-
"caps": ["camera", "canvas", "screen", "location", "voice"],
|
|
111
|
-
"commands": ["camera.snap", "canvas.navigate", "screen.record", "location.get"],
|
|
112
|
-
"permissions": { "camera.capture": true, "screen.record": false },
|
|
113
|
-
"auth": { "token": "…" },
|
|
114
|
-
"locale": "en-US",
|
|
115
|
-
"userAgent": "symi-ios/1.2.3",
|
|
116
|
-
"device": {
|
|
117
|
-
"id": "device_fingerprint",
|
|
118
|
-
"publicKey": "…",
|
|
119
|
-
"signature": "…",
|
|
120
|
-
"signedAt": 1737264000000,
|
|
121
|
-
"nonce": "…"
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Framing
|
|
128
|
-
|
|
129
|
-
- **Request**: `{type:"req", id, method, params}`
|
|
130
|
-
- **Response**: `{type:"res", id, ok, payload|error}`
|
|
131
|
-
- **Event**: `{type:"event", event, payload, seq?, stateVersion?}`
|
|
132
|
-
|
|
133
|
-
Side-effecting methods require **idempotency keys** (see schema).
|
|
134
|
-
|
|
135
|
-
## Roles + scopes
|
|
136
|
-
|
|
137
|
-
### Roles
|
|
138
|
-
|
|
139
|
-
- `operator` = control plane client (CLI/UI/automation).
|
|
140
|
-
- `node` = capability host (camera/screen/canvas/system.run).
|
|
141
|
-
|
|
142
|
-
### Scopes (operator)
|
|
143
|
-
|
|
144
|
-
Common scopes:
|
|
145
|
-
|
|
146
|
-
- `operator.read`
|
|
147
|
-
- `operator.write`
|
|
148
|
-
- `operator.admin`
|
|
149
|
-
- `operator.approvals`
|
|
150
|
-
- `operator.pairing`
|
|
151
|
-
|
|
152
|
-
### Caps/commands/permissions (node)
|
|
153
|
-
|
|
154
|
-
Nodes declare capability claims at connect time:
|
|
155
|
-
|
|
156
|
-
- `caps`: high-level capability categories.
|
|
157
|
-
- `commands`: command allowlist for invoke.
|
|
158
|
-
- `permissions`: granular toggles (e.g. `screen.record`, `camera.capture`).
|
|
159
|
-
|
|
160
|
-
The Gateway treats these as **claims** and enforces server-side allowlists.
|
|
161
|
-
|
|
162
|
-
## Presence
|
|
163
|
-
|
|
164
|
-
- `system-presence` returns entries keyed by device identity.
|
|
165
|
-
- Presence entries include `deviceId`, `roles`, and `scopes` so UIs can show a single row per device
|
|
166
|
-
even when it connects as both **operator** and **node**.
|
|
167
|
-
|
|
168
|
-
### Node helper methods
|
|
169
|
-
|
|
170
|
-
- Nodes may call `skills.bins` to fetch the current list of skill executables
|
|
171
|
-
for auto-allow checks.
|
|
172
|
-
|
|
173
|
-
## Exec approvals
|
|
174
|
-
|
|
175
|
-
- When an exec request needs approval, the gateway broadcasts `exec.approval.requested`.
|
|
176
|
-
- Operator clients resolve by calling `exec.approval.resolve` (requires `operator.approvals` scope).
|
|
177
|
-
|
|
178
|
-
## Versioning
|
|
179
|
-
|
|
180
|
-
- `PROTOCOL_VERSION` lives in `src/gateway/protocol/schema.ts`.
|
|
181
|
-
- Clients send `minProtocol` + `maxProtocol`; the server rejects mismatches.
|
|
182
|
-
- Schemas + models are generated from TypeBox definitions:
|
|
183
|
-
- `pnpm protocol:gen`
|
|
184
|
-
- `pnpm protocol:gen:swift`
|
|
185
|
-
- `pnpm protocol:check`
|
|
186
|
-
|
|
187
|
-
## Auth
|
|
188
|
-
|
|
189
|
-
- If `SYMI_GATEWAY_TOKEN` (or `--token`) is set, `connect.params.auth.token`
|
|
190
|
-
must match or the socket is closed.
|
|
191
|
-
- After pairing, the Gateway issues a **device token** scoped to the connection
|
|
192
|
-
role + scopes. It is returned in `hello-ok.auth.deviceToken` and should be
|
|
193
|
-
persisted by the client for future connects.
|
|
194
|
-
- Device tokens can be rotated/revoked via `device.token.rotate` and
|
|
195
|
-
`device.token.revoke` (requires `operator.pairing` scope).
|
|
196
|
-
|
|
197
|
-
## Device identity + pairing
|
|
198
|
-
|
|
199
|
-
- Nodes should include a stable device identity (`device.id`) derived from a
|
|
200
|
-
keypair fingerprint.
|
|
201
|
-
- Gateways issue tokens per device + role.
|
|
202
|
-
- Pairing approvals are required for new device IDs unless local auto-approval
|
|
203
|
-
is enabled.
|
|
204
|
-
- **Local** connects include loopback and the gateway host’s own tailnet address
|
|
205
|
-
(so same‑host tailnet binds can still auto‑approve).
|
|
206
|
-
- All WS clients must include `device` identity during `connect` (operator + node).
|
|
207
|
-
Control UI can omit it **only** when `gateway.controlUi.dangerouslyDisableDeviceAuth`
|
|
208
|
-
is enabled for break-glass use.
|
|
209
|
-
- Non-local connections must sign the server-provided `connect.challenge` nonce.
|
|
210
|
-
|
|
211
|
-
## TLS + pinning
|
|
212
|
-
|
|
213
|
-
- TLS is supported for WS connections.
|
|
214
|
-
- Clients may optionally pin the gateway cert fingerprint (see `gateway.tls`
|
|
215
|
-
config plus `gateway.remote.tlsFingerprint` or CLI `--tls-fingerprint`).
|
|
216
|
-
|
|
217
|
-
## Scope
|
|
218
|
-
|
|
219
|
-
This protocol exposes the **full gateway API** (status, channels, models, chat,
|
|
220
|
-
agent, sessions, nodes, approvals, etc.). The exact surface is defined by the
|
|
221
|
-
TypeBox schemas in `src/gateway/protocol/schema.ts`.
|