@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/dist/telegram/send.js
CHANGED
|
@@ -2,7 +2,6 @@ import { Bot, HttpError, InputFile } from "grammy";
|
|
|
2
2
|
import { loadConfig } from "../config/config.js";
|
|
3
3
|
import { logVerbose } from "../globals.js";
|
|
4
4
|
import { recordChannelActivity } from "../infra/channel-activity.js";
|
|
5
|
-
import { withTelegramApiErrorLogging } from "./api-logging.js";
|
|
6
5
|
import { formatErrorMessage, formatUncaughtError } from "../infra/errors.js";
|
|
7
6
|
import { isDiagnosticFlagEnabled } from "../infra/diagnostic-flags.js";
|
|
8
7
|
import { createTelegramRetryRunner } from "../infra/retry-policy.js";
|
|
@@ -16,7 +15,6 @@ import { resolveTelegramFetch } from "./fetch.js";
|
|
|
16
15
|
import { makeProxyFetch } from "./proxy.js";
|
|
17
16
|
import { renderTelegramHtmlText } from "./format.js";
|
|
18
17
|
import { resolveMarkdownTableMode } from "../config/markdown-tables.js";
|
|
19
|
-
import { isRecoverableTelegramNetworkError } from "./network-errors.js";
|
|
20
18
|
import { splitTelegramCaption } from "./caption.js";
|
|
21
19
|
import { recordSentMessage } from "./sent-message-cache.js";
|
|
22
20
|
import { parseTelegramTarget, stripTelegramInternalPrefixes } from "./targets.js";
|
|
@@ -39,9 +37,7 @@ function createTelegramHttpLogger(cfg) {
|
|
|
39
37
|
function resolveTelegramClientOptions(account) {
|
|
40
38
|
const proxyUrl = account.config.proxy?.trim();
|
|
41
39
|
const proxyFetch = proxyUrl ? makeProxyFetch(proxyUrl) : undefined;
|
|
42
|
-
const fetchImpl = resolveTelegramFetch(proxyFetch
|
|
43
|
-
network: account.config.network,
|
|
44
|
-
});
|
|
40
|
+
const fetchImpl = resolveTelegramFetch(proxyFetch);
|
|
45
41
|
const timeoutSeconds = typeof account.config.timeoutSeconds === "number" &&
|
|
46
42
|
Number.isFinite(account.config.timeoutSeconds)
|
|
47
43
|
? Math.max(1, Math.floor(account.config.timeoutSeconds))
|
|
@@ -144,13 +140,9 @@ export async function sendMessageTelegram(to, text, opts = {}) {
|
|
|
144
140
|
retry: opts.retry,
|
|
145
141
|
configRetry: account.config.retry,
|
|
146
142
|
verbose: opts.verbose,
|
|
147
|
-
shouldRetry: (err) => isRecoverableTelegramNetworkError(err, { context: "send" }),
|
|
148
143
|
});
|
|
149
144
|
const logHttpError = createTelegramHttpLogger(cfg);
|
|
150
|
-
const requestWithDiag = (fn, label) =>
|
|
151
|
-
operation: label ?? "request",
|
|
152
|
-
fn: () => request(fn, label),
|
|
153
|
-
}).catch((err) => {
|
|
145
|
+
const requestWithDiag = (fn, label) => request(fn, label).catch((err) => {
|
|
154
146
|
logHttpError(label ?? "request", err);
|
|
155
147
|
throw err;
|
|
156
148
|
});
|
|
@@ -183,7 +175,6 @@ export async function sendMessageTelegram(to, text, opts = {}) {
|
|
|
183
175
|
const sendParams = {
|
|
184
176
|
parse_mode: "HTML",
|
|
185
177
|
...baseParams,
|
|
186
|
-
...(opts.silent === true ? { disable_notification: true } : {}),
|
|
187
178
|
};
|
|
188
179
|
const res = await requestWithDiag(() => api.sendMessage(chatId, htmlText, sendParams), "message").catch(async (err) => {
|
|
189
180
|
// Telegram rejects malformed HTML (e.g., unsupported tags or entities).
|
|
@@ -229,7 +220,6 @@ export async function sendMessageTelegram(to, text, opts = {}) {
|
|
|
229
220
|
caption: htmlCaption,
|
|
230
221
|
...(htmlCaption ? { parse_mode: "HTML" } : {}),
|
|
231
222
|
...baseMediaParams,
|
|
232
|
-
...(opts.silent === true ? { disable_notification: true } : {}),
|
|
233
223
|
};
|
|
234
224
|
let result;
|
|
235
225
|
if (isGif) {
|
|
@@ -334,13 +324,9 @@ export async function reactMessageTelegram(chatIdInput, messageIdInput, emoji, o
|
|
|
334
324
|
retry: opts.retry,
|
|
335
325
|
configRetry: account.config.retry,
|
|
336
326
|
verbose: opts.verbose,
|
|
337
|
-
shouldRetry: (err) => isRecoverableTelegramNetworkError(err, { context: "send" }),
|
|
338
327
|
});
|
|
339
328
|
const logHttpError = createTelegramHttpLogger(cfg);
|
|
340
|
-
const requestWithDiag = (fn, label) =>
|
|
341
|
-
operation: label ?? "request",
|
|
342
|
-
fn: () => request(fn, label),
|
|
343
|
-
}).catch((err) => {
|
|
329
|
+
const requestWithDiag = (fn, label) => request(fn, label).catch((err) => {
|
|
344
330
|
logHttpError(label ?? "request", err);
|
|
345
331
|
throw err;
|
|
346
332
|
});
|
|
@@ -372,13 +358,9 @@ export async function deleteMessageTelegram(chatIdInput, messageIdInput, opts =
|
|
|
372
358
|
retry: opts.retry,
|
|
373
359
|
configRetry: account.config.retry,
|
|
374
360
|
verbose: opts.verbose,
|
|
375
|
-
shouldRetry: (err) => isRecoverableTelegramNetworkError(err, { context: "send" }),
|
|
376
361
|
});
|
|
377
362
|
const logHttpError = createTelegramHttpLogger(cfg);
|
|
378
|
-
const requestWithDiag = (fn, label) =>
|
|
379
|
-
operation: label ?? "request",
|
|
380
|
-
fn: () => request(fn, label),
|
|
381
|
-
}).catch((err) => {
|
|
363
|
+
const requestWithDiag = (fn, label) => request(fn, label).catch((err) => {
|
|
382
364
|
logHttpError(label ?? "request", err);
|
|
383
365
|
throw err;
|
|
384
366
|
});
|
|
@@ -386,70 +368,6 @@ export async function deleteMessageTelegram(chatIdInput, messageIdInput, opts =
|
|
|
386
368
|
logVerbose(`[telegram] Deleted message ${messageId} from chat ${chatId}`);
|
|
387
369
|
return { ok: true };
|
|
388
370
|
}
|
|
389
|
-
export async function editMessageTelegram(chatIdInput, messageIdInput, text, opts = {}) {
|
|
390
|
-
const cfg = opts.cfg ?? loadConfig();
|
|
391
|
-
const account = resolveTelegramAccount({
|
|
392
|
-
cfg,
|
|
393
|
-
accountId: opts.accountId,
|
|
394
|
-
});
|
|
395
|
-
const token = resolveToken(opts.token, account);
|
|
396
|
-
const chatId = normalizeChatId(String(chatIdInput));
|
|
397
|
-
const messageId = normalizeMessageId(messageIdInput);
|
|
398
|
-
const client = resolveTelegramClientOptions(account);
|
|
399
|
-
const api = opts.api ?? new Bot(token, client ? { client } : undefined).api;
|
|
400
|
-
const request = createTelegramRetryRunner({
|
|
401
|
-
retry: opts.retry,
|
|
402
|
-
configRetry: account.config.retry,
|
|
403
|
-
verbose: opts.verbose,
|
|
404
|
-
});
|
|
405
|
-
const logHttpError = createTelegramHttpLogger(cfg);
|
|
406
|
-
const requestWithDiag = (fn, label) => withTelegramApiErrorLogging({
|
|
407
|
-
operation: label ?? "request",
|
|
408
|
-
fn: () => request(fn, label),
|
|
409
|
-
}).catch((err) => {
|
|
410
|
-
logHttpError(label ?? "request", err);
|
|
411
|
-
throw err;
|
|
412
|
-
});
|
|
413
|
-
const textMode = opts.textMode ?? "markdown";
|
|
414
|
-
const tableMode = resolveMarkdownTableMode({
|
|
415
|
-
cfg,
|
|
416
|
-
channel: "telegram",
|
|
417
|
-
accountId: account.accountId,
|
|
418
|
-
});
|
|
419
|
-
const htmlText = renderTelegramHtmlText(text, { textMode, tableMode });
|
|
420
|
-
// Reply markup semantics:
|
|
421
|
-
// - buttons === undefined → don't send reply_markup (keep existing)
|
|
422
|
-
// - buttons is [] (or filters to empty) → send { inline_keyboard: [] } (remove)
|
|
423
|
-
// - otherwise → send built inline keyboard
|
|
424
|
-
const shouldTouchButtons = opts.buttons !== undefined;
|
|
425
|
-
const builtKeyboard = shouldTouchButtons ? buildInlineKeyboard(opts.buttons) : undefined;
|
|
426
|
-
const replyMarkup = shouldTouchButtons ? (builtKeyboard ?? { inline_keyboard: [] }) : undefined;
|
|
427
|
-
const editParams = {
|
|
428
|
-
parse_mode: "HTML",
|
|
429
|
-
};
|
|
430
|
-
if (replyMarkup !== undefined) {
|
|
431
|
-
editParams.reply_markup = replyMarkup;
|
|
432
|
-
}
|
|
433
|
-
await requestWithDiag(() => api.editMessageText(chatId, messageId, htmlText, editParams), "editMessage").catch(async (err) => {
|
|
434
|
-
// Telegram rejects malformed HTML. Fall back to plain text.
|
|
435
|
-
const errText = formatErrorMessage(err);
|
|
436
|
-
if (PARSE_ERR_RE.test(errText)) {
|
|
437
|
-
if (opts.verbose) {
|
|
438
|
-
console.warn(`telegram HTML parse failed, retrying as plain text: ${errText}`);
|
|
439
|
-
}
|
|
440
|
-
const plainParams = {};
|
|
441
|
-
if (replyMarkup !== undefined) {
|
|
442
|
-
plainParams.reply_markup = replyMarkup;
|
|
443
|
-
}
|
|
444
|
-
return await requestWithDiag(() => Object.keys(plainParams).length > 0
|
|
445
|
-
? api.editMessageText(chatId, messageId, text, plainParams)
|
|
446
|
-
: api.editMessageText(chatId, messageId, text), "editMessage-plain");
|
|
447
|
-
}
|
|
448
|
-
throw err;
|
|
449
|
-
});
|
|
450
|
-
logVerbose(`[telegram] Edited message ${messageId} in chat ${chatId}`);
|
|
451
|
-
return { ok: true, messageId: String(messageId), chatId };
|
|
452
|
-
}
|
|
453
371
|
function inferFilename(kind) {
|
|
454
372
|
switch (kind) {
|
|
455
373
|
case "image":
|
|
@@ -462,65 +380,3 @@ function inferFilename(kind) {
|
|
|
462
380
|
return "file.bin";
|
|
463
381
|
}
|
|
464
382
|
}
|
|
465
|
-
/**
|
|
466
|
-
* Send a sticker to a Telegram chat by file_id.
|
|
467
|
-
* @param to - Chat ID or username (e.g., "123456789" or "@username")
|
|
468
|
-
* @param fileId - Telegram file_id of the sticker to send
|
|
469
|
-
* @param opts - Optional configuration
|
|
470
|
-
*/
|
|
471
|
-
export async function sendStickerTelegram(to, fileId, opts = {}) {
|
|
472
|
-
if (!fileId?.trim()) {
|
|
473
|
-
throw new Error("Telegram sticker file_id is required");
|
|
474
|
-
}
|
|
475
|
-
const cfg = loadConfig();
|
|
476
|
-
const account = resolveTelegramAccount({
|
|
477
|
-
cfg,
|
|
478
|
-
accountId: opts.accountId,
|
|
479
|
-
});
|
|
480
|
-
const token = resolveToken(opts.token, account);
|
|
481
|
-
const target = parseTelegramTarget(to);
|
|
482
|
-
const chatId = normalizeChatId(target.chatId);
|
|
483
|
-
const client = resolveTelegramClientOptions(account);
|
|
484
|
-
const api = opts.api ?? new Bot(token, client ? { client } : undefined).api;
|
|
485
|
-
const messageThreadId = opts.messageThreadId != null ? opts.messageThreadId : target.messageThreadId;
|
|
486
|
-
const threadIdParams = buildTelegramThreadParams(messageThreadId);
|
|
487
|
-
const threadParams = threadIdParams ? { ...threadIdParams } : {};
|
|
488
|
-
if (opts.replyToMessageId != null) {
|
|
489
|
-
threadParams.reply_to_message_id = Math.trunc(opts.replyToMessageId);
|
|
490
|
-
}
|
|
491
|
-
const hasThreadParams = Object.keys(threadParams).length > 0;
|
|
492
|
-
const request = createTelegramRetryRunner({
|
|
493
|
-
retry: opts.retry,
|
|
494
|
-
configRetry: account.config.retry,
|
|
495
|
-
verbose: opts.verbose,
|
|
496
|
-
});
|
|
497
|
-
const logHttpError = createTelegramHttpLogger(cfg);
|
|
498
|
-
const requestWithDiag = (fn, label) => request(fn, label).catch((err) => {
|
|
499
|
-
logHttpError(label ?? "request", err);
|
|
500
|
-
throw err;
|
|
501
|
-
});
|
|
502
|
-
const wrapChatNotFound = (err) => {
|
|
503
|
-
if (!/400: Bad Request: chat not found/i.test(formatErrorMessage(err)))
|
|
504
|
-
return err;
|
|
505
|
-
return new Error([
|
|
506
|
-
`Telegram send failed: chat not found (chat_id=${chatId}).`,
|
|
507
|
-
"Likely: bot not started in DM, bot removed from group/channel, group migrated (new -100… id), or wrong bot token.",
|
|
508
|
-
`Input was: ${JSON.stringify(to)}.`,
|
|
509
|
-
].join(" "));
|
|
510
|
-
};
|
|
511
|
-
const stickerParams = hasThreadParams ? threadParams : undefined;
|
|
512
|
-
const result = await requestWithDiag(() => api.sendSticker(chatId, fileId.trim(), stickerParams), "sticker").catch((err) => {
|
|
513
|
-
throw wrapChatNotFound(err);
|
|
514
|
-
});
|
|
515
|
-
const messageId = String(result?.message_id ?? "unknown");
|
|
516
|
-
const resolvedChatId = String(result?.chat?.id ?? chatId);
|
|
517
|
-
if (result?.message_id) {
|
|
518
|
-
recordSentMessage(chatId, result.message_id);
|
|
519
|
-
}
|
|
520
|
-
recordChannelActivity({
|
|
521
|
-
channel: "telegram",
|
|
522
|
-
accountId: account.accountId,
|
|
523
|
-
direction: "outbound",
|
|
524
|
-
});
|
|
525
|
-
return { messageId, chatId: resolvedChatId };
|
|
526
|
-
}
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import { Bot } from "grammy";
|
|
2
2
|
import { resolveTelegramFetch } from "./fetch.js";
|
|
3
|
-
import { withTelegramApiErrorLogging } from "./api-logging.js";
|
|
4
3
|
export async function setTelegramWebhook(opts) {
|
|
5
|
-
const fetchImpl = resolveTelegramFetch(
|
|
4
|
+
const fetchImpl = resolveTelegramFetch();
|
|
6
5
|
const client = fetchImpl
|
|
7
6
|
? { fetch: fetchImpl }
|
|
8
7
|
: undefined;
|
|
9
8
|
const bot = new Bot(opts.token, client ? { client } : undefined);
|
|
10
|
-
await
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
secret_token: opts.secret,
|
|
14
|
-
drop_pending_updates: opts.dropPendingUpdates ?? false,
|
|
15
|
-
}),
|
|
9
|
+
await bot.api.setWebhook(opts.url, {
|
|
10
|
+
secret_token: opts.secret,
|
|
11
|
+
drop_pending_updates: opts.dropPendingUpdates ?? false,
|
|
16
12
|
});
|
|
17
13
|
}
|
|
18
14
|
export async function deleteTelegramWebhook(opts) {
|
|
19
|
-
const fetchImpl = resolveTelegramFetch(
|
|
15
|
+
const fetchImpl = resolveTelegramFetch();
|
|
20
16
|
const client = fetchImpl
|
|
21
17
|
? { fetch: fetchImpl }
|
|
22
18
|
: undefined;
|
|
23
19
|
const bot = new Bot(opts.token, client ? { client } : undefined);
|
|
24
|
-
await
|
|
25
|
-
operation: "deleteWebhook",
|
|
26
|
-
fn: () => bot.api.deleteWebhook(),
|
|
27
|
-
});
|
|
20
|
+
await bot.api.deleteWebhook();
|
|
28
21
|
}
|
package/dist/telegram/webhook.js
CHANGED
|
@@ -6,7 +6,6 @@ import { defaultRuntime } from "../runtime.js";
|
|
|
6
6
|
import { logWebhookError, logWebhookProcessed, logWebhookReceived, startDiagnosticHeartbeat, stopDiagnosticHeartbeat, } from "../logging/diagnostic.js";
|
|
7
7
|
import { resolveTelegramAllowedUpdates } from "./allowed-updates.js";
|
|
8
8
|
import { createTelegramBot } from "./bot.js";
|
|
9
|
-
import { withTelegramApiErrorLogging } from "./api-logging.js";
|
|
10
9
|
export async function startTelegramWebhook(opts) {
|
|
11
10
|
const path = opts.path ?? "/telegram-webhook";
|
|
12
11
|
const healthPath = opts.healthPath ?? "/healthz";
|
|
@@ -71,13 +70,9 @@ export async function startTelegramWebhook(opts) {
|
|
|
71
70
|
}
|
|
72
71
|
});
|
|
73
72
|
const publicUrl = opts.publicUrl ?? `http://${host === "0.0.0.0" ? "localhost" : host}:${port}${path}`;
|
|
74
|
-
await
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
fn: () => bot.api.setWebhook(publicUrl, {
|
|
78
|
-
secret_token: opts.secret,
|
|
79
|
-
allowed_updates: resolveTelegramAllowedUpdates(),
|
|
80
|
-
}),
|
|
73
|
+
await bot.api.setWebhook(publicUrl, {
|
|
74
|
+
secret_token: opts.secret,
|
|
75
|
+
allowed_updates: resolveTelegramAllowedUpdates(),
|
|
81
76
|
});
|
|
82
77
|
await new Promise((resolve) => server.listen(port, host, resolve));
|
|
83
78
|
runtime.log?.(`webhook listening on ${publicUrl}`);
|
package/dist/terminal/links.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatTerminalLink } from "../utils.js";
|
|
2
|
-
export const DOCS_ROOT = "https://docs.
|
|
2
|
+
export const DOCS_ROOT = "https://docs.clawd.bot";
|
|
3
3
|
export function formatDocsLink(path, label, opts) {
|
|
4
4
|
const trimmed = path.trim();
|
|
5
5
|
const url = trimmed.startsWith("http")
|
package/dist/tts/tts.js
CHANGED
|
@@ -13,7 +13,7 @@ import { resolveModel } from "../agents/pi-embedded-runner/model.js";
|
|
|
13
13
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
14
14
|
const DEFAULT_TTS_MAX_LENGTH = 1500;
|
|
15
15
|
const DEFAULT_TTS_SUMMARIZE = true;
|
|
16
|
-
const DEFAULT_MAX_TEXT_LENGTH =
|
|
16
|
+
const DEFAULT_MAX_TEXT_LENGTH = 4000;
|
|
17
17
|
const TEMP_FILE_CLEANUP_DELAY_MS = 5 * 60 * 1000; // 5 minutes
|
|
18
18
|
const DEFAULT_ELEVENLABS_BASE_URL = "https://api.elevenlabs.io";
|
|
19
19
|
const DEFAULT_ELEVENLABS_VOICE_ID = "pMsXgVXv3BLzUgSXRplE";
|
|
@@ -1085,33 +1085,29 @@ export async function maybeApplyTtsToPayload(params) {
|
|
|
1085
1085
|
let wasSummarized = false;
|
|
1086
1086
|
if (textForAudio.length > maxLength) {
|
|
1087
1087
|
if (!isSummarizationEnabled(prefsPath)) {
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
textForAudio = `${textForAudio.slice(0, maxLength - 3)}...`;
|
|
1088
|
+
logVerbose(`TTS: skipping long text (${textForAudio.length} > ${maxLength}), summarization disabled.`);
|
|
1089
|
+
return nextPayload;
|
|
1091
1090
|
}
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
logVerbose(`TTS: summary exceeded hard limit (${textForAudio.length} > ${config.maxTextLength}); truncating.`);
|
|
1106
|
-
textForAudio = `${textForAudio.slice(0, config.maxTextLength - 3)}...`;
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
catch (err) {
|
|
1110
|
-
const error = err;
|
|
1111
|
-
logVerbose(`TTS: summarization failed, truncating instead: ${error.message}`);
|
|
1112
|
-
textForAudio = `${textForAudio.slice(0, maxLength - 3)}...`;
|
|
1091
|
+
try {
|
|
1092
|
+
const summary = await summarizeText({
|
|
1093
|
+
text: textForAudio,
|
|
1094
|
+
targetLength: maxLength,
|
|
1095
|
+
cfg: params.cfg,
|
|
1096
|
+
config,
|
|
1097
|
+
timeoutMs: config.timeoutMs,
|
|
1098
|
+
});
|
|
1099
|
+
textForAudio = summary.summary;
|
|
1100
|
+
wasSummarized = true;
|
|
1101
|
+
if (textForAudio.length > config.maxTextLength) {
|
|
1102
|
+
logVerbose(`TTS: summary exceeded hard limit (${textForAudio.length} > ${config.maxTextLength}); truncating.`);
|
|
1103
|
+
textForAudio = `${textForAudio.slice(0, config.maxTextLength - 3)}...`;
|
|
1113
1104
|
}
|
|
1114
1105
|
}
|
|
1106
|
+
catch (err) {
|
|
1107
|
+
const error = err;
|
|
1108
|
+
logVerbose(`TTS: summarization failed: ${error.message}`);
|
|
1109
|
+
return nextPayload;
|
|
1110
|
+
}
|
|
1115
1111
|
}
|
|
1116
1112
|
const ttsStart = Date.now();
|
|
1117
1113
|
const result = await textToSpeech({
|
|
@@ -1132,12 +1128,11 @@ export async function maybeApplyTtsToPayload(params) {
|
|
|
1132
1128
|
};
|
|
1133
1129
|
const channelId = resolveChannelId(params.channel);
|
|
1134
1130
|
const shouldVoice = channelId === "telegram" && result.voiceCompatible === true;
|
|
1135
|
-
|
|
1131
|
+
return {
|
|
1136
1132
|
...nextPayload,
|
|
1137
1133
|
mediaUrl: result.audioPath,
|
|
1138
1134
|
audioAsVoice: shouldVoice || params.payload.audioAsVoice,
|
|
1139
1135
|
};
|
|
1140
|
-
return finalPayload;
|
|
1141
1136
|
}
|
|
1142
1137
|
lastTtsAttempt = {
|
|
1143
1138
|
timestamp: Date.now(),
|
|
@@ -42,7 +42,7 @@ export class FilterableSelectList {
|
|
|
42
42
|
const inputText = inputLines[0] ?? "";
|
|
43
43
|
lines.push(filterLabel + inputText);
|
|
44
44
|
// Separator
|
|
45
|
-
lines.push(chalk.dim("─".repeat(
|
|
45
|
+
lines.push(chalk.dim("─".repeat(width)));
|
|
46
46
|
// Select list
|
|
47
47
|
const listLines = this.selectList.render(width);
|
|
48
48
|
lines.push(...listLines);
|
|
@@ -159,8 +159,7 @@ export class SearchableSelectList {
|
|
|
159
159
|
const maxValueWidth = Math.min(30, width - prefixWidth - 4);
|
|
160
160
|
const truncatedValue = truncateToWidth(displayValue, maxValueWidth, "");
|
|
161
161
|
const valueText = this.highlightMatch(truncatedValue, query);
|
|
162
|
-
const
|
|
163
|
-
const spacing = " ".repeat(spacingWidth);
|
|
162
|
+
const spacing = " ".repeat(Math.max(1, 32 - visibleWidth(valueText)));
|
|
164
163
|
const descriptionStart = prefixWidth + visibleWidth(valueText) + spacing.length;
|
|
165
164
|
const remainingWidth = width - descriptionStart - 2;
|
|
166
165
|
if (remainingWidth > 10) {
|
package/dist/tui/gateway-chat.js
CHANGED
|
@@ -25,7 +25,7 @@ export class GatewayChatClient {
|
|
|
25
25
|
token: resolved.token,
|
|
26
26
|
password: resolved.password,
|
|
27
27
|
clientName: GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
|
|
28
|
-
clientDisplayName: "
|
|
28
|
+
clientDisplayName: "clawdbot-tui",
|
|
29
29
|
clientVersion: VERSION,
|
|
30
30
|
platform: process.platform,
|
|
31
31
|
mode: GATEWAY_CLIENT_MODES.UI,
|
package/dist/tui/tui.js
CHANGED
|
@@ -241,7 +241,7 @@ export async function runTui(opts) {
|
|
|
241
241
|
const updateHeader = () => {
|
|
242
242
|
const sessionLabel = formatSessionKey(currentSessionKey);
|
|
243
243
|
const agentLabel = formatAgentLabel(currentAgentId);
|
|
244
|
-
header.setText(theme.header(`
|
|
244
|
+
header.setText(theme.header(`clawdbot tui - ${client.connection.url} - agent ${agentLabel} - session ${sessionLabel}`));
|
|
245
245
|
};
|
|
246
246
|
const busyStates = new Set(["sending", "waiting", "streaming", "running"]);
|
|
247
247
|
let statusText = null;
|
package/dist/version.js
CHANGED
|
@@ -9,7 +9,7 @@ function readVersionFromPackageJson() {
|
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
// Single source of truth for the current
|
|
12
|
+
// Single source of truth for the current clawdbot version.
|
|
13
13
|
// - Embedded/bundled builds: injected define or env var.
|
|
14
14
|
// - Dev/npm builds: package.json.
|
|
15
15
|
export const VERSION = (typeof __CLAWDBOT_VERSION__ === "string" && __CLAWDBOT_VERSION__) ||
|
|
@@ -9,7 +9,7 @@ export function requireActiveWebListener(accountId) {
|
|
|
9
9
|
const id = resolveWebAccountId(accountId);
|
|
10
10
|
const listener = listeners.get(id) ?? null;
|
|
11
11
|
if (!listener) {
|
|
12
|
-
throw new Error(`No active WhatsApp Web listener (account: ${id}). Start the gateway, then link WhatsApp with: ${formatCliCommand(`
|
|
12
|
+
throw new Error(`No active WhatsApp Web listener (account: ${id}). Start the gateway, then link WhatsApp with: ${formatCliCommand(`clawdbot channels login --channel whatsapp --account ${id}`)}.`);
|
|
13
13
|
}
|
|
14
14
|
return { accountId: id, listener };
|
|
15
15
|
}
|
package/dist/web/auth-store.js
CHANGED
|
@@ -162,7 +162,7 @@ export async function pickWebChannel(pref, authDir = resolveDefaultWebAuthDir())
|
|
|
162
162
|
const choice = pref === "auto" ? "web" : pref;
|
|
163
163
|
const hasWeb = await webAuthExists(authDir);
|
|
164
164
|
if (!hasWeb) {
|
|
165
|
-
throw new Error(`No WhatsApp Web session found. Run \`${formatCliCommand("
|
|
165
|
+
throw new Error(`No WhatsApp Web session found. Run \`${formatCliCommand("clawdbot channels login --channel whatsapp --verbose")}\` to link.`);
|
|
166
166
|
}
|
|
167
167
|
return choice;
|
|
168
168
|
}
|
|
@@ -177,7 +177,7 @@ export async function processMessage(params) {
|
|
|
177
177
|
normalizeE164(params.msg.from) === normalizeE164(params.msg.selfE164 ?? "");
|
|
178
178
|
const responsePrefix = prefixContext.responsePrefix ??
|
|
179
179
|
(configuredResponsePrefix === undefined && isSelfChat
|
|
180
|
-
? (resolveIdentityNamePrefix(params.cfg, params.route.agentId) ?? "[
|
|
180
|
+
? (resolveIdentityNamePrefix(params.cfg, params.route.agentId) ?? "[clawdbot]")
|
|
181
181
|
: undefined);
|
|
182
182
|
const ctxPayload = finalizeInboundContext({
|
|
183
183
|
Body: combinedBody,
|
|
@@ -312,7 +312,7 @@ export async function monitorWebChannel(verbose, listenerFactory = monitorWebInb
|
|
|
312
312
|
sessionKey: connectRoute.sessionKey,
|
|
313
313
|
});
|
|
314
314
|
if (loggedOut) {
|
|
315
|
-
runtime.error(`WhatsApp session logged out. Run \`${formatCliCommand("
|
|
315
|
+
runtime.error(`WhatsApp session logged out. Run \`${formatCliCommand("clawdbot channels login --channel web")}\` to relink.`);
|
|
316
316
|
await closeListener();
|
|
317
317
|
break;
|
|
318
318
|
}
|
package/dist/web/login.js
CHANGED
|
@@ -47,7 +47,7 @@ export async function loginWeb(verbose, waitForConnection, runtime = defaultRunt
|
|
|
47
47
|
isLegacyAuthDir: account.isLegacyAuthDir,
|
|
48
48
|
runtime,
|
|
49
49
|
});
|
|
50
|
-
console.error(danger(`WhatsApp reported the session is logged out. Cleared cached web session; please rerun ${formatCliCommand("
|
|
50
|
+
console.error(danger(`WhatsApp reported the session is logged out. Cleared cached web session; please rerun ${formatCliCommand("clawdbot channels login")} and scan the QR again.`));
|
|
51
51
|
throw new Error("Session logged out; cache cleared. Re-run login.");
|
|
52
52
|
}
|
|
53
53
|
const formatted = formatError(err);
|
package/dist/web/session.js
CHANGED
|
@@ -80,7 +80,7 @@ export async function createWaSocket(printQr, verbose, opts = {}) {
|
|
|
80
80
|
version,
|
|
81
81
|
logger,
|
|
82
82
|
printQRInTerminal: false,
|
|
83
|
-
browser: ["
|
|
83
|
+
browser: ["clawdbot", "cli", VERSION],
|
|
84
84
|
syncFullHistory: false,
|
|
85
85
|
markOnlineOnConnect: false,
|
|
86
86
|
});
|
|
@@ -98,7 +98,7 @@ export async function createWaSocket(printQr, verbose, opts = {}) {
|
|
|
98
98
|
if (connection === "close") {
|
|
99
99
|
const status = getStatusCode(lastDisconnect?.error);
|
|
100
100
|
if (status === DisconnectReason.loggedOut) {
|
|
101
|
-
console.error(danger(`WhatsApp session logged out. Run: ${formatCliCommand("
|
|
101
|
+
console.error(danger(`WhatsApp session logged out. Run: ${formatCliCommand("clawdbot channels login")}`));
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
if (connection === "open" && verbose) {
|
|
@@ -218,9 +218,9 @@ export async function finalizeOnboardingWizard(options) {
|
|
|
218
218
|
}
|
|
219
219
|
await prompter.note([
|
|
220
220
|
"Gateway token: shared auth for the Gateway + Control UI.",
|
|
221
|
-
"Stored in: ~/.clawdbot/
|
|
222
|
-
"Web UI stores a copy in this browser's localStorage (
|
|
223
|
-
`Get the tokenized link anytime: ${formatCliCommand("
|
|
221
|
+
"Stored in: ~/.clawdbot/clawdbot.json (gateway.auth.token) or CLAWDBOT_GATEWAY_TOKEN.",
|
|
222
|
+
"Web UI stores a copy in this browser's localStorage (clawdbot.control.settings.v1).",
|
|
223
|
+
`Get the tokenized link anytime: ${formatCliCommand("clawdbot dashboard --no-open")}`,
|
|
224
224
|
].join("\n"), "Token");
|
|
225
225
|
hatchChoice = (await prompter.select({
|
|
226
226
|
message: "How do you want to hatch your bot?",
|
|
@@ -244,7 +244,7 @@ export async function finalizeOnboardingWizard(options) {
|
|
|
244
244
|
seededInBackground = await openUrlInBackground(authedUrl);
|
|
245
245
|
}
|
|
246
246
|
if (seededInBackground) {
|
|
247
|
-
await prompter.note(`Web UI seeded in the background. Open later with: ${formatCliCommand("
|
|
247
|
+
await prompter.note(`Web UI seeded in the background. Open later with: ${formatCliCommand("clawdbot dashboard --no-open")}`, "Web UI");
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
else if (hatchChoice === "web") {
|
|
@@ -269,15 +269,15 @@ export async function finalizeOnboardingWizard(options) {
|
|
|
269
269
|
await prompter.note([
|
|
270
270
|
`Dashboard link (with token): ${authedUrl}`,
|
|
271
271
|
controlUiOpened
|
|
272
|
-
? "Opened in your browser. Keep that tab to control
|
|
273
|
-
: "Copy/paste this URL in a browser on this machine to control
|
|
272
|
+
? "Opened in your browser. Keep that tab to control Clawdbot."
|
|
273
|
+
: "Copy/paste this URL in a browser on this machine to control Clawdbot.",
|
|
274
274
|
controlUiOpenHint,
|
|
275
275
|
]
|
|
276
276
|
.filter(Boolean)
|
|
277
277
|
.join("\n"), "Dashboard ready");
|
|
278
278
|
}
|
|
279
279
|
else {
|
|
280
|
-
await prompter.note(`When you're ready: ${formatCliCommand("
|
|
280
|
+
await prompter.note(`When you're ready: ${formatCliCommand("clawdbot dashboard --no-open")}`, "Later");
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
else if (opts.skipUi) {
|
|
@@ -311,8 +311,8 @@ export async function finalizeOnboardingWizard(options) {
|
|
|
311
311
|
await prompter.note([
|
|
312
312
|
`Dashboard link (with token): ${authedUrl}`,
|
|
313
313
|
controlUiOpened
|
|
314
|
-
? "Opened in your browser. Keep that tab to control
|
|
315
|
-
: "Copy/paste this URL in a browser on this machine to control
|
|
314
|
+
? "Opened in your browser. Keep that tab to control Clawdbot."
|
|
315
|
+
: "Copy/paste this URL in a browser on this machine to control Clawdbot.",
|
|
316
316
|
controlUiOpenHint,
|
|
317
317
|
]
|
|
318
318
|
.filter(Boolean)
|
|
@@ -333,19 +333,19 @@ export async function finalizeOnboardingWizard(options) {
|
|
|
333
333
|
: [
|
|
334
334
|
"If you want your agent to be able to search the web, you’ll need an API key.",
|
|
335
335
|
"",
|
|
336
|
-
"
|
|
336
|
+
"Clawdbot uses Brave Search for the `web_search` tool. Without a Brave Search API key, web search won’t work.",
|
|
337
337
|
"",
|
|
338
338
|
"Set it up interactively:",
|
|
339
|
-
`- Run: ${formatCliCommand("
|
|
339
|
+
`- Run: ${formatCliCommand("clawdbot configure --section web")}`,
|
|
340
340
|
"- Enable web_search and paste your Brave Search API key",
|
|
341
341
|
"",
|
|
342
342
|
"Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes).",
|
|
343
343
|
"Docs: https://docs.clawd.bot/tools/web",
|
|
344
344
|
].join("\n"), "Web search (optional)");
|
|
345
|
-
await prompter.note('What now: https://
|
|
345
|
+
await prompter.note('What now: https://clawd.bot/showcase ("What People Are Building").', "What now");
|
|
346
346
|
await prompter.outro(controlUiOpened
|
|
347
|
-
? "Onboarding complete. Dashboard opened with your token; keep that tab to control
|
|
347
|
+
? "Onboarding complete. Dashboard opened with your token; keep that tab to control Clawdbot."
|
|
348
348
|
: seededInBackground
|
|
349
349
|
? "Onboarding complete. Web UI seeded in the background; open it anytime with the tokenized link above."
|
|
350
|
-
: "Onboarding complete. Use the tokenized dashboard link above to control
|
|
350
|
+
: "Onboarding complete. Use the tokenized dashboard link above to control Clawdbot.");
|
|
351
351
|
}
|
|
@@ -53,6 +53,11 @@ export async function configureGatewayForOnboarding(opts) {
|
|
|
53
53
|
: (await prompter.select({
|
|
54
54
|
message: "Gateway auth",
|
|
55
55
|
options: [
|
|
56
|
+
{
|
|
57
|
+
value: "off",
|
|
58
|
+
label: "Off (loopback only)",
|
|
59
|
+
hint: "Not recommended unless you fully trust local processes",
|
|
60
|
+
},
|
|
56
61
|
{
|
|
57
62
|
value: "token",
|
|
58
63
|
label: "Token",
|
|
@@ -95,7 +100,7 @@ export async function configureGatewayForOnboarding(opts) {
|
|
|
95
100
|
}
|
|
96
101
|
let tailscaleResetOnExit = flow === "quickstart" ? quickstartGateway.tailscaleResetOnExit : false;
|
|
97
102
|
if (tailscaleMode !== "off" && flow !== "quickstart") {
|
|
98
|
-
await prompter.note(["Docs:", "https://docs.
|
|
103
|
+
await prompter.note(["Docs:", "https://docs.clawd.bot/gateway/tailscale", "https://docs.clawd.bot/web"].join("\n"), "Tailscale");
|
|
99
104
|
tailscaleResetOnExit = Boolean(await prompter.confirm({
|
|
100
105
|
message: "Reset Tailscale serve/funnel on exit?",
|
|
101
106
|
initialValue: false,
|
|
@@ -103,12 +108,17 @@ export async function configureGatewayForOnboarding(opts) {
|
|
|
103
108
|
}
|
|
104
109
|
// Safety + constraints:
|
|
105
110
|
// - Tailscale wants bind=loopback so we never expose a non-loopback server + tailscale serve/funnel at once.
|
|
111
|
+
// - Auth off only allowed for bind=loopback.
|
|
106
112
|
// - Funnel requires password auth.
|
|
107
113
|
if (tailscaleMode !== "off" && bind !== "loopback") {
|
|
108
114
|
await prompter.note("Tailscale requires bind=loopback. Adjusting bind to loopback.", "Note");
|
|
109
115
|
bind = "loopback";
|
|
110
116
|
customBindHost = undefined;
|
|
111
117
|
}
|
|
118
|
+
if (authMode === "off" && bind !== "loopback") {
|
|
119
|
+
await prompter.note("Non-loopback bind requires auth. Switching to token auth.", "Note");
|
|
120
|
+
authMode = "token";
|
|
121
|
+
}
|
|
112
122
|
if (tailscaleMode === "funnel" && authMode !== "password") {
|
|
113
123
|
await prompter.note("Tailscale funnel requires password auth.", "Note");
|
|
114
124
|
authMode = "password";
|