@gguf/pigbot 0.0.5 → 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 +1208 -10
- 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/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/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/dist/cli/dns-cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import fs from "node:fs";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { loadConfig } from "../config/config.js";
|
|
5
5
|
import { pickPrimaryTailnetIPv4, pickPrimaryTailnetIPv6 } from "../infra/tailnet.js";
|
|
6
|
-
import { getWideAreaZonePath,
|
|
6
|
+
import { getWideAreaZonePath, resolveWideAreaDiscoveryDomain } from "../infra/widearea-dns.js";
|
|
7
7
|
import { defaultRuntime } from "../runtime.js";
|
|
8
8
|
import { formatDocsLink } from "../terminal/links.js";
|
|
9
9
|
import { renderTable } from "../terminal/table.js";
|
|
@@ -88,16 +88,23 @@ export function registerDnsCli(program) {
|
|
|
88
88
|
const dns = program
|
|
89
89
|
.command("dns")
|
|
90
90
|
.description("DNS helpers for wide-area discovery (Tailscale + CoreDNS)")
|
|
91
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dns", "docs.
|
|
91
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dns", "docs.openclaw.ai/cli/dns")}\n`);
|
|
92
92
|
dns
|
|
93
93
|
.command("setup")
|
|
94
|
-
.description("Set up CoreDNS to serve
|
|
94
|
+
.description("Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)")
|
|
95
|
+
.option("--domain <domain>", "Wide-area discovery domain (e.g. openclaw.internal)")
|
|
95
96
|
.option("--apply", "Install/update CoreDNS config and (re)start the service (requires sudo)", false)
|
|
96
97
|
.action(async (opts) => {
|
|
97
98
|
const cfg = loadConfig();
|
|
98
99
|
const tailnetIPv4 = pickPrimaryTailnetIPv4();
|
|
99
100
|
const tailnetIPv6 = pickPrimaryTailnetIPv6();
|
|
100
|
-
const
|
|
101
|
+
const wideAreaDomain = resolveWideAreaDiscoveryDomain({
|
|
102
|
+
configDomain: opts.domain ?? cfg.discovery?.wideArea?.domain,
|
|
103
|
+
});
|
|
104
|
+
if (!wideAreaDomain) {
|
|
105
|
+
throw new Error("No wide-area domain configured. Set discovery.wideArea.domain or pass --domain.");
|
|
106
|
+
}
|
|
107
|
+
const zonePath = getWideAreaZonePath(wideAreaDomain);
|
|
101
108
|
const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
|
|
102
109
|
defaultRuntime.log(theme.heading("DNS setup"));
|
|
103
110
|
defaultRuntime.log(renderTable({
|
|
@@ -107,7 +114,7 @@ export function registerDnsCli(program) {
|
|
|
107
114
|
{ key: "Value", header: "Value", minWidth: 24, flex: true },
|
|
108
115
|
],
|
|
109
116
|
rows: [
|
|
110
|
-
{ Key: "Domain", Value:
|
|
117
|
+
{ Key: "Domain", Value: wideAreaDomain },
|
|
111
118
|
{ Key: "Zone file", Value: zonePath },
|
|
112
119
|
{
|
|
113
120
|
Key: "Tailnet IP",
|
|
@@ -116,15 +123,15 @@ export function registerDnsCli(program) {
|
|
|
116
123
|
],
|
|
117
124
|
}).trimEnd());
|
|
118
125
|
defaultRuntime.log("");
|
|
119
|
-
defaultRuntime.log(theme.heading("Recommended ~/.
|
|
126
|
+
defaultRuntime.log(theme.heading("Recommended ~/.openclaw/openclaw.json:"));
|
|
120
127
|
defaultRuntime.log(JSON.stringify({
|
|
121
128
|
gateway: { bind: "auto" },
|
|
122
|
-
discovery: { wideArea: { enabled: true } },
|
|
129
|
+
discovery: { wideArea: { enabled: true, domain: wideAreaDomain } },
|
|
123
130
|
}, null, 2));
|
|
124
131
|
defaultRuntime.log("");
|
|
125
132
|
defaultRuntime.log(theme.heading("Tailscale admin (DNS → Nameservers):"));
|
|
126
133
|
defaultRuntime.log(theme.muted(`- Add nameserver: ${tailnetIPv4 ?? "<this machine's tailnet IPv4>"}`));
|
|
127
|
-
defaultRuntime.log(theme.muted(
|
|
134
|
+
defaultRuntime.log(theme.muted(`- Restrict to domain (Split DNS): ${wideAreaDomain.replace(/\.$/, "")}`));
|
|
128
135
|
if (!opts.apply) {
|
|
129
136
|
defaultRuntime.log("");
|
|
130
137
|
defaultRuntime.log(theme.muted("Run with --apply to install CoreDNS and configure it."));
|
|
@@ -141,7 +148,7 @@ export function registerDnsCli(program) {
|
|
|
141
148
|
const corefilePath = path.join(etcDir, "Corefile");
|
|
142
149
|
const confDir = path.join(etcDir, "conf.d");
|
|
143
150
|
const importGlob = path.join(confDir, "*.server");
|
|
144
|
-
const serverPath = path.join(confDir, "
|
|
151
|
+
const serverPath = path.join(confDir, `${wideAreaDomain.replace(/\.$/, "")}.server`);
|
|
145
152
|
run("brew", ["list", "coredns"], { allowFailure: true });
|
|
146
153
|
run("brew", ["install", "coredns"], {
|
|
147
154
|
inherit: true,
|
|
@@ -156,7 +163,7 @@ export function registerDnsCli(program) {
|
|
|
156
163
|
}
|
|
157
164
|
const bindArgs = [tailnetIPv4, tailnetIPv6].filter((v) => Boolean(v?.trim()));
|
|
158
165
|
const server = [
|
|
159
|
-
`${
|
|
166
|
+
`${wideAreaDomain.replace(/\.$/, "")}:53 {`,
|
|
160
167
|
` bind ${bindArgs.join(" ")}`,
|
|
161
168
|
` file ${zonePath} {`,
|
|
162
169
|
` reload 10s`,
|
|
@@ -175,8 +182,8 @@ export function registerDnsCli(program) {
|
|
|
175
182
|
const d = String(new Date().getUTCDate()).padStart(2, "0");
|
|
176
183
|
const serial = `${y}${m}${d}01`;
|
|
177
184
|
const zoneLines = [
|
|
178
|
-
`; created by
|
|
179
|
-
`$ORIGIN ${
|
|
185
|
+
`; created by openclaw dns setup (will be overwritten by the gateway when wide-area discovery is enabled)`,
|
|
186
|
+
`$ORIGIN ${wideAreaDomain}`,
|
|
180
187
|
`$TTL 60`,
|
|
181
188
|
`@ IN SOA ns1 hostmaster ${serial} 7200 3600 1209600 60`,
|
|
182
189
|
`@ IN NS ns1`,
|
|
@@ -193,7 +200,7 @@ export function registerDnsCli(program) {
|
|
|
193
200
|
});
|
|
194
201
|
if (cfg.discovery?.wideArea?.enabled !== true) {
|
|
195
202
|
defaultRuntime.log("");
|
|
196
|
-
defaultRuntime.log(theme.muted("Note: enable discovery.wideArea.enabled in ~/.
|
|
203
|
+
defaultRuntime.log(theme.muted("Note: enable discovery.wideArea.enabled in ~/.openclaw/openclaw.json on the gateway and restart the gateway so it writes the DNS-SD zone."));
|
|
197
204
|
}
|
|
198
205
|
});
|
|
199
206
|
}
|
package/dist/cli/docs-cli.js
CHANGED
|
@@ -6,9 +6,9 @@ import { runCommandWithRuntime } from "./cli-utils.js";
|
|
|
6
6
|
export function registerDocsCli(program) {
|
|
7
7
|
program
|
|
8
8
|
.command("docs")
|
|
9
|
-
.description("Search the live
|
|
9
|
+
.description("Search the live OpenClaw docs")
|
|
10
10
|
.argument("[query...]", "Search query")
|
|
11
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/docs", "docs.
|
|
11
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/docs", "docs.openclaw.ai/cli/docs")}\n`)
|
|
12
12
|
.action(async (queryParts) => {
|
|
13
13
|
await runCommandWithRuntime(defaultRuntime, async () => {
|
|
14
14
|
await docsSearchCommand(queryParts, defaultRuntime);
|
|
@@ -172,7 +172,7 @@ export function registerExecApprovalsCli(program) {
|
|
|
172
172
|
.command("approvals")
|
|
173
173
|
.alias("exec-approvals")
|
|
174
174
|
.description("Manage exec approvals (gateway or node host)")
|
|
175
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.
|
|
175
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.openclaw.ai/cli/approvals")}\n`);
|
|
176
176
|
const getCmd = approvals
|
|
177
177
|
.command("get")
|
|
178
178
|
.description("Fetch exec approvals snapshot")
|
|
@@ -258,7 +258,7 @@ export function registerExecApprovalsCli(program) {
|
|
|
258
258
|
const allowlist = approvals
|
|
259
259
|
.command("allowlist")
|
|
260
260
|
.description("Edit the per-agent allowlist")
|
|
261
|
-
.addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatExample('
|
|
261
|
+
.addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatExample('openclaw approvals allowlist add "~/Projects/**/bin/rg"', "Allowlist a local binary pattern for the main agent.")}\n${formatExample('openclaw approvals allowlist add --agent main --node <id|name|ip> "/usr/bin/uptime"', "Allowlist on a specific node/agent.")}\n${formatExample('openclaw approvals allowlist add --agent "*" "/usr/bin/uname"', "Allowlist for all agents (wildcard).")}\n${formatExample('openclaw approvals allowlist remove "~/Projects/**/bin/rg"', "Remove an allowlist pattern.")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.openclaw.ai/cli/approvals")}\n`);
|
|
262
262
|
const allowlistAdd = allowlist
|
|
263
263
|
.command("add <pattern>")
|
|
264
264
|
.description("Add a glob pattern to an allowlist")
|
|
@@ -3,7 +3,7 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { resolveDefaultAgentWorkspaceDir } from "../../agents/workspace.js";
|
|
5
5
|
import { handleReset } from "../../commands/onboard-helpers.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createConfigIO, writeConfigFile } from "../../config/config.js";
|
|
7
7
|
import { defaultRuntime } from "../../runtime.js";
|
|
8
8
|
import { resolveUserPath, shortenHomePath } from "../../utils.js";
|
|
9
9
|
const DEV_IDENTITY_NAME = "C3-PO";
|
|
@@ -27,7 +27,7 @@ async function loadDevTemplate(name, fallback) {
|
|
|
27
27
|
}
|
|
28
28
|
const resolveDevWorkspaceDir = (env = process.env) => {
|
|
29
29
|
const baseDir = resolveDefaultAgentWorkspaceDir(env, os.homedir);
|
|
30
|
-
const profile = env.
|
|
30
|
+
const profile = env.OPENCLAW_PROFILE?.trim().toLowerCase();
|
|
31
31
|
if (profile === "dev")
|
|
32
32
|
return baseDir;
|
|
33
33
|
return `${baseDir}-${DEV_AGENT_WORKSPACE_SUFFIX}`;
|
|
@@ -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 -
|
|
52
|
+
loadDevTemplate("AGENTS.dev.md", `# AGENTS.md - OpenClaw Dev Workspace\n\nDefault dev workspace for openclaw 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`),
|
|
@@ -66,7 +66,9 @@ export async function ensureDevGatewayConfig(opts) {
|
|
|
66
66
|
if (opts.reset) {
|
|
67
67
|
await handleReset("full", workspace, defaultRuntime);
|
|
68
68
|
}
|
|
69
|
-
const
|
|
69
|
+
const io = createConfigIO();
|
|
70
|
+
const configPath = io.configPath;
|
|
71
|
+
const configExists = fs.existsSync(configPath);
|
|
70
72
|
if (!opts.reset && configExists)
|
|
71
73
|
return;
|
|
72
74
|
await writeConfigFile({
|
|
@@ -94,6 +96,6 @@ export async function ensureDevGatewayConfig(opts) {
|
|
|
94
96
|
},
|
|
95
97
|
});
|
|
96
98
|
await ensureDevWorkspace(workspace);
|
|
97
|
-
defaultRuntime.log(`Dev config ready: ${shortenHomePath(
|
|
99
|
+
defaultRuntime.log(`Dev config ready: ${shortenHomePath(configPath)}`);
|
|
98
100
|
defaultRuntime.log(`Dev workspace ready: ${shortenHomePath(resolveUserPath(workspace))}`);
|
|
99
101
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { gatewayStatusCommand } from "../../commands/gateway-status.js";
|
|
2
2
|
import { formatHealthChannelLines } from "../../commands/health.js";
|
|
3
|
+
import { loadConfig } from "../../config/config.js";
|
|
3
4
|
import { discoverGatewayBeacons } from "../../infra/bonjour-discovery.js";
|
|
4
|
-
import {
|
|
5
|
+
import { resolveWideAreaDiscoveryDomain } from "../../infra/widearea-dns.js";
|
|
5
6
|
import { defaultRuntime } from "../../runtime.js";
|
|
6
7
|
import { formatDocsLink } from "../../terminal/links.js";
|
|
7
8
|
import { colorize, isRich, theme } from "../../terminal/theme.js";
|
|
@@ -77,7 +78,7 @@ export function registerGatewayCli(program) {
|
|
|
77
78
|
const gateway = addGatewayRunCommand(program
|
|
78
79
|
.command("gateway")
|
|
79
80
|
.description("Run the WebSocket Gateway")
|
|
80
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.
|
|
81
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.openclaw.ai/cli/gateway")}\n`));
|
|
81
82
|
addGatewayRunCommand(gateway.command("run").description("Run the WebSocket Gateway (foreground)"));
|
|
82
83
|
gateway
|
|
83
84
|
.command("status")
|
|
@@ -213,18 +214,23 @@ export function registerGatewayCli(program) {
|
|
|
213
214
|
});
|
|
214
215
|
gateway
|
|
215
216
|
.command("discover")
|
|
216
|
-
.description(
|
|
217
|
+
.description("Discover gateways via Bonjour (local + wide-area if configured)")
|
|
217
218
|
.option("--timeout <ms>", "Per-command timeout in ms", "2000")
|
|
218
219
|
.option("--json", "Output JSON", false)
|
|
219
220
|
.action(async (opts) => {
|
|
220
221
|
await runGatewayCommand(async () => {
|
|
222
|
+
const cfg = loadConfig();
|
|
223
|
+
const wideAreaDomain = resolveWideAreaDiscoveryDomain({
|
|
224
|
+
configDomain: cfg.discovery?.wideArea?.domain,
|
|
225
|
+
});
|
|
221
226
|
const timeoutMs = parseDiscoverTimeoutMs(opts.timeout, 2000);
|
|
227
|
+
const domains = ["local.", ...(wideAreaDomain ? [wideAreaDomain] : [])];
|
|
222
228
|
const beacons = await withProgress({
|
|
223
229
|
label: "Scanning for gateways…",
|
|
224
230
|
indeterminate: true,
|
|
225
231
|
enabled: opts.json !== true,
|
|
226
232
|
delayMs: 0,
|
|
227
|
-
}, async () => await discoverGatewayBeacons({ timeoutMs }));
|
|
233
|
+
}, async () => await discoverGatewayBeacons({ timeoutMs, wideAreaDomain }));
|
|
228
234
|
const deduped = dedupeBeacons(beacons).sort((a, b) => String(a.displayName || a.instanceName).localeCompare(String(b.displayName || b.instanceName)));
|
|
229
235
|
if (opts.json) {
|
|
230
236
|
const enriched = deduped.map((b) => {
|
|
@@ -234,7 +240,7 @@ export function registerGatewayCli(program) {
|
|
|
234
240
|
});
|
|
235
241
|
defaultRuntime.log(JSON.stringify({
|
|
236
242
|
timeoutMs,
|
|
237
|
-
domains
|
|
243
|
+
domains,
|
|
238
244
|
count: enriched.length,
|
|
239
245
|
beacons: enriched,
|
|
240
246
|
}, null, 2));
|
|
@@ -242,7 +248,7 @@ export function registerGatewayCli(program) {
|
|
|
242
248
|
}
|
|
243
249
|
const rich = isRich();
|
|
244
250
|
defaultRuntime.log(colorize(rich, theme.heading, "Gateway Discovery"));
|
|
245
|
-
defaultRuntime.log(colorize(rich, theme.muted, `Found ${deduped.length} gateway(s) · domains:
|
|
251
|
+
defaultRuntime.log(colorize(rich, theme.muted, `Found ${deduped.length} gateway(s) · domains: ${domains.join(", ")}`));
|
|
246
252
|
if (deduped.length === 0)
|
|
247
253
|
return;
|
|
248
254
|
for (const beacon of deduped) {
|
|
@@ -16,7 +16,7 @@ import { runGatewayLoop } from "./run-loop.js";
|
|
|
16
16
|
import { describeUnknownError, extractGatewayMiskeys, maybeExplainGatewayServiceStop, parsePort, toOptionString, } from "./shared.js";
|
|
17
17
|
const gatewayLog = createSubsystemLogger("gateway");
|
|
18
18
|
async function runGatewayCommand(opts) {
|
|
19
|
-
const isDevProfile = process.env.
|
|
19
|
+
const isDevProfile = process.env.OPENCLAW_PROFILE?.trim().toLowerCase() === "dev";
|
|
20
20
|
const devMode = Boolean(opts.dev) || isDevProfile;
|
|
21
21
|
if (opts.reset && !devMode) {
|
|
22
22
|
defaultRuntime.error("Use --reset with --dev.");
|
|
@@ -27,7 +27,7 @@ async function runGatewayCommand(opts) {
|
|
|
27
27
|
setVerbose(Boolean(opts.verbose));
|
|
28
28
|
if (opts.claudeCliLogs) {
|
|
29
29
|
setConsoleSubsystemFilter(["agent/claude-cli"]);
|
|
30
|
-
process.env.
|
|
30
|
+
process.env.OPENCLAW_CLAUDE_CLI_LOG_OUTPUT = "1";
|
|
31
31
|
}
|
|
32
32
|
const wsLogRaw = (opts.compact ? "compact" : opts.wsLog);
|
|
33
33
|
const wsLogStyle = wsLogRaw === "compact" ? "compact" : wsLogRaw === "full" ? "full" : "auto";
|
|
@@ -40,11 +40,11 @@ async function runGatewayCommand(opts) {
|
|
|
40
40
|
}
|
|
41
41
|
setGatewayWsLogStyle(wsLogStyle);
|
|
42
42
|
if (opts.rawStream) {
|
|
43
|
-
process.env.
|
|
43
|
+
process.env.OPENCLAW_RAW_STREAM = "1";
|
|
44
44
|
}
|
|
45
45
|
const rawStreamPath = toOptionString(opts.rawStreamPath);
|
|
46
46
|
if (rawStreamPath) {
|
|
47
|
-
process.env.
|
|
47
|
+
process.env.OPENCLAW_RAW_STREAM_PATH = rawStreamPath;
|
|
48
48
|
}
|
|
49
49
|
if (devMode) {
|
|
50
50
|
await ensureDevGatewayConfig({ reset: Boolean(opts.reset) });
|
|
@@ -90,8 +90,9 @@ async function runGatewayCommand(opts) {
|
|
|
90
90
|
}
|
|
91
91
|
if (opts.token) {
|
|
92
92
|
const token = toOptionString(opts.token);
|
|
93
|
-
if (token)
|
|
94
|
-
process.env.
|
|
93
|
+
if (token) {
|
|
94
|
+
process.env.OPENCLAW_GATEWAY_TOKEN = token;
|
|
95
|
+
}
|
|
95
96
|
}
|
|
96
97
|
const authModeRaw = toOptionString(opts.auth);
|
|
97
98
|
const authMode = authModeRaw === "token" || authModeRaw === "password" ? authModeRaw : null;
|
|
@@ -111,11 +112,12 @@ async function runGatewayCommand(opts) {
|
|
|
111
112
|
}
|
|
112
113
|
const passwordRaw = toOptionString(opts.password);
|
|
113
114
|
const tokenRaw = toOptionString(opts.token);
|
|
114
|
-
const
|
|
115
|
+
const snapshot = await readConfigFileSnapshot().catch(() => null);
|
|
116
|
+
const configExists = snapshot?.exists ?? fs.existsSync(CONFIG_PATH);
|
|
115
117
|
const mode = cfg.gateway?.mode;
|
|
116
118
|
if (!opts.allowUnconfigured && mode !== "local") {
|
|
117
119
|
if (!configExists) {
|
|
118
|
-
defaultRuntime.error(`Missing config. Run \`${formatCliCommand("
|
|
120
|
+
defaultRuntime.error(`Missing config. Run \`${formatCliCommand("openclaw setup")}\` or set gateway.mode=local (or pass --allow-unconfigured).`);
|
|
119
121
|
}
|
|
120
122
|
else {
|
|
121
123
|
defaultRuntime.error(`Gateway start blocked: set gateway.mode=local (current: ${mode ?? "unset"}) or pass --allow-unconfigured.`);
|
|
@@ -136,7 +138,6 @@ async function runGatewayCommand(opts) {
|
|
|
136
138
|
defaultRuntime.exit(1);
|
|
137
139
|
return;
|
|
138
140
|
}
|
|
139
|
-
const snapshot = await readConfigFileSnapshot().catch(() => null);
|
|
140
141
|
const miskeys = extractGatewayMiskeys(snapshot?.parsed);
|
|
141
142
|
const authConfig = {
|
|
142
143
|
...cfg.gateway?.auth,
|
|
@@ -165,7 +166,7 @@ async function runGatewayCommand(opts) {
|
|
|
165
166
|
if (resolvedAuthMode === "token" && !hasToken && !resolvedAuth.allowTailscale) {
|
|
166
167
|
defaultRuntime.error([
|
|
167
168
|
"Gateway auth is set to token, but no token is configured.",
|
|
168
|
-
"Set gateway.auth.token (or
|
|
169
|
+
"Set gateway.auth.token (or OPENCLAW_GATEWAY_TOKEN), or pass --token.",
|
|
169
170
|
...authHints,
|
|
170
171
|
]
|
|
171
172
|
.filter(Boolean)
|
|
@@ -176,7 +177,7 @@ async function runGatewayCommand(opts) {
|
|
|
176
177
|
if (resolvedAuthMode === "password" && !hasPassword) {
|
|
177
178
|
defaultRuntime.error([
|
|
178
179
|
"Gateway auth is set to password, but no password is configured.",
|
|
179
|
-
"Set gateway.auth.password (or
|
|
180
|
+
"Set gateway.auth.password (or OPENCLAW_GATEWAY_PASSWORD), or pass --password.",
|
|
180
181
|
...authHints,
|
|
181
182
|
]
|
|
182
183
|
.filter(Boolean)
|
|
@@ -187,7 +188,7 @@ async function runGatewayCommand(opts) {
|
|
|
187
188
|
if (bind !== "loopback" && !hasSharedSecret) {
|
|
188
189
|
defaultRuntime.error([
|
|
189
190
|
`Refusing to bind gateway to ${bind} without auth.`,
|
|
190
|
-
"Set gateway.auth.token/password (or
|
|
191
|
+
"Set gateway.auth.token/password (or OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD) or pass --token/--password.",
|
|
191
192
|
...authHints,
|
|
192
193
|
]
|
|
193
194
|
.filter(Boolean)
|
|
@@ -220,7 +221,7 @@ async function runGatewayCommand(opts) {
|
|
|
220
221
|
if (err instanceof GatewayLockError ||
|
|
221
222
|
(err && typeof err === "object" && err.name === "GatewayLockError")) {
|
|
222
223
|
const errMessage = describeUnknownError(err);
|
|
223
|
-
defaultRuntime.error(`Gateway failed to start: ${errMessage}\nIf the gateway is supervised, stop it with: ${formatCliCommand("
|
|
224
|
+
defaultRuntime.error(`Gateway failed to start: ${errMessage}\nIf the gateway is supervised, stop it with: ${formatCliCommand("openclaw gateway stop")}`);
|
|
224
225
|
try {
|
|
225
226
|
const diagnostics = await inspectPortUsage(port);
|
|
226
227
|
if (diagnostics.status === "busy") {
|
|
@@ -244,7 +245,7 @@ export function addGatewayRunCommand(cmd) {
|
|
|
244
245
|
return cmd
|
|
245
246
|
.option("--port <port>", "Port for the gateway WebSocket")
|
|
246
247
|
.option("--bind <mode>", 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).')
|
|
247
|
-
.option("--token <token>", "Shared token required in connect.params.auth.token (default:
|
|
248
|
+
.option("--token <token>", "Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)")
|
|
248
249
|
.option("--auth <mode>", 'Gateway auth mode ("token"|"password")')
|
|
249
250
|
.option("--password <password>", "Password for auth mode=password")
|
|
250
251
|
.option("--tailscale <mode>", 'Tailscale exposure mode ("off"|"serve"|"funnel")')
|
|
@@ -60,25 +60,25 @@ export function extractGatewayMiskeys(parsed) {
|
|
|
60
60
|
return { hasGatewayToken, hasRemoteToken };
|
|
61
61
|
}
|
|
62
62
|
export function renderGatewayServiceStopHints(env = process.env) {
|
|
63
|
-
const profile = env.
|
|
63
|
+
const profile = env.OPENCLAW_PROFILE;
|
|
64
64
|
switch (process.platform) {
|
|
65
65
|
case "darwin":
|
|
66
66
|
return [
|
|
67
|
-
`Tip: ${formatCliCommand("
|
|
67
|
+
`Tip: ${formatCliCommand("openclaw gateway stop")}`,
|
|
68
68
|
`Or: launchctl bootout gui/$UID/${resolveGatewayLaunchAgentLabel(profile)}`,
|
|
69
69
|
];
|
|
70
70
|
case "linux":
|
|
71
71
|
return [
|
|
72
|
-
`Tip: ${formatCliCommand("
|
|
72
|
+
`Tip: ${formatCliCommand("openclaw gateway stop")}`,
|
|
73
73
|
`Or: systemctl --user stop ${resolveGatewaySystemdServiceName(profile)}.service`,
|
|
74
74
|
];
|
|
75
75
|
case "win32":
|
|
76
76
|
return [
|
|
77
|
-
`Tip: ${formatCliCommand("
|
|
77
|
+
`Tip: ${formatCliCommand("openclaw gateway stop")}`,
|
|
78
78
|
`Or: schtasks /End /TN "${resolveGatewayWindowsTaskName(profile)}"`,
|
|
79
79
|
];
|
|
80
80
|
default:
|
|
81
|
-
return [`Tip: ${formatCliCommand("
|
|
81
|
+
return [`Tip: ${formatCliCommand("openclaw 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("
|
|
108
|
+
? `No eligible hooks found. Run \`${formatCliCommand("openclaw 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("
|
|
151
|
+
return `Hook "${hookName}" not found. Run \`${formatCliCommand("openclaw hooks list")}\` to see available hooks.`;
|
|
152
152
|
}
|
|
153
153
|
if (opts.json) {
|
|
154
154
|
return JSON.stringify(hook, null, 2);
|
|
@@ -337,7 +337,7 @@ export function registerHooksCli(program) {
|
|
|
337
337
|
const hooks = program
|
|
338
338
|
.command("hooks")
|
|
339
339
|
.description("Manage internal agent hooks")
|
|
340
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/hooks", "docs.
|
|
340
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/hooks", "docs.openclaw.ai/cli/hooks")}\n`);
|
|
341
341
|
hooks
|
|
342
342
|
.command("list")
|
|
343
343
|
.description("List all hooks")
|
package/dist/cli/logs-cli.js
CHANGED
|
@@ -69,7 +69,7 @@ function createLogWriters() {
|
|
|
69
69
|
onBrokenPipe: (err, stream) => {
|
|
70
70
|
const code = err.code ?? "EPIPE";
|
|
71
71
|
const target = stream === process.stdout ? "stdout" : "stderr";
|
|
72
|
-
const message = `
|
|
72
|
+
const message = `openclaw logs: output ${target} closed (${code}). Stopping tail.`;
|
|
73
73
|
try {
|
|
74
74
|
clearActiveProgressLine();
|
|
75
75
|
process.stderr.write(`${message}\n`);
|
|
@@ -88,7 +88,7 @@ function createLogWriters() {
|
|
|
88
88
|
function emitGatewayError(err, opts, mode, rich, emitJsonLine, errorLine) {
|
|
89
89
|
const details = buildGatewayConnectionDetails({ url: opts.url });
|
|
90
90
|
const message = "Gateway not reachable. Is it running and accessible?";
|
|
91
|
-
const hint = `Hint: run \`${formatCliCommand("
|
|
91
|
+
const hint = `Hint: run \`${formatCliCommand("openclaw doctor")}\`.`;
|
|
92
92
|
const errorText = err instanceof Error ? err.message : String(err);
|
|
93
93
|
if (mode === "json") {
|
|
94
94
|
if (!emitJsonLine({
|
|
@@ -119,7 +119,7 @@ export function registerLogsCli(program) {
|
|
|
119
119
|
.option("--json", "Emit JSON log lines", false)
|
|
120
120
|
.option("--plain", "Plain text output (no ANSI styling)", false)
|
|
121
121
|
.option("--no-color", "Disable ANSI colors")
|
|
122
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/logs", "docs.
|
|
122
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/logs", "docs.openclaw.ai/cli/logs")}\n`);
|
|
123
123
|
addGatewayClientOptions(logs);
|
|
124
124
|
logs.action(async (opts) => {
|
|
125
125
|
const { logLine, errorLine, emitJsonLine } = createLogWriters();
|
package/dist/cli/memory-cli.js
CHANGED
|
@@ -9,7 +9,7 @@ import { setVerbose } from "../globals.js";
|
|
|
9
9
|
import { withProgress, withProgressTotals } from "./progress.js";
|
|
10
10
|
import { formatErrorMessage, withManager } from "./cli-utils.js";
|
|
11
11
|
import { getMemorySearchManager } from "../memory/index.js";
|
|
12
|
-
import { listMemoryFiles } from "../memory/internal.js";
|
|
12
|
+
import { listMemoryFiles, normalizeExtraMemoryPaths } from "../memory/internal.js";
|
|
13
13
|
import { defaultRuntime } from "../runtime.js";
|
|
14
14
|
import { formatDocsLink } from "../terminal/links.js";
|
|
15
15
|
import { colorize, isRich, theme } from "../terminal/theme.js";
|
|
@@ -41,6 +41,9 @@ function resolveAgentIds(cfg, agent) {
|
|
|
41
41
|
}
|
|
42
42
|
return [resolveDefaultAgentId(cfg)];
|
|
43
43
|
}
|
|
44
|
+
function formatExtraPaths(workspaceDir, extraPaths) {
|
|
45
|
+
return normalizeExtraMemoryPaths(workspaceDir, extraPaths).map((entry) => shortenHomePath(entry));
|
|
46
|
+
}
|
|
44
47
|
async function checkReadableFile(pathname) {
|
|
45
48
|
try {
|
|
46
49
|
await fs.access(pathname, fsSync.constants.R_OK);
|
|
@@ -74,7 +77,7 @@ async function scanSessionFiles(agentId) {
|
|
|
74
77
|
return { source: "sessions", totalFiles: null, issues };
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
|
-
async function scanMemoryFiles(workspaceDir) {
|
|
80
|
+
async function scanMemoryFiles(workspaceDir, extraPaths = []) {
|
|
78
81
|
const issues = [];
|
|
79
82
|
const memoryFile = path.join(workspaceDir, "MEMORY.md");
|
|
80
83
|
const altMemoryFile = path.join(workspaceDir, "memory.md");
|
|
@@ -85,6 +88,26 @@ async function scanMemoryFiles(workspaceDir) {
|
|
|
85
88
|
issues.push(primary.issue);
|
|
86
89
|
if (alt.issue)
|
|
87
90
|
issues.push(alt.issue);
|
|
91
|
+
const resolvedExtraPaths = normalizeExtraMemoryPaths(workspaceDir, extraPaths);
|
|
92
|
+
for (const extraPath of resolvedExtraPaths) {
|
|
93
|
+
try {
|
|
94
|
+
const stat = await fs.lstat(extraPath);
|
|
95
|
+
if (stat.isSymbolicLink())
|
|
96
|
+
continue;
|
|
97
|
+
const extraCheck = await checkReadableFile(extraPath);
|
|
98
|
+
if (extraCheck.issue)
|
|
99
|
+
issues.push(extraCheck.issue);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
const code = err.code;
|
|
103
|
+
if (code === "ENOENT") {
|
|
104
|
+
issues.push(`additional memory path missing (${shortenHomePath(extraPath)})`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
issues.push(`additional memory path not accessible (${shortenHomePath(extraPath)}): ${code ?? "error"}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
88
111
|
let dirReadable = null;
|
|
89
112
|
try {
|
|
90
113
|
await fs.access(memoryDir, fsSync.constants.R_OK);
|
|
@@ -104,7 +127,7 @@ async function scanMemoryFiles(workspaceDir) {
|
|
|
104
127
|
let listed = [];
|
|
105
128
|
let listedOk = false;
|
|
106
129
|
try {
|
|
107
|
-
listed = await listMemoryFiles(workspaceDir);
|
|
130
|
+
listed = await listMemoryFiles(workspaceDir, resolvedExtraPaths);
|
|
108
131
|
listedOk = true;
|
|
109
132
|
}
|
|
110
133
|
catch (err) {
|
|
@@ -135,9 +158,10 @@ async function scanMemoryFiles(workspaceDir) {
|
|
|
135
158
|
}
|
|
136
159
|
async function scanMemorySources(params) {
|
|
137
160
|
const scans = [];
|
|
161
|
+
const extraPaths = params.extraPaths ?? [];
|
|
138
162
|
for (const source of params.sources) {
|
|
139
163
|
if (source === "memory") {
|
|
140
|
-
scans.push(await scanMemoryFiles(params.workspaceDir));
|
|
164
|
+
scans.push(await scanMemoryFiles(params.workspaceDir, extraPaths));
|
|
141
165
|
}
|
|
142
166
|
if (source === "sessions") {
|
|
143
167
|
scans.push(await scanSessionFiles(params.agentId));
|
|
@@ -212,6 +236,7 @@ export async function runMemoryStatus(opts) {
|
|
|
212
236
|
workspaceDir: status.workspaceDir,
|
|
213
237
|
agentId,
|
|
214
238
|
sources,
|
|
239
|
+
extraPaths: status.extraPaths,
|
|
215
240
|
});
|
|
216
241
|
allResults.push({ agentId, status, embeddingProbe, indexError, scan });
|
|
217
242
|
},
|
|
@@ -239,11 +264,13 @@ export async function runMemoryStatus(opts) {
|
|
|
239
264
|
const line = indexError ? `Memory index failed: ${indexError}` : "Memory index complete.";
|
|
240
265
|
defaultRuntime.log(line);
|
|
241
266
|
}
|
|
267
|
+
const extraPaths = formatExtraPaths(status.workspaceDir, status.extraPaths ?? []);
|
|
242
268
|
const lines = [
|
|
243
269
|
`${heading("Memory Search")} ${muted(`(${agentId})`)}`,
|
|
244
270
|
`${label("Provider")} ${info(status.provider)} ${muted(`(requested: ${status.requestedProvider})`)}`,
|
|
245
271
|
`${label("Model")} ${info(status.model)}`,
|
|
246
272
|
status.sources?.length ? `${label("Sources")} ${info(status.sources.join(", "))}` : null,
|
|
273
|
+
extraPaths.length ? `${label("Extra paths")} ${info(extraPaths.join(", "))}` : null,
|
|
247
274
|
`${label("Indexed")} ${success(indexedLabel)}`,
|
|
248
275
|
`${label("Dirty")} ${status.dirty ? warn("yes") : muted("no")}`,
|
|
249
276
|
`${label("Store")} ${info(shortenHomePath(status.dbPath))}`,
|
|
@@ -350,7 +377,7 @@ export function registerMemoryCli(program) {
|
|
|
350
377
|
const memory = program
|
|
351
378
|
.command("memory")
|
|
352
379
|
.description("Memory search tools")
|
|
353
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/memory", "docs.
|
|
380
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/memory", "docs.openclaw.ai/cli/memory")}\n`);
|
|
354
381
|
memory
|
|
355
382
|
.command("status")
|
|
356
383
|
.description("Show memory search index status")
|
|
@@ -389,6 +416,7 @@ export function registerMemoryCli(program) {
|
|
|
389
416
|
const warn = (text) => colorize(rich, theme.warn, text);
|
|
390
417
|
const label = (text) => muted(`${text}:`);
|
|
391
418
|
const sourceLabels = status.sources.map((source) => formatSourceLabel(source, status.workspaceDir, agentId));
|
|
419
|
+
const extraPaths = formatExtraPaths(status.workspaceDir, status.extraPaths ?? []);
|
|
392
420
|
const lines = [
|
|
393
421
|
`${heading("Memory Index")} ${muted(`(${agentId})`)}`,
|
|
394
422
|
`${label("Provider")} ${info(status.provider)} ${muted(`(requested: ${status.requestedProvider})`)}`,
|
|
@@ -396,6 +424,9 @@ export function registerMemoryCli(program) {
|
|
|
396
424
|
sourceLabels.length
|
|
397
425
|
? `${label("Sources")} ${info(sourceLabels.join(", "))}`
|
|
398
426
|
: null,
|
|
427
|
+
extraPaths.length
|
|
428
|
+
? `${label("Extra paths")} ${info(extraPaths.join(", "))}`
|
|
429
|
+
: null,
|
|
399
430
|
].filter(Boolean);
|
|
400
431
|
if (status.fallback) {
|
|
401
432
|
lines.push(`${label("Fallback")} ${warn(status.fallback.from)}`);
|
package/dist/cli/models-cli.js
CHANGED
|
@@ -12,7 +12,7 @@ export function registerModelsCli(program) {
|
|
|
12
12
|
.description("Model discovery, scanning, and configuration")
|
|
13
13
|
.option("--status-json", "Output JSON (alias for `models status --json`)", false)
|
|
14
14
|
.option("--status-plain", "Plain output (alias for `models status --plain`)", false)
|
|
15
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/models", "docs.
|
|
15
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/models", "docs.openclaw.ai/cli/models")}\n`);
|
|
16
16
|
models
|
|
17
17
|
.command("list")
|
|
18
18
|
.description("List models (configured by default)")
|
|
@@ -14,7 +14,7 @@ import { formatCliCommand } from "../command-format.js";
|
|
|
14
14
|
import { buildDaemonServiceSnapshot, createNullWriter, emitDaemonActionJson, } from "../daemon-cli/response.js";
|
|
15
15
|
import { formatRuntimeStatus, parsePort } from "../daemon-cli/shared.js";
|
|
16
16
|
function renderNodeServiceStartHints() {
|
|
17
|
-
const base = [formatCliCommand("
|
|
17
|
+
const base = [formatCliCommand("openclaw node install"), formatCliCommand("openclaw node start")];
|
|
18
18
|
switch (process.platform) {
|
|
19
19
|
case "darwin":
|
|
20
20
|
return [
|
|
@@ -117,7 +117,7 @@ export async function runNodeDaemonInstall(opts) {
|
|
|
117
117
|
});
|
|
118
118
|
if (!json) {
|
|
119
119
|
defaultRuntime.log(`Node service already ${service.loadedText}.`);
|
|
120
|
-
defaultRuntime.log(`Reinstall with: ${formatCliCommand("
|
|
120
|
+
defaultRuntime.log(`Reinstall with: ${formatCliCommand("openclaw node install --force")}`);
|
|
121
121
|
}
|
|
122
122
|
return;
|
|
123
123
|
}
|
|
@@ -463,7 +463,7 @@ export async function runNodeDaemonStatus(opts = {}) {
|
|
|
463
463
|
};
|
|
464
464
|
const hintEnv = {
|
|
465
465
|
...baseEnv,
|
|
466
|
-
|
|
466
|
+
OPENCLAW_LOG_PREFIX: baseEnv.OPENCLAW_LOG_PREFIX ?? "node",
|
|
467
467
|
};
|
|
468
468
|
if (runtime?.missingUnit) {
|
|
469
469
|
defaultRuntime.error(errorText("Service unit not found."));
|
|
@@ -12,7 +12,7 @@ export function registerNodeCli(program) {
|
|
|
12
12
|
const node = program
|
|
13
13
|
.command("node")
|
|
14
14
|
.description("Run a headless node host (system.run/system.which)")
|
|
15
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/node", "docs.
|
|
15
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/node", "docs.openclaw.ai/cli/node")}\n`);
|
|
16
16
|
node
|
|
17
17
|
.command("run")
|
|
18
18
|
.description("Run the headless node host (foreground)")
|
|
@@ -189,7 +189,7 @@ export function registerNodesCanvasCommands(nodes) {
|
|
|
189
189
|
: await fs.readFile(String(opts.jsonl), "utf8");
|
|
190
190
|
const { version, messageCount } = validateA2UIJsonl(jsonl);
|
|
191
191
|
if (version === "v0.9") {
|
|
192
|
-
throw new Error("Detected A2UI v0.9 JSONL (createSurface).
|
|
192
|
+
throw new Error("Detected A2UI v0.9 JSONL (createSurface). OpenClaw currently supports v0.8 only.");
|
|
193
193
|
}
|
|
194
194
|
await invokeCanvas(opts, "canvas.a2ui.pushJSONL", { jsonl });
|
|
195
195
|
if (!opts.json) {
|
|
@@ -12,7 +12,7 @@ export function registerNodesCli(program) {
|
|
|
12
12
|
const nodes = program
|
|
13
13
|
.command("nodes")
|
|
14
14
|
.description("Manage gateway-owned node pairing")
|
|
15
|
-
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.
|
|
15
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.openclaw.ai/cli/nodes")}\n`);
|
|
16
16
|
registerNodesStatusCommands(nodes);
|
|
17
17
|
registerNodesPairingCommands(nodes);
|
|
18
18
|
registerNodesInvokeCommands(nodes);
|