@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
package/docs/tools/web.md
CHANGED
|
@@ -8,7 +8,7 @@ read_when:
|
|
|
8
8
|
|
|
9
9
|
# Web tools
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
OpenClaw ships two lightweight web tools:
|
|
12
12
|
|
|
13
13
|
- `web_search` — Search the web via Brave Search API (default) or Perplexity Sonar (direct or via OpenRouter).
|
|
14
14
|
- `web_fetch` — HTTP fetch + readable extraction (HTML → markdown/text).
|
|
@@ -72,19 +72,19 @@ Example: switch to Perplexity Sonar (direct API):
|
|
|
72
72
|
|
|
73
73
|
1) Create a Brave Search API account at https://brave.com/search/api/
|
|
74
74
|
2) In the dashboard, choose the **Data for Search** plan (not “Data for AI”) and generate an API key.
|
|
75
|
-
3) Run `
|
|
75
|
+
3) Run `openclaw configure --section web` to store the key in config (recommended), or set `BRAVE_API_KEY` in your environment.
|
|
76
76
|
|
|
77
77
|
Brave provides a free tier plus paid plans; check the Brave API portal for the
|
|
78
78
|
current limits and pricing.
|
|
79
79
|
|
|
80
80
|
### Where to set the key (recommended)
|
|
81
81
|
|
|
82
|
-
**Recommended:** run `
|
|
83
|
-
`~/.
|
|
82
|
+
**Recommended:** run `openclaw configure --section web`. It stores the key in
|
|
83
|
+
`~/.openclaw/openclaw.json` under `tools.web.search.apiKey`.
|
|
84
84
|
|
|
85
85
|
**Environment alternative:** set `BRAVE_API_KEY` in the Gateway process
|
|
86
|
-
environment. For a gateway install, put it in `~/.
|
|
87
|
-
service environment). See [Env vars](/help/faq#how-does-
|
|
86
|
+
environment. For a gateway install, put it in `~/.openclaw/.env` (or your
|
|
87
|
+
service environment). See [Env vars](/help/faq#how-does-openclaw-load-environment-variables).
|
|
88
88
|
|
|
89
89
|
## Using Perplexity (direct or via OpenRouter)
|
|
90
90
|
|
|
@@ -122,9 +122,9 @@ crypto/prepaid).
|
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
**Environment alternative:** set `OPENROUTER_API_KEY` or `PERPLEXITY_API_KEY` in the Gateway
|
|
125
|
-
environment. For a gateway install, put it in `~/.
|
|
125
|
+
environment. For a gateway install, put it in `~/.openclaw/.env`.
|
|
126
126
|
|
|
127
|
-
If no base URL is set,
|
|
127
|
+
If no base URL is set, OpenClaw chooses a default based on the API key source:
|
|
128
128
|
|
|
129
129
|
- `PERPLEXITY_API_KEY` or `pplx-...` → `https://api.perplexity.ai`
|
|
130
130
|
- `OPENROUTER_API_KEY` or `sk-or-...` → `https://openrouter.ai/api/v1`
|
package/docs/tts.md
CHANGED
|
@@ -8,8 +8,8 @@ read_when:
|
|
|
8
8
|
|
|
9
9
|
# Text-to-speech (TTS)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
It works anywhere
|
|
11
|
+
OpenClaw can convert outbound replies into audio using ElevenLabs, OpenAI, or Edge TTS.
|
|
12
|
+
It works anywhere OpenClaw can send audio; Telegram gets a round voice-note bubble.
|
|
13
13
|
|
|
14
14
|
## Supported services
|
|
15
15
|
|
|
@@ -35,7 +35,7 @@ If you want OpenAI or ElevenLabs:
|
|
|
35
35
|
- `ELEVENLABS_API_KEY` (or `XI_API_KEY`)
|
|
36
36
|
- `OPENAI_API_KEY`
|
|
37
37
|
|
|
38
|
-
Edge TTS does **not** require an API key. If no API keys are found,
|
|
38
|
+
Edge TTS does **not** require an API key. If no API keys are found, OpenClaw defaults
|
|
39
39
|
to Edge TTS (unless disabled via `messages.tts.edge.enabled=false`).
|
|
40
40
|
|
|
41
41
|
If multiple providers are configured, the selected provider is used first and the others are fallback options.
|
|
@@ -61,7 +61,7 @@ when no OpenAI or ElevenLabs API keys are available.
|
|
|
61
61
|
|
|
62
62
|
## Config
|
|
63
63
|
|
|
64
|
-
TTS config lives under `messages.tts` in `
|
|
64
|
+
TTS config lives under `messages.tts` in `openclaw.json`.
|
|
65
65
|
Full schema is in [Gateway configuration](/gateway/configuration).
|
|
66
66
|
|
|
67
67
|
### Minimal config (enable + provider)
|
|
@@ -159,7 +159,7 @@ Full schema is in [Gateway configuration](/gateway/configuration).
|
|
|
159
159
|
auto: "always",
|
|
160
160
|
maxTextLength: 4000,
|
|
161
161
|
timeoutMs: 30000,
|
|
162
|
-
prefsPath: "~/.
|
|
162
|
+
prefsPath: "~/.openclaw/settings/tts.json"
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
}
|
|
@@ -203,7 +203,7 @@ Then run:
|
|
|
203
203
|
- `enabled`: legacy toggle (doctor migrates this to `auto`).
|
|
204
204
|
- `mode`: `"final"` (default) or `"all"` (includes tool/block replies).
|
|
205
205
|
- `provider`: `"elevenlabs"`, `"openai"`, or `"edge"` (fallback is automatic).
|
|
206
|
-
- If `provider` is **unset**,
|
|
206
|
+
- If `provider` is **unset**, OpenClaw prefers `openai` (if key), then `elevenlabs` (if key),
|
|
207
207
|
otherwise `edge`.
|
|
208
208
|
- `summaryModel`: optional cheap model for auto-summary; defaults to `agents.defaults.model.primary`.
|
|
209
209
|
- Accepts `provider/model` or a configured model alias.
|
|
@@ -291,7 +291,7 @@ Optional allowlist (disable specific overrides while keeping tags enabled):
|
|
|
291
291
|
## Per-user preferences
|
|
292
292
|
|
|
293
293
|
Slash commands write local overrides to `prefsPath` (default:
|
|
294
|
-
`~/.
|
|
294
|
+
`~/.openclaw/settings/tts.json`, override with `OPENCLAW_TTS_PREFS` or
|
|
295
295
|
`messages.tts.prefsPath`).
|
|
296
296
|
|
|
297
297
|
Stored fields:
|
|
@@ -314,13 +314,13 @@ These override `messages.tts.*` for that host.
|
|
|
314
314
|
- Output format values follow Microsoft Speech output formats (including Ogg/WebM Opus). citeturn1search0
|
|
315
315
|
- Telegram `sendVoice` accepts OGG/MP3/M4A; use OpenAI/ElevenLabs if you need
|
|
316
316
|
guaranteed Opus voice notes. citeturn1search1
|
|
317
|
-
- If the configured Edge output format fails,
|
|
317
|
+
- If the configured Edge output format fails, OpenClaw retries with MP3.
|
|
318
318
|
|
|
319
319
|
OpenAI/ElevenLabs formats are fixed; Telegram expects Opus for voice-note UX.
|
|
320
320
|
|
|
321
321
|
## Auto-TTS behavior
|
|
322
322
|
|
|
323
|
-
When enabled,
|
|
323
|
+
When enabled, OpenClaw:
|
|
324
324
|
- skips TTS if the reply already contains media or a `MEDIA:` directive.
|
|
325
325
|
- skips very short replies (< 10 chars).
|
|
326
326
|
- summarizes long replies when enabled using `agents.defaults.model.primary` (or `summaryModel`).
|
|
@@ -350,7 +350,7 @@ Reply -> TTS enabled?
|
|
|
350
350
|
There is a single command: `/tts`.
|
|
351
351
|
See [Slash commands](/tools/slash-commands) for enablement details.
|
|
352
352
|
|
|
353
|
-
Discord note: `/tts` is a built-in Discord command, so
|
|
353
|
+
Discord note: `/tts` is a built-in Discord command, so OpenClaw registers
|
|
354
354
|
`/voice` as the native command there. Text `/tts ...` still works.
|
|
355
355
|
|
|
356
356
|
```
|
|
@@ -362,7 +362,7 @@ Discord note: `/tts` is a built-in Discord command, so Moltbot registers
|
|
|
362
362
|
/tts provider openai
|
|
363
363
|
/tts limit 2000
|
|
364
364
|
/tts summary off
|
|
365
|
-
/tts audio Hello from
|
|
365
|
+
/tts audio Hello from OpenClaw
|
|
366
366
|
```
|
|
367
367
|
|
|
368
368
|
Notes:
|
package/docs/tui.md
CHANGED
|
@@ -9,17 +9,17 @@ read_when:
|
|
|
9
9
|
## Quick start
|
|
10
10
|
1) Start the Gateway.
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
openclaw gateway
|
|
13
13
|
```
|
|
14
14
|
2) Open the TUI.
|
|
15
15
|
```bash
|
|
16
|
-
|
|
16
|
+
openclaw tui
|
|
17
17
|
```
|
|
18
18
|
3) Type a message and press Enter.
|
|
19
19
|
|
|
20
20
|
Remote Gateway:
|
|
21
21
|
```bash
|
|
22
|
-
|
|
22
|
+
openclaw tui --url ws://<host>:<port> --token <gateway-token>
|
|
23
23
|
```
|
|
24
24
|
Use `--password` if your Gateway uses password auth.
|
|
25
25
|
|
|
@@ -46,7 +46,7 @@ Use `--password` if your Gateway uses password auth.
|
|
|
46
46
|
- Turn delivery on:
|
|
47
47
|
- `/deliver on`
|
|
48
48
|
- or the Settings panel
|
|
49
|
-
- or start with `
|
|
49
|
+
- or start with `openclaw tui --deliver`
|
|
50
50
|
|
|
51
51
|
## Pickers + overlays
|
|
52
52
|
- Model picker: list available models and set the session override.
|
|
@@ -123,12 +123,12 @@ Other Gateway slash commands (for example, `/context`) are forwarded to the Gate
|
|
|
123
123
|
|
|
124
124
|
No output after sending a message:
|
|
125
125
|
- Run `/status` in the TUI to confirm the Gateway is connected and idle/busy.
|
|
126
|
-
- Check the Gateway logs: `
|
|
127
|
-
- Confirm the agent can run: `
|
|
126
|
+
- Check the Gateway logs: `openclaw logs --follow`.
|
|
127
|
+
- Confirm the agent can run: `openclaw status` and `openclaw models status`.
|
|
128
128
|
- If you expect messages in a chat channel, enable delivery (`/deliver on` or `--deliver`).
|
|
129
129
|
- `--history-limit <n>`: History entries to load (default 200)
|
|
130
130
|
|
|
131
131
|
## Troubleshooting
|
|
132
132
|
- `disconnected`: ensure the Gateway is running and your `--url/--token/--password` are correct.
|
|
133
|
-
- No agents in picker: check `
|
|
133
|
+
- No agents in picker: check `openclaw agents list` and your routing config.
|
|
134
134
|
- Empty session picker: you might be in global scope or have no sessions yet.
|
package/docs/vps.md
CHANGED
package/docs/web/control-ui.md
CHANGED
|
@@ -9,7 +9,7 @@ read_when:
|
|
|
9
9
|
The Control UI is a small **Vite + Lit** single-page app served by the Gateway:
|
|
10
10
|
|
|
11
11
|
- default: `http://<host>:18789/`
|
|
12
|
-
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/
|
|
12
|
+
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/openclaw`)
|
|
13
13
|
|
|
14
14
|
It speaks **directly to the Gateway WebSocket** on the same port.
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ If the Gateway is running on the same computer, open:
|
|
|
19
19
|
|
|
20
20
|
- http://127.0.0.1:18789/ (or http://localhost:18789/)
|
|
21
21
|
|
|
22
|
-
If the page fails to load, start the Gateway first: `
|
|
22
|
+
If the page fails to load, start the Gateway first: `openclaw gateway`.
|
|
23
23
|
|
|
24
24
|
Auth is supplied during the WebSocket handshake via:
|
|
25
25
|
- `connect.params.auth.token`
|
|
@@ -37,7 +37,7 @@ The onboarding wizard generates a gateway token by default, so paste it here on
|
|
|
37
37
|
- Skills: status, enable/disable, install, API key updates (`skills.*`)
|
|
38
38
|
- Nodes: list + caps (`node.list`)
|
|
39
39
|
- Exec approvals: edit gateway or node allowlists + ask policy for `exec host=gateway/node` (`exec.approvals.*`)
|
|
40
|
-
- Config: view/edit `~/.
|
|
40
|
+
- Config: view/edit `~/.openclaw/openclaw.json` (`config.get`, `config.set`)
|
|
41
41
|
- Config: apply + restart with validation (`config.apply`) and wake the last active session
|
|
42
42
|
- Config writes include a base-hash guard to prevent clobbering concurrent edits
|
|
43
43
|
- Config schema + form rendering (`config.schema`, including plugin + channel schemas); Raw JSON editor remains available
|
|
@@ -62,14 +62,14 @@ The onboarding wizard generates a gateway token by default, so paste it here on
|
|
|
62
62
|
Keep the Gateway on loopback and let Tailscale Serve proxy it with HTTPS:
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
|
|
65
|
+
openclaw gateway --tailscale serve
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
Open:
|
|
69
69
|
- `https://<magicdns>/` (or your configured `gateway.controlUi.basePath`)
|
|
70
70
|
|
|
71
71
|
By default, Serve requests can authenticate via Tailscale identity headers
|
|
72
|
-
(`tailscale-user-login`) when `gateway.auth.allowTailscale` is `true`.
|
|
72
|
+
(`tailscale-user-login`) when `gateway.auth.allowTailscale` is `true`. OpenClaw
|
|
73
73
|
verifies the identity by resolving the `x-forwarded-for` address with
|
|
74
74
|
`tailscale whois` and matching it to the header, and only accepts these when the
|
|
75
75
|
request hits loopback with Tailscale’s `x-forwarded-*` headers. Set
|
|
@@ -79,7 +79,7 @@ if you want to require a token/password even for Serve traffic.
|
|
|
79
79
|
### Bind to tailnet + token
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
|
|
82
|
+
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Then open:
|
|
@@ -91,7 +91,7 @@ Paste the token into the UI settings (sent as `connect.params.auth.token`).
|
|
|
91
91
|
|
|
92
92
|
If you open the dashboard over plain HTTP (`http://<lan-ip>` or `http://<tailscale-ip>`),
|
|
93
93
|
the browser runs in a **non-secure context** and blocks WebCrypto. By default,
|
|
94
|
-
|
|
94
|
+
OpenClaw **blocks** Control UI connections without device identity.
|
|
95
95
|
|
|
96
96
|
**Recommended fix:** use HTTPS (Tailscale Serve) or open the UI locally:
|
|
97
97
|
- `https://<magicdns>/` (Serve)
|
|
@@ -125,7 +125,7 @@ pnpm ui:build # auto-installs UI deps on first run
|
|
|
125
125
|
Optional absolute base (when you want fixed asset URLs):
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
|
|
128
|
+
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
For local development (separate dev server):
|
package/docs/web/dashboard.md
CHANGED
|
@@ -26,17 +26,17 @@ Prefer localhost, Tailscale Serve, or an SSH tunnel.
|
|
|
26
26
|
## Fast path (recommended)
|
|
27
27
|
|
|
28
28
|
- After onboarding, the CLI now auto-opens the dashboard with your token and prints the same tokenized link.
|
|
29
|
-
- Re-open anytime: `
|
|
29
|
+
- Re-open anytime: `openclaw dashboard` (copies link, opens browser if possible, shows SSH hint if headless).
|
|
30
30
|
- The token stays local (query param only); the UI strips it after first load and saves it in localStorage.
|
|
31
31
|
|
|
32
32
|
## Token basics (local vs remote)
|
|
33
33
|
|
|
34
|
-
- **Localhost**: open `http://127.0.0.1:18789/`. If you see “unauthorized,” run `
|
|
35
|
-
- **Token source**: `gateway.auth.token` (or `
|
|
34
|
+
- **Localhost**: open `http://127.0.0.1:18789/`. If you see “unauthorized,” run `openclaw dashboard` and use the tokenized link (`?token=...`).
|
|
35
|
+
- **Token source**: `gateway.auth.token` (or `OPENCLAW_GATEWAY_TOKEN`); the UI stores it after first load.
|
|
36
36
|
- **Not localhost**: use Tailscale Serve (tokenless if `gateway.auth.allowTailscale: true`), tailnet bind with a token, or an SSH tunnel. See [Web surfaces](/web).
|
|
37
37
|
|
|
38
38
|
## If you see “unauthorized” / 1008
|
|
39
39
|
|
|
40
|
-
- Run `
|
|
41
|
-
- Ensure the gateway is reachable (local: `
|
|
42
|
-
- In the dashboard settings, paste the same token you configured in `gateway.auth.token` (or `
|
|
40
|
+
- Run `openclaw dashboard` to get a fresh tokenized link.
|
|
41
|
+
- Ensure the gateway is reachable (local: `openclaw status`; remote: SSH tunnel `ssh -N -L 18789:127.0.0.1:18789 user@host` then open `http://127.0.0.1:18789/?token=...`).
|
|
42
|
+
- In the dashboard settings, paste the same token you configured in `gateway.auth.token` (or `OPENCLAW_GATEWAY_TOKEN`).
|
package/docs/web/index.md
CHANGED
|
@@ -9,7 +9,7 @@ read_when:
|
|
|
9
9
|
The Gateway serves a small **browser Control UI** (Vite + Lit) from the same port as the Gateway WebSocket:
|
|
10
10
|
|
|
11
11
|
- default: `http://<host>:18789/`
|
|
12
|
-
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/
|
|
12
|
+
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/openclaw`)
|
|
13
13
|
|
|
14
14
|
Capabilities live in [Control UI](/web/control-ui).
|
|
15
15
|
This page focuses on bind modes, security, and web-facing surfaces.
|
|
@@ -27,7 +27,7 @@ You can control it via config:
|
|
|
27
27
|
```json5
|
|
28
28
|
{
|
|
29
29
|
gateway: {
|
|
30
|
-
controlUi: { enabled: true, basePath: "/
|
|
30
|
+
controlUi: { enabled: true, basePath: "/openclaw" } // basePath optional
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
```
|
|
@@ -50,7 +50,7 @@ Keep the Gateway on loopback and let Tailscale Serve proxy it:
|
|
|
50
50
|
Then start the gateway:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
|
|
53
|
+
openclaw gateway
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Open:
|
|
@@ -71,7 +71,7 @@ Open:
|
|
|
71
71
|
Then start the gateway (token required for non-loopback binds):
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
|
|
74
|
+
openclaw gateway
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
Open:
|
|
@@ -84,7 +84,7 @@ Open:
|
|
|
84
84
|
gateway: {
|
|
85
85
|
bind: "loopback",
|
|
86
86
|
tailscale: { mode: "funnel" },
|
|
87
|
-
auth: { mode: "password" } // or
|
|
87
|
+
auth: { mode: "password" } // or OPENCLAW_GATEWAY_PASSWORD
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
```
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { emptyPluginConfigSchema } from "
|
|
1
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
2
|
+
import { emptyPluginConfigSchema } from "openclaw/plugin-sdk";
|
|
3
3
|
|
|
4
4
|
import { bluebubblesPlugin } from "./src/channel.js";
|
|
5
5
|
import { handleBlueBubblesWebhookRequest } from "./src/monitor.js";
|
|
@@ -10,7 +10,7 @@ const plugin = {
|
|
|
10
10
|
name: "BlueBubbles",
|
|
11
11
|
description: "BlueBubbles channel plugin (macOS app)",
|
|
12
12
|
configSchema: emptyPluginConfigSchema(),
|
|
13
|
-
register(api:
|
|
13
|
+
register(api: OpenClawPluginApi) {
|
|
14
14
|
setBlueBubblesRuntime(api.runtime);
|
|
15
15
|
api.registerChannel({ plugin: bluebubblesPlugin });
|
|
16
16
|
api.registerHttpHandler(handleBlueBubblesWebhookRequest);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@
|
|
3
|
-
"version": "2026.1.
|
|
2
|
+
"name": "@openclaw/bluebubbles",
|
|
3
|
+
"version": "2026.1.29",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
6
|
-
"
|
|
5
|
+
"description": "OpenClaw BlueBubbles channel plugin",
|
|
6
|
+
"openclaw": {
|
|
7
7
|
"extensions": [
|
|
8
8
|
"./index.ts"
|
|
9
9
|
],
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"order": 75
|
|
26
26
|
},
|
|
27
27
|
"install": {
|
|
28
|
-
"npmSpec": "@
|
|
28
|
+
"npmSpec": "@openclaw/bluebubbles",
|
|
29
29
|
"localPath": "extensions/bluebubbles",
|
|
30
30
|
"defaultChoice": "npm"
|
|
31
31
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "
|
|
1
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
2
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk";
|
|
3
3
|
import { normalizeBlueBubblesServerUrl, type BlueBubblesAccountConfig } from "./types.js";
|
|
4
4
|
|
|
5
5
|
export type ResolvedBlueBubblesAccount = {
|
|
@@ -11,26 +11,26 @@ export type ResolvedBlueBubblesAccount = {
|
|
|
11
11
|
baseUrl?: string;
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
function listConfiguredAccountIds(cfg:
|
|
14
|
+
function listConfiguredAccountIds(cfg: OpenClawConfig): string[] {
|
|
15
15
|
const accounts = cfg.channels?.bluebubbles?.accounts;
|
|
16
16
|
if (!accounts || typeof accounts !== "object") return [];
|
|
17
17
|
return Object.keys(accounts).filter(Boolean);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function listBlueBubblesAccountIds(cfg:
|
|
20
|
+
export function listBlueBubblesAccountIds(cfg: OpenClawConfig): string[] {
|
|
21
21
|
const ids = listConfiguredAccountIds(cfg);
|
|
22
22
|
if (ids.length === 0) return [DEFAULT_ACCOUNT_ID];
|
|
23
23
|
return ids.sort((a, b) => a.localeCompare(b));
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export function resolveDefaultBlueBubblesAccountId(cfg:
|
|
26
|
+
export function resolveDefaultBlueBubblesAccountId(cfg: OpenClawConfig): string {
|
|
27
27
|
const ids = listBlueBubblesAccountIds(cfg);
|
|
28
28
|
if (ids.includes(DEFAULT_ACCOUNT_ID)) return DEFAULT_ACCOUNT_ID;
|
|
29
29
|
return ids[0] ?? DEFAULT_ACCOUNT_ID;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function resolveAccountConfig(
|
|
33
|
-
cfg:
|
|
33
|
+
cfg: OpenClawConfig,
|
|
34
34
|
accountId: string,
|
|
35
35
|
): BlueBubblesAccountConfig | undefined {
|
|
36
36
|
const accounts = cfg.channels?.bluebubbles?.accounts;
|
|
@@ -39,7 +39,7 @@ function resolveAccountConfig(
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function mergeBlueBubblesAccountConfig(
|
|
42
|
-
cfg:
|
|
42
|
+
cfg: OpenClawConfig,
|
|
43
43
|
accountId: string,
|
|
44
44
|
): BlueBubblesAccountConfig {
|
|
45
45
|
const base = (cfg.channels?.bluebubbles ?? {}) as BlueBubblesAccountConfig & {
|
|
@@ -52,7 +52,7 @@ function mergeBlueBubblesAccountConfig(
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export function resolveBlueBubblesAccount(params: {
|
|
55
|
-
cfg:
|
|
55
|
+
cfg: OpenClawConfig;
|
|
56
56
|
accountId?: string | null;
|
|
57
57
|
}): ResolvedBlueBubblesAccount {
|
|
58
58
|
const accountId = normalizeAccountId(params.accountId);
|
|
@@ -73,7 +73,7 @@ export function resolveBlueBubblesAccount(params: {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export function listEnabledBlueBubblesAccounts(cfg:
|
|
76
|
+
export function listEnabledBlueBubblesAccounts(cfg: OpenClawConfig): ResolvedBlueBubblesAccount[] {
|
|
77
77
|
return listBlueBubblesAccountIds(cfg)
|
|
78
78
|
.map((accountId) => resolveBlueBubblesAccount({ cfg, accountId }))
|
|
79
79
|
.filter((account) => account.enabled);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it, vi, beforeEach } from "vitest";
|
|
2
2
|
|
|
3
3
|
import { bluebubblesMessageActions } from "./actions.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
5
5
|
|
|
6
6
|
vi.mock("./accounts.js", () => ({
|
|
7
7
|
resolveBlueBubblesAccount: vi.fn(({ cfg, accountId }) => {
|
|
@@ -49,7 +49,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
49
49
|
|
|
50
50
|
describe("listActions", () => {
|
|
51
51
|
it("returns empty array when account is not enabled", () => {
|
|
52
|
-
const cfg:
|
|
52
|
+
const cfg: OpenClawConfig = {
|
|
53
53
|
channels: { bluebubbles: { enabled: false } },
|
|
54
54
|
};
|
|
55
55
|
const actions = bluebubblesMessageActions.listActions({ cfg });
|
|
@@ -57,7 +57,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
it("returns empty array when account is not configured", () => {
|
|
60
|
-
const cfg:
|
|
60
|
+
const cfg: OpenClawConfig = {
|
|
61
61
|
channels: { bluebubbles: { enabled: true } },
|
|
62
62
|
};
|
|
63
63
|
const actions = bluebubblesMessageActions.listActions({ cfg });
|
|
@@ -65,7 +65,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it("returns react action when enabled and configured", () => {
|
|
68
|
-
const cfg:
|
|
68
|
+
const cfg: OpenClawConfig = {
|
|
69
69
|
channels: {
|
|
70
70
|
bluebubbles: {
|
|
71
71
|
enabled: true,
|
|
@@ -79,7 +79,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
79
79
|
});
|
|
80
80
|
|
|
81
81
|
it("excludes react action when reactions are gated off", () => {
|
|
82
|
-
const cfg:
|
|
82
|
+
const cfg: OpenClawConfig = {
|
|
83
83
|
channels: {
|
|
84
84
|
bluebubbles: {
|
|
85
85
|
enabled: true,
|
|
@@ -153,7 +153,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
153
153
|
|
|
154
154
|
describe("handleAction", () => {
|
|
155
155
|
it("throws for unsupported actions", async () => {
|
|
156
|
-
const cfg:
|
|
156
|
+
const cfg: OpenClawConfig = {
|
|
157
157
|
channels: {
|
|
158
158
|
bluebubbles: {
|
|
159
159
|
serverUrl: "http://localhost:1234",
|
|
@@ -172,7 +172,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
it("throws when emoji is missing for react action", async () => {
|
|
175
|
-
const cfg:
|
|
175
|
+
const cfg: OpenClawConfig = {
|
|
176
176
|
channels: {
|
|
177
177
|
bluebubbles: {
|
|
178
178
|
serverUrl: "http://localhost:1234",
|
|
@@ -191,7 +191,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
191
191
|
});
|
|
192
192
|
|
|
193
193
|
it("throws when messageId is missing", async () => {
|
|
194
|
-
const cfg:
|
|
194
|
+
const cfg: OpenClawConfig = {
|
|
195
195
|
channels: {
|
|
196
196
|
bluebubbles: {
|
|
197
197
|
serverUrl: "http://localhost:1234",
|
|
@@ -213,7 +213,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
213
213
|
const { resolveChatGuidForTarget } = await import("./send.js");
|
|
214
214
|
vi.mocked(resolveChatGuidForTarget).mockResolvedValueOnce(null);
|
|
215
215
|
|
|
216
|
-
const cfg:
|
|
216
|
+
const cfg: OpenClawConfig = {
|
|
217
217
|
channels: {
|
|
218
218
|
bluebubbles: {
|
|
219
219
|
serverUrl: "http://localhost:1234",
|
|
@@ -234,7 +234,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
234
234
|
it("sends reaction successfully with chatGuid", async () => {
|
|
235
235
|
const { sendBlueBubblesReaction } = await import("./reactions.js");
|
|
236
236
|
|
|
237
|
-
const cfg:
|
|
237
|
+
const cfg: OpenClawConfig = {
|
|
238
238
|
channels: {
|
|
239
239
|
bluebubbles: {
|
|
240
240
|
serverUrl: "http://localhost:1234",
|
|
@@ -269,7 +269,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
269
269
|
it("sends reaction removal successfully", async () => {
|
|
270
270
|
const { sendBlueBubblesReaction } = await import("./reactions.js");
|
|
271
271
|
|
|
272
|
-
const cfg:
|
|
272
|
+
const cfg: OpenClawConfig = {
|
|
273
273
|
channels: {
|
|
274
274
|
bluebubbles: {
|
|
275
275
|
serverUrl: "http://localhost:1234",
|
|
@@ -305,7 +305,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
305
305
|
const { resolveChatGuidForTarget } = await import("./send.js");
|
|
306
306
|
vi.mocked(resolveChatGuidForTarget).mockResolvedValueOnce("iMessage;-;+15559876543");
|
|
307
307
|
|
|
308
|
-
const cfg:
|
|
308
|
+
const cfg: OpenClawConfig = {
|
|
309
309
|
channels: {
|
|
310
310
|
bluebubbles: {
|
|
311
311
|
serverUrl: "http://localhost:1234",
|
|
@@ -335,7 +335,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
335
335
|
it("passes partIndex when provided", async () => {
|
|
336
336
|
const { sendBlueBubblesReaction } = await import("./reactions.js");
|
|
337
337
|
|
|
338
|
-
const cfg:
|
|
338
|
+
const cfg: OpenClawConfig = {
|
|
339
339
|
channels: {
|
|
340
340
|
bluebubbles: {
|
|
341
341
|
serverUrl: "http://localhost:1234",
|
|
@@ -367,7 +367,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
367
367
|
const { resolveChatGuidForTarget } = await import("./send.js");
|
|
368
368
|
vi.mocked(resolveChatGuidForTarget).mockResolvedValueOnce("iMessage;-;+15550001111");
|
|
369
369
|
|
|
370
|
-
const cfg:
|
|
370
|
+
const cfg: OpenClawConfig = {
|
|
371
371
|
channels: {
|
|
372
372
|
bluebubbles: {
|
|
373
373
|
serverUrl: "http://localhost:1234",
|
|
@@ -405,7 +405,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
405
405
|
const { sendBlueBubblesReaction } = await import("./reactions.js");
|
|
406
406
|
vi.mocked(resolveBlueBubblesMessageId).mockReturnValueOnce("resolved-uuid");
|
|
407
407
|
|
|
408
|
-
const cfg:
|
|
408
|
+
const cfg: OpenClawConfig = {
|
|
409
409
|
channels: {
|
|
410
410
|
bluebubbles: {
|
|
411
411
|
serverUrl: "http://localhost:1234",
|
|
@@ -439,7 +439,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
439
439
|
throw new Error("short id expired");
|
|
440
440
|
});
|
|
441
441
|
|
|
442
|
-
const cfg:
|
|
442
|
+
const cfg: OpenClawConfig = {
|
|
443
443
|
channels: {
|
|
444
444
|
bluebubbles: {
|
|
445
445
|
serverUrl: "http://localhost:1234",
|
|
@@ -465,7 +465,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
465
465
|
it("accepts message param for edit action", async () => {
|
|
466
466
|
const { editBlueBubblesMessage } = await import("./chat.js");
|
|
467
467
|
|
|
468
|
-
const cfg:
|
|
468
|
+
const cfg: OpenClawConfig = {
|
|
469
469
|
channels: {
|
|
470
470
|
bluebubbles: {
|
|
471
471
|
serverUrl: "http://localhost:1234",
|
|
@@ -491,7 +491,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
491
491
|
it("accepts message/target aliases for sendWithEffect", async () => {
|
|
492
492
|
const { sendMessageBlueBubbles } = await import("./send.js");
|
|
493
493
|
|
|
494
|
-
const cfg:
|
|
494
|
+
const cfg: OpenClawConfig = {
|
|
495
495
|
channels: {
|
|
496
496
|
bluebubbles: {
|
|
497
497
|
serverUrl: "http://localhost:1234",
|
|
@@ -524,7 +524,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
524
524
|
it("passes asVoice through sendAttachment", async () => {
|
|
525
525
|
const { sendBlueBubblesAttachment } = await import("./attachments.js");
|
|
526
526
|
|
|
527
|
-
const cfg:
|
|
527
|
+
const cfg: OpenClawConfig = {
|
|
528
528
|
channels: {
|
|
529
529
|
bluebubbles: {
|
|
530
530
|
serverUrl: "http://localhost:1234",
|
|
@@ -558,7 +558,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
558
558
|
});
|
|
559
559
|
|
|
560
560
|
it("throws when buffer is missing for setGroupIcon", async () => {
|
|
561
|
-
const cfg:
|
|
561
|
+
const cfg: OpenClawConfig = {
|
|
562
562
|
channels: {
|
|
563
563
|
bluebubbles: {
|
|
564
564
|
serverUrl: "http://localhost:1234",
|
|
@@ -580,7 +580,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
580
580
|
it("sets group icon successfully with chatGuid and buffer", async () => {
|
|
581
581
|
const { setGroupIconBlueBubbles } = await import("./chat.js");
|
|
582
582
|
|
|
583
|
-
const cfg:
|
|
583
|
+
const cfg: OpenClawConfig = {
|
|
584
584
|
channels: {
|
|
585
585
|
bluebubbles: {
|
|
586
586
|
serverUrl: "http://localhost:1234",
|
|
@@ -619,7 +619,7 @@ describe("bluebubblesMessageActions", () => {
|
|
|
619
619
|
it("uses default filename when not provided for setGroupIcon", async () => {
|
|
620
620
|
const { setGroupIconBlueBubbles } = await import("./chat.js");
|
|
621
621
|
|
|
622
|
-
const cfg:
|
|
622
|
+
const cfg: OpenClawConfig = {
|
|
623
623
|
channels: {
|
|
624
624
|
bluebubbles: {
|
|
625
625
|
serverUrl: "http://localhost:1234",
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
type ChannelMessageActionAdapter,
|
|
10
10
|
type ChannelMessageActionName,
|
|
11
11
|
type ChannelToolSend,
|
|
12
|
-
type
|
|
13
|
-
} from "
|
|
12
|
+
type OpenClawConfig,
|
|
13
|
+
} from "openclaw/plugin-sdk";
|
|
14
14
|
|
|
15
15
|
import { resolveBlueBubblesAccount } from "./accounts.js";
|
|
16
16
|
import { resolveBlueBubblesMessageId } from "./monitor.js";
|
|
@@ -66,9 +66,9 @@ const SUPPORTED_ACTIONS = new Set<ChannelMessageActionName>(BLUEBUBBLES_ACTION_N
|
|
|
66
66
|
|
|
67
67
|
export const bluebubblesMessageActions: ChannelMessageActionAdapter = {
|
|
68
68
|
listActions: ({ cfg }) => {
|
|
69
|
-
const account = resolveBlueBubblesAccount({ cfg: cfg as
|
|
69
|
+
const account = resolveBlueBubblesAccount({ cfg: cfg as OpenClawConfig });
|
|
70
70
|
if (!account.enabled || !account.configured) return [];
|
|
71
|
-
const gate = createActionGate((cfg as
|
|
71
|
+
const gate = createActionGate((cfg as OpenClawConfig).channels?.bluebubbles?.actions);
|
|
72
72
|
const actions = new Set<ChannelMessageActionName>();
|
|
73
73
|
const macOS26 = isMacOS26OrHigher(account.accountId);
|
|
74
74
|
for (const action of BLUEBUBBLES_ACTION_NAMES) {
|
|
@@ -90,12 +90,12 @@ export const bluebubblesMessageActions: ChannelMessageActionAdapter = {
|
|
|
90
90
|
},
|
|
91
91
|
handleAction: async ({ action, params, cfg, accountId, toolContext }) => {
|
|
92
92
|
const account = resolveBlueBubblesAccount({
|
|
93
|
-
cfg: cfg as
|
|
93
|
+
cfg: cfg as OpenClawConfig,
|
|
94
94
|
accountId: accountId ?? undefined,
|
|
95
95
|
});
|
|
96
96
|
const baseUrl = account.config.serverUrl?.trim();
|
|
97
97
|
const password = account.config.password?.trim();
|
|
98
|
-
const opts = { cfg: cfg as
|
|
98
|
+
const opts = { cfg: cfg as OpenClawConfig, accountId: accountId ?? undefined };
|
|
99
99
|
|
|
100
100
|
// Helper to resolve chatGuid from various params or session context
|
|
101
101
|
const resolveChatGuid = async (): Promise<string> => {
|