@poolzin/pool-bot 2026.1.26 → 2026.1.29
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/CHANGELOG.md +50 -1118
- package/LICENSE +21 -0
- package/README.md +47 -37
- package/assets/chrome-extension/README.md +2 -2
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +5 -6
- package/assets/chrome-extension/options.js +1 -1
- package/dist/acp/client.js +5 -5
- package/dist/acp/server.js +1 -1
- package/dist/acp/types.js +2 -2
- package/dist/agents/agent-paths.js +3 -3
- package/dist/agents/auth-health.js +2 -6
- package/dist/agents/auth-profiles/doctor.js +1 -1
- package/dist/agents/auth-profiles/external-cli-sync.js +5 -150
- package/dist/agents/auth-profiles/oauth.js +26 -7
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/auth-profiles/store.js +5 -13
- package/dist/agents/bash-tools.shared.js +8 -1
- package/dist/agents/cli-backends.js +8 -0
- package/dist/agents/cli-runner/helpers.js +3 -3
- package/dist/agents/cli-runner.js +2 -2
- package/dist/agents/compaction.js +3 -0
- package/dist/agents/context.js +4 -4
- package/dist/agents/docs-path.js +3 -3
- package/dist/agents/identity.js +1 -1
- package/dist/agents/memory-search.js +7 -2
- package/dist/agents/minimax-vlm.js +1 -1
- package/dist/agents/model-auth.js +1 -1
- package/dist/agents/model-catalog.js +4 -4
- package/dist/agents/model-fallback.js +22 -0
- package/dist/agents/model-selection.js +1 -1
- package/dist/agents/models-config.js +3 -3
- package/dist/agents/models-config.providers.js +4 -4
- package/dist/agents/pi-embedded-helpers/openai.js +1 -1
- package/dist/agents/pi-embedded-runner/cache-ttl.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +8 -8
- package/dist/agents/pi-embedded-runner/extensions.js +5 -0
- package/dist/agents/pi-embedded-runner/model.js +2 -2
- package/dist/agents/pi-embedded-runner/run/attempt.js +10 -6
- package/dist/agents/pi-embedded-runner/run.js +4 -4
- package/dist/agents/pi-embedded-runner/sandbox-info.js +1 -4
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-utils.js +7 -1
- package/dist/agents/pi-extensions/compaction-safeguard-runtime.js +20 -0
- package/dist/agents/pi-extensions/compaction-safeguard.js +32 -3
- package/dist/agents/pi-tools.js +25 -15
- package/dist/agents/pi-tools.policy.js +34 -1
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/{clawdbot-tools.js → poolbot-tools.js} +2 -5
- package/dist/agents/sandbox/browser.js +5 -7
- package/dist/agents/sandbox/config.js +0 -12
- package/dist/agents/sandbox/constants.js +8 -8
- package/dist/agents/sandbox/context.js +3 -3
- package/dist/agents/sandbox/docker.js +8 -8
- package/dist/agents/sandbox/runtime-status.js +1 -1
- package/dist/agents/session-transcript-repair.js +1 -1
- package/dist/agents/session-write-lock.js +68 -0
- package/dist/agents/skills/config.js +9 -8
- package/dist/agents/skills/env-overrides.js +1 -1
- package/dist/agents/skills/frontmatter.js +15 -14
- package/dist/agents/skills/workspace.js +7 -7
- package/dist/agents/skills-install.js +1 -1
- package/dist/agents/skills-status.js +12 -12
- package/dist/agents/subagent-registry.store.js +2 -2
- package/dist/agents/system-prompt.js +22 -33
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.js +8 -2
- package/dist/agents/tools/browser-tool.js +19 -79
- package/dist/agents/tools/browser-tool.schema.js +1 -2
- package/dist/agents/tools/cron-tool.js +44 -1
- package/dist/agents/tools/discord-actions-guild.js +5 -1
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/message-tool.js +1 -0
- package/dist/agents/tools/sessions-send-helpers.js +17 -2
- package/dist/agents/tools/telegram-actions.js +93 -1
- package/dist/agents/tools/web-fetch.js +123 -103
- package/dist/agents/tools/web-search.js +7 -7
- package/dist/agents/workspace.js +36 -0
- package/dist/auto-reply/commands-registry.data.js +68 -3
- package/dist/auto-reply/commands-registry.js +14 -11
- package/dist/auto-reply/reply/agent-runner-execution.js +21 -3
- package/dist/auto-reply/reply/agent-runner-memory.js +5 -0
- package/dist/auto-reply/reply/bash-command.js +2 -2
- package/dist/auto-reply/reply/commands-context-report.js +2 -2
- package/dist/auto-reply/reply/commands-info.js +50 -5
- package/dist/auto-reply/reply/commands-session.js +4 -4
- package/dist/auto-reply/reply/commands-tts.js +61 -63
- package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +65 -1
- package/dist/auto-reply/reply/followup-runner.js +5 -0
- package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
- package/dist/auto-reply/reply/get-reply-run.js +4 -0
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/history.js +23 -0
- package/dist/auto-reply/reply/reply-elevated.js +1 -1
- package/dist/auto-reply/reply/session-updates.js +6 -1
- package/dist/auto-reply/reply/stage-sandbox-media.js +1 -1
- package/dist/auto-reply/status.js +142 -50
- package/dist/browser/bridge-server.js +1 -3
- package/dist/browser/client-actions-core.js +13 -7
- package/dist/browser/client-actions-observe.js +14 -8
- package/dist/browser/client-actions-state.js +21 -15
- package/dist/browser/client-fetch.js +74 -61
- package/dist/browser/client.js +19 -21
- package/dist/browser/config.js +13 -26
- package/dist/browser/constants.js +1 -1
- package/dist/browser/control-service.js +72 -0
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/pw-session.js +41 -4
- package/dist/browser/pw-tools-core.downloads.js +1 -1
- package/dist/browser/pw-tools-core.interactions.js +5 -5
- package/dist/browser/pw-tools-core.responses.js +1 -1
- package/dist/browser/routes/agent.act.js +13 -0
- package/dist/browser/routes/agent.debug.js +1 -1
- package/dist/browser/routes/basic.js +0 -1
- package/dist/browser/routes/dispatcher.js +86 -0
- package/dist/browser/server-context.js +3 -3
- package/dist/browser/server.js +7 -9
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +1620 -1618
- package/dist/canvas-host/a2ui/index.html +28 -28
- package/dist/canvas-host/a2ui.js +27 -21
- package/dist/canvas-host/server.js +66 -32
- package/dist/channels/plugins/actions/discord/handle-action.guild-admin.js +5 -1
- package/dist/channels/plugins/actions/telegram.js +60 -7
- package/dist/channels/plugins/catalog.js +6 -4
- package/dist/channels/plugins/group-mentions.js +48 -1
- package/dist/channels/plugins/helpers.js +2 -2
- package/dist/channels/plugins/message-action-names.js +1 -0
- package/dist/channels/plugins/onboarding/imessage.js +1 -1
- package/dist/channels/plugins/onboarding/signal.js +2 -2
- package/dist/channels/plugins/onboarding/slack.js +4 -4
- package/dist/channels/plugins/onboarding/telegram.js +17 -9
- package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
- package/dist/channels/plugins/outbound/telegram.js +38 -0
- package/dist/channels/plugins/pairing-message.js +1 -1
- package/dist/channels/plugins/status-issues/bluebubbles.js +1 -1
- package/dist/channels/plugins/status-issues/whatsapp.js +2 -2
- package/dist/channels/registry.js +1 -1
- package/dist/cli/acp-cli.js +2 -2
- package/dist/cli/argv.js +14 -7
- package/dist/cli/banner.js +3 -1
- package/dist/cli/browser-cli-actions-input/register.element.js +72 -44
- package/dist/cli/browser-cli-actions-input/register.files-downloads.js +55 -35
- package/dist/cli/browser-cli-actions-input/register.form-wait-eval.js +41 -28
- package/dist/cli/browser-cli-actions-input/register.navigation.js +23 -14
- package/dist/cli/browser-cli-actions-input/shared.js +10 -3
- package/dist/cli/browser-cli-actions-observe.js +29 -21
- package/dist/cli/browser-cli-debug.js +49 -35
- package/dist/cli/browser-cli-examples.js +29 -29
- package/dist/cli/browser-cli-extension.js +8 -8
- package/dist/cli/browser-cli-inspect.js +23 -17
- package/dist/cli/browser-cli-manage.js +106 -56
- package/dist/cli/browser-cli-shared.js +34 -1
- package/dist/cli/browser-cli-state.cookies-storage.js +53 -39
- package/dist/cli/browser-cli-state.js +90 -64
- package/dist/cli/browser-cli.js +4 -5
- package/dist/cli/channels-cli.js +1 -1
- package/dist/cli/cli-name.js +26 -0
- package/dist/cli/command-format.js +11 -7
- package/dist/cli/config-cli.js +2 -2
- package/dist/cli/cron-cli/register.js +1 -1
- package/dist/cli/daemon-cli/install.js +1 -1
- package/dist/cli/daemon-cli/register.js +1 -1
- package/dist/cli/daemon-cli/shared.js +5 -3
- package/dist/cli/daemon-cli/status.print.js +6 -6
- package/dist/cli/directory-cli.js +1 -1
- package/dist/cli/dns-cli.js +7 -7
- package/dist/cli/docs-cli.js +2 -2
- package/dist/cli/exec-approvals-cli.js +2 -2
- package/dist/cli/gateway-cli/dev.js +4 -4
- package/dist/cli/gateway-cli/register.js +1 -1
- package/dist/cli/gateway-cli/run.js +11 -8
- package/dist/cli/gateway-cli/shared.js +4 -4
- package/dist/cli/hooks-cli.js +3 -3
- package/dist/cli/logs-cli.js +3 -3
- package/dist/cli/memory-cli.js +1 -1
- package/dist/cli/models-cli.js +2 -2
- package/dist/cli/node-cli/daemon.js +2 -2
- package/dist/cli/node-cli/register.js +1 -1
- package/dist/cli/nodes-camera.js +3 -1
- package/dist/cli/nodes-canvas.js +3 -1
- package/dist/cli/nodes-cli/register.canvas.js +1 -1
- package/dist/cli/nodes-cli/register.js +1 -1
- package/dist/cli/nodes-screen.js +1 -1
- package/dist/cli/pairing-cli.js +3 -3
- package/dist/cli/plugin-registry.js +2 -2
- package/dist/cli/plugins-cli.js +3 -3
- package/dist/cli/profile.js +2 -2
- package/dist/cli/program/config-guard.js +1 -1
- package/dist/cli/program/help.js +15 -16
- package/dist/cli/program/message/register.send.js +2 -1
- package/dist/cli/program/preaction.js +4 -2
- package/dist/cli/program/register.agent.js +12 -12
- package/dist/cli/program/register.configure.js +1 -1
- package/dist/cli/program/register.maintenance.js +4 -4
- package/dist/cli/program/register.message.js +5 -5
- package/dist/cli/program/register.onboard.js +5 -3
- package/dist/cli/program/register.setup.js +2 -2
- package/dist/cli/program/register.status-health-sessions.js +13 -13
- package/dist/cli/run-main.js +11 -4
- package/dist/cli/sandbox-cli.js +19 -19
- package/dist/cli/security-cli.js +18 -8
- package/dist/cli/skills-cli.js +3 -3
- package/dist/cli/system-cli.js +1 -1
- package/dist/cli/tagline.js +1 -1
- package/dist/cli/tui-cli.js +1 -1
- package/dist/cli/update-cli.js +58 -42
- package/dist/cli/webhooks-cli.js +6 -6
- package/dist/commands/agent-via-gateway.js +1 -1
- package/dist/commands/agent.js +2 -1
- package/dist/commands/agents.command-shared.js +1 -1
- package/dist/commands/agents.commands.add.js +2 -3
- package/dist/commands/agents.commands.list.js +1 -1
- package/dist/commands/auth-choice-options.js +4 -54
- package/dist/commands/auth-choice.apply.anthropic.js +6 -109
- package/dist/commands/auth-choice.apply.openai.js +1 -33
- package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
- package/dist/commands/channels/list.js +2 -2
- package/dist/commands/channels/shared.js +1 -1
- package/dist/commands/channels/status.js +1 -1
- package/dist/commands/chutes-oauth.js +1 -1
- package/dist/commands/configure.channels.js +4 -4
- package/dist/commands/configure.gateway-auth.js +1 -8
- package/dist/commands/configure.gateway.js +1 -10
- package/dist/commands/configure.wizard.js +11 -11
- package/dist/commands/daemon-install-helpers.js +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/docs.js +5 -5
- package/dist/commands/doctor-auth.js +122 -3
- package/dist/commands/doctor-config-flow.js +7 -7
- package/dist/commands/doctor-format.js +2 -2
- package/dist/commands/doctor-gateway-daemon-flow.js +1 -1
- package/dist/commands/doctor-gateway-services.js +3 -3
- package/dist/commands/doctor-platform-notes.js +1 -1
- package/dist/commands/doctor-security.js +48 -1
- package/dist/commands/doctor-state-integrity.js +3 -3
- package/dist/commands/doctor-ui.js +2 -2
- package/dist/commands/doctor-update.js +4 -4
- package/dist/commands/doctor-workspace-status.js +2 -2
- package/dist/commands/doctor-workspace.js +4 -4
- package/dist/commands/doctor.js +13 -12
- package/dist/commands/gateway-status.js +2 -2
- package/dist/commands/models/auth.js +23 -22
- package/dist/commands/models/list.probe.js +2 -2
- package/dist/commands/models/list.registry.js +4 -4
- package/dist/commands/models/list.status-command.js +8 -9
- package/dist/commands/onboard-auth.credentials.js +2 -2
- package/dist/commands/onboard-channels.js +3 -3
- package/dist/commands/onboard-helpers.js +4 -4
- package/dist/commands/onboard-hooks.js +4 -4
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +38 -34
- package/dist/commands/onboard-non-interactive/local/gateway-config.js +7 -4
- package/dist/commands/onboard-non-interactive/local.js +1 -1
- package/dist/commands/onboard-non-interactive/remote.js +1 -1
- package/dist/commands/onboard-non-interactive.js +1 -1
- package/dist/commands/onboard-remote.js +2 -2
- package/dist/commands/onboard-skills.js +2 -2
- package/dist/commands/onboard.js +25 -4
- package/dist/commands/onboarding/plugin-install.js +2 -2
- package/dist/commands/reset.js +3 -3
- package/dist/commands/sandbox-display.js +1 -1
- package/dist/commands/sandbox-explain.js +2 -2
- package/dist/commands/setup.js +2 -2
- package/dist/commands/signal-install.js +2 -2
- package/dist/commands/status-all/diagnosis.js +1 -1
- package/dist/commands/status-all/report-lines.js +1 -1
- package/dist/commands/status-all.js +3 -3
- package/dist/commands/status.command.js +9 -9
- package/dist/commands/status.update.js +3 -3
- package/dist/commands/uninstall.js +4 -4
- package/dist/compat/legacy-names.js +5 -0
- package/dist/config/config.js +1 -1
- package/dist/config/group-policy.js +69 -0
- package/dist/config/io.js +17 -5
- package/dist/config/legacy.migrations.part-3.js +3 -0
- package/dist/config/logging.js +3 -3
- package/dist/config/paths.js +44 -14
- package/dist/config/schema.js +23 -11
- package/dist/config/sessions/transcript.js +1 -1
- package/dist/config/types.js +1 -1
- package/dist/config/types.poolbot.js +1 -0
- package/dist/config/validation.js +2 -2
- package/dist/config/version.js +4 -4
- package/dist/config/zod-schema.agent-defaults.js +1 -0
- package/dist/config/zod-schema.agent-runtime.js +39 -7
- package/dist/config/zod-schema.hooks.js +2 -0
- package/dist/config/zod-schema.js +9 -3
- package/dist/config/zod-schema.providers-core.js +23 -0
- package/dist/config/zod-schema.providers-whatsapp.js +3 -0
- package/dist/control-ui/assets/index-CIRDm-Lu.css +1 -0
- package/dist/control-ui/assets/{index-Cl-Y9zqE.js → index-CmNMuoem.js} +620 -578
- package/dist/control-ui/assets/index-CmNMuoem.js.map +1 -0
- package/dist/control-ui/index.html +4 -4
- package/dist/cron/isolated-agent/run.js +38 -3
- package/dist/daemon/constants.js +16 -16
- package/dist/daemon/inspect.js +12 -12
- package/dist/daemon/paths.js +1 -1
- package/dist/daemon/program-args.js +1 -1
- package/dist/daemon/systemd-hints.js +1 -1
- package/dist/daemon/systemd-unit.js +1 -1
- package/dist/discord/monitor/listeners.js +25 -1
- package/dist/discord/monitor/native-command.js +7 -5
- package/dist/discord/monitor/presence-cache.js +38 -0
- package/dist/discord/monitor/provider.js +21 -7
- package/dist/entry.js +4 -4
- package/dist/gateway/auth.js +52 -19
- package/dist/gateway/hooks-mapping.js +18 -4
- package/dist/gateway/hooks.js +5 -7
- package/dist/gateway/http-utils.js +3 -5
- package/dist/gateway/net.js +1 -1
- package/dist/gateway/openai-http.js +3 -3
- package/dist/gateway/openresponses-http.js +4 -4
- package/dist/gateway/protocol/client-info.js +5 -5
- package/dist/gateway/protocol/schema/logs-chat.js +1 -1
- package/dist/gateway/server/health-state.js +3 -3
- package/dist/gateway/server/hooks.js +1 -0
- package/dist/gateway/server/ws-connection/message-handler.js +44 -35
- package/dist/gateway/server-browser.js +14 -3
- package/dist/gateway/server-chat.js +28 -2
- package/dist/gateway/server-discovery-runtime.js +25 -17
- package/dist/gateway/server-discovery.js +5 -5
- package/dist/gateway/server-http.js +9 -3
- package/dist/gateway/server-methods/agent.js +2 -0
- package/dist/gateway/server-methods/browser.js +204 -0
- package/dist/gateway/server-methods/chat.js +5 -0
- package/dist/gateway/server-methods/config.js +8 -8
- package/dist/gateway/server-methods/logs.js +1 -1
- package/dist/gateway/server-methods/skills.js +3 -3
- package/dist/gateway/server-methods/update.js +2 -2
- package/dist/gateway/server-methods-list.js +1 -0
- package/dist/gateway/server-methods.js +3 -0
- package/dist/gateway/server-plugins.js +2 -2
- package/dist/gateway/server-restart-sentinel.js +10 -5
- package/dist/gateway/server-runtime-config.js +5 -2
- package/dist/gateway/server.impl.js +7 -6
- package/dist/gateway/session-utils.fs.js +1 -1
- package/dist/gateway/session-utils.js +31 -11
- package/dist/gateway/test-helpers.mocks.js +5 -5
- package/dist/gateway/test-helpers.server.js +30 -11
- package/dist/gateway/tools-invoke-http.js +15 -8
- package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
- package/dist/hooks/bundled/command-logger/HOOK.md +12 -12
- package/dist/hooks/bundled/command-logger/handler.js +1 -1
- package/dist/hooks/bundled/session-memory/HOOK.md +4 -4
- package/dist/hooks/bundled/session-memory/handler.js +2 -2
- package/dist/hooks/bundled/soul-evil/HOOK.md +5 -5
- package/dist/hooks/bundled-dir.js +1 -1
- package/dist/hooks/config.js +8 -7
- package/dist/hooks/frontmatter.js +16 -15
- package/dist/hooks/gmail-ops.js +4 -4
- package/dist/hooks/hooks-status.js +13 -13
- package/dist/hooks/install.js +8 -7
- package/dist/hooks/internal-hooks.js +1 -1
- package/dist/hooks/llm-slug-generator.js +1 -1
- package/dist/hooks/loader.js +3 -3
- package/dist/hooks/plugin-hooks.js +8 -8
- package/dist/hooks/workspace.js +10 -9
- package/dist/imessage/monitor/monitor-provider.js +2 -2
- package/dist/index.js +4 -4
- package/dist/infra/agent-events.js +3 -0
- package/dist/infra/bonjour-discovery.js +9 -9
- package/dist/infra/bonjour.js +19 -12
- package/dist/infra/device-identity.js +1 -1
- package/dist/infra/dotenv.js +1 -1
- package/dist/infra/exec-approvals.js +2 -2
- package/dist/infra/fs-safe.js +76 -0
- package/dist/infra/gateway-lock.js +1 -1
- package/dist/infra/heartbeat-visibility.js +14 -0
- package/dist/infra/heartbeat-wake.js +2 -2
- package/dist/infra/machine-name.js +1 -1
- package/dist/infra/net/ssrf.js +77 -1
- package/dist/infra/outbound/message-action-spec.js +1 -0
- package/dist/infra/outbound/targets.js +1 -1
- package/dist/infra/path-env.js +7 -7
- package/dist/infra/{clawdbot-root.js → poolbot-root.js} +3 -2
- package/dist/infra/ports-format.js +2 -2
- package/dist/infra/ports.js +2 -2
- package/dist/infra/provider-usage.auth.js +2 -4
- package/dist/infra/provider-usage.fetch.claude.js +1 -1
- package/dist/infra/provider-usage.fetch.minimax.js +1 -1
- package/dist/infra/restart-sentinel.js +1 -1
- package/dist/infra/restart.js +1 -1
- package/dist/infra/retry-policy.js +4 -1
- package/dist/infra/runtime-guard.js +2 -2
- package/dist/infra/shell-env.js +1 -1
- package/dist/infra/skills-remote.js +3 -3
- package/dist/infra/tailscale.js +63 -1
- package/dist/infra/tls/gateway.js +1 -1
- package/dist/infra/unhandled-rejections.js +89 -2
- package/dist/infra/update-check.js +2 -4
- package/dist/infra/update-global.js +5 -5
- package/dist/infra/update-runner.js +32 -8
- package/dist/infra/update-startup.js +3 -3
- package/dist/infra/warnings.js +1 -1
- package/dist/infra/widearea-dns.js +10 -10
- package/dist/line/monitor.js +1 -5
- package/dist/line/signature.js +11 -0
- package/dist/line/webhook.js +2 -6
- package/dist/logging/logger.js +4 -4
- package/dist/macos/gateway-daemon.js +2 -2
- package/dist/macos/relay.js +4 -4
- package/dist/media/host.js +1 -1
- package/dist/media/image-ops.js +1 -1
- package/dist/media/input-files.js +40 -32
- package/dist/media/server.js +39 -15
- package/dist/media/store.js +72 -52
- package/dist/media-understanding/attachments.js +1 -1
- package/dist/media-understanding/providers/image.js +2 -2
- package/dist/media-understanding/runner.js +33 -1
- package/dist/memory/batch-gemini.js +1 -1
- package/dist/memory/batch-openai.js +1 -1
- package/dist/memory/embeddings.js +1 -1
- package/dist/node-host/runner.js +60 -56
- package/dist/pairing/pairing-messages.js +2 -2
- package/dist/plugin-sdk/index.js +1 -0
- package/dist/plugins/cli.js +2 -2
- package/dist/plugins/discovery.js +6 -5
- package/dist/plugins/install.js +8 -7
- package/dist/plugins/loader.js +10 -4
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/plugins/manifest.js +16 -1
- package/dist/plugins/providers.js +2 -2
- package/dist/plugins/registry.js +5 -5
- package/dist/plugins/runtime.js +1 -1
- package/dist/plugins/services.js +3 -3
- package/dist/plugins/status.js +2 -2
- package/dist/plugins/tools.js +2 -2
- package/dist/plugins/update.js +3 -3
- package/dist/providers/qwen-portal-oauth.js +1 -1
- package/dist/routing/session-key.js +17 -12
- package/dist/security/audit-extra.js +116 -69
- package/dist/security/audit-fs.js +78 -0
- package/dist/security/audit.js +121 -88
- package/dist/security/external-content.js +143 -0
- package/dist/security/fix.js +93 -8
- package/dist/security/windows-acl.js +162 -0
- package/dist/slack/monitor/media.js +32 -4
- package/dist/slack/monitor/message-handler/dispatch.js +2 -1
- package/dist/slack/monitor/slash.js +3 -3
- package/dist/slack/monitor.test-helpers.js +1 -1
- package/dist/telegram/api-logging.js +24 -0
- package/dist/telegram/bot/delivery.js +139 -22
- package/dist/telegram/bot-handlers.js +70 -8
- package/dist/telegram/bot-message-context.js +79 -21
- package/dist/telegram/bot-message-dispatch.js +64 -0
- package/dist/telegram/bot-native-commands.js +244 -94
- package/dist/telegram/bot.js +18 -2
- package/dist/telegram/fetch.js +25 -1
- package/dist/telegram/monitor.js +11 -3
- package/dist/telegram/network-config.js +23 -0
- package/dist/telegram/network-errors.js +103 -0
- package/dist/telegram/send.js +148 -4
- package/dist/telegram/sticker-cache.js +202 -0
- package/dist/telegram/webhook-set.js +13 -6
- package/dist/telegram/webhook.js +8 -3
- package/dist/terminal/links.js +1 -1
- package/dist/tts/tts.js +27 -22
- package/dist/tui/components/filterable-select-list.js +1 -1
- package/dist/tui/components/searchable-select-list.js +2 -1
- package/dist/tui/gateway-chat.js +1 -1
- package/dist/tui/tui.js +1 -1
- package/dist/utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist/web/active-listener.js +1 -1
- package/dist/web/auth-store.js +1 -1
- package/dist/web/auto-reply/monitor/process-message.js +1 -1
- package/dist/web/auto-reply/monitor.js +1 -1
- package/dist/web/login.js +1 -1
- package/dist/web/session.js +2 -2
- package/dist/wizard/onboarding.finalize.js +24 -21
- package/dist/wizard/onboarding.gateway-config.js +1 -11
- package/dist/wizard/onboarding.js +22 -11
- package/docs/CNAME +1 -1
- package/docs/RELEASE_WORKFLOW.md +133 -0
- package/docs/RELEASE_WORKFOTS_COMPARISON.md +151 -0
- package/docs/WORKFOTS_OPTIMIZATION.md +138 -0
- package/docs/_config.yml +2 -2
- package/docs/_layouts/default.html +9 -9
- package/docs/adr/002-model-fallback-router.md +104 -0
- package/docs/assets/terminal.css +3 -0
- package/docs/assets/theme.js +1 -1
- package/docs/automation/auth-monitoring.md +7 -7
- package/docs/automation/cron-jobs.md +17 -17
- package/docs/automation/cron-vs-heartbeat.md +8 -8
- package/docs/automation/gmail-pubsub.md +23 -21
- package/docs/automation/poll.md +7 -7
- package/docs/automation/webhook.md +13 -8
- package/docs/bedrock.md +10 -10
- package/docs/brave-search.md +1 -1
- package/docs/broadcast-groups.md +4 -4
- package/docs/channels/bluebubbles.md +13 -12
- package/docs/channels/discord.md +21 -16
- package/docs/channels/googlechat.md +16 -16
- package/docs/channels/imessage.md +12 -12
- package/docs/channels/index.md +6 -4
- package/docs/channels/line.md +183 -0
- package/docs/channels/location.md +1 -1
- package/docs/channels/matrix.md +15 -15
- package/docs/channels/mattermost.md +8 -8
- package/docs/channels/msteams.md +30 -26
- package/docs/channels/nextcloud-talk.md +7 -7
- package/docs/channels/nostr.md +9 -9
- package/docs/channels/signal.md +9 -9
- package/docs/channels/slack.md +15 -13
- package/docs/channels/telegram.md +149 -20
- package/docs/channels/tlon.md +5 -5
- package/docs/channels/troubleshooting.md +2 -2
- package/docs/channels/twitch.md +366 -0
- package/docs/channels/whatsapp.md +25 -25
- package/docs/channels/zalo.md +8 -8
- package/docs/channels/zalouser.md +12 -12
- package/docs/cli/acp.md +24 -24
- package/docs/cli/agent.md +6 -6
- package/docs/cli/agents.md +9 -9
- package/docs/cli/approvals.md +14 -14
- package/docs/cli/browser.md +33 -35
- package/docs/cli/channels.md +21 -21
- package/docs/cli/config.md +15 -15
- package/docs/cli/configure.md +6 -6
- package/docs/cli/cron.md +5 -5
- package/docs/cli/dashboard.md +4 -4
- package/docs/cli/devices.md +13 -13
- package/docs/cli/directory.md +12 -12
- package/docs/cli/dns.md +5 -5
- package/docs/cli/docs.md +5 -5
- package/docs/cli/doctor.md +6 -6
- package/docs/cli/gateway.md +24 -24
- package/docs/cli/health.md +5 -5
- package/docs/cli/hooks.md +34 -34
- package/docs/cli/index.md +46 -52
- package/docs/cli/logs.md +6 -6
- package/docs/cli/memory.md +11 -11
- package/docs/cli/message.md +11 -11
- package/docs/cli/models.md +17 -17
- package/docs/cli/node.md +14 -14
- package/docs/cli/nodes.md +14 -14
- package/docs/cli/onboard.md +7 -6
- package/docs/cli/pairing.md +4 -4
- package/docs/cli/plugins.md +16 -16
- package/docs/cli/reset.md +5 -5
- package/docs/cli/sandbox.md +28 -28
- package/docs/cli/security.md +5 -5
- package/docs/cli/sessions.md +5 -5
- package/docs/cli/setup.md +6 -6
- package/docs/cli/skills.md +6 -6
- package/docs/cli/status.md +7 -7
- package/docs/cli/system.md +6 -6
- package/docs/cli/tui.md +5 -5
- package/docs/cli/uninstall.md +5 -5
- package/docs/cli/update.md +20 -20
- package/docs/cli/voicecall.md +9 -9
- package/docs/cli/webhooks.md +5 -5
- package/docs/concepts/agent-loop.md +5 -5
- package/docs/concepts/agent-workspace.md +20 -20
- package/docs/concepts/agent.md +12 -12
- package/docs/concepts/architecture.md +1 -1
- package/docs/concepts/channel-routing.md +4 -4
- package/docs/concepts/compaction.md +5 -5
- package/docs/concepts/context.md +6 -6
- package/docs/concepts/group-messages.md +6 -6
- package/docs/concepts/groups.md +41 -5
- package/docs/concepts/markdown-formatting.md +3 -3
- package/docs/concepts/memory.md +14 -14
- package/docs/concepts/messages.md +4 -4
- package/docs/concepts/model-failover.md +14 -14
- package/docs/concepts/model-providers.md +22 -22
- package/docs/concepts/models.md +27 -27
- package/docs/concepts/multi-agent.md +18 -18
- package/docs/concepts/oauth.md +31 -58
- package/docs/concepts/presence.md +2 -2
- package/docs/concepts/retry.md +1 -1
- package/docs/concepts/session-pruning.md +1 -1
- package/docs/concepts/session-tool.md +4 -4
- package/docs/concepts/session.md +14 -14
- package/docs/concepts/streaming.md +3 -3
- package/docs/concepts/system-prompt.md +11 -11
- package/docs/concepts/timezone.md +2 -2
- package/docs/concepts/typebox.md +2 -2
- package/docs/concepts/typing-indicators.md +2 -2
- package/docs/concepts/usage-tracking.md +3 -3
- package/docs/date-time.md +2 -2
- package/docs/debug/node-issue.md +4 -4
- package/docs/debugging.md +14 -14
- package/docs/diagnostics/flags.md +5 -5
- package/docs/docs.json +37 -7
- package/docs/environment.md +4 -4
- package/docs/experiments/plans/cron-add-hardening.md +1 -1
- package/docs/experiments/plans/openresponses-gateway.md +2 -2
- package/docs/experiments/research/memory.md +6 -6
- package/docs/gateway/authentication.md +33 -57
- package/docs/gateway/background-process.md +1 -1
- package/docs/gateway/bonjour.md +21 -21
- package/docs/gateway/bridge-protocol.md +2 -2
- package/docs/gateway/cli-backends.md +13 -12
- package/docs/gateway/configuration-examples.md +14 -14
- package/docs/gateway/configuration.md +145 -132
- package/docs/gateway/discovery.md +6 -6
- package/docs/gateway/doctor.md +26 -26
- package/docs/gateway/gateway-lock.md +1 -1
- package/docs/gateway/health.md +11 -11
- package/docs/gateway/heartbeat.md +5 -5
- package/docs/gateway/index.md +56 -56
- package/docs/gateway/local-models.md +2 -2
- package/docs/gateway/logging.md +8 -8
- package/docs/gateway/multiple-gateways.md +23 -23
- package/docs/gateway/openai-http-api.md +10 -10
- package/docs/gateway/openresponses-http-api.md +10 -10
- package/docs/gateway/pairing.md +8 -8
- package/docs/gateway/protocol.md +5 -4
- package/docs/gateway/remote-gateway-readme.md +13 -13
- package/docs/gateway/remote.md +4 -4
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +10 -7
- package/docs/gateway/sandboxing.md +8 -6
- package/docs/gateway/security/formal-verification.md +107 -0
- package/docs/gateway/{security.md → security/index.md} +151 -71
- package/docs/gateway/tailscale.md +16 -35
- package/docs/gateway/tools-invoke-http-api.md +3 -3
- package/docs/gateway/troubleshooting.md +108 -113
- package/docs/help/faq.md +326 -335
- package/docs/help/troubleshooting.md +15 -15
- package/docs/hooks/soul-evil.md +2 -2
- package/docs/hooks.md +60 -60
- package/docs/index.md +35 -35
- package/docs/install/ansible.md +35 -35
- package/docs/install/development-channels.md +10 -10
- package/docs/install/docker.md +31 -31
- package/docs/install/index.md +28 -27
- package/docs/install/installer.md +21 -21
- package/docs/install/migrating.md +190 -0
- package/docs/install/nix.md +17 -17
- package/docs/install/node.md +7 -6
- package/docs/install/uninstall.md +29 -29
- package/docs/install/updating.md +50 -49
- package/docs/logging.md +58 -58
- package/docs/multi-agent-sandbox-tools.md +7 -7
- package/docs/network.md +1 -1
- package/docs/nodes/audio.md +2 -2
- package/docs/nodes/camera.md +18 -18
- package/docs/nodes/images.md +4 -4
- package/docs/nodes/index.md +55 -55
- package/docs/nodes/location-command.md +2 -2
- package/docs/nodes/media-understanding.md +5 -5
- package/docs/nodes/talk.md +1 -1
- package/docs/nodes/voicewake.md +2 -2
- package/docs/northflank.mdx +53 -0
- package/docs/perplexity.md +2 -2
- package/docs/platforms/android.md +13 -13
- package/docs/platforms/digitalocean.md +243 -0
- package/docs/platforms/exe-dev.md +23 -23
- package/docs/platforms/fly.md +129 -18
- package/docs/platforms/gcp.md +498 -0
- package/docs/platforms/hetzner.md +30 -30
- package/docs/platforms/index.md +9 -9
- package/docs/platforms/ios.md +13 -13
- package/docs/platforms/linux.md +11 -11
- package/docs/platforms/mac/bundled-gateway.md +14 -14
- package/docs/platforms/mac/canvas.md +14 -14
- package/docs/platforms/mac/child-process.md +9 -9
- package/docs/platforms/mac/dev-setup.md +11 -11
- package/docs/platforms/mac/health.md +2 -2
- package/docs/platforms/mac/icon.md +1 -1
- package/docs/platforms/mac/logging.md +7 -7
- package/docs/platforms/mac/menu-bar.md +1 -1
- package/docs/platforms/mac/peekaboo.md +9 -9
- package/docs/platforms/mac/permissions.md +3 -3
- package/docs/platforms/mac/release.md +20 -20
- package/docs/platforms/mac/remote.md +14 -14
- package/docs/platforms/mac/signing.md +7 -7
- package/docs/platforms/mac/skills.md +4 -4
- package/docs/platforms/mac/voice-overlay.md +2 -2
- package/docs/platforms/mac/webchat.md +2 -2
- package/docs/platforms/mac/xpc.md +4 -4
- package/docs/platforms/macos-vm.md +27 -27
- package/docs/platforms/macos.md +20 -20
- package/docs/platforms/oracle.md +291 -0
- package/docs/platforms/raspberry-pi.md +354 -0
- package/docs/platforms/windows.md +11 -11
- package/docs/plugin.md +64 -64
- package/docs/plugins/agent-tools.md +1 -1
- package/docs/plugins/manifest.md +4 -4
- package/docs/plugins/voice-call.md +15 -12
- package/docs/plugins/zalouser.md +9 -9
- package/docs/prose.md +9 -9
- package/docs/providers/anthropic.md +23 -27
- package/docs/providers/claude-max-api-proxy.md +145 -0
- package/docs/providers/deepgram.md +2 -2
- package/docs/providers/github-copilot.md +11 -11
- package/docs/providers/glm.md +4 -4
- package/docs/providers/index.md +7 -3
- package/docs/providers/minimax.md +9 -9
- package/docs/providers/models.md +3 -3
- package/docs/providers/moonshot.md +2 -2
- package/docs/providers/ollama.md +11 -11
- package/docs/providers/openai.md +9 -13
- package/docs/providers/opencode.md +3 -3
- package/docs/providers/openrouter.md +3 -3
- package/docs/providers/qwen.md +6 -6
- package/docs/providers/synthetic.md +4 -4
- package/docs/providers/venice.md +21 -21
- package/docs/providers/vercel-ai-gateway.md +5 -4
- package/docs/providers/zai.md +5 -5
- package/docs/railway.mdx +5 -5
- package/docs/refactor/exec-host.md +5 -5
- package/docs/refactor/plugin-sdk.md +12 -12
- package/docs/refactor/strict-config.md +11 -11
- package/docs/reference/AGENTS.default.md +10 -10
- package/docs/reference/RELEASING.md +27 -27
- package/docs/reference/api-usage-costs.md +6 -6
- package/docs/reference/device-models.md +7 -7
- package/docs/reference/rpc.md +3 -3
- package/docs/reference/session-management-compaction.md +19 -19
- package/docs/reference/templates/AGENTS.dev.md +1 -1
- package/docs/reference/templates/BOOT.md +1 -1
- package/docs/reference/templates/TOOLS.dev.md +1 -1
- package/docs/reference/templates/USER.dev.md +2 -2
- package/docs/reference/test.md +2 -2
- package/docs/reference/transcript-hygiene.md +1 -1
- package/docs/render.mdx +158 -0
- package/docs/scripts.md +1 -1
- package/docs/security/formal-verification.md +107 -0
- package/docs/start/getting-started.md +31 -25
- package/docs/start/hubs.md +2 -2
- package/docs/start/lore.md +74 -38
- package/docs/start/onboarding.md +7 -7
- package/docs/start/pairing.md +10 -10
- package/docs/start/{clawd.md → poolbot.md} +29 -29
- package/docs/start/setup.md +30 -17
- package/docs/start/showcase.md +32 -32
- package/docs/start/wizard.md +29 -26
- package/docs/testing.md +12 -12
- package/docs/token-use.md +7 -7
- package/docs/tools/agent-send.md +10 -10
- package/docs/tools/browser-linux-troubleshooting.md +10 -10
- package/docs/tools/browser-login.md +4 -4
- package/docs/tools/browser.md +135 -241
- package/docs/tools/chrome-extension.md +31 -48
- package/docs/tools/creating-skills.md +4 -4
- package/docs/tools/elevated.md +1 -0
- package/docs/tools/exec-approvals.md +8 -5
- package/docs/tools/exec.md +15 -4
- package/docs/tools/firecrawl.md +2 -2
- package/docs/tools/index.md +18 -15
- package/docs/tools/llm-task.md +1 -1
- package/docs/tools/lobster.md +23 -11
- package/docs/tools/{clawdhub.md → poolhub.md} +7 -7
- package/docs/tools/skills-config.md +2 -2
- package/docs/tools/skills.md +39 -31
- package/docs/tools/slash-commands.md +10 -8
- package/docs/tools/web.md +8 -8
- package/docs/tts.md +11 -11
- package/docs/tui.md +7 -7
- package/docs/vps.md +6 -1
- package/docs/web/control-ui.md +13 -12
- package/docs/web/dashboard.md +8 -4
- package/docs/web/index.md +6 -5
- package/docs/web/webchat.md +1 -1
- package/extensions/bluebubbles/index.ts +3 -3
- package/extensions/bluebubbles/package.json +5 -5
- package/extensions/bluebubbles/src/accounts.ts +9 -9
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +6 -6
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +17 -17
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/config-schema.ts +1 -1
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +56 -50
- package/extensions/bluebubbles/src/monitor.ts +181 -6
- package/extensions/bluebubbles/src/onboarding.ts +9 -9
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/runtime.ts +1 -1
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/README.md +2 -2
- package/extensions/copilot-proxy/index.ts +1 -1
- package/extensions/copilot-proxy/package.json +4 -4
- package/extensions/diagnostics-otel/index.ts +3 -3
- package/extensions/diagnostics-otel/package.json +4 -4
- package/extensions/diagnostics-otel/src/service.test.ts +15 -15
- package/extensions/diagnostics-otel/src/service.ts +85 -85
- package/extensions/discord/index.ts +3 -3
- package/extensions/discord/package.json +4 -4
- package/extensions/discord/src/channel.ts +1 -1
- package/extensions/discord/src/runtime.ts +1 -1
- package/extensions/google-antigravity-auth/README.md +2 -2
- package/extensions/google-antigravity-auth/index.ts +9 -2
- package/extensions/google-antigravity-auth/package.json +4 -4
- package/extensions/google-gemini-cli-auth/README.md +2 -2
- package/extensions/google-gemini-cli-auth/index.ts +1 -1
- package/extensions/google-gemini-cli-auth/oauth.ts +2 -2
- package/extensions/google-gemini-cli-auth/package.json +4 -4
- package/extensions/googlechat/index.ts +4 -4
- package/extensions/googlechat/node_modules/.bin/poolbot +21 -0
- package/extensions/googlechat/package.json +7 -7
- package/extensions/googlechat/src/accounts.ts +9 -9
- package/extensions/googlechat/src/actions.ts +8 -8
- package/extensions/googlechat/src/api.ts +1 -1
- package/extensions/googlechat/src/channel.ts +23 -23
- package/extensions/googlechat/src/monitor.ts +9 -9
- package/extensions/googlechat/src/onboarding.ts +11 -11
- package/extensions/googlechat/src/runtime.ts +1 -1
- package/extensions/googlechat/src/types.config.ts +1 -1
- package/extensions/imessage/index.ts +3 -3
- package/extensions/imessage/package.json +4 -4
- package/extensions/imessage/src/channel.ts +1 -1
- package/extensions/imessage/src/runtime.ts +1 -1
- package/extensions/line/index.ts +3 -3
- package/extensions/line/node_modules/.bin/poolbot +21 -0
- package/extensions/line/package.json +6 -6
- package/extensions/line/src/card-command.ts +3 -3
- package/extensions/line/src/channel.logout.test.ts +4 -4
- package/extensions/line/src/channel.sendPayload.test.ts +8 -8
- package/extensions/line/src/channel.ts +5 -5
- package/extensions/line/src/runtime.ts +1 -1
- package/extensions/llm-task/README.md +1 -1
- package/extensions/llm-task/index.ts +2 -2
- package/extensions/llm-task/package.json +4 -4
- package/extensions/llm-task/src/llm-task-tool.ts +5 -5
- package/extensions/lobster/index.ts +2 -2
- package/extensions/lobster/package.json +3 -3
- package/extensions/lobster/src/lobster-tool.test.ts +26 -6
- package/extensions/lobster/src/lobster-tool.ts +24 -6
- package/extensions/matrix/CHANGELOG.md +9 -9
- package/extensions/matrix/index.ts +3 -3
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
- package/extensions/matrix/node_modules/.bin/poolbot +21 -0
- package/extensions/matrix/package.json +7 -7
- package/extensions/matrix/src/actions.ts +1 -1
- package/extensions/matrix/src/channel.directory.test.ts +1 -1
- package/extensions/matrix/src/channel.ts +1 -1
- package/extensions/matrix/src/config-schema.ts +1 -1
- package/extensions/matrix/src/directory-live.ts +1 -1
- package/extensions/matrix/src/group-mentions.ts +1 -1
- package/extensions/matrix/src/matrix/accounts.ts +1 -1
- package/extensions/matrix/src/matrix/actions/messages.ts +1 -1
- package/extensions/matrix/src/matrix/actions/reactions.ts +1 -1
- package/extensions/matrix/src/matrix/actions/room.ts +3 -3
- package/extensions/matrix/src/matrix/actions/summary.ts +1 -1
- package/extensions/matrix/src/matrix/actions/types.ts +1 -1
- package/extensions/matrix/src/matrix/active-client.ts +1 -1
- package/extensions/matrix/src/matrix/client/config.ts +2 -2
- package/extensions/matrix/src/matrix/client/create-client.ts +2 -2
- package/extensions/matrix/src/matrix/client/logging.ts +1 -1
- package/extensions/matrix/src/matrix/client/shared.ts +3 -3
- package/extensions/matrix/src/matrix/deps.ts +5 -5
- package/extensions/matrix/src/matrix/monitor/allowlist.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/auto-join.ts +3 -3
- package/extensions/matrix/src/matrix/monitor/direct.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/events.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/handler.ts +8 -8
- package/extensions/matrix/src/matrix/monitor/index.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/location.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/media.test.ts +3 -3
- package/extensions/matrix/src/matrix/monitor/media.ts +3 -3
- package/extensions/matrix/src/matrix/monitor/replies.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/room-info.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/rooms.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/threads.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/types.ts +1 -1
- package/extensions/matrix/src/matrix/poll-types.ts +1 -1
- package/extensions/matrix/src/matrix/probe.ts +1 -1
- package/extensions/matrix/src/matrix/send/client.ts +2 -2
- package/extensions/matrix/src/matrix/send/media.ts +1 -1
- package/extensions/matrix/src/matrix/send/targets.test.ts +1 -1
- package/extensions/matrix/src/matrix/send/targets.ts +1 -1
- package/extensions/matrix/src/matrix/send/types.ts +2 -2
- package/extensions/matrix/src/matrix/send.test.ts +3 -3
- package/extensions/matrix/src/matrix/send.ts +4 -4
- package/extensions/matrix/src/onboarding.ts +3 -3
- package/extensions/matrix/src/outbound.ts +1 -1
- package/extensions/matrix/src/resolve-targets.ts +1 -1
- package/extensions/matrix/src/runtime.ts +1 -1
- package/extensions/matrix/src/tool-actions.ts +1 -1
- package/extensions/matrix/src/types.ts +1 -1
- package/extensions/mattermost/index.ts +3 -3
- package/extensions/mattermost/package.json +5 -5
- package/extensions/mattermost/src/channel.ts +1 -1
- package/extensions/mattermost/src/config-schema.ts +1 -1
- package/extensions/mattermost/src/group-mentions.ts +1 -1
- package/extensions/mattermost/src/mattermost/accounts.ts +9 -9
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +4 -4
- package/extensions/mattermost/src/onboarding-helpers.ts +4 -4
- package/extensions/mattermost/src/onboarding.ts +4 -4
- package/extensions/mattermost/src/runtime.ts +1 -1
- package/extensions/mattermost/src/types.ts +1 -1
- package/extensions/memory-core/index.ts +3 -3
- package/extensions/memory-core/node_modules/.bin/poolbot +21 -0
- package/extensions/memory-core/package.json +5 -5
- package/extensions/memory-lancedb/config.ts +2 -2
- package/extensions/memory-lancedb/index.test.ts +2 -2
- package/extensions/memory-lancedb/index.ts +4 -4
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
- package/extensions/memory-lancedb/package.json +4 -4
- package/extensions/memory-lancedb/{clawdbot.plugin.json → poolbot.plugin.json} +1 -1
- package/extensions/msteams/CHANGELOG.md +7 -7
- package/extensions/msteams/index.ts +3 -3
- package/extensions/msteams/node_modules/.bin/poolbot +21 -0
- package/extensions/msteams/package.json +6 -6
- package/extensions/msteams/src/attachments.test.ts +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +3 -3
- package/extensions/msteams/src/conversation-store-fs.test.ts +3 -3
- package/extensions/msteams/src/directory-live.ts +1 -1
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/media-helpers.ts +1 -1
- package/extensions/msteams/src/messenger.test.ts +1 -1
- package/extensions/msteams/src/messenger.ts +1 -1
- package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -1
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +3 -3
- package/extensions/msteams/src/onboarding.ts +11 -11
- package/extensions/msteams/src/outbound.ts +1 -1
- package/extensions/msteams/src/policy.test.ts +1 -1
- package/extensions/msteams/src/policy.ts +50 -5
- package/extensions/msteams/src/polls-store.test.ts +1 -1
- package/extensions/msteams/src/polls.test.ts +4 -4
- package/extensions/msteams/src/polls.ts +8 -8
- package/extensions/msteams/src/probe.test.ts +1 -1
- package/extensions/msteams/src/probe.ts +1 -1
- package/extensions/msteams/src/reply-dispatcher.ts +36 -36
- package/extensions/msteams/src/runtime.ts +1 -1
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +5 -5
- package/extensions/msteams/src/token.ts +1 -1
- package/extensions/nextcloud-talk/index.ts +3 -3
- package/extensions/nextcloud-talk/package.json +5 -5
- package/extensions/nextcloud-talk/src/accounts.ts +1 -1
- package/extensions/nextcloud-talk/src/channel.ts +8 -8
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
- package/extensions/nextcloud-talk/src/inbound.ts +8 -8
- package/extensions/nextcloud-talk/src/monitor.ts +1 -1
- package/extensions/nextcloud-talk/src/onboarding.ts +2 -2
- package/extensions/nextcloud-talk/src/policy.ts +2 -2
- package/extensions/nextcloud-talk/src/room-info.ts +1 -1
- package/extensions/nextcloud-talk/src/runtime.ts +1 -1
- package/extensions/nextcloud-talk/src/types.ts +1 -1
- package/extensions/nostr/CHANGELOG.md +4 -4
- package/extensions/nostr/README.md +3 -3
- package/extensions/nostr/index.ts +6 -6
- package/extensions/nostr/node_modules/.bin/poolbot +21 -0
- package/extensions/nostr/package.json +6 -6
- package/extensions/nostr/src/channel.ts +2 -2
- package/extensions/nostr/src/config-schema.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.ts +3 -3
- package/extensions/nostr/src/runtime.ts +1 -1
- package/extensions/nostr/src/types.ts +4 -4
- package/extensions/open-prose/index.ts +2 -2
- package/extensions/open-prose/package.json +3 -3
- package/extensions/open-prose/skills/prose/SKILL.md +5 -5
- package/extensions/open-prose/skills/prose/prose.md +4 -4
- package/extensions/qwen-portal-auth/README.md +2 -2
- package/extensions/qwen-portal-auth/index.ts +1 -1
- package/extensions/signal/index.ts +3 -3
- package/extensions/signal/package.json +4 -4
- package/extensions/signal/src/channel.ts +1 -1
- package/extensions/signal/src/runtime.ts +1 -1
- package/extensions/slack/index.ts +3 -3
- package/extensions/slack/package.json +4 -4
- package/extensions/slack/src/channel.ts +1 -1
- package/extensions/slack/src/runtime.ts +1 -1
- package/extensions/telegram/index.ts +3 -3
- package/extensions/telegram/package.json +4 -4
- package/extensions/telegram/src/channel.ts +3 -3
- package/extensions/telegram/src/runtime.ts +1 -1
- package/extensions/tlon/README.md +1 -1
- package/extensions/tlon/index.ts +3 -3
- package/extensions/tlon/package.json +5 -5
- package/extensions/tlon/src/channel.ts +15 -15
- package/extensions/tlon/src/config-schema.ts +1 -1
- package/extensions/tlon/src/monitor/discovery.ts +1 -1
- package/extensions/tlon/src/monitor/history.ts +1 -1
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +4 -4
- package/extensions/tlon/src/runtime.ts +1 -1
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/tlon/src/urbit/send.ts +19 -6
- package/extensions/twitch/CHANGELOG.md +21 -0
- package/extensions/twitch/README.md +89 -0
- package/extensions/twitch/index.ts +20 -0
- package/extensions/twitch/node_modules/.bin/poolbot +21 -0
- package/extensions/twitch/package.json +20 -0
- package/extensions/twitch/poolbot.plugin.json +9 -0
- package/extensions/twitch/src/access-control.test.ts +489 -0
- package/extensions/twitch/src/access-control.ts +154 -0
- package/extensions/twitch/src/actions.ts +173 -0
- package/extensions/twitch/src/client-manager-registry.ts +115 -0
- package/extensions/twitch/src/config-schema.ts +82 -0
- package/extensions/twitch/src/config.test.ts +88 -0
- package/extensions/twitch/src/config.ts +116 -0
- package/extensions/twitch/src/monitor.ts +257 -0
- package/extensions/twitch/src/onboarding.test.ts +311 -0
- package/extensions/twitch/src/onboarding.ts +411 -0
- package/extensions/twitch/src/outbound.test.ts +373 -0
- package/extensions/twitch/src/outbound.ts +186 -0
- package/extensions/twitch/src/plugin.test.ts +39 -0
- package/extensions/twitch/src/plugin.ts +274 -0
- package/extensions/twitch/src/probe.test.ts +198 -0
- package/extensions/twitch/src/probe.ts +118 -0
- package/extensions/twitch/src/resolver.ts +137 -0
- package/extensions/twitch/src/runtime.ts +14 -0
- package/extensions/twitch/src/send.test.ts +289 -0
- package/extensions/twitch/src/send.ts +136 -0
- package/extensions/twitch/src/status.test.ts +270 -0
- package/extensions/twitch/src/status.ts +176 -0
- package/extensions/twitch/src/token.test.ts +171 -0
- package/extensions/twitch/src/token.ts +87 -0
- package/extensions/twitch/src/twitch-client.test.ts +574 -0
- package/extensions/twitch/src/twitch-client.ts +277 -0
- package/extensions/twitch/src/types.ts +141 -0
- package/extensions/twitch/src/utils/markdown.ts +92 -0
- package/extensions/twitch/src/utils/twitch.ts +78 -0
- package/extensions/twitch/test/setup.ts +7 -0
- package/extensions/voice-call/CHANGELOG.md +13 -12
- package/extensions/voice-call/README.md +15 -14
- package/extensions/voice-call/index.ts +11 -9
- package/extensions/voice-call/package.json +4 -4
- package/extensions/voice-call/{clawdbot.plugin.json → poolbot.plugin.json} +3 -3
- package/extensions/voice-call/src/cli.ts +1 -1
- package/extensions/voice-call/src/config.test.ts +204 -0
- package/extensions/voice-call/src/config.ts +61 -4
- package/extensions/voice-call/src/core-bridge.ts +10 -8
- package/extensions/voice-call/src/manager.test.ts +2 -2
- package/extensions/voice-call/src/providers/twilio/webhook.ts +2 -1
- package/extensions/voice-call/src/providers/twilio.ts +2 -2
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/voice-call/src/runtime.ts +26 -15
- package/extensions/voice-call/src/types.ts +1 -0
- package/extensions/voice-call/src/webhook-security.test.ts +52 -0
- package/extensions/voice-call/src/webhook-security.ts +16 -5
- package/extensions/voice-call/src/webhook.ts +1 -0
- package/extensions/whatsapp/index.ts +3 -3
- package/extensions/whatsapp/package.json +4 -4
- package/extensions/whatsapp/src/channel.ts +1 -1
- package/extensions/whatsapp/src/runtime.ts +1 -1
- package/extensions/zalo/CHANGELOG.md +9 -9
- package/extensions/zalo/README.md +3 -3
- package/extensions/zalo/index.ts +3 -3
- package/extensions/zalo/node_modules/.bin/poolbot +21 -0
- package/extensions/zalo/package.json +6 -6
- package/extensions/zalo/src/accounts.ts +9 -9
- package/extensions/zalo/src/actions.ts +6 -6
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +20 -20
- package/extensions/zalo/src/config-schema.ts +1 -1
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +27 -27
- package/extensions/zalo/src/runtime.ts +1 -1
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalo/src/status-issues.ts +1 -1
- package/extensions/zalo/src/token.ts +1 -1
- package/extensions/zalouser/CHANGELOG.md +4 -4
- package/extensions/zalouser/README.md +17 -17
- package/extensions/zalouser/index.ts +3 -3
- package/extensions/zalouser/node_modules/.bin/poolbot +21 -0
- package/extensions/zalouser/package.json +6 -6
- package/extensions/zalouser/src/accounts.ts +10 -10
- package/extensions/zalouser/src/channel.ts +27 -27
- package/extensions/zalouser/src/config-schema.ts +1 -1
- package/extensions/zalouser/src/monitor.ts +5 -5
- package/extensions/zalouser/src/onboarding.ts +32 -32
- package/extensions/zalouser/src/runtime.ts +1 -1
- package/extensions/zalouser/src/status-issues.ts +2 -2
- package/git-hooks/pre-commit +0 -0
- package/package.json +78 -89
- package/skills/1password/SKILL.md +3 -3
- package/skills/apple-notes/SKILL.md +2 -2
- package/skills/apple-reminders/SKILL.md +1 -1
- package/skills/bear-notes/SKILL.md +1 -1
- package/skills/bird/SKILL.md +1 -1
- package/skills/blogwatcher/SKILL.md +1 -1
- package/skills/blucli/SKILL.md +1 -1
- package/skills/bluebubbles/SKILL.md +2 -2
- package/skills/camsnap/SKILL.md +1 -1
- package/skills/canvas/SKILL.md +15 -15
- package/skills/coding-agent/SKILL.md +6 -6
- package/skills/discord/SKILL.md +6 -5
- package/skills/eightctl/SKILL.md +1 -1
- package/skills/food-order/SKILL.md +1 -1
- package/skills/gemini/SKILL.md +1 -1
- package/skills/gifgrep/SKILL.md +1 -1
- package/skills/github/SKILL.md +1 -0
- package/skills/gog/SKILL.md +1 -1
- package/skills/goplaces/SKILL.md +1 -1
- package/skills/himalaya/SKILL.md +1 -1
- package/skills/imsg/SKILL.md +1 -1
- package/skills/local-places/SKILL.md +1 -1
- package/skills/mcporter/SKILL.md +1 -1
- package/skills/model-usage/SKILL.md +1 -1
- package/skills/nano-banana-pro/SKILL.md +10 -5
- package/skills/nano-banana-pro/scripts/generate_image.py +42 -27
- package/skills/nano-pdf/SKILL.md +1 -1
- package/skills/notion/SKILL.md +1 -1
- package/skills/obsidian/SKILL.md +1 -1
- package/skills/openai-image-gen/SKILL.md +1 -1
- package/skills/openai-whisper/SKILL.md +1 -1
- package/skills/openai-whisper-api/SKILL.md +2 -2
- package/skills/openhue/SKILL.md +1 -1
- package/skills/oracle/SKILL.md +1 -1
- package/skills/ordercli/SKILL.md +1 -1
- package/skills/peekaboo/SKILL.md +1 -1
- package/skills/{clawdhub → poolhub}/SKILL.md +2 -2
- package/skills/sag/SKILL.md +1 -1
- package/skills/session-logs/SKILL.md +7 -7
- package/skills/sherpa-onnx-tts/SKILL.md +6 -6
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
- package/skills/slack/SKILL.md +4 -3
- package/skills/songsee/SKILL.md +1 -1
- package/skills/sonoscli/SKILL.md +1 -1
- package/skills/spotify-player/SKILL.md +1 -1
- package/skills/summarize/SKILL.md +1 -1
- package/skills/things-mac/SKILL.md +3 -3
- package/skills/tmux/SKILL.md +7 -7
- package/skills/tmux/scripts/find-sessions.sh +1 -1
- package/skills/tmux/scripts/wait-for-text.sh +0 -0
- package/skills/trello/SKILL.md +2 -2
- package/skills/video-frames/SKILL.md +1 -1
- package/skills/voice-call/SKILL.md +4 -4
- package/skills/wacli/SKILL.md +2 -2
- package/skills/weather/SKILL.md +1 -1
- package/dist/cli/browser-cli-serve.js +0 -91
- package/dist/control-ui/assets/index-Cl-Y9zqE.js.map +0 -1
- package/dist/control-ui/assets/index-DEPfFcOb.css +0 -1
- package/docs/POOL-BOT.md +0 -119
- /package/dist/{config/types.clawdbot.js → browser/routes/types.js} +0 -0
- /package/docs/{whatsapp-clawd.jpg → whatsapp-poolbot.jpg} +0 -0
- /package/extensions/bluebubbles/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/copilot-proxy/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/diagnostics-otel/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/discord/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/google-antigravity-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/google-gemini-cli-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/googlechat/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/imessage/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/line/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/llm-task/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/lobster/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/matrix/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/mattermost/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/memory-core/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/msteams/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/nextcloud-talk/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/nostr/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/open-prose/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/qwen-portal-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/signal/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/slack/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/telegram/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/tlon/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/whatsapp/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/zalo/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
- /package/extensions/zalouser/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "Run multiple
|
|
2
|
+
summary: "Run multiple Pool Bot Gateways on one host (isolation, ports, and profiles)"
|
|
3
3
|
read_when:
|
|
4
4
|
- Running more than one Gateway on the same machine
|
|
5
5
|
- You need isolated config/state/ports per Gateway
|
|
@@ -23,18 +23,18 @@ Profiles auto-scope `CLAWDBOT_STATE_DIR` + `CLAWDBOT_CONFIG_PATH` and suffix ser
|
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# main
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
poolbot --profile main setup
|
|
27
|
+
poolbot --profile main gateway --port 18789
|
|
28
28
|
|
|
29
29
|
# rescue
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
poolbot --profile rescue setup
|
|
31
|
+
poolbot --profile rescue gateway --port 19001
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
Per-profile services:
|
|
35
35
|
```bash
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
poolbot --profile main gateway install
|
|
37
|
+
poolbot --profile rescue gateway install
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
## Rescue-bot guide
|
|
@@ -54,11 +54,11 @@ Port spacing: leave at least 20 ports between base ports so the derived browser/
|
|
|
54
54
|
```bash
|
|
55
55
|
# Main bot (existing or fresh, without --profile param)
|
|
56
56
|
# Runs on port 18789 + Chrome CDC/Canvas/... Ports
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
poolbot onboard
|
|
58
|
+
poolbot gateway install
|
|
59
59
|
|
|
60
60
|
# Rescue bot (isolated profile + ports)
|
|
61
|
-
|
|
61
|
+
poolbot --profile rescue onboard
|
|
62
62
|
# Notes:
|
|
63
63
|
# - workspace name will be postfixed with -rescue per default
|
|
64
64
|
# - Port should be at least 18789 + 20 Ports,
|
|
@@ -66,14 +66,14 @@ clawdbot --profile rescue onboard
|
|
|
66
66
|
# - rest of the onboarding is the same as normal
|
|
67
67
|
|
|
68
68
|
# To install the service (if not happened automatically during onboarding)
|
|
69
|
-
|
|
69
|
+
poolbot --profile rescue gateway install
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
## Port mapping (derived)
|
|
73
73
|
|
|
74
74
|
Base port = `gateway.port` (or `CLAWDBOT_GATEWAY_PORT` / `--port`).
|
|
75
75
|
|
|
76
|
-
-
|
|
76
|
+
- browser control service port = base + 2 (loopback only)
|
|
77
77
|
- `canvasHost.port = base + 4`
|
|
78
78
|
- Browser profile CDP ports auto-allocate from `browser.controlPort + 9 .. + 108`
|
|
79
79
|
|
|
@@ -81,27 +81,27 @@ If you override any of these in config or env, you must keep them unique per ins
|
|
|
81
81
|
|
|
82
82
|
## Browser/CDP notes (common footgun)
|
|
83
83
|
|
|
84
|
-
- Do **not** pin `browser.
|
|
85
|
-
- Each instance needs its own browser control port and CDP range.
|
|
84
|
+
- Do **not** pin `browser.cdpUrl` to the same values on multiple instances.
|
|
85
|
+
- Each instance needs its own browser control port and CDP range (derived from its gateway port).
|
|
86
86
|
- If you need explicit CDP ports, set `browser.profiles.<name>.cdpPort` per instance.
|
|
87
87
|
- Remote Chrome: use `browser.profiles.<name>.cdpUrl` (per profile, per instance).
|
|
88
88
|
|
|
89
89
|
## Manual env example
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
|
-
CLAWDBOT_CONFIG_PATH=~/.
|
|
93
|
-
CLAWDBOT_STATE_DIR=~/.
|
|
94
|
-
|
|
92
|
+
CLAWDBOT_CONFIG_PATH=~/.poolbot/main.json \
|
|
93
|
+
CLAWDBOT_STATE_DIR=~/.poolbot-main \
|
|
94
|
+
poolbot gateway --port 18789
|
|
95
95
|
|
|
96
|
-
CLAWDBOT_CONFIG_PATH=~/.
|
|
97
|
-
CLAWDBOT_STATE_DIR=~/.
|
|
98
|
-
|
|
96
|
+
CLAWDBOT_CONFIG_PATH=~/.poolbot/rescue.json \
|
|
97
|
+
CLAWDBOT_STATE_DIR=~/.poolbot-rescue \
|
|
98
|
+
poolbot gateway --port 19001
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
## Quick checks
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
poolbot --profile main status
|
|
105
|
+
poolbot --profile rescue status
|
|
106
|
+
poolbot --profile rescue browser status
|
|
107
107
|
```
|
|
@@ -5,14 +5,14 @@ read_when:
|
|
|
5
5
|
---
|
|
6
6
|
# OpenAI Chat Completions (HTTP)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Pool Bot’s Gateway can serve a small OpenAI-compatible Chat Completions endpoint.
|
|
9
9
|
|
|
10
10
|
This endpoint is **disabled by default**. Enable it in config first.
|
|
11
11
|
|
|
12
12
|
- `POST /v1/chat/completions`
|
|
13
13
|
- Same port as the Gateway (WS + HTTP multiplex): `http://<gateway-host>:<port>/v1/chat/completions`
|
|
14
14
|
|
|
15
|
-
Under the hood, requests are executed as a normal Gateway agent run (same codepath as `
|
|
15
|
+
Under the hood, requests are executed as a normal Gateway agent run (same codepath as `poolbot agent`), so routing/permissions/config match your Gateway.
|
|
16
16
|
|
|
17
17
|
## Authentication
|
|
18
18
|
|
|
@@ -28,15 +28,15 @@ Notes:
|
|
|
28
28
|
|
|
29
29
|
No custom headers required: encode the agent id in the OpenAI `model` field:
|
|
30
30
|
|
|
31
|
-
- `model: "
|
|
31
|
+
- `model: "poolbot:<agentId>"` (example: `"poolbot:main"`, `"poolbot:beta"`)
|
|
32
32
|
- `model: "agent:<agentId>"` (alias)
|
|
33
33
|
|
|
34
|
-
Or target a specific
|
|
34
|
+
Or target a specific Pool Bot agent by header:
|
|
35
35
|
|
|
36
|
-
- `x-
|
|
36
|
+
- `x-poolbot-agent-id: <agentId>` (default: `main`)
|
|
37
37
|
|
|
38
38
|
Advanced:
|
|
39
|
-
- `x-
|
|
39
|
+
- `x-poolbot-session-key: <sessionKey>` to fully control session routing.
|
|
40
40
|
|
|
41
41
|
## Enabling the endpoint
|
|
42
42
|
|
|
@@ -91,9 +91,9 @@ Non-streaming:
|
|
|
91
91
|
curl -sS http://127.0.0.1:18789/v1/chat/completions \
|
|
92
92
|
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
93
93
|
-H 'Content-Type: application/json' \
|
|
94
|
-
-H 'x-
|
|
94
|
+
-H 'x-poolbot-agent-id: main' \
|
|
95
95
|
-d '{
|
|
96
|
-
"model": "
|
|
96
|
+
"model": "poolbot",
|
|
97
97
|
"messages": [{"role":"user","content":"hi"}]
|
|
98
98
|
}'
|
|
99
99
|
```
|
|
@@ -103,9 +103,9 @@ Streaming:
|
|
|
103
103
|
curl -N http://127.0.0.1:18789/v1/chat/completions \
|
|
104
104
|
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
105
105
|
-H 'Content-Type: application/json' \
|
|
106
|
-
-H 'x-
|
|
106
|
+
-H 'x-poolbot-agent-id: main' \
|
|
107
107
|
-d '{
|
|
108
|
-
"model": "
|
|
108
|
+
"model": "poolbot",
|
|
109
109
|
"stream": true,
|
|
110
110
|
"messages": [{"role":"user","content":"hi"}]
|
|
111
111
|
}'
|
|
@@ -6,7 +6,7 @@ read_when:
|
|
|
6
6
|
---
|
|
7
7
|
# OpenResponses API (HTTP)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Pool Bot’s Gateway can serve an OpenResponses-compatible `POST /v1/responses` endpoint.
|
|
10
10
|
|
|
11
11
|
This endpoint is **disabled by default**. Enable it in config first.
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ This endpoint is **disabled by default**. Enable it in config first.
|
|
|
14
14
|
- Same port as the Gateway (WS + HTTP multiplex): `http://<gateway-host>:<port>/v1/responses`
|
|
15
15
|
|
|
16
16
|
Under the hood, requests are executed as a normal Gateway agent run (same codepath as
|
|
17
|
-
`
|
|
17
|
+
`poolbot agent`), so routing/permissions/config match your Gateway.
|
|
18
18
|
|
|
19
19
|
## Authentication
|
|
20
20
|
|
|
@@ -30,15 +30,15 @@ Notes:
|
|
|
30
30
|
|
|
31
31
|
No custom headers required: encode the agent id in the OpenResponses `model` field:
|
|
32
32
|
|
|
33
|
-
- `model: "
|
|
33
|
+
- `model: "poolbot:<agentId>"` (example: `"poolbot:main"`, `"poolbot:beta"`)
|
|
34
34
|
- `model: "agent:<agentId>"` (alias)
|
|
35
35
|
|
|
36
|
-
Or target a specific
|
|
36
|
+
Or target a specific Pool Bot agent by header:
|
|
37
37
|
|
|
38
|
-
- `x-
|
|
38
|
+
- `x-poolbot-agent-id: <agentId>` (default: `main`)
|
|
39
39
|
|
|
40
40
|
Advanced:
|
|
41
|
-
- `x-
|
|
41
|
+
- `x-poolbot-session-key: <sessionKey>` to fully control session routing.
|
|
42
42
|
|
|
43
43
|
## Enabling the endpoint
|
|
44
44
|
|
|
@@ -277,9 +277,9 @@ Non-streaming:
|
|
|
277
277
|
curl -sS http://127.0.0.1:18789/v1/responses \
|
|
278
278
|
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
279
279
|
-H 'Content-Type: application/json' \
|
|
280
|
-
-H 'x-
|
|
280
|
+
-H 'x-poolbot-agent-id: main' \
|
|
281
281
|
-d '{
|
|
282
|
-
"model": "
|
|
282
|
+
"model": "poolbot",
|
|
283
283
|
"input": "hi"
|
|
284
284
|
}'
|
|
285
285
|
```
|
|
@@ -289,9 +289,9 @@ Streaming:
|
|
|
289
289
|
curl -N http://127.0.0.1:18789/v1/responses \
|
|
290
290
|
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
291
291
|
-H 'Content-Type: application/json' \
|
|
292
|
-
-H 'x-
|
|
292
|
+
-H 'x-poolbot-agent-id: main' \
|
|
293
293
|
-d '{
|
|
294
|
-
"model": "
|
|
294
|
+
"model": "poolbot",
|
|
295
295
|
"stream": true,
|
|
296
296
|
"input": "hi"
|
|
297
297
|
}'
|
package/docs/gateway/pairing.md
CHANGED
|
@@ -35,11 +35,11 @@ Pending requests expire automatically after **5 minutes**.
|
|
|
35
35
|
## CLI workflow (headless friendly)
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
poolbot nodes pending
|
|
39
|
+
poolbot nodes approve <requestId>
|
|
40
|
+
poolbot nodes reject <requestId>
|
|
41
|
+
poolbot nodes status
|
|
42
|
+
poolbot nodes rename --node <id|name|ip> --name "Living Room iPad"
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
`nodes status` shows paired/connected nodes and their capabilities.
|
|
@@ -74,10 +74,10 @@ If silent approval fails, it falls back to the normal “Approve/Reject” promp
|
|
|
74
74
|
|
|
75
75
|
## Storage (local, private)
|
|
76
76
|
|
|
77
|
-
Pairing state is stored under the Gateway state directory (default `~/.
|
|
77
|
+
Pairing state is stored under the Gateway state directory (default `~/.poolbot`):
|
|
78
78
|
|
|
79
|
-
- `~/.
|
|
80
|
-
- `~/.
|
|
79
|
+
- `~/.poolbot/nodes/paired.json`
|
|
80
|
+
- `~/.poolbot/nodes/pending.json`
|
|
81
81
|
|
|
82
82
|
If you override `CLAWDBOT_STATE_DIR`, the `nodes/` folder moves with it.
|
|
83
83
|
|
package/docs/gateway/protocol.md
CHANGED
|
@@ -9,7 +9,7 @@ read_when:
|
|
|
9
9
|
# Gateway protocol (WebSocket)
|
|
10
10
|
|
|
11
11
|
The Gateway WS protocol is the **single control plane + node transport** for
|
|
12
|
-
|
|
12
|
+
Pool Bot. All clients (CLI, web UI, macOS app, iOS/Android nodes, headless
|
|
13
13
|
nodes) connect over WebSocket and declare their **role** + **scope** at
|
|
14
14
|
handshake time.
|
|
15
15
|
|
|
@@ -53,7 +53,7 @@ Client → Gateway:
|
|
|
53
53
|
"permissions": {},
|
|
54
54
|
"auth": { "token": "…" },
|
|
55
55
|
"locale": "en-US",
|
|
56
|
-
"userAgent": "
|
|
56
|
+
"userAgent": "poolbot-cli/1.2.3",
|
|
57
57
|
"device": {
|
|
58
58
|
"id": "device_fingerprint",
|
|
59
59
|
"publicKey": "…",
|
|
@@ -111,7 +111,7 @@ When a device token is issued, `hello-ok` also includes:
|
|
|
111
111
|
"permissions": { "camera.capture": true, "screen.record": false },
|
|
112
112
|
"auth": { "token": "…" },
|
|
113
113
|
"locale": "en-US",
|
|
114
|
-
"userAgent": "
|
|
114
|
+
"userAgent": "poolbot-ios/1.2.3",
|
|
115
115
|
"device": {
|
|
116
116
|
"id": "device_fingerprint",
|
|
117
117
|
"publicKey": "…",
|
|
@@ -198,7 +198,8 @@ The Gateway treats these as **claims** and enforces server-side allowlists.
|
|
|
198
198
|
- **Local** connects include loopback and the gateway host’s own tailnet address
|
|
199
199
|
(so same‑host tailnet binds can still auto‑approve).
|
|
200
200
|
- All WS clients must include `device` identity during `connect` (operator + node).
|
|
201
|
-
Control UI can omit it **only** when `gateway.controlUi.allowInsecureAuth` is enabled
|
|
201
|
+
Control UI can omit it **only** when `gateway.controlUi.allowInsecureAuth` is enabled
|
|
202
|
+
(or `gateway.controlUi.dangerouslyDisableDeviceAuth` for break-glass use).
|
|
202
203
|
- Non-local connections must sign the server-provided `connect.challenge` nonce.
|
|
203
204
|
|
|
204
205
|
## TLS + pinning
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "SSH tunnel setup for
|
|
2
|
+
summary: "SSH tunnel setup for Pool Bot.app connecting to a remote gateway"
|
|
3
3
|
read_when: "Connecting the macOS app to a remote gateway over SSH"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Running
|
|
6
|
+
# Running Pool Bot.app with a Remote Gateway
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Pool Bot.app uses SSH tunneling to connect to a remote gateway. This guide shows you how to set it up.
|
|
9
9
|
|
|
10
10
|
## Overview
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ Clawdbot.app uses SSH tunneling to connect to a remote gateway. This guide shows
|
|
|
13
13
|
┌─────────────────────────────────────────────────────────────┐
|
|
14
14
|
│ Client Machine │
|
|
15
15
|
│ │
|
|
16
|
-
│
|
|
16
|
+
│ Pool Bot.app ──► ws://127.0.0.1:18789 (local port) │
|
|
17
17
|
│ │ │
|
|
18
18
|
│ ▼ │
|
|
19
19
|
│ SSH Tunnel ────────────────────────────────────────────────│
|
|
@@ -65,11 +65,11 @@ launchctl setenv CLAWDBOT_GATEWAY_TOKEN "<your-token>"
|
|
|
65
65
|
ssh -N remote-gateway &
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
### Step 5: Restart
|
|
68
|
+
### Step 5: Restart Pool Bot.app
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
# Quit
|
|
72
|
-
open /path/to/
|
|
71
|
+
# Quit Pool Bot.app (⌘Q), then reopen:
|
|
72
|
+
open /path/to/Pool Bot.app
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
The app will now connect to the remote gateway through the SSH tunnel.
|
|
@@ -82,7 +82,7 @@ To have the SSH tunnel start automatically when you log in, create a Launch Agen
|
|
|
82
82
|
|
|
83
83
|
### Create the PLIST file
|
|
84
84
|
|
|
85
|
-
Save this as `~/Library/LaunchAgents/com.
|
|
85
|
+
Save this as `~/Library/LaunchAgents/com.poolbot.ssh-tunnel.plist`:
|
|
86
86
|
|
|
87
87
|
```xml
|
|
88
88
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -90,7 +90,7 @@ Save this as `~/Library/LaunchAgents/com.clawdbot.ssh-tunnel.plist`:
|
|
|
90
90
|
<plist version="1.0">
|
|
91
91
|
<dict>
|
|
92
92
|
<key>Label</key>
|
|
93
|
-
<string>com.
|
|
93
|
+
<string>com.poolbot.ssh-tunnel</string>
|
|
94
94
|
<key>ProgramArguments</key>
|
|
95
95
|
<array>
|
|
96
96
|
<string>/usr/bin/ssh</string>
|
|
@@ -108,7 +108,7 @@ Save this as `~/Library/LaunchAgents/com.clawdbot.ssh-tunnel.plist`:
|
|
|
108
108
|
### Load the Launch Agent
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
|
-
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.
|
|
111
|
+
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.poolbot.ssh-tunnel.plist
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
The tunnel will now:
|
|
@@ -130,13 +130,13 @@ lsof -i :18789
|
|
|
130
130
|
**Restart the tunnel:**
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
|
-
launchctl kickstart -k gui/$UID/com.
|
|
133
|
+
launchctl kickstart -k gui/$UID/com.poolbot.ssh-tunnel
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
**Stop the tunnel:**
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
|
-
launchctl bootout gui/$UID/com.
|
|
139
|
+
launchctl bootout gui/$UID/com.poolbot.ssh-tunnel
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
---
|
|
@@ -150,4 +150,4 @@ launchctl bootout gui/$UID/com.clawdbot.ssh-tunnel
|
|
|
150
150
|
| `KeepAlive` | Automatically restarts tunnel if it crashes |
|
|
151
151
|
| `RunAtLoad` | Starts tunnel when the agent loads |
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
Pool Bot.app connects to `ws://127.0.0.1:18789` on your client machine. The SSH tunnel forwards that connection to port 18789 on the remote machine where the Gateway is running.
|
package/docs/gateway/remote.md
CHANGED
|
@@ -34,7 +34,7 @@ This is ideal when your laptop sleeps often but you want the agent always-on.
|
|
|
34
34
|
|
|
35
35
|
The laptop does **not** run the agent. It connects remotely:
|
|
36
36
|
|
|
37
|
-
- Use the macOS app’s **Remote over SSH** mode (Settings → General → “
|
|
37
|
+
- Use the macOS app’s **Remote over SSH** mode (Settings → General → “Pool Bot runs”).
|
|
38
38
|
- The app opens and manages the tunnel, so WebChat + health checks “just work.”
|
|
39
39
|
|
|
40
40
|
Runbook: [macOS remote access](/platforms/mac/remote).
|
|
@@ -71,8 +71,8 @@ ssh -N -L 18789:127.0.0.1:18789 user@host
|
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
With the tunnel up:
|
|
74
|
-
- `
|
|
75
|
-
- `
|
|
74
|
+
- `poolbot health` and `poolbot status --deep` now reach the remote gateway via `ws://127.0.0.1:18789`.
|
|
75
|
+
- `poolbot gateway {status,health,send,agent,call}` can also target the forwarded URL via `--url` when needed.
|
|
76
76
|
|
|
77
77
|
Note: replace `18789` with your configured `gateway.port` (or `--port`/`CLAWDBOT_GATEWAY_PORT`).
|
|
78
78
|
|
|
@@ -117,6 +117,6 @@ Short version: **keep the Gateway loopback-only** unless you’re sure you need
|
|
|
117
117
|
- `gateway.remote.tlsFingerprint` pins the remote TLS cert when using `wss://`.
|
|
118
118
|
- **Tailscale Serve** can authenticate via identity headers when `gateway.auth.allowTailscale: true`.
|
|
119
119
|
Set it to `false` if you want tokens/passwords instead.
|
|
120
|
-
- Treat
|
|
120
|
+
- Treat browser control like operator access: tailnet-only + deliberate node pairing.
|
|
121
121
|
|
|
122
122
|
Deep dive: [Security](/gateway/security).
|
|
@@ -7,7 +7,7 @@ status: active
|
|
|
7
7
|
|
|
8
8
|
# Sandbox vs Tool Policy vs Elevated
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Pool Bot has three related (but different) controls:
|
|
11
11
|
|
|
12
12
|
1. **Sandbox** (`agents.defaults.sandbox.*` / `agents.list[].sandbox.*`) decides **where tools run** (Docker vs host).
|
|
13
13
|
2. **Tool policy** (`tools.*`, `tools.sandbox.tools.*`, `agents.list[].tools.*`) decides **which tools are available/allowed**.
|
|
@@ -15,13 +15,13 @@ Clawdbot has three related (but different) controls:
|
|
|
15
15
|
|
|
16
16
|
## Quick debug
|
|
17
17
|
|
|
18
|
-
Use the inspector to see what
|
|
18
|
+
Use the inspector to see what Pool Bot is *actually* doing:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
poolbot sandbox explain
|
|
22
|
+
poolbot sandbox explain --session agent:main:main
|
|
23
|
+
poolbot sandbox explain --agent work
|
|
24
|
+
poolbot sandbox explain --json
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
It prints:
|
|
@@ -59,6 +59,8 @@ Two layers matter:
|
|
|
59
59
|
Rules of thumb:
|
|
60
60
|
- `deny` always wins.
|
|
61
61
|
- If `allow` is non-empty, everything else is treated as blocked.
|
|
62
|
+
- Tool policy is the hard stop: `/exec` cannot override a denied `exec` tool.
|
|
63
|
+
- `/exec` only changes session defaults for authorized senders; it does not grant tool access.
|
|
62
64
|
Provider tool keys accept either `provider` (e.g. `google-antigravity`) or `provider/model` (e.g. `openai/gpt-5.2`).
|
|
63
65
|
|
|
64
66
|
### Tool groups (shorthands)
|
|
@@ -86,7 +88,7 @@ Available groups:
|
|
|
86
88
|
- `group:automation`: `cron`, `gateway`
|
|
87
89
|
- `group:messaging`: `message`
|
|
88
90
|
- `group:nodes`: `nodes`
|
|
89
|
-
- `group:
|
|
91
|
+
- `group:poolbot`: all built-in Pool Bot tools (excludes provider plugins)
|
|
90
92
|
|
|
91
93
|
## Elevated: exec-only “run on host”
|
|
92
94
|
|
|
@@ -95,6 +97,7 @@ Elevated does **not** grant extra tools; it only affects `exec`.
|
|
|
95
97
|
- Use `/elevated full` to skip exec approvals for the session.
|
|
96
98
|
- If you’re already running direct, elevated is effectively a no-op (still gated).
|
|
97
99
|
- Elevated is **not** skill-scoped and does **not** override tool allow/deny.
|
|
100
|
+
- `/exec` is separate from elevated. It only adjusts per-session exec defaults for authorized senders.
|
|
98
101
|
|
|
99
102
|
Gates:
|
|
100
103
|
- Enablement: `tools.elevated.enabled` (and optionally `agents.list[].tools.elevated.enabled`)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "How
|
|
2
|
+
summary: "How Pool Bot sandboxing works: modes, scopes, workspace access, and images"
|
|
3
3
|
title: Sandboxing
|
|
4
4
|
read_when: "You want a dedicated explanation of sandboxing or need to tune agents.defaults.sandbox."
|
|
5
5
|
status: active
|
|
@@ -7,7 +7,7 @@ status: active
|
|
|
7
7
|
|
|
8
8
|
# Sandboxing
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Pool Bot can run **tools inside Docker containers** to reduce blast radius.
|
|
11
11
|
This is **optional** and controlled by configuration (`agents.defaults.sandbox` or
|
|
12
12
|
`agents.list[].sandbox`). If sandboxing is off, tools run on the host.
|
|
13
13
|
The Gateway stays on the host; tool execution runs in an isolated sandbox
|
|
@@ -46,13 +46,13 @@ Group/channel sessions use their own keys, so they count as non-main and will be
|
|
|
46
46
|
|
|
47
47
|
## Workspace access
|
|
48
48
|
`agents.defaults.sandbox.workspaceAccess` controls **what the sandbox can see**:
|
|
49
|
-
- `"none"` (default): tools see a sandbox workspace under `~/.
|
|
49
|
+
- `"none"` (default): tools see a sandbox workspace under `~/.poolbot/sandboxes`.
|
|
50
50
|
- `"ro"`: mounts the agent workspace read-only at `/agent` (disables `write`/`edit`/`apply_patch`).
|
|
51
51
|
- `"rw"`: mounts the agent workspace read/write at `/workspace`.
|
|
52
52
|
|
|
53
53
|
Inbound media is copied into the active sandbox workspace (`media/inbound/*`).
|
|
54
54
|
Skills note: the `read` tool is sandbox-rooted. With `workspaceAccess: "none"`,
|
|
55
|
-
|
|
55
|
+
Pool Bot mirrors eligible skills into the sandbox workspace (`.../skills`) so
|
|
56
56
|
they can be read. With `"rw"`, workspace skills are readable from
|
|
57
57
|
`/workspace/skills`.
|
|
58
58
|
|
|
@@ -98,7 +98,7 @@ Security notes:
|
|
|
98
98
|
- See [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) for how binds interact with tool policy and elevated exec.
|
|
99
99
|
|
|
100
100
|
## Images + setup
|
|
101
|
-
Default image: `
|
|
101
|
+
Default image: `poolbot-sandbox:bookworm-slim`
|
|
102
102
|
|
|
103
103
|
Build it once:
|
|
104
104
|
```bash
|
|
@@ -142,9 +142,11 @@ Tool allow/deny policies still apply before sandbox rules. If a tool is denied
|
|
|
142
142
|
globally or per-agent, sandboxing doesn’t bring it back.
|
|
143
143
|
|
|
144
144
|
`tools.elevated` is an explicit escape hatch that runs `exec` on the host.
|
|
145
|
+
`/exec` directives only apply for authorized senders and persist per session; to hard-disable
|
|
146
|
+
`exec`, use tool policy deny (see [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated)).
|
|
145
147
|
|
|
146
148
|
Debugging:
|
|
147
|
-
- Use `
|
|
149
|
+
- Use `poolbot sandbox explain` to inspect effective sandbox mode, tool policy, and fix-it config keys.
|
|
148
150
|
- See [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) for the “why is this blocked?” mental model.
|
|
149
151
|
Keep it locked down.
|
|
150
152
|
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Formal Verification (Security Models)
|
|
3
|
+
summary: Machine-checked security models for Pool Bot’s highest-risk paths.
|
|
4
|
+
permalink: /gateway/security/formal-verification/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Formal Verification (Security Models)
|
|
8
|
+
|
|
9
|
+
This page tracks Pool Bot’s **formal security models** (TLA+/TLC today; more as needed).
|
|
10
|
+
|
|
11
|
+
**Goal (north star):** provide a machine-checked argument that Pool Bot enforces its
|
|
12
|
+
intended security policy (authorization, session isolation, tool gating, and
|
|
13
|
+
misconfiguration safety), under explicit assumptions.
|
|
14
|
+
|
|
15
|
+
**What this is (today):** an executable, attacker-driven **security regression suite**:
|
|
16
|
+
- Each claim has a runnable model-check over a finite state space.
|
|
17
|
+
- Many claims have a paired **negative model** that produces a counterexample trace for a realistic bug class.
|
|
18
|
+
|
|
19
|
+
**What this is not (yet):** a proof that “Pool Bot is secure in all respects” or that the full TypeScript implementation is correct.
|
|
20
|
+
|
|
21
|
+
## Where the models live
|
|
22
|
+
|
|
23
|
+
Models are maintained in a separate repo: [vignesh07/poolbot-formal-models](https://github.com/vignesh07/poolbot-formal-models).
|
|
24
|
+
|
|
25
|
+
## Important caveats
|
|
26
|
+
|
|
27
|
+
- These are **models**, not the full TypeScript implementation. Drift between model and code is possible.
|
|
28
|
+
- Results are bounded by the state space explored by TLC; “green” does not imply security beyond the modeled assumptions and bounds.
|
|
29
|
+
- Some claims rely on explicit environmental assumptions (e.g., correct deployment, correct configuration inputs).
|
|
30
|
+
|
|
31
|
+
## Reproducing results
|
|
32
|
+
|
|
33
|
+
Today, results are reproduced by cloning the models repo locally and running TLC (see below). A future iteration could offer:
|
|
34
|
+
- CI-run models with public artifacts (counterexample traces, run logs)
|
|
35
|
+
- a hosted “run this model” workflow for small, bounded checks
|
|
36
|
+
|
|
37
|
+
Getting started:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
git clone https://github.com/vignesh07/poolbot-formal-models
|
|
41
|
+
cd poolbot-formal-models
|
|
42
|
+
|
|
43
|
+
# Java 11+ required (TLC runs on the JVM).
|
|
44
|
+
# The repo vendors a pinned `tla2tools.jar` (TLA+ tools) and provides `bin/tlc` + Make targets.
|
|
45
|
+
|
|
46
|
+
make <target>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Gateway exposure and open gateway misconfiguration
|
|
50
|
+
|
|
51
|
+
**Claim:** binding beyond loopback without auth can make remote compromise possible / increases exposure; token/password blocks unauth attackers (per the model assumptions).
|
|
52
|
+
|
|
53
|
+
- Green runs:
|
|
54
|
+
- `make gateway-exposure-v2`
|
|
55
|
+
- `make gateway-exposure-v2-protected`
|
|
56
|
+
- Red (expected):
|
|
57
|
+
- `make gateway-exposure-v2-negative`
|
|
58
|
+
|
|
59
|
+
See also: `docs/gateway-exposure-matrix.md` in the models repo.
|
|
60
|
+
|
|
61
|
+
### Nodes.run pipeline (highest-risk capability)
|
|
62
|
+
|
|
63
|
+
**Claim:** `nodes.run` requires (a) node command allowlist plus declared commands and (b) live approval when configured; approvals are tokenized to prevent replay (in the model).
|
|
64
|
+
|
|
65
|
+
- Green runs:
|
|
66
|
+
- `make nodes-pipeline`
|
|
67
|
+
- `make approvals-token`
|
|
68
|
+
- Red (expected):
|
|
69
|
+
- `make nodes-pipeline-negative`
|
|
70
|
+
- `make approvals-token-negative`
|
|
71
|
+
|
|
72
|
+
### Pairing store (DM gating)
|
|
73
|
+
|
|
74
|
+
**Claim:** pairing requests respect TTL and pending-request caps.
|
|
75
|
+
|
|
76
|
+
- Green runs:
|
|
77
|
+
- `make pairing`
|
|
78
|
+
- `make pairing-cap`
|
|
79
|
+
- Red (expected):
|
|
80
|
+
- `make pairing-negative`
|
|
81
|
+
- `make pairing-cap-negative`
|
|
82
|
+
|
|
83
|
+
### Ingress gating (mentions + control-command bypass)
|
|
84
|
+
|
|
85
|
+
**Claim:** in group contexts requiring mention, an unauthorized “control command” cannot bypass mention gating.
|
|
86
|
+
|
|
87
|
+
- Green:
|
|
88
|
+
- `make ingress-gating`
|
|
89
|
+
- Red (expected):
|
|
90
|
+
- `make ingress-gating-negative`
|
|
91
|
+
|
|
92
|
+
### Routing/session-key isolation
|
|
93
|
+
|
|
94
|
+
**Claim:** DMs from distinct peers do not collapse into the same session unless explicitly linked/configured.
|
|
95
|
+
|
|
96
|
+
- Green:
|
|
97
|
+
- `make routing-isolation`
|
|
98
|
+
- Red (expected):
|
|
99
|
+
- `make routing-isolation-negative`
|
|
100
|
+
|
|
101
|
+
## Roadmap
|
|
102
|
+
|
|
103
|
+
Next models to deepen fidelity:
|
|
104
|
+
- Pairing store concurrency/locking/idempotency
|
|
105
|
+
- Provider-specific ingress preflight modeling
|
|
106
|
+
- Routing identity-links + dmScope variants + binding precedence
|
|
107
|
+
- Gateway auth conformance (proxy/tailscale specifics)
|