@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
package/docs/refactor/syminet.md
DELETED
|
@@ -1,417 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "SymiNet refactor: unify network protocol, roles, auth, approvals, identity"
|
|
3
|
-
read_when:
|
|
4
|
-
- Planning a unified network protocol for nodes + operator clients
|
|
5
|
-
- Reworking approvals, pairing, TLS, and presence across devices
|
|
6
|
-
title: "SymiNet Refactor"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# SymiNet refactor (protocol + auth unification)
|
|
10
|
-
|
|
11
|
-
## Hi
|
|
12
|
-
|
|
13
|
-
Hi Peter — great direction; this unlocks simpler UX + stronger security.
|
|
14
|
-
|
|
15
|
-
## Purpose
|
|
16
|
-
|
|
17
|
-
Single, rigorous document for:
|
|
18
|
-
|
|
19
|
-
- Current state: protocols, flows, trust boundaries.
|
|
20
|
-
- Pain points: approvals, multi‑hop routing, UI duplication.
|
|
21
|
-
- Proposed new state: one protocol, scoped roles, unified auth/pairing, TLS pinning.
|
|
22
|
-
- Identity model: stable IDs + cute slugs.
|
|
23
|
-
- Migration plan, risks, open questions.
|
|
24
|
-
|
|
25
|
-
## Goals (from discussion)
|
|
26
|
-
|
|
27
|
-
- One protocol for all clients (mac app, CLI, iOS, Android, headless node).
|
|
28
|
-
- Every network participant authenticated + paired.
|
|
29
|
-
- Role clarity: nodes vs operators.
|
|
30
|
-
- Central approvals routed to where the user is.
|
|
31
|
-
- TLS encryption + optional pinning for all remote traffic.
|
|
32
|
-
- Minimal code duplication.
|
|
33
|
-
- Single machine should appear once (no UI/node duplicate entry).
|
|
34
|
-
|
|
35
|
-
## Non‑goals (explicit)
|
|
36
|
-
|
|
37
|
-
- Remove capability separation (still need least‑privilege).
|
|
38
|
-
- Expose full gateway control plane without scope checks.
|
|
39
|
-
- Make auth depend on human labels (slugs remain non‑security).
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
# Current state (as‑is)
|
|
44
|
-
|
|
45
|
-
## Two protocols
|
|
46
|
-
|
|
47
|
-
### 1) Gateway WebSocket (control plane)
|
|
48
|
-
|
|
49
|
-
- Full API surface: config, channels, models, sessions, agent runs, logs, nodes, etc.
|
|
50
|
-
- Default bind: loopback. Remote access via SSH/Tailscale.
|
|
51
|
-
- Auth: token/password via `connect`.
|
|
52
|
-
- No TLS pinning (relies on loopback/tunnel).
|
|
53
|
-
- Code:
|
|
54
|
-
- `src/gateway/server/ws-connection/message-handler.ts`
|
|
55
|
-
- `src/gateway/client.ts`
|
|
56
|
-
- `docs/gateway/protocol.md`
|
|
57
|
-
|
|
58
|
-
### 2) Bridge (node transport)
|
|
59
|
-
|
|
60
|
-
- Narrow allowlist surface, node identity + pairing.
|
|
61
|
-
- JSONL over TCP; optional TLS + cert fingerprint pinning.
|
|
62
|
-
- TLS advertises fingerprint in discovery TXT.
|
|
63
|
-
- Code:
|
|
64
|
-
- `src/infra/bridge/server/connection.ts`
|
|
65
|
-
- `src/gateway/server-bridge.ts`
|
|
66
|
-
- `src/node-host/bridge-client.ts`
|
|
67
|
-
- `docs/gateway/bridge-protocol.md`
|
|
68
|
-
|
|
69
|
-
## Control plane clients today
|
|
70
|
-
|
|
71
|
-
- CLI → Gateway WS via `callGateway` (`src/gateway/call.ts`).
|
|
72
|
-
- macOS app UI → Gateway WS (`GatewayConnection`).
|
|
73
|
-
- Web Control UI → Gateway WS.
|
|
74
|
-
- ACP → Gateway WS.
|
|
75
|
-
- Browser control uses its own HTTP control server.
|
|
76
|
-
|
|
77
|
-
## Nodes today
|
|
78
|
-
|
|
79
|
-
- macOS app in node mode connects to Gateway bridge (`MacNodeBridgeSession`).
|
|
80
|
-
- iOS/Android apps connect to Gateway bridge.
|
|
81
|
-
- Pairing + per‑node token stored on gateway.
|
|
82
|
-
|
|
83
|
-
## Current approval flow (exec)
|
|
84
|
-
|
|
85
|
-
- Agent uses `system.run` via Gateway.
|
|
86
|
-
- Gateway invokes node over bridge.
|
|
87
|
-
- Node runtime decides approval.
|
|
88
|
-
- UI prompt shown by mac app (when node == mac app).
|
|
89
|
-
- Node returns `invoke-res` to Gateway.
|
|
90
|
-
- Multi‑hop, UI tied to node host.
|
|
91
|
-
|
|
92
|
-
## Presence + identity today
|
|
93
|
-
|
|
94
|
-
- Gateway presence entries from WS clients.
|
|
95
|
-
- Node presence entries from bridge.
|
|
96
|
-
- mac app can show two entries for same machine (UI + node).
|
|
97
|
-
- Node identity stored in pairing store; UI identity separate.
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
# Problems / pain points
|
|
102
|
-
|
|
103
|
-
- Two protocol stacks to maintain (WS + Bridge).
|
|
104
|
-
- Approvals on remote nodes: prompt appears on node host, not where user is.
|
|
105
|
-
- TLS pinning only exists for bridge; WS depends on SSH/Tailscale.
|
|
106
|
-
- Identity duplication: same machine shows as multiple instances.
|
|
107
|
-
- Ambiguous roles: UI + node + CLI capabilities not clearly separated.
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
# Proposed new state (SymiNet)
|
|
112
|
-
|
|
113
|
-
## One protocol, two roles
|
|
114
|
-
|
|
115
|
-
Single WS protocol with role + scope.
|
|
116
|
-
|
|
117
|
-
- **Role: node** (capability host)
|
|
118
|
-
- **Role: operator** (control plane)
|
|
119
|
-
- Optional **scope** for operator:
|
|
120
|
-
- `operator.read` (status + viewing)
|
|
121
|
-
- `operator.write` (agent run, sends)
|
|
122
|
-
- `operator.admin` (config, channels, models)
|
|
123
|
-
|
|
124
|
-
### Role behaviors
|
|
125
|
-
|
|
126
|
-
**Node**
|
|
127
|
-
|
|
128
|
-
- Can register capabilities (`caps`, `commands`, permissions).
|
|
129
|
-
- Can receive `invoke` commands (`system.run`, `camera.*`, `canvas.*`, `screen.record`, etc).
|
|
130
|
-
- Can send events: `voice.transcript`, `agent.request`, `chat.subscribe`.
|
|
131
|
-
- Cannot call config/models/channels/sessions/agent control plane APIs.
|
|
132
|
-
|
|
133
|
-
**Operator**
|
|
134
|
-
|
|
135
|
-
- Full control plane API, gated by scope.
|
|
136
|
-
- Receives all approvals.
|
|
137
|
-
- Does not directly execute OS actions; routes to nodes.
|
|
138
|
-
|
|
139
|
-
### Key rule
|
|
140
|
-
|
|
141
|
-
Role is per‑connection, not per device. A device may open both roles, separately.
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
# Unified authentication + pairing
|
|
146
|
-
|
|
147
|
-
## Client identity
|
|
148
|
-
|
|
149
|
-
Every client provides:
|
|
150
|
-
|
|
151
|
-
- `deviceId` (stable, derived from device key).
|
|
152
|
-
- `displayName` (human name).
|
|
153
|
-
- `role` + `scope` + `caps` + `commands`.
|
|
154
|
-
|
|
155
|
-
## Pairing flow (unified)
|
|
156
|
-
|
|
157
|
-
- Client connects unauthenticated.
|
|
158
|
-
- Gateway creates a **pairing request** for that `deviceId`.
|
|
159
|
-
- Operator receives prompt; approves/denies.
|
|
160
|
-
- Gateway issues credentials bound to:
|
|
161
|
-
- device public key
|
|
162
|
-
- role(s)
|
|
163
|
-
- scope(s)
|
|
164
|
-
- capabilities/commands
|
|
165
|
-
- Client persists token, reconnects authenticated.
|
|
166
|
-
|
|
167
|
-
## Device‑bound auth (avoid bearer token replay)
|
|
168
|
-
|
|
169
|
-
Preferred: device keypairs.
|
|
170
|
-
|
|
171
|
-
- Device generates keypair once.
|
|
172
|
-
- `deviceId = fingerprint(publicKey)`.
|
|
173
|
-
- Gateway sends nonce; device signs; gateway verifies.
|
|
174
|
-
- Tokens are issued to a public key (proof‑of‑possession), not a string.
|
|
175
|
-
|
|
176
|
-
Alternatives:
|
|
177
|
-
|
|
178
|
-
- mTLS (client certs): strongest, more ops complexity.
|
|
179
|
-
- Short‑lived bearer tokens only as a temporary phase (rotate + revoke early).
|
|
180
|
-
|
|
181
|
-
## Silent approval (SSH heuristic)
|
|
182
|
-
|
|
183
|
-
Define it precisely to avoid a weak link. Prefer one:
|
|
184
|
-
|
|
185
|
-
- **Local‑only**: auto‑pair when client connects via loopback/Unix socket.
|
|
186
|
-
- **Challenge via SSH**: gateway issues nonce; client proves SSH by fetching it.
|
|
187
|
-
- **Physical presence window**: after a local approval on gateway host UI, allow auto‑pair for a short window (e.g. 10 minutes).
|
|
188
|
-
|
|
189
|
-
Always log + record auto‑approvals.
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
# TLS everywhere (dev + prod)
|
|
194
|
-
|
|
195
|
-
## Reuse existing bridge TLS
|
|
196
|
-
|
|
197
|
-
Use current TLS runtime + fingerprint pinning:
|
|
198
|
-
|
|
199
|
-
- `src/infra/bridge/server/tls.ts`
|
|
200
|
-
- fingerprint verification logic in `src/node-host/bridge-client.ts`
|
|
201
|
-
|
|
202
|
-
## Apply to WS
|
|
203
|
-
|
|
204
|
-
- WS server supports TLS with same cert/key + fingerprint.
|
|
205
|
-
- WS clients can pin fingerprint (optional).
|
|
206
|
-
- Discovery advertises TLS + fingerprint for all endpoints.
|
|
207
|
-
- Discovery is locator hints only; never a trust anchor.
|
|
208
|
-
|
|
209
|
-
## Why
|
|
210
|
-
|
|
211
|
-
- Reduce reliance on SSH/Tailscale for confidentiality.
|
|
212
|
-
- Make remote mobile connections safe by default.
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
# Approvals redesign (centralized)
|
|
217
|
-
|
|
218
|
-
## Current
|
|
219
|
-
|
|
220
|
-
Approval happens on node host (mac app node runtime). Prompt appears where node runs.
|
|
221
|
-
|
|
222
|
-
## Proposed
|
|
223
|
-
|
|
224
|
-
Approval is **gateway‑hosted**, UI delivered to operator clients.
|
|
225
|
-
|
|
226
|
-
### New flow
|
|
227
|
-
|
|
228
|
-
1. Gateway receives `system.run` intent (agent).
|
|
229
|
-
2. Gateway creates approval record: `approval.requested`.
|
|
230
|
-
3. Operator UI(s) show prompt.
|
|
231
|
-
4. Approval decision sent to gateway: `approval.resolve`.
|
|
232
|
-
5. Gateway invokes node command if approved.
|
|
233
|
-
6. Node executes, returns `invoke-res`.
|
|
234
|
-
|
|
235
|
-
### Approval semantics (hardening)
|
|
236
|
-
|
|
237
|
-
- Broadcast to all operators; only the active UI shows a modal (others get a toast).
|
|
238
|
-
- First resolution wins; gateway rejects subsequent resolves as already settled.
|
|
239
|
-
- Default timeout: deny after N seconds (e.g. 60s), log reason.
|
|
240
|
-
- Resolution requires `operator.approvals` scope.
|
|
241
|
-
|
|
242
|
-
## Benefits
|
|
243
|
-
|
|
244
|
-
- Prompt appears where user is (mac/phone).
|
|
245
|
-
- Consistent approvals for remote nodes.
|
|
246
|
-
- Node runtime stays headless; no UI dependency.
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
# Role clarity examples
|
|
251
|
-
|
|
252
|
-
## iPhone app
|
|
253
|
-
|
|
254
|
-
- **Node role** for: mic, camera, voice chat, location, push‑to‑talk.
|
|
255
|
-
- Optional **operator.read** for status and chat view.
|
|
256
|
-
- Optional **operator.write/admin** only when explicitly enabled.
|
|
257
|
-
|
|
258
|
-
## macOS app
|
|
259
|
-
|
|
260
|
-
- Operator role by default (control UI).
|
|
261
|
-
- Node role when “Mac node” enabled (system.run, screen, camera).
|
|
262
|
-
- Same deviceId for both connections → merged UI entry.
|
|
263
|
-
|
|
264
|
-
## CLI
|
|
265
|
-
|
|
266
|
-
- Operator role always.
|
|
267
|
-
- Scope derived by subcommand:
|
|
268
|
-
- `status`, `logs` → read
|
|
269
|
-
- `agent`, `message` → write
|
|
270
|
-
- `config`, `channels` → admin
|
|
271
|
-
- approvals + pairing → `operator.approvals` / `operator.pairing`
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
# Identity + slugs
|
|
276
|
-
|
|
277
|
-
## Stable ID
|
|
278
|
-
|
|
279
|
-
Required for auth; never changes.
|
|
280
|
-
Preferred:
|
|
281
|
-
|
|
282
|
-
- Keypair fingerprint (public key hash).
|
|
283
|
-
|
|
284
|
-
## Cute slug (pipeline‑themed)
|
|
285
|
-
|
|
286
|
-
Human label only.
|
|
287
|
-
|
|
288
|
-
- Example: `scarlet-shell`, `saltwave`, `mantis-pinch`.
|
|
289
|
-
- Stored in gateway registry, editable.
|
|
290
|
-
- Collision handling: `-2`, `-3`.
|
|
291
|
-
|
|
292
|
-
## UI grouping
|
|
293
|
-
|
|
294
|
-
Same `deviceId` across roles → single “Instance” row:
|
|
295
|
-
|
|
296
|
-
- Badge: `operator`, `node`.
|
|
297
|
-
- Shows capabilities + last seen.
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
|
|
301
|
-
# Migration strategy
|
|
302
|
-
|
|
303
|
-
## Phase 0: Document + align
|
|
304
|
-
|
|
305
|
-
- Publish this doc.
|
|
306
|
-
- Inventory all protocol calls + approval flows.
|
|
307
|
-
|
|
308
|
-
## Phase 1: Add roles/scopes to WS
|
|
309
|
-
|
|
310
|
-
- Extend `connect` params with `role`, `scope`, `deviceId`.
|
|
311
|
-
- Add allowlist gating for node role.
|
|
312
|
-
|
|
313
|
-
## Phase 2: Bridge compatibility
|
|
314
|
-
|
|
315
|
-
- Keep bridge running.
|
|
316
|
-
- Add WS node support in parallel.
|
|
317
|
-
- Gate features behind config flag.
|
|
318
|
-
|
|
319
|
-
## Phase 3: Central approvals
|
|
320
|
-
|
|
321
|
-
- Add approval request + resolve events in WS.
|
|
322
|
-
- Update mac app UI to prompt + respond.
|
|
323
|
-
- Node runtime stops prompting UI.
|
|
324
|
-
|
|
325
|
-
## Phase 4: TLS unification
|
|
326
|
-
|
|
327
|
-
- Add TLS config for WS using bridge TLS runtime.
|
|
328
|
-
- Add pinning to clients.
|
|
329
|
-
|
|
330
|
-
## Phase 5: Deprecate bridge
|
|
331
|
-
|
|
332
|
-
- Migrate iOS/Android/mac node to WS.
|
|
333
|
-
- Keep bridge as fallback; remove once stable.
|
|
334
|
-
|
|
335
|
-
## Phase 6: Device‑bound auth
|
|
336
|
-
|
|
337
|
-
- Require key‑based identity for all non‑local connections.
|
|
338
|
-
- Add revocation + rotation UI.
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
# Security notes
|
|
343
|
-
|
|
344
|
-
- Role/allowlist enforced at gateway boundary.
|
|
345
|
-
- No client gets “full” API without operator scope.
|
|
346
|
-
- Pairing required for _all_ connections.
|
|
347
|
-
- TLS + pinning reduces MITM risk for mobile.
|
|
348
|
-
- SSH silent approval is a convenience; still recorded + revocable.
|
|
349
|
-
- Discovery is never a trust anchor.
|
|
350
|
-
- Capability claims are verified against server allowlists by platform/type.
|
|
351
|
-
|
|
352
|
-
# Streaming + large payloads (node media)
|
|
353
|
-
|
|
354
|
-
WS control plane is fine for small messages, but nodes also do:
|
|
355
|
-
|
|
356
|
-
- camera clips
|
|
357
|
-
- screen recordings
|
|
358
|
-
- audio streams
|
|
359
|
-
|
|
360
|
-
Options:
|
|
361
|
-
|
|
362
|
-
1. WS binary frames + chunking + backpressure rules.
|
|
363
|
-
2. Separate streaming endpoint (still TLS + auth).
|
|
364
|
-
3. Keep bridge longer for media‑heavy commands, migrate last.
|
|
365
|
-
|
|
366
|
-
Pick one before implementation to avoid drift.
|
|
367
|
-
|
|
368
|
-
# Capability + command policy
|
|
369
|
-
|
|
370
|
-
- Node‑reported caps/commands are treated as **claims**.
|
|
371
|
-
- Gateway enforces per‑platform allowlists.
|
|
372
|
-
- Any new command requires operator approval or explicit allowlist change.
|
|
373
|
-
- Audit changes with timestamps.
|
|
374
|
-
|
|
375
|
-
# Audit + rate limiting
|
|
376
|
-
|
|
377
|
-
- Log: pairing requests, approvals/denials, token issuance/rotation/revocation.
|
|
378
|
-
- Rate‑limit pairing spam and approval prompts.
|
|
379
|
-
|
|
380
|
-
# Protocol hygiene
|
|
381
|
-
|
|
382
|
-
- Explicit protocol version + error codes.
|
|
383
|
-
- Reconnect rules + heartbeat policy.
|
|
384
|
-
- Presence TTL and last‑seen semantics.
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
# Open questions
|
|
389
|
-
|
|
390
|
-
1. Single device running both roles: token model
|
|
391
|
-
- Recommend separate tokens per role (node vs operator).
|
|
392
|
-
- Same deviceId; different scopes; clearer revocation.
|
|
393
|
-
|
|
394
|
-
2. Operator scope granularity
|
|
395
|
-
- read/write/admin + approvals + pairing (minimum viable).
|
|
396
|
-
- Consider per‑feature scopes later.
|
|
397
|
-
|
|
398
|
-
3. Token rotation + revocation UX
|
|
399
|
-
- Auto‑rotate on role change.
|
|
400
|
-
- UI to revoke by deviceId + role.
|
|
401
|
-
|
|
402
|
-
4. Discovery
|
|
403
|
-
- Extend current Bonjour TXT to include WS TLS fingerprint + role hints.
|
|
404
|
-
- Treat as locator hints only.
|
|
405
|
-
|
|
406
|
-
5. Cross‑network approval
|
|
407
|
-
- Broadcast to all operator clients; active UI shows modal.
|
|
408
|
-
- First response wins; gateway enforces atomicity.
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
# Summary (TL;DR)
|
|
413
|
-
|
|
414
|
-
- Today: WS control plane + Bridge node transport.
|
|
415
|
-
- Pain: approvals + duplication + two stacks.
|
|
416
|
-
- Proposal: one WS protocol with explicit roles + scopes, unified pairing + TLS pinning, gateway‑hosted approvals, stable device IDs + cute slugs.
|
|
417
|
-
- Outcome: simpler UX, stronger security, less duplication, better mobile routing.
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Default AGENTS.md"
|
|
3
|
-
summary: "Default Symi agent instructions and skills roster for the personal assistant setup"
|
|
4
|
-
read_when:
|
|
5
|
-
- Starting a new Symi agent session
|
|
6
|
-
- Enabling or auditing default skills
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# AGENTS.md — Symi Personal Assistant (default)
|
|
10
|
-
|
|
11
|
-
## First run (recommended)
|
|
12
|
-
|
|
13
|
-
Symi uses a dedicated workspace directory for the agent. Default: `~/.symi/workspace` (configurable via `agents.defaults.workspace`).
|
|
14
|
-
|
|
15
|
-
1. Create the workspace (if it doesn’t already exist):
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
mkdir -p ~/.symi/workspace
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
2. Copy the default workspace templates into the workspace:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
cp docs/reference/templates/AGENTS.md ~/.symi/workspace/AGENTS.md
|
|
25
|
-
cp docs/reference/templates/SYMICORE.md ~/.symi/workspace/SYMICORE.md
|
|
26
|
-
cp docs/reference/templates/TOOLS.md ~/.symi/workspace/TOOLS.md
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
3. Optional: if you want the personal assistant skill roster, replace AGENTS.md with this file:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
cp docs/reference/AGENTS.default.md ~/.symi/workspace/AGENTS.md
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
4. Optional: choose a different workspace by setting `agents.defaults.workspace` (supports `~`):
|
|
36
|
-
|
|
37
|
-
```json5
|
|
38
|
-
{
|
|
39
|
-
agents: { defaults: { workspace: "~/.symi/workspace" } },
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Safety defaults
|
|
44
|
-
|
|
45
|
-
- Don’t dump directories or secrets into chat.
|
|
46
|
-
- Don’t run destructive commands unless explicitly asked.
|
|
47
|
-
- Don’t send partial/streaming replies to external messaging surfaces (only final replies).
|
|
48
|
-
|
|
49
|
-
## Session start (required)
|
|
50
|
-
|
|
51
|
-
- Read `SYMICORE.md`, `USER.md`, `memory.md`, and today+yesterday in `memory/`.
|
|
52
|
-
- Do it before responding.
|
|
53
|
-
|
|
54
|
-
## Soul (required)
|
|
55
|
-
|
|
56
|
-
- `SYMICORE.md` defines identity, tone, and boundaries. Keep it current.
|
|
57
|
-
- If you change `SYMICORE.md`, tell the user.
|
|
58
|
-
- You are a fresh instance each session; continuity lives in these files.
|
|
59
|
-
|
|
60
|
-
## Shared spaces (recommended)
|
|
61
|
-
|
|
62
|
-
- You’re not the user’s voice; be careful in group chats or public channels.
|
|
63
|
-
- Don’t share private data, contact info, or internal notes.
|
|
64
|
-
|
|
65
|
-
## Memory system (recommended)
|
|
66
|
-
|
|
67
|
-
- Daily log: `memory/YYYY-MM-DD.md` (create `memory/` if needed).
|
|
68
|
-
- Long-term memory: `memory.md` for durable facts, preferences, and decisions.
|
|
69
|
-
- On session start, read today + yesterday + `memory.md` if present.
|
|
70
|
-
- Capture: decisions, preferences, constraints, open loops.
|
|
71
|
-
- Avoid secrets unless explicitly requested.
|
|
72
|
-
|
|
73
|
-
## Tools & skills
|
|
74
|
-
|
|
75
|
-
- Tools live in skills; follow each skill’s `SKILL.md` when you need it.
|
|
76
|
-
- Keep environment-specific notes in `TOOLS.md` (Notes for Skills).
|
|
77
|
-
|
|
78
|
-
## Backup tip (recommended)
|
|
79
|
-
|
|
80
|
-
If you treat this workspace as Symi’s “memory”, make it a git repo (ideally private) so `AGENTS.md` and your memory files are backed up.
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
cd ~/.symi/workspace
|
|
84
|
-
git init
|
|
85
|
-
git add AGENTS.md
|
|
86
|
-
git commit -m "Add Symi workspace"
|
|
87
|
-
# Optional: add a private remote + push
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## What Symi Does
|
|
91
|
-
|
|
92
|
-
- Runs WhatsApp gateway + Pi coding agent so the assistant can read/write chats, fetch context, and run skills via the host Mac.
|
|
93
|
-
- macOS app manages permissions (screen recording, notifications, microphone) and exposes the `symi` CLI via its bundled binary.
|
|
94
|
-
- Direct chats collapse into the agent's `main` session by default; groups stay isolated as `agent:<agentId>:<channel>:group:<id>` (rooms/channels: `agent:<agentId>:<channel>:channel:<id>`); heartbeats keep background tasks alive.
|
|
95
|
-
|
|
96
|
-
## Core Skills (enable in Settings → Skills)
|
|
97
|
-
|
|
98
|
-
- **mcporter** — Tool server runtime/CLI for managing external skill backends.
|
|
99
|
-
- **Peekaboo** — Fast macOS screenshots with optional AI vision analysis.
|
|
100
|
-
- **camsnap** — Capture frames, clips, or motion alerts from RTSP/ONVIF security cams.
|
|
101
|
-
- **oracle** — OpenAI-ready agent CLI with session replay and browser control.
|
|
102
|
-
- **eightctl** — Control your sleep, from the terminal.
|
|
103
|
-
- **imsg** — Send, read, stream iMessage & SMS.
|
|
104
|
-
- **wacli** — WhatsApp CLI: sync, search, send.
|
|
105
|
-
- **gog** — Google Suite CLI: Gmail, Calendar, Drive, Contacts.
|
|
106
|
-
- **spotify-player** — Terminal Spotify client to search/queue/control playback.
|
|
107
|
-
- **sag** — ElevenLabs speech with mac-style say UX; streams to speakers by default.
|
|
108
|
-
- **Sonos CLI** — Control Sonos speakers (discover/status/playback/volume/grouping) from scripts.
|
|
109
|
-
- **blucli** — Play, group, and automate BluOS players from scripts.
|
|
110
|
-
- **OpenHue CLI** — Philips Hue lighting control for scenes and automations.
|
|
111
|
-
- **OpenAI Whisper** — Local speech-to-text for quick dictation and voicemail transcripts.
|
|
112
|
-
- **Gemini CLI** — Google Gemini models from the terminal for fast Q&A.
|
|
113
|
-
- **agent-tools** — Utility toolkit for automations and helper scripts.
|
|
114
|
-
|
|
115
|
-
## Usage Notes
|
|
116
|
-
|
|
117
|
-
- Prefer the `symi` CLI for scripting; mac app handles permissions.
|
|
118
|
-
- Run installs from the Skills tab; it hides the button if a binary is already present.
|
|
119
|
-
- Keep heartbeats enabled so the assistant can schedule reminders, monitor inboxes, and trigger camera captures.
|
|
120
|
-
- Canvas UI runs full-screen with native overlays. Avoid placing critical controls in the top-left/top-right/bottom edges; add explicit gutters in the layout and don’t rely on safe-area insets.
|
|
121
|
-
- For browser-driven verification, use `symi browser` (tabs/status/screenshot) with the Symi-managed Chrome profile.
|
|
122
|
-
- For DOM inspection, use `symi browser eval|query|dom|snapshot` (and `--json`/`--out` when you need machine output).
|
|
123
|
-
- For interactions, use `symi browser click|type|hover|drag|select|upload|press|wait|navigate|back|evaluate|run` (click/type require snapshot refs; use `evaluate` for CSS selectors).
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Release Checklist"
|
|
3
|
-
summary: "Step-by-step release checklist for npm + macOS app"
|
|
4
|
-
read_when:
|
|
5
|
-
- Cutting a new npm release
|
|
6
|
-
- Cutting a new macOS app release
|
|
7
|
-
- Verifying metadata before publishing
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Release Checklist (npm + macOS)
|
|
11
|
-
|
|
12
|
-
Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tagging/publishing.
|
|
13
|
-
|
|
14
|
-
## Operator trigger
|
|
15
|
-
|
|
16
|
-
When the operator says “release”, immediately do this preflight (no extra questions unless blocked):
|
|
17
|
-
|
|
18
|
-
- Read this doc and `docs/platforms/mac/release.md`.
|
|
19
|
-
- Load env from `~/.profile` and confirm `SPARKLE_PRIVATE_KEY_FILE` + App Store Connect vars are set (SPARKLE_PRIVATE_KEY_FILE should live in `~/.profile`).
|
|
20
|
-
- Use Sparkle keys from `~/Library/CloudStorage/Dropbox/Backup/Sparkle` if needed.
|
|
21
|
-
|
|
22
|
-
1. **Version & metadata**
|
|
23
|
-
|
|
24
|
-
- [ ] Bump `package.json` version (e.g., `2026.1.29`).
|
|
25
|
-
- [ ] Run `pnpm plugins:sync` to align extension package versions + changelogs.
|
|
26
|
-
- [ ] Update CLI/version strings: [`src/cli/program.ts`](https://github.com/symi/symi/blob/main/src/cli/program.ts) and the Baileys user agent in [`src/provider-web.ts`](https://github.com/symi/symi/blob/main/src/provider-web.ts).
|
|
27
|
-
- [ ] Confirm package metadata (name, description, repository, keywords, license) and `bin` map points to [`symi.mjs`](https://github.com/symi/symi/blob/main/symi.mjs) for `symi`.
|
|
28
|
-
- [ ] If dependencies changed, run `pnpm install` so `pnpm-lock.yaml` is current.
|
|
29
|
-
|
|
30
|
-
2. **Build & artifacts**
|
|
31
|
-
|
|
32
|
-
- [ ] If A2UI inputs changed, run `pnpm canvas:a2ui:bundle` and commit any updated [`src/canvas-host/a2ui/a2ui.bundle.js`](https://github.com/symi/symi/blob/main/src/canvas-host/a2ui/a2ui.bundle.js).
|
|
33
|
-
- [ ] `pnpm run build` (regenerates `dist/`).
|
|
34
|
-
- [ ] Verify npm package `files` includes all required `dist/*` folders (notably `dist/node-host/**` and `dist/acp/**` for headless node + ACP CLI).
|
|
35
|
-
- [ ] Confirm `dist/build-info.json` exists and includes the expected `commit` hash (CLI banner uses this for npm installs).
|
|
36
|
-
- [ ] Optional: `npm pack --pack-destination /tmp` after the build; inspect the tarball contents and keep it handy for the GitHub release (do **not** commit it).
|
|
37
|
-
|
|
38
|
-
3. **Changelog & docs**
|
|
39
|
-
|
|
40
|
-
- [ ] Update `CHANGELOG.md` with user-facing highlights (create the file if missing); keep entries strictly descending by version.
|
|
41
|
-
- [ ] Ensure README examples/flags match current CLI behavior (notably new commands or options).
|
|
42
|
-
|
|
43
|
-
4. **Validation**
|
|
44
|
-
|
|
45
|
-
- [ ] `pnpm build`
|
|
46
|
-
- [ ] `pnpm check`
|
|
47
|
-
- [ ] `pnpm test` (or `pnpm test:coverage` if you need coverage output)
|
|
48
|
-
- [ ] `pnpm release:check` (verifies npm pack contents)
|
|
49
|
-
- [ ] `SYMI_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke` (Docker install smoke test, fast path; required before release)
|
|
50
|
-
- If the immediate previous npm release is known broken, set `SYMI_INSTALL_SMOKE_PREVIOUS=<last-good-version>` or `SYMI_INSTALL_SMOKE_SKIP_PREVIOUS=1` for the preinstall step.
|
|
51
|
-
- [ ] (Optional) Full installer smoke (adds non-root + CLI coverage): `pnpm test:install:smoke`
|
|
52
|
-
- [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://jaysteelmind.github.io/getsymi/install.sh | bash`, onboards, then runs real tool calls):
|
|
53
|
-
- `pnpm test:install:e2e:openai` (requires `OPENAI_API_KEY`)
|
|
54
|
-
- `pnpm test:install:e2e:anthropic` (requires `ANTHROPIC_API_KEY`)
|
|
55
|
-
- `pnpm test:install:e2e` (requires both keys; runs both providers)
|
|
56
|
-
- [ ] (Optional) Spot-check the web gateway if your changes affect send/receive paths.
|
|
57
|
-
|
|
58
|
-
5. **macOS app (Sparkle)**
|
|
59
|
-
|
|
60
|
-
- [ ] Build + sign the macOS app, then zip it for distribution.
|
|
61
|
-
- [ ] Generate the Sparkle appcast (HTML notes via [`scripts/make_appcast.sh`](https://github.com/symi/symi/blob/main/scripts/make_appcast.sh)) and update `appcast.xml`.
|
|
62
|
-
- [ ] Keep the app zip (and optional dSYM zip) ready to attach to the GitHub release.
|
|
63
|
-
- [ ] Follow [macOS release](/platforms/mac/release) for the exact commands and required env vars.
|
|
64
|
-
- `APP_BUILD` must be numeric + monotonic (no `-beta`) so Sparkle compares versions correctly.
|
|
65
|
-
- If notarizing, use the `symi-notary` keychain profile created from App Store Connect API env vars (see [macOS release](/platforms/mac/release)).
|
|
66
|
-
|
|
67
|
-
6. **Publish (npm)**
|
|
68
|
-
|
|
69
|
-
- [ ] Confirm git status is clean; commit and push as needed.
|
|
70
|
-
- [ ] `npm login` (verify 2FA) if needed.
|
|
71
|
-
- [ ] `npm publish --access public` (use `--tag beta` for pre-releases).
|
|
72
|
-
- [ ] Verify the registry: `npm view symi version`, `npm view symi dist-tags`, and `npx -y symi@X.Y.Z --version` (or `--help`).
|
|
73
|
-
|
|
74
|
-
### Troubleshooting (notes from 2.0.0-beta2 release)
|
|
75
|
-
|
|
76
|
-
- **npm pack/publish hangs or produces huge tarball**: the macOS app bundle in `dist/Symi.app` (and release zips) get swept into the package. Fix by whitelisting publish contents via `package.json` `files` (include dist subdirs, docs, skills; exclude app bundles). Confirm with `npm pack --dry-run` that `dist/Symi.app` is not listed.
|
|
77
|
-
- **npm auth web loop for dist-tags**: use legacy auth to get an OTP prompt:
|
|
78
|
-
- `NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add symi@X.Y.Z latest`
|
|
79
|
-
- **`npx` verification fails with `ECOMPROMISED: Lock compromised`**: retry with a fresh cache:
|
|
80
|
-
- `NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y symi@X.Y.Z --version`
|
|
81
|
-
- **Tag needs repointing after a late fix**: force-update and push the tag, then ensure the GitHub release assets still match:
|
|
82
|
-
- `git tag -f vX.Y.Z && git push -f origin vX.Y.Z`
|
|
83
|
-
|
|
84
|
-
7. **GitHub release + appcast**
|
|
85
|
-
|
|
86
|
-
- [ ] Tag and push: `git tag vX.Y.Z && git push origin vX.Y.Z` (or `git push --tags`).
|
|
87
|
-
- [ ] Create/refresh the GitHub release for `vX.Y.Z` with **title `symi X.Y.Z`** (not just the tag); body should include the **full** changelog section for that version (Highlights + Changes + Fixes), inline (no bare links), and **must not repeat the title inside the body**.
|
|
88
|
-
- [ ] Attach artifacts: `npm pack` tarball (optional), `Symi-X.Y.Z.zip`, and `Symi-X.Y.Z.dSYM.zip` (if generated).
|
|
89
|
-
- [ ] Commit the updated `appcast.xml` and push it (Sparkle feeds from main).
|
|
90
|
-
- [ ] From a clean temp directory (no `package.json`), run `npx -y symi@X.Y.Z send --help` to confirm install/CLI entrypoints work.
|
|
91
|
-
- [ ] Announce/share release notes.
|
|
92
|
-
|
|
93
|
-
## Plugin publish scope (npm)
|
|
94
|
-
|
|
95
|
-
We only publish **existing npm plugins** under the `@symi/*` scope. Bundled
|
|
96
|
-
plugins that are not on npm stay **disk-tree only** (still shipped in
|
|
97
|
-
`extensions/**`).
|
|
98
|
-
|
|
99
|
-
Process to derive the list:
|
|
100
|
-
|
|
101
|
-
1. `npm search @symi --json` and capture the package names.
|
|
102
|
-
2. Compare with `extensions/*/package.json` names.
|
|
103
|
-
3. Publish only the **intersection** (already on npm).
|
|
104
|
-
|
|
105
|
-
Current npm plugin list (update as needed):
|
|
106
|
-
|
|
107
|
-
- @symi/bluebubbles
|
|
108
|
-
- @symi/diagnostics-otel
|
|
109
|
-
- @symi/feishu
|
|
110
|
-
- @symi/pipeline
|
|
111
|
-
- @symi/matrix
|
|
112
|
-
- @symi/msteams
|
|
113
|
-
- @symi/nextcloud-talk
|
|
114
|
-
- @symi/nostr
|
|
115
|
-
- @symi/voice-call
|
|
116
|
-
- @symi/zalo
|
|
117
|
-
- @symi/zalouser
|
|
118
|
-
|
|
119
|
-
Release notes must also call out **new optional bundled plugins** that are **not
|
|
120
|
-
on by default** (example: `tlon`).
|