@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
|
@@ -2,15 +2,9 @@ import { fetchBrowserJson } from "./client-fetch.js";
|
|
|
2
2
|
function buildProfileQuery(profile) {
|
|
3
3
|
return profile ? `?profile=${encodeURIComponent(profile)}` : "";
|
|
4
4
|
}
|
|
5
|
-
function withBaseUrl(baseUrl, path) {
|
|
6
|
-
const trimmed = baseUrl?.trim();
|
|
7
|
-
if (!trimmed)
|
|
8
|
-
return path;
|
|
9
|
-
return `${trimmed.replace(/\/$/, "")}${path}`;
|
|
10
|
-
}
|
|
11
5
|
export async function browserNavigate(baseUrl, opts) {
|
|
12
6
|
const q = buildProfileQuery(opts.profile);
|
|
13
|
-
return await fetchBrowserJson(
|
|
7
|
+
return await fetchBrowserJson(`${baseUrl}/navigate${q}`, {
|
|
14
8
|
method: "POST",
|
|
15
9
|
headers: { "Content-Type": "application/json" },
|
|
16
10
|
body: JSON.stringify({ url: opts.url, targetId: opts.targetId }),
|
|
@@ -19,7 +13,7 @@ export async function browserNavigate(baseUrl, opts) {
|
|
|
19
13
|
}
|
|
20
14
|
export async function browserArmDialog(baseUrl, opts) {
|
|
21
15
|
const q = buildProfileQuery(opts.profile);
|
|
22
|
-
return await fetchBrowserJson(
|
|
16
|
+
return await fetchBrowserJson(`${baseUrl}/hooks/dialog${q}`, {
|
|
23
17
|
method: "POST",
|
|
24
18
|
headers: { "Content-Type": "application/json" },
|
|
25
19
|
body: JSON.stringify({
|
|
@@ -33,7 +27,7 @@ export async function browserArmDialog(baseUrl, opts) {
|
|
|
33
27
|
}
|
|
34
28
|
export async function browserArmFileChooser(baseUrl, opts) {
|
|
35
29
|
const q = buildProfileQuery(opts.profile);
|
|
36
|
-
return await fetchBrowserJson(
|
|
30
|
+
return await fetchBrowserJson(`${baseUrl}/hooks/file-chooser${q}`, {
|
|
37
31
|
method: "POST",
|
|
38
32
|
headers: { "Content-Type": "application/json" },
|
|
39
33
|
body: JSON.stringify({
|
|
@@ -49,7 +43,7 @@ export async function browserArmFileChooser(baseUrl, opts) {
|
|
|
49
43
|
}
|
|
50
44
|
export async function browserWaitForDownload(baseUrl, opts) {
|
|
51
45
|
const q = buildProfileQuery(opts.profile);
|
|
52
|
-
return await fetchBrowserJson(
|
|
46
|
+
return await fetchBrowserJson(`${baseUrl}/wait/download${q}`, {
|
|
53
47
|
method: "POST",
|
|
54
48
|
headers: { "Content-Type": "application/json" },
|
|
55
49
|
body: JSON.stringify({
|
|
@@ -62,7 +56,7 @@ export async function browserWaitForDownload(baseUrl, opts) {
|
|
|
62
56
|
}
|
|
63
57
|
export async function browserDownload(baseUrl, opts) {
|
|
64
58
|
const q = buildProfileQuery(opts.profile);
|
|
65
|
-
return await fetchBrowserJson(
|
|
59
|
+
return await fetchBrowserJson(`${baseUrl}/download${q}`, {
|
|
66
60
|
method: "POST",
|
|
67
61
|
headers: { "Content-Type": "application/json" },
|
|
68
62
|
body: JSON.stringify({
|
|
@@ -76,7 +70,7 @@ export async function browserDownload(baseUrl, opts) {
|
|
|
76
70
|
}
|
|
77
71
|
export async function browserAct(baseUrl, req, opts) {
|
|
78
72
|
const q = buildProfileQuery(opts?.profile);
|
|
79
|
-
return await fetchBrowserJson(
|
|
73
|
+
return await fetchBrowserJson(`${baseUrl}/act${q}`, {
|
|
80
74
|
method: "POST",
|
|
81
75
|
headers: { "Content-Type": "application/json" },
|
|
82
76
|
body: JSON.stringify(req),
|
|
@@ -85,7 +79,7 @@ export async function browserAct(baseUrl, req, opts) {
|
|
|
85
79
|
}
|
|
86
80
|
export async function browserScreenshotAction(baseUrl, opts) {
|
|
87
81
|
const q = buildProfileQuery(opts.profile);
|
|
88
|
-
return await fetchBrowserJson(
|
|
82
|
+
return await fetchBrowserJson(`${baseUrl}/screenshot${q}`, {
|
|
89
83
|
method: "POST",
|
|
90
84
|
headers: { "Content-Type": "application/json" },
|
|
91
85
|
body: JSON.stringify({
|
|
@@ -2,12 +2,6 @@ import { fetchBrowserJson } from "./client-fetch.js";
|
|
|
2
2
|
function buildProfileQuery(profile) {
|
|
3
3
|
return profile ? `?profile=${encodeURIComponent(profile)}` : "";
|
|
4
4
|
}
|
|
5
|
-
function withBaseUrl(baseUrl, path) {
|
|
6
|
-
const trimmed = baseUrl?.trim();
|
|
7
|
-
if (!trimmed)
|
|
8
|
-
return path;
|
|
9
|
-
return `${trimmed.replace(/\/$/, "")}${path}`;
|
|
10
|
-
}
|
|
11
5
|
export async function browserConsoleMessages(baseUrl, opts = {}) {
|
|
12
6
|
const q = new URLSearchParams();
|
|
13
7
|
if (opts.level)
|
|
@@ -17,11 +11,11 @@ export async function browserConsoleMessages(baseUrl, opts = {}) {
|
|
|
17
11
|
if (opts.profile)
|
|
18
12
|
q.set("profile", opts.profile);
|
|
19
13
|
const suffix = q.toString() ? `?${q.toString()}` : "";
|
|
20
|
-
return await fetchBrowserJson(
|
|
14
|
+
return await fetchBrowserJson(`${baseUrl}/console${suffix}`, { timeoutMs: 20000 });
|
|
21
15
|
}
|
|
22
16
|
export async function browserPdfSave(baseUrl, opts = {}) {
|
|
23
17
|
const q = buildProfileQuery(opts.profile);
|
|
24
|
-
return await fetchBrowserJson(
|
|
18
|
+
return await fetchBrowserJson(`${baseUrl}/pdf${q}`, {
|
|
25
19
|
method: "POST",
|
|
26
20
|
headers: { "Content-Type": "application/json" },
|
|
27
21
|
body: JSON.stringify({ targetId: opts.targetId }),
|
|
@@ -37,7 +31,7 @@ export async function browserPageErrors(baseUrl, opts = {}) {
|
|
|
37
31
|
if (opts.profile)
|
|
38
32
|
q.set("profile", opts.profile);
|
|
39
33
|
const suffix = q.toString() ? `?${q.toString()}` : "";
|
|
40
|
-
return await fetchBrowserJson(
|
|
34
|
+
return await fetchBrowserJson(`${baseUrl}/errors${suffix}`, { timeoutMs: 20000 });
|
|
41
35
|
}
|
|
42
36
|
export async function browserRequests(baseUrl, opts = {}) {
|
|
43
37
|
const q = new URLSearchParams();
|
|
@@ -50,11 +44,11 @@ export async function browserRequests(baseUrl, opts = {}) {
|
|
|
50
44
|
if (opts.profile)
|
|
51
45
|
q.set("profile", opts.profile);
|
|
52
46
|
const suffix = q.toString() ? `?${q.toString()}` : "";
|
|
53
|
-
return await fetchBrowserJson(
|
|
47
|
+
return await fetchBrowserJson(`${baseUrl}/requests${suffix}`, { timeoutMs: 20000 });
|
|
54
48
|
}
|
|
55
49
|
export async function browserTraceStart(baseUrl, opts = {}) {
|
|
56
50
|
const q = buildProfileQuery(opts.profile);
|
|
57
|
-
return await fetchBrowserJson(
|
|
51
|
+
return await fetchBrowserJson(`${baseUrl}/trace/start${q}`, {
|
|
58
52
|
method: "POST",
|
|
59
53
|
headers: { "Content-Type": "application/json" },
|
|
60
54
|
body: JSON.stringify({
|
|
@@ -68,7 +62,7 @@ export async function browserTraceStart(baseUrl, opts = {}) {
|
|
|
68
62
|
}
|
|
69
63
|
export async function browserTraceStop(baseUrl, opts = {}) {
|
|
70
64
|
const q = buildProfileQuery(opts.profile);
|
|
71
|
-
return await fetchBrowserJson(
|
|
65
|
+
return await fetchBrowserJson(`${baseUrl}/trace/stop${q}`, {
|
|
72
66
|
method: "POST",
|
|
73
67
|
headers: { "Content-Type": "application/json" },
|
|
74
68
|
body: JSON.stringify({ targetId: opts.targetId, path: opts.path }),
|
|
@@ -77,7 +71,7 @@ export async function browserTraceStop(baseUrl, opts = {}) {
|
|
|
77
71
|
}
|
|
78
72
|
export async function browserHighlight(baseUrl, opts) {
|
|
79
73
|
const q = buildProfileQuery(opts.profile);
|
|
80
|
-
return await fetchBrowserJson(
|
|
74
|
+
return await fetchBrowserJson(`${baseUrl}/highlight${q}`, {
|
|
81
75
|
method: "POST",
|
|
82
76
|
headers: { "Content-Type": "application/json" },
|
|
83
77
|
body: JSON.stringify({ targetId: opts.targetId, ref: opts.ref }),
|
|
@@ -86,7 +80,7 @@ export async function browserHighlight(baseUrl, opts) {
|
|
|
86
80
|
}
|
|
87
81
|
export async function browserResponseBody(baseUrl, opts) {
|
|
88
82
|
const q = buildProfileQuery(opts.profile);
|
|
89
|
-
return await fetchBrowserJson(
|
|
83
|
+
return await fetchBrowserJson(`${baseUrl}/response/body${q}`, {
|
|
90
84
|
method: "POST",
|
|
91
85
|
headers: { "Content-Type": "application/json" },
|
|
92
86
|
body: JSON.stringify({
|
|
@@ -2,12 +2,6 @@ import { fetchBrowserJson } from "./client-fetch.js";
|
|
|
2
2
|
function buildProfileQuery(profile) {
|
|
3
3
|
return profile ? `?profile=${encodeURIComponent(profile)}` : "";
|
|
4
4
|
}
|
|
5
|
-
function withBaseUrl(baseUrl, path) {
|
|
6
|
-
const trimmed = baseUrl?.trim();
|
|
7
|
-
if (!trimmed)
|
|
8
|
-
return path;
|
|
9
|
-
return `${trimmed.replace(/\/$/, "")}${path}`;
|
|
10
|
-
}
|
|
11
5
|
export async function browserCookies(baseUrl, opts = {}) {
|
|
12
6
|
const q = new URLSearchParams();
|
|
13
7
|
if (opts.targetId)
|
|
@@ -15,11 +9,11 @@ export async function browserCookies(baseUrl, opts = {}) {
|
|
|
15
9
|
if (opts.profile)
|
|
16
10
|
q.set("profile", opts.profile);
|
|
17
11
|
const suffix = q.toString() ? `?${q.toString()}` : "";
|
|
18
|
-
return await fetchBrowserJson(
|
|
12
|
+
return await fetchBrowserJson(`${baseUrl}/cookies${suffix}`, { timeoutMs: 20000 });
|
|
19
13
|
}
|
|
20
14
|
export async function browserCookiesSet(baseUrl, opts) {
|
|
21
15
|
const q = buildProfileQuery(opts.profile);
|
|
22
|
-
return await fetchBrowserJson(
|
|
16
|
+
return await fetchBrowserJson(`${baseUrl}/cookies/set${q}`, {
|
|
23
17
|
method: "POST",
|
|
24
18
|
headers: { "Content-Type": "application/json" },
|
|
25
19
|
body: JSON.stringify({ targetId: opts.targetId, cookie: opts.cookie }),
|
|
@@ -28,7 +22,7 @@ export async function browserCookiesSet(baseUrl, opts) {
|
|
|
28
22
|
}
|
|
29
23
|
export async function browserCookiesClear(baseUrl, opts = {}) {
|
|
30
24
|
const q = buildProfileQuery(opts.profile);
|
|
31
|
-
return await fetchBrowserJson(
|
|
25
|
+
return await fetchBrowserJson(`${baseUrl}/cookies/clear${q}`, {
|
|
32
26
|
method: "POST",
|
|
33
27
|
headers: { "Content-Type": "application/json" },
|
|
34
28
|
body: JSON.stringify({ targetId: opts.targetId }),
|
|
@@ -44,11 +38,11 @@ export async function browserStorageGet(baseUrl, opts) {
|
|
|
44
38
|
if (opts.profile)
|
|
45
39
|
q.set("profile", opts.profile);
|
|
46
40
|
const suffix = q.toString() ? `?${q.toString()}` : "";
|
|
47
|
-
return await fetchBrowserJson(
|
|
41
|
+
return await fetchBrowserJson(`${baseUrl}/storage/${opts.kind}${suffix}`, { timeoutMs: 20000 });
|
|
48
42
|
}
|
|
49
43
|
export async function browserStorageSet(baseUrl, opts) {
|
|
50
44
|
const q = buildProfileQuery(opts.profile);
|
|
51
|
-
return await fetchBrowserJson(
|
|
45
|
+
return await fetchBrowserJson(`${baseUrl}/storage/${opts.kind}/set${q}`, {
|
|
52
46
|
method: "POST",
|
|
53
47
|
headers: { "Content-Type": "application/json" },
|
|
54
48
|
body: JSON.stringify({
|
|
@@ -61,7 +55,7 @@ export async function browserStorageSet(baseUrl, opts) {
|
|
|
61
55
|
}
|
|
62
56
|
export async function browserStorageClear(baseUrl, opts) {
|
|
63
57
|
const q = buildProfileQuery(opts.profile);
|
|
64
|
-
return await fetchBrowserJson(
|
|
58
|
+
return await fetchBrowserJson(`${baseUrl}/storage/${opts.kind}/clear${q}`, {
|
|
65
59
|
method: "POST",
|
|
66
60
|
headers: { "Content-Type": "application/json" },
|
|
67
61
|
body: JSON.stringify({ targetId: opts.targetId }),
|
|
@@ -70,7 +64,7 @@ export async function browserStorageClear(baseUrl, opts) {
|
|
|
70
64
|
}
|
|
71
65
|
export async function browserSetOffline(baseUrl, opts) {
|
|
72
66
|
const q = buildProfileQuery(opts.profile);
|
|
73
|
-
return await fetchBrowserJson(
|
|
67
|
+
return await fetchBrowserJson(`${baseUrl}/set/offline${q}`, {
|
|
74
68
|
method: "POST",
|
|
75
69
|
headers: { "Content-Type": "application/json" },
|
|
76
70
|
body: JSON.stringify({ targetId: opts.targetId, offline: opts.offline }),
|
|
@@ -79,7 +73,7 @@ export async function browserSetOffline(baseUrl, opts) {
|
|
|
79
73
|
}
|
|
80
74
|
export async function browserSetHeaders(baseUrl, opts) {
|
|
81
75
|
const q = buildProfileQuery(opts.profile);
|
|
82
|
-
return await fetchBrowserJson(
|
|
76
|
+
return await fetchBrowserJson(`${baseUrl}/set/headers${q}`, {
|
|
83
77
|
method: "POST",
|
|
84
78
|
headers: { "Content-Type": "application/json" },
|
|
85
79
|
body: JSON.stringify({ targetId: opts.targetId, headers: opts.headers }),
|
|
@@ -88,7 +82,7 @@ export async function browserSetHeaders(baseUrl, opts) {
|
|
|
88
82
|
}
|
|
89
83
|
export async function browserSetHttpCredentials(baseUrl, opts = {}) {
|
|
90
84
|
const q = buildProfileQuery(opts.profile);
|
|
91
|
-
return await fetchBrowserJson(
|
|
85
|
+
return await fetchBrowserJson(`${baseUrl}/set/credentials${q}`, {
|
|
92
86
|
method: "POST",
|
|
93
87
|
headers: { "Content-Type": "application/json" },
|
|
94
88
|
body: JSON.stringify({
|
|
@@ -102,7 +96,7 @@ export async function browserSetHttpCredentials(baseUrl, opts = {}) {
|
|
|
102
96
|
}
|
|
103
97
|
export async function browserSetGeolocation(baseUrl, opts = {}) {
|
|
104
98
|
const q = buildProfileQuery(opts.profile);
|
|
105
|
-
return await fetchBrowserJson(
|
|
99
|
+
return await fetchBrowserJson(`${baseUrl}/set/geolocation${q}`, {
|
|
106
100
|
method: "POST",
|
|
107
101
|
headers: { "Content-Type": "application/json" },
|
|
108
102
|
body: JSON.stringify({
|
|
@@ -118,7 +112,7 @@ export async function browserSetGeolocation(baseUrl, opts = {}) {
|
|
|
118
112
|
}
|
|
119
113
|
export async function browserSetMedia(baseUrl, opts) {
|
|
120
114
|
const q = buildProfileQuery(opts.profile);
|
|
121
|
-
return await fetchBrowserJson(
|
|
115
|
+
return await fetchBrowserJson(`${baseUrl}/set/media${q}`, {
|
|
122
116
|
method: "POST",
|
|
123
117
|
headers: { "Content-Type": "application/json" },
|
|
124
118
|
body: JSON.stringify({
|
|
@@ -130,7 +124,7 @@ export async function browserSetMedia(baseUrl, opts) {
|
|
|
130
124
|
}
|
|
131
125
|
export async function browserSetTimezone(baseUrl, opts) {
|
|
132
126
|
const q = buildProfileQuery(opts.profile);
|
|
133
|
-
return await fetchBrowserJson(
|
|
127
|
+
return await fetchBrowserJson(`${baseUrl}/set/timezone${q}`, {
|
|
134
128
|
method: "POST",
|
|
135
129
|
headers: { "Content-Type": "application/json" },
|
|
136
130
|
body: JSON.stringify({
|
|
@@ -142,7 +136,7 @@ export async function browserSetTimezone(baseUrl, opts) {
|
|
|
142
136
|
}
|
|
143
137
|
export async function browserSetLocale(baseUrl, opts) {
|
|
144
138
|
const q = buildProfileQuery(opts.profile);
|
|
145
|
-
return await fetchBrowserJson(
|
|
139
|
+
return await fetchBrowserJson(`${baseUrl}/set/locale${q}`, {
|
|
146
140
|
method: "POST",
|
|
147
141
|
headers: { "Content-Type": "application/json" },
|
|
148
142
|
body: JSON.stringify({ targetId: opts.targetId, locale: opts.locale }),
|
|
@@ -151,7 +145,7 @@ export async function browserSetLocale(baseUrl, opts) {
|
|
|
151
145
|
}
|
|
152
146
|
export async function browserSetDevice(baseUrl, opts) {
|
|
153
147
|
const q = buildProfileQuery(opts.profile);
|
|
154
|
-
return await fetchBrowserJson(
|
|
148
|
+
return await fetchBrowserJson(`${baseUrl}/set/device${q}`, {
|
|
155
149
|
method: "POST",
|
|
156
150
|
headers: { "Content-Type": "application/json" },
|
|
157
151
|
body: JSON.stringify({ targetId: opts.targetId, name: opts.name }),
|
|
@@ -160,7 +154,7 @@ export async function browserSetDevice(baseUrl, opts) {
|
|
|
160
154
|
}
|
|
161
155
|
export async function browserClearPermissions(baseUrl, opts = {}) {
|
|
162
156
|
const q = buildProfileQuery(opts.profile);
|
|
163
|
-
return await fetchBrowserJson(
|
|
157
|
+
return await fetchBrowserJson(`${baseUrl}/set/geolocation${q}`, {
|
|
164
158
|
method: "POST",
|
|
165
159
|
headers: { "Content-Type": "application/json" },
|
|
166
160
|
body: JSON.stringify({ targetId: opts.targetId, clear: true }),
|
|
@@ -1,91 +1,78 @@
|
|
|
1
|
+
import { extractErrorCode, formatErrorMessage } from "../infra/errors.js";
|
|
2
|
+
import { loadConfig } from "../config/config.js";
|
|
1
3
|
import { formatCliCommand } from "../cli/command-format.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
function
|
|
5
|
-
|
|
4
|
+
import { resolveBrowserConfig } from "./config.js";
|
|
5
|
+
let cachedConfigToken = undefined;
|
|
6
|
+
function getBrowserControlToken() {
|
|
7
|
+
const env = process.env.CLAWDBOT_BROWSER_CONTROL_TOKEN?.trim();
|
|
8
|
+
if (env)
|
|
9
|
+
return env;
|
|
10
|
+
if (cachedConfigToken !== undefined)
|
|
11
|
+
return cachedConfigToken;
|
|
12
|
+
try {
|
|
13
|
+
const cfg = loadConfig();
|
|
14
|
+
const resolved = resolveBrowserConfig(cfg.browser);
|
|
15
|
+
const token = resolved.controlToken?.trim() || "";
|
|
16
|
+
cachedConfigToken = token ? token : null;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
cachedConfigToken = null;
|
|
20
|
+
}
|
|
21
|
+
return cachedConfigToken;
|
|
22
|
+
}
|
|
23
|
+
function unwrapCause(err) {
|
|
24
|
+
if (!err || typeof err !== "object")
|
|
25
|
+
return null;
|
|
26
|
+
const cause = err.cause;
|
|
27
|
+
return cause ?? null;
|
|
6
28
|
}
|
|
7
29
|
function enhanceBrowserFetchError(url, err, timeoutMs) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const looksLikeTimeout = msgLower.includes("timed out") ||
|
|
14
|
-
msgLower.includes("timeout") ||
|
|
15
|
-
msgLower.includes("aborted") ||
|
|
16
|
-
msgLower.includes("abort") ||
|
|
17
|
-
msgLower.includes("aborterror");
|
|
18
|
-
if (looksLikeTimeout) {
|
|
19
|
-
return new Error(`Can't reach the clawd browser control service (timed out after ${timeoutMs}ms). ${hint}`);
|
|
30
|
+
const cause = unwrapCause(err);
|
|
31
|
+
const code = extractErrorCode(cause) ?? extractErrorCode(err) ?? "";
|
|
32
|
+
const hint = `Start (or restart) the Clawdbot gateway (Clawdbot.app menubar, or \`${formatCliCommand("clawdbot gateway")}\`) and try again.`;
|
|
33
|
+
if (code === "ECONNREFUSED") {
|
|
34
|
+
return new Error(`Can't reach the clawd browser control server at ${url} (connection refused). ${hint}`);
|
|
20
35
|
}
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
async function fetchHttpJson(url, init) {
|
|
24
|
-
const timeoutMs = init.timeoutMs ?? 5000;
|
|
25
|
-
const ctrl = new AbortController();
|
|
26
|
-
const t = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
27
|
-
try {
|
|
28
|
-
const res = await fetch(url, { ...init, signal: ctrl.signal });
|
|
29
|
-
if (!res.ok) {
|
|
30
|
-
const text = await res.text().catch(() => "");
|
|
31
|
-
throw new Error(text || `HTTP ${res.status}`);
|
|
32
|
-
}
|
|
33
|
-
return (await res.json());
|
|
36
|
+
if (code === "ETIMEDOUT" || code === "UND_ERR_CONNECT_TIMEOUT") {
|
|
37
|
+
return new Error(`Can't reach the clawd browser control server at ${url} (timed out after ${timeoutMs}ms). ${hint}`);
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
const msg = formatErrorMessage(err);
|
|
40
|
+
if (msg.toLowerCase().includes("abort")) {
|
|
41
|
+
return new Error(`Can't reach the clawd browser control server at ${url} (timed out after ${timeoutMs}ms). ${hint}`);
|
|
37
42
|
}
|
|
43
|
+
return new Error(`Can't reach the clawd browser control server at ${url}. ${hint} (${msg})`);
|
|
38
44
|
}
|
|
39
45
|
export async function fetchBrowserJson(url, init) {
|
|
40
46
|
const timeoutMs = init?.timeoutMs ?? 5000;
|
|
47
|
+
const ctrl = new AbortController();
|
|
48
|
+
const t = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
49
|
+
let res;
|
|
41
50
|
try {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const dispatcher = createBrowserRouteDispatcher(createBrowserControlContext());
|
|
50
|
-
const parsed = new URL(url, "http://localhost");
|
|
51
|
-
const query = {};
|
|
52
|
-
for (const [key, value] of parsed.searchParams.entries()) {
|
|
53
|
-
query[key] = value;
|
|
54
|
-
}
|
|
55
|
-
let body = init?.body;
|
|
56
|
-
if (typeof body === "string") {
|
|
57
|
-
try {
|
|
58
|
-
body = JSON.parse(body);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// keep as string
|
|
51
|
+
const token = getBrowserControlToken();
|
|
52
|
+
const mergedHeaders = (() => {
|
|
53
|
+
if (!token)
|
|
54
|
+
return init?.headers;
|
|
55
|
+
const h = new Headers(init?.headers ?? {});
|
|
56
|
+
if (!h.has("Authorization")) {
|
|
57
|
+
h.set("Authorization", `Bearer ${token}`);
|
|
62
58
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
: "GET",
|
|
70
|
-
path: parsed.pathname,
|
|
71
|
-
query,
|
|
72
|
-
body,
|
|
59
|
+
return h;
|
|
60
|
+
})();
|
|
61
|
+
res = await fetch(url, {
|
|
62
|
+
...init,
|
|
63
|
+
...(mergedHeaders ? { headers: mergedHeaders } : {}),
|
|
64
|
+
signal: ctrl.signal,
|
|
73
65
|
});
|
|
74
|
-
const result = await (timeoutMs
|
|
75
|
-
? Promise.race([
|
|
76
|
-
dispatchPromise,
|
|
77
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error("timed out")), timeoutMs)),
|
|
78
|
-
])
|
|
79
|
-
: dispatchPromise);
|
|
80
|
-
if (result.status >= 400) {
|
|
81
|
-
const message = result.body && typeof result.body === "object" && "error" in result.body
|
|
82
|
-
? String(result.body.error)
|
|
83
|
-
: `HTTP ${result.status}`;
|
|
84
|
-
throw new Error(message);
|
|
85
|
-
}
|
|
86
|
-
return result.body;
|
|
87
66
|
}
|
|
88
67
|
catch (err) {
|
|
89
68
|
throw enhanceBrowserFetchError(url, err, timeoutMs);
|
|
90
69
|
}
|
|
70
|
+
finally {
|
|
71
|
+
clearTimeout(t);
|
|
72
|
+
}
|
|
73
|
+
if (!res.ok) {
|
|
74
|
+
const text = await res.text().catch(() => "");
|
|
75
|
+
throw new Error(text ? `${res.status}: ${text}` : `HTTP ${res.status}`);
|
|
76
|
+
}
|
|
77
|
+
return (await res.json());
|
|
91
78
|
}
|
package/dist/browser/client.js
CHANGED
|
@@ -1,48 +1,50 @@
|
|
|
1
|
+
import { loadConfig } from "../config/config.js";
|
|
1
2
|
import { fetchBrowserJson } from "./client-fetch.js";
|
|
3
|
+
import { resolveBrowserConfig } from "./config.js";
|
|
4
|
+
export function resolveBrowserControlUrl(overrideUrl) {
|
|
5
|
+
const cfg = loadConfig();
|
|
6
|
+
const resolved = resolveBrowserConfig(cfg.browser);
|
|
7
|
+
const url = overrideUrl?.trim() ? overrideUrl.trim() : resolved.controlUrl;
|
|
8
|
+
return url.replace(/\/$/, "");
|
|
9
|
+
}
|
|
2
10
|
function buildProfileQuery(profile) {
|
|
3
11
|
return profile ? `?profile=${encodeURIComponent(profile)}` : "";
|
|
4
12
|
}
|
|
5
|
-
function withBaseUrl(baseUrl, path) {
|
|
6
|
-
const trimmed = baseUrl?.trim();
|
|
7
|
-
if (!trimmed)
|
|
8
|
-
return path;
|
|
9
|
-
return `${trimmed.replace(/\/$/, "")}${path}`;
|
|
10
|
-
}
|
|
11
13
|
export async function browserStatus(baseUrl, opts) {
|
|
12
14
|
const q = buildProfileQuery(opts?.profile);
|
|
13
|
-
return await fetchBrowserJson(
|
|
15
|
+
return await fetchBrowserJson(`${baseUrl}/${q}`, {
|
|
14
16
|
timeoutMs: 1500,
|
|
15
17
|
});
|
|
16
18
|
}
|
|
17
19
|
export async function browserProfiles(baseUrl) {
|
|
18
|
-
const res = await fetchBrowserJson(
|
|
20
|
+
const res = await fetchBrowserJson(`${baseUrl}/profiles`, {
|
|
19
21
|
timeoutMs: 3000,
|
|
20
22
|
});
|
|
21
23
|
return res.profiles ?? [];
|
|
22
24
|
}
|
|
23
25
|
export async function browserStart(baseUrl, opts) {
|
|
24
26
|
const q = buildProfileQuery(opts?.profile);
|
|
25
|
-
await fetchBrowserJson(
|
|
27
|
+
await fetchBrowserJson(`${baseUrl}/start${q}`, {
|
|
26
28
|
method: "POST",
|
|
27
29
|
timeoutMs: 15000,
|
|
28
30
|
});
|
|
29
31
|
}
|
|
30
32
|
export async function browserStop(baseUrl, opts) {
|
|
31
33
|
const q = buildProfileQuery(opts?.profile);
|
|
32
|
-
await fetchBrowserJson(
|
|
34
|
+
await fetchBrowserJson(`${baseUrl}/stop${q}`, {
|
|
33
35
|
method: "POST",
|
|
34
36
|
timeoutMs: 15000,
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
export async function browserResetProfile(baseUrl, opts) {
|
|
38
40
|
const q = buildProfileQuery(opts?.profile);
|
|
39
|
-
return await fetchBrowserJson(
|
|
41
|
+
return await fetchBrowserJson(`${baseUrl}/reset-profile${q}`, {
|
|
40
42
|
method: "POST",
|
|
41
43
|
timeoutMs: 20000,
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
46
|
export async function browserCreateProfile(baseUrl, opts) {
|
|
45
|
-
return await fetchBrowserJson(
|
|
47
|
+
return await fetchBrowserJson(`${baseUrl}/profiles/create`, {
|
|
46
48
|
method: "POST",
|
|
47
49
|
headers: { "Content-Type": "application/json" },
|
|
48
50
|
body: JSON.stringify({
|
|
@@ -55,19 +57,19 @@ export async function browserCreateProfile(baseUrl, opts) {
|
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
export async function browserDeleteProfile(baseUrl, profile) {
|
|
58
|
-
return await fetchBrowserJson(
|
|
60
|
+
return await fetchBrowserJson(`${baseUrl}/profiles/${encodeURIComponent(profile)}`, {
|
|
59
61
|
method: "DELETE",
|
|
60
62
|
timeoutMs: 20000,
|
|
61
63
|
});
|
|
62
64
|
}
|
|
63
65
|
export async function browserTabs(baseUrl, opts) {
|
|
64
66
|
const q = buildProfileQuery(opts?.profile);
|
|
65
|
-
const res = await fetchBrowserJson(
|
|
67
|
+
const res = await fetchBrowserJson(`${baseUrl}/tabs${q}`, { timeoutMs: 3000 });
|
|
66
68
|
return res.tabs ?? [];
|
|
67
69
|
}
|
|
68
70
|
export async function browserOpenTab(baseUrl, url, opts) {
|
|
69
71
|
const q = buildProfileQuery(opts?.profile);
|
|
70
|
-
return await fetchBrowserJson(
|
|
72
|
+
return await fetchBrowserJson(`${baseUrl}/tabs/open${q}`, {
|
|
71
73
|
method: "POST",
|
|
72
74
|
headers: { "Content-Type": "application/json" },
|
|
73
75
|
body: JSON.stringify({ url }),
|
|
@@ -76,7 +78,7 @@ export async function browserOpenTab(baseUrl, url, opts) {
|
|
|
76
78
|
}
|
|
77
79
|
export async function browserFocusTab(baseUrl, targetId, opts) {
|
|
78
80
|
const q = buildProfileQuery(opts?.profile);
|
|
79
|
-
await fetchBrowserJson(
|
|
81
|
+
await fetchBrowserJson(`${baseUrl}/tabs/focus${q}`, {
|
|
80
82
|
method: "POST",
|
|
81
83
|
headers: { "Content-Type": "application/json" },
|
|
82
84
|
body: JSON.stringify({ targetId }),
|
|
@@ -85,14 +87,14 @@ export async function browserFocusTab(baseUrl, targetId, opts) {
|
|
|
85
87
|
}
|
|
86
88
|
export async function browserCloseTab(baseUrl, targetId, opts) {
|
|
87
89
|
const q = buildProfileQuery(opts?.profile);
|
|
88
|
-
await fetchBrowserJson(
|
|
90
|
+
await fetchBrowserJson(`${baseUrl}/tabs/${encodeURIComponent(targetId)}${q}`, {
|
|
89
91
|
method: "DELETE",
|
|
90
92
|
timeoutMs: 5000,
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
export async function browserTabAction(baseUrl, opts) {
|
|
94
96
|
const q = buildProfileQuery(opts.profile);
|
|
95
|
-
return await fetchBrowserJson(
|
|
97
|
+
return await fetchBrowserJson(`${baseUrl}/tabs/action${q}`, {
|
|
96
98
|
method: "POST",
|
|
97
99
|
headers: { "Content-Type": "application/json" },
|
|
98
100
|
body: JSON.stringify({
|
|
@@ -130,7 +132,7 @@ export async function browserSnapshot(baseUrl, opts) {
|
|
|
130
132
|
q.set("mode", opts.mode);
|
|
131
133
|
if (opts.profile)
|
|
132
134
|
q.set("profile", opts.profile);
|
|
133
|
-
return await fetchBrowserJson(
|
|
135
|
+
return await fetchBrowserJson(`${baseUrl}/snapshot?${q.toString()}`, {
|
|
134
136
|
timeoutMs: 20000,
|
|
135
137
|
});
|
|
136
138
|
}
|
package/dist/browser/config.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { deriveDefaultBrowserCdpPortRange, deriveDefaultBrowserControlPort,
|
|
2
|
-
import {
|
|
3
|
-
import { DEFAULT_CLAWD_BROWSER_COLOR, DEFAULT_CLAWD_BROWSER_ENABLED, DEFAULT_BROWSER_EVALUATE_ENABLED, DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, DEFAULT_CLAWD_BROWSER_PROFILE_NAME, } from "./constants.js";
|
|
1
|
+
import { deriveDefaultBrowserCdpPortRange, deriveDefaultBrowserControlPort, } from "../config/port-defaults.js";
|
|
2
|
+
import { DEFAULT_CLAWD_BROWSER_COLOR, DEFAULT_CLAWD_BROWSER_CONTROL_URL, DEFAULT_CLAWD_BROWSER_ENABLED, DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, DEFAULT_CLAWD_BROWSER_PROFILE_NAME, } from "./constants.js";
|
|
4
3
|
import { CDP_PORT_RANGE_START, getUsedPorts } from "./profiles.js";
|
|
5
4
|
function isLoopbackHost(host) {
|
|
6
5
|
const h = host.trim().toLowerCase();
|
|
@@ -62,7 +61,7 @@ function ensureDefaultProfile(profiles, defaultColor, legacyCdpPort, derivedDefa
|
|
|
62
61
|
/**
|
|
63
62
|
* Ensure a built-in "chrome" profile exists for the Chrome extension relay.
|
|
64
63
|
*
|
|
65
|
-
* Note: this is a
|
|
64
|
+
* Note: this is a Clawdbot browser profile (routing config), not a Chrome user profile.
|
|
66
65
|
* It points at the local relay CDP endpoint (controlPort + 1).
|
|
67
66
|
*/
|
|
68
67
|
function ensureDefaultChromeExtensionProfile(profiles, controlPort) {
|
|
@@ -83,11 +82,22 @@ function ensureDefaultChromeExtensionProfile(profiles, controlPort) {
|
|
|
83
82
|
};
|
|
84
83
|
return result;
|
|
85
84
|
}
|
|
86
|
-
export function resolveBrowserConfig(cfg
|
|
85
|
+
export function resolveBrowserConfig(cfg) {
|
|
87
86
|
const enabled = cfg?.enabled ?? DEFAULT_CLAWD_BROWSER_ENABLED;
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
const
|
|
87
|
+
const envControlUrl = process.env.CLAWDBOT_BROWSER_CONTROL_URL?.trim();
|
|
88
|
+
const controlToken = cfg?.controlToken?.trim() || undefined;
|
|
89
|
+
const derivedControlPort = (() => {
|
|
90
|
+
const raw = process.env.CLAWDBOT_GATEWAY_PORT?.trim();
|
|
91
|
+
if (!raw)
|
|
92
|
+
return null;
|
|
93
|
+
const gatewayPort = Number.parseInt(raw, 10);
|
|
94
|
+
if (!Number.isFinite(gatewayPort) || gatewayPort <= 0)
|
|
95
|
+
return null;
|
|
96
|
+
return deriveDefaultBrowserControlPort(gatewayPort);
|
|
97
|
+
})();
|
|
98
|
+
const derivedControlUrl = derivedControlPort ? `http://127.0.0.1:${derivedControlPort}` : null;
|
|
99
|
+
const controlInfo = parseHttpUrl(cfg?.controlUrl ?? envControlUrl ?? derivedControlUrl ?? DEFAULT_CLAWD_BROWSER_CONTROL_URL, "browser.controlUrl");
|
|
100
|
+
const controlPort = controlInfo.port;
|
|
91
101
|
const defaultColor = normalizeHexColor(cfg?.color);
|
|
92
102
|
const remoteCdpTimeoutMs = normalizeTimeoutMs(cfg?.remoteCdpTimeoutMs, 1500);
|
|
93
103
|
const remoteCdpHandshakeTimeoutMs = normalizeTimeoutMs(cfg?.remoteCdpHandshakeTimeoutMs, Math.max(2000, remoteCdpTimeoutMs * 2));
|
|
@@ -100,9 +110,10 @@ export function resolveBrowserConfig(cfg, rootConfig) {
|
|
|
100
110
|
else {
|
|
101
111
|
const derivedPort = controlPort + 1;
|
|
102
112
|
if (derivedPort > 65535) {
|
|
103
|
-
throw new Error(`
|
|
113
|
+
throw new Error(`browser.controlUrl port (${controlPort}) is too high; cannot derive CDP port (${derivedPort})`);
|
|
104
114
|
}
|
|
105
|
-
const derived = new URL(
|
|
115
|
+
const derived = new URL(controlInfo.normalized);
|
|
116
|
+
derived.port = String(derivedPort);
|
|
106
117
|
cdpInfo = {
|
|
107
118
|
parsed: derived,
|
|
108
119
|
port: derivedPort,
|
|
@@ -124,8 +135,10 @@ export function resolveBrowserConfig(cfg, rootConfig) {
|
|
|
124
135
|
: DEFAULT_CLAWD_BROWSER_PROFILE_NAME);
|
|
125
136
|
return {
|
|
126
137
|
enabled,
|
|
127
|
-
|
|
138
|
+
controlUrl: controlInfo.normalized,
|
|
139
|
+
controlHost: controlInfo.parsed.hostname,
|
|
128
140
|
controlPort,
|
|
141
|
+
...(controlToken ? { controlToken } : {}),
|
|
129
142
|
cdpProtocol,
|
|
130
143
|
cdpHost: cdpInfo.parsed.hostname,
|
|
131
144
|
cdpIsLoopback: isLoopbackHost(cdpInfo.parsed.hostname),
|
|
@@ -175,6 +188,6 @@ export function resolveProfile(resolved, profileName) {
|
|
|
175
188
|
driver,
|
|
176
189
|
};
|
|
177
190
|
}
|
|
178
|
-
export function shouldStartLocalBrowserServer(
|
|
179
|
-
return
|
|
191
|
+
export function shouldStartLocalBrowserServer(resolved) {
|
|
192
|
+
return isLoopbackHost(resolved.controlHost);
|
|
180
193
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const DEFAULT_CLAWD_BROWSER_ENABLED = true;
|
|
2
|
-
export const
|
|
2
|
+
export const DEFAULT_CLAWD_BROWSER_CONTROL_URL = "http://127.0.0.1:18791";
|
|
3
3
|
export const DEFAULT_CLAWD_BROWSER_COLOR = "#FF4500";
|
|
4
4
|
export const DEFAULT_CLAWD_BROWSER_PROFILE_NAME = "clawd";
|
|
5
5
|
export const DEFAULT_BROWSER_DEFAULT_PROFILE_NAME = "chrome";
|