@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,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "RPC protocol notes for onboarding wizard and config schema"
|
|
3
|
-
read_when: "Changing onboarding wizard steps or config schema endpoints"
|
|
4
|
-
title: "Onboarding and Config Protocol"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Onboarding + Config Protocol
|
|
8
|
-
|
|
9
|
-
Purpose: shared onboarding + config surfaces across CLI, macOS app, and Web UI.
|
|
10
|
-
|
|
11
|
-
## Components
|
|
12
|
-
|
|
13
|
-
- Wizard engine (shared session + prompts + onboarding state).
|
|
14
|
-
- CLI onboarding uses the same wizard flow as the UI clients.
|
|
15
|
-
- Gateway RPC exposes wizard + config schema endpoints.
|
|
16
|
-
- macOS onboarding uses the wizard step model.
|
|
17
|
-
- Web UI renders config forms from JSON Schema + UI hints.
|
|
18
|
-
|
|
19
|
-
## Gateway RPC
|
|
20
|
-
|
|
21
|
-
- `wizard.start` params: `{ mode?: "local"|"remote", workspace?: string }`
|
|
22
|
-
- `wizard.next` params: `{ sessionId, answer?: { stepId, value? } }`
|
|
23
|
-
- `wizard.cancel` params: `{ sessionId }`
|
|
24
|
-
- `wizard.status` params: `{ sessionId }`
|
|
25
|
-
- `config.schema` params: `{}`
|
|
26
|
-
|
|
27
|
-
Responses (shape)
|
|
28
|
-
|
|
29
|
-
- Wizard: `{ sessionId, done, step?, status?, error? }`
|
|
30
|
-
- Config schema: `{ schema, uiHints, version, generatedAt }`
|
|
31
|
-
|
|
32
|
-
## UI Hints
|
|
33
|
-
|
|
34
|
-
- `uiHints` keyed by path; optional metadata (label/help/group/order/advanced/sensitive/placeholder).
|
|
35
|
-
- Sensitive fields render as password inputs; no redaction layer.
|
|
36
|
-
- Unsupported schema nodes fall back to the raw JSON editor.
|
|
37
|
-
|
|
38
|
-
## Notes
|
|
39
|
-
|
|
40
|
-
- This doc is the single place to track protocol refactors for onboarding/config.
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Plan: isolate browser act:evaluate from Playwright queue using CDP, with end-to-end deadlines and safer ref resolution"
|
|
3
|
-
owner: "symi"
|
|
4
|
-
status: "draft"
|
|
5
|
-
last_updated: "2026-02-10"
|
|
6
|
-
title: "Browser Evaluate CDP Refactor"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Browser Evaluate CDP Refactor Plan
|
|
10
|
-
|
|
11
|
-
## Context
|
|
12
|
-
|
|
13
|
-
`act:evaluate` executes user provided JavaScript in the page. Today it runs via Playwright
|
|
14
|
-
(`page.evaluate` or `locator.evaluate`). Playwright serializes CDP commands per page, so a
|
|
15
|
-
stuck or long running evaluate can block the page command queue and make every later action
|
|
16
|
-
on that tab look "stuck".
|
|
17
|
-
|
|
18
|
-
PR #13498 adds a pragmatic safety net (bounded evaluate, abort propagation, and best-effort
|
|
19
|
-
recovery). This document describes a larger refactor that makes `act:evaluate` inherently
|
|
20
|
-
isolated from Playwright so a stuck evaluate cannot wedge normal Playwright operations.
|
|
21
|
-
|
|
22
|
-
## Goals
|
|
23
|
-
|
|
24
|
-
- `act:evaluate` cannot permanently block later browser actions on the same tab.
|
|
25
|
-
- Timeouts are single source of truth end to end so a caller can rely on a budget.
|
|
26
|
-
- Abort and timeout are treated the same way across HTTP and in-process dispatch.
|
|
27
|
-
- Element targeting for evaluate is supported without switching everything off Playwright.
|
|
28
|
-
- Maintain backward compatibility for existing callers and payloads.
|
|
29
|
-
|
|
30
|
-
## Non-goals
|
|
31
|
-
|
|
32
|
-
- Replace all browser actions (click, type, wait, etc.) with CDP implementations.
|
|
33
|
-
- Remove the existing safety net introduced in PR #13498 (it remains a useful fallback).
|
|
34
|
-
- Introduce new unsafe capabilities beyond the existing `browser.evaluateEnabled` gate.
|
|
35
|
-
- Add process isolation (worker process/thread) for evaluate. If we still see hard to recover
|
|
36
|
-
stuck states after this refactor, that is a follow-up idea.
|
|
37
|
-
|
|
38
|
-
## Current Architecture (Why It Gets Stuck)
|
|
39
|
-
|
|
40
|
-
At a high level:
|
|
41
|
-
|
|
42
|
-
- Callers send `act:evaluate` to the browser control service.
|
|
43
|
-
- The route handler calls into Playwright to execute the JavaScript.
|
|
44
|
-
- Playwright serializes page commands, so an evaluate that never finishes blocks the queue.
|
|
45
|
-
- A stuck queue means later click/type/wait operations on the tab can appear to hang.
|
|
46
|
-
|
|
47
|
-
## Proposed Architecture
|
|
48
|
-
|
|
49
|
-
### 1. Deadline Propagation
|
|
50
|
-
|
|
51
|
-
Introduce a single budget concept and derive everything from it:
|
|
52
|
-
|
|
53
|
-
- Caller sets `timeoutMs` (or a deadline in the future).
|
|
54
|
-
- The outer request timeout, route handler logic, and the execution budget inside the page
|
|
55
|
-
all use the same budget, with small headroom where needed for serialization overhead.
|
|
56
|
-
- Abort is propagated as an `AbortSignal` everywhere so cancellation is consistent.
|
|
57
|
-
|
|
58
|
-
Implementation direction:
|
|
59
|
-
|
|
60
|
-
- Add a small helper (for example `createBudget({ timeoutMs, signal })`) that returns:
|
|
61
|
-
- `signal`: the linked AbortSignal
|
|
62
|
-
- `deadlineAtMs`: absolute deadline
|
|
63
|
-
- `remainingMs()`: remaining budget for child operations
|
|
64
|
-
- Use this helper in:
|
|
65
|
-
- `src/browser/client-fetch.ts` (HTTP and in-process dispatch)
|
|
66
|
-
- `src/node-host/runner.ts` (proxy path)
|
|
67
|
-
- browser action implementations (Playwright and CDP)
|
|
68
|
-
|
|
69
|
-
### 2. Separate Evaluate Engine (CDP Path)
|
|
70
|
-
|
|
71
|
-
Add a CDP based evaluate implementation that does not share Playwright's per page command
|
|
72
|
-
queue. The key property is that the evaluate transport is a separate WebSocket connection
|
|
73
|
-
and a separate CDP session attached to the target.
|
|
74
|
-
|
|
75
|
-
Implementation direction:
|
|
76
|
-
|
|
77
|
-
- New module, for example `src/browser/cdp-evaluate.ts`, that:
|
|
78
|
-
- Connects to the configured CDP endpoint (browser level socket).
|
|
79
|
-
- Uses `Target.attachToTarget({ targetId, flatten: true })` to get a `sessionId`.
|
|
80
|
-
- Runs either:
|
|
81
|
-
- `Runtime.evaluate` for page level evaluate, or
|
|
82
|
-
- `DOM.resolveNode` plus `Runtime.callFunctionOn` for element evaluate.
|
|
83
|
-
- On timeout or abort:
|
|
84
|
-
- Sends `Runtime.terminateExecution` best-effort for the session.
|
|
85
|
-
- Closes the WebSocket and returns a clear error.
|
|
86
|
-
|
|
87
|
-
Notes:
|
|
88
|
-
|
|
89
|
-
- This still executes JavaScript in the page, so termination can have side effects. The win
|
|
90
|
-
is that it does not wedge the Playwright queue, and it is cancelable at the transport
|
|
91
|
-
layer by killing the CDP session.
|
|
92
|
-
|
|
93
|
-
### 3. Ref Story (Element Targeting Without A Full Rewrite)
|
|
94
|
-
|
|
95
|
-
The hard part is element targeting. CDP needs a DOM handle or `backendDOMNodeId`, while
|
|
96
|
-
today most browser actions use Playwright locators based on refs from snapshots.
|
|
97
|
-
|
|
98
|
-
Recommended approach: keep existing refs, but attach an optional CDP resolvable id.
|
|
99
|
-
|
|
100
|
-
#### 3.1 Extend Stored Ref Info
|
|
101
|
-
|
|
102
|
-
Extend the stored role ref metadata to optionally include a CDP id:
|
|
103
|
-
|
|
104
|
-
- Today: `{ role, name, nth }`
|
|
105
|
-
- Proposed: `{ role, name, nth, backendDOMNodeId?: number }`
|
|
106
|
-
|
|
107
|
-
This keeps all existing Playwright based actions working and allows CDP evaluate to accept
|
|
108
|
-
the same `ref` value when the `backendDOMNodeId` is available.
|
|
109
|
-
|
|
110
|
-
#### 3.2 Populate backendDOMNodeId At Snapshot Time
|
|
111
|
-
|
|
112
|
-
When producing a role snapshot:
|
|
113
|
-
|
|
114
|
-
1. Generate the existing role ref map as today (role, name, nth).
|
|
115
|
-
2. Fetch the AX tree via CDP (`Accessibility.getFullAXTree`) and compute a parallel map of
|
|
116
|
-
`(role, name, nth) -> backendDOMNodeId` using the same duplicate handling rules.
|
|
117
|
-
3. Merge the id back into the stored ref info for the current tab.
|
|
118
|
-
|
|
119
|
-
If mapping fails for a ref, leave `backendDOMNodeId` undefined. This makes the feature
|
|
120
|
-
best-effort and safe to roll out.
|
|
121
|
-
|
|
122
|
-
#### 3.3 Evaluate Behavior With Ref
|
|
123
|
-
|
|
124
|
-
In `act:evaluate`:
|
|
125
|
-
|
|
126
|
-
- If `ref` is present and has `backendDOMNodeId`, run element evaluate via CDP.
|
|
127
|
-
- If `ref` is present but has no `backendDOMNodeId`, fall back to the Playwright path (with
|
|
128
|
-
the safety net).
|
|
129
|
-
|
|
130
|
-
Optional escape hatch:
|
|
131
|
-
|
|
132
|
-
- Extend the request shape to accept `backendDOMNodeId` directly for advanced callers (and
|
|
133
|
-
for debugging), while keeping `ref` as the primary interface.
|
|
134
|
-
|
|
135
|
-
### 4. Keep A Last Resort Recovery Path
|
|
136
|
-
|
|
137
|
-
Even with CDP evaluate, there are other ways to wedge a tab or a connection. Keep the
|
|
138
|
-
existing recovery mechanisms (terminate execution + disconnect Playwright) as a last resort
|
|
139
|
-
for:
|
|
140
|
-
|
|
141
|
-
- legacy callers
|
|
142
|
-
- environments where CDP attach is blocked
|
|
143
|
-
- unexpected Playwright edge cases
|
|
144
|
-
|
|
145
|
-
## Implementation Plan (Single Iteration)
|
|
146
|
-
|
|
147
|
-
### Deliverables
|
|
148
|
-
|
|
149
|
-
- A CDP based evaluate engine that runs outside the Playwright per-page command queue.
|
|
150
|
-
- A single end-to-end timeout/abort budget used consistently by callers and handlers.
|
|
151
|
-
- Ref metadata that can optionally carry `backendDOMNodeId` for element evaluate.
|
|
152
|
-
- `act:evaluate` prefers the CDP engine when possible and falls back to Playwright when not.
|
|
153
|
-
- Tests that prove a stuck evaluate does not wedge later actions.
|
|
154
|
-
- Logs/metrics that make failures and fallbacks visible.
|
|
155
|
-
|
|
156
|
-
### Implementation Checklist
|
|
157
|
-
|
|
158
|
-
1. Add a shared "budget" helper to link `timeoutMs` + upstream `AbortSignal` into:
|
|
159
|
-
- a single `AbortSignal`
|
|
160
|
-
- an absolute deadline
|
|
161
|
-
- a `remainingMs()` helper for downstream operations
|
|
162
|
-
2. Update all caller paths to use that helper so `timeoutMs` means the same thing everywhere:
|
|
163
|
-
- `src/browser/client-fetch.ts` (HTTP and in-process dispatch)
|
|
164
|
-
- `src/node-host/runner.ts` (node proxy path)
|
|
165
|
-
- CLI wrappers that call `/act` (add `--timeout-ms` to `browser evaluate`)
|
|
166
|
-
3. Implement `src/browser/cdp-evaluate.ts`:
|
|
167
|
-
- connect to the browser-level CDP socket
|
|
168
|
-
- `Target.attachToTarget` to get a `sessionId`
|
|
169
|
-
- run `Runtime.evaluate` for page evaluate
|
|
170
|
-
- run `DOM.resolveNode` + `Runtime.callFunctionOn` for element evaluate
|
|
171
|
-
- on timeout/abort: best-effort `Runtime.terminateExecution` then close the socket
|
|
172
|
-
4. Extend stored role ref metadata to optionally include `backendDOMNodeId`:
|
|
173
|
-
- keep existing `{ role, name, nth }` behavior for Playwright actions
|
|
174
|
-
- add `backendDOMNodeId?: number` for CDP element targeting
|
|
175
|
-
5. Populate `backendDOMNodeId` during snapshot creation (best-effort):
|
|
176
|
-
- fetch AX tree via CDP (`Accessibility.getFullAXTree`)
|
|
177
|
-
- compute `(role, name, nth) -> backendDOMNodeId` and merge into the stored ref map
|
|
178
|
-
- if mapping is ambiguous or missing, leave the id undefined
|
|
179
|
-
6. Update `act:evaluate` routing:
|
|
180
|
-
- if no `ref`: always use CDP evaluate
|
|
181
|
-
- if `ref` resolves to a `backendDOMNodeId`: use CDP element evaluate
|
|
182
|
-
- otherwise: fall back to Playwright evaluate (still bounded and abortable)
|
|
183
|
-
7. Keep the existing "last resort" recovery path as a fallback, not the default path.
|
|
184
|
-
8. Add tests:
|
|
185
|
-
- stuck evaluate times out within budget and the next click/type succeeds
|
|
186
|
-
- abort cancels evaluate (client disconnect or timeout) and unblocks subsequent actions
|
|
187
|
-
- mapping failures cleanly fall back to Playwright
|
|
188
|
-
9. Add observability:
|
|
189
|
-
- evaluate duration and timeout counters
|
|
190
|
-
- terminateExecution usage
|
|
191
|
-
- fallback rate (CDP -> Playwright) and reasons
|
|
192
|
-
|
|
193
|
-
### Acceptance Criteria
|
|
194
|
-
|
|
195
|
-
- A deliberately hung `act:evaluate` returns within the caller budget and does not wedge the
|
|
196
|
-
tab for later actions.
|
|
197
|
-
- `timeoutMs` behaves consistently across CLI, agent tool, node proxy, and in-process calls.
|
|
198
|
-
- If `ref` can be mapped to `backendDOMNodeId`, element evaluate uses CDP; otherwise the
|
|
199
|
-
fallback path is still bounded and recoverable.
|
|
200
|
-
|
|
201
|
-
## Testing Plan
|
|
202
|
-
|
|
203
|
-
- Unit tests:
|
|
204
|
-
- `(role, name, nth)` matching logic between role refs and AX tree nodes.
|
|
205
|
-
- Budget helper behavior (headroom, remaining time math).
|
|
206
|
-
- Integration tests:
|
|
207
|
-
- CDP evaluate timeout returns within budget and does not block the next action.
|
|
208
|
-
- Abort cancels evaluate and triggers termination best-effort.
|
|
209
|
-
- Contract tests:
|
|
210
|
-
- Ensure `BrowserActRequest` and `BrowserActResponse` remain compatible.
|
|
211
|
-
|
|
212
|
-
## Risks And Mitigations
|
|
213
|
-
|
|
214
|
-
- Mapping is imperfect:
|
|
215
|
-
- Mitigation: best-effort mapping, fallback to Playwright evaluate, and add debug tooling.
|
|
216
|
-
- `Runtime.terminateExecution` has side effects:
|
|
217
|
-
- Mitigation: only use on timeout/abort and document the behavior in errors.
|
|
218
|
-
- Extra overhead:
|
|
219
|
-
- Mitigation: only fetch AX tree when snapshots are requested, cache per target, and keep
|
|
220
|
-
CDP session short lived.
|
|
221
|
-
- Extension relay limitations:
|
|
222
|
-
- Mitigation: use browser level attach APIs when per page sockets are not available, and
|
|
223
|
-
keep the current Playwright path as fallback.
|
|
224
|
-
|
|
225
|
-
## Open Questions
|
|
226
|
-
|
|
227
|
-
- Should the new engine be configurable as `playwright`, `cdp`, or `auto`?
|
|
228
|
-
- Do we want to expose a new "nodeRef" format for advanced users, or keep `ref` only?
|
|
229
|
-
- How should frame snapshots and selector scoped snapshots participate in AX mapping?
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Harden cron.add input handling, align schemas, and improve cron UI/agent tooling"
|
|
3
|
-
owner: "symi"
|
|
4
|
-
status: "complete"
|
|
5
|
-
last_updated: "2026-01-05"
|
|
6
|
-
title: "Cron Add Hardening"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Cron Add Hardening & Schema Alignment
|
|
10
|
-
|
|
11
|
-
## Context
|
|
12
|
-
|
|
13
|
-
Recent gateway logs show repeated `cron.add` failures with invalid parameters (missing `sessionTarget`, `wakeMode`, `payload`, and malformed `schedule`). This indicates that at least one client (likely the agent tool call path) is sending wrapped or partially specified job payloads. Separately, there is drift between cron provider enums in TypeScript, gateway schema, CLI flags, and UI form types, plus a UI mismatch for `cron.status` (expects `jobCount` while gateway returns `jobs`).
|
|
14
|
-
|
|
15
|
-
## Goals
|
|
16
|
-
|
|
17
|
-
- Stop `cron.add` INVALID_REQUEST spam by normalizing common wrapper payloads and inferring missing `kind` fields.
|
|
18
|
-
- Align cron provider lists across gateway schema, cron types, CLI docs, and UI forms.
|
|
19
|
-
- Make agent cron tool schema explicit so the LLM produces correct job payloads.
|
|
20
|
-
- Fix the Control UI cron status job count display.
|
|
21
|
-
- Add tests to cover normalization and tool behavior.
|
|
22
|
-
|
|
23
|
-
## Non-goals
|
|
24
|
-
|
|
25
|
-
- Change cron scheduling semantics or job execution behavior.
|
|
26
|
-
- Add new schedule kinds or cron expression parsing.
|
|
27
|
-
- Overhaul the UI/UX for cron beyond the necessary field fixes.
|
|
28
|
-
|
|
29
|
-
## Findings (current gaps)
|
|
30
|
-
|
|
31
|
-
- `CronPayloadSchema` in gateway excludes `signal` + `imessage`, while TS types include them.
|
|
32
|
-
- Control UI CronStatus expects `jobCount`, but gateway returns `jobs`.
|
|
33
|
-
- Agent cron tool schema allows arbitrary `job` objects, enabling malformed inputs.
|
|
34
|
-
- Gateway strictly validates `cron.add` with no normalization, so wrapped payloads fail.
|
|
35
|
-
|
|
36
|
-
## What changed
|
|
37
|
-
|
|
38
|
-
- `cron.add` and `cron.update` now normalize common wrapper shapes and infer missing `kind` fields.
|
|
39
|
-
- Agent cron tool schema matches the gateway schema, which reduces invalid payloads.
|
|
40
|
-
- Provider enums are aligned across gateway, CLI, UI, and macOS picker.
|
|
41
|
-
- Control UI uses the gateway’s `jobs` count field for status.
|
|
42
|
-
|
|
43
|
-
## Current behavior
|
|
44
|
-
|
|
45
|
-
- **Normalization:** wrapped `data`/`job` payloads are unwrapped; `schedule.kind` and `payload.kind` are inferred when safe.
|
|
46
|
-
- **Defaults:** safe defaults are applied for `wakeMode` and `sessionTarget` when missing.
|
|
47
|
-
|
|
48
|
-
See [Cron jobs](/automation/cron-jobs) for the normalized shape and examples.
|
|
49
|
-
|
|
50
|
-
## Verification
|
|
51
|
-
|
|
52
|
-
- Watch gateway logs for reduced `cron.add` INVALID_REQUEST errors.
|
|
53
|
-
- Confirm Control UI cron status shows job count after refresh.
|
|
54
|
-
|
|
55
|
-
## Optional Follow-ups
|
|
56
|
-
|
|
57
|
-
- Manual Control UI smoke: add a cron job per provider + verify status job count.
|
|
58
|
-
|
|
59
|
-
## Open Questions
|
|
60
|
-
|
|
61
|
-
- Should `cron.add` accept explicit `state` from clients (currently disallowed by schema)?
|
|
62
|
-
- Should we allow `webchat` as an explicit delivery provider (currently filtered in delivery resolution)?
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Telegram allowlist hardening: prefix + whitespace normalization"
|
|
3
|
-
read_when:
|
|
4
|
-
- Reviewing historical Telegram allowlist changes
|
|
5
|
-
title: "Telegram Allowlist Hardening"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Telegram Allowlist Hardening
|
|
9
|
-
|
|
10
|
-
**Date**: 2026-01-05
|
|
11
|
-
**Status**: Complete
|
|
12
|
-
**PR**: #216
|
|
13
|
-
|
|
14
|
-
## Summary
|
|
15
|
-
|
|
16
|
-
Telegram allowlists now accept `telegram:` and `tg:` prefixes case-insensitively, and tolerate
|
|
17
|
-
accidental whitespace. This aligns inbound allowlist checks with outbound send normalization.
|
|
18
|
-
|
|
19
|
-
## What changed
|
|
20
|
-
|
|
21
|
-
- Prefixes `telegram:` and `tg:` are treated the same (case-insensitive).
|
|
22
|
-
- Allowlist entries are trimmed; empty entries are ignored.
|
|
23
|
-
|
|
24
|
-
## Examples
|
|
25
|
-
|
|
26
|
-
All of these are accepted for the same ID:
|
|
27
|
-
|
|
28
|
-
- `telegram:123456`
|
|
29
|
-
- `TG:123456`
|
|
30
|
-
- `tg:123456`
|
|
31
|
-
|
|
32
|
-
## Why it matters
|
|
33
|
-
|
|
34
|
-
Copy/paste from logs or chat IDs often includes prefixes and whitespace. Normalizing avoids
|
|
35
|
-
false negatives when deciding whether to respond in DMs or groups.
|
|
36
|
-
|
|
37
|
-
## Related docs
|
|
38
|
-
|
|
39
|
-
- [Group Chats](/channels/groups)
|
|
40
|
-
- [Telegram Provider](/channels/telegram)
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Plan: Add OpenResponses /v1/responses endpoint and deprecate chat completions cleanly"
|
|
3
|
-
owner: "symi"
|
|
4
|
-
status: "draft"
|
|
5
|
-
last_updated: "2026-01-19"
|
|
6
|
-
title: "OpenResponses Gateway Plan"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# OpenResponses Gateway Integration Plan
|
|
10
|
-
|
|
11
|
-
## Context
|
|
12
|
-
|
|
13
|
-
Symi Gateway currently exposes a minimal OpenAI-compatible Chat Completions endpoint at
|
|
14
|
-
`/v1/chat/completions` (see [OpenAI Chat Completions](/gateway/openai-http-api)).
|
|
15
|
-
|
|
16
|
-
Open Responses is an open inference standard based on the OpenAI Responses API. It is designed
|
|
17
|
-
for agentic workflows and uses item-based inputs plus semantic streaming events. The OpenResponses
|
|
18
|
-
spec defines `/v1/responses`, not `/v1/chat/completions`.
|
|
19
|
-
|
|
20
|
-
## Goals
|
|
21
|
-
|
|
22
|
-
- Add a `/v1/responses` endpoint that adheres to OpenResponses semantics.
|
|
23
|
-
- Keep Chat Completions as a compatibility layer that is easy to disable and eventually remove.
|
|
24
|
-
- Standardize validation and parsing with isolated, reusable schemas.
|
|
25
|
-
|
|
26
|
-
## Non-goals
|
|
27
|
-
|
|
28
|
-
- Full OpenResponses feature parity in the first pass (images, files, hosted tools).
|
|
29
|
-
- Replacing internal agent execution logic or tool orchestration.
|
|
30
|
-
- Changing the existing `/v1/chat/completions` behavior during the first phase.
|
|
31
|
-
|
|
32
|
-
## Research Summary
|
|
33
|
-
|
|
34
|
-
Sources: OpenResponses OpenAPI, OpenResponses specification site, and the Hugging Face blog post.
|
|
35
|
-
|
|
36
|
-
Key points extracted:
|
|
37
|
-
|
|
38
|
-
- `POST /v1/responses` accepts `CreateResponseBody` fields like `model`, `input` (string or
|
|
39
|
-
`ItemParam[]`), `instructions`, `tools`, `tool_choice`, `stream`, `max_output_tokens`, and
|
|
40
|
-
`max_tool_calls`.
|
|
41
|
-
- `ItemParam` is a discriminated union of:
|
|
42
|
-
- `message` items with roles `system`, `developer`, `user`, `assistant`
|
|
43
|
-
- `function_call` and `function_call_output`
|
|
44
|
-
- `reasoning`
|
|
45
|
-
- `item_reference`
|
|
46
|
-
- Successful responses return a `ResponseResource` with `object: "response"`, `status`, and
|
|
47
|
-
`output` items.
|
|
48
|
-
- Streaming uses semantic events such as:
|
|
49
|
-
- `response.created`, `response.in_progress`, `response.completed`, `response.failed`
|
|
50
|
-
- `response.output_item.added`, `response.output_item.done`
|
|
51
|
-
- `response.content_part.added`, `response.content_part.done`
|
|
52
|
-
- `response.output_text.delta`, `response.output_text.done`
|
|
53
|
-
- The spec requires:
|
|
54
|
-
- `Content-Type: text/event-stream`
|
|
55
|
-
- `event:` must match the JSON `type` field
|
|
56
|
-
- terminal event must be literal `[DONE]`
|
|
57
|
-
- Reasoning items may expose `content`, `encrypted_content`, and `summary`.
|
|
58
|
-
- HF examples include `OpenResponses-Version: latest` in requests (optional header).
|
|
59
|
-
|
|
60
|
-
## Proposed Architecture
|
|
61
|
-
|
|
62
|
-
- Add `src/gateway/open-responses.schema.ts` containing Zod schemas only (no gateway imports).
|
|
63
|
-
- Add `src/gateway/openresponses-http.ts` (or `open-responses-http.ts`) for `/v1/responses`.
|
|
64
|
-
- Keep `src/gateway/openai-http.ts` intact as a legacy compatibility adapter.
|
|
65
|
-
- Add config `gateway.http.endpoints.responses.enabled` (default `false`).
|
|
66
|
-
- Keep `gateway.http.endpoints.chatCompletions.enabled` independent; allow both endpoints to be
|
|
67
|
-
toggled separately.
|
|
68
|
-
- Emit a startup warning when Chat Completions is enabled to signal legacy status.
|
|
69
|
-
|
|
70
|
-
## Deprecation Path for Chat Completions
|
|
71
|
-
|
|
72
|
-
- Maintain strict module boundaries: no shared schema types between responses and chat completions.
|
|
73
|
-
- Make Chat Completions opt-in by config so it can be disabled without code changes.
|
|
74
|
-
- Update docs to label Chat Completions as legacy once `/v1/responses` is stable.
|
|
75
|
-
- Optional future step: map Chat Completions requests to the Responses handler for a simpler
|
|
76
|
-
removal path.
|
|
77
|
-
|
|
78
|
-
## Phase 1 Support Subset
|
|
79
|
-
|
|
80
|
-
- Accept `input` as string or `ItemParam[]` with message roles and `function_call_output`.
|
|
81
|
-
- Extract system and developer messages into `extraSystemPrompt`.
|
|
82
|
-
- Use the most recent `user` or `function_call_output` as the current message for agent runs.
|
|
83
|
-
- Reject unsupported content parts (image/file) with `invalid_request_error`.
|
|
84
|
-
- Return a single assistant message with `output_text` content.
|
|
85
|
-
- Return `usage` with zeroed values until token accounting is wired.
|
|
86
|
-
|
|
87
|
-
## Validation Strategy (No SDK)
|
|
88
|
-
|
|
89
|
-
- Implement Zod schemas for the supported subset of:
|
|
90
|
-
- `CreateResponseBody`
|
|
91
|
-
- `ItemParam` + message content part unions
|
|
92
|
-
- `ResponseResource`
|
|
93
|
-
- Streaming event shapes used by the gateway
|
|
94
|
-
- Keep schemas in a single, isolated module to avoid drift and allow future codegen.
|
|
95
|
-
|
|
96
|
-
## Streaming Implementation (Phase 1)
|
|
97
|
-
|
|
98
|
-
- SSE lines with both `event:` and `data:`.
|
|
99
|
-
- Required sequence (minimum viable):
|
|
100
|
-
- `response.created`
|
|
101
|
-
- `response.output_item.added`
|
|
102
|
-
- `response.content_part.added`
|
|
103
|
-
- `response.output_text.delta` (repeat as needed)
|
|
104
|
-
- `response.output_text.done`
|
|
105
|
-
- `response.content_part.done`
|
|
106
|
-
- `response.completed`
|
|
107
|
-
- `[DONE]`
|
|
108
|
-
|
|
109
|
-
## Tests and Verification Plan
|
|
110
|
-
|
|
111
|
-
- Add e2e coverage for `/v1/responses`:
|
|
112
|
-
- Auth required
|
|
113
|
-
- Non-stream response shape
|
|
114
|
-
- Stream event ordering and `[DONE]`
|
|
115
|
-
- Session routing with headers and `user`
|
|
116
|
-
- Keep `src/gateway/openai-http.e2e.test.ts` unchanged.
|
|
117
|
-
- Manual: curl to `/v1/responses` with `stream: true` and verify event ordering and terminal
|
|
118
|
-
`[DONE]`.
|
|
119
|
-
|
|
120
|
-
## Doc Updates (Follow-up)
|
|
121
|
-
|
|
122
|
-
- Add a new docs page for `/v1/responses` usage and examples.
|
|
123
|
-
- Update `/gateway/openai-http-api` with a legacy note and pointer to `/v1/responses`.
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Production plan for reliable interactive process supervision (PTY + non-PTY) with explicit ownership, unified lifecycle, and deterministic cleanup"
|
|
3
|
-
owner: "symi"
|
|
4
|
-
status: "in-progress"
|
|
5
|
-
last_updated: "2026-02-15"
|
|
6
|
-
title: "PTY and Process Supervision Plan"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# PTY and Process Supervision Plan
|
|
10
|
-
|
|
11
|
-
## 1. Problem and goal
|
|
12
|
-
|
|
13
|
-
We need one reliable lifecycle for long-running command execution across:
|
|
14
|
-
|
|
15
|
-
- `exec` foreground runs
|
|
16
|
-
- `exec` background runs
|
|
17
|
-
- `process` follow up actions (`poll`, `log`, `send-keys`, `paste`, `submit`, `kill`, `remove`)
|
|
18
|
-
- CLI agent runner subprocesses
|
|
19
|
-
|
|
20
|
-
The goal is not just to support PTY. The goal is predictable ownership, cancellation, timeout, and cleanup with no unsafe process matching heuristics.
|
|
21
|
-
|
|
22
|
-
## 2. Scope and boundaries
|
|
23
|
-
|
|
24
|
-
- Keep implementation internal in `src/process/supervisor`.
|
|
25
|
-
- Do not create a new package for this.
|
|
26
|
-
- Keep current behavior compatibility where practical.
|
|
27
|
-
- Do not broaden scope to terminal replay or tmux style session persistence.
|
|
28
|
-
|
|
29
|
-
## 3. Implemented in this branch
|
|
30
|
-
|
|
31
|
-
### Supervisor baseline already present
|
|
32
|
-
|
|
33
|
-
- Supervisor module is in place under `src/process/supervisor/*`.
|
|
34
|
-
- Exec runtime and CLI runner are already routed through supervisor spawn and wait.
|
|
35
|
-
- Registry finalization is idempotent.
|
|
36
|
-
|
|
37
|
-
### This pass completed
|
|
38
|
-
|
|
39
|
-
1. Explicit PTY command contract
|
|
40
|
-
|
|
41
|
-
- `SpawnInput` is now a discriminated union in `src/process/supervisor/types.ts`.
|
|
42
|
-
- PTY runs require `ptyCommand` instead of reusing generic `argv`.
|
|
43
|
-
- Supervisor no longer rebuilds PTY command strings from argv joins in `src/process/supervisor/supervisor.ts`.
|
|
44
|
-
- Exec runtime now passes `ptyCommand` directly in `src/agents/bash-tools.exec-runtime.ts`.
|
|
45
|
-
|
|
46
|
-
2. Process layer type decoupling
|
|
47
|
-
|
|
48
|
-
- Supervisor types no longer import `SessionStdin` from agents.
|
|
49
|
-
- Process local stdin contract lives in `src/process/supervisor/types.ts` (`ManagedRunStdin`).
|
|
50
|
-
- Adapters now depend only on process level types:
|
|
51
|
-
- `src/process/supervisor/adapters/child.ts`
|
|
52
|
-
- `src/process/supervisor/adapters/pty.ts`
|
|
53
|
-
|
|
54
|
-
3. Process tool lifecycle ownership improvement
|
|
55
|
-
|
|
56
|
-
- `src/agents/bash-tools.process.ts` now requests cancellation through supervisor first.
|
|
57
|
-
- `process kill/remove` now use process-tree fallback termination when supervisor lookup misses.
|
|
58
|
-
- `remove` keeps deterministic remove behavior by dropping running session entries immediately after termination is requested.
|
|
59
|
-
|
|
60
|
-
4. Single source watchdog defaults
|
|
61
|
-
|
|
62
|
-
- Added shared defaults in `src/agents/cli-watchdog-defaults.ts`.
|
|
63
|
-
- `src/agents/cli-backends.ts` consumes the shared defaults.
|
|
64
|
-
- `src/agents/cli-runner/reliability.ts` consumes the same shared defaults.
|
|
65
|
-
|
|
66
|
-
5. Dead helper cleanup
|
|
67
|
-
|
|
68
|
-
- Removed unused `killSession` helper path from `src/agents/bash-tools.shared.ts`.
|
|
69
|
-
|
|
70
|
-
6. Direct supervisor path tests added
|
|
71
|
-
|
|
72
|
-
- Added `src/agents/bash-tools.process.supervisor.test.ts` to cover kill and remove routing through supervisor cancellation.
|
|
73
|
-
|
|
74
|
-
7. Reliability gap fixes completed
|
|
75
|
-
|
|
76
|
-
- `src/agents/bash-tools.process.ts` now falls back to real OS-level process termination when supervisor lookup misses.
|
|
77
|
-
- `src/process/supervisor/adapters/child.ts` now uses process-tree termination semantics for default cancel/timeout kill paths.
|
|
78
|
-
- Added shared process-tree utility in `src/process/kill-tree.ts`.
|
|
79
|
-
|
|
80
|
-
8. PTY contract edge-case coverage added
|
|
81
|
-
|
|
82
|
-
- Added `src/process/supervisor/supervisor.pty-command.test.ts` for verbatim PTY command forwarding and empty-command rejection.
|
|
83
|
-
- Added `src/process/supervisor/adapters/child.test.ts` for process-tree kill behavior in child adapter cancellation.
|
|
84
|
-
|
|
85
|
-
## 4. Remaining gaps and decisions
|
|
86
|
-
|
|
87
|
-
### Reliability status
|
|
88
|
-
|
|
89
|
-
The two required reliability gaps for this pass are now closed:
|
|
90
|
-
|
|
91
|
-
- `process kill/remove` now has a real OS termination fallback when supervisor lookup misses.
|
|
92
|
-
- child cancel/timeout now uses process-tree kill semantics for default kill path.
|
|
93
|
-
- Regression tests were added for both behaviors.
|
|
94
|
-
|
|
95
|
-
### Durability and startup reconciliation
|
|
96
|
-
|
|
97
|
-
Restart behavior is now explicitly defined as in-memory lifecycle only.
|
|
98
|
-
|
|
99
|
-
- `reconcileOrphans()` remains a no-op in `src/process/supervisor/supervisor.ts` by design.
|
|
100
|
-
- Active runs are not recovered after process restart.
|
|
101
|
-
- This boundary is intentional for this implementation pass to avoid partial persistence risks.
|
|
102
|
-
|
|
103
|
-
### Maintainability follow-ups
|
|
104
|
-
|
|
105
|
-
1. `runExecProcess` in `src/agents/bash-tools.exec-runtime.ts` still handles multiple responsibilities and can be split into focused helpers in a follow-up.
|
|
106
|
-
|
|
107
|
-
## 5. Implementation plan
|
|
108
|
-
|
|
109
|
-
The implementation pass for required reliability and contract items is complete.
|
|
110
|
-
|
|
111
|
-
Completed:
|
|
112
|
-
|
|
113
|
-
- `process kill/remove` fallback real termination
|
|
114
|
-
- process-tree cancellation for child adapter default kill path
|
|
115
|
-
- regression tests for fallback kill and child adapter kill path
|
|
116
|
-
- PTY command edge-case tests under explicit `ptyCommand`
|
|
117
|
-
- explicit in-memory restart boundary with `reconcileOrphans()` no-op by design
|
|
118
|
-
|
|
119
|
-
Optional follow-up:
|
|
120
|
-
|
|
121
|
-
- split `runExecProcess` into focused helpers with no behavior drift
|
|
122
|
-
|
|
123
|
-
## 6. File map
|
|
124
|
-
|
|
125
|
-
### Process supervisor
|
|
126
|
-
|
|
127
|
-
- `src/process/supervisor/types.ts` updated with discriminated spawn input and process local stdin contract.
|
|
128
|
-
- `src/process/supervisor/supervisor.ts` updated to use explicit `ptyCommand`.
|
|
129
|
-
- `src/process/supervisor/adapters/child.ts` and `src/process/supervisor/adapters/pty.ts` decoupled from agent types.
|
|
130
|
-
- `src/process/supervisor/registry.ts` idempotent finalize unchanged and retained.
|
|
131
|
-
|
|
132
|
-
### Exec and process integration
|
|
133
|
-
|
|
134
|
-
- `src/agents/bash-tools.exec-runtime.ts` updated to pass PTY command explicitly and keep fallback path.
|
|
135
|
-
- `src/agents/bash-tools.process.ts` updated to cancel via supervisor with real process-tree fallback termination.
|
|
136
|
-
- `src/agents/bash-tools.shared.ts` removed direct kill helper path.
|
|
137
|
-
|
|
138
|
-
### CLI reliability
|
|
139
|
-
|
|
140
|
-
- `src/agents/cli-watchdog-defaults.ts` added as shared baseline.
|
|
141
|
-
- `src/agents/cli-backends.ts` and `src/agents/cli-runner/reliability.ts` now consume same defaults.
|
|
142
|
-
|
|
143
|
-
## 7. Validation run in this pass
|
|
144
|
-
|
|
145
|
-
Unit tests:
|
|
146
|
-
|
|
147
|
-
- `pnpm vitest src/process/supervisor/registry.test.ts`
|
|
148
|
-
- `pnpm vitest src/process/supervisor/supervisor.test.ts`
|
|
149
|
-
- `pnpm vitest src/process/supervisor/supervisor.pty-command.test.ts`
|
|
150
|
-
- `pnpm vitest src/process/supervisor/adapters/child.test.ts`
|
|
151
|
-
- `pnpm vitest src/agents/cli-backends.test.ts`
|
|
152
|
-
- `pnpm vitest src/agents/bash-tools.exec.pty-cleanup.test.ts`
|
|
153
|
-
- `pnpm vitest src/agents/bash-tools.process.poll-timeout.test.ts`
|
|
154
|
-
- `pnpm vitest src/agents/bash-tools.process.supervisor.test.ts`
|
|
155
|
-
- `pnpm vitest src/process/exec.test.ts`
|
|
156
|
-
|
|
157
|
-
E2E targets:
|
|
158
|
-
|
|
159
|
-
- `pnpm test:e2e src/agents/cli-runner.e2e.test.ts`
|
|
160
|
-
- `pnpm test:e2e src/agents/bash-tools.exec.pty-fallback.e2e.test.ts src/agents/bash-tools.exec.background-abort.e2e.test.ts src/agents/bash-tools.process.send-keys.e2e.test.ts`
|
|
161
|
-
|
|
162
|
-
Typecheck note:
|
|
163
|
-
|
|
164
|
-
- `pnpm tsgo` currently fails in this repo due to a pre-existing UI typing dependency issue (`@vitest/browser-playwright` resolution), unrelated to this process supervision work.
|
|
165
|
-
|
|
166
|
-
## 8. Operational guarantees preserved
|
|
167
|
-
|
|
168
|
-
- Exec env hardening behavior is unchanged.
|
|
169
|
-
- Approval and allowlist flow is unchanged.
|
|
170
|
-
- Output sanitization and output caps are unchanged.
|
|
171
|
-
- PTY adapter still guarantees wait settlement on forced kill and listener disposal.
|
|
172
|
-
|
|
173
|
-
## 9. Definition of done
|
|
174
|
-
|
|
175
|
-
1. Supervisor is lifecycle owner for managed runs.
|
|
176
|
-
2. PTY spawn uses explicit command contract with no argv reconstruction.
|
|
177
|
-
3. Process layer has no type dependency on agent layer for supervisor stdin contracts.
|
|
178
|
-
4. Watchdog defaults are single source.
|
|
179
|
-
5. Targeted unit and e2e tests remain green.
|
|
180
|
-
6. Restart durability boundary is explicitly documented or fully implemented.
|
|
181
|
-
|
|
182
|
-
## 10. Summary
|
|
183
|
-
|
|
184
|
-
The branch now has a coherent and safer supervision shape:
|
|
185
|
-
|
|
186
|
-
- explicit PTY contract
|
|
187
|
-
- cleaner process layering
|
|
188
|
-
- supervisor driven cancellation path for process operations
|
|
189
|
-
- real fallback termination when supervisor lookup misses
|
|
190
|
-
- process-tree cancellation for child-run default kill paths
|
|
191
|
-
- unified watchdog defaults
|
|
192
|
-
- explicit in-memory restart boundary (no orphan reconciliation across restart in this pass)
|