@poolzin/pool-bot 1.28.0 → 2026.1.26
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 +1123 -32
- package/README.md +37 -47
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +6 -5
- 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 +6 -2
- package/dist/agents/auth-profiles/doctor.js +1 -1
- package/dist/agents/auth-profiles/external-cli-sync.js +150 -5
- package/dist/agents/auth-profiles/oauth.js +7 -26
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/auth-profiles/store.js +13 -5
- package/dist/agents/bash-tools.shared.js +1 -8
- package/dist/agents/cli-backends.js +0 -8
- package/dist/agents/cli-runner/helpers.js +3 -3
- package/dist/agents/cli-runner.js +2 -2
- package/dist/agents/compaction.js +0 -3
- 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 +2 -7
- 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 +0 -22
- 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 +0 -5
- package/dist/agents/pi-embedded-runner/model.js +2 -2
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -10
- package/dist/agents/pi-embedded-runner/run.js +4 -4
- package/dist/agents/pi-embedded-runner/sandbox-info.js +4 -1
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-utils.js +1 -7
- package/dist/agents/pi-extensions/compaction-safeguard.js +3 -32
- package/dist/agents/pi-tools.js +15 -25
- package/dist/agents/pi-tools.policy.js +1 -34
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/sandbox/browser.js +7 -5
- package/dist/agents/sandbox/config.js +12 -0
- package/dist/agents/sandbox/constants.js +7 -7
- 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 +0 -68
- package/dist/agents/skills/config.js +8 -9
- package/dist/agents/skills/env-overrides.js +1 -1
- package/dist/agents/skills/frontmatter.js +14 -15
- 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 +32 -21
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.js +2 -8
- package/dist/agents/tools/browser-tool.js +79 -19
- package/dist/agents/tools/browser-tool.schema.js +2 -1
- package/dist/agents/tools/cron-tool.js +1 -44
- package/dist/agents/tools/discord-actions-guild.js +1 -5
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/message-tool.js +0 -1
- package/dist/agents/tools/sessions-send-helpers.js +2 -17
- package/dist/agents/tools/telegram-actions.js +1 -93
- package/dist/agents/tools/web-fetch.js +103 -123
- package/dist/agents/tools/web-search.js +7 -7
- package/dist/agents/workspace.js +0 -36
- package/dist/auto-reply/commands-registry.data.js +3 -68
- package/dist/auto-reply/commands-registry.js +11 -14
- package/dist/auto-reply/reply/agent-runner-execution.js +3 -21
- package/dist/auto-reply/reply/agent-runner-memory.js +0 -5
- 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 +5 -50
- package/dist/auto-reply/reply/commands-session.js +4 -4
- package/dist/auto-reply/reply/commands-tts.js +63 -61
- package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +1 -65
- package/dist/auto-reply/reply/followup-runner.js +0 -5
- package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
- package/dist/auto-reply/reply/get-reply-run.js +0 -4
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/history.js +0 -23
- package/dist/auto-reply/reply/reply-elevated.js +1 -1
- package/dist/auto-reply/reply/session-updates.js +1 -6
- package/dist/auto-reply/status.js +49 -141
- package/dist/browser/bridge-server.js +3 -1
- package/dist/browser/client-actions-core.js +7 -13
- package/dist/browser/client-actions-observe.js +8 -14
- package/dist/browser/client-actions-state.js +15 -21
- package/dist/browser/client-fetch.js +61 -74
- package/dist/browser/client.js +21 -19
- package/dist/browser/config.js +26 -13
- package/dist/browser/constants.js +1 -1
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/pw-session.js +4 -41
- 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 +0 -13
- package/dist/browser/routes/agent.debug.js +1 -1
- package/dist/browser/routes/basic.js +1 -0
- package/dist/browser/server-context.js +3 -3
- package/dist/browser/server.js +9 -7
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +1618 -1620
- package/dist/canvas-host/a2ui/index.html +28 -28
- package/dist/canvas-host/a2ui.js +19 -25
- package/dist/canvas-host/server.js +32 -66
- package/dist/channels/plugins/actions/discord/handle-action.guild-admin.js +1 -5
- package/dist/channels/plugins/actions/telegram.js +7 -60
- package/dist/channels/plugins/catalog.js +4 -6
- package/dist/channels/plugins/group-mentions.js +1 -48
- package/dist/channels/plugins/helpers.js +2 -2
- package/dist/channels/plugins/message-action-names.js +0 -1
- 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 +9 -17
- package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
- package/dist/channels/plugins/outbound/telegram.js +0 -38
- 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 +7 -14
- package/dist/cli/banner.js +1 -3
- package/dist/cli/browser-cli-actions-input/register.element.js +44 -72
- package/dist/cli/browser-cli-actions-input/register.files-downloads.js +35 -55
- package/dist/cli/browser-cli-actions-input/register.form-wait-eval.js +28 -41
- package/dist/cli/browser-cli-actions-input/register.navigation.js +14 -23
- package/dist/cli/browser-cli-actions-input/shared.js +3 -10
- package/dist/cli/browser-cli-actions-observe.js +21 -29
- package/dist/cli/browser-cli-debug.js +35 -49
- 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 +17 -23
- package/dist/cli/browser-cli-manage.js +56 -106
- package/dist/cli/browser-cli-shared.js +1 -34
- package/dist/cli/browser-cli-state.cookies-storage.js +39 -53
- package/dist/cli/browser-cli-state.js +64 -90
- package/dist/cli/browser-cli.js +5 -4
- package/dist/cli/channels-cli.js +1 -1
- package/dist/cli/command-format.js +7 -11
- 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 +3 -5
- 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 +8 -11
- 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 +1 -3
- package/dist/cli/nodes-canvas.js +1 -3
- 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 +1 -1
- package/dist/cli/program/config-guard.js +1 -1
- package/dist/cli/program/help.js +14 -13
- package/dist/cli/program/message/register.send.js +1 -2
- package/dist/cli/program/preaction.js +2 -4
- 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 +3 -5
- 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 +4 -11
- package/dist/cli/sandbox-cli.js +19 -19
- package/dist/cli/security-cli.js +8 -18
- 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 +42 -58
- package/dist/cli/webhooks-cli.js +6 -6
- package/dist/commands/agent-via-gateway.js +1 -1
- package/dist/commands/agent.js +1 -2
- package/dist/commands/agents.command-shared.js +1 -1
- package/dist/commands/agents.commands.add.js +3 -2
- package/dist/commands/agents.commands.list.js +1 -1
- package/dist/commands/auth-choice-options.js +54 -4
- package/dist/commands/auth-choice.apply.anthropic.js +109 -6
- package/dist/commands/auth-choice.apply.openai.js +33 -1
- 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 +8 -1
- package/dist/commands/configure.gateway.js +10 -1
- 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 +3 -122
- 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-security.js +1 -48
- 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 +12 -13
- package/dist/commands/gateway-status.js +2 -2
- package/dist/commands/models/auth.js +22 -23
- 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 +9 -8
- 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 +34 -38
- package/dist/commands/onboard-non-interactive/local/gateway-config.js +4 -7
- 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 +4 -25
- 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 +3 -3
- package/dist/config/config.js +1 -1
- package/dist/config/group-policy.js +0 -69
- package/dist/config/io.js +5 -17
- package/dist/config/legacy.migrations.part-3.js +0 -3
- package/dist/config/logging.js +3 -3
- package/dist/config/paths.js +13 -43
- package/dist/config/schema.js +9 -21
- package/dist/config/sessions/transcript.js +1 -1
- package/dist/config/validation.js +2 -2
- package/dist/config/version.js +4 -4
- package/dist/config/zod-schema.agent-defaults.js +0 -1
- package/dist/config/zod-schema.agent-runtime.js +7 -39
- package/dist/config/zod-schema.hooks.js +0 -2
- package/dist/config/zod-schema.js +3 -9
- package/dist/config/zod-schema.providers-core.js +0 -23
- package/dist/config/zod-schema.providers-whatsapp.js +0 -3
- package/dist/control-ui/assets/{index-HlBhZmfj.js → index-Cl-Y9zqE.js} +578 -620
- package/dist/control-ui/assets/index-Cl-Y9zqE.js.map +1 -0
- package/dist/control-ui/assets/index-DEPfFcOb.css +1 -0
- package/dist/control-ui/index.html +4 -4
- package/dist/cron/isolated-agent/run.js +3 -38
- package/dist/daemon/constants.js +12 -12
- package/dist/daemon/inspect.js +11 -11
- 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 +1 -25
- package/dist/discord/monitor/native-command.js +5 -7
- package/dist/discord/monitor/provider.js +7 -21
- package/dist/entry.js +4 -4
- package/dist/gateway/auth.js +19 -52
- package/dist/gateway/hooks-mapping.js +4 -18
- package/dist/gateway/hooks.js +7 -5
- package/dist/gateway/http-utils.js +5 -3
- 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 +0 -1
- package/dist/gateway/server/ws-connection/message-handler.js +35 -44
- package/dist/gateway/server-browser.js +3 -14
- package/dist/gateway/server-chat.js +2 -28
- package/dist/gateway/server-discovery-runtime.js +17 -25
- package/dist/gateway/server-discovery.js +5 -5
- package/dist/gateway/server-http.js +3 -9
- package/dist/gateway/server-methods/agent.js +0 -2
- package/dist/gateway/server-methods/chat.js +0 -5
- 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 +0 -1
- package/dist/gateway/server-methods.js +0 -3
- package/dist/gateway/server-plugins.js +2 -2
- package/dist/gateway/server-restart-sentinel.js +5 -10
- package/dist/gateway/server-runtime-config.js +2 -5
- package/dist/gateway/server.impl.js +6 -7
- package/dist/gateway/session-utils.js +11 -31
- package/dist/gateway/test-helpers.mocks.js +5 -5
- package/dist/gateway/test-helpers.server.js +9 -28
- package/dist/gateway/tools-invoke-http.js +8 -15
- package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
- package/dist/hooks/bundled/command-logger/HOOK.md +5 -5
- 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 +7 -8
- package/dist/hooks/frontmatter.js +15 -16
- package/dist/hooks/gmail-ops.js +4 -4
- package/dist/hooks/hooks-status.js +13 -13
- package/dist/hooks/install.js +7 -8
- 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 +9 -10
- package/dist/imessage/monitor/monitor-provider.js +2 -2
- package/dist/index.js +4 -4
- package/dist/infra/agent-events.js +0 -3
- package/dist/infra/bonjour-discovery.js +9 -9
- package/dist/infra/bonjour.js +12 -19
- package/dist/infra/gateway-lock.js +1 -1
- package/dist/infra/heartbeat-visibility.js +0 -14
- package/dist/infra/heartbeat-wake.js +2 -2
- package/dist/infra/machine-name.js +1 -1
- package/dist/infra/net/ssrf.js +1 -77
- package/dist/infra/outbound/message-action-spec.js +0 -1
- package/dist/infra/outbound/targets.js +1 -1
- package/dist/infra/path-env.js +7 -7
- package/dist/infra/ports-format.js +2 -2
- package/dist/infra/ports.js +2 -2
- package/dist/infra/provider-usage.auth.js +4 -2
- 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 +1 -4
- 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 +1 -63
- package/dist/infra/tls/gateway.js +1 -1
- package/dist/infra/unhandled-rejections.js +2 -89
- package/dist/infra/update-check.js +4 -2
- package/dist/infra/update-global.js +5 -5
- package/dist/infra/update-runner.js +8 -32
- 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 +5 -1
- package/dist/line/webhook.js +6 -2
- 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 +32 -40
- package/dist/media/server.js +15 -39
- package/dist/media/store.js +52 -72
- package/dist/media-understanding/attachments.js +1 -1
- package/dist/media-understanding/providers/image.js +2 -2
- package/dist/media-understanding/runner.js +1 -33
- 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 +56 -60
- package/dist/pairing/pairing-messages.js +2 -2
- package/dist/plugin-sdk/index.js +0 -1
- package/dist/plugins/cli.js +2 -2
- package/dist/plugins/discovery.js +4 -5
- package/dist/plugins/install.js +7 -8
- package/dist/plugins/loader.js +4 -11
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/plugins/manifest.js +1 -16
- 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 +12 -17
- package/dist/security/audit-extra.js +69 -116
- package/dist/security/audit-fs.js +0 -78
- package/dist/security/audit.js +88 -121
- package/dist/security/fix.js +8 -93
- package/dist/slack/monitor/media.js +4 -32
- package/dist/slack/monitor/message-handler/dispatch.js +1 -2
- package/dist/slack/monitor/slash.js +3 -3
- package/dist/slack/monitor.test-helpers.js +1 -1
- package/dist/telegram/bot/delivery.js +22 -139
- package/dist/telegram/bot-handlers.js +8 -70
- package/dist/telegram/bot-message-context.js +21 -79
- package/dist/telegram/bot-message-dispatch.js +0 -64
- package/dist/telegram/bot-native-commands.js +94 -244
- package/dist/telegram/bot.js +2 -18
- package/dist/telegram/fetch.js +1 -25
- package/dist/telegram/monitor.js +3 -11
- package/dist/telegram/send.js +4 -148
- package/dist/telegram/webhook-set.js +6 -13
- package/dist/telegram/webhook.js +3 -8
- package/dist/terminal/links.js +1 -1
- package/dist/tts/tts.js +22 -27
- package/dist/tui/components/filterable-select-list.js +1 -1
- package/dist/tui/components/searchable-select-list.js +1 -2
- package/dist/tui/gateway-chat.js +1 -1
- package/dist/tui/tui.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 +14 -14
- package/dist/wizard/onboarding.gateway-config.js +11 -1
- package/dist/wizard/onboarding.js +10 -21
- package/docs/CNAME +1 -1
- package/docs/POOL-BOT.md +119 -0
- package/docs/_config.yml +2 -2
- package/docs/_layouts/default.html +9 -9
- package/docs/assets/terminal.css +0 -3
- package/docs/assets/theme.js +1 -1
- package/docs/automation/auth-monitoring.md +7 -7
- package/docs/automation/cron-jobs.md +13 -13
- package/docs/automation/cron-vs-heartbeat.md +8 -8
- package/docs/automation/gmail-pubsub.md +21 -23
- package/docs/automation/poll.md +6 -6
- package/docs/automation/webhook.md +8 -13
- package/docs/bedrock.md +10 -10
- package/docs/brave-search.md +1 -1
- package/docs/broadcast-groups.md +3 -3
- package/docs/channels/bluebubbles.md +12 -13
- package/docs/channels/discord.md +16 -21
- package/docs/channels/googlechat.md +15 -15
- package/docs/channels/imessage.md +10 -10
- package/docs/channels/index.md +4 -6
- package/docs/channels/location.md +1 -1
- package/docs/channels/matrix.md +13 -13
- package/docs/channels/mattermost.md +8 -8
- package/docs/channels/msteams.md +25 -29
- 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 +13 -15
- package/docs/channels/telegram.md +20 -149
- package/docs/channels/tlon.md +5 -5
- package/docs/channels/troubleshooting.md +2 -2
- package/docs/channels/whatsapp.md +23 -23
- 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 +13 -13
- package/docs/cli/browser.md +35 -33
- 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 +28 -28
- package/docs/cli/index.md +50 -44
- 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 +12 -12
- package/docs/cli/nodes.md +14 -14
- package/docs/cli/onboard.md +6 -7
- 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 +11 -11
- package/docs/concepts/agent.md +10 -10
- package/docs/concepts/architecture.md +1 -1
- package/docs/concepts/channel-routing.md +2 -2
- package/docs/concepts/compaction.md +5 -5
- package/docs/concepts/context.md +6 -6
- package/docs/concepts/group-messages.md +5 -5
- package/docs/concepts/groups.md +5 -41
- package/docs/concepts/markdown-formatting.md +3 -3
- package/docs/concepts/memory.md +12 -12
- package/docs/concepts/messages.md +4 -4
- package/docs/concepts/model-failover.md +11 -11
- package/docs/concepts/model-providers.md +22 -22
- package/docs/concepts/models.md +26 -26
- package/docs/concepts/multi-agent.md +5 -5
- package/docs/concepts/oauth.md +55 -28
- 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 +11 -11
- 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 +9 -9
- package/docs/diagnostics/flags.md +5 -5
- package/docs/docs.json +7 -37
- package/docs/environment.md +3 -3
- 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 +54 -30
- 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 +12 -13
- package/docs/gateway/configuration-examples.md +10 -10
- package/docs/gateway/configuration.md +107 -120
- package/docs/gateway/discovery.md +6 -6
- package/docs/gateway/doctor.md +21 -21
- package/docs/gateway/gateway-lock.md +1 -1
- package/docs/gateway/health.md +9 -9
- package/docs/gateway/heartbeat.md +5 -5
- package/docs/gateway/index.md +51 -51
- package/docs/gateway/local-models.md +2 -2
- package/docs/gateway/logging.md +8 -8
- package/docs/gateway/multiple-gateways.md +19 -19
- package/docs/gateway/openai-http-api.md +10 -10
- package/docs/gateway/openresponses-http-api.md +10 -10
- package/docs/gateway/pairing.md +5 -5
- package/docs/gateway/protocol.md +4 -5
- package/docs/gateway/remote-gateway-readme.md +8 -8
- package/docs/gateway/remote.md +4 -4
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +7 -10
- package/docs/gateway/sandboxing.md +5 -7
- package/docs/gateway/{security/index.md → security.md} +63 -143
- package/docs/gateway/tailscale.md +35 -16
- package/docs/gateway/tools-invoke-http-api.md +3 -3
- package/docs/gateway/troubleshooting.md +106 -101
- package/docs/help/faq.md +312 -303
- package/docs/help/troubleshooting.md +15 -15
- package/docs/hooks/soul-evil.md +2 -2
- package/docs/hooks.md +44 -44
- package/docs/index.md +33 -33
- package/docs/install/ansible.md +35 -35
- package/docs/install/development-channels.md +10 -10
- package/docs/install/docker.md +27 -27
- package/docs/install/index.md +27 -28
- package/docs/install/installer.md +21 -21
- package/docs/install/nix.md +16 -16
- package/docs/install/node.md +6 -7
- package/docs/install/uninstall.md +21 -21
- package/docs/install/updating.md +47 -48
- package/docs/logging.md +58 -58
- package/docs/multi-agent-sandbox-tools.md +5 -5
- 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 +50 -50
- 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 +1 -1
- package/docs/perplexity.md +2 -2
- package/docs/platforms/android.md +13 -13
- package/docs/platforms/exe-dev.md +23 -23
- package/docs/platforms/fly.md +18 -129
- package/docs/platforms/hetzner.md +20 -20
- package/docs/platforms/index.md +8 -8
- package/docs/platforms/ios.md +13 -13
- package/docs/platforms/linux.md +11 -11
- package/docs/platforms/mac/bundled-gateway.md +11 -11
- package/docs/platforms/mac/canvas.md +14 -14
- package/docs/platforms/mac/child-process.md +1 -1
- package/docs/platforms/mac/dev-setup.md +10 -10
- package/docs/platforms/mac/health.md +2 -2
- package/docs/platforms/mac/icon.md +1 -1
- package/docs/platforms/mac/logging.md +4 -4
- package/docs/platforms/mac/menu-bar.md +1 -1
- package/docs/platforms/mac/peekaboo.md +9 -9
- package/docs/platforms/mac/permissions.md +1 -1
- package/docs/platforms/mac/release.md +18 -18
- package/docs/platforms/mac/remote.md +14 -14
- package/docs/platforms/mac/signing.md +6 -6
- package/docs/platforms/mac/skills.md +2 -2
- package/docs/platforms/mac/webchat.md +1 -1
- package/docs/platforms/mac/xpc.md +4 -4
- package/docs/platforms/macos-vm.md +27 -27
- package/docs/platforms/macos.md +14 -14
- package/docs/platforms/windows.md +11 -11
- package/docs/plugin.md +57 -57
- package/docs/plugins/agent-tools.md +1 -1
- package/docs/plugins/manifest.md +4 -4
- package/docs/plugins/voice-call.md +12 -15
- package/docs/plugins/zalouser.md +9 -9
- package/docs/prose.md +9 -9
- package/docs/providers/anthropic.md +27 -23
- 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 +3 -7
- 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 +13 -9
- 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 +3 -4
- package/docs/providers/zai.md +5 -5
- package/docs/railway.mdx +5 -5
- package/docs/refactor/plugin-sdk.md +10 -10
- 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 +17 -17
- 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/scripts.md +1 -1
- package/docs/start/clawd.md +27 -27
- package/docs/start/getting-started.md +23 -29
- package/docs/start/hubs.md +2 -2
- package/docs/start/lore.md +38 -74
- package/docs/start/onboarding.md +4 -4
- package/docs/start/pairing.md +8 -8
- package/docs/start/setup.md +15 -28
- package/docs/start/showcase.md +32 -32
- package/docs/start/wizard.md +21 -24
- package/docs/testing.md +10 -10
- package/docs/token-use.md +7 -7
- package/docs/tools/agent-send.md +10 -10
- package/docs/tools/browser-linux-troubleshooting.md +8 -8
- package/docs/tools/browser-login.md +4 -4
- package/docs/tools/browser.md +241 -135
- package/docs/tools/chrome-extension.md +48 -31
- package/docs/tools/clawdhub.md +7 -7
- package/docs/tools/creating-skills.md +4 -4
- package/docs/tools/elevated.md +0 -1
- package/docs/tools/exec-approvals.md +2 -5
- package/docs/tools/exec.md +3 -14
- package/docs/tools/firecrawl.md +2 -2
- package/docs/tools/index.md +15 -18
- package/docs/tools/llm-task.md +1 -1
- package/docs/tools/lobster.md +11 -23
- package/docs/tools/skills-config.md +1 -1
- package/docs/tools/skills.md +21 -29
- package/docs/tools/slash-commands.md +8 -10
- package/docs/tools/web.md +6 -6
- package/docs/tts.md +9 -9
- package/docs/tui.md +7 -7
- package/docs/vps.md +1 -6
- package/docs/web/control-ui.md +12 -13
- package/docs/web/dashboard.md +4 -8
- package/docs/web/index.md +5 -6
- package/docs/web/webchat.md +1 -1
- package/extensions/bluebubbles/index.ts +2 -2
- package/extensions/bluebubbles/package.json +5 -5
- package/extensions/bluebubbles/src/accounts.ts +8 -8
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +5 -5
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +16 -16
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +49 -55
- package/extensions/bluebubbles/src/monitor.ts +5 -180
- package/extensions/bluebubbles/src/onboarding.ts +7 -7
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/package.json +4 -4
- package/extensions/diagnostics-otel/index.ts +2 -2
- package/extensions/diagnostics-otel/package.json +4 -4
- package/extensions/diagnostics-otel/src/service.test.ts +12 -12
- package/extensions/diagnostics-otel/src/service.ts +84 -84
- package/extensions/discord/index.ts +2 -2
- package/extensions/discord/package.json +4 -4
- package/extensions/google-antigravity-auth/index.ts +1 -8
- package/extensions/google-antigravity-auth/package.json +4 -4
- 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 +3 -3
- package/extensions/googlechat/package.json +7 -7
- package/extensions/googlechat/src/accounts.ts +8 -8
- package/extensions/googlechat/src/actions.ts +6 -6
- package/extensions/googlechat/src/api.ts +1 -1
- package/extensions/googlechat/src/channel.ts +21 -21
- package/extensions/googlechat/src/monitor.ts +8 -8
- package/extensions/googlechat/src/onboarding.ts +10 -10
- package/extensions/imessage/index.ts +2 -2
- package/extensions/imessage/package.json +4 -4
- package/extensions/line/index.ts +2 -2
- package/extensions/line/package.json +6 -6
- package/extensions/line/src/card-command.ts +2 -2
- 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 +4 -4
- 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 +6 -26
- package/extensions/lobster/src/lobster-tool.ts +6 -24
- package/extensions/matrix/CHANGELOG.md +9 -9
- package/extensions/matrix/index.ts +2 -2
- package/extensions/matrix/package.json +7 -7
- 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 +4 -4
- package/extensions/matrix/src/matrix/monitor/auto-join.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/direct.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/events.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/handler.ts +5 -5
- package/extensions/matrix/src/matrix/monitor/index.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/location.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/media.test.ts +2 -2
- package/extensions/matrix/src/matrix/monitor/media.ts +3 -3
- package/extensions/matrix/src/matrix/monitor/replies.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/room-info.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/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 +2 -2
- package/extensions/matrix/src/matrix/send.ts +3 -3
- package/extensions/matrix/src/onboarding.ts +2 -2
- package/extensions/matrix/src/types.ts +1 -1
- package/extensions/mattermost/index.ts +2 -2
- package/extensions/mattermost/package.json +5 -5
- package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
- package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
- package/extensions/mattermost/src/onboarding.ts +3 -3
- package/extensions/memory-core/index.ts +2 -2
- package/extensions/memory-core/package.json +5 -5
- package/extensions/memory-lancedb/index.test.ts +2 -2
- package/extensions/memory-lancedb/index.ts +3 -3
- package/extensions/memory-lancedb/package.json +4 -4
- package/extensions/msteams/CHANGELOG.md +7 -7
- package/extensions/msteams/index.ts +2 -2
- package/extensions/msteams/package.json +6 -6
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +2 -2
- package/extensions/msteams/src/conversation-store-fs.test.ts +1 -1
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +2 -2
- package/extensions/msteams/src/onboarding.ts +9 -9
- package/extensions/msteams/src/policy.ts +3 -48
- package/extensions/msteams/src/polls-store.test.ts +1 -1
- package/extensions/msteams/src/polls.test.ts +2 -2
- package/extensions/msteams/src/polls.ts +8 -8
- package/extensions/msteams/src/reply-dispatcher.ts +35 -35
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +4 -4
- package/extensions/nextcloud-talk/index.ts +2 -2
- package/extensions/nextcloud-talk/package.json +5 -5
- package/extensions/nextcloud-talk/src/channel.ts +7 -7
- package/extensions/nextcloud-talk/src/inbound.ts +7 -7
- package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
- package/extensions/nostr/CHANGELOG.md +4 -4
- package/extensions/nostr/index.ts +5 -5
- package/extensions/nostr/package.json +6 -6
- package/extensions/nostr/src/channel.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.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/signal/index.ts +2 -2
- package/extensions/signal/package.json +4 -4
- package/extensions/slack/index.ts +2 -2
- package/extensions/slack/package.json +4 -4
- package/extensions/telegram/index.ts +2 -2
- package/extensions/telegram/package.json +4 -4
- package/extensions/telegram/src/channel.ts +2 -2
- package/extensions/tlon/README.md +1 -1
- package/extensions/tlon/index.ts +2 -2
- package/extensions/tlon/package.json +5 -5
- package/extensions/tlon/src/channel.ts +13 -13
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +3 -3
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/tlon/src/urbit/send.ts +6 -19
- package/extensions/voice-call/CHANGELOG.md +12 -13
- package/extensions/voice-call/README.md +2 -3
- package/extensions/voice-call/clawdbot.plugin.json +3 -3
- package/extensions/voice-call/index.ts +9 -11
- package/extensions/voice-call/package.json +4 -4
- package/extensions/voice-call/src/cli.ts +1 -1
- package/extensions/voice-call/src/config.ts +4 -61
- package/extensions/voice-call/src/core-bridge.ts +8 -10
- package/extensions/voice-call/src/manager.test.ts +2 -2
- package/extensions/voice-call/src/providers/twilio/webhook.ts +1 -2
- 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 +15 -26
- package/extensions/voice-call/src/types.ts +0 -1
- package/extensions/voice-call/src/webhook-security.test.ts +0 -52
- package/extensions/voice-call/src/webhook-security.ts +5 -16
- package/extensions/voice-call/src/webhook.ts +0 -1
- package/extensions/whatsapp/index.ts +2 -2
- package/extensions/whatsapp/package.json +4 -4
- package/extensions/zalo/CHANGELOG.md +9 -9
- package/extensions/zalo/index.ts +2 -2
- package/extensions/zalo/package.json +6 -6
- package/extensions/zalo/src/accounts.ts +8 -8
- package/extensions/zalo/src/actions.ts +4 -4
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +18 -18
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +25 -25
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalouser/CHANGELOG.md +4 -4
- package/extensions/zalouser/index.ts +2 -2
- package/extensions/zalouser/package.json +6 -6
- package/extensions/zalouser/src/accounts.ts +9 -9
- package/extensions/zalouser/src/channel.ts +25 -25
- package/extensions/zalouser/src/monitor.ts +4 -4
- package/extensions/zalouser/src/onboarding.ts +30 -30
- package/extensions/zalouser/src/status-issues.ts +1 -1
- package/package.json +18 -17
- 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 +1 -1
- package/skills/camsnap/SKILL.md +1 -1
- package/skills/canvas/SKILL.md +15 -15
- package/skills/clawdhub/SKILL.md +2 -2
- package/skills/coding-agent/SKILL.md +6 -6
- package/skills/discord/SKILL.md +5 -6
- 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 +0 -1
- 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 +5 -10
- package/skills/nano-banana-pro/scripts/generate_image.py +27 -42
- 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/sag/SKILL.md +1 -1
- package/skills/session-logs/SKILL.md +1 -1
- package/skills/sherpa-onnx-tts/SKILL.md +2 -2
- package/skills/slack/SKILL.md +3 -4
- 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/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/LICENSE +0 -21
- package/dist/agents/moltbot-tools.js +0 -121
- package/dist/agents/pi-extensions/compaction-safeguard-runtime.js +0 -20
- package/dist/browser/control-service.js +0 -72
- package/dist/browser/routes/dispatcher.js +0 -86
- package/dist/browser/routes/types.js +0 -1
- package/dist/cli/cli-name.js +0 -26
- package/dist/compat/legacy-names.js +0 -5
- package/dist/control-ui/assets/index-CIRDm-Lu.css +0 -1
- package/dist/control-ui/assets/index-HlBhZmfj.js.map +0 -1
- package/dist/discord/monitor/presence-cache.js +0 -38
- package/dist/gateway/server-methods/browser.js +0 -204
- package/dist/infra/fs-safe.js +0 -76
- package/dist/infra/moltbot-root.js +0 -57
- package/dist/line/signature.js +0 -11
- package/dist/security/external-content.js +0 -143
- package/dist/security/windows-acl.js +0 -162
- package/dist/telegram/api-logging.js +0 -24
- package/dist/telegram/network-config.js +0 -23
- package/dist/telegram/network-errors.js +0 -103
- package/dist/telegram/sticker-cache.js +0 -202
- package/docs/channels/line.md +0 -183
- package/docs/channels/twitch.md +0 -366
- package/docs/gateway/security/formal-verification.md +0 -107
- package/docs/install/migrating.md +0 -190
- package/docs/northflank.mdx +0 -53
- package/docs/platforms/digitalocean.md +0 -243
- package/docs/platforms/gcp.md +0 -498
- package/docs/platforms/oracle.md +0 -291
- package/docs/platforms/raspberry-pi.md +0 -354
- package/docs/providers/claude-max-api-proxy.md +0 -145
- package/docs/render.mdx +0 -158
- package/docs/security/formal-verification.md +0 -107
- package/extensions/googlechat/node_modules/.bin/poolbot +0 -21
- package/extensions/line/node_modules/.bin/poolbot +0 -21
- package/extensions/matrix/node_modules/.bin/poolbot +0 -21
- package/extensions/memory-core/node_modules/.bin/poolbot +0 -21
- package/extensions/msteams/node_modules/.bin/poolbot +0 -21
- package/extensions/nostr/node_modules/.bin/poolbot +0 -21
- package/extensions/twitch/CHANGELOG.md +0 -21
- package/extensions/twitch/README.md +0 -89
- package/extensions/twitch/clawdbot.plugin.json +0 -9
- package/extensions/twitch/index.ts +0 -20
- package/extensions/twitch/node_modules/.bin/poolbot +0 -21
- package/extensions/twitch/package.json +0 -20
- package/extensions/twitch/src/access-control.test.ts +0 -489
- package/extensions/twitch/src/access-control.ts +0 -154
- package/extensions/twitch/src/actions.ts +0 -173
- package/extensions/twitch/src/client-manager-registry.ts +0 -115
- package/extensions/twitch/src/config-schema.ts +0 -82
- package/extensions/twitch/src/config.test.ts +0 -88
- package/extensions/twitch/src/config.ts +0 -116
- package/extensions/twitch/src/monitor.ts +0 -257
- package/extensions/twitch/src/onboarding.test.ts +0 -311
- package/extensions/twitch/src/onboarding.ts +0 -411
- package/extensions/twitch/src/outbound.test.ts +0 -373
- package/extensions/twitch/src/outbound.ts +0 -186
- package/extensions/twitch/src/plugin.test.ts +0 -39
- package/extensions/twitch/src/plugin.ts +0 -274
- package/extensions/twitch/src/probe.test.ts +0 -198
- package/extensions/twitch/src/probe.ts +0 -118
- package/extensions/twitch/src/resolver.ts +0 -137
- package/extensions/twitch/src/runtime.ts +0 -14
- package/extensions/twitch/src/send.test.ts +0 -289
- package/extensions/twitch/src/send.ts +0 -136
- package/extensions/twitch/src/status.test.ts +0 -270
- package/extensions/twitch/src/status.ts +0 -176
- package/extensions/twitch/src/token.test.ts +0 -171
- package/extensions/twitch/src/token.ts +0 -87
- package/extensions/twitch/src/twitch-client.test.ts +0 -574
- package/extensions/twitch/src/twitch-client.ts +0 -277
- package/extensions/twitch/src/types.ts +0 -141
- package/extensions/twitch/src/utils/markdown.ts +0 -92
- package/extensions/twitch/src/utils/twitch.ts +0 -78
- package/extensions/twitch/test/setup.ts +0 -7
- package/extensions/voice-call/src/config.test.ts +0 -204
- package/extensions/zalo/node_modules/.bin/poolbot +0 -21
- package/extensions/zalouser/node_modules/.bin/poolbot +0 -21
package/README.md
CHANGED
|
@@ -2,22 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
> Your AI pool of knowledge
|
|
4
4
|
|
|
5
|
-
**Pool Bot** is a professional AI assistant with advanced PLCODE integrations and development-focused features.
|
|
5
|
+
**Pool Bot** is a professional AI assistant built on the robust [Clawdbot](https://github.com/clawdbot/clawdbot) framework, customized with advanced PLCODE integrations and development-focused features.
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
9
|
## 🌟 What Makes Pool Bot Different
|
|
10
10
|
|
|
11
11
|
- 🎱 **PLCODE Integration** - Native support for coding workflows
|
|
12
|
-
- 🧠 **Enhanced Memory** - Advanced context management
|
|
12
|
+
- 🧠 **Enhanced Memory** - Advanced context management
|
|
13
13
|
- 🛠️ **Developer Tools** - Built for development teams
|
|
14
14
|
- 🔒 **Private & Secure** - Your data, your control
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
## Based on Clawdbot
|
|
17
|
+
|
|
18
|
+
Pool Bot is built on the excellent [Clawdbot](https://github.com/clawdbot/clawdbot) framework by Peter Steinberger (MIT License). We maintain compatibility with upstream updates while adding our own enhancements.
|
|
16
19
|
|
|
17
20
|
## Installation
|
|
18
21
|
|
|
19
22
|
```bash
|
|
20
|
-
npm install -g
|
|
23
|
+
npm install -g pool-bot
|
|
21
24
|
poolbot --help
|
|
22
25
|
```
|
|
23
26
|
|
|
@@ -46,38 +49,12 @@ poolbot status
|
|
|
46
49
|
|
|
47
50
|
## Documentation
|
|
48
51
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## Skills
|
|
52
|
-
|
|
53
|
-
Pool Bot supports an extensible skills system:
|
|
54
|
-
|
|
55
|
-
- 🎮 **WebGPU Three.js TSL** - 3D development with WebGPU
|
|
56
|
-
- 🔍 **GitHub Integration** - Issues, PRs, and CI management
|
|
57
|
-
- 🌦️ **Weather** - Current weather and forecasts
|
|
58
|
-
- 📧 **Notion** - Database and page management
|
|
59
|
-
- 🐦 **X/Twitter** - Social media engagement
|
|
60
|
-
- And more...
|
|
61
|
-
|
|
62
|
-
## Configuration
|
|
63
|
-
|
|
64
|
-
Pool Bot uses a profile-based configuration system:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# Use default profile
|
|
68
|
-
poolbot gateway start
|
|
69
|
-
|
|
70
|
-
# Use custom profile
|
|
71
|
-
poolbot --profile production gateway start
|
|
72
|
-
|
|
73
|
-
# Use dev profile (isolated state)
|
|
74
|
-
poolbot --dev gateway start
|
|
75
|
-
```
|
|
52
|
+
See [docs/](docs/) for full documentation, or visit the [Clawdbot docs](https://docs.clawd.bot) (most features are identical).
|
|
76
53
|
|
|
77
54
|
## Development
|
|
78
55
|
|
|
79
56
|
```bash
|
|
80
|
-
# Clone
|
|
57
|
+
# Clone the repo
|
|
81
58
|
git clone https://github.com/plcunha/pool-bot.git
|
|
82
59
|
cd pool-bot
|
|
83
60
|
|
|
@@ -87,26 +64,39 @@ pnpm install
|
|
|
87
64
|
# Build
|
|
88
65
|
pnpm build
|
|
89
66
|
|
|
90
|
-
# Run
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
# Start gateway
|
|
94
|
-
node dist/entry.js gateway
|
|
67
|
+
# Run locally
|
|
68
|
+
node dist/entry.js --help
|
|
95
69
|
```
|
|
96
70
|
|
|
97
|
-
##
|
|
71
|
+
## Staying Updated
|
|
72
|
+
|
|
73
|
+
Pool Bot maintains sync with upstream Clawdbot for bug fixes and new features:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
./sync-upstream.sh
|
|
77
|
+
```
|
|
98
78
|
|
|
99
|
-
|
|
100
|
-
- **GitHub Issues**: https://github.com/plcunha/pool-bot/issues
|
|
101
|
-
- **Community**: https://discord.com/invite/clawd
|
|
79
|
+
See [CUSTOM.md](CUSTOM.md) for details on customizations and merge strategy.
|
|
102
80
|
|
|
103
|
-
##
|
|
81
|
+
## Contributing
|
|
104
82
|
|
|
105
|
-
|
|
106
|
-
- Email: jvsantos.cunha@gmail.com
|
|
107
|
-
- GitHub: @plcunha
|
|
108
|
-
- Telegram: @poolzin
|
|
83
|
+
Pool Bot is a private fork for specific use cases. For contributions to the base framework, please see [Clawdbot](https://github.com/clawdbot/clawdbot).
|
|
109
84
|
|
|
110
85
|
## License
|
|
111
86
|
|
|
112
|
-
MIT License -
|
|
87
|
+
MIT License - Based on Clawdbot by Peter Steinberger
|
|
88
|
+
|
|
89
|
+
Copyright (c) 2025 Peter Steinberger (Clawdbot)
|
|
90
|
+
Copyright (c) 2026 João Vitor Cunha dos Santos (Pool Bot customizations)
|
|
91
|
+
|
|
92
|
+
See [LICENSE](LICENSE) for details.
|
|
93
|
+
|
|
94
|
+
## Credits
|
|
95
|
+
|
|
96
|
+
- **Original Framework:** [Clawdbot](https://github.com/clawdbot/clawdbot) by Peter Steinberger
|
|
97
|
+
- **Pool Bot Customizations:** João Vitor Cunha dos Santos (@plcunha)
|
|
98
|
+
- **PLCODE Integration:** Part of the PLCODE project
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
🎱 **Pool Bot** - Dive deep into intelligence
|
|
@@ -114,7 +114,7 @@ function onRelayClosed(reason) {
|
|
|
114
114
|
setBadge(tabId, 'connecting')
|
|
115
115
|
void chrome.action.setTitle({
|
|
116
116
|
tabId,
|
|
117
|
-
title: '
|
|
117
|
+
title: 'Clawdbot Browser Relay: disconnected (click to re-attach)',
|
|
118
118
|
})
|
|
119
119
|
}
|
|
120
120
|
tabs.clear()
|
|
@@ -225,7 +225,7 @@ async function attachTab(tabId, opts = {}) {
|
|
|
225
225
|
tabBySession.set(sessionId, tabId)
|
|
226
226
|
void chrome.action.setTitle({
|
|
227
227
|
tabId,
|
|
228
|
-
title: '
|
|
228
|
+
title: 'Clawdbot Browser Relay: attached (click to detach)',
|
|
229
229
|
})
|
|
230
230
|
|
|
231
231
|
if (!opts.skipAttachedEvent) {
|
|
@@ -278,7 +278,7 @@ async function detachTab(tabId, reason) {
|
|
|
278
278
|
setBadge(tabId, 'off')
|
|
279
279
|
void chrome.action.setTitle({
|
|
280
280
|
tabId,
|
|
281
|
-
title: '
|
|
281
|
+
title: 'Clawdbot Browser Relay (click to attach/detach)',
|
|
282
282
|
})
|
|
283
283
|
}
|
|
284
284
|
|
|
@@ -297,7 +297,7 @@ async function connectOrToggleForActiveTab() {
|
|
|
297
297
|
setBadge(tabId, 'connecting')
|
|
298
298
|
void chrome.action.setTitle({
|
|
299
299
|
tabId,
|
|
300
|
-
title: '
|
|
300
|
+
title: 'Clawdbot Browser Relay: connecting to local relay…',
|
|
301
301
|
})
|
|
302
302
|
|
|
303
303
|
try {
|
|
@@ -308,7 +308,7 @@ async function connectOrToggleForActiveTab() {
|
|
|
308
308
|
setBadge(tabId, 'error')
|
|
309
309
|
void chrome.action.setTitle({
|
|
310
310
|
tabId,
|
|
311
|
-
title: '
|
|
311
|
+
title: 'Clawdbot Browser Relay: relay not running (open options for setup)',
|
|
312
312
|
})
|
|
313
313
|
void maybeOpenHelpOnce()
|
|
314
314
|
// Extra breadcrumbs in chrome://extensions service worker logs.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
|
-
"name": "
|
|
3
|
+
"name": "PooL Browser Relay",
|
|
4
4
|
"version": "0.1.0",
|
|
5
|
-
"description": "Attach
|
|
5
|
+
"description": "Attach PooL to your existing Chrome tab via a local CDP relay server.",
|
|
6
6
|
"icons": {
|
|
7
7
|
"16": "icons/icon16.png",
|
|
8
8
|
"32": "icons/icon32.png",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"host_permissions": ["http://127.0.0.1/*", "http://localhost/*"],
|
|
14
14
|
"background": { "service_worker": "background.js", "type": "module" },
|
|
15
15
|
"action": {
|
|
16
|
-
"default_title": "
|
|
16
|
+
"default_title": "PooL Browser Relay (click to attach/detach)",
|
|
17
17
|
"default_icon": {
|
|
18
18
|
"16": "icons/icon16.png",
|
|
19
19
|
"32": "icons/icon32.png",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>
|
|
6
|
+
<title>Clawdbot Browser Relay</title>
|
|
7
7
|
<style>
|
|
8
8
|
:root {
|
|
9
9
|
color-scheme: light dark;
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
<img src="icons/icon128.png" alt="" />
|
|
159
159
|
</div>
|
|
160
160
|
<div>
|
|
161
|
-
<h1>
|
|
161
|
+
<h1>Clawdbot Browser Relay</h1>
|
|
162
162
|
<p class="subtitle">Click the toolbar button on a tab to attach / detach.</p>
|
|
163
163
|
</div>
|
|
164
164
|
</header>
|
|
@@ -168,10 +168,11 @@
|
|
|
168
168
|
<h2>Getting started</h2>
|
|
169
169
|
<p>
|
|
170
170
|
If you see a red <code>!</code> badge on the extension icon, the relay server is not reachable.
|
|
171
|
-
Start
|
|
171
|
+
Start Clawdbot’s browser relay on this machine (Gateway or <code>clawdbot browser serve</code>),
|
|
172
|
+
then click the toolbar button again.
|
|
172
173
|
</p>
|
|
173
174
|
<p>
|
|
174
|
-
Full guide (install, remote Gateway, security): <a href="https://docs.
|
|
175
|
+
Full guide (install, remote Gateway, security): <a href="https://docs.clawd.bot/tools/chrome-extension" target="_blank" rel="noreferrer">docs.clawd.bot/tools/chrome-extension</a>
|
|
175
176
|
</p>
|
|
176
177
|
</div>
|
|
177
178
|
|
|
@@ -184,7 +185,7 @@
|
|
|
184
185
|
</div>
|
|
185
186
|
<div class="hint">
|
|
186
187
|
Default: <code>18792</code>. Extension connects to: <code id="relay-url">http://127.0.0.1:<port>/</code>.
|
|
187
|
-
Only change this if your
|
|
188
|
+
Only change this if your Clawdbot profile uses a different <code>cdpUrl</code> port.
|
|
188
189
|
</div>
|
|
189
190
|
<div class="status" id="status"></div>
|
|
190
191
|
</div>
|
|
@@ -31,7 +31,7 @@ async function checkRelayReachable(port) {
|
|
|
31
31
|
} catch {
|
|
32
32
|
setStatus(
|
|
33
33
|
'error',
|
|
34
|
-
`Relay not reachable at ${url}. Start
|
|
34
|
+
`Relay not reachable at ${url}. Start Clawdbot’s browser relay on this machine, then click the toolbar button again.`,
|
|
35
35
|
)
|
|
36
36
|
} finally {
|
|
37
37
|
clearTimeout(t)
|
package/dist/acp/client.js
CHANGED
|
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import * as readline from "node:readline";
|
|
3
3
|
import { Readable, Writable } from "node:stream";
|
|
4
4
|
import { ClientSideConnection, PROTOCOL_VERSION, ndJsonStream, } from "@agentclientprotocol/sdk";
|
|
5
|
-
import {
|
|
5
|
+
import { ensureClawdbotCliOnPath } from "../infra/path-env.js";
|
|
6
6
|
function toArgs(value) {
|
|
7
7
|
if (!value)
|
|
8
8
|
return [];
|
|
@@ -50,8 +50,8 @@ export async function createAcpClient(opts = {}) {
|
|
|
50
50
|
const cwd = opts.cwd ?? process.cwd();
|
|
51
51
|
const verbose = Boolean(opts.verbose);
|
|
52
52
|
const log = verbose ? (msg) => console.error(`[acp-client] ${msg}`) : () => { };
|
|
53
|
-
|
|
54
|
-
const serverCommand = opts.serverCommand ?? "
|
|
53
|
+
ensureClawdbotCliOnPath({ cwd });
|
|
54
|
+
const serverCommand = opts.serverCommand ?? "clawdbot";
|
|
55
55
|
const serverArgs = buildServerArgs(opts);
|
|
56
56
|
log(`spawning: ${serverCommand} ${serverArgs.join(" ")}`);
|
|
57
57
|
const agent = spawn(serverCommand, serverArgs, {
|
|
@@ -88,7 +88,7 @@ export async function createAcpClient(opts = {}) {
|
|
|
88
88
|
fs: { readTextFile: true, writeTextFile: true },
|
|
89
89
|
terminal: true,
|
|
90
90
|
},
|
|
91
|
-
clientInfo: { name: "
|
|
91
|
+
clientInfo: { name: "clawdbot-acp-client", version: "1.0.0" },
|
|
92
92
|
});
|
|
93
93
|
log("creating session");
|
|
94
94
|
const session = await client.newSession({
|
|
@@ -107,7 +107,7 @@ export async function runAcpClientInteractive(opts = {}) {
|
|
|
107
107
|
input: process.stdin,
|
|
108
108
|
output: process.stdout,
|
|
109
109
|
});
|
|
110
|
-
console.log("
|
|
110
|
+
console.log("PooL ACP client");
|
|
111
111
|
console.log(`Session: ${sessionId}`);
|
|
112
112
|
console.log('Type a prompt, or "exit" to quit.\n');
|
|
113
113
|
const prompt = () => {
|
package/dist/acp/server.js
CHANGED
package/dist/acp/types.js
CHANGED
|
@@ -2,15 +2,15 @@ import path from "node:path";
|
|
|
2
2
|
import { resolveStateDir } from "../config/paths.js";
|
|
3
3
|
import { DEFAULT_AGENT_ID } from "../routing/session-key.js";
|
|
4
4
|
import { resolveUserPath } from "../utils.js";
|
|
5
|
-
export function
|
|
5
|
+
export function resolveClawdbotAgentDir() {
|
|
6
6
|
const override = process.env.CLAWDBOT_AGENT_DIR?.trim() || process.env.PI_CODING_AGENT_DIR?.trim();
|
|
7
7
|
if (override)
|
|
8
8
|
return resolveUserPath(override);
|
|
9
9
|
const defaultAgentDir = path.join(resolveStateDir(), "agents", DEFAULT_AGENT_ID, "agent");
|
|
10
10
|
return resolveUserPath(defaultAgentDir);
|
|
11
11
|
}
|
|
12
|
-
export function
|
|
13
|
-
const dir =
|
|
12
|
+
export function ensureClawdbotAgentEnv() {
|
|
13
|
+
const dir = resolveClawdbotAgentDir();
|
|
14
14
|
if (!process.env.CLAWDBOT_AGENT_DIR)
|
|
15
15
|
process.env.CLAWDBOT_AGENT_DIR = dir;
|
|
16
16
|
if (!process.env.PI_CODING_AGENT_DIR)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { resolveAuthProfileDisplayLabel, } from "./auth-profiles.js";
|
|
1
|
+
import { CLAUDE_CLI_PROFILE_ID, CODEX_CLI_PROFILE_ID, resolveAuthProfileDisplayLabel, } from "./auth-profiles.js";
|
|
2
2
|
export const DEFAULT_OAUTH_WARN_MS = 24 * 60 * 60 * 1000;
|
|
3
|
-
export function resolveAuthProfileSource(
|
|
3
|
+
export function resolveAuthProfileSource(profileId) {
|
|
4
|
+
if (profileId === CLAUDE_CLI_PROFILE_ID)
|
|
5
|
+
return "claude-cli";
|
|
6
|
+
if (profileId === CODEX_CLI_PROFILE_ID)
|
|
7
|
+
return "codex-cli";
|
|
4
8
|
return "store";
|
|
5
9
|
}
|
|
6
10
|
export function formatRemainingShort(remainingMs) {
|
|
@@ -26,6 +26,6 @@ export function formatAuthDoctorHint(params) {
|
|
|
26
26
|
`- config: ${legacyProfileId}${cfgProvider || cfgMode ? ` (provider=${cfgProvider ?? "?"}, mode=${cfgMode ?? "?"})` : ""}`,
|
|
27
27
|
`- auth store oauth profiles: ${storeOauthProfiles || "(none)"}`,
|
|
28
28
|
`- suggested profile: ${suggested}`,
|
|
29
|
-
`Fix: run "${formatCliCommand("
|
|
29
|
+
`Fix: run "${formatCliCommand("clawdbot doctor --yes")}"`,
|
|
30
30
|
].join("\n");
|
|
31
31
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readQwenCliCredentialsCached } from "../cli-credentials.js";
|
|
2
|
-
import { EXTERNAL_CLI_NEAR_EXPIRY_MS, EXTERNAL_CLI_SYNC_TTL_MS, QWEN_CLI_PROFILE_ID, log, } from "./constants.js";
|
|
1
|
+
import { readClaudeCliCredentialsCached, readCodexCliCredentialsCached, readQwenCliCredentialsCached, } from "../cli-credentials.js";
|
|
2
|
+
import { CLAUDE_CLI_PROFILE_ID, CODEX_CLI_PROFILE_ID, EXTERNAL_CLI_NEAR_EXPIRY_MS, EXTERNAL_CLI_SYNC_TTL_MS, QWEN_CLI_PROFILE_ID, log, } from "./constants.js";
|
|
3
3
|
function shallowEqualOAuthCredentials(a, b) {
|
|
4
4
|
if (!a)
|
|
5
5
|
return false;
|
|
@@ -14,12 +14,24 @@ function shallowEqualOAuthCredentials(a, b) {
|
|
|
14
14
|
a.projectId === b.projectId &&
|
|
15
15
|
a.accountId === b.accountId);
|
|
16
16
|
}
|
|
17
|
+
function shallowEqualTokenCredentials(a, b) {
|
|
18
|
+
if (!a)
|
|
19
|
+
return false;
|
|
20
|
+
if (a.type !== "token")
|
|
21
|
+
return false;
|
|
22
|
+
return (a.provider === b.provider &&
|
|
23
|
+
a.token === b.token &&
|
|
24
|
+
a.expires === b.expires &&
|
|
25
|
+
a.email === b.email);
|
|
26
|
+
}
|
|
17
27
|
function isExternalProfileFresh(cred, now) {
|
|
18
28
|
if (!cred)
|
|
19
29
|
return false;
|
|
20
30
|
if (cred.type !== "oauth" && cred.type !== "token")
|
|
21
31
|
return false;
|
|
22
|
-
if (cred.provider !== "
|
|
32
|
+
if (cred.provider !== "anthropic" &&
|
|
33
|
+
cred.provider !== "openai-codex" &&
|
|
34
|
+
cred.provider !== "qwen-portal") {
|
|
23
35
|
return false;
|
|
24
36
|
}
|
|
25
37
|
if (typeof cred.expires !== "number")
|
|
@@ -27,13 +39,146 @@ function isExternalProfileFresh(cred, now) {
|
|
|
27
39
|
return cred.expires > now + EXTERNAL_CLI_NEAR_EXPIRY_MS;
|
|
28
40
|
}
|
|
29
41
|
/**
|
|
30
|
-
*
|
|
42
|
+
* Find any existing openai-codex profile (other than codex-cli) that has the same
|
|
43
|
+
* access and refresh tokens. This prevents creating a duplicate codex-cli profile
|
|
44
|
+
* when the user has already set up a custom profile with the same credentials.
|
|
45
|
+
*/
|
|
46
|
+
export function findDuplicateCodexProfile(store, creds) {
|
|
47
|
+
for (const [profileId, profile] of Object.entries(store.profiles)) {
|
|
48
|
+
if (profileId === CODEX_CLI_PROFILE_ID)
|
|
49
|
+
continue;
|
|
50
|
+
if (profile.type !== "oauth")
|
|
51
|
+
continue;
|
|
52
|
+
if (profile.provider !== "openai-codex")
|
|
53
|
+
continue;
|
|
54
|
+
if (profile.access === creds.access && profile.refresh === creds.refresh) {
|
|
55
|
+
return profileId;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sync OAuth credentials from external CLI tools (Claude Code CLI, Codex CLI) into the store.
|
|
62
|
+
* This allows clawdbot to use the same credentials as these tools without requiring
|
|
63
|
+
* separate authentication, and keeps credentials in sync when CLI tools refresh tokens.
|
|
31
64
|
*
|
|
32
65
|
* Returns true if any credentials were updated.
|
|
33
66
|
*/
|
|
34
|
-
export function syncExternalCliCredentials(store) {
|
|
67
|
+
export function syncExternalCliCredentials(store, options) {
|
|
35
68
|
let mutated = false;
|
|
36
69
|
const now = Date.now();
|
|
70
|
+
// Sync from Claude Code CLI (supports both OAuth and Token credentials)
|
|
71
|
+
const existingClaude = store.profiles[CLAUDE_CLI_PROFILE_ID];
|
|
72
|
+
const shouldSyncClaude = !existingClaude ||
|
|
73
|
+
existingClaude.provider !== "anthropic" ||
|
|
74
|
+
existingClaude.type === "token" ||
|
|
75
|
+
!isExternalProfileFresh(existingClaude, now);
|
|
76
|
+
const claudeCreds = shouldSyncClaude
|
|
77
|
+
? readClaudeCliCredentialsCached({
|
|
78
|
+
allowKeychainPrompt: options?.allowKeychainPrompt,
|
|
79
|
+
ttlMs: EXTERNAL_CLI_SYNC_TTL_MS,
|
|
80
|
+
})
|
|
81
|
+
: null;
|
|
82
|
+
if (claudeCreds) {
|
|
83
|
+
const existing = store.profiles[CLAUDE_CLI_PROFILE_ID];
|
|
84
|
+
const claudeCredsExpires = claudeCreds.expires ?? 0;
|
|
85
|
+
// Determine if we should update based on credential comparison
|
|
86
|
+
let shouldUpdate = false;
|
|
87
|
+
let isEqual = false;
|
|
88
|
+
if (claudeCreds.type === "oauth") {
|
|
89
|
+
const existingOAuth = existing?.type === "oauth" ? existing : undefined;
|
|
90
|
+
isEqual = shallowEqualOAuthCredentials(existingOAuth, claudeCreds);
|
|
91
|
+
// Update if: no existing profile, type changed to oauth, expired, or CLI has newer token
|
|
92
|
+
shouldUpdate =
|
|
93
|
+
!existingOAuth ||
|
|
94
|
+
existingOAuth.provider !== "anthropic" ||
|
|
95
|
+
existingOAuth.expires <= now ||
|
|
96
|
+
(claudeCredsExpires > now && claudeCredsExpires > existingOAuth.expires);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const existingToken = existing?.type === "token" ? existing : undefined;
|
|
100
|
+
isEqual = shallowEqualTokenCredentials(existingToken, claudeCreds);
|
|
101
|
+
// Update if: no existing profile, expired, or CLI has newer token
|
|
102
|
+
shouldUpdate =
|
|
103
|
+
!existingToken ||
|
|
104
|
+
existingToken.provider !== "anthropic" ||
|
|
105
|
+
(existingToken.expires ?? 0) <= now ||
|
|
106
|
+
(claudeCredsExpires > now && claudeCredsExpires > (existingToken.expires ?? 0));
|
|
107
|
+
}
|
|
108
|
+
// Also update if credential type changed (token -> oauth upgrade)
|
|
109
|
+
if (existing && existing.type !== claudeCreds.type) {
|
|
110
|
+
// Prefer oauth over token (enables auto-refresh)
|
|
111
|
+
if (claudeCreds.type === "oauth") {
|
|
112
|
+
shouldUpdate = true;
|
|
113
|
+
isEqual = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Avoid downgrading from oauth to token-only credentials.
|
|
117
|
+
if (existing?.type === "oauth" && claudeCreds.type === "token") {
|
|
118
|
+
shouldUpdate = false;
|
|
119
|
+
}
|
|
120
|
+
if (shouldUpdate && !isEqual) {
|
|
121
|
+
store.profiles[CLAUDE_CLI_PROFILE_ID] = claudeCreds;
|
|
122
|
+
mutated = true;
|
|
123
|
+
log.info("synced anthropic credentials from claude cli", {
|
|
124
|
+
profileId: CLAUDE_CLI_PROFILE_ID,
|
|
125
|
+
type: claudeCreds.type,
|
|
126
|
+
expires: typeof claudeCreds.expires === "number"
|
|
127
|
+
? new Date(claudeCreds.expires).toISOString()
|
|
128
|
+
: "unknown",
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Sync from Codex CLI
|
|
133
|
+
const existingCodex = store.profiles[CODEX_CLI_PROFILE_ID];
|
|
134
|
+
const existingCodexOAuth = existingCodex?.type === "oauth" ? existingCodex : undefined;
|
|
135
|
+
const duplicateExistingId = existingCodexOAuth
|
|
136
|
+
? findDuplicateCodexProfile(store, existingCodexOAuth)
|
|
137
|
+
: undefined;
|
|
138
|
+
if (duplicateExistingId) {
|
|
139
|
+
delete store.profiles[CODEX_CLI_PROFILE_ID];
|
|
140
|
+
mutated = true;
|
|
141
|
+
log.info("removed codex-cli profile: credentials already exist in another profile", {
|
|
142
|
+
existingProfileId: duplicateExistingId,
|
|
143
|
+
removedProfileId: CODEX_CLI_PROFILE_ID,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const shouldSyncCodex = !existingCodex ||
|
|
147
|
+
existingCodex.provider !== "openai-codex" ||
|
|
148
|
+
!isExternalProfileFresh(existingCodex, now);
|
|
149
|
+
const codexCreds = shouldSyncCodex || duplicateExistingId
|
|
150
|
+
? readCodexCliCredentialsCached({ ttlMs: EXTERNAL_CLI_SYNC_TTL_MS })
|
|
151
|
+
: null;
|
|
152
|
+
if (codexCreds) {
|
|
153
|
+
const duplicateProfileId = findDuplicateCodexProfile(store, codexCreds);
|
|
154
|
+
if (duplicateProfileId) {
|
|
155
|
+
if (store.profiles[CODEX_CLI_PROFILE_ID]) {
|
|
156
|
+
delete store.profiles[CODEX_CLI_PROFILE_ID];
|
|
157
|
+
mutated = true;
|
|
158
|
+
log.info("removed codex-cli profile: credentials already exist in another profile", {
|
|
159
|
+
existingProfileId: duplicateProfileId,
|
|
160
|
+
removedProfileId: CODEX_CLI_PROFILE_ID,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const existing = store.profiles[CODEX_CLI_PROFILE_ID];
|
|
166
|
+
const existingOAuth = existing?.type === "oauth" ? existing : undefined;
|
|
167
|
+
// Codex creds don't carry expiry; use file mtime heuristic for freshness.
|
|
168
|
+
const shouldUpdate = !existingOAuth ||
|
|
169
|
+
existingOAuth.provider !== "openai-codex" ||
|
|
170
|
+
existingOAuth.expires <= now ||
|
|
171
|
+
codexCreds.expires > existingOAuth.expires;
|
|
172
|
+
if (shouldUpdate && !shallowEqualOAuthCredentials(existingOAuth, codexCreds)) {
|
|
173
|
+
store.profiles[CODEX_CLI_PROFILE_ID] = codexCreds;
|
|
174
|
+
mutated = true;
|
|
175
|
+
log.info("synced openai-codex credentials from codex cli", {
|
|
176
|
+
profileId: CODEX_CLI_PROFILE_ID,
|
|
177
|
+
expires: new Date(codexCreds.expires).toISOString(),
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
37
182
|
// Sync from Qwen Code CLI
|
|
38
183
|
const existingQwen = store.profiles[QWEN_CLI_PROFILE_ID];
|
|
39
184
|
const shouldSyncQwen = !existingQwen ||
|
|
@@ -2,7 +2,8 @@ import { getOAuthApiKey } from "@mariozechner/pi-ai";
|
|
|
2
2
|
import lockfile from "proper-lockfile";
|
|
3
3
|
import { refreshChutesTokens } from "../chutes-oauth.js";
|
|
4
4
|
import { refreshQwenPortalCredentials } from "../../providers/qwen-portal-oauth.js";
|
|
5
|
-
import {
|
|
5
|
+
import { writeClaudeCliCredentials } from "../cli-credentials.js";
|
|
6
|
+
import { AUTH_STORE_LOCK_OPTIONS, CLAUDE_CLI_PROFILE_ID } from "./constants.js";
|
|
6
7
|
import { formatAuthDoctorHint } from "./doctor.js";
|
|
7
8
|
import { ensureAuthStoreFile, resolveAuthStorePath } from "./paths.js";
|
|
8
9
|
import { suggestOAuthProfileIdForLegacyDefault } from "./repair.js";
|
|
@@ -58,6 +59,11 @@ async function refreshOAuthTokenWithLock(params) {
|
|
|
58
59
|
type: "oauth",
|
|
59
60
|
};
|
|
60
61
|
saveAuthProfileStore(store, params.agentDir);
|
|
62
|
+
// Sync refreshed credentials back to Claude Code CLI if this is the claude-cli profile
|
|
63
|
+
// This ensures Claude Code continues to work after ClawdBot refreshes the token
|
|
64
|
+
if (params.profileId === CLAUDE_CLI_PROFILE_ID && cred.provider === "anthropic") {
|
|
65
|
+
writeClaudeCliCredentials(result.newCredentials);
|
|
66
|
+
}
|
|
61
67
|
return result;
|
|
62
68
|
}
|
|
63
69
|
finally {
|
|
@@ -179,31 +185,6 @@ export async function resolveApiKeyForProfile(params) {
|
|
|
179
185
|
// keep original error
|
|
180
186
|
}
|
|
181
187
|
}
|
|
182
|
-
// Fallback: if this is a secondary agent, try using the main agent's credentials
|
|
183
|
-
if (params.agentDir) {
|
|
184
|
-
try {
|
|
185
|
-
const mainStore = ensureAuthProfileStore(undefined); // main agent (no agentDir)
|
|
186
|
-
const mainCred = mainStore.profiles[profileId];
|
|
187
|
-
if (mainCred?.type === "oauth" && Date.now() < mainCred.expires) {
|
|
188
|
-
// Main agent has fresh credentials - copy them to this agent and use them
|
|
189
|
-
refreshedStore.profiles[profileId] = { ...mainCred };
|
|
190
|
-
saveAuthProfileStore(refreshedStore, params.agentDir);
|
|
191
|
-
log.info("inherited fresh OAuth credentials from main agent", {
|
|
192
|
-
profileId,
|
|
193
|
-
agentDir: params.agentDir,
|
|
194
|
-
expires: new Date(mainCred.expires).toISOString(),
|
|
195
|
-
});
|
|
196
|
-
return {
|
|
197
|
-
apiKey: buildOAuthApiKey(mainCred.provider, mainCred),
|
|
198
|
-
provider: mainCred.provider,
|
|
199
|
-
email: mainCred.email,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch {
|
|
204
|
-
// keep original error if main agent fallback also fails
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
188
|
const message = error instanceof Error ? error.message : String(error);
|
|
208
189
|
const hint = formatAuthDoctorHint({
|
|
209
190
|
cfg,
|
|
@@ -2,14 +2,14 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { saveJsonFile } from "../../infra/json-file.js";
|
|
4
4
|
import { resolveUserPath } from "../../utils.js";
|
|
5
|
-
import {
|
|
5
|
+
import { resolveClawdbotAgentDir } from "../agent-paths.js";
|
|
6
6
|
import { AUTH_PROFILE_FILENAME, AUTH_STORE_VERSION, LEGACY_AUTH_FILENAME } from "./constants.js";
|
|
7
7
|
export function resolveAuthStorePath(agentDir) {
|
|
8
|
-
const resolved = resolveUserPath(agentDir ??
|
|
8
|
+
const resolved = resolveUserPath(agentDir ?? resolveClawdbotAgentDir());
|
|
9
9
|
return path.join(resolved, AUTH_PROFILE_FILENAME);
|
|
10
10
|
}
|
|
11
11
|
export function resolveLegacyAuthStorePath(agentDir) {
|
|
12
|
-
const resolved = resolveUserPath(agentDir ??
|
|
12
|
+
const resolved = resolveUserPath(agentDir ?? resolveClawdbotAgentDir());
|
|
13
13
|
return path.join(resolved, LEGACY_AUTH_FILENAME);
|
|
14
14
|
}
|
|
15
15
|
export function resolveAuthStorePathForDisplay(agentDir) {
|
|
@@ -2,8 +2,8 @@ import fs from "node:fs";
|
|
|
2
2
|
import lockfile from "proper-lockfile";
|
|
3
3
|
import { resolveOAuthPath } from "../../config/paths.js";
|
|
4
4
|
import { loadJsonFile, saveJsonFile } from "../../infra/json-file.js";
|
|
5
|
-
import { AUTH_STORE_LOCK_OPTIONS, AUTH_STORE_VERSION, log } from "./constants.js";
|
|
6
|
-
import { syncExternalCliCredentials } from "./external-cli-sync.js";
|
|
5
|
+
import { AUTH_STORE_LOCK_OPTIONS, AUTH_STORE_VERSION, CODEX_CLI_PROFILE_ID, log, } from "./constants.js";
|
|
6
|
+
import { findDuplicateCodexProfile, syncExternalCliCredentials } from "./external-cli-sync.js";
|
|
7
7
|
import { ensureAuthStoreFile, resolveAuthStorePath, resolveLegacyAuthStorePath } from "./paths.js";
|
|
8
8
|
function _syncAuthProfileStore(target, source) {
|
|
9
9
|
target.version = source.version;
|
|
@@ -209,13 +209,13 @@ export function loadAuthProfileStore() {
|
|
|
209
209
|
syncExternalCliCredentials(store);
|
|
210
210
|
return store;
|
|
211
211
|
}
|
|
212
|
-
function loadAuthProfileStoreForAgent(agentDir,
|
|
212
|
+
function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
213
213
|
const authPath = resolveAuthStorePath(agentDir);
|
|
214
214
|
const raw = loadJsonFile(authPath);
|
|
215
215
|
const asStore = coerceAuthStore(raw);
|
|
216
216
|
if (asStore) {
|
|
217
217
|
// Sync from external CLI tools on every load
|
|
218
|
-
const synced = syncExternalCliCredentials(asStore);
|
|
218
|
+
const synced = syncExternalCliCredentials(asStore, options);
|
|
219
219
|
if (synced) {
|
|
220
220
|
saveJsonFile(authPath, asStore);
|
|
221
221
|
}
|
|
@@ -275,7 +275,7 @@ function loadAuthProfileStoreForAgent(agentDir, _options) {
|
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
const mergedOAuth = mergeOAuthFileIntoStore(store);
|
|
278
|
-
const syncedCli = syncExternalCliCredentials(store);
|
|
278
|
+
const syncedCli = syncExternalCliCredentials(store, options);
|
|
279
279
|
const shouldWrite = legacy !== null || mergedOAuth || syncedCli;
|
|
280
280
|
if (shouldWrite) {
|
|
281
281
|
saveJsonFile(authPath, store);
|
|
@@ -308,6 +308,14 @@ export function ensureAuthProfileStore(agentDir, options) {
|
|
|
308
308
|
}
|
|
309
309
|
const mainStore = loadAuthProfileStoreForAgent(undefined, options);
|
|
310
310
|
const merged = mergeAuthProfileStores(mainStore, store);
|
|
311
|
+
// Keep per-agent view clean even if the main store has codex-cli.
|
|
312
|
+
const codexProfile = merged.profiles[CODEX_CLI_PROFILE_ID];
|
|
313
|
+
if (codexProfile?.type === "oauth") {
|
|
314
|
+
const duplicateId = findDuplicateCodexProfile(merged, codexProfile);
|
|
315
|
+
if (duplicateId) {
|
|
316
|
+
delete merged.profiles[CODEX_CLI_PROFILE_ID];
|
|
317
|
+
}
|
|
318
|
+
}
|
|
311
319
|
return merged;
|
|
312
320
|
}
|
|
313
321
|
export function saveAuthProfileStore(store, agentDir) {
|