@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
|
@@ -9,7 +9,7 @@ import { resolveDiscordAccount } from "./accounts.js";
|
|
|
9
9
|
import { chunkDiscordTextWithMode } from "./chunk.js";
|
|
10
10
|
import { fetchChannelPermissionsDiscord, isThreadChannelType } from "./send.permissions.js";
|
|
11
11
|
import { DiscordSendError } from "./send.types.js";
|
|
12
|
-
import { parseDiscordTarget } from "./targets.js";
|
|
12
|
+
import { parseDiscordTarget, resolveDiscordTarget } from "./targets.js";
|
|
13
13
|
import { normalizeDiscordToken } from "./token.js";
|
|
14
14
|
const DISCORD_TEXT_LIMIT = 2000;
|
|
15
15
|
const DISCORD_MAX_STICKERS = 3;
|
|
@@ -68,6 +68,37 @@ function parseRecipient(raw) {
|
|
|
68
68
|
}
|
|
69
69
|
return { kind: target.kind, id: target.id };
|
|
70
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse and resolve Discord recipient, including username lookup.
|
|
73
|
+
* This enables sending DMs by username (e.g., "john.doe") by querying
|
|
74
|
+
* the Discord directory to resolve usernames to user IDs.
|
|
75
|
+
*
|
|
76
|
+
* @param raw - The recipient string (username, ID, or known format)
|
|
77
|
+
* @param accountId - Discord account ID to use for directory lookup
|
|
78
|
+
* @returns Parsed DiscordRecipient with resolved user ID if applicable
|
|
79
|
+
*/
|
|
80
|
+
export async function parseAndResolveRecipient(raw, accountId) {
|
|
81
|
+
const cfg = loadConfig();
|
|
82
|
+
const accountInfo = resolveDiscordAccount({ cfg, accountId });
|
|
83
|
+
// First try to resolve using directory lookup (handles usernames)
|
|
84
|
+
const trimmed = raw.trim();
|
|
85
|
+
const parseOptions = {
|
|
86
|
+
ambiguousMessage: `Ambiguous Discord recipient "${trimmed}". Use "user:${trimmed}" for DMs or "channel:${trimmed}" for channel messages.`,
|
|
87
|
+
};
|
|
88
|
+
const resolved = await resolveDiscordTarget(raw, {
|
|
89
|
+
cfg,
|
|
90
|
+
accountId: accountInfo.accountId,
|
|
91
|
+
}, parseOptions);
|
|
92
|
+
if (resolved) {
|
|
93
|
+
return { kind: resolved.kind, id: resolved.id };
|
|
94
|
+
}
|
|
95
|
+
// Fallback to standard parsing (for channels, etc.)
|
|
96
|
+
const parsed = parseDiscordTarget(raw, parseOptions);
|
|
97
|
+
if (!parsed) {
|
|
98
|
+
throw new Error("Recipient is required for Discord sends");
|
|
99
|
+
}
|
|
100
|
+
return { kind: parsed.kind, id: parsed.id };
|
|
101
|
+
}
|
|
71
102
|
function normalizeStickerIds(raw) {
|
|
72
103
|
const ids = raw.map((entry) => entry.trim()).filter(Boolean);
|
|
73
104
|
if (ids.length === 0) {
|
package/dist/discord/targets.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { buildMessagingTarget, ensureTargetId, requireTargetKind, } from "../channels/targets.js";
|
|
2
|
+
import { listDiscordDirectoryPeersLive } from "./directory-live.js";
|
|
2
3
|
export function parseDiscordTarget(raw, options = {}) {
|
|
3
4
|
const trimmed = raw.trim();
|
|
4
5
|
if (!trimmed)
|
|
@@ -41,3 +42,81 @@ export function resolveDiscordChannelId(raw) {
|
|
|
41
42
|
const target = parseDiscordTarget(raw, { defaultKind: "channel" });
|
|
42
43
|
return requireTargetKind({ platform: "Discord", target, kind: "channel" });
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a Discord username to user ID using the directory lookup.
|
|
47
|
+
* This enables sending DMs by username instead of requiring explicit user IDs.
|
|
48
|
+
*
|
|
49
|
+
* @param raw - The username or raw target string (e.g., "john.doe")
|
|
50
|
+
* @param options - Directory configuration params (cfg, accountId, limit)
|
|
51
|
+
* @param parseOptions - Messaging target parsing options (defaults, ambiguity message)
|
|
52
|
+
* @returns Parsed MessagingTarget with user ID, or undefined if not found
|
|
53
|
+
*/
|
|
54
|
+
export async function resolveDiscordTarget(raw, options, parseOptions = {}) {
|
|
55
|
+
const trimmed = raw.trim();
|
|
56
|
+
if (!trimmed)
|
|
57
|
+
return undefined;
|
|
58
|
+
const likelyUsername = isLikelyUsername(trimmed);
|
|
59
|
+
const shouldLookup = isExplicitUserLookup(trimmed, parseOptions) || likelyUsername;
|
|
60
|
+
const directParse = safeParseDiscordTarget(trimmed, parseOptions);
|
|
61
|
+
if (directParse && directParse.kind !== "channel" && !likelyUsername) {
|
|
62
|
+
return directParse;
|
|
63
|
+
}
|
|
64
|
+
if (!shouldLookup) {
|
|
65
|
+
return directParse ?? parseDiscordTarget(trimmed, parseOptions);
|
|
66
|
+
}
|
|
67
|
+
// Try to resolve as a username via directory lookup
|
|
68
|
+
try {
|
|
69
|
+
const directoryEntries = await listDiscordDirectoryPeersLive({
|
|
70
|
+
...options,
|
|
71
|
+
query: trimmed,
|
|
72
|
+
limit: 1,
|
|
73
|
+
});
|
|
74
|
+
const match = directoryEntries[0];
|
|
75
|
+
if (match && match.kind === "user") {
|
|
76
|
+
// Extract user ID from the directory entry (format: "user:<id>")
|
|
77
|
+
const userId = match.id.replace(/^user:/, "");
|
|
78
|
+
return buildMessagingTarget("user", userId, trimmed);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Directory lookup failed - fall through to parse as-is
|
|
83
|
+
// This preserves existing behavior for channel names
|
|
84
|
+
}
|
|
85
|
+
// Fallback to original parsing (for channels, etc.)
|
|
86
|
+
return parseDiscordTarget(trimmed, parseOptions);
|
|
87
|
+
}
|
|
88
|
+
function safeParseDiscordTarget(input, options) {
|
|
89
|
+
try {
|
|
90
|
+
return parseDiscordTarget(input, options);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function isExplicitUserLookup(input, options) {
|
|
97
|
+
if (/^<@!?(\d+)>$/.test(input)) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (/^(user:|discord:)/.test(input)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
if (input.startsWith("@")) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
if (/^\d+$/.test(input)) {
|
|
107
|
+
return options.defaultKind === "user";
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if a string looks like a Discord username (not a mention, prefix, or ID).
|
|
113
|
+
* Usernames typically don't start with special characters except underscore.
|
|
114
|
+
*/
|
|
115
|
+
function isLikelyUsername(input) {
|
|
116
|
+
// Skip if it's already a known format
|
|
117
|
+
if (/^(user:|channel:|discord:|@|<@!?)|[\d]+$/.test(input)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
// Likely a username if it doesn't match known patterns
|
|
121
|
+
return true;
|
|
122
|
+
}
|
package/dist/entry.js
CHANGED
|
@@ -3,11 +3,12 @@ import { spawn } from "node:child_process";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { applyCliProfileEnv, parseCliProfileArgs } from "./cli/profile.js";
|
|
6
|
-
import { isTruthyEnvValue } from "./infra/env.js";
|
|
6
|
+
import { isTruthyEnvValue, normalizeEnv } from "./infra/env.js";
|
|
7
7
|
import { installProcessWarningFilter } from "./infra/warnings.js";
|
|
8
8
|
import { attachChildProcessBridge } from "./process/child-process-bridge.js";
|
|
9
|
-
process.title = "
|
|
9
|
+
process.title = "openclaw";
|
|
10
10
|
installProcessWarningFilter();
|
|
11
|
+
normalizeEnv();
|
|
11
12
|
if (process.argv.includes("--no-color")) {
|
|
12
13
|
process.env.NO_COLOR = "1";
|
|
13
14
|
process.env.FORCE_COLOR = "0";
|
|
@@ -19,14 +20,14 @@ function hasExperimentalWarningSuppressed(nodeOptions) {
|
|
|
19
20
|
return nodeOptions.includes(EXPERIMENTAL_WARNING_FLAG) || nodeOptions.includes("--no-warnings");
|
|
20
21
|
}
|
|
21
22
|
function ensureExperimentalWarningSuppressed() {
|
|
22
|
-
if (isTruthyEnvValue(process.env.
|
|
23
|
+
if (isTruthyEnvValue(process.env.OPENCLAW_NO_RESPAWN))
|
|
23
24
|
return false;
|
|
24
|
-
if (isTruthyEnvValue(process.env.
|
|
25
|
+
if (isTruthyEnvValue(process.env.OPENCLAW_NODE_OPTIONS_READY))
|
|
25
26
|
return false;
|
|
26
27
|
const nodeOptions = process.env.NODE_OPTIONS ?? "";
|
|
27
28
|
if (hasExperimentalWarningSuppressed(nodeOptions))
|
|
28
29
|
return false;
|
|
29
|
-
process.env.
|
|
30
|
+
process.env.OPENCLAW_NODE_OPTIONS_READY = "1";
|
|
30
31
|
process.env.NODE_OPTIONS = `${nodeOptions} ${EXPERIMENTAL_WARNING_FLAG}`.trim();
|
|
31
32
|
const child = spawn(process.execPath, [...process.execArgv, ...process.argv.slice(1)], {
|
|
32
33
|
stdio: "inherit",
|
|
@@ -41,7 +42,7 @@ function ensureExperimentalWarningSuppressed() {
|
|
|
41
42
|
process.exit(code ?? 1);
|
|
42
43
|
});
|
|
43
44
|
child.once("error", (error) => {
|
|
44
|
-
console.error("[
|
|
45
|
+
console.error("[openclaw] Failed to respawn CLI:", error instanceof Error ? (error.stack ?? error.message) : error);
|
|
45
46
|
process.exit(1);
|
|
46
47
|
});
|
|
47
48
|
// Parent must not continue running the CLI.
|
|
@@ -110,7 +111,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
110
111
|
const parsed = parseCliProfileArgs(process.argv);
|
|
111
112
|
if (!parsed.ok) {
|
|
112
113
|
// Keep it simple; Commander will handle rich help/errors after we strip flags.
|
|
113
|
-
console.error(`[
|
|
114
|
+
console.error(`[openclaw] ${parsed.error}`);
|
|
114
115
|
process.exit(2);
|
|
115
116
|
}
|
|
116
117
|
if (parsed.profile) {
|
|
@@ -121,7 +122,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
121
122
|
import("./cli/run-main.js")
|
|
122
123
|
.then(({ runCli }) => runCli(process.argv))
|
|
123
124
|
.catch((error) => {
|
|
124
|
-
console.error("[
|
|
125
|
+
console.error("[openclaw] Failed to start CLI:", error instanceof Error ? (error.stack ?? error.message) : error);
|
|
125
126
|
process.exitCode = 1;
|
|
126
127
|
});
|
|
127
128
|
}
|
package/dist/gateway/auth.js
CHANGED
|
@@ -127,8 +127,11 @@ async function resolveVerifiedTailscaleUser(params) {
|
|
|
127
127
|
export function resolveGatewayAuth(params) {
|
|
128
128
|
const authConfig = params.authConfig ?? {};
|
|
129
129
|
const env = params.env ?? process.env;
|
|
130
|
-
const token = authConfig.token ?? env.CLAWDBOT_GATEWAY_TOKEN ?? undefined;
|
|
131
|
-
const password = authConfig.password ??
|
|
130
|
+
const token = authConfig.token ?? env.OPENCLAW_GATEWAY_TOKEN ?? env.CLAWDBOT_GATEWAY_TOKEN ?? undefined;
|
|
131
|
+
const password = authConfig.password ??
|
|
132
|
+
env.OPENCLAW_GATEWAY_PASSWORD ??
|
|
133
|
+
env.CLAWDBOT_GATEWAY_PASSWORD ??
|
|
134
|
+
undefined;
|
|
132
135
|
const mode = authConfig.mode ?? (password ? "password" : "token");
|
|
133
136
|
const allowTailscale = authConfig.allowTailscale ?? (params.tailscaleMode === "serve" && mode !== "password");
|
|
134
137
|
return {
|
|
@@ -142,7 +145,7 @@ export function assertGatewayAuthConfigured(auth) {
|
|
|
142
145
|
if (auth.mode === "token" && !auth.token) {
|
|
143
146
|
if (auth.allowTailscale)
|
|
144
147
|
return;
|
|
145
|
-
throw new Error("gateway auth mode is token, but no token was configured (set gateway.auth.token or
|
|
148
|
+
throw new Error("gateway auth mode is token, but no token was configured (set gateway.auth.token or OPENCLAW_GATEWAY_TOKEN)");
|
|
146
149
|
}
|
|
147
150
|
if (auth.mode === "password" && !auth.password) {
|
|
148
151
|
throw new Error("gateway auth mode is password, but no password was configured");
|
package/dist/gateway/call.js
CHANGED
|
@@ -95,13 +95,15 @@ export async function callGateway(opts) {
|
|
|
95
95
|
? typeof remote?.token === "string" && remote.token.trim().length > 0
|
|
96
96
|
? remote.token.trim()
|
|
97
97
|
: undefined
|
|
98
|
-
: process.env.
|
|
98
|
+
: process.env.OPENCLAW_GATEWAY_TOKEN?.trim() ||
|
|
99
|
+
process.env.CLAWDBOT_GATEWAY_TOKEN?.trim() ||
|
|
99
100
|
(typeof authToken === "string" && authToken.trim().length > 0
|
|
100
101
|
? authToken.trim()
|
|
101
102
|
: undefined));
|
|
102
103
|
const password = (typeof opts.password === "string" && opts.password.trim().length > 0
|
|
103
104
|
? opts.password.trim()
|
|
104
105
|
: undefined) ||
|
|
106
|
+
process.env.OPENCLAW_GATEWAY_PASSWORD?.trim() ||
|
|
105
107
|
process.env.CLAWDBOT_GATEWAY_PASSWORD?.trim() ||
|
|
106
108
|
(isRemoteMode
|
|
107
109
|
? typeof remote?.password === "string" && remote.password.trim().length > 0
|
|
@@ -130,12 +130,12 @@ function serveFile(res, filePath) {
|
|
|
130
130
|
function injectControlUiConfig(html, opts) {
|
|
131
131
|
const { basePath, assistantName, assistantAvatar } = opts;
|
|
132
132
|
const script = `<script>` +
|
|
133
|
-
`window.
|
|
134
|
-
`window.
|
|
135
|
-
`window.
|
|
133
|
+
`window.__OPENCLAW_CONTROL_UI_BASE_PATH__=${JSON.stringify(basePath)};` +
|
|
134
|
+
`window.__OPENCLAW_ASSISTANT_NAME__=${JSON.stringify(assistantName ?? DEFAULT_ASSISTANT_IDENTITY.name)};` +
|
|
135
|
+
`window.__OPENCLAW_ASSISTANT_AVATAR__=${JSON.stringify(assistantAvatar ?? DEFAULT_ASSISTANT_IDENTITY.avatar)};` +
|
|
136
136
|
`</script>`;
|
|
137
137
|
// Check if already injected
|
|
138
|
-
if (html.includes("
|
|
138
|
+
if (html.includes("__OPENCLAW_ASSISTANT_NAME__"))
|
|
139
139
|
return html;
|
|
140
140
|
const headClose = html.indexOf("</head>");
|
|
141
141
|
if (headClose !== -1) {
|
package/dist/gateway/hooks.js
CHANGED
|
@@ -35,7 +35,9 @@ export function extractHookToken(req, url) {
|
|
|
35
35
|
if (token)
|
|
36
36
|
return { token, fromQuery: false };
|
|
37
37
|
}
|
|
38
|
-
const headerToken = typeof req.headers["x-
|
|
38
|
+
const headerToken = typeof req.headers["x-openclaw-token"] === "string"
|
|
39
|
+
? req.headers["x-openclaw-token"].trim()
|
|
40
|
+
: "";
|
|
39
41
|
if (headerToken)
|
|
40
42
|
return { token: headerToken, fromQuery: false };
|
|
41
43
|
const queryToken = url.searchParams.get("token");
|
|
@@ -16,7 +16,9 @@ export function getBearerToken(req) {
|
|
|
16
16
|
return token || undefined;
|
|
17
17
|
}
|
|
18
18
|
export function resolveAgentIdFromHeader(req) {
|
|
19
|
-
const raw = getHeader(req, "x-
|
|
19
|
+
const raw = getHeader(req, "x-openclaw-agent-id")?.trim() ||
|
|
20
|
+
getHeader(req, "x-openclaw-agent")?.trim() ||
|
|
21
|
+
"";
|
|
20
22
|
if (!raw)
|
|
21
23
|
return undefined;
|
|
22
24
|
return normalizeAgentId(raw);
|
|
@@ -25,7 +27,7 @@ export function resolveAgentIdFromModel(model) {
|
|
|
25
27
|
const raw = model?.trim();
|
|
26
28
|
if (!raw)
|
|
27
29
|
return undefined;
|
|
28
|
-
const m = raw.match(/^
|
|
30
|
+
const m = raw.match(/^openclaw[:/](?<agentId>[a-z0-9][a-z0-9_-]{0,63})$/i) ??
|
|
29
31
|
raw.match(/^agent:(?<agentId>[a-z0-9][a-z0-9_-]{0,63})$/i);
|
|
30
32
|
const agentId = m?.groups?.agentId;
|
|
31
33
|
if (!agentId)
|
|
@@ -40,7 +42,7 @@ export function resolveAgentIdForRequest(params) {
|
|
|
40
42
|
return fromModel ?? "main";
|
|
41
43
|
}
|
|
42
44
|
export function resolveSessionKey(params) {
|
|
43
|
-
const explicit = getHeader(params.req, "x-
|
|
45
|
+
const explicit = getHeader(params.req, "x-openclaw-session-key")?.trim();
|
|
44
46
|
if (explicit)
|
|
45
47
|
return explicit;
|
|
46
48
|
const user = params.user?.trim();
|
|
@@ -134,7 +134,7 @@ export async function handleOpenAiHttpRequest(req, res, opts) {
|
|
|
134
134
|
return true;
|
|
135
135
|
const payload = coerceRequest(body);
|
|
136
136
|
const stream = Boolean(payload.stream);
|
|
137
|
-
const model = typeof payload.model === "string" ? payload.model : "
|
|
137
|
+
const model = typeof payload.model === "string" ? payload.model : "openclaw";
|
|
138
138
|
const user = typeof payload.user === "string" ? payload.user : undefined;
|
|
139
139
|
const agentId = resolveAgentIdForRequest({ req, model });
|
|
140
140
|
const sessionKey = resolveOpenAiSessionKey({ req, agentId, user });
|
|
@@ -167,7 +167,7 @@ export async function handleOpenAiHttpRequest(req, res, opts) {
|
|
|
167
167
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
168
168
|
.filter(Boolean)
|
|
169
169
|
.join("\n\n")
|
|
170
|
-
: "No response from
|
|
170
|
+
: "No response from OpenClaw.";
|
|
171
171
|
sendJson(res, 200, {
|
|
172
172
|
id: runId,
|
|
173
173
|
object: "chat.completion",
|
|
@@ -275,7 +275,7 @@ export async function handleOpenAiHttpRequest(req, res, opts) {
|
|
|
275
275
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
276
276
|
.filter(Boolean)
|
|
277
277
|
.join("\n\n")
|
|
278
|
-
: "No response from
|
|
278
|
+
: "No response from OpenClaw.";
|
|
279
279
|
sawAssistantDelta = true;
|
|
280
280
|
writeSse(res, {
|
|
281
281
|
id: runId,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenResponses HTTP Handler
|
|
3
3
|
*
|
|
4
|
-
* Implements the OpenResponses `/v1/responses` endpoint for
|
|
4
|
+
* Implements the OpenResponses `/v1/responses` endpoint for OpenClaw Gateway.
|
|
5
5
|
*
|
|
6
6
|
* @see https://www.open-responses.com/
|
|
7
7
|
*/
|
|
@@ -405,7 +405,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
405
405
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
406
406
|
.filter(Boolean)
|
|
407
407
|
.join("\n\n")
|
|
408
|
-
: "No response from
|
|
408
|
+
: "No response from OpenClaw.";
|
|
409
409
|
const response = createResponseResource({
|
|
410
410
|
id: responseId,
|
|
411
411
|
model,
|
|
@@ -543,7 +543,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
543
543
|
if (evt.stream === "lifecycle") {
|
|
544
544
|
const phase = evt.data?.phase;
|
|
545
545
|
if (phase === "end" || phase === "error") {
|
|
546
|
-
const finalText = accumulatedText || "No response from
|
|
546
|
+
const finalText = accumulatedText || "No response from OpenClaw.";
|
|
547
547
|
const finalStatus = phase === "error" ? "failed" : "completed";
|
|
548
548
|
requestFinalize(finalStatus, finalText);
|
|
549
549
|
}
|
|
@@ -647,7 +647,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
647
647
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
648
648
|
.filter(Boolean)
|
|
649
649
|
.join("\n\n")
|
|
650
|
-
: "No response from
|
|
650
|
+
: "No response from OpenClaw.";
|
|
651
651
|
accumulatedText = content;
|
|
652
652
|
sawAssistantDelta = true;
|
|
653
653
|
writeSseEvent(res, {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export const GATEWAY_CLIENT_IDS = {
|
|
2
2
|
WEBCHAT_UI: "webchat-ui",
|
|
3
|
-
CONTROL_UI: "
|
|
3
|
+
CONTROL_UI: "openclaw-control-ui",
|
|
4
4
|
WEBCHAT: "webchat",
|
|
5
5
|
CLI: "cli",
|
|
6
6
|
GATEWAY_CLIENT: "gateway-client",
|
|
7
|
-
MACOS_APP: "
|
|
8
|
-
IOS_APP: "
|
|
9
|
-
ANDROID_APP: "
|
|
7
|
+
MACOS_APP: "openclaw-macos",
|
|
8
|
+
IOS_APP: "openclaw-ios",
|
|
9
|
+
ANDROID_APP: "openclaw-android",
|
|
10
10
|
NODE_HOST: "node-host",
|
|
11
11
|
TEST: "test",
|
|
12
12
|
FINGERPRINT: "fingerprint",
|
|
13
|
-
PROBE: "
|
|
13
|
+
PROBE: "openclaw-probe",
|
|
14
14
|
};
|
|
15
15
|
// Back-compat naming (internal): these values are IDs, not display names.
|
|
16
16
|
export const GATEWAY_CLIENT_NAMES = GATEWAY_CLIENT_IDS;
|
|
@@ -642,7 +642,7 @@ export function attachGatewayWsMessageHandler(params) {
|
|
|
642
642
|
type: "hello-ok",
|
|
643
643
|
protocol: PROTOCOL_VERSION,
|
|
644
644
|
server: {
|
|
645
|
-
version: process.env.
|
|
645
|
+
version: process.env.OPENCLAW_VERSION ?? process.env.npm_package_version ?? "dev",
|
|
646
646
|
commit: process.env.GIT_COMMIT,
|
|
647
647
|
host: os.hostname(),
|
|
648
648
|
connId,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isTruthyEnvValue } from "../infra/env.js";
|
|
2
2
|
export async function startBrowserControlServerIfEnabled() {
|
|
3
|
-
if (isTruthyEnvValue(process.env.
|
|
3
|
+
if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER))
|
|
4
4
|
return null;
|
|
5
5
|
// Lazy import: keeps startup fast, but still bundles for the embedded
|
|
6
6
|
// gateway (bun --compile) via the static specifier path.
|
|
7
|
-
const override = process.env.
|
|
7
|
+
const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
|
|
8
8
|
const mod = override ? await import(override) : await import("../browser/control-service.js");
|
|
9
9
|
const start = typeof mod
|
|
10
10
|
.startBrowserControlServiceFromConfig === "function"
|
|
@@ -16,8 +16,8 @@ export const __setMaxChatHistoryMessagesBytesForTest = (value) => {
|
|
|
16
16
|
};
|
|
17
17
|
export const DEFAULT_HANDSHAKE_TIMEOUT_MS = 10_000;
|
|
18
18
|
export const getHandshakeTimeoutMs = () => {
|
|
19
|
-
if (process.env.VITEST && process.env.
|
|
20
|
-
const parsed = Number(process.env.
|
|
19
|
+
if (process.env.VITEST && process.env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS) {
|
|
20
|
+
const parsed = Number(process.env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS);
|
|
21
21
|
if (Number.isFinite(parsed) && parsed > 0)
|
|
22
22
|
return parsed;
|
|
23
23
|
}
|
|
@@ -14,7 +14,7 @@ import { defaultRuntime } from "../runtime.js";
|
|
|
14
14
|
export function buildGatewayCronService(params) {
|
|
15
15
|
const cronLogger = getChildLogger({ module: "cron" });
|
|
16
16
|
const storePath = resolveCronStorePath(params.cfg.cron?.store);
|
|
17
|
-
const cronEnabled = process.env.
|
|
17
|
+
const cronEnabled = process.env.OPENCLAW_SKIP_CRON !== "1" && params.cfg.cron?.enabled !== false;
|
|
18
18
|
const resolveCronAgent = (requested) => {
|
|
19
19
|
const runtimeConfig = loadConfig();
|
|
20
20
|
const normalized = typeof requested === "string" && requested.trim() ? normalizeAgentId(requested) : undefined;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { startGatewayBonjourAdvertiser } from "../infra/bonjour.js";
|
|
2
2
|
import { pickPrimaryTailnetIPv4, pickPrimaryTailnetIPv6 } from "../infra/tailnet.js";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveWideAreaDiscoveryDomain, writeWideAreaGatewayZone } from "../infra/widearea-dns.js";
|
|
4
4
|
import { formatBonjourInstanceName, resolveBonjourCliPath, resolveTailnetDnsHint, } from "./server-discovery.js";
|
|
5
5
|
export async function startGatewayDiscovery(params) {
|
|
6
6
|
let bonjourStop = null;
|
|
7
7
|
const mdnsMode = params.mdnsMode ?? "minimal";
|
|
8
8
|
// mDNS can be disabled via config (mdnsMode: off) or env var.
|
|
9
9
|
const bonjourEnabled = mdnsMode !== "off" &&
|
|
10
|
-
process.env.
|
|
10
|
+
process.env.OPENCLAW_DISABLE_BONJOUR !== "1" &&
|
|
11
11
|
process.env.NODE_ENV !== "test" &&
|
|
12
12
|
!process.env.VITEST;
|
|
13
13
|
const mdnsMinimal = mdnsMode !== "full";
|
|
@@ -16,7 +16,7 @@ export async function startGatewayDiscovery(params) {
|
|
|
16
16
|
const tailnetDns = needsTailnetDns
|
|
17
17
|
? await resolveTailnetDnsHint({ enabled: tailscaleEnabled })
|
|
18
18
|
: undefined;
|
|
19
|
-
const sshPortEnv = mdnsMinimal ? undefined : process.env.
|
|
19
|
+
const sshPortEnv = mdnsMinimal ? undefined : process.env.OPENCLAW_SSH_PORT?.trim();
|
|
20
20
|
const sshPortParsed = sshPortEnv ? Number.parseInt(sshPortEnv, 10) : NaN;
|
|
21
21
|
const sshPort = Number.isFinite(sshPortParsed) && sshPortParsed > 0 ? sshPortParsed : undefined;
|
|
22
22
|
const cliPath = mdnsMinimal ? undefined : resolveBonjourCliPath();
|
|
@@ -40,6 +40,13 @@ export async function startGatewayDiscovery(params) {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
if (params.wideAreaDiscoveryEnabled) {
|
|
43
|
+
const wideAreaDomain = resolveWideAreaDiscoveryDomain({
|
|
44
|
+
configDomain: params.wideAreaDiscoveryDomain ?? undefined,
|
|
45
|
+
});
|
|
46
|
+
if (!wideAreaDomain) {
|
|
47
|
+
params.logDiscovery.warn("discovery.wideArea.enabled is true, but no domain was configured; set discovery.wideArea.domain to enable unicast DNS-SD");
|
|
48
|
+
return { bonjourStop };
|
|
49
|
+
}
|
|
43
50
|
const tailnetIPv4 = pickPrimaryTailnetIPv4();
|
|
44
51
|
if (!tailnetIPv4) {
|
|
45
52
|
params.logDiscovery.warn("discovery.wideArea.enabled is true, but no Tailscale IPv4 address was found; skipping unicast DNS-SD zone update");
|
|
@@ -48,6 +55,7 @@ export async function startGatewayDiscovery(params) {
|
|
|
48
55
|
try {
|
|
49
56
|
const tailnetIPv6 = pickPrimaryTailnetIPv6();
|
|
50
57
|
const result = await writeWideAreaGatewayZone({
|
|
58
|
+
domain: wideAreaDomain,
|
|
51
59
|
gatewayPort: params.port,
|
|
52
60
|
displayName: formatBonjourInstanceName(params.machineDisplayName),
|
|
53
61
|
tailnetIPv4,
|
|
@@ -58,7 +66,7 @@ export async function startGatewayDiscovery(params) {
|
|
|
58
66
|
sshPort,
|
|
59
67
|
cliPath: resolveBonjourCliPath(),
|
|
60
68
|
});
|
|
61
|
-
params.logDiscovery.info(`wide-area DNS-SD ${result.changed ? "updated" : "unchanged"} (${
|
|
69
|
+
params.logDiscovery.info(`wide-area DNS-SD ${result.changed ? "updated" : "unchanged"} (${wideAreaDomain} → ${result.zonePath})`);
|
|
62
70
|
}
|
|
63
71
|
catch (err) {
|
|
64
72
|
params.logDiscovery.warn(`wide-area discovery update failed: ${String(err)}`);
|
|
@@ -5,14 +5,14 @@ import { runExec } from "../process/exec.js";
|
|
|
5
5
|
export function formatBonjourInstanceName(displayName) {
|
|
6
6
|
const trimmed = displayName.trim();
|
|
7
7
|
if (!trimmed)
|
|
8
|
-
return "
|
|
9
|
-
if (/
|
|
8
|
+
return "OpenClaw";
|
|
9
|
+
if (/openclaw/i.test(trimmed))
|
|
10
10
|
return trimmed;
|
|
11
|
-
return `${trimmed} (
|
|
11
|
+
return `${trimmed} (OpenClaw)`;
|
|
12
12
|
}
|
|
13
13
|
export function resolveBonjourCliPath(opts = {}) {
|
|
14
14
|
const env = opts.env ?? process.env;
|
|
15
|
-
const envPath = env.
|
|
15
|
+
const envPath = env.OPENCLAW_CLI_PATH?.trim();
|
|
16
16
|
if (envPath)
|
|
17
17
|
return envPath;
|
|
18
18
|
const statSync = opts.statSync ?? fs.statSync;
|
|
@@ -26,7 +26,7 @@ export function resolveBonjourCliPath(opts = {}) {
|
|
|
26
26
|
};
|
|
27
27
|
const execPath = opts.execPath ?? process.execPath;
|
|
28
28
|
const execDir = path.dirname(execPath);
|
|
29
|
-
const siblingCli = path.join(execDir, "
|
|
29
|
+
const siblingCli = path.join(execDir, "openclaw");
|
|
30
30
|
if (isFile(siblingCli))
|
|
31
31
|
return siblingCli;
|
|
32
32
|
const argv = opts.argv ?? process.argv;
|
|
@@ -38,14 +38,14 @@ export function resolveBonjourCliPath(opts = {}) {
|
|
|
38
38
|
const distCli = path.join(cwd, "dist", "index.js");
|
|
39
39
|
if (isFile(distCli))
|
|
40
40
|
return distCli;
|
|
41
|
-
const binCli = path.join(cwd, "bin", "
|
|
41
|
+
const binCli = path.join(cwd, "bin", "openclaw");
|
|
42
42
|
if (isFile(binCli))
|
|
43
43
|
return binCli;
|
|
44
44
|
return undefined;
|
|
45
45
|
}
|
|
46
46
|
export async function resolveTailnetDnsHint(opts) {
|
|
47
47
|
const env = opts?.env ?? process.env;
|
|
48
|
-
const envRaw = env.
|
|
48
|
+
const envRaw = env.OPENCLAW_TAILNET_DNS?.trim();
|
|
49
49
|
const envValue = envRaw && envRaw.length > 0 ? envRaw.replace(/\.$/, "") : "";
|
|
50
50
|
if (envValue)
|
|
51
51
|
return envValue;
|
|
@@ -36,7 +36,7 @@ export function createHooksRequestHandler(opts) {
|
|
|
36
36
|
if (fromQuery) {
|
|
37
37
|
logHooks.warn("Hook token provided via query parameter is deprecated for security reasons. " +
|
|
38
38
|
"Tokens in URLs appear in logs, browser history, and referrer headers. " +
|
|
39
|
-
"Use Authorization: Bearer <token> or X-
|
|
39
|
+
"Use Authorization: Bearer <token> or X-OpenClaw-Token header instead.");
|
|
40
40
|
}
|
|
41
41
|
if (req.method !== "POST") {
|
|
42
42
|
res.statusCode = 405;
|
|
@@ -6,7 +6,7 @@ import { buildConfigSchema } from "../../config/schema.js";
|
|
|
6
6
|
import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
|
|
7
7
|
import { formatDoctorNonInteractiveHint, writeRestartSentinel, } from "../../infra/restart-sentinel.js";
|
|
8
8
|
import { listChannelPlugins } from "../../channels/plugins/index.js";
|
|
9
|
-
import {
|
|
9
|
+
import { loadOpenClawPlugins } from "../../plugins/loader.js";
|
|
10
10
|
import { ErrorCodes, errorShape, formatValidationErrors, validateConfigApplyParams, validateConfigGetParams, validateConfigPatchParams, validateConfigSchemaParams, validateConfigSetParams, } from "../protocol/index.js";
|
|
11
11
|
function resolveBaseHash(params) {
|
|
12
12
|
const raw = params?.baseHash;
|
|
@@ -50,7 +50,7 @@ export const configHandlers = {
|
|
|
50
50
|
}
|
|
51
51
|
const cfg = loadConfig();
|
|
52
52
|
const workspaceDir = resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg));
|
|
53
|
-
const pluginRegistry =
|
|
53
|
+
const pluginRegistry = loadOpenClawPlugins({
|
|
54
54
|
config: cfg,
|
|
55
55
|
workspaceDir,
|
|
56
56
|
logger: {
|
|
@@ -6,7 +6,7 @@ const DEFAULT_LIMIT = 500;
|
|
|
6
6
|
const DEFAULT_MAX_BYTES = 250_000;
|
|
7
7
|
const MAX_LIMIT = 5000;
|
|
8
8
|
const MAX_BYTES = 1_000_000;
|
|
9
|
-
const ROLLING_LOG_RE = /^
|
|
9
|
+
const ROLLING_LOG_RE = /^openclaw-\d{4}-\d{2}-\d{2}\.log$/;
|
|
10
10
|
function clamp(value, min, max) {
|
|
11
11
|
return Math.max(min, Math.min(max, value));
|
|
12
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveOpenClawPackageRoot } from "../../infra/openclaw-root.js";
|
|
2
2
|
import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
|
|
3
3
|
import { formatDoctorNonInteractiveHint, writeRestartSentinel, } from "../../infra/restart-sentinel.js";
|
|
4
4
|
import { runGatewayUpdate } from "../../infra/update-runner.js";
|
|
@@ -25,7 +25,7 @@ export const updateHandlers = {
|
|
|
25
25
|
: undefined;
|
|
26
26
|
let result;
|
|
27
27
|
try {
|
|
28
|
-
const root = (await
|
|
28
|
+
const root = (await resolveOpenClawPackageRoot({
|
|
29
29
|
moduleUrl: import.meta.url,
|
|
30
30
|
argv1: process.argv[1],
|
|
31
31
|
cwd: process.cwd(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { loadOpenClawPlugins } from "../plugins/loader.js";
|
|
2
2
|
export function loadGatewayPlugins(params) {
|
|
3
|
-
const pluginRegistry =
|
|
3
|
+
const pluginRegistry = loadOpenClawPlugins({
|
|
4
4
|
config: params.cfg,
|
|
5
5
|
workspaceDir: params.workspaceDir,
|
|
6
6
|
logger: {
|
|
@@ -48,7 +48,7 @@ export function createGatewayReloadHandlers(params) {
|
|
|
48
48
|
}
|
|
49
49
|
if (plan.restartGmailWatcher) {
|
|
50
50
|
await stopGmailWatcher().catch(() => { });
|
|
51
|
-
if (!isTruthyEnvValue(process.env.
|
|
51
|
+
if (!isTruthyEnvValue(process.env.OPENCLAW_SKIP_GMAIL_WATCHER)) {
|
|
52
52
|
try {
|
|
53
53
|
const gmailResult = await startGmailWatcher(nextConfig);
|
|
54
54
|
if (gmailResult.started) {
|
|
@@ -65,13 +65,13 @@ export function createGatewayReloadHandlers(params) {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
else {
|
|
68
|
-
params.logHooks.info("skipping gmail watcher restart (
|
|
68
|
+
params.logHooks.info("skipping gmail watcher restart (OPENCLAW_SKIP_GMAIL_WATCHER=1)");
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
if (plan.restartChannels.size > 0) {
|
|
72
|
-
if (isTruthyEnvValue(process.env.
|
|
73
|
-
isTruthyEnvValue(process.env.
|
|
74
|
-
params.logChannels.info("skipping channel reload (
|
|
72
|
+
if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_CHANNELS) ||
|
|
73
|
+
isTruthyEnvValue(process.env.OPENCLAW_SKIP_PROVIDERS)) {
|
|
74
|
+
params.logChannels.info("skipping channel reload (OPENCLAW_SKIP_CHANNELS=1 or OPENCLAW_SKIP_PROVIDERS=1)");
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
77
|
const restartChannel = async (name) => {
|
|
@@ -36,16 +36,16 @@ export async function resolveGatewayRuntimeConfig(params) {
|
|
|
36
36
|
const hasPassword = typeof resolvedAuth.password === "string" && resolvedAuth.password.trim().length > 0;
|
|
37
37
|
const hasSharedSecret = (authMode === "token" && hasToken) || (authMode === "password" && hasPassword);
|
|
38
38
|
const hooksConfig = resolveHooksConfig(params.cfg);
|
|
39
|
-
const canvasHostEnabled = process.env.
|
|
39
|
+
const canvasHostEnabled = process.env.OPENCLAW_SKIP_CANVAS_HOST !== "1" && params.cfg.canvasHost?.enabled !== false;
|
|
40
40
|
assertGatewayAuthConfigured(resolvedAuth);
|
|
41
41
|
if (tailscaleMode === "funnel" && authMode !== "password") {
|
|
42
|
-
throw new Error("tailscale funnel requires gateway auth mode=password (set gateway.auth.password or
|
|
42
|
+
throw new Error("tailscale funnel requires gateway auth mode=password (set gateway.auth.password or OPENCLAW_GATEWAY_PASSWORD)");
|
|
43
43
|
}
|
|
44
44
|
if (tailscaleMode !== "off" && !isLoopbackHost(bindHost)) {
|
|
45
45
|
throw new Error("tailscale serve/funnel requires gateway bind=loopback (127.0.0.1)");
|
|
46
46
|
}
|
|
47
47
|
if (!isLoopbackHost(bindHost) && !hasSharedSecret) {
|
|
48
|
-
throw new Error(`refusing to bind gateway to ${bindHost}:${params.port} without auth (set gateway.auth.token/password, or set
|
|
48
|
+
throw new Error(`refusing to bind gateway to ${bindHost}:${params.port} without auth (set gateway.auth.token/password, or set OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD)`);
|
|
49
49
|
}
|
|
50
50
|
return {
|
|
51
51
|
bindHost,
|