openclaw-botonline 0.1.6 → 2026.2.14
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 +4 -4
- package/README.md +3 -3
- package/dist/acp/server.js +1 -1
- package/dist/agents/auth-profiles/doctor.js +1 -1
- package/dist/agents/model-auth.js +1 -1
- package/dist/agents/model-compat.js +1 -1
- package/dist/agents/sandbox/docker.js +3 -3
- package/dist/agents/sandbox/runtime-status.js +1 -1
- package/dist/agents/system-prompt.js +6 -6
- package/dist/agents/tools/web-search.js +1 -1
- package/dist/auto-reply/reply/agent-runner-execution.js +1 -1
- package/dist/auto-reply/reply/bash-command.js +1 -1
- package/dist/auto-reply/reply/commands-session.js +2 -2
- package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
- package/dist/auto-reply/reply/reply-elevated.js +1 -1
- package/dist/browser/client-fetch.js +1 -1
- package/dist/browser/pw-tools-core.responses.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/channels/plugins/helpers.js +2 -2
- package/dist/channels/plugins/onboarding/signal.js +1 -1
- package/dist/channels/plugins/onboarding/telegram.js +1 -1
- package/dist/channels/plugins/onboarding/whatsapp.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/cli/acp-cli.js +1 -1
- package/dist/cli/browser-cli-examples.js +29 -29
- package/dist/cli/browser-cli-extension.js +1 -1
- package/dist/cli/browser-cli.js +1 -1
- package/dist/cli/config-cli.js +1 -1
- package/dist/cli/daemon-cli/install.js +1 -1
- package/dist/cli/daemon-cli/shared.js +3 -3
- package/dist/cli/daemon-cli/status.print.js +5 -5
- package/dist/cli/dns-cli.js +1 -1
- package/dist/cli/exec-approvals-cli.js +1 -1
- package/dist/cli/gateway-cli/dev.js +1 -1
- package/dist/cli/gateway-cli/run.js +2 -2
- package/dist/cli/gateway-cli/shared.js +4 -4
- package/dist/cli/hooks-cli.js +2 -2
- package/dist/cli/logs-cli.js +2 -2
- package/dist/cli/node-cli/daemon.js +3 -3
- package/dist/cli/pairing-cli.js +2 -2
- package/dist/cli/program/config-guard.js +1 -1
- package/dist/cli/program/help.js +11 -11
- package/dist/cli/program/register.agent.js +10 -10
- package/dist/cli/program/register.message.js +4 -4
- package/dist/cli/program/register.status-health-sessions.js +10 -10
- package/dist/cli/run-main.js +1 -1
- package/dist/cli/sandbox-cli.js +18 -18
- package/dist/cli/security-cli.js +2 -2
- package/dist/cli/skills-cli.js +2 -2
- package/dist/cli/update-cli.js +20 -20
- 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.list.js +1 -1
- package/dist/commands/channels/shared.js +1 -1
- package/dist/commands/channels/status.js +1 -1
- package/dist/commands/configure.channels.js +1 -1
- package/dist/commands/configure.wizard.js +1 -1
- package/dist/commands/daemon-install-helpers.js +1 -1
- package/dist/commands/docs.js +2 -2
- package/dist/commands/doctor-auth.js +2 -2
- package/dist/commands/doctor-config-flow.js +4 -4
- package/dist/commands/doctor-format.js +2 -2
- package/dist/commands/doctor-gateway-daemon-flow.js +1 -1
- package/dist/commands/doctor-security.js +6 -6
- package/dist/commands/doctor-update.js +1 -1
- package/dist/commands/doctor.js +4 -4
- package/dist/commands/models/auth.js +1 -1
- package/dist/commands/models/list.status-command.js +2 -2
- package/dist/commands/onboard-channels.js +3 -3
- package/dist/commands/onboard-hooks.js +3 -3
- 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-skills.js +1 -1
- package/dist/commands/onboard.js +1 -1
- package/dist/commands/reset.js +2 -2
- package/dist/commands/sandbox-display.js +1 -1
- package/dist/commands/status-all.js +1 -1
- package/dist/commands/status.command.js +6 -6
- package/dist/commands/status.update.js +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/control-ui/assets/{index-BcKRIZdG.js → index-BQCtUQ8f.js} +449 -449
- package/dist/control-ui/assets/index-BQCtUQ8f.js.map +1 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/daemon/inspect.js +1 -1
- package/dist/daemon/systemd-hints.js +1 -1
- package/dist/entry.js +4 -4
- package/dist/feishu/client.js +1 -1
- package/dist/feishu/message.js +1 -1
- package/dist/gateway/server.impl.js +2 -2
- package/dist/hooks/bundled/command-logger/HOOK.md +1 -1
- package/dist/hooks/bundled/session-memory/HOOK.md +1 -1
- package/dist/hooks/bundled/soul-evil/HOOK.md +1 -1
- package/dist/hooks/gmail-ops.js +1 -1
- package/dist/hooks/internal-hooks.js +1 -1
- package/dist/infra/clawdbot-root.js +1 -1
- package/dist/infra/outbound/targets.js +1 -1
- package/dist/infra/ports-format.js +1 -1
- package/dist/infra/ports.js +1 -1
- package/dist/infra/restart-sentinel.js +1 -1
- package/dist/infra/runtime-guard.js +2 -2
- package/dist/infra/tailscale.js +1 -1
- package/dist/infra/update-runner.js +1 -1
- package/dist/infra/update-startup.js +1 -1
- package/dist/media/host.js +1 -1
- package/dist/pairing/pairing-messages.js +1 -1
- package/dist/plugins/loader.js +1 -1
- package/dist/providers/qwen-portal-oauth.js +1 -1
- package/dist/security/audit-extra.js +1 -1
- package/dist/security/audit.js +2 -2
- package/dist/telegram/bot-message-context.js +1 -1
- package/dist/tui/tui.js +1 -1
- package/dist/version.js +1 -1
- package/dist/web/active-listener.js +1 -1
- package/dist/web/auth-store.js +1 -1
- package/dist/web/auto-reply/monitor.js +1 -1
- package/dist/web/login.js +1 -1
- package/dist/web/session.js +1 -1
- package/dist/wizard/onboarding.finalize.js +4 -4
- package/dist/wizard/onboarding.js +4 -4
- package/docs/automation/auth-monitoring.md +3 -3
- package/docs/automation/cron-jobs.md +4 -4
- package/docs/automation/poll.md +5 -5
- package/docs/bedrock.md +1 -1
- package/docs/channels/bluebubbles.md +6 -6
- package/docs/channels/discord.md +2 -2
- package/docs/channels/feishu.md +25 -25
- package/docs/channels/googlechat.md +4 -4
- package/docs/channels/imessage.md +3 -3
- package/docs/channels/line.md +4 -4
- package/docs/channels/matrix.md +6 -6
- package/docs/channels/mattermost.md +5 -5
- package/docs/channels/msteams.md +11 -11
- package/docs/channels/nextcloud-talk.md +4 -4
- package/docs/channels/nostr.md +3 -3
- package/docs/channels/signal.md +2 -2
- package/docs/channels/slack.md +1 -1
- package/docs/channels/telegram.md +10 -10
- package/docs/channels/tlon.md +3 -3
- package/docs/channels/troubleshooting.md +2 -2
- package/docs/channels/whatsapp.md +10 -10
- package/docs/channels/zalo.md +7 -7
- package/docs/channels/zalouser.md +10 -10
- package/docs/cli/channels.md +19 -19
- package/docs/cli/directory.md +12 -12
- package/docs/cli/doctor.md +1 -1
- package/docs/cli/gateway.md +3 -3
- package/docs/cli/index.md +13 -13
- package/docs/cli/message.md +10 -10
- package/docs/cli/models.md +14 -14
- package/docs/cli/onboard.md +6 -6
- package/docs/cli/pairing.md +4 -4
- package/docs/cli/plugins.md +14 -14
- package/docs/cli/sandbox.md +1 -1
- package/docs/cli/setup.md +1 -1
- package/docs/concepts/agent-workspace.md +4 -4
- package/docs/concepts/agent.md +1 -1
- package/docs/concepts/group-messages.md +1 -1
- package/docs/concepts/model-providers.md +18 -18
- package/docs/concepts/models.md +22 -22
- package/docs/concepts/multi-agent.md +2 -2
- package/docs/concepts/oauth.md +8 -8
- package/docs/concepts/usage-tracking.md +1 -1
- package/docs/gateway/authentication.md +15 -15
- package/docs/gateway/configuration-examples.md +8 -8
- package/docs/gateway/configuration.md +9 -9
- package/docs/gateway/health.md +2 -2
- package/docs/gateway/index.md +37 -37
- package/docs/gateway/multiple-gateways.md +1 -1
- package/docs/gateway/pairing-required-troubleshooting.md +19 -19
- package/docs/gateway/remote.md +2 -2
- package/docs/gateway/security.md +19 -19
- package/docs/gateway/tailscale.md +8 -8
- package/docs/gateway/token-mismatch-troubleshooting.md +4 -4
- package/docs/gateway/troubleshooting.md +90 -90
- package/docs/guides/custom-ai-providers.md +11 -11
- package/docs/guides/ssl-deployment.md +1 -1
- package/docs/help/faq.md +67 -67
- package/docs/help/troubleshooting.md +10 -10
- package/docs/hooks.md +1 -1
- package/docs/index.md +5 -5
- package/docs/install/ansible.md +9 -9
- package/docs/install/development-channels.md +6 -6
- package/docs/install/docker-hub-setup.md +10 -10
- package/docs/install/docker-quick.md +31 -31
- package/docs/install/docker.md +38 -38
- package/docs/install/index.md +16 -16
- package/docs/install/installer.md +8 -8
- package/docs/install/nix.md +1 -1
- package/docs/install/node.md +3 -3
- package/docs/install/uninstall.md +13 -13
- package/docs/install/updating.md +52 -52
- package/docs/logging.md +2 -2
- package/docs/nodes/images.md +3 -3
- package/docs/npm-publish-guide.md +7 -7
- package/docs/platforms/digitalocean.md +5 -5
- package/docs/platforms/exe-dev.md +2 -2
- package/docs/platforms/index.md +2 -2
- package/docs/platforms/linux.md +2 -2
- package/docs/platforms/mac/dev-setup.md +1 -1
- package/docs/platforms/mac/remote.md +1 -1
- package/docs/platforms/macos-vm.md +3 -3
- package/docs/platforms/raspberry-pi.md +1 -1
- package/docs/platforms/windows.md +2 -2
- package/docs/plugin.md +18 -18
- package/docs/plugins/voice-call.md +2 -2
- package/docs/plugins/zalouser.md +7 -7
- package/docs/prose.md +2 -2
- package/docs/providers/anthropic.md +10 -10
- package/docs/providers/github-copilot.md +5 -5
- package/docs/providers/glm.md +1 -1
- package/docs/providers/index.md +1 -1
- package/docs/providers/minimax.md +2 -2
- package/docs/providers/models.md +1 -1
- package/docs/providers/moonshot.md +2 -2
- package/docs/providers/ollama.md +1 -1
- package/docs/providers/openai.md +4 -4
- package/docs/providers/opencode.md +2 -2
- package/docs/providers/openrouter.md +1 -1
- package/docs/providers/qwen.md +3 -3
- package/docs/providers/synthetic.md +1 -1
- package/docs/providers/venice.md +7 -7
- package/docs/providers/vercel-ai-gateway.md +2 -2
- package/docs/providers/volcengine.md +2 -2
- package/docs/providers/zai.md +2 -2
- package/docs/reference/api-usage-costs.md +3 -3
- package/docs/scripts.md +1 -1
- package/docs/start/clawd.md +10 -10
- package/docs/start/getting-started.md +18 -18
- package/docs/start/onboarding.md +1 -1
- package/docs/start/pairing.md +6 -6
- package/docs/start/setup.md +7 -7
- package/docs/start/wizard.md +18 -18
- package/docs/testing.md +5 -5
- package/docs/token-use.md +1 -1
- package/docs/tools/agent-send.md +1 -1
- package/docs/tools/browser-linux-troubleshooting.md +1 -1
- package/docs/tools/browser-login.md +3 -3
- package/docs/tools/browser.md +59 -59
- package/docs/tools/chrome-extension.md +6 -6
- package/docs/tools/slash-commands.md +3 -3
- package/docs/tui.md +1 -1
- package/extensions/bluebubbles/index.ts +2 -2
- package/extensions/bluebubbles/src/accounts.ts +2 -2
- package/extensions/bluebubbles/src/actions.test.ts +1 -1
- package/extensions/bluebubbles/src/actions.ts +1 -1
- package/extensions/bluebubbles/src/attachments.ts +1 -1
- package/extensions/bluebubbles/src/channel.ts +2 -2
- package/extensions/bluebubbles/src/chat.ts +1 -1
- package/extensions/bluebubbles/src/config-schema.ts +1 -1
- package/extensions/bluebubbles/src/media-send.ts +1 -1
- package/extensions/bluebubbles/src/monitor.test.ts +2 -2
- package/extensions/bluebubbles/src/onboarding.ts +2 -2
- package/extensions/bluebubbles/src/reactions.ts +1 -1
- package/extensions/bluebubbles/src/runtime.ts +1 -1
- package/extensions/bluebubbles/src/send.ts +1 -1
- package/extensions/copilot-proxy/README.md +2 -2
- package/extensions/copilot-proxy/index.ts +1 -1
- package/extensions/diagnostics-otel/index.ts +2 -2
- package/extensions/diagnostics-otel/src/service.test.ts +1 -1
- package/extensions/diagnostics-otel/src/service.ts +2 -2
- package/extensions/discord/index.ts +2 -2
- package/extensions/discord/src/channel.ts +1 -1
- package/extensions/discord/src/runtime.ts +1 -1
- package/extensions/feishu/PUBLISHING.md +10 -10
- package/extensions/feishu/PUBLISH_CHECKLIST.md +2 -2
- package/extensions/feishu/README.md +5 -5
- package/extensions/feishu/package.json +5 -5
- package/extensions/google-antigravity-auth/README.md +2 -2
- package/extensions/google-antigravity-auth/index.ts +1 -1
- package/extensions/google-gemini-cli-auth/README.md +2 -2
- package/extensions/google-gemini-cli-auth/index.ts +1 -1
- package/extensions/googlechat/index.ts +2 -2
- package/extensions/googlechat/src/accounts.ts +2 -2
- package/extensions/googlechat/src/actions.ts +2 -2
- package/extensions/googlechat/src/channel.ts +2 -2
- package/extensions/googlechat/src/monitor.ts +2 -2
- package/extensions/googlechat/src/onboarding.ts +2 -2
- package/extensions/googlechat/src/runtime.ts +1 -1
- package/extensions/googlechat/src/types.config.ts +1 -1
- package/extensions/imessage/index.ts +2 -2
- package/extensions/imessage/src/channel.ts +1 -1
- package/extensions/imessage/src/runtime.ts +1 -1
- package/extensions/line/index.ts +2 -2
- package/extensions/line/src/card-command.ts +2 -2
- package/extensions/line/src/channel.logout.test.ts +1 -1
- package/extensions/line/src/channel.sendPayload.test.ts +1 -1
- package/extensions/line/src/channel.ts +2 -2
- package/extensions/line/src/runtime.ts +1 -1
- package/extensions/matrix/index.ts +2 -2
- 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/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 +2 -2
- 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.test.ts +1 -1
- package/extensions/matrix/src/matrix/send.ts +1 -1
- package/extensions/matrix/src/onboarding.ts +1 -1
- 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 +2 -2
- 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 +2 -2
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +1 -1
- package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
- package/extensions/mattermost/src/onboarding-helpers.ts +2 -2
- package/extensions/mattermost/src/onboarding.ts +2 -2
- package/extensions/mattermost/src/runtime.ts +1 -1
- package/extensions/mattermost/src/types.ts +1 -1
- package/extensions/memory-core/index.ts +2 -2
- package/extensions/memory-lancedb/index.ts +2 -2
- package/extensions/msteams/index.ts +2 -2
- package/extensions/msteams/src/attachments.test.ts +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +1 -1
- package/extensions/msteams/src/channel.ts +2 -2
- package/extensions/msteams/src/conversation-store-fs.test.ts +1 -1
- package/extensions/msteams/src/directory-live.ts +1 -1
- 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 +1 -1
- package/extensions/msteams/src/monitor.ts +1 -1
- package/extensions/msteams/src/onboarding.ts +2 -2
- 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.test.ts +1 -1
- package/extensions/msteams/src/polls.ts +1 -1
- package/extensions/msteams/src/probe.test.ts +1 -1
- package/extensions/msteams/src/probe.ts +1 -1
- package/extensions/msteams/src/reply-dispatcher.ts +1 -1
- package/extensions/msteams/src/runtime.ts +1 -1
- package/extensions/msteams/src/send-context.ts +1 -1
- package/extensions/msteams/src/send.ts +2 -2
- package/extensions/msteams/src/token.ts +1 -1
- package/extensions/nextcloud-talk/index.ts +2 -2
- package/extensions/nextcloud-talk/src/accounts.ts +1 -1
- package/extensions/nextcloud-talk/src/channel.ts +1 -1
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
- package/extensions/nextcloud-talk/src/inbound.ts +1 -1
- package/extensions/nextcloud-talk/src/monitor.ts +1 -1
- package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
- 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/README.md +2 -2
- package/extensions/nostr/index.ts +2 -2
- package/extensions/nostr/src/channel.ts +1 -1
- package/extensions/nostr/src/config-schema.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.ts +1 -1
- package/extensions/nostr/src/runtime.ts +1 -1
- package/extensions/nostr/src/types.ts +1 -1
- package/extensions/qwen-portal-auth/README.md +2 -2
- package/extensions/qwen-portal-auth/index.ts +1 -1
- package/extensions/signal/index.ts +2 -2
- package/extensions/signal/src/channel.ts +1 -1
- package/extensions/signal/src/runtime.ts +1 -1
- package/extensions/slack/index.ts +2 -2
- package/extensions/slack/src/channel.ts +1 -1
- package/extensions/slack/src/runtime.ts +1 -1
- package/extensions/telegram/index.ts +2 -2
- package/extensions/telegram/src/channel.ts +1 -1
- package/extensions/telegram/src/runtime.ts +1 -1
- package/extensions/tlon/index.ts +2 -2
- package/extensions/tlon/src/channel.ts +2 -2
- 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 +1 -1
- package/extensions/tlon/src/onboarding.ts +2 -2
- package/extensions/tlon/src/runtime.ts +1 -1
- package/extensions/tlon/src/types.ts +1 -1
- package/extensions/voice-call/CHANGELOG.md +1 -1
- package/extensions/voice-call/README.md +8 -8
- package/extensions/whatsapp/index.ts +2 -2
- package/extensions/whatsapp/src/channel.ts +1 -1
- package/extensions/whatsapp/src/runtime.ts +1 -1
- package/extensions/zalo/README.md +2 -2
- package/extensions/zalo/index.ts +2 -2
- package/extensions/zalo/src/accounts.ts +2 -2
- package/extensions/zalo/src/actions.ts +2 -2
- package/extensions/zalo/src/channel.directory.test.ts +1 -1
- package/extensions/zalo/src/channel.ts +2 -2
- package/extensions/zalo/src/config-schema.ts +1 -1
- package/extensions/zalo/src/monitor.ts +1 -1
- package/extensions/zalo/src/monitor.webhook.test.ts +1 -1
- package/extensions/zalo/src/onboarding.ts +2 -2
- package/extensions/zalo/src/runtime.ts +1 -1
- package/extensions/zalo/src/send.ts +1 -1
- package/extensions/zalo/src/status-issues.ts +1 -1
- package/extensions/zalo/src/token.ts +1 -1
- package/extensions/zalouser/README.md +16 -16
- package/extensions/zalouser/index.ts +2 -2
- package/extensions/zalouser/src/accounts.ts +2 -2
- package/extensions/zalouser/src/channel.ts +2 -2
- package/extensions/zalouser/src/config-schema.ts +1 -1
- package/extensions/zalouser/src/monitor.ts +2 -2
- package/extensions/zalouser/src/onboarding.ts +2 -2
- package/extensions/zalouser/src/runtime.ts +1 -1
- package/extensions/zalouser/src/status-issues.ts +2 -2
- package/package.json +3 -10
- package/dist/control-ui/assets/index-BcKRIZdG.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,7 @@ Docs: https://docs.clawd.bot
|
|
|
4
4
|
|
|
5
5
|
## 0.1.0
|
|
6
6
|
|
|
7
|
-
> 🎉 **版本号规范化**:从本版本起,openclaw-
|
|
7
|
+
> 🎉 **版本号规范化**:从本版本起,openclaw-botonline 采用标准语义化版本号 (Semver),告别日期版本。
|
|
8
8
|
> 本版本整合了 2026.2.3 ~ 2026.2.5 的所有更新内容。
|
|
9
9
|
|
|
10
10
|
### ✨ 新功能(Features)
|
|
@@ -21,7 +21,7 @@ Docs: https://docs.clawd.bot
|
|
|
21
21
|
|
|
22
22
|
- **飞书流式卡片 fallback**:改进 `closeStreamingMode` 返回值检查,API 失败时正确回退到普通消息 (#57) - 感谢 @Y1fe1Zh0u
|
|
23
23
|
- **飞书富文本解析**:修复 post 富文本消息解析,支持 locale 包装格式和嵌入图片下载 (#37)
|
|
24
|
-
- **依赖安装问题彻底解决**:使用 `@openclaw-
|
|
24
|
+
- **依赖安装问题彻底解决**:使用 `@openclaw-botonline/baileys` 替代上游 `@whiskeysockets/baileys`,彻底解决全局安装时 libsignal git 依赖导致的安装失败问题
|
|
25
25
|
- **npm/yarn 兼容**:完善 libsignal 依赖替换,添加 npm `overrides` 和 yarn `resolutions` 支持
|
|
26
26
|
- **Control UI 资源**:修复 npm 包缺少 Control UI 资源的问题 (#28)
|
|
27
27
|
- **Feishu 扩展打包**:修复 npm 包缺少 feishu 扩展 dist 目录的问题
|
|
@@ -50,7 +50,7 @@ Docs: https://docs.clawd.bot
|
|
|
50
50
|
|
|
51
51
|
### 🔧 修复(Fixes)
|
|
52
52
|
|
|
53
|
-
- Dependencies: 使用 `@openclaw-
|
|
53
|
+
- Dependencies: 使用 `@openclaw-botonline/baileys` 替代上游 `@whiskeysockets/baileys`,彻底解决全局安装时 libsignal git 依赖导致的安装失败问题
|
|
54
54
|
- Dependencies: 完善 libsignal 依赖替换,添加 npm `overrides` 和 yarn `resolutions` 支持,修复 npm/yarn 用户仍遇到 git 依赖安装失败的问题
|
|
55
55
|
- Feishu: 优化权限缺失时的错误提示,降低国内用户配置排障门槛 (#27)
|
|
56
56
|
|
|
@@ -65,7 +65,7 @@ Docs: https://docs.clawd.bot
|
|
|
65
65
|
### 🔧 修复(Fixes)
|
|
66
66
|
|
|
67
67
|
- Packaging: 修复 npm 包缺少 Control UI 资源的问题,导致网关管理页面无法正常显示 (#28)
|
|
68
|
-
- Dependencies: 使用 `@openclaw-
|
|
68
|
+
- Dependencies: 使用 `@openclaw-botonline/libsignal` 替代 git 依赖,解决中国大陆用户因无法访问 GitHub 导致安装失败的问题
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**私有化部署的 AI 智能助手网关。**
|
|
4
4
|
|
|
5
|
-
> ⚠️ **声明:** 本项目基于 [jiulingyun/openclaw-
|
|
5
|
+
> ⚠️ **声明:** 本项目基于 [jiulingyun/openclaw-botonline](https://github.com/jiulingyun/openclaw-botonline) 进行再开发,旨在提供更加灵活的在线服务部署方案。
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<img src="docs/images/main-view.png" alt="OpenClaw Bot Online 控制界面" width="800">
|
|
@@ -93,7 +93,7 @@ pnpm openclaw-botonline onboard --install-daemon
|
|
|
93
93
|
|
|
94
94
|
## 🔄 版本说明
|
|
95
95
|
|
|
96
|
-
本项目基于 [jiulingyun/openclaw-
|
|
96
|
+
本项目基于 [jiulingyun/openclaw-botonline](https://github.com/jiulingyun/openclaw-botonline) 进行再开发,适配在线服务部署场景。
|
|
97
97
|
|
|
98
98
|
版本格式:`v0.Y.Z`(如 `v0.1.4`)
|
|
99
99
|
|
|
@@ -122,7 +122,7 @@ pnpm openclaw-botonline onboard --install-daemon
|
|
|
122
122
|
---
|
|
123
123
|
|
|
124
124
|
<p align="center">
|
|
125
|
-
<strong>本项目基于 <a href="https://github.com/jiulingyun/openclaw-
|
|
125
|
+
<strong>本项目基于 <a href="https://github.com/jiulingyun/openclaw-botonline">jiulingyun/openclaw-botonline</a> 进行再开发</a>
|
|
126
126
|
</p>
|
|
127
127
|
|
|
128
128
|
<p align="center">
|
package/dist/acp/server.js
CHANGED
|
@@ -26,6 +26,6 @@ export function formatAuthDoctorHint(params) {
|
|
|
26
26
|
`- config: ${legacyProfileId}${cfgProvider || cfgMode ? ` (provider=${cfgProvider ?? "?"}, mode=${cfgMode ?? "?"})` : ""}`,
|
|
27
27
|
`- auth store oauth profiles: ${storeOauthProfiles || "(none)"}`,
|
|
28
28
|
`- suggested profile: ${suggested}`,
|
|
29
|
-
`Fix: run "${formatCliCommand("openclaw-
|
|
29
|
+
`Fix: run "${formatCliCommand("openclaw-botonline doctor --yes")}"`,
|
|
30
30
|
].join("\n");
|
|
31
31
|
}
|
|
@@ -162,7 +162,7 @@ export async function resolveApiKeyForProvider(params) {
|
|
|
162
162
|
throw new Error([
|
|
163
163
|
`No API key found for provider "${provider}".`,
|
|
164
164
|
`Auth store: ${authStorePath} (agentDir: ${resolvedAgentDir}).`,
|
|
165
|
-
`Configure auth for this agent (${formatCliCommand("openclaw-
|
|
165
|
+
`Configure auth for this agent (${formatCliCommand("openclaw-botonline agents add <id>")}) or copy auth-profiles.json from the main agentDir.`,
|
|
166
166
|
].join(" "));
|
|
167
167
|
}
|
|
168
168
|
export function resolveEnvApiKey(provider) {
|
|
@@ -4,7 +4,7 @@ function isOpenAiCompletionsModel(model) {
|
|
|
4
4
|
/**
|
|
5
5
|
* Ensures the model has an `input` field to prevent crashes in upstream SDK.
|
|
6
6
|
* The SDK uses `model.input.includes("image")` without null checking.
|
|
7
|
-
* @see https://github.com/jiulingyun/openclaw-
|
|
7
|
+
* @see https://github.com/jiulingyun/openclaw-botonline/issues/32
|
|
8
8
|
*/
|
|
9
9
|
function ensureModelInput(model) {
|
|
10
10
|
if (model.input && Array.isArray(model.input))
|
|
@@ -197,13 +197,13 @@ async function readContainerConfigHash(containerName) {
|
|
|
197
197
|
}
|
|
198
198
|
function formatSandboxRecreateHint(params) {
|
|
199
199
|
if (params.scope === "session") {
|
|
200
|
-
return formatCliCommand(`openclaw-
|
|
200
|
+
return formatCliCommand(`openclaw-botonline sandbox recreate --session ${params.sessionKey}`);
|
|
201
201
|
}
|
|
202
202
|
if (params.scope === "agent") {
|
|
203
203
|
const agentId = resolveSandboxAgentId(params.sessionKey) ?? "main";
|
|
204
|
-
return formatCliCommand(`openclaw-
|
|
204
|
+
return formatCliCommand(`openclaw-botonline sandbox recreate --agent ${agentId}`);
|
|
205
205
|
}
|
|
206
|
-
return formatCliCommand("openclaw-
|
|
206
|
+
return formatCliCommand("openclaw-botonline sandbox recreate --all");
|
|
207
207
|
}
|
|
208
208
|
export async function ensureSandboxContainer(params) {
|
|
209
209
|
const scopeKey = resolveSandboxScopeKey(params.cfg.scope, params.sessionKey);
|
|
@@ -85,6 +85,6 @@ export function formatSandboxToolPolicyBlockedMessage(params) {
|
|
|
85
85
|
if (runtime.mode === "non-main") {
|
|
86
86
|
lines.push(`- Use main session key (direct): ${runtime.mainSessionKey}`);
|
|
87
87
|
}
|
|
88
|
-
lines.push(`- See: ${formatCliCommand(`openclaw-
|
|
88
|
+
lines.push(`- See: ${formatCliCommand(`openclaw-botonline sandbox explain --session ${runtime.sessionKey}`)}`);
|
|
89
89
|
return lines.join("\n");
|
|
90
90
|
}
|
|
@@ -106,7 +106,7 @@ function buildDocsSection(params) {
|
|
|
106
106
|
"Community: https://discord.com/invite/clawd",
|
|
107
107
|
"Find new skills: https://clawdhub.com",
|
|
108
108
|
"For Clawdbot behavior, commands, config, or architecture: consult local docs first.",
|
|
109
|
-
"When diagnosing issues, run `openclaw-
|
|
109
|
+
"When diagnosing issues, run `openclaw-botonline status` yourself when possible; only ask the user if you lack access (e.g., sandboxed).",
|
|
110
110
|
"",
|
|
111
111
|
];
|
|
112
112
|
}
|
|
@@ -285,11 +285,11 @@ export function buildAgentSystemPrompt(params) {
|
|
|
285
285
|
"## Clawdbot CLI Quick Reference",
|
|
286
286
|
"Clawdbot is controlled via subcommands. Do not invent commands.",
|
|
287
287
|
"To manage the Gateway daemon service (start/stop/restart):",
|
|
288
|
-
"- openclaw-
|
|
289
|
-
"- openclaw-
|
|
290
|
-
"- openclaw-
|
|
291
|
-
"- openclaw-
|
|
292
|
-
"If unsure, ask the user to run `openclaw-
|
|
288
|
+
"- openclaw-botonline gateway status",
|
|
289
|
+
"- openclaw-botonline gateway start",
|
|
290
|
+
"- openclaw-botonline gateway stop",
|
|
291
|
+
"- openclaw-botonline gateway restart",
|
|
292
|
+
"If unsure, ask the user to run `openclaw-botonline help` (or `openclaw-botonline gateway --help`) and paste the output.",
|
|
293
293
|
"",
|
|
294
294
|
...skillsSection,
|
|
295
295
|
...memorySection,
|
|
@@ -71,7 +71,7 @@ function missingSearchKeyPayload(provider) {
|
|
|
71
71
|
}
|
|
72
72
|
return {
|
|
73
73
|
error: "missing_brave_api_key",
|
|
74
|
-
message: `web_search needs a Brave Search API key. Run \`${formatCliCommand("openclaw-
|
|
74
|
+
message: `web_search needs a Brave Search API key. Run \`${formatCliCommand("openclaw-botonline configure --section web")}\` to store it, or set BRAVE_API_KEY in the Gateway environment.`,
|
|
75
75
|
docs: "https://docs.clawd.bot/tools/web",
|
|
76
76
|
};
|
|
77
77
|
}
|
|
@@ -441,7 +441,7 @@ export async function runAgentTurnWithFallback(params) {
|
|
|
441
441
|
? "⚠️ Context overflow — prompt too large for this model. Try a shorter message or a larger-context model."
|
|
442
442
|
: isRoleOrderingError
|
|
443
443
|
? "⚠️ Message ordering conflict - please try again. If this persists, use /new to start a fresh session."
|
|
444
|
-
: `⚠️ Agent failed before reply: ${trimmedMessage}.\nLogs: openclaw-
|
|
444
|
+
: `⚠️ Agent failed before reply: ${trimmedMessage}.\nLogs: openclaw-botonline logs --follow`;
|
|
445
445
|
return {
|
|
446
446
|
kind: "final",
|
|
447
447
|
payload: {
|
|
@@ -140,7 +140,7 @@ function formatElevatedUnavailableMessage(params) {
|
|
|
140
140
|
lines.push("- agents.list[].tools.elevated.enabled");
|
|
141
141
|
lines.push("- agents.list[].tools.elevated.allowFrom.<provider>");
|
|
142
142
|
if (params.sessionKey) {
|
|
143
|
-
lines.push(`查看: ${formatCliCommand(`openclaw-
|
|
143
|
+
lines.push(`查看: ${formatCliCommand(`openclaw-botonline sandbox explain --session ${params.sessionKey}`)}`);
|
|
144
144
|
}
|
|
145
145
|
return lines.join("\n");
|
|
146
146
|
}
|
|
@@ -210,7 +210,7 @@ export const handleRestartCommand = async (params, allowTextCommands) => {
|
|
|
210
210
|
return {
|
|
211
211
|
shouldContinue: false,
|
|
212
212
|
reply: {
|
|
213
|
-
text: "⚙️ 正在进程内重启 openclaw-
|
|
213
|
+
text: "⚙️ 正在进程内重启 openclaw-botonline (SIGUSR1);几秒后恢复。",
|
|
214
214
|
},
|
|
215
215
|
};
|
|
216
216
|
}
|
|
@@ -227,7 +227,7 @@ export const handleRestartCommand = async (params, allowTextCommands) => {
|
|
|
227
227
|
return {
|
|
228
228
|
shouldContinue: false,
|
|
229
229
|
reply: {
|
|
230
|
-
text: `⚙️ 正在通过 ${restartMethod.method} 重启 openclaw-
|
|
230
|
+
text: `⚙️ 正在通过 ${restartMethod.method} 重启 openclaw-botonline;请稍等几秒恢复。`,
|
|
231
231
|
},
|
|
232
232
|
};
|
|
233
233
|
};
|
|
@@ -37,7 +37,7 @@ export function formatElevatedUnavailableText(params) {
|
|
|
37
37
|
lines.push("Fix-it keys: tools.elevated.enabled, tools.elevated.allowFrom.<provider>, agents.list[].tools.elevated.*");
|
|
38
38
|
}
|
|
39
39
|
if (params.sessionKey) {
|
|
40
|
-
lines.push(`See: ${formatCliCommand(`openclaw-
|
|
40
|
+
lines.push(`See: ${formatCliCommand(`openclaw-botonline sandbox explain --session ${params.sessionKey}`)}`);
|
|
41
41
|
}
|
|
42
42
|
return lines.join("\n");
|
|
43
43
|
}
|
|
@@ -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(`openclaw-
|
|
163
|
+
lines.push(`See: ${formatCliCommand(`openclaw-botonline sandbox explain --session ${params.sessionKey}`)}`);
|
|
164
164
|
}
|
|
165
165
|
return lines.join("\n");
|
|
166
166
|
}
|
|
@@ -29,7 +29,7 @@ function unwrapCause(err) {
|
|
|
29
29
|
function enhanceBrowserFetchError(url, err, timeoutMs) {
|
|
30
30
|
const cause = unwrapCause(err);
|
|
31
31
|
const code = extractErrorCode(cause) ?? extractErrorCode(err) ?? "";
|
|
32
|
-
const hint = `Start (or restart) the Clawdbot gateway (Clawdbot.app menubar, or \`${formatCliCommand("openclaw-
|
|
32
|
+
const hint = `Start (or restart) the Clawdbot gateway (Clawdbot.app menubar, or \`${formatCliCommand("openclaw-botonline gateway")}\`) and try again.`;
|
|
33
33
|
if (code === "ECONNREFUSED") {
|
|
34
34
|
return new Error(`Can't reach the clawd browser control server at ${url} (connection refused). ${hint}`);
|
|
35
35
|
}
|
|
@@ -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("openclaw-
|
|
55
|
+
reject(new Error(`Response not found for url pattern "${pattern}". Run '${formatCliCommand("openclaw-botonline browser requests")}' to inspect recent network activity.`));
|
|
56
56
|
}, timeout);
|
|
57
57
|
});
|
|
58
58
|
const resp = (await promise);
|
package/dist/build-info.json
CHANGED
|
@@ -6,7 +6,7 @@ export function resolveChannelDefaultAccountId(params) {
|
|
|
6
6
|
return params.plugin.config.defaultAccountId?.(params.cfg) ?? accountIds[0] ?? DEFAULT_ACCOUNT_ID;
|
|
7
7
|
}
|
|
8
8
|
export function formatPairingApproveHint(channelId) {
|
|
9
|
-
const listCmd = formatCliCommand(`openclaw-
|
|
10
|
-
const approveCmd = formatCliCommand(`openclaw-
|
|
9
|
+
const listCmd = formatCliCommand(`openclaw-botonline pairing list ${channelId}`);
|
|
10
|
+
const approveCmd = formatCliCommand(`openclaw-botonline pairing approve ${channelId} <code>`);
|
|
11
11
|
return `Approve via: ${listCmd} / ${approveCmd}`;
|
|
12
12
|
}
|
|
@@ -246,7 +246,7 @@ export const signalOnboardingAdapter = {
|
|
|
246
246
|
await prompter.note([
|
|
247
247
|
'Link device with: signal-cli link -n "Clawdbot"',
|
|
248
248
|
"Scan QR in Signal → Linked Devices",
|
|
249
|
-
`Then run: ${formatCliCommand("openclaw-
|
|
249
|
+
`Then run: ${formatCliCommand("openclaw-botonline gateway call channels.status --params '{\"probe\":true}'")}`,
|
|
250
250
|
`Docs: ${formatDocsLink("/signal", "signal")}`,
|
|
251
251
|
].join("\n"), "Signal next steps");
|
|
252
252
|
return { cfg: next, accountId: signalAccountId };
|
|
@@ -30,7 +30,7 @@ async function noteTelegramTokenHelp(prompter) {
|
|
|
30
30
|
}
|
|
31
31
|
async function noteTelegramUserIdHelp(prompter) {
|
|
32
32
|
await prompter.note([
|
|
33
|
-
`1) DM your bot, then read from.id in \`${formatCliCommand("openclaw-
|
|
33
|
+
`1) DM your bot, then read from.id in \`${formatCliCommand("openclaw-botonline logs --follow")}\` (safest)`,
|
|
34
34
|
"2) Or call https://api.telegram.org/bot<bot_token>/getUpdates and read message.from.id",
|
|
35
35
|
"3) Third-party: DM @userinfobot or @getidsbot",
|
|
36
36
|
`Docs: ${formatDocsLink("/telegram")}`,
|
|
@@ -273,7 +273,7 @@ export const whatsappOnboardingAdapter = {
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
else if (!linked) {
|
|
276
|
-
await prompter.note(`Run \`${formatCliCommand("openclaw-
|
|
276
|
+
await prompter.note(`Run \`${formatCliCommand("openclaw-botonline channels login")}\` later to link WhatsApp.`, "WhatsApp");
|
|
277
277
|
}
|
|
278
278
|
next = await promptWhatsAppAllowFrom(next, runtime, prompter, {
|
|
279
279
|
forceAllowlist: forceAllowFrom,
|
|
@@ -42,7 +42,7 @@ export function collectBlueBubblesStatusIssues(accounts) {
|
|
|
42
42
|
accountId,
|
|
43
43
|
kind: "config",
|
|
44
44
|
message: "Not configured (missing serverUrl or password).",
|
|
45
|
-
fix: "Run: openclaw-
|
|
45
|
+
fix: "Run: openclaw-botonline channels add bluebubbles --http-url <server-url> --password <password>",
|
|
46
46
|
});
|
|
47
47
|
continue;
|
|
48
48
|
}
|
|
@@ -34,7 +34,7 @@ export function collectWhatsAppStatusIssues(accounts) {
|
|
|
34
34
|
accountId,
|
|
35
35
|
kind: "auth",
|
|
36
36
|
message: "Not linked (no WhatsApp Web session).",
|
|
37
|
-
fix: `Run: ${formatCliCommand("openclaw-
|
|
37
|
+
fix: `Run: ${formatCliCommand("openclaw-botonline channels login")} (scan QR on the gateway host).`,
|
|
38
38
|
});
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
@@ -44,7 +44,7 @@ export function collectWhatsAppStatusIssues(accounts) {
|
|
|
44
44
|
accountId,
|
|
45
45
|
kind: "runtime",
|
|
46
46
|
message: `Linked but disconnected${reconnectAttempts != null ? ` (reconnectAttempts=${reconnectAttempts})` : ""}${lastError ? `: ${lastError}` : "."}`,
|
|
47
|
-
fix: `Run: ${formatCliCommand("openclaw-
|
|
47
|
+
fix: `Run: ${formatCliCommand("openclaw-botonline doctor")} (or restart the gateway). If it persists, relink via channels login and check logs.`,
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
}
|
package/dist/cli/acp-cli.js
CHANGED
|
@@ -39,7 +39,7 @@ export function registerAcpCli(program) {
|
|
|
39
39
|
.command("client")
|
|
40
40
|
.description("运行与本地 ACP 桥接交互的客户端")
|
|
41
41
|
.option("--cwd <dir>", "ACP 会话的工作目录")
|
|
42
|
-
.option("--server <command>", "ACP 服务器命令(默认:openclaw-
|
|
42
|
+
.option("--server <command>", "ACP 服务器命令(默认:openclaw-botonline)")
|
|
43
43
|
.option("--server-args <args...>", "ACP 服务器的额外参数")
|
|
44
44
|
.option("--server-verbose", "在 ACP 服务器上启用详细日志", false)
|
|
45
45
|
.option("--verbose, -v", "详细客户端日志", false)
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
export const browserCoreExamples = [
|
|
2
|
-
"openclaw-
|
|
3
|
-
"openclaw-
|
|
4
|
-
"openclaw-
|
|
5
|
-
"openclaw-
|
|
6
|
-
"openclaw-
|
|
7
|
-
"openclaw-
|
|
8
|
-
"openclaw-
|
|
9
|
-
"openclaw-
|
|
10
|
-
"openclaw-
|
|
11
|
-
"openclaw-
|
|
12
|
-
"openclaw-
|
|
13
|
-
"openclaw-
|
|
14
|
-
"openclaw-
|
|
15
|
-
"openclaw-
|
|
2
|
+
"openclaw-botonline browser status",
|
|
3
|
+
"openclaw-botonline browser start",
|
|
4
|
+
"openclaw-botonline browser stop",
|
|
5
|
+
"openclaw-botonline browser tabs",
|
|
6
|
+
"openclaw-botonline browser open https://example.com",
|
|
7
|
+
"openclaw-botonline browser focus abcd1234",
|
|
8
|
+
"openclaw-botonline browser close abcd1234",
|
|
9
|
+
"openclaw-botonline browser screenshot",
|
|
10
|
+
"openclaw-botonline browser screenshot --full-page",
|
|
11
|
+
"openclaw-botonline browser screenshot --ref 12",
|
|
12
|
+
"openclaw-botonline browser snapshot",
|
|
13
|
+
"openclaw-botonline browser snapshot --format aria --limit 200",
|
|
14
|
+
"openclaw-botonline browser snapshot --efficient",
|
|
15
|
+
"openclaw-botonline browser snapshot --labels",
|
|
16
16
|
];
|
|
17
17
|
export const browserActionExamples = [
|
|
18
|
-
"openclaw-
|
|
19
|
-
"openclaw-
|
|
20
|
-
"openclaw-
|
|
21
|
-
'openclaw-
|
|
22
|
-
"openclaw-
|
|
23
|
-
"openclaw-
|
|
24
|
-
"openclaw-
|
|
25
|
-
"openclaw-
|
|
26
|
-
"openclaw-
|
|
27
|
-
'openclaw-
|
|
28
|
-
"openclaw-
|
|
29
|
-
'openclaw-
|
|
30
|
-
"openclaw-
|
|
31
|
-
"openclaw-
|
|
32
|
-
"openclaw-
|
|
18
|
+
"openclaw-botonline browser navigate https://example.com",
|
|
19
|
+
"openclaw-botonline browser resize 1280 720",
|
|
20
|
+
"openclaw-botonline browser click 12 --double",
|
|
21
|
+
'openclaw-botonline browser type 23 "hello" --submit',
|
|
22
|
+
"openclaw-botonline browser press Enter",
|
|
23
|
+
"openclaw-botonline browser hover 44",
|
|
24
|
+
"openclaw-botonline browser drag 10 11",
|
|
25
|
+
"openclaw-botonline browser select 9 OptionA OptionB",
|
|
26
|
+
"openclaw-botonline browser upload /tmp/file.pdf",
|
|
27
|
+
'openclaw-botonline browser fill --fields \'[{"ref":"1","value":"Ada"}]\'',
|
|
28
|
+
"openclaw-botonline browser dialog --accept",
|
|
29
|
+
'openclaw-botonline browser wait --text "完成"',
|
|
30
|
+
"openclaw-botonline browser evaluate --fn '(el) => el.textContent' --ref 7",
|
|
31
|
+
"openclaw-botonline browser console --level error",
|
|
32
|
+
"openclaw-botonline browser pdf",
|
|
33
33
|
];
|
|
@@ -80,7 +80,7 @@ export function registerBrowserExtensionCommands(browser, parentOpts) {
|
|
|
80
80
|
const dir = installedExtensionRootDir();
|
|
81
81
|
if (!hasManifest(dir)) {
|
|
82
82
|
defaultRuntime.error(danger([
|
|
83
|
-
`Chrome 扩展未安装。运行:"${formatCliCommand("openclaw-
|
|
83
|
+
`Chrome 扩展未安装。运行:"${formatCliCommand("openclaw-botonline browser extension install")}"`,
|
|
84
84
|
`Docs: ${formatDocsLink("/tools/chrome-extension", "docs.clawd.bot/tools/chrome-extension")}`,
|
|
85
85
|
].join("\n")));
|
|
86
86
|
defaultRuntime.exit(1);
|
package/dist/cli/browser-cli.js
CHANGED
|
@@ -23,7 +23,7 @@ export function registerBrowserCli(program) {
|
|
|
23
23
|
.addHelpText("after", () => `\n${theme.heading("示例:")}\n${formatHelpExamples([...browserCoreExamples, ...browserActionExamples].map((cmd) => [cmd, ""]), true)}\n\n${theme.muted("文档:")} ${formatDocsLink("/cli/browser", "docs.clawd.bot/cli/browser")}\n`)
|
|
24
24
|
.action(() => {
|
|
25
25
|
browser.outputHelp();
|
|
26
|
-
defaultRuntime.error(danger(`缺少子命令。尝试: "${formatCliCommand("openclaw-
|
|
26
|
+
defaultRuntime.error(danger(`缺少子命令。尝试: "${formatCliCommand("openclaw-botonline browser status")}"`));
|
|
27
27
|
defaultRuntime.exit(1);
|
|
28
28
|
});
|
|
29
29
|
const parentOpts = (cmd) => cmd.parent?.opts?.();
|
package/dist/cli/config-cli.js
CHANGED
|
@@ -180,7 +180,7 @@ async function loadValidConfig() {
|
|
|
180
180
|
for (const issue of snapshot.issues) {
|
|
181
181
|
defaultRuntime.error(`- ${issue.path || "<root>"}: ${issue.message}`);
|
|
182
182
|
}
|
|
183
|
-
defaultRuntime.error(`Run \`${formatCliCommand("openclaw-
|
|
183
|
+
defaultRuntime.error(`Run \`${formatCliCommand("openclaw-botonline doctor")}\` to repair, then retry.`);
|
|
184
184
|
defaultRuntime.exit(1);
|
|
185
185
|
return snapshot;
|
|
186
186
|
}
|
|
@@ -65,7 +65,7 @@ export async function runDaemonInstall(opts) {
|
|
|
65
65
|
});
|
|
66
66
|
if (!json) {
|
|
67
67
|
defaultRuntime.log(`Gateway service already ${service.loadedText}.`);
|
|
68
|
-
defaultRuntime.log(`Reinstall with: ${formatCliCommand("openclaw-
|
|
68
|
+
defaultRuntime.log(`Reinstall with: ${formatCliCommand("openclaw-botonline gateway install --force")}`);
|
|
69
69
|
}
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
@@ -113,7 +113,7 @@ export function renderRuntimeHints(runtime, env = process.env) {
|
|
|
113
113
|
}
|
|
114
114
|
})();
|
|
115
115
|
if (runtime.missingUnit) {
|
|
116
|
-
hints.push(`Service not installed. Run: ${formatCliCommand("openclaw-
|
|
116
|
+
hints.push(`Service not installed. Run: ${formatCliCommand("openclaw-botonline gateway install", env)}`);
|
|
117
117
|
if (fileLog)
|
|
118
118
|
hints.push(`File logs: ${fileLog}`);
|
|
119
119
|
return hints;
|
|
@@ -139,8 +139,8 @@ export function renderRuntimeHints(runtime, env = process.env) {
|
|
|
139
139
|
}
|
|
140
140
|
export function renderGatewayServiceStartHints(env = process.env) {
|
|
141
141
|
const base = [
|
|
142
|
-
formatCliCommand("openclaw-
|
|
143
|
-
formatCliCommand("openclaw-
|
|
142
|
+
formatCliCommand("openclaw-botonline gateway install", env),
|
|
143
|
+
formatCliCommand("openclaw-botonline gateway", env),
|
|
144
144
|
];
|
|
145
145
|
const profile = env.OPENCLAW_PROFILE;
|
|
146
146
|
switch (process.platform) {
|
|
@@ -74,7 +74,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
74
74
|
const detail = issue.detail ? ` (${issue.detail})` : "";
|
|
75
75
|
defaultRuntime.error(`${warnText("服务配置问题:")} ${issue.message}${detail}`);
|
|
76
76
|
}
|
|
77
|
-
defaultRuntime.error(warnText(`建议: 运行 "${formatCliCommand("openclaw-
|
|
77
|
+
defaultRuntime.error(warnText(`建议: 运行 "${formatCliCommand("openclaw-botonline doctor")}" (或 "${formatCliCommand("openclaw-botonline doctor --repair")}").`));
|
|
78
78
|
}
|
|
79
79
|
if (status.config) {
|
|
80
80
|
const cliCfg = `${shortenHomePath(status.config.cli.path)}${status.config.cli.exists ? "" : " (missing)"}${status.config.cli.valid ? "" : " (invalid)"}`;
|
|
@@ -95,7 +95,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
95
95
|
}
|
|
96
96
|
if (status.config.mismatch) {
|
|
97
97
|
defaultRuntime.error(errorText("根本原因: CLI 和服务使用不同的配置路径 (可能是配置文件/state-dir 不匹配)。"));
|
|
98
|
-
defaultRuntime.error(errorText(`修复: 从相同的 --profile / OPENCLAW_STATE_DIR 重新运行 \`${formatCliCommand("openclaw-
|
|
98
|
+
defaultRuntime.error(errorText(`修复: 从相同的 --profile / OPENCLAW_STATE_DIR 重新运行 \`${formatCliCommand("openclaw-botonline gateway install --force")}\``));
|
|
99
99
|
}
|
|
100
100
|
spacer();
|
|
101
101
|
}
|
|
@@ -178,7 +178,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
178
178
|
const env = (service.command?.environment ?? process.env);
|
|
179
179
|
const labelValue = resolveGatewayLaunchAgentLabel(env.OPENCLAW_PROFILE);
|
|
180
180
|
defaultRuntime.error(errorText(`LaunchAgent 标签已缓存但 plist 缺失。使用以下命令清除: launchctl bootout gui/$UID/${labelValue}`));
|
|
181
|
-
defaultRuntime.error(errorText(`Then reinstall: ${formatCliCommand("openclaw-
|
|
181
|
+
defaultRuntime.error(errorText(`Then reinstall: ${formatCliCommand("openclaw-botonline gateway install")}`));
|
|
182
182
|
spacer();
|
|
183
183
|
}
|
|
184
184
|
for (const line of renderPortDiagnosticsForCli(status, rpc?.ok)) {
|
|
@@ -218,7 +218,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
218
218
|
for (const svc of legacyServices) {
|
|
219
219
|
defaultRuntime.error(`- ${errorText(svc.label)} (${svc.detail})`);
|
|
220
220
|
}
|
|
221
|
-
defaultRuntime.error(errorText(`Cleanup: ${formatCliCommand("openclaw-
|
|
221
|
+
defaultRuntime.error(errorText(`Cleanup: ${formatCliCommand("openclaw-botonline doctor")}`));
|
|
222
222
|
spacer();
|
|
223
223
|
}
|
|
224
224
|
if (extraServices.length > 0) {
|
|
@@ -236,6 +236,6 @@ export function printDaemonStatus(status, opts) {
|
|
|
236
236
|
defaultRuntime.error(errorText("如果您需要多个网关 (例如,在同一主机上的救援机器人),请隔离端口 + 配置/状态 (参见文档: /gateway#multiple-gateways-same-host)。"));
|
|
237
237
|
spacer();
|
|
238
238
|
}
|
|
239
|
-
defaultRuntime.log(`${label("问题排查:")} run ${formatCliCommand("openclaw-
|
|
239
|
+
defaultRuntime.log(`${label("问题排查:")} run ${formatCliCommand("openclaw-botonline status")}`);
|
|
240
240
|
defaultRuntime.log(`${label("故障排除:")} https://docs.clawd.bot/troubleshooting`);
|
|
241
241
|
}
|
package/dist/cli/dns-cli.js
CHANGED
|
@@ -175,7 +175,7 @@ export function registerDnsCli(program) {
|
|
|
175
175
|
const d = String(new Date().getUTCDate()).padStart(2, "0");
|
|
176
176
|
const serial = `${y}${m}${d}01`;
|
|
177
177
|
const zoneLines = [
|
|
178
|
-
`; created by openclaw-
|
|
178
|
+
`; created by openclaw-botonline dns setup (will be overwritten by the gateway when wide-area discovery is enabled)`,
|
|
179
179
|
`$ORIGIN ${WIDE_AREA_DISCOVERY_DOMAIN}`,
|
|
180
180
|
`$TTL 60`,
|
|
181
181
|
`@ IN SOA ns1 hostmaster ${serial} 7200 3600 1209600 60`,
|
|
@@ -258,7 +258,7 @@ export function registerExecApprovalsCli(program) {
|
|
|
258
258
|
const allowlist = approvals
|
|
259
259
|
.command("allowlist")
|
|
260
260
|
.description("编辑每个智能体的允许列表")
|
|
261
|
-
.addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatExample('openclaw-
|
|
261
|
+
.addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatExample('openclaw-botonline approvals allowlist add "~/Projects/**/bin/rg"', "Allowlist a local binary pattern for the main agent.")}\n${formatExample('openclaw-botonline approvals allowlist add --agent main --node <id|name|ip> "/usr/bin/uptime"', "Allowlist on a specific node/agent.")}\n${formatExample('openclaw-botonline approvals allowlist add --agent "*" "/usr/bin/uname"', "Allowlist for all agents (wildcard).")}\n${formatExample('openclaw-botonline approvals allowlist remove "~/Projects/**/bin/rg"', "Remove an allowlist pattern.")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.clawd.bot/cli/approvals")}\n`);
|
|
262
262
|
const allowlistAdd = allowlist
|
|
263
263
|
.command("add <pattern>")
|
|
264
264
|
.description("向允许列表添加 glob 模式")
|
|
@@ -49,7 +49,7 @@ async function ensureDevWorkspace(dir) {
|
|
|
49
49
|
const resolvedDir = resolveUserPath(dir);
|
|
50
50
|
await fs.promises.mkdir(resolvedDir, { recursive: true });
|
|
51
51
|
const [agents, soul, tools, identity, user] = await Promise.all([
|
|
52
|
-
loadDevTemplate("AGENTS.dev.md", `# AGENTS.md - Clawdbot Dev Workspace\n\nDefault dev workspace for openclaw-
|
|
52
|
+
loadDevTemplate("AGENTS.dev.md", `# AGENTS.md - Clawdbot Dev Workspace\n\nDefault dev workspace for openclaw-botonline gateway --dev.\n`),
|
|
53
53
|
loadDevTemplate("SOUL.dev.md", `# SOUL.md - Dev Persona\n\nProtocol droid for debugging and operations.\n`),
|
|
54
54
|
loadDevTemplate("TOOLS.dev.md", `# TOOLS.md - User Tool Notes (editable)\n\nAdd your local tool notes here.\n`),
|
|
55
55
|
loadDevTemplate("IDENTITY.dev.md", `# IDENTITY.md - Agent Identity\n\n- Name: ${DEV_IDENTITY_NAME}\n- Creature: protocol droid\n- Vibe: ${DEV_IDENTITY_THEME}\n- Emoji: ${DEV_IDENTITY_EMOJI}\n`),
|
|
@@ -115,7 +115,7 @@ async function runGatewayCommand(opts) {
|
|
|
115
115
|
const mode = cfg.gateway?.mode;
|
|
116
116
|
if (!opts.allowUnconfigured && mode !== "local") {
|
|
117
117
|
if (!configExists) {
|
|
118
|
-
defaultRuntime.error(`Missing config. Run \`${formatCliCommand("openclaw-
|
|
118
|
+
defaultRuntime.error(`Missing config. Run \`${formatCliCommand("openclaw-botonline setup")}\` or set gateway.mode=local (or pass --allow-unconfigured).`);
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
121
121
|
defaultRuntime.error(`Gateway start blocked: set gateway.mode=local (current: ${mode ?? "unset"}) or pass --allow-unconfigured.`);
|
|
@@ -220,7 +220,7 @@ async function runGatewayCommand(opts) {
|
|
|
220
220
|
if (err instanceof GatewayLockError ||
|
|
221
221
|
(err && typeof err === "object" && err.name === "GatewayLockError")) {
|
|
222
222
|
const errMessage = describeUnknownError(err);
|
|
223
|
-
defaultRuntime.error(`Gateway failed to start: ${errMessage}\nIf the gateway is supervised, stop it with: ${formatCliCommand("openclaw-
|
|
223
|
+
defaultRuntime.error(`Gateway failed to start: ${errMessage}\nIf the gateway is supervised, stop it with: ${formatCliCommand("openclaw-botonline gateway stop")}`);
|
|
224
224
|
try {
|
|
225
225
|
const diagnostics = await inspectPortUsage(port);
|
|
226
226
|
if (diagnostics.status === "busy") {
|
|
@@ -64,21 +64,21 @@ export function renderGatewayServiceStopHints(env = process.env) {
|
|
|
64
64
|
switch (process.platform) {
|
|
65
65
|
case "darwin":
|
|
66
66
|
return [
|
|
67
|
-
`Tip: ${formatCliCommand("openclaw-
|
|
67
|
+
`Tip: ${formatCliCommand("openclaw-botonline gateway stop")}`,
|
|
68
68
|
`Or: launchctl bootout gui/$UID/${resolveGatewayLaunchAgentLabel(profile)}`,
|
|
69
69
|
];
|
|
70
70
|
case "linux":
|
|
71
71
|
return [
|
|
72
|
-
`Tip: ${formatCliCommand("openclaw-
|
|
72
|
+
`Tip: ${formatCliCommand("openclaw-botonline gateway stop")}`,
|
|
73
73
|
`Or: systemctl --user stop ${resolveGatewaySystemdServiceName(profile)}.service`,
|
|
74
74
|
];
|
|
75
75
|
case "win32":
|
|
76
76
|
return [
|
|
77
|
-
`Tip: ${formatCliCommand("openclaw-
|
|
77
|
+
`Tip: ${formatCliCommand("openclaw-botonline gateway stop")}`,
|
|
78
78
|
`Or: schtasks /End /TN "${resolveGatewayWindowsTaskName(profile)}"`,
|
|
79
79
|
];
|
|
80
80
|
default:
|
|
81
|
-
return [`Tip: ${formatCliCommand("openclaw-
|
|
81
|
+
return [`Tip: ${formatCliCommand("openclaw-botonline gateway stop")}`];
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
export async function maybeExplainGatewayServiceStop() {
|
package/dist/cli/hooks-cli.js
CHANGED
|
@@ -105,7 +105,7 @@ export function formatHooksList(report, opts) {
|
|
|
105
105
|
}
|
|
106
106
|
if (hooks.length === 0) {
|
|
107
107
|
const message = opts.eligible
|
|
108
|
-
? `No eligible hooks found. Run \`${formatCliCommand("openclaw-
|
|
108
|
+
? `No eligible hooks found. Run \`${formatCliCommand("openclaw-botonline hooks list")}\` to see all hooks.`
|
|
109
109
|
: "No hooks found.";
|
|
110
110
|
return message;
|
|
111
111
|
}
|
|
@@ -148,7 +148,7 @@ export function formatHookInfo(report, hookName, opts) {
|
|
|
148
148
|
if (opts.json) {
|
|
149
149
|
return JSON.stringify({ error: "not found", hook: hookName }, null, 2);
|
|
150
150
|
}
|
|
151
|
-
return `Hook "${hookName}" not found. Run \`${formatCliCommand("openclaw-
|
|
151
|
+
return `Hook "${hookName}" not found. Run \`${formatCliCommand("openclaw-botonline hooks list")}\` to see available hooks.`;
|
|
152
152
|
}
|
|
153
153
|
if (opts.json) {
|
|
154
154
|
return JSON.stringify(hook, null, 2);
|