@gguf/pigbot 0.0.6 → 0.0.7
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 +1206 -12
- package/LICENSE +2 -2
- package/README.md +347 -37
- package/assets/chrome-extension/README.md +5 -5
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +5 -5
- package/assets/chrome-extension/options.js +1 -1
- package/dist/acp/client.js +5 -5
- package/dist/acp/server.js +3 -3
- package/dist/acp/types.js +2 -2
- package/dist/agents/agent-paths.js +6 -6
- package/dist/agents/agent-scope.js +1 -1
- package/dist/agents/anthropic-payload-log.js +2 -2
- package/dist/agents/auth-profiles/doctor.js +1 -1
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/bash-tools.exec.js +1 -1
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cache-trace.js +5 -5
- package/dist/agents/channel-tools.js +31 -2
- package/dist/agents/cli-runner/helpers.js +3 -3
- package/dist/agents/cli-runner.js +3 -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/live-auth-keys.js +2 -2
- package/dist/agents/memory-search.js +5 -0
- package/dist/agents/minimax-vlm.js +1 -1
- package/dist/agents/model-auth.js +2 -1
- package/dist/agents/model-catalog.js +4 -4
- package/dist/agents/model-selection.js +1 -1
- package/dist/agents/models-config.js +3 -3
- package/dist/agents/models-config.providers.js +40 -8
- package/dist/agents/{moltbot-tools.js → openclaw-tools.js} +1 -1
- package/dist/agents/pi-embedded-helpers/errors.js +20 -0
- package/dist/agents/pi-embedded-helpers/openai.js +1 -1
- package/dist/agents/pi-embedded-helpers.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/model.js +2 -2
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
- package/dist/agents/pi-embedded-runner/run.js +31 -5
- package/dist/agents/pi-embedded-runner/session-manager-cache.js +1 -1
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +2 -2
- package/dist/agents/pi-tools.js +5 -5
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/sandbox/browser.js +16 -11
- package/dist/agents/sandbox/constants.js +7 -7
- package/dist/agents/sandbox/docker.js +17 -14
- 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 +2 -2
- package/dist/agents/skills/bundled-dir.js +1 -1
- package/dist/agents/skills/config.js +2 -1
- package/dist/agents/skills/frontmatter.js +11 -3
- package/dist/agents/skills/workspace.js +6 -6
- package/dist/agents/synthetic-models.js +8 -0
- package/dist/agents/system-prompt.js +21 -21
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.js +2 -2
- package/dist/agents/tools/browser-tool.js +5 -5
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/memory-tool.js +1 -1
- package/dist/agents/tools/sessions-send-tool.js +2 -2
- package/dist/agents/tools/web-search.js +7 -7
- package/dist/agents/transcript-policy.js +2 -1
- package/dist/agents/workspace.js +3 -3
- package/dist/auto-reply/commands-registry.data.js +1 -1
- package/dist/auto-reply/reply/agent-runner-execution.js +1 -1
- 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-session.js +4 -4
- package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +21 -0
- package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
- package/dist/auto-reply/reply/get-reply.js +1 -1
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/mentions.js +3 -2
- package/dist/auto-reply/reply/normalize-reply.js +12 -4
- package/dist/auto-reply/reply/reply-dispatcher.js +8 -1
- package/dist/auto-reply/reply/reply-elevated.js +1 -1
- package/dist/auto-reply/reply/stage-sandbox-media.js +1 -1
- package/dist/auto-reply/status.js +2 -2
- package/dist/browser/chrome.js +13 -13
- package/dist/browser/chrome.profile-decoration.js +5 -5
- package/dist/browser/client-fetch.js +3 -3
- package/dist/browser/config.js +11 -11
- package/dist/browser/constants.js +3 -3
- package/dist/browser/control-service.js +1 -1
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/profiles-service.js +2 -2
- package/dist/browser/profiles.js +1 -1
- 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 +2 -2
- package/dist/browser/routes/agent.debug.js +1 -1
- package/dist/browser/server-context.js +9 -9
- package/dist/browser/server.js +2 -2
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +24 -19
- package/dist/canvas-host/a2ui/index.html +28 -28
- package/dist/canvas-host/a2ui.js +14 -18
- package/dist/canvas-host/server.js +33 -35
- package/dist/channels/plugins/catalog.js +7 -7
- package/dist/channels/plugins/helpers.js +2 -2
- 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 +5 -5
- package/dist/channels/plugins/onboarding/telegram.js +3 -3
- package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
- 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 +2 -2
- package/dist/cli/banner.js +10 -11
- package/dist/cli/browser-cli-actions-input/register.files-downloads.js +1 -1
- package/dist/cli/browser-cli-examples.js +29 -29
- package/dist/cli/browser-cli-extension.js +5 -5
- package/dist/cli/browser-cli-manage.js +4 -4
- package/dist/cli/browser-cli.js +3 -3
- package/dist/cli/channel-options.js +1 -1
- package/dist/cli/channels-cli.js +1 -1
- package/dist/cli/cli-name.js +4 -8
- package/dist/cli/command-format.js +3 -3
- package/dist/cli/config-cli.js +2 -2
- package/dist/cli/cron-cli/register.js +1 -1
- package/dist/cli/daemon-cli/install.js +2 -2
- package/dist/cli/daemon-cli/register.js +1 -1
- package/dist/cli/daemon-cli/shared.js +11 -13
- package/dist/cli/daemon-cli/status.gather.js +2 -5
- package/dist/cli/daemon-cli/status.print.js +9 -17
- package/dist/cli/directory-cli.js +1 -1
- package/dist/cli/dns-cli.js +20 -13
- package/dist/cli/docs-cli.js +2 -2
- package/dist/cli/exec-approvals-cli.js +2 -2
- package/dist/cli/gateway-cli/dev.js +7 -5
- package/dist/cli/gateway-cli/register.js +12 -6
- package/dist/cli/gateway-cli/run.js +15 -14
- package/dist/cli/gateway-cli/shared.js +5 -5
- package/dist/cli/hooks-cli.js +3 -3
- package/dist/cli/logs-cli.js +3 -3
- package/dist/cli/memory-cli.js +36 -5
- package/dist/cli/models-cli.js +1 -1
- package/dist/cli/node-cli/daemon.js +3 -3
- package/dist/cli/node-cli/register.js +1 -1
- package/dist/cli/nodes-cli/register.canvas.js +1 -1
- package/dist/cli/nodes-cli/register.js +1 -1
- package/dist/cli/nodes-screen.js +1 -1
- package/dist/cli/pairing-cli.js +3 -3
- package/dist/cli/plugin-registry.js +2 -2
- package/dist/cli/plugins-cli.js +3 -3
- package/dist/cli/profile.js +9 -9
- package/dist/cli/program/config-guard.js +1 -1
- package/dist/cli/program/help.js +14 -11
- package/dist/cli/program/preaction.js +1 -1
- package/dist/cli/program/register.agent.js +15 -12
- package/dist/cli/program/register.configure.js +1 -1
- package/dist/cli/program/register.maintenance.js +4 -4
- package/dist/cli/program/register.message.js +5 -5
- package/dist/cli/program/register.onboard.js +5 -3
- package/dist/cli/program/register.setup.js +3 -3
- package/dist/cli/program/register.status-health-sessions.js +13 -13
- package/dist/cli/program/register.subclis.js +7 -2
- package/dist/cli/route.js +1 -1
- package/dist/cli/run-main.js +3 -3
- package/dist/cli/sandbox-cli.js +19 -19
- package/dist/cli/security-cli.js +4 -4
- package/dist/cli/skills-cli.js +3 -3
- package/dist/cli/system-cli.js +1 -1
- package/dist/cli/tagline.js +11 -9
- package/dist/cli/tui-cli.js +1 -1
- package/dist/cli/update-cli.js +48 -45
- package/dist/cli/webhooks-cli.js +6 -6
- package/dist/commands/agent-via-gateway.js +1 -1
- package/dist/commands/agent.js +1 -1
- package/dist/commands/agents.command-shared.js +1 -1
- package/dist/commands/agents.commands.add.js +2 -2
- package/dist/commands/agents.commands.list.js +1 -1
- package/dist/commands/auth-choice-options.js +10 -0
- package/dist/commands/auth-choice.apply.api-providers.js +49 -1
- package/dist/commands/auth-choice.apply.openai.js +1 -1
- package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
- package/dist/commands/auth-choice.preferred-provider.js +1 -0
- 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 +2 -2
- package/dist/commands/configure.gateway.js +1 -1
- package/dist/commands/configure.wizard.js +21 -21
- package/dist/commands/daemon-install-helpers.js +2 -2
- package/dist/commands/dashboard.js +2 -2
- package/dist/commands/docs.js +5 -5
- package/dist/commands/doctor-auth.js +5 -5
- package/dist/commands/doctor-config-flow.js +64 -7
- package/dist/commands/doctor-format.js +5 -5
- package/dist/commands/doctor-gateway-daemon-flow.js +7 -4
- package/dist/commands/doctor-gateway-services.js +72 -65
- package/dist/commands/doctor-platform-notes.js +51 -9
- package/dist/commands/doctor-sandbox.js +4 -4
- package/dist/commands/doctor-security.js +7 -7
- package/dist/commands/doctor-state-integrity.js +9 -7
- package/dist/commands/doctor-state-migrations.js +1 -1
- package/dist/commands/doctor-ui.js +2 -2
- package/dist/commands/doctor-update.js +5 -5
- package/dist/commands/doctor-workspace-status.js +2 -2
- package/dist/commands/doctor-workspace.js +5 -27
- package/dist/commands/doctor.js +11 -11
- package/dist/commands/gateway-status/helpers.js +2 -2
- package/dist/commands/gateway-status.js +9 -3
- package/dist/commands/health.js +2 -2
- package/dist/commands/models/auth.js +1 -1
- 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 +4 -4
- package/dist/commands/node-daemon-install-helpers.js +1 -1
- package/dist/commands/onboard-auth.config-core.js +65 -1
- package/dist/commands/onboard-auth.credentials.js +14 -2
- package/dist/commands/onboard-auth.js +2 -2
- package/dist/commands/onboard-channels.js +5 -5
- package/dist/commands/onboard-helpers.js +9 -8
- package/dist/commands/onboard-hooks.js +4 -4
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +21 -1
- 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 +7 -3
- package/dist/commands/onboard-skills.js +2 -2
- package/dist/commands/onboard.js +3 -3
- 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 +9 -7
- 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 +5 -5
- package/dist/commands/status.command.js +9 -9
- package/dist/commands/status.gateway-probe.js +2 -2
- package/dist/commands/status.scan.js +2 -2
- package/dist/commands/status.update.js +3 -3
- package/dist/commands/uninstall.js +4 -4
- package/dist/compat/legacy-names.js +8 -6
- package/dist/config/config.js +1 -1
- package/dist/config/io.js +13 -14
- package/dist/config/paths.js +107 -33
- package/dist/config/schema.js +14 -12
- package/dist/config/sessions/store.js +1 -1
- package/dist/config/sessions/transcript.js +1 -1
- package/dist/config/types.js +1 -1
- package/dist/config/validation.js +2 -2
- package/dist/config/version.js +4 -4
- package/dist/config/zod-schema.agent-runtime.js +1 -0
- package/dist/config/zod-schema.js +3 -2
- package/dist/config/zod-schema.session.js +6 -1
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/index-BKPyesll.css +1 -0
- package/dist/control-ui/assets/{index-CxLFx0Ae.js → index-DFDgq9AK.js} +397 -366
- package/dist/control-ui/assets/index-DFDgq9AK.js.map +1 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.svg +22 -0
- package/dist/control-ui/index.html +7 -5
- package/dist/daemon/constants.js +19 -25
- package/dist/daemon/inspect.js +64 -28
- package/dist/daemon/launchd.js +7 -7
- package/dist/daemon/node-service.js +14 -14
- package/dist/daemon/paths.js +3 -3
- package/dist/daemon/program-args.js +1 -1
- package/dist/daemon/schtasks.js +6 -6
- package/dist/daemon/service-env.js +25 -21
- package/dist/daemon/systemd-hints.js +1 -1
- package/dist/daemon/systemd-unit.js +1 -1
- package/dist/daemon/systemd.js +6 -6
- package/dist/discord/send.outbound.js +4 -4
- package/dist/discord/send.shared.js +32 -1
- package/dist/discord/targets.js +79 -0
- package/dist/entry.js +9 -8
- package/dist/gateway/auth.js +6 -3
- package/dist/gateway/call.js +3 -1
- package/dist/gateway/control-ui.js +4 -4
- package/dist/gateway/hooks.js +3 -1
- package/dist/gateway/http-utils.js +5 -3
- 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/server/ws-connection/message-handler.js +1 -1
- package/dist/gateway/server-browser.js +2 -2
- package/dist/gateway/server-constants.js +2 -2
- package/dist/gateway/server-cron.js +1 -1
- package/dist/gateway/server-discovery-runtime.js +12 -4
- package/dist/gateway/server-discovery.js +7 -7
- package/dist/gateway/server-http.js +1 -1
- package/dist/gateway/server-methods/config.js +2 -2
- package/dist/gateway/server-methods/logs.js +1 -1
- package/dist/gateway/server-methods/update.js +2 -2
- package/dist/gateway/server-plugins.js +2 -2
- package/dist/gateway/server-reload-handlers.js +5 -5
- package/dist/gateway/server-runtime-config.js +3 -3
- package/dist/gateway/server-startup.js +6 -6
- package/dist/gateway/server.impl.js +8 -7
- package/dist/gateway/session-utils.fs.js +2 -1
- package/dist/gateway/test-helpers.mocks.js +8 -6
- package/dist/gateway/test-helpers.server.js +28 -28
- package/dist/gateway/tools-invoke-http.js +40 -4
- package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
- package/dist/hooks/bundled/command-logger/HOOK.md +12 -12
- package/dist/hooks/bundled/command-logger/handler.js +2 -1
- package/dist/hooks/bundled/session-memory/HOOK.md +30 -7
- package/dist/hooks/bundled/session-memory/handler.js +19 -12
- package/dist/hooks/bundled/soul-evil/HOOK.md +5 -5
- package/dist/hooks/bundled-dir.js +2 -2
- package/dist/hooks/config.js +1 -1
- package/dist/hooks/frontmatter.js +11 -3
- package/dist/hooks/gmail-ops.js +1 -1
- package/dist/hooks/gmail-watcher.js +1 -1
- package/dist/hooks/hooks-status.js +2 -2
- package/dist/hooks/install.js +8 -8
- package/dist/hooks/internal-hooks.js +1 -1
- package/dist/hooks/llm-slug-generator.js +1 -1
- package/dist/hooks/loader.js +1 -1
- package/dist/hooks/plugin-hooks.js +2 -2
- package/dist/hooks/workspace.js +9 -9
- package/dist/imessage/monitor/monitor-provider.js +2 -2
- package/dist/index.js +4 -4
- package/dist/infra/bonjour-discovery.js +21 -17
- package/dist/infra/bonjour.js +10 -9
- package/dist/infra/device-identity.js +1 -1
- package/dist/infra/diagnostic-flags.js +1 -1
- package/dist/infra/dotenv.js +1 -1
- package/dist/infra/exec-approvals.js +2 -2
- package/dist/infra/gateway-lock.js +3 -2
- package/dist/infra/machine-name.js +1 -1
- package/dist/infra/{moltbot-root.js → openclaw-root.js} +2 -2
- package/dist/infra/outbound/outbound-session.js +18 -0
- package/dist/infra/outbound/targets.js +1 -1
- package/dist/infra/path-env.js +10 -9
- package/dist/infra/ports-format.js +3 -2
- package/dist/infra/ports.js +2 -2
- package/dist/infra/provider-usage.auth.js +33 -0
- package/dist/infra/provider-usage.fetch.claude.js +1 -1
- package/dist/infra/provider-usage.fetch.minimax.js +1 -1
- package/dist/infra/provider-usage.load.js +6 -0
- package/dist/infra/provider-usage.shared.js +2 -0
- package/dist/infra/restart-sentinel.js +1 -1
- package/dist/infra/restart.js +4 -4
- package/dist/infra/runtime-guard.js +2 -2
- package/dist/infra/shell-env.js +4 -4
- package/dist/infra/ssh-config.js +2 -1
- package/dist/infra/ssh-tunnel.js +8 -1
- package/dist/infra/state-migrations.js +165 -6
- package/dist/infra/system-presence.js +1 -1
- package/dist/infra/tailscale.js +1 -1
- package/dist/infra/tls/gateway.js +1 -1
- package/dist/infra/unhandled-rejections.js +56 -33
- package/dist/infra/update-check.js +1 -1
- package/dist/infra/update-global.js +21 -11
- package/dist/infra/update-runner.js +7 -7
- package/dist/infra/update-startup.js +3 -3
- package/dist/infra/voicewake.js +1 -1
- package/dist/infra/warnings.js +1 -1
- package/dist/infra/widearea-dns.js +31 -14
- package/dist/logging/logger.js +4 -4
- package/dist/macos/gateway-daemon.js +9 -6
- package/dist/macos/relay-smoke.js +1 -1
- package/dist/macos/relay.js +6 -6
- package/dist/media/host.js +1 -1
- package/dist/media/image-ops.js +3 -3
- package/dist/media/input-files.js +1 -1
- package/dist/media/mime.js +3 -0
- package/dist/media-understanding/apply.js +278 -1
- package/dist/media-understanding/attachments.js +1 -1
- package/dist/media-understanding/providers/image.js +2 -2
- package/dist/media-understanding/runner.js +1 -1
- package/dist/memory/batch-gemini.js +2 -2
- package/dist/memory/batch-openai.js +1 -1
- package/dist/memory/embeddings-gemini.js +1 -1
- package/dist/memory/embeddings.js +1 -1
- package/dist/memory/internal.js +49 -16
- package/dist/memory/manager-cache-key.js +1 -0
- package/dist/memory/manager.js +62 -10
- package/dist/memory/sync-memory-files.js +1 -1
- package/dist/node-host/runner.js +6 -6
- package/dist/pairing/pairing-messages.js +2 -2
- package/dist/plugins/bundled-dir.js +1 -1
- package/dist/plugins/cli.js +2 -2
- package/dist/plugins/config-state.js +60 -0
- package/dist/plugins/discovery.js +14 -12
- package/dist/plugins/install.js +8 -8
- package/dist/plugins/loader.js +4 -7
- package/dist/plugins/manifest-registry.js +4 -4
- package/dist/plugins/manifest.js +4 -7
- package/dist/plugins/providers.js +2 -2
- package/dist/plugins/registry.js +2 -2
- package/dist/plugins/runtime.js +1 -1
- 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/resolve-route.js +2 -0
- package/dist/routing/session-key.js +5 -0
- package/dist/security/audit-extra.js +2 -2
- package/dist/security/audit.js +7 -7
- package/dist/shared/text/reasoning-tags.js +44 -3
- package/dist/slack/monitor/commands.js +4 -3
- package/dist/slack/monitor/slash.js +62 -59
- package/dist/slack/monitor.test-helpers.js +1 -1
- package/dist/telegram/accounts.js +1 -1
- package/dist/telegram/bot/delivery.js +26 -3
- package/dist/telegram/bot/helpers.js +13 -2
- package/dist/telegram/bot-message-context.js +8 -4
- package/dist/telegram/bot-message-dispatch.js +36 -5
- package/dist/telegram/bot-native-commands.js +50 -11
- package/dist/telegram/bot.js +7 -5
- package/dist/telegram/download.js +1 -1
- package/dist/telegram/monitor.js +19 -1
- package/dist/telegram/network-config.js +2 -2
- package/dist/telegram/network-errors.js +4 -0
- package/dist/terminal/links.js +1 -1
- package/dist/tts/tts.js +12 -6
- package/dist/tui/gateway-chat.js +3 -3
- package/dist/tui/tui.js +1 -1
- package/dist/utils.js +12 -3
- package/dist/version.js +3 -3
- package/dist/web/active-listener.js +1 -1
- package/dist/web/auth-store.js +1 -1
- package/dist/web/auto-reply/monitor/broadcast.js +2 -0
- package/dist/web/auto-reply/monitor/process-message.js +1 -1
- package/dist/web/auto-reply/monitor.js +1 -1
- package/dist/web/login.js +1 -1
- package/dist/web/session.js +2 -2
- package/dist/wizard/onboarding.finalize.js +24 -21
- package/dist/wizard/onboarding.gateway-config.js +1 -1
- package/dist/wizard/onboarding.js +11 -11
- package/docs/CNAME +1 -1
- package/docs/_config.yml +3 -3
- package/docs/_layouts/default.html +9 -9
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/theme.js +1 -1
- package/docs/automation/auth-monitoring.md +7 -7
- package/docs/automation/cron-jobs.md +19 -19
- package/docs/automation/cron-vs-heartbeat.md +7 -7
- package/docs/automation/gmail-pubsub.md +25 -25
- package/docs/automation/poll.md +7 -7
- package/docs/automation/webhook.md +5 -5
- package/docs/bedrock.md +10 -10
- package/docs/brave-search.md +1 -1
- package/docs/broadcast-groups.md +6 -6
- package/docs/channels/bluebubbles.md +12 -12
- package/docs/channels/discord.md +15 -15
- package/docs/channels/googlechat.md +16 -16
- package/docs/channels/imessage.md +13 -13
- package/docs/channels/index.md +4 -4
- package/docs/channels/line.md +6 -6
- package/docs/channels/location.md +1 -1
- package/docs/channels/matrix.md +14 -14
- package/docs/channels/mattermost.md +8 -8
- package/docs/channels/msteams.md +26 -26
- package/docs/channels/nextcloud-talk.md +7 -7
- package/docs/channels/nostr.md +9 -9
- package/docs/channels/signal.md +9 -9
- package/docs/channels/slack.md +16 -16
- package/docs/channels/telegram.md +23 -23
- package/docs/channels/tlon.md +5 -5
- package/docs/channels/troubleshooting.md +2 -2
- package/docs/channels/twitch.md +14 -14
- package/docs/channels/whatsapp.md +26 -26
- 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 +12 -12
- package/docs/cli/approvals.md +14 -14
- package/docs/cli/browser.md +24 -24
- 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 -6
- package/docs/cli/docs.md +5 -5
- package/docs/cli/doctor.md +11 -11
- package/docs/cli/gateway.md +26 -26
- package/docs/cli/health.md +5 -5
- package/docs/cli/hooks.md +35 -35
- package/docs/cli/index.md +42 -42
- package/docs/cli/logs.md +6 -6
- package/docs/cli/memory.md +12 -11
- package/docs/cli/message.md +11 -11
- package/docs/cli/models.md +15 -15
- package/docs/cli/node.md +14 -14
- package/docs/cli/nodes.md +14 -14
- package/docs/cli/onboard.md +7 -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 +6 -6
- 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 +27 -27
- package/docs/concepts/agent.md +12 -12
- package/docs/concepts/architecture.md +2 -2
- package/docs/concepts/channel-routing.md +5 -5
- package/docs/concepts/compaction.md +5 -5
- package/docs/concepts/context.md +6 -6
- package/docs/concepts/group-messages.md +7 -7
- package/docs/concepts/groups.md +5 -5
- package/docs/concepts/markdown-formatting.md +3 -3
- package/docs/concepts/memory.md +41 -19
- package/docs/concepts/messages.md +4 -4
- package/docs/concepts/model-failover.md +14 -14
- package/docs/concepts/model-providers.md +25 -24
- package/docs/concepts/models.md +27 -27
- package/docs/concepts/multi-agent.md +31 -31
- package/docs/concepts/oauth.md +22 -22
- 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 +18 -16
- 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 +3 -3
- 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 +6 -6
- package/docs/debugging.md +18 -18
- package/docs/diagnostics/flags.md +7 -7
- package/docs/docs.json +21 -5
- package/docs/environment.md +7 -7
- 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 +12 -12
- package/docs/gateway/authentication.md +22 -22
- package/docs/gateway/background-process.md +2 -2
- package/docs/gateway/bonjour.md +25 -25
- package/docs/gateway/bridge-protocol.md +2 -2
- package/docs/gateway/cli-backends.md +12 -12
- package/docs/gateway/configuration-examples.md +26 -25
- package/docs/gateway/configuration.md +155 -153
- package/docs/gateway/discovery.md +10 -10
- package/docs/gateway/doctor.md +27 -27
- package/docs/gateway/gateway-lock.md +1 -1
- package/docs/gateway/health.md +11 -11
- package/docs/gateway/heartbeat.md +5 -5
- package/docs/gateway/index.md +63 -63
- package/docs/gateway/local-models.md +2 -2
- package/docs/gateway/logging.md +8 -8
- package/docs/gateway/multiple-gateways.md +24 -24
- package/docs/gateway/openai-http-api.md +12 -12
- package/docs/gateway/openresponses-http-api.md +12 -12
- package/docs/gateway/pairing.md +9 -9
- package/docs/gateway/protocol.md +4 -4
- package/docs/gateway/remote-gateway-readme.md +10 -10
- package/docs/gateway/remote.md +4 -4
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +7 -7
- package/docs/gateway/sandboxing.md +6 -6
- package/docs/gateway/security/formal-verification.md +67 -14
- package/docs/gateway/security/index.md +56 -59
- package/docs/gateway/tailscale.md +10 -10
- package/docs/gateway/tools-invoke-http-api.md +5 -5
- package/docs/gateway/troubleshooting.md +112 -112
- package/docs/help/faq.md +338 -338
- package/docs/help/troubleshooting.md +16 -16
- package/docs/hooks/soul-evil.md +2 -2
- package/docs/hooks.md +62 -62
- package/docs/index.md +45 -36
- package/docs/install/ansible.md +35 -35
- package/docs/install/development-channels.md +10 -10
- package/docs/install/docker.md +45 -45
- package/docs/install/index.md +33 -33
- package/docs/install/installer.md +24 -24
- package/docs/install/migrating.md +36 -36
- package/docs/install/nix.md +18 -18
- package/docs/install/node.md +4 -4
- package/docs/install/uninstall.md +29 -29
- package/docs/install/updating.md +51 -51
- package/docs/logging.md +59 -59
- package/docs/multi-agent-sandbox-tools.md +15 -15
- 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 +57 -57
- 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 +3 -3
- package/docs/northflank.mdx +9 -9
- package/docs/perplexity.md +2 -2
- package/docs/platforms/android.md +14 -14
- package/docs/platforms/digitalocean.md +26 -26
- package/docs/platforms/exe-dev.md +68 -130
- package/docs/platforms/fly.md +33 -33
- package/docs/platforms/gcp.md +58 -58
- package/docs/platforms/hetzner.md +45 -45
- 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 +14 -14
- package/docs/platforms/mac/canvas.md +14 -14
- package/docs/platforms/mac/child-process.md +5 -5
- 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 +7 -7
- package/docs/platforms/mac/skills.md +4 -4
- 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 +16 -16
- package/docs/platforms/oracle.md +35 -35
- package/docs/platforms/raspberry-pi.md +22 -22
- package/docs/platforms/windows.md +11 -11
- package/docs/plugin.md +65 -65
- package/docs/plugins/agent-tools.md +1 -1
- package/docs/plugins/manifest.md +4 -4
- package/docs/plugins/voice-call.md +12 -12
- package/docs/plugins/zalouser.md +9 -9
- package/docs/prose.md +9 -9
- package/docs/providers/anthropic.md +16 -16
- package/docs/providers/claude-max-api-proxy.md +4 -4
- 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 +4 -3
- package/docs/providers/minimax.md +9 -9
- package/docs/providers/models.md +3 -3
- package/docs/providers/moonshot.md +15 -4
- package/docs/providers/ollama.md +11 -11
- package/docs/providers/openai.md +6 -6
- 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 +23 -23
- package/docs/providers/vercel-ai-gateway.md +4 -4
- package/docs/providers/xiaomi.md +62 -0
- package/docs/providers/zai.md +5 -5
- package/docs/railway.mdx +8 -8
- package/docs/refactor/exec-host.md +5 -5
- package/docs/refactor/plugin-sdk.md +12 -12
- package/docs/refactor/strict-config.md +11 -11
- package/docs/reference/AGENTS.default.md +17 -17
- package/docs/reference/RELEASING.md +29 -29
- package/docs/reference/api-usage-costs.md +6 -6
- package/docs/reference/device-models.md +7 -7
- package/docs/reference/rpc.md +3 -3
- package/docs/reference/session-management-compaction.md +19 -19
- package/docs/reference/templates/AGENTS.dev.md +1 -1
- package/docs/reference/templates/BOOT.md +1 -1
- package/docs/reference/templates/IDENTITY.md +1 -1
- package/docs/reference/templates/TOOLS.dev.md +1 -1
- package/docs/reference/templates/USER.dev.md +2 -2
- package/docs/reference/test.md +2 -2
- package/docs/reference/transcript-hygiene.md +1 -1
- package/docs/render.mdx +13 -13
- package/docs/scripts.md +1 -1
- package/docs/security/formal-verification.md +66 -13
- package/docs/start/getting-started.md +29 -29
- package/docs/start/hubs.md +2 -2
- package/docs/start/lore.md +14 -14
- package/docs/start/onboarding.md +7 -7
- package/docs/start/{clawd.md → openclaw.md} +35 -35
- package/docs/start/pairing.md +10 -10
- package/docs/start/setup.md +22 -22
- package/docs/start/showcase.md +32 -32
- package/docs/start/wizard.md +30 -30
- package/docs/testing.md +56 -56
- package/docs/token-use.md +7 -7
- package/docs/tools/agent-send.md +10 -10
- package/docs/tools/browser-linux-troubleshooting.md +16 -16
- package/docs/tools/browser-login.md +6 -6
- package/docs/tools/browser.md +126 -126
- package/docs/tools/chrome-extension.md +17 -17
- package/docs/tools/clawdhub.md +7 -7
- package/docs/tools/creating-skills.md +6 -6
- package/docs/tools/exec-approvals.md +5 -5
- package/docs/tools/exec.md +4 -4
- package/docs/tools/firecrawl.md +2 -2
- package/docs/tools/index.md +13 -13
- package/docs/tools/llm-task.md +2 -2
- package/docs/tools/lobster.md +13 -13
- package/docs/tools/skills-config.md +2 -2
- package/docs/tools/skills.md +31 -31
- package/docs/tools/slash-commands.md +8 -8
- package/docs/tools/web.md +8 -8
- package/docs/tts.md +11 -11
- package/docs/tui.md +7 -7
- package/docs/vps.md +1 -1
- package/docs/web/control-ui.md +8 -8
- package/docs/web/dashboard.md +6 -6
- package/docs/web/index.md +5 -5
- package/extensions/bluebubbles/index.ts +3 -3
- package/extensions/bluebubbles/package.json +5 -5
- package/extensions/bluebubbles/src/accounts.ts +9 -9
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +6 -6
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +17 -17
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/config-schema.ts +1 -1
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +48 -48
- package/extensions/bluebubbles/src/monitor.ts +6 -6
- package/extensions/bluebubbles/src/onboarding.ts +9 -9
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/runtime.ts +1 -1
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/README.md +3 -3
- package/extensions/copilot-proxy/index.ts +1 -1
- package/extensions/copilot-proxy/package.json +4 -4
- package/extensions/diagnostics-otel/index.ts +3 -3
- package/extensions/diagnostics-otel/package.json +4 -4
- package/extensions/diagnostics-otel/src/service.test.ts +15 -15
- package/extensions/diagnostics-otel/src/service.ts +85 -85
- package/extensions/discord/index.ts +3 -3
- package/extensions/discord/package.json +4 -4
- package/extensions/discord/src/channel.ts +1 -1
- package/extensions/discord/src/runtime.ts +1 -1
- package/extensions/google-antigravity-auth/README.md +3 -3
- package/extensions/google-antigravity-auth/index.ts +2 -2
- package/extensions/google-antigravity-auth/package.json +4 -4
- package/extensions/google-gemini-cli-auth/README.md +5 -5
- package/extensions/google-gemini-cli-auth/index.ts +3 -3
- package/extensions/google-gemini-cli-auth/oauth.ts +4 -4
- package/extensions/google-gemini-cli-auth/package.json +4 -4
- package/extensions/googlechat/index.ts +4 -4
- package/extensions/googlechat/node_modules/.bin/openclaw +16 -0
- package/extensions/googlechat/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/googlechat/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/googlechat/package.json +7 -7
- package/extensions/googlechat/src/accounts.ts +9 -9
- package/extensions/googlechat/src/actions.ts +8 -8
- package/extensions/googlechat/src/api.ts +1 -1
- package/extensions/googlechat/src/channel.ts +23 -23
- package/extensions/googlechat/src/monitor.ts +9 -9
- package/extensions/googlechat/src/onboarding.ts +11 -11
- package/extensions/googlechat/src/runtime.ts +1 -1
- package/extensions/googlechat/src/types.config.ts +1 -1
- package/extensions/imessage/index.ts +3 -3
- package/extensions/imessage/package.json +4 -4
- package/extensions/imessage/src/channel.ts +1 -1
- package/extensions/imessage/src/runtime.ts +1 -1
- package/extensions/line/index.ts +3 -3
- package/extensions/line/node_modules/.bin/openclaw +16 -0
- package/extensions/line/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/line/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/line/package.json +6 -6
- package/extensions/line/src/card-command.ts +3 -3
- package/extensions/line/src/channel.logout.test.ts +4 -4
- package/extensions/line/src/channel.sendPayload.test.ts +8 -8
- package/extensions/line/src/channel.ts +5 -5
- package/extensions/line/src/runtime.ts +1 -1
- package/extensions/llm-task/README.md +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 +6 -6
- package/extensions/lobster/README.md +7 -7
- package/extensions/lobster/index.ts +2 -2
- package/extensions/lobster/package.json +3 -3
- package/extensions/lobster/src/lobster-tool.test.ts +7 -7
- package/extensions/lobster/src/lobster-tool.ts +2 -2
- package/extensions/matrix/CHANGELOG.md +14 -9
- package/extensions/matrix/index.ts +3 -3
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -5
- package/extensions/matrix/node_modules/.bin/markdown-it.CMD +0 -5
- package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +0 -13
- package/extensions/matrix/node_modules/.bin/openclaw +16 -0
- package/extensions/matrix/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/matrix/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/matrix/package.json +6 -6
- package/extensions/matrix/src/actions.ts +1 -1
- package/extensions/matrix/src/channel.directory.test.ts +1 -1
- package/extensions/matrix/src/channel.ts +1 -1
- package/extensions/matrix/src/config-schema.ts +1 -1
- package/extensions/matrix/src/directory-live.ts +1 -1
- package/extensions/matrix/src/group-mentions.ts +1 -1
- package/extensions/matrix/src/matrix/accounts.ts +1 -1
- package/extensions/matrix/src/matrix/actions/client.ts +1 -1
- package/extensions/matrix/src/matrix/client/config.ts +1 -1
- package/extensions/matrix/src/matrix/deps.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/allowlist.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/auto-join.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 +1 -1
- package/extensions/matrix/src/matrix/monitor/replies.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/rooms.ts +1 -1
- package/extensions/matrix/src/matrix/poll-types.ts +1 -1
- package/extensions/matrix/src/matrix/send/client.ts +1 -1
- package/extensions/matrix/src/matrix/send.test.ts +1 -1
- package/extensions/matrix/src/matrix/send.ts +1 -1
- package/extensions/matrix/src/onboarding.ts +2 -2
- package/extensions/matrix/src/outbound.ts +1 -1
- package/extensions/matrix/src/resolve-targets.ts +1 -1
- package/extensions/matrix/src/runtime.ts +1 -1
- package/extensions/matrix/src/tool-actions.ts +1 -1
- package/extensions/mattermost/index.ts +3 -3
- package/extensions/mattermost/package.json +5 -5
- package/extensions/mattermost/src/channel.ts +1 -1
- package/extensions/mattermost/src/config-schema.ts +1 -1
- package/extensions/mattermost/src/group-mentions.ts +1 -1
- package/extensions/mattermost/src/mattermost/accounts.ts +9 -9
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +4 -4
- package/extensions/mattermost/src/onboarding-helpers.ts +4 -4
- package/extensions/mattermost/src/onboarding.ts +4 -4
- package/extensions/mattermost/src/runtime.ts +1 -1
- package/extensions/mattermost/src/types.ts +1 -1
- package/extensions/memory-core/index.ts +3 -3
- package/extensions/memory-core/node_modules/.bin/openclaw +16 -0
- package/extensions/memory-core/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/memory-core/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/memory-core/package.json +6 -6
- package/extensions/memory-lancedb/config.ts +26 -2
- package/extensions/memory-lancedb/index.test.ts +3 -3
- package/extensions/memory-lancedb/index.ts +4 -4
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -5
- package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +0 -5
- package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +0 -13
- package/extensions/memory-lancedb/{clawdbot.plugin.json → openclaw.plugin.json} +1 -1
- package/extensions/memory-lancedb/package.json +4 -4
- package/extensions/msteams/CHANGELOG.md +12 -7
- package/extensions/msteams/index.ts +3 -3
- package/extensions/msteams/node_modules/.bin/openclaw +16 -0
- package/extensions/msteams/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/msteams/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/msteams/package.json +6 -6
- package/extensions/msteams/src/attachments.test.ts +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +3 -3
- package/extensions/msteams/src/conversation-store-fs.test.ts +6 -5
- package/extensions/msteams/src/directory-live.ts +1 -1
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/media-helpers.ts +1 -1
- package/extensions/msteams/src/messenger.test.ts +1 -1
- package/extensions/msteams/src/messenger.ts +1 -1
- package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -1
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +3 -3
- package/extensions/msteams/src/onboarding.ts +11 -11
- package/extensions/msteams/src/outbound.ts +1 -1
- package/extensions/msteams/src/policy.test.ts +1 -1
- package/extensions/msteams/src/policy.ts +2 -2
- package/extensions/msteams/src/polls-store.test.ts +1 -1
- package/extensions/msteams/src/polls.test.ts +6 -5
- package/extensions/msteams/src/polls.ts +9 -8
- package/extensions/msteams/src/probe.test.ts +1 -1
- package/extensions/msteams/src/probe.ts +1 -1
- package/extensions/msteams/src/reply-dispatcher.ts +3 -3
- package/extensions/msteams/src/runtime.ts +1 -1
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +5 -5
- package/extensions/msteams/src/token.ts +1 -1
- package/extensions/nextcloud-talk/index.ts +3 -3
- package/extensions/nextcloud-talk/package.json +5 -5
- package/extensions/nextcloud-talk/src/accounts.ts +2 -2
- package/extensions/nextcloud-talk/src/channel.ts +8 -8
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
- package/extensions/nextcloud-talk/src/inbound.ts +8 -8
- package/extensions/nextcloud-talk/src/monitor.ts +1 -1
- package/extensions/nextcloud-talk/src/onboarding.ts +2 -2
- package/extensions/nextcloud-talk/src/policy.ts +2 -2
- package/extensions/nextcloud-talk/src/room-info.ts +1 -1
- package/extensions/nextcloud-talk/src/runtime.ts +1 -1
- package/extensions/nextcloud-talk/src/types.ts +1 -1
- package/extensions/nostr/CHANGELOG.md +9 -4
- package/extensions/nostr/README.md +5 -5
- package/extensions/nostr/index.ts +6 -6
- package/extensions/nostr/node_modules/.bin/openclaw +16 -0
- package/extensions/nostr/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/nostr/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/nostr/package.json +6 -6
- package/extensions/nostr/src/channel.ts +2 -2
- package/extensions/nostr/src/config-schema.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.ts +9 -8
- package/extensions/nostr/src/runtime.ts +1 -1
- package/extensions/nostr/src/types.ts +4 -4
- package/extensions/open-prose/index.ts +2 -2
- package/extensions/open-prose/package.json +3 -3
- package/extensions/open-prose/skills/prose/SKILL.md +5 -5
- package/extensions/open-prose/skills/prose/prose.md +4 -4
- package/extensions/qwen-portal-auth/README.md +3 -3
- package/extensions/qwen-portal-auth/index.ts +1 -1
- package/extensions/signal/index.ts +3 -3
- package/extensions/signal/package.json +4 -4
- package/extensions/signal/src/channel.ts +1 -1
- package/extensions/signal/src/runtime.ts +1 -1
- package/extensions/slack/index.ts +3 -3
- package/extensions/slack/package.json +4 -4
- package/extensions/slack/src/channel.ts +1 -1
- package/extensions/slack/src/runtime.ts +1 -1
- package/extensions/telegram/index.ts +3 -3
- package/extensions/telegram/package.json +4 -4
- package/extensions/telegram/src/channel.ts +3 -3
- package/extensions/telegram/src/runtime.ts +1 -1
- package/extensions/tlon/README.md +3 -3
- package/extensions/tlon/index.ts +3 -3
- package/extensions/tlon/package.json +5 -5
- package/extensions/tlon/src/channel.ts +15 -15
- package/extensions/tlon/src/config-schema.ts +1 -1
- package/extensions/tlon/src/monitor/discovery.ts +1 -1
- package/extensions/tlon/src/monitor/history.ts +1 -1
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +4 -4
- package/extensions/tlon/src/runtime.ts +1 -1
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/twitch/CHANGELOG.md +6 -1
- package/extensions/twitch/README.md +8 -8
- package/extensions/twitch/index.ts +3 -3
- package/extensions/twitch/node_modules/.bin/openclaw +16 -0
- package/extensions/twitch/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/twitch/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/twitch/package.json +5 -5
- package/extensions/twitch/src/actions.ts +1 -1
- package/extensions/twitch/src/config-schema.ts +1 -1
- package/extensions/twitch/src/config.ts +3 -3
- package/extensions/twitch/src/monitor.ts +3 -3
- package/extensions/twitch/src/onboarding.test.ts +1 -1
- package/extensions/twitch/src/onboarding.ts +13 -13
- package/extensions/twitch/src/outbound.test.ts +2 -2
- package/extensions/twitch/src/outbound.ts +2 -2
- package/extensions/twitch/src/plugin.test.ts +2 -2
- package/extensions/twitch/src/plugin.ts +9 -9
- package/extensions/twitch/src/runtime.ts +1 -1
- package/extensions/twitch/src/send.test.ts +2 -2
- package/extensions/twitch/src/send.ts +5 -5
- package/extensions/twitch/src/token.test.ts +12 -12
- package/extensions/twitch/src/token.ts +7 -7
- package/extensions/twitch/src/twitch-client.ts +4 -4
- package/extensions/twitch/src/types.ts +3 -3
- package/extensions/twitch/src/utils/markdown.ts +1 -1
- package/extensions/voice-call/CHANGELOG.md +16 -11
- package/extensions/voice-call/README.md +16 -16
- package/extensions/voice-call/package.json +4 -4
- package/extensions/voice-call/src/cli.ts +16 -4
- package/extensions/voice-call/src/core-bridge.ts +5 -5
- package/extensions/voice-call/src/manager.test.ts +2 -2
- package/extensions/voice-call/src/manager.ts +17 -5
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/whatsapp/index.ts +3 -3
- package/extensions/whatsapp/package.json +4 -4
- package/extensions/whatsapp/src/channel.ts +1 -1
- package/extensions/whatsapp/src/runtime.ts +1 -1
- package/extensions/zalo/CHANGELOG.md +14 -9
- package/extensions/zalo/README.md +4 -4
- package/extensions/zalo/index.ts +3 -3
- package/extensions/zalo/node_modules/.bin/openclaw +16 -0
- package/extensions/zalo/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/zalo/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/zalo/package.json +6 -6
- package/extensions/zalo/src/accounts.ts +9 -9
- package/extensions/zalo/src/actions.ts +6 -6
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +20 -20
- package/extensions/zalo/src/config-schema.ts +1 -1
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +27 -27
- package/extensions/zalo/src/runtime.ts +1 -1
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalo/src/status-issues.ts +1 -1
- package/extensions/zalo/src/token.ts +1 -1
- package/extensions/zalouser/CHANGELOG.md +9 -4
- package/extensions/zalouser/README.md +18 -18
- package/extensions/zalouser/index.ts +3 -3
- package/extensions/zalouser/node_modules/.bin/openclaw +16 -0
- package/extensions/zalouser/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/zalouser/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/zalouser/package.json +6 -6
- package/extensions/zalouser/src/accounts.ts +10 -10
- package/extensions/zalouser/src/channel.ts +27 -27
- package/extensions/zalouser/src/config-schema.ts +1 -1
- package/extensions/zalouser/src/monitor.ts +5 -5
- package/extensions/zalouser/src/onboarding.ts +32 -32
- package/extensions/zalouser/src/runtime.ts +1 -1
- package/extensions/zalouser/src/status-issues.ts +2 -2
- package/openclaw.mjs +14 -0
- package/package.json +35 -25
- package/scripts/postinstall.js +1 -0
- 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 +6 -6
- package/skills/clawdhub/SKILL.md +2 -2
- package/skills/coding-agent/SKILL.md +6 -6
- package/skills/discord/SKILL.md +5 -5
- package/skills/eightctl/SKILL.md +1 -1
- package/skills/food-order/SKILL.md +1 -1
- package/skills/gemini/SKILL.md +1 -1
- package/skills/gifgrep/SKILL.md +1 -1
- package/skills/github/SKILL.md +1 -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 +3 -3
- package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
- 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 +4 -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/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/assets/images/icon.png +0 -0
- package/dist/control-ui/assets/index-BAFzd9IE.css +0 -1
- package/dist/control-ui/assets/index-CxLFx0Ae.js.map +0 -1
- package/dist/control-ui/pixel_pig_icon.png +0 -0
- package/dist/daemon/legacy.js +0 -44
- package/dist/extension.js +0 -70
- /package/dist/config/{types.clawdbot.js → types.openclaw.js} +0 -0
- /package/docs/{whatsapp-clawd.jpg → whatsapp-openclaw.jpg} +0 -0
- /package/extensions/bluebubbles/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/copilot-proxy/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/diagnostics-otel/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/discord/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/google-antigravity-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/google-gemini-cli-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/googlechat/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/imessage/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/line/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/llm-task/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/lobster/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/matrix/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/mattermost/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/memory-core/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/msteams/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/nextcloud-talk/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/nostr/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/open-prose/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/qwen-portal-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/signal/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/slack/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/telegram/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/tlon/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/twitch/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/voice-call/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/whatsapp/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/zalo/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/zalouser/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
|
@@ -7,13 +7,17 @@ export function normalizeReplyPayload(payload, opts = {}) {
|
|
|
7
7
|
const hasMedia = Boolean(payload.mediaUrl || (payload.mediaUrls?.length ?? 0) > 0);
|
|
8
8
|
const hasChannelData = Boolean(payload.channelData && Object.keys(payload.channelData).length > 0);
|
|
9
9
|
const trimmed = payload.text?.trim() ?? "";
|
|
10
|
-
if (!trimmed && !hasMedia && !hasChannelData)
|
|
10
|
+
if (!trimmed && !hasMedia && !hasChannelData) {
|
|
11
|
+
opts.onSkip?.("empty");
|
|
11
12
|
return null;
|
|
13
|
+
}
|
|
12
14
|
const silentToken = opts.silentToken ?? SILENT_REPLY_TOKEN;
|
|
13
15
|
let text = payload.text ?? undefined;
|
|
14
16
|
if (text && isSilentReplyText(text, silentToken)) {
|
|
15
|
-
if (!hasMedia && !hasChannelData)
|
|
17
|
+
if (!hasMedia && !hasChannelData) {
|
|
18
|
+
opts.onSkip?.("silent");
|
|
16
19
|
return null;
|
|
20
|
+
}
|
|
17
21
|
text = "";
|
|
18
22
|
}
|
|
19
23
|
if (text && !trimmed) {
|
|
@@ -25,15 +29,19 @@ export function normalizeReplyPayload(payload, opts = {}) {
|
|
|
25
29
|
const stripped = stripHeartbeatToken(text, { mode: "message" });
|
|
26
30
|
if (stripped.didStrip)
|
|
27
31
|
opts.onHeartbeatStrip?.();
|
|
28
|
-
if (stripped.shouldSkip && !hasMedia && !hasChannelData)
|
|
32
|
+
if (stripped.shouldSkip && !hasMedia && !hasChannelData) {
|
|
33
|
+
opts.onSkip?.("heartbeat");
|
|
29
34
|
return null;
|
|
35
|
+
}
|
|
30
36
|
text = stripped.text;
|
|
31
37
|
}
|
|
32
38
|
if (text) {
|
|
33
39
|
text = sanitizeUserFacingText(text);
|
|
34
40
|
}
|
|
35
|
-
if (!text?.trim() && !hasMedia && !hasChannelData)
|
|
41
|
+
if (!text?.trim() && !hasMedia && !hasChannelData) {
|
|
42
|
+
opts.onSkip?.("empty");
|
|
36
43
|
return null;
|
|
44
|
+
}
|
|
37
45
|
// Parse LINE-specific directives from text (quick_replies, location, confirm, buttons)
|
|
38
46
|
let enrichedPayload = { ...payload, text };
|
|
39
47
|
if (text && hasLineDirectives(text)) {
|
|
@@ -21,6 +21,7 @@ function normalizeReplyPayloadInternal(payload, opts) {
|
|
|
21
21
|
responsePrefix: opts.responsePrefix,
|
|
22
22
|
responsePrefixContext: prefixContext,
|
|
23
23
|
onHeartbeatStrip: opts.onHeartbeatStrip,
|
|
24
|
+
onSkip: opts.onSkip,
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
export function createReplyDispatcher(options) {
|
|
@@ -36,7 +37,13 @@ export function createReplyDispatcher(options) {
|
|
|
36
37
|
final: 0,
|
|
37
38
|
};
|
|
38
39
|
const enqueue = (kind, payload) => {
|
|
39
|
-
const normalized = normalizeReplyPayloadInternal(payload,
|
|
40
|
+
const normalized = normalizeReplyPayloadInternal(payload, {
|
|
41
|
+
responsePrefix: options.responsePrefix,
|
|
42
|
+
responsePrefixContext: options.responsePrefixContext,
|
|
43
|
+
responsePrefixContextProvider: options.responsePrefixContextProvider,
|
|
44
|
+
onHeartbeatStrip: options.onHeartbeatStrip,
|
|
45
|
+
onSkip: (reason) => options.onSkip?.(payload, { kind, reason }),
|
|
46
|
+
});
|
|
40
47
|
if (!normalized)
|
|
41
48
|
return false;
|
|
42
49
|
queuedCounts[kind] += 1;
|
|
@@ -160,7 +160,7 @@ export function formatElevatedUnavailableMessage(params) {
|
|
|
160
160
|
lines.push("- agents.list[].tools.elevated.enabled");
|
|
161
161
|
lines.push("- agents.list[].tools.elevated.allowFrom.<provider>");
|
|
162
162
|
if (params.sessionKey) {
|
|
163
|
-
lines.push(`See: ${formatCliCommand(`
|
|
163
|
+
lines.push(`See: ${formatCliCommand(`openclaw sandbox explain --session ${params.sessionKey}`)}`);
|
|
164
164
|
}
|
|
165
165
|
return lines.join("\n");
|
|
166
166
|
}
|
|
@@ -21,7 +21,7 @@ export async function stageSandboxMedia(params) {
|
|
|
21
21
|
sessionKey,
|
|
22
22
|
workspaceDir,
|
|
23
23
|
});
|
|
24
|
-
// For remote attachments without sandbox, use ~/.
|
|
24
|
+
// For remote attachments without sandbox, use ~/.openclaw/media (not agent workspace for privacy)
|
|
25
25
|
const remoteMediaCacheDir = ctx.MediaRemoteHost
|
|
26
26
|
? path.join(CONFIG_DIR, "media", "remote-cache", sessionKey)
|
|
27
27
|
: null;
|
|
@@ -97,7 +97,7 @@ const formatQueueDetails = (queue) => {
|
|
|
97
97
|
return detailParts.length ? ` (${detailParts.join(" · ")})` : "";
|
|
98
98
|
};
|
|
99
99
|
const readUsageFromSessionLog = (sessionId, sessionEntry) => {
|
|
100
|
-
// Transcripts are stored at the session file path (fallback: ~/.
|
|
100
|
+
// Transcripts are stored at the session file path (fallback: ~/.openclaw/sessions/<SessionId>.jsonl)
|
|
101
101
|
if (!sessionId)
|
|
102
102
|
return undefined;
|
|
103
103
|
const logPath = resolveSessionFilePath(sessionId, sessionEntry);
|
|
@@ -317,7 +317,7 @@ export function buildStatusMessage(args) {
|
|
|
317
317
|
const authLabel = authLabelValue ? ` · 🔑 ${authLabelValue}` : "";
|
|
318
318
|
const modelLine = `🧠 Model: ${modelLabel}${authLabel}`;
|
|
319
319
|
const commit = resolveCommitHash();
|
|
320
|
-
const versionLine = `🦞
|
|
320
|
+
const versionLine = `🦞 OpenClaw ${VERSION}${commit ? ` (${commit})` : ""}`;
|
|
321
321
|
const usagePair = formatUsagePair(inputTokens, outputTokens);
|
|
322
322
|
const costLine = costLabel ? `💵 Cost: ${costLabel}` : null;
|
|
323
323
|
const usageCostLine = usagePair && costLine ? `${usagePair} · ${costLine}` : (usagePair ?? costLine);
|
package/dist/browser/chrome.js
CHANGED
|
@@ -9,11 +9,11 @@ import { CONFIG_DIR } from "../utils.js";
|
|
|
9
9
|
import { getHeadersWithAuth, normalizeCdpWsUrl } from "./cdp.js";
|
|
10
10
|
import { appendCdpPath } from "./cdp.helpers.js";
|
|
11
11
|
import { resolveBrowserExecutableForPlatform, } from "./chrome.executables.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { decorateOpenClawProfile, ensureProfileCleanExit, isProfileDecorated, } from "./chrome.profile-decoration.js";
|
|
13
|
+
import { DEFAULT_OPENCLAW_BROWSER_COLOR, DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, } from "./constants.js";
|
|
14
14
|
const log = createSubsystemLogger("browser").child("chrome");
|
|
15
15
|
export { findChromeExecutableLinux, findChromeExecutableMac, findChromeExecutableWindows, resolveBrowserExecutableForPlatform, } from "./chrome.executables.js";
|
|
16
|
-
export {
|
|
16
|
+
export { decorateOpenClawProfile, ensureProfileCleanExit, isProfileDecorated, } from "./chrome.profile-decoration.js";
|
|
17
17
|
function exists(filePath) {
|
|
18
18
|
try {
|
|
19
19
|
return fs.existsSync(filePath);
|
|
@@ -25,7 +25,7 @@ function exists(filePath) {
|
|
|
25
25
|
function resolveBrowserExecutable(resolved) {
|
|
26
26
|
return resolveBrowserExecutableForPlatform(resolved, process.platform);
|
|
27
27
|
}
|
|
28
|
-
export function
|
|
28
|
+
export function resolveOpenClawUserDataDir(profileName = DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME) {
|
|
29
29
|
return path.join(CONFIG_DIR, "browser", profileName, "user-data");
|
|
30
30
|
}
|
|
31
31
|
function cdpUrlForPort(cdpPort) {
|
|
@@ -103,7 +103,7 @@ export async function isChromeCdpReady(cdpUrl, timeoutMs = 500, handshakeTimeout
|
|
|
103
103
|
return false;
|
|
104
104
|
return await canOpenWebSocket(wsUrl, handshakeTimeoutMs);
|
|
105
105
|
}
|
|
106
|
-
export async function
|
|
106
|
+
export async function launchOpenClawChrome(resolved, profile) {
|
|
107
107
|
if (!profile.cdpIsLoopback) {
|
|
108
108
|
throw new Error(`Profile "${profile.name}" is remote; cannot launch local Chrome.`);
|
|
109
109
|
}
|
|
@@ -112,9 +112,9 @@ export async function launchClawdChrome(resolved, profile) {
|
|
|
112
112
|
if (!exe) {
|
|
113
113
|
throw new Error("No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).");
|
|
114
114
|
}
|
|
115
|
-
const userDataDir =
|
|
115
|
+
const userDataDir = resolveOpenClawUserDataDir(profile.name);
|
|
116
116
|
fs.mkdirSync(userDataDir, { recursive: true });
|
|
117
|
-
const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ??
|
|
117
|
+
const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ?? DEFAULT_OPENCLAW_BROWSER_COLOR).toUpperCase());
|
|
118
118
|
// First launch to create preference files if missing, then decorate and relaunch.
|
|
119
119
|
const spawnOnce = () => {
|
|
120
120
|
const args = [
|
|
@@ -182,21 +182,21 @@ export async function launchClawdChrome(resolved, profile) {
|
|
|
182
182
|
}
|
|
183
183
|
if (needsDecorate) {
|
|
184
184
|
try {
|
|
185
|
-
|
|
185
|
+
decorateOpenClawProfile(userDataDir, {
|
|
186
186
|
name: profile.name,
|
|
187
187
|
color: profile.color,
|
|
188
188
|
});
|
|
189
|
-
log.info(`🦞
|
|
189
|
+
log.info(`🦞 openclaw browser profile decorated (${profile.color})`);
|
|
190
190
|
}
|
|
191
191
|
catch (err) {
|
|
192
|
-
log.warn(`
|
|
192
|
+
log.warn(`openclaw browser profile decoration failed: ${String(err)}`);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
try {
|
|
196
196
|
ensureProfileCleanExit(userDataDir);
|
|
197
197
|
}
|
|
198
198
|
catch (err) {
|
|
199
|
-
log.warn(`
|
|
199
|
+
log.warn(`openclaw browser clean-exit prefs failed: ${String(err)}`);
|
|
200
200
|
}
|
|
201
201
|
const proc = spawnOnce();
|
|
202
202
|
// Wait for CDP to come up.
|
|
@@ -216,7 +216,7 @@ export async function launchClawdChrome(resolved, profile) {
|
|
|
216
216
|
throw new Error(`Failed to start Chrome CDP on port ${profile.cdpPort} for profile "${profile.name}".`);
|
|
217
217
|
}
|
|
218
218
|
const pid = proc.pid ?? -1;
|
|
219
|
-
log.info(`🦞
|
|
219
|
+
log.info(`🦞 openclaw browser started (${exe.kind}) profile "${profile.name}" on 127.0.0.1:${profile.cdpPort} (pid ${pid})`);
|
|
220
220
|
return {
|
|
221
221
|
pid,
|
|
222
222
|
exe,
|
|
@@ -226,7 +226,7 @@ export async function launchClawdChrome(resolved, profile) {
|
|
|
226
226
|
proc,
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
-
export async function
|
|
229
|
+
export async function stopOpenClawChrome(running, timeoutMs = 2500) {
|
|
230
230
|
const proc = running.proc;
|
|
231
231
|
if (proc.killed)
|
|
232
232
|
return;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { DEFAULT_OPENCLAW_BROWSER_COLOR, DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, } from "./constants.js";
|
|
4
4
|
function decoratedMarkerPath(userDataDir) {
|
|
5
|
-
return path.join(userDataDir, ".
|
|
5
|
+
return path.join(userDataDir, ".openclaw-profile-decorated");
|
|
6
6
|
}
|
|
7
7
|
function safeReadJson(filePath) {
|
|
8
8
|
try {
|
|
@@ -95,9 +95,9 @@ export function isProfileDecorated(userDataDir, desiredName, desiredColorHex) {
|
|
|
95
95
|
* Best-effort profile decoration (name + lobster-orange). Chrome preference keys
|
|
96
96
|
* vary by version; we keep this conservative and idempotent.
|
|
97
97
|
*/
|
|
98
|
-
export function
|
|
99
|
-
const desiredName = opts?.name ??
|
|
100
|
-
const desiredColor = (opts?.color ??
|
|
98
|
+
export function decorateOpenClawProfile(userDataDir, opts) {
|
|
99
|
+
const desiredName = opts?.name ?? DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME;
|
|
100
|
+
const desiredColor = (opts?.color ?? DEFAULT_OPENCLAW_BROWSER_COLOR).toUpperCase();
|
|
101
101
|
const desiredColorInt = parseHexRgbToSignedArgbInt(desiredColor);
|
|
102
102
|
const localStatePath = path.join(userDataDir, "Local State");
|
|
103
103
|
const preferencesPath = path.join(userDataDir, "Default", "Preferences");
|
|
@@ -7,7 +7,7 @@ function isAbsoluteHttp(url) {
|
|
|
7
7
|
function enhanceBrowserFetchError(url, err, timeoutMs) {
|
|
8
8
|
const hint = isAbsoluteHttp(url)
|
|
9
9
|
? "If this is a sandboxed session, ensure the sandbox browser is running and try again."
|
|
10
|
-
: `Start (or restart) the
|
|
10
|
+
: `Start (or restart) the OpenClaw gateway (OpenClaw.app menubar, or \`${formatCliCommand("openclaw gateway")}\`) and try again.`;
|
|
11
11
|
const msg = String(err);
|
|
12
12
|
const msgLower = msg.toLowerCase();
|
|
13
13
|
const looksLikeTimeout = msgLower.includes("timed out") ||
|
|
@@ -16,9 +16,9 @@ function enhanceBrowserFetchError(url, err, timeoutMs) {
|
|
|
16
16
|
msgLower.includes("abort") ||
|
|
17
17
|
msgLower.includes("aborterror");
|
|
18
18
|
if (looksLikeTimeout) {
|
|
19
|
-
return new Error(`Can't reach the
|
|
19
|
+
return new Error(`Can't reach the openclaw browser control service (timed out after ${timeoutMs}ms). ${hint}`);
|
|
20
20
|
}
|
|
21
|
-
return new Error(`Can't reach the
|
|
21
|
+
return new Error(`Can't reach the openclaw browser control service. ${hint} (${msg})`);
|
|
22
22
|
}
|
|
23
23
|
async function fetchHttpJson(url, init) {
|
|
24
24
|
const timeoutMs = init.timeoutMs ?? 5000;
|
package/dist/browser/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { deriveDefaultBrowserCdpPortRange, deriveDefaultBrowserControlPort, DEFAULT_BROWSER_CONTROL_PORT, } from "../config/port-defaults.js";
|
|
2
2
|
import { resolveGatewayPort } from "../config/paths.js";
|
|
3
|
-
import {
|
|
3
|
+
import { DEFAULT_OPENCLAW_BROWSER_COLOR, DEFAULT_OPENCLAW_BROWSER_ENABLED, DEFAULT_BROWSER_EVALUATE_ENABLED, DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, } from "./constants.js";
|
|
4
4
|
import { CDP_PORT_RANGE_START, getUsedPorts } from "./profiles.js";
|
|
5
5
|
function isLoopbackHost(host) {
|
|
6
6
|
const h = host.trim().toLowerCase();
|
|
@@ -15,10 +15,10 @@ function isLoopbackHost(host) {
|
|
|
15
15
|
function normalizeHexColor(raw) {
|
|
16
16
|
const value = (raw ?? "").trim();
|
|
17
17
|
if (!value)
|
|
18
|
-
return
|
|
18
|
+
return DEFAULT_OPENCLAW_BROWSER_COLOR;
|
|
19
19
|
const normalized = value.startsWith("#") ? value : `#${value}`;
|
|
20
20
|
if (!/^#[0-9a-fA-F]{6}$/.test(normalized))
|
|
21
|
-
return
|
|
21
|
+
return DEFAULT_OPENCLAW_BROWSER_COLOR;
|
|
22
22
|
return normalized.toUpperCase();
|
|
23
23
|
}
|
|
24
24
|
function normalizeTimeoutMs(raw, fallback) {
|
|
@@ -46,13 +46,13 @@ export function parseHttpUrl(raw, label) {
|
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
* Ensure the default "
|
|
49
|
+
* Ensure the default "openclaw" profile exists in the profiles map.
|
|
50
50
|
* Auto-creates it with the legacy CDP port (from browser.cdpUrl) or first port if missing.
|
|
51
51
|
*/
|
|
52
52
|
function ensureDefaultProfile(profiles, defaultColor, legacyCdpPort, derivedDefaultCdpPort) {
|
|
53
53
|
const result = { ...profiles };
|
|
54
|
-
if (!result[
|
|
55
|
-
result[
|
|
54
|
+
if (!result[DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME]) {
|
|
55
|
+
result[DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME] = {
|
|
56
56
|
cdpPort: legacyCdpPort ?? derivedDefaultCdpPort ?? CDP_PORT_RANGE_START,
|
|
57
57
|
color: defaultColor,
|
|
58
58
|
};
|
|
@@ -62,7 +62,7 @@ function ensureDefaultProfile(profiles, defaultColor, legacyCdpPort, derivedDefa
|
|
|
62
62
|
/**
|
|
63
63
|
* Ensure a built-in "chrome" profile exists for the Chrome extension relay.
|
|
64
64
|
*
|
|
65
|
-
* Note: this is
|
|
65
|
+
* Note: this is an OpenClaw browser profile (routing config), not a Chrome user profile.
|
|
66
66
|
* It points at the local relay CDP endpoint (controlPort + 1).
|
|
67
67
|
*/
|
|
68
68
|
function ensureDefaultChromeExtensionProfile(profiles, controlPort) {
|
|
@@ -73,7 +73,7 @@ function ensureDefaultChromeExtensionProfile(profiles, controlPort) {
|
|
|
73
73
|
if (!Number.isFinite(relayPort) || relayPort <= 0 || relayPort > 65535)
|
|
74
74
|
return result;
|
|
75
75
|
// Avoid adding the built-in profile if the derived relay port is already used by another profile
|
|
76
|
-
// (legacy single-profile configs may use controlPort+1 for
|
|
76
|
+
// (legacy single-profile configs may use controlPort+1 for openclaw/openclaw CDP).
|
|
77
77
|
if (getUsedPorts(result).has(relayPort))
|
|
78
78
|
return result;
|
|
79
79
|
result.chrome = {
|
|
@@ -84,7 +84,7 @@ function ensureDefaultChromeExtensionProfile(profiles, controlPort) {
|
|
|
84
84
|
return result;
|
|
85
85
|
}
|
|
86
86
|
export function resolveBrowserConfig(cfg, rootConfig) {
|
|
87
|
-
const enabled = cfg?.enabled ??
|
|
87
|
+
const enabled = cfg?.enabled ?? DEFAULT_OPENCLAW_BROWSER_ENABLED;
|
|
88
88
|
const evaluateEnabled = cfg?.evaluateEnabled ?? DEFAULT_BROWSER_EVALUATE_ENABLED;
|
|
89
89
|
const gatewayPort = resolveGatewayPort(rootConfig);
|
|
90
90
|
const controlPort = deriveDefaultBrowserControlPort(gatewayPort ?? DEFAULT_BROWSER_CONTROL_PORT);
|
|
@@ -121,7 +121,7 @@ export function resolveBrowserConfig(cfg, rootConfig) {
|
|
|
121
121
|
const defaultProfile = defaultProfileFromConfig ??
|
|
122
122
|
(profiles[DEFAULT_BROWSER_DEFAULT_PROFILE_NAME]
|
|
123
123
|
? DEFAULT_BROWSER_DEFAULT_PROFILE_NAME
|
|
124
|
-
:
|
|
124
|
+
: DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME);
|
|
125
125
|
return {
|
|
126
126
|
enabled,
|
|
127
127
|
evaluateEnabled,
|
|
@@ -152,7 +152,7 @@ export function resolveProfile(resolved, profileName) {
|
|
|
152
152
|
let cdpHost = resolved.cdpHost;
|
|
153
153
|
let cdpPort = profile.cdpPort ?? 0;
|
|
154
154
|
let cdpUrl = "";
|
|
155
|
-
const driver = profile.driver === "extension" ? "extension" : "
|
|
155
|
+
const driver = profile.driver === "extension" ? "extension" : "openclaw";
|
|
156
156
|
if (rawProfileUrl) {
|
|
157
157
|
const parsed = parseHttpUrl(rawProfileUrl, `browser.profiles.${profileName}.cdpUrl`);
|
|
158
158
|
cdpHost = parsed.parsed.hostname;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const DEFAULT_OPENCLAW_BROWSER_ENABLED = true;
|
|
2
2
|
export const DEFAULT_BROWSER_EVALUATE_ENABLED = true;
|
|
3
|
-
export const
|
|
4
|
-
export const
|
|
3
|
+
export const DEFAULT_OPENCLAW_BROWSER_COLOR = "#FF4500";
|
|
4
|
+
export const DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME = "openclaw";
|
|
5
5
|
export const DEFAULT_BROWSER_DEFAULT_PROFILE_NAME = "chrome";
|
|
6
6
|
export const DEFAULT_AI_SNAPSHOT_MAX_CHARS = 80_000;
|
|
7
7
|
export const DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS = 10_000;
|
|
@@ -58,7 +58,7 @@ export async function stopBrowserControlService() {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
catch (err) {
|
|
61
|
-
logService.warn(`
|
|
61
|
+
logService.warn(`openclaw browser stop failed: ${String(err)}`);
|
|
62
62
|
}
|
|
63
63
|
state = null;
|
|
64
64
|
// Optional: Playwright is not always available (e.g. embedded gateway builds).
|
|
@@ -121,9 +121,9 @@ export async function ensureChromeExtensionRelayServer(opts) {
|
|
|
121
121
|
case "Browser.getVersion":
|
|
122
122
|
return {
|
|
123
123
|
protocolVersion: "1.3",
|
|
124
|
-
product: "Chrome/
|
|
124
|
+
product: "Chrome/OpenClaw-Extension-Relay",
|
|
125
125
|
revision: "0",
|
|
126
|
-
userAgent: "
|
|
126
|
+
userAgent: "OpenClaw-Extension-Relay",
|
|
127
127
|
jsVersion: "V8",
|
|
128
128
|
};
|
|
129
129
|
case "Browser.setDownloadBehavior":
|
|
@@ -204,7 +204,7 @@ export async function ensureChromeExtensionRelayServer(opts) {
|
|
|
204
204
|
if ((path === "/json/version" || path === "/json/version/") &&
|
|
205
205
|
(req.method === "GET" || req.method === "PUT")) {
|
|
206
206
|
const payload = {
|
|
207
|
-
Browser: "
|
|
207
|
+
Browser: "OpenClaw/extension-relay",
|
|
208
208
|
"Protocol-Version": "1.3",
|
|
209
209
|
};
|
|
210
210
|
// Only advertise the WS URL if a real extension is connected.
|
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { loadConfig, writeConfigFile } from "../config/config.js";
|
|
4
4
|
import { deriveDefaultBrowserCdpPortRange } from "../config/port-defaults.js";
|
|
5
5
|
import { DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./constants.js";
|
|
6
|
-
import {
|
|
6
|
+
import { resolveOpenClawUserDataDir } from "./chrome.js";
|
|
7
7
|
import { parseHttpUrl, resolveProfile } from "./config.js";
|
|
8
8
|
import { allocateCdpPort, allocateColor, getUsedColors, getUsedPorts, isValidProfileName, } from "./profiles.js";
|
|
9
9
|
import { movePathToTrash } from "./trash.js";
|
|
@@ -104,7 +104,7 @@ export function createBrowserProfilesService(ctx) {
|
|
|
104
104
|
catch {
|
|
105
105
|
// ignore
|
|
106
106
|
}
|
|
107
|
-
const userDataDir =
|
|
107
|
+
const userDataDir = resolveOpenClawUserDataDir(name);
|
|
108
108
|
const profileDir = path.dirname(userDataDir);
|
|
109
109
|
if (fs.existsSync(profileDir)) {
|
|
110
110
|
await movePathToTrash(profileDir);
|
package/dist/browser/profiles.js
CHANGED
|
@@ -6,7 +6,7 @@ import { bumpDialogArmId, bumpDownloadArmId, bumpUploadArmId, normalizeTimeoutMs
|
|
|
6
6
|
function buildTempDownloadPath(fileName) {
|
|
7
7
|
const id = crypto.randomUUID();
|
|
8
8
|
const safeName = fileName.trim() ? fileName.trim() : "download.bin";
|
|
9
|
-
return path.join("/tmp/
|
|
9
|
+
return path.join("/tmp/openclaw/downloads", `${id}-${safeName}`);
|
|
10
10
|
}
|
|
11
11
|
function createPageDownloadWaiter(page, timeoutMs) {
|
|
12
12
|
let done = false;
|
|
@@ -330,10 +330,10 @@ export async function screenshotWithLabelsViaPlaywright(opts) {
|
|
|
330
330
|
try {
|
|
331
331
|
if (boxes.length > 0) {
|
|
332
332
|
await page.evaluate((labels) => {
|
|
333
|
-
const existing = document.querySelectorAll("[data-
|
|
333
|
+
const existing = document.querySelectorAll("[data-openclaw-labels]");
|
|
334
334
|
existing.forEach((el) => el.remove());
|
|
335
335
|
const root = document.createElement("div");
|
|
336
|
-
root.setAttribute("data-
|
|
336
|
+
root.setAttribute("data-openclaw-labels", "1");
|
|
337
337
|
root.style.position = "fixed";
|
|
338
338
|
root.style.left = "0";
|
|
339
339
|
root.style.top = "0";
|
|
@@ -344,7 +344,7 @@ export async function screenshotWithLabelsViaPlaywright(opts) {
|
|
|
344
344
|
const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
|
|
345
345
|
for (const label of labels) {
|
|
346
346
|
const box = document.createElement("div");
|
|
347
|
-
box.setAttribute("data-
|
|
347
|
+
box.setAttribute("data-openclaw-labels", "1");
|
|
348
348
|
box.style.position = "absolute";
|
|
349
349
|
box.style.left = `${label.x}px`;
|
|
350
350
|
box.style.top = `${label.y}px`;
|
|
@@ -353,7 +353,7 @@ export async function screenshotWithLabelsViaPlaywright(opts) {
|
|
|
353
353
|
box.style.border = "2px solid #ffb020";
|
|
354
354
|
box.style.boxSizing = "border-box";
|
|
355
355
|
const tag = document.createElement("div");
|
|
356
|
-
tag.setAttribute("data-
|
|
356
|
+
tag.setAttribute("data-openclaw-labels", "1");
|
|
357
357
|
tag.textContent = label.ref;
|
|
358
358
|
tag.style.position = "absolute";
|
|
359
359
|
tag.style.left = `${label.x}px`;
|
|
@@ -378,7 +378,7 @@ export async function screenshotWithLabelsViaPlaywright(opts) {
|
|
|
378
378
|
finally {
|
|
379
379
|
await page
|
|
380
380
|
.evaluate(() => {
|
|
381
|
-
const existing = document.querySelectorAll("[data-
|
|
381
|
+
const existing = document.querySelectorAll("[data-openclaw-labels]");
|
|
382
382
|
existing.forEach((el) => el.remove());
|
|
383
383
|
})
|
|
384
384
|
.catch(() => { });
|
|
@@ -52,7 +52,7 @@ export async function responseBodyViaPlaywright(opts) {
|
|
|
52
52
|
return;
|
|
53
53
|
done = true;
|
|
54
54
|
cleanup();
|
|
55
|
-
reject(new Error(`Response not found for url pattern "${pattern}". Run '${formatCliCommand("
|
|
55
|
+
reject(new Error(`Response not found for url pattern "${pattern}". Run '${formatCliCommand("openclaw browser requests")}' to inspect recent network activity.`));
|
|
56
56
|
}, timeout);
|
|
57
57
|
});
|
|
58
58
|
const resp = (await promise);
|
|
@@ -210,7 +210,7 @@ export function registerBrowserAgentActRoutes(app, ctx) {
|
|
|
210
210
|
if (fn && !evaluateEnabled) {
|
|
211
211
|
return jsonError(res, 403, [
|
|
212
212
|
"wait --fn is disabled by config (browser.evaluateEnabled=false).",
|
|
213
|
-
"Docs: /gateway/configuration#browser-
|
|
213
|
+
"Docs: /gateway/configuration#browser-openclaw-managed-browser",
|
|
214
214
|
].join("\n"));
|
|
215
215
|
}
|
|
216
216
|
if (timeMs === undefined &&
|
|
@@ -240,7 +240,7 @@ export function registerBrowserAgentActRoutes(app, ctx) {
|
|
|
240
240
|
if (!evaluateEnabled) {
|
|
241
241
|
return jsonError(res, 403, [
|
|
242
242
|
"act:evaluate is disabled by config (browser.evaluateEnabled=false).",
|
|
243
|
-
"Docs: /gateway/configuration#browser-
|
|
243
|
+
"Docs: /gateway/configuration#browser-openclaw-managed-browser",
|
|
244
244
|
].join("\n"));
|
|
245
245
|
}
|
|
246
246
|
const fn = toStringOrEmpty(body.fn);
|
|
@@ -112,7 +112,7 @@ export function registerBrowserAgentDebugRoutes(app, ctx) {
|
|
|
112
112
|
if (!pw)
|
|
113
113
|
return;
|
|
114
114
|
const id = crypto.randomUUID();
|
|
115
|
-
const dir = "/tmp/
|
|
115
|
+
const dir = "/tmp/openclaw";
|
|
116
116
|
await fs.mkdir(dir, { recursive: true });
|
|
117
117
|
const tracePath = out.trim() || path.join(dir, `browser-trace-${id}.zip`);
|
|
118
118
|
await pw.traceStopViaPlaywright({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import { appendCdpPath, createTargetViaCdp, getHeadersWithAuth, normalizeCdpWsUrl } from "./cdp.js";
|
|
3
|
-
import { isChromeCdpReady, isChromeReachable,
|
|
3
|
+
import { isChromeCdpReady, isChromeReachable, launchOpenClawChrome, resolveOpenClawUserDataDir, stopOpenClawChrome, } from "./chrome.js";
|
|
4
4
|
import { resolveProfile } from "./config.js";
|
|
5
5
|
import { ensureChromeExtensionRelayServer, stopChromeExtensionRelayServer, } from "./extension-relay.js";
|
|
6
6
|
import { getPwAiModule } from "./pw-ai-module.js";
|
|
@@ -223,7 +223,7 @@ function createProfileContext(opts, profile) {
|
|
|
223
223
|
if (await isReachable(600))
|
|
224
224
|
return;
|
|
225
225
|
// Relay server is up, but no attached tab yet. Prompt user to attach.
|
|
226
|
-
throw new Error(`Chrome extension relay is running, but no tab is connected. Click the
|
|
226
|
+
throw new Error(`Chrome extension relay is running, but no tab is connected. Click the OpenClaw Chrome extension icon on a tab to attach it (profile "${profile.name}").`);
|
|
227
227
|
}
|
|
228
228
|
if (!httpReachable) {
|
|
229
229
|
if ((current.resolved.attachOnly || remoteCdp) && opts.onEnsureAttachTarget) {
|
|
@@ -236,7 +236,7 @@ function createProfileContext(opts, profile) {
|
|
|
236
236
|
? `Remote CDP for profile "${profile.name}" is not reachable at ${profile.cdpUrl}.`
|
|
237
237
|
: `Browser attachOnly is enabled and profile "${profile.name}" is not running.`);
|
|
238
238
|
}
|
|
239
|
-
const launched = await
|
|
239
|
+
const launched = await launchOpenClawChrome(current.resolved, profile);
|
|
240
240
|
attachRunning(launched);
|
|
241
241
|
return;
|
|
242
242
|
}
|
|
@@ -245,7 +245,7 @@ function createProfileContext(opts, profile) {
|
|
|
245
245
|
return;
|
|
246
246
|
// HTTP responds but WebSocket fails - port in use by something else
|
|
247
247
|
if (!profileState.running) {
|
|
248
|
-
throw new Error(`Port ${profile.cdpPort} is in use for profile "${profile.name}" but not by
|
|
248
|
+
throw new Error(`Port ${profile.cdpPort} is in use for profile "${profile.name}" but not by openclaw. ` +
|
|
249
249
|
`Run action=reset-profile profile=${profile.name} to kill the process.`);
|
|
250
250
|
}
|
|
251
251
|
// We own it but WebSocket failed - restart
|
|
@@ -259,9 +259,9 @@ function createProfileContext(opts, profile) {
|
|
|
259
259
|
? `Remote CDP websocket for profile "${profile.name}" is not reachable.`
|
|
260
260
|
: `Browser attachOnly is enabled and CDP websocket for profile "${profile.name}" is not reachable.`);
|
|
261
261
|
}
|
|
262
|
-
await
|
|
262
|
+
await stopOpenClawChrome(profileState.running);
|
|
263
263
|
setProfileRunning(null);
|
|
264
|
-
const relaunched = await
|
|
264
|
+
const relaunched = await launchOpenClawChrome(current.resolved, profile);
|
|
265
265
|
attachRunning(relaunched);
|
|
266
266
|
if (!(await isReachable(600))) {
|
|
267
267
|
throw new Error(`Chrome CDP websocket for profile "${profile.name}" is not reachable after restart.`);
|
|
@@ -274,7 +274,7 @@ function createProfileContext(opts, profile) {
|
|
|
274
274
|
if (tabs1.length === 0) {
|
|
275
275
|
if (profile.driver === "extension") {
|
|
276
276
|
throw new Error(`tab not found (no attached Chrome tabs for profile "${profile.name}"). ` +
|
|
277
|
-
"Click the
|
|
277
|
+
"Click the OpenClaw Browser Relay toolbar icon on the tab you want to control (badge ON).");
|
|
278
278
|
}
|
|
279
279
|
await openTab("about:blank");
|
|
280
280
|
}
|
|
@@ -377,7 +377,7 @@ function createProfileContext(opts, profile) {
|
|
|
377
377
|
const profileState = getProfileState();
|
|
378
378
|
if (!profileState.running)
|
|
379
379
|
return { stopped: false };
|
|
380
|
-
await
|
|
380
|
+
await stopOpenClawChrome(profileState.running);
|
|
381
381
|
setProfileRunning(null);
|
|
382
382
|
return { stopped: true };
|
|
383
383
|
};
|
|
@@ -389,7 +389,7 @@ function createProfileContext(opts, profile) {
|
|
|
389
389
|
if (!profile.cdpIsLoopback) {
|
|
390
390
|
throw new Error(`reset-profile is only supported for local profiles (profile "${profile.name}" is remote).`);
|
|
391
391
|
}
|
|
392
|
-
const userDataDir =
|
|
392
|
+
const userDataDir = resolveOpenClawUserDataDir(profile.name);
|
|
393
393
|
const profileState = getProfileState();
|
|
394
394
|
const httpReachable = await isHttpReachable(300);
|
|
395
395
|
if (httpReachable && !profileState.running) {
|
package/dist/browser/server.js
CHANGED
|
@@ -26,7 +26,7 @@ export async function startBrowserControlServerFromConfig() {
|
|
|
26
26
|
const s = app.listen(port, "127.0.0.1", () => resolve(s));
|
|
27
27
|
s.once("error", reject);
|
|
28
28
|
}).catch((err) => {
|
|
29
|
-
logServer.error(`
|
|
29
|
+
logServer.error(`openclaw browser server failed to bind 127.0.0.1:${port}: ${String(err)}`);
|
|
30
30
|
return null;
|
|
31
31
|
});
|
|
32
32
|
if (!server)
|
|
@@ -71,7 +71,7 @@ export async function stopBrowserControlServer() {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
catch (err) {
|
|
74
|
-
logServer.warn(`
|
|
74
|
+
logServer.warn(`openclaw browser stop failed: ${String(err)}`);
|
|
75
75
|
}
|
|
76
76
|
if (current.server) {
|
|
77
77
|
await new Promise((resolve) => {
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
cda3a480b47a1475325520cbc95bf88c7ff6f767b95fc3666bd810a07e669fe5
|