@poolzin/pool-bot 2026.1.26 → 2026.1.30
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 +76 -1116
- package/LICENSE +21 -0
- package/README.md +58 -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 +24 -35
- 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/memory-tool.js +2 -1
- 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/command-registry.js +5 -0
- 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.completion.js +355 -0
- 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/index.js +53 -0
- package/dist/gateway/hooks/lifecycle-hooks-integration.js +256 -0
- package/dist/gateway/hooks/lifecycle-hooks.js +236 -0
- package/dist/gateway/hooks/progressive-disclosure-details.js +237 -0
- package/dist/gateway/hooks/progressive-disclosure-index.js +354 -0
- package/dist/gateway/hooks/progressive-disclosure-timeline.js +231 -0
- package/dist/gateway/hooks/progressive-disclosure-types.js +65 -0
- package/dist/gateway/hooks/progressive-disclosure.js +242 -0
- package/dist/gateway/hooks/tool-usage-capture.js +253 -0
- package/dist/gateway/hooks/tool-usage-storage.js +144 -0
- 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/nodes.js +2 -0
- 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 +11 -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 +16 -3
- 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 +109 -53
- 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/memory/index.js +5 -0
- package/dist/memory/manager.js +25 -2
- 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/WHATSAPP-HEARTBEAT-TROUBLESHOOTING.md +319 -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/skills/webgpu-threejs-tsl/REFERENCE.md +283 -0
- package/skills/webgpu-threejs-tsl/SKILL.md +91 -0
- package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +404 -0
- package/skills/webgpu-threejs-tsl/docs/core-concepts.md +453 -0
- package/skills/webgpu-threejs-tsl/docs/materials.md +353 -0
- package/skills/webgpu-threejs-tsl/docs/post-processing.md +434 -0
- package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +324 -0
- package/skills/webgpu-threejs-tsl/examples/basic-setup.js +87 -0
- package/skills/webgpu-threejs-tsl/examples/custom-material.js +170 -0
- package/skills/webgpu-threejs-tsl/examples/earth-shader.js +292 -0
- package/skills/webgpu-threejs-tsl/examples/particle-system.js +259 -0
- package/skills/webgpu-threejs-tsl/examples/post-processing.js +199 -0
- package/skills/webgpu-threejs-tsl/templates/compute-shader.js +305 -0
- package/skills/webgpu-threejs-tsl/templates/webgpu-project.js +276 -0
- 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: "How
|
|
2
|
+
summary: "How Pool Bot rotates auth profiles and falls back across models"
|
|
3
3
|
read_when:
|
|
4
4
|
- Diagnosing auth profile rotation, cooldowns, or model fallback behavior
|
|
5
5
|
- Updating failover rules for auth profiles or models
|
|
@@ -7,7 +7,7 @@ read_when:
|
|
|
7
7
|
|
|
8
8
|
# Model failover
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Pool Bot handles failures in two stages:
|
|
11
11
|
1) **Auth profile rotation** within the current provider.
|
|
12
12
|
2) **Model fallback** to the next model in `agents.defaults.model.fallbacks`.
|
|
13
13
|
|
|
@@ -15,11 +15,11 @@ This doc explains the runtime rules and the data that backs them.
|
|
|
15
15
|
|
|
16
16
|
## Auth storage (keys + OAuth)
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Pool Bot uses **auth profiles** for both API keys and OAuth tokens.
|
|
19
19
|
|
|
20
|
-
- Secrets live in `~/.
|
|
20
|
+
- Secrets live in `~/.poolbot/agents/<agentId>/agent/auth-profiles.json` (legacy: `~/.poolbot/agent/auth-profiles.json`).
|
|
21
21
|
- Config `auth.profiles` / `auth.order` are **metadata + routing only** (no secrets).
|
|
22
|
-
- Legacy import-only OAuth file: `~/.
|
|
22
|
+
- Legacy import-only OAuth file: `~/.poolbot/credentials/oauth.json` (imported into `auth-profiles.json` on first use).
|
|
23
23
|
|
|
24
24
|
More detail: [/concepts/oauth](/concepts/oauth)
|
|
25
25
|
|
|
@@ -33,24 +33,24 @@ OAuth logins create distinct profiles so multiple accounts can coexist.
|
|
|
33
33
|
- Default: `provider:default` when no email is available.
|
|
34
34
|
- OAuth with email: `provider:<email>` (for example `google-antigravity:user@gmail.com`).
|
|
35
35
|
|
|
36
|
-
Profiles live in `~/.
|
|
36
|
+
Profiles live in `~/.poolbot/agents/<agentId>/agent/auth-profiles.json` under `profiles`.
|
|
37
37
|
|
|
38
38
|
## Rotation order
|
|
39
39
|
|
|
40
|
-
When a provider has multiple profiles,
|
|
40
|
+
When a provider has multiple profiles, Pool Bot chooses an order like this:
|
|
41
41
|
|
|
42
42
|
1) **Explicit config**: `auth.order[provider]` (if set).
|
|
43
43
|
2) **Configured profiles**: `auth.profiles` filtered by provider.
|
|
44
44
|
3) **Stored profiles**: entries in `auth-profiles.json` for the provider.
|
|
45
45
|
|
|
46
|
-
If no explicit order is configured,
|
|
46
|
+
If no explicit order is configured, Pool Bot uses a round‑robin order:
|
|
47
47
|
- **Primary key:** profile type (**OAuth before API keys**).
|
|
48
48
|
- **Secondary key:** `usageStats.lastUsed` (oldest first, within each type).
|
|
49
49
|
- **Cooldown/disabled profiles** are moved to the end, ordered by soonest expiry.
|
|
50
50
|
|
|
51
51
|
### Session stickiness (cache-friendly)
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
Pool Bot **pins the chosen auth profile per session** to keep provider caches warm.
|
|
54
54
|
It does **not** rotate on every request. The pinned profile is reused until:
|
|
55
55
|
- the session is reset (`/new` / `/reset`)
|
|
56
56
|
- a compaction completes (compaction count increments)
|
|
@@ -60,9 +60,9 @@ Manual selection via `/model …@<profileId>` sets a **user override** for that
|
|
|
60
60
|
and is not auto‑rotated until a new session starts.
|
|
61
61
|
|
|
62
62
|
Auto‑pinned profiles (selected by the session router) are treated as a **preference**:
|
|
63
|
-
they are tried first, but
|
|
63
|
+
they are tried first, but Pool Bot may rotate to another profile on rate limits/timeouts.
|
|
64
64
|
User‑pinned profiles stay locked to that profile; if it fails and model fallbacks
|
|
65
|
-
are configured,
|
|
65
|
+
are configured, Pool Bot moves to the next model instead of switching profiles.
|
|
66
66
|
|
|
67
67
|
### Why OAuth can “look lost”
|
|
68
68
|
|
|
@@ -73,7 +73,7 @@ If you have both an OAuth profile and an API key profile for the same provider,
|
|
|
73
73
|
## Cooldowns
|
|
74
74
|
|
|
75
75
|
When a profile fails due to auth/rate‑limit errors (or a timeout that looks
|
|
76
|
-
like rate limiting),
|
|
76
|
+
like rate limiting), Pool Bot marks it in cooldown and moves to the next profile.
|
|
77
77
|
Format/invalid‑request errors (for example Cloud Code Assist tool call ID
|
|
78
78
|
validation failures) are treated as failover‑worthy and use the same cooldowns.
|
|
79
79
|
|
|
@@ -99,7 +99,7 @@ State is stored in `auth-profiles.json` under `usageStats`:
|
|
|
99
99
|
|
|
100
100
|
## Billing disables
|
|
101
101
|
|
|
102
|
-
Billing/credit failures (for example “insufficient credits” / “credit balance too low”) are treated as failover‑worthy, but they’re usually not transient. Instead of a short cooldown,
|
|
102
|
+
Billing/credit failures (for example “insufficient credits” / “credit balance too low”) are treated as failover‑worthy, but they’re usually not transient. Instead of a short cooldown, Pool Bot marks the profile as **disabled** (with a longer backoff) and rotates to the next profile/provider.
|
|
103
103
|
|
|
104
104
|
State is stored in `auth-profiles.json`:
|
|
105
105
|
|
|
@@ -120,7 +120,7 @@ Defaults:
|
|
|
120
120
|
|
|
121
121
|
## Model fallback
|
|
122
122
|
|
|
123
|
-
If all profiles for a provider fail,
|
|
123
|
+
If all profiles for a provider fail, Pool Bot moves to the next model in
|
|
124
124
|
`agents.defaults.model.fallbacks`. This applies to auth failures, rate limits, and
|
|
125
125
|
timeouts that exhausted profile rotation (other errors do not advance fallback).
|
|
126
126
|
|
|
@@ -13,11 +13,11 @@ For model selection rules, see [/concepts/models](/concepts/models).
|
|
|
13
13
|
|
|
14
14
|
- Model refs use `provider/model` (example: `opencode/claude-opus-4-5`).
|
|
15
15
|
- If you set `agents.defaults.models`, it becomes the allowlist.
|
|
16
|
-
- CLI helpers: `
|
|
16
|
+
- CLI helpers: `poolbot onboard`, `poolbot models list`, `poolbot models set <provider/model>`.
|
|
17
17
|
|
|
18
18
|
## Built-in providers (pi-ai catalog)
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Pool Bot ships with the pi‑ai catalog. These providers require **no**
|
|
21
21
|
`models.providers` config; just set auth + pick a model.
|
|
22
22
|
|
|
23
23
|
### OpenAI
|
|
@@ -25,7 +25,7 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
25
25
|
- Provider: `openai`
|
|
26
26
|
- Auth: `OPENAI_API_KEY`
|
|
27
27
|
- Example model: `openai/gpt-5.2`
|
|
28
|
-
- CLI: `
|
|
28
|
+
- CLI: `poolbot onboard --auth-choice openai-api-key`
|
|
29
29
|
|
|
30
30
|
```json5
|
|
31
31
|
{
|
|
@@ -38,7 +38,7 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
38
38
|
- Provider: `anthropic`
|
|
39
39
|
- Auth: `ANTHROPIC_API_KEY` or `claude setup-token`
|
|
40
40
|
- Example model: `anthropic/claude-opus-4-5`
|
|
41
|
-
- CLI: `
|
|
41
|
+
- CLI: `poolbot onboard --auth-choice token` (paste setup-token) or `poolbot models auth paste-token --provider anthropic`
|
|
42
42
|
|
|
43
43
|
```json5
|
|
44
44
|
{
|
|
@@ -49,9 +49,9 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
49
49
|
### OpenAI Code (Codex)
|
|
50
50
|
|
|
51
51
|
- Provider: `openai-codex`
|
|
52
|
-
- Auth: OAuth
|
|
52
|
+
- Auth: OAuth (ChatGPT)
|
|
53
53
|
- Example model: `openai-codex/gpt-5.2`
|
|
54
|
-
- CLI: `
|
|
54
|
+
- CLI: `poolbot onboard --auth-choice openai-codex` or `poolbot models auth login --provider openai-codex`
|
|
55
55
|
|
|
56
56
|
```json5
|
|
57
57
|
{
|
|
@@ -64,7 +64,7 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
64
64
|
- Provider: `opencode`
|
|
65
65
|
- Auth: `OPENCODE_API_KEY` (or `OPENCODE_ZEN_API_KEY`)
|
|
66
66
|
- Example model: `opencode/claude-opus-4-5`
|
|
67
|
-
- CLI: `
|
|
67
|
+
- CLI: `poolbot onboard --auth-choice opencode-zen`
|
|
68
68
|
|
|
69
69
|
```json5
|
|
70
70
|
{
|
|
@@ -77,19 +77,19 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
77
77
|
- Provider: `google`
|
|
78
78
|
- Auth: `GEMINI_API_KEY`
|
|
79
79
|
- Example model: `google/gemini-3-pro-preview`
|
|
80
|
-
- CLI: `
|
|
80
|
+
- CLI: `poolbot onboard --auth-choice gemini-api-key`
|
|
81
81
|
|
|
82
82
|
### Google Vertex / Antigravity / Gemini CLI
|
|
83
83
|
|
|
84
84
|
- Providers: `google-vertex`, `google-antigravity`, `google-gemini-cli`
|
|
85
85
|
- Auth: Vertex uses gcloud ADC; Antigravity/Gemini CLI use their respective auth flows
|
|
86
86
|
- Antigravity OAuth is shipped as a bundled plugin (`google-antigravity-auth`, disabled by default).
|
|
87
|
-
- Enable: `
|
|
88
|
-
- Login: `
|
|
87
|
+
- Enable: `poolbot plugins enable google-antigravity-auth`
|
|
88
|
+
- Login: `poolbot models auth login --provider google-antigravity --set-default`
|
|
89
89
|
- Gemini CLI OAuth is shipped as a bundled plugin (`google-gemini-cli-auth`, disabled by default).
|
|
90
|
-
- Enable: `
|
|
91
|
-
- Login: `
|
|
92
|
-
- Note: you do **not** paste a client id or secret into `
|
|
90
|
+
- Enable: `poolbot plugins enable google-gemini-cli-auth`
|
|
91
|
+
- Login: `poolbot models auth login --provider google-gemini-cli --set-default`
|
|
92
|
+
- Note: you do **not** paste a client id or secret into `poolbot.json`. The CLI login flow stores
|
|
93
93
|
tokens in auth profiles on the gateway host.
|
|
94
94
|
|
|
95
95
|
### Z.AI (GLM)
|
|
@@ -97,7 +97,7 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
97
97
|
- Provider: `zai`
|
|
98
98
|
- Auth: `ZAI_API_KEY`
|
|
99
99
|
- Example model: `zai/glm-4.7`
|
|
100
|
-
- CLI: `
|
|
100
|
+
- CLI: `poolbot onboard --auth-choice zai-api-key`
|
|
101
101
|
- Aliases: `z.ai/*` and `z-ai/*` normalize to `zai/*`
|
|
102
102
|
|
|
103
103
|
### Vercel AI Gateway
|
|
@@ -105,7 +105,7 @@ Clawdbot ships with the pi‑ai catalog. These providers require **no**
|
|
|
105
105
|
- Provider: `vercel-ai-gateway`
|
|
106
106
|
- Auth: `AI_GATEWAY_API_KEY`
|
|
107
107
|
- Example model: `vercel-ai-gateway/anthropic/claude-opus-4.5`
|
|
108
|
-
- CLI: `
|
|
108
|
+
- CLI: `poolbot onboard --auth-choice ai-gateway-api-key`
|
|
109
109
|
|
|
110
110
|
### Other built-in providers
|
|
111
111
|
|
|
@@ -191,8 +191,8 @@ Qwen provides OAuth access to Qwen Coder + Vision via a device-code flow.
|
|
|
191
191
|
Enable the bundled plugin, then log in:
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
poolbot plugins enable qwen-portal-auth
|
|
195
|
+
poolbot models auth login --provider qwen-portal --set-default
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
Model refs:
|
|
@@ -208,7 +208,7 @@ Synthetic provides Anthropic-compatible models behind the `synthetic` provider:
|
|
|
208
208
|
- Provider: `synthetic`
|
|
209
209
|
- Auth: `SYNTHETIC_API_KEY`
|
|
210
210
|
- Example model: `synthetic/hf:MiniMaxAI/MiniMax-M2.1`
|
|
211
|
-
- CLI: `
|
|
211
|
+
- CLI: `poolbot onboard --auth-choice synthetic-api-key`
|
|
212
212
|
|
|
213
213
|
```json5
|
|
214
214
|
{
|
|
@@ -299,7 +299,7 @@ Example (OpenAI‑compatible):
|
|
|
299
299
|
|
|
300
300
|
Notes:
|
|
301
301
|
- For custom providers, `reasoning`, `input`, `cost`, `contextWindow`, and `maxTokens` are optional.
|
|
302
|
-
When omitted,
|
|
302
|
+
When omitted, Pool Bot defaults to:
|
|
303
303
|
- `reasoning: false`
|
|
304
304
|
- `input: ["text"]`
|
|
305
305
|
- `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }`
|
|
@@ -310,9 +310,9 @@ Notes:
|
|
|
310
310
|
## CLI examples
|
|
311
311
|
|
|
312
312
|
```bash
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
313
|
+
poolbot onboard --auth-choice opencode-zen
|
|
314
|
+
poolbot models set opencode/claude-opus-4-5
|
|
315
|
+
poolbot models list
|
|
316
316
|
```
|
|
317
317
|
|
|
318
318
|
See also: [/gateway/configuration](/gateway/configuration) for full configuration examples.
|
package/docs/concepts/models.md
CHANGED
|
@@ -13,7 +13,7 @@ Quick provider overview + examples: [/concepts/model-providers](/concepts/model-
|
|
|
13
13
|
|
|
14
14
|
## How model selection works
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Pool Bot selects models in this order:
|
|
17
17
|
|
|
18
18
|
1) **Primary** model (`agents.defaults.model.primary` or `agents.defaults.model`).
|
|
19
19
|
2) **Fallbacks** in `agents.defaults.model.fallbacks` (in order).
|
|
@@ -21,7 +21,7 @@ Clawdbot selects models in this order:
|
|
|
21
21
|
next model.
|
|
22
22
|
|
|
23
23
|
Related:
|
|
24
|
-
- `agents.defaults.models` is the allowlist/catalog of models
|
|
24
|
+
- `agents.defaults.models` is the allowlist/catalog of models Pool Bot can use (plus aliases).
|
|
25
25
|
- `agents.defaults.imageModel` is used **only when** the primary model can’t accept images.
|
|
26
26
|
- Per-agent defaults can override `agents.defaults.model` via `agents.list[].model` plus bindings (see [/concepts/multi-agent](/concepts/multi-agent)).
|
|
27
27
|
|
|
@@ -35,7 +35,7 @@ Related:
|
|
|
35
35
|
If you don’t want to hand-edit config, run the onboarding wizard:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
38
|
+
poolbot onboard
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
It can set up model + auth for common providers, including **OpenAI Code (Codex)
|
|
@@ -59,7 +59,7 @@ Provider configuration examples (including OpenCode Zen) live in
|
|
|
59
59
|
|
|
60
60
|
If `agents.defaults.models` is set, it becomes the **allowlist** for `/model` and for
|
|
61
61
|
session overrides. When a user selects a model that isn’t in that allowlist,
|
|
62
|
-
|
|
62
|
+
Pool Bot returns:
|
|
63
63
|
|
|
64
64
|
```
|
|
65
65
|
Model "provider/model" is not allowed. Use /model to list available models.
|
|
@@ -104,34 +104,34 @@ Notes:
|
|
|
104
104
|
- `/model status` is the detailed view (auth candidates and, when configured, provider endpoint `baseUrl` + `api` mode).
|
|
105
105
|
- Model refs are parsed by splitting on the **first** `/`. Use `provider/model` when typing `/model <ref>`.
|
|
106
106
|
- If the model ID itself contains `/` (OpenRouter-style), you must include the provider prefix (example: `/model openrouter/moonshotai/kimi-k2`).
|
|
107
|
-
- If you omit the provider,
|
|
107
|
+
- If you omit the provider, Pool Bot treats the input as an alias or a model for the **default provider** (only works when there is no `/` in the model ID).
|
|
108
108
|
|
|
109
109
|
Full command behavior/config: [Slash commands](/tools/slash-commands).
|
|
110
110
|
|
|
111
111
|
## CLI commands
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
114
|
+
poolbot models list
|
|
115
|
+
poolbot models status
|
|
116
|
+
poolbot models set <provider/model>
|
|
117
|
+
poolbot models set-image <provider/model>
|
|
118
|
+
|
|
119
|
+
poolbot models aliases list
|
|
120
|
+
poolbot models aliases add <alias> <provider/model>
|
|
121
|
+
poolbot models aliases remove <alias>
|
|
122
|
+
|
|
123
|
+
poolbot models fallbacks list
|
|
124
|
+
poolbot models fallbacks add <provider/model>
|
|
125
|
+
poolbot models fallbacks remove <provider/model>
|
|
126
|
+
poolbot models fallbacks clear
|
|
127
|
+
|
|
128
|
+
poolbot models image-fallbacks list
|
|
129
|
+
poolbot models image-fallbacks add <provider/model>
|
|
130
|
+
poolbot models image-fallbacks remove <provider/model>
|
|
131
|
+
poolbot models image-fallbacks clear
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
`
|
|
134
|
+
`poolbot models` (no subcommand) is a shortcut for `models status`.
|
|
135
135
|
|
|
136
136
|
### `models list`
|
|
137
137
|
|
|
@@ -159,12 +159,12 @@ Preferred Anthropic auth is the Claude Code CLI setup-token (run anywhere; paste
|
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
161
|
claude setup-token
|
|
162
|
-
|
|
162
|
+
poolbot models status
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
## Scanning (OpenRouter free models)
|
|
166
166
|
|
|
167
|
-
`
|
|
167
|
+
`poolbot models scan` inspects OpenRouter’s **free model catalog** and can
|
|
168
168
|
optionally probe models for tool and image support.
|
|
169
169
|
|
|
170
170
|
Key flags:
|
|
@@ -198,5 +198,5 @@ mode, pass `--yes` to accept defaults.
|
|
|
198
198
|
## Models registry (`models.json`)
|
|
199
199
|
|
|
200
200
|
Custom providers in `models.providers` are written into `models.json` under the
|
|
201
|
-
agent directory (default `~/.
|
|
201
|
+
agent directory (default `~/.poolbot/agents/<agentId>/models.json`). This file
|
|
202
202
|
is merged by default unless `models.mode` is set to `replace`.
|
|
@@ -15,12 +15,12 @@ An **agent** is a fully scoped brain with its own:
|
|
|
15
15
|
|
|
16
16
|
- **Workspace** (files, AGENTS.md/SOUL.md/USER.md, local notes, persona rules).
|
|
17
17
|
- **State directory** (`agentDir`) for auth profiles, model registry, and per-agent config.
|
|
18
|
-
- **Session store** (chat history + routing state) under `~/.
|
|
18
|
+
- **Session store** (chat history + routing state) under `~/.poolbot/agents/<agentId>/sessions`.
|
|
19
19
|
|
|
20
20
|
Auth profiles are **per-agent**. Each agent reads from its own:
|
|
21
21
|
|
|
22
22
|
```
|
|
23
|
-
~/.
|
|
23
|
+
~/.poolbot/agents/<agentId>/agent/auth-profiles.json
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Main agent credentials are **not** shared automatically. Never reuse `agentDir`
|
|
@@ -28,7 +28,7 @@ across agents (it causes auth/session collisions). If you want to share creds,
|
|
|
28
28
|
copy `auth-profiles.json` into the other agent's `agentDir`.
|
|
29
29
|
|
|
30
30
|
Skills are per-agent via each workspace’s `skills/` folder, with shared skills
|
|
31
|
-
available from `~/.
|
|
31
|
+
available from `~/.poolbot/skills`. See [Skills: per-agent vs shared](/tools/skills#per-agent-vs-shared-skills).
|
|
32
32
|
|
|
33
33
|
The Gateway can host **one agent** (default) or **many agents** side-by-side.
|
|
34
34
|
|
|
@@ -39,27 +39,27 @@ reach other host locations unless sandboxing is enabled. See
|
|
|
39
39
|
|
|
40
40
|
## Paths (quick map)
|
|
41
41
|
|
|
42
|
-
- Config: `~/.
|
|
43
|
-
- State dir: `~/.
|
|
42
|
+
- Config: `~/.poolbot/poolbot.json` (or `CLAWDBOT_CONFIG_PATH`)
|
|
43
|
+
- State dir: `~/.poolbot` (or `CLAWDBOT_STATE_DIR`)
|
|
44
44
|
- Workspace: `~/clawd` (or `~/clawd-<agentId>`)
|
|
45
|
-
- Agent dir: `~/.
|
|
46
|
-
- Sessions: `~/.
|
|
45
|
+
- Agent dir: `~/.poolbot/agents/<agentId>/agent` (or `agents.list[].agentDir`)
|
|
46
|
+
- Sessions: `~/.poolbot/agents/<agentId>/sessions`
|
|
47
47
|
|
|
48
48
|
### Single-agent mode (default)
|
|
49
49
|
|
|
50
|
-
If you do nothing,
|
|
50
|
+
If you do nothing, Pool Bot runs a single agent:
|
|
51
51
|
|
|
52
52
|
- `agentId` defaults to **`main`**.
|
|
53
53
|
- Sessions are keyed as `agent:main:<mainKey>`.
|
|
54
54
|
- Workspace defaults to `~/clawd` (or `~/clawd-<profile>` when `CLAWDBOT_PROFILE` is set).
|
|
55
|
-
- State defaults to `~/.
|
|
55
|
+
- State defaults to `~/.poolbot/agents/main/agent`.
|
|
56
56
|
|
|
57
57
|
## Agent helper
|
|
58
58
|
|
|
59
59
|
Use the agent wizard to add a new isolated agent:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
poolbot agents add work
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
Then add `bindings` (or let the wizard do it) to route inbound messages.
|
|
@@ -67,7 +67,7 @@ Then add `bindings` (or let the wizard do it) to route inbound messages.
|
|
|
67
67
|
Verify with:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
poolbot agents list --bindings
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
## Multiple agents = multiple people, multiple personalities
|
|
@@ -139,7 +139,7 @@ multiple phone numbers without mixing sessions.
|
|
|
139
139
|
|
|
140
140
|
## Example: two WhatsApps → two agents
|
|
141
141
|
|
|
142
|
-
`~/.
|
|
142
|
+
`~/.poolbot/poolbot.json` (JSON5):
|
|
143
143
|
|
|
144
144
|
```js
|
|
145
145
|
{
|
|
@@ -150,13 +150,13 @@ multiple phone numbers without mixing sessions.
|
|
|
150
150
|
default: true,
|
|
151
151
|
name: "Home",
|
|
152
152
|
workspace: "~/clawd-home",
|
|
153
|
-
agentDir: "~/.
|
|
153
|
+
agentDir: "~/.poolbot/agents/home/agent",
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
id: "work",
|
|
157
157
|
name: "Work",
|
|
158
158
|
workspace: "~/clawd-work",
|
|
159
|
-
agentDir: "~/.
|
|
159
|
+
agentDir: "~/.poolbot/agents/work/agent",
|
|
160
160
|
},
|
|
161
161
|
],
|
|
162
162
|
},
|
|
@@ -189,12 +189,12 @@ multiple phone numbers without mixing sessions.
|
|
|
189
189
|
whatsapp: {
|
|
190
190
|
accounts: {
|
|
191
191
|
personal: {
|
|
192
|
-
// Optional override. Default: ~/.
|
|
193
|
-
// authDir: "~/.
|
|
192
|
+
// Optional override. Default: ~/.poolbot/credentials/whatsapp/personal
|
|
193
|
+
// authDir: "~/.poolbot/credentials/whatsapp/personal",
|
|
194
194
|
},
|
|
195
195
|
biz: {
|
|
196
|
-
// Optional override. Default: ~/.
|
|
197
|
-
// authDir: "~/.
|
|
196
|
+
// Optional override. Default: ~/.poolbot/credentials/whatsapp/biz
|
|
197
|
+
// authDir: "~/.poolbot/credentials/whatsapp/biz",
|
|
198
198
|
},
|
|
199
199
|
},
|
|
200
200
|
},
|
package/docs/concepts/oauth.md
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "OAuth in
|
|
2
|
+
summary: "OAuth in Pool Bot: token exchange, storage, and multi-account patterns"
|
|
3
3
|
read_when:
|
|
4
|
-
- You want to understand
|
|
4
|
+
- You want to understand Pool Bot OAuth end-to-end
|
|
5
5
|
- You hit token invalidation / logout issues
|
|
6
|
-
- You want
|
|
6
|
+
- You want setup-token or OAuth auth flows
|
|
7
7
|
- You want multiple accounts or profile routing
|
|
8
8
|
---
|
|
9
9
|
# OAuth
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Pool Bot supports “subscription auth” via OAuth for providers that offer it (notably **OpenAI Codex (ChatGPT OAuth)**). For Anthropic subscriptions, use the **setup-token** flow. This page explains:
|
|
12
12
|
|
|
13
13
|
- how the OAuth **token exchange** works (PKCE)
|
|
14
14
|
- where tokens are **stored** (and why)
|
|
15
|
-
- how we **reuse external CLI tokens** (Claude Code / Codex CLI)
|
|
16
15
|
- how to handle **multiple accounts** (profiles + per-session overrides)
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
Pool Bot also supports **provider plugins** that ship their own OAuth or API‑key
|
|
19
18
|
flows. Run them via:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
|
|
21
|
+
poolbot models auth login --provider <id>
|
|
23
22
|
```
|
|
24
23
|
|
|
25
24
|
## The token sink (why it exists)
|
|
@@ -27,66 +26,57 @@ clawdbot models auth login --provider <id>
|
|
|
27
26
|
OAuth providers commonly mint a **new refresh token** during login/refresh flows. Some providers (or OAuth clients) can invalidate older refresh tokens when a new one is issued for the same user/app.
|
|
28
27
|
|
|
29
28
|
Practical symptom:
|
|
30
|
-
- you log in via
|
|
29
|
+
- you log in via Pool Bot *and* via Claude Code / Codex CLI → one of them randomly gets “logged out” later
|
|
31
30
|
|
|
32
|
-
To reduce that,
|
|
31
|
+
To reduce that, Pool Bot treats `auth-profiles.json` as a **token sink**:
|
|
33
32
|
- the runtime reads credentials from **one place**
|
|
34
|
-
- we can **sync in** credentials from external CLIs instead of doing a second login
|
|
35
33
|
- we can keep multiple profiles and route them deterministically
|
|
36
34
|
|
|
37
35
|
## Storage (where tokens live)
|
|
38
36
|
|
|
39
37
|
Secrets are stored **per-agent**:
|
|
40
38
|
|
|
41
|
-
- Auth profiles (OAuth + API keys): `~/.
|
|
42
|
-
- Runtime cache (managed automatically; don’t edit): `~/.
|
|
39
|
+
- Auth profiles (OAuth + API keys): `~/.poolbot/agents/<agentId>/agent/auth-profiles.json`
|
|
40
|
+
- Runtime cache (managed automatically; don’t edit): `~/.poolbot/agents/<agentId>/agent/auth.json`
|
|
43
41
|
|
|
44
42
|
Legacy import-only file (still supported, but not the main store):
|
|
45
|
-
- `~/.
|
|
43
|
+
- `~/.poolbot/credentials/oauth.json` (imported into `auth-profiles.json` on first use)
|
|
46
44
|
|
|
47
45
|
All of the above also respect `$CLAWDBOT_STATE_DIR` (state dir override). Full reference: [/gateway/configuration](/gateway/configuration#auth-storage-oauth--api-keys)
|
|
48
46
|
|
|
49
|
-
##
|
|
47
|
+
## Anthropic setup-token (subscription auth)
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
Run `claude setup-token` on any machine, then paste it into Pool Bot:
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- Codex CLI: reads `~/.codex/auth.json` → profile `openai-codex:codex-cli`
|
|
57
|
-
|
|
58
|
-
Sync happens when Clawdbot loads the auth store (so it stays up-to-date when the CLIs refresh tokens).
|
|
59
|
-
On macOS, the first read may trigger a Keychain prompt; run `clawdbot models status`
|
|
60
|
-
in a terminal once if the Gateway runs headless and can’t access the entry.
|
|
51
|
+
```bash
|
|
52
|
+
poolbot models auth setup-token --provider anthropic
|
|
53
|
+
```
|
|
61
54
|
|
|
62
|
-
|
|
55
|
+
If you generated the token elsewhere, paste it manually:
|
|
63
56
|
|
|
64
57
|
```bash
|
|
65
|
-
|
|
66
|
-
clawdbot channels list
|
|
58
|
+
poolbot models auth paste-token --provider anthropic
|
|
67
59
|
```
|
|
68
60
|
|
|
69
|
-
|
|
61
|
+
Verify:
|
|
70
62
|
|
|
71
63
|
```bash
|
|
72
|
-
|
|
64
|
+
poolbot models status
|
|
73
65
|
```
|
|
74
66
|
|
|
75
67
|
## OAuth exchange (how login works)
|
|
76
68
|
|
|
77
|
-
|
|
69
|
+
Pool Bot’s interactive login flows are implemented in `@mariozechner/pi-ai` and wired into the wizards/commands.
|
|
78
70
|
|
|
79
|
-
### Anthropic (Claude Pro/Max)
|
|
71
|
+
### Anthropic (Claude Pro/Max) setup-token
|
|
80
72
|
|
|
81
|
-
Flow shape
|
|
73
|
+
Flow shape:
|
|
82
74
|
|
|
83
|
-
1)
|
|
84
|
-
2)
|
|
85
|
-
3)
|
|
86
|
-
4) exchange at `https://console.anthropic.com/v1/oauth/token`
|
|
87
|
-
5) store `{ access, refresh, expires }` under an auth profile
|
|
75
|
+
1) run `claude setup-token`
|
|
76
|
+
2) paste the token into Pool Bot
|
|
77
|
+
3) store as a token auth profile (no refresh)
|
|
88
78
|
|
|
89
|
-
The wizard path is `
|
|
79
|
+
The wizard path is `poolbot onboard` → auth choice `setup-token` (Anthropic).
|
|
90
80
|
|
|
91
81
|
### OpenAI Codex (ChatGPT OAuth)
|
|
92
82
|
|
|
@@ -99,7 +89,7 @@ Flow shape (PKCE):
|
|
|
99
89
|
5) exchange at `https://auth.openai.com/oauth/token`
|
|
100
90
|
6) extract `accountId` from the access token and store `{ access, refresh, expires, accountId }`
|
|
101
91
|
|
|
102
|
-
Wizard path is `
|
|
92
|
+
Wizard path is `poolbot onboard` → auth choice `openai-codex`.
|
|
103
93
|
|
|
104
94
|
## Refresh + expiry
|
|
105
95
|
|
|
@@ -111,23 +101,6 @@ At runtime:
|
|
|
111
101
|
|
|
112
102
|
The refresh flow is automatic; you generally don't need to manage tokens manually.
|
|
113
103
|
|
|
114
|
-
### Bidirectional sync with Claude Code
|
|
115
|
-
|
|
116
|
-
When Clawdbot refreshes an Anthropic OAuth token (profile `anthropic:claude-cli`), it **writes the new credentials back** to Claude Code's storage:
|
|
117
|
-
|
|
118
|
-
- **Linux/Windows**: updates `~/.claude/.credentials.json`
|
|
119
|
-
- **macOS**: updates Keychain item "Claude Code-credentials"
|
|
120
|
-
|
|
121
|
-
This ensures both tools stay in sync and neither gets "logged out" after the other refreshes.
|
|
122
|
-
|
|
123
|
-
**Why this matters for long-running agents:**
|
|
124
|
-
|
|
125
|
-
Anthropic OAuth tokens expire after a few hours. Without bidirectional sync:
|
|
126
|
-
1. Clawdbot refreshes the token → gets new access token
|
|
127
|
-
2. Claude Code still has the old token → gets logged out
|
|
128
|
-
|
|
129
|
-
With bidirectional sync, both tools always have the latest valid token, enabling autonomous operation for days or weeks without manual intervention.
|
|
130
|
-
|
|
131
104
|
## Multiple accounts (profiles) + routing
|
|
132
105
|
|
|
133
106
|
Two patterns:
|
|
@@ -137,8 +110,8 @@ Two patterns:
|
|
|
137
110
|
If you want “personal” and “work” to never interact, use isolated agents (separate sessions + credentials + workspace):
|
|
138
111
|
|
|
139
112
|
```bash
|
|
140
|
-
|
|
141
|
-
|
|
113
|
+
poolbot agents add work
|
|
114
|
+
poolbot agents add personal
|
|
142
115
|
```
|
|
143
116
|
|
|
144
117
|
Then configure auth per-agent (wizard) and route chats to the right agent.
|
|
@@ -155,7 +128,7 @@ Example (session override):
|
|
|
155
128
|
- `/model Opus@anthropic:work`
|
|
156
129
|
|
|
157
130
|
How to see what profile IDs exist:
|
|
158
|
-
- `
|
|
131
|
+
- `poolbot channels list --json` (shows `auth[]`)
|
|
159
132
|
|
|
160
133
|
Related docs:
|
|
161
134
|
- [/concepts/model-failover](/concepts/model-failover) (rotation + cooldown rules)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "How
|
|
2
|
+
summary: "How Pool Bot presence entries are produced, merged, and displayed"
|
|
3
3
|
read_when:
|
|
4
4
|
- Debugging the Instances tab
|
|
5
5
|
- Investigating duplicate or stale instance rows
|
|
@@ -7,7 +7,7 @@ read_when:
|
|
|
7
7
|
---
|
|
8
8
|
# Presence
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Pool Bot “presence” is a lightweight, best‑effort view of:
|
|
11
11
|
- the **Gateway** itself, and
|
|
12
12
|
- **clients connected to the Gateway** (mac app, WebChat, CLI, etc.)
|
|
13
13
|
|
package/docs/concepts/retry.md
CHANGED
|
@@ -18,7 +18,7 @@ Session pruning trims **old tool results** from the in-memory context right befo
|
|
|
18
18
|
## Smart defaults (Anthropic)
|
|
19
19
|
- **OAuth or setup-token** profiles: enable `cache-ttl` pruning and set heartbeat to `1h`.
|
|
20
20
|
- **API key** profiles: enable `cache-ttl` pruning, set heartbeat to `30m`, and default `cacheControlTtl` to `1h` on Anthropic models.
|
|
21
|
-
- If you set any of these values explicitly,
|
|
21
|
+
- If you set any of these values explicitly, Pool Bot does **not** override them.
|
|
22
22
|
|
|
23
23
|
## What this improves (cost + cache behavior)
|
|
24
24
|
- **Why prune:** Anthropic prompt caching only applies within the TTL. If a session goes idle past the TTL, the next request re-caches the full prompt unless you trim it first.
|