@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
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: soul-evil
|
|
3
3
|
description: "Swap SOUL.md with SOUL_EVIL.md during a purge window or by random chance"
|
|
4
|
-
homepage: https://docs.
|
|
4
|
+
homepage: https://docs.openclaw.ai/hooks/soul-evil
|
|
5
5
|
metadata:
|
|
6
6
|
{
|
|
7
|
-
"
|
|
7
|
+
"openclaw":
|
|
8
8
|
{
|
|
9
9
|
"emoji": "😈",
|
|
10
10
|
"events": ["agent:bootstrap"],
|
|
11
11
|
"requires": { "config": ["hooks.internal.entries.soul-evil.enabled"] },
|
|
12
|
-
"install": [{ "id": "bundled", "kind": "bundled", "label": "Bundled with
|
|
12
|
+
"install": [{ "id": "bundled", "kind": "bundled", "label": "Bundled with OpenClaw" }],
|
|
13
13
|
},
|
|
14
14
|
}
|
|
15
15
|
---
|
|
@@ -31,7 +31,7 @@ You can change the filename via hook config.
|
|
|
31
31
|
|
|
32
32
|
## Configuration
|
|
33
33
|
|
|
34
|
-
Add this to your config (`~/.
|
|
34
|
+
Add this to your config (`~/.openclaw/openclaw.json`):
|
|
35
35
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
@@ -67,5 +67,5 @@ Add this to your config (`~/.clawdbot/moltbot.json`):
|
|
|
67
67
|
## Enable
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
openclaw hooks enable soul-evil
|
|
71
71
|
```
|
|
@@ -2,7 +2,7 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
export function resolveBundledHooksDir() {
|
|
5
|
-
const override = process.env.
|
|
5
|
+
const override = process.env.OPENCLAW_BUNDLED_HOOKS_DIR?.trim();
|
|
6
6
|
if (override)
|
|
7
7
|
return override;
|
|
8
8
|
// bun --compile: ship a sibling `hooks/bundled/` next to the executable.
|
|
@@ -16,7 +16,7 @@ export function resolveBundledHooksDir() {
|
|
|
16
16
|
// ignore
|
|
17
17
|
}
|
|
18
18
|
// npm: resolve `<packageRoot>/dist/hooks/bundled` relative to this module (compiled hooks).
|
|
19
|
-
// This path works when installed via npm: node_modules/
|
|
19
|
+
// This path works when installed via npm: node_modules/openclaw/dist/hooks/bundled-dir.js
|
|
20
20
|
try {
|
|
21
21
|
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
22
22
|
const distBundled = path.join(moduleDir, "bundled");
|
package/dist/hooks/config.js
CHANGED
|
@@ -65,7 +65,7 @@ export function shouldIncludeHook(params) {
|
|
|
65
65
|
const { entry, config, eligibility } = params;
|
|
66
66
|
const hookKey = resolveHookKey(entry.hook.name, entry);
|
|
67
67
|
const hookConfig = resolveHookConfig(config, hookKey);
|
|
68
|
-
const pluginManaged = entry.hook.source === "
|
|
68
|
+
const pluginManaged = entry.hook.source === "openclaw-plugin";
|
|
69
69
|
const osList = entry.metadata?.os ?? [];
|
|
70
70
|
const remotePlatforms = eligibility?.remote?.platforms ?? [];
|
|
71
71
|
// Check if explicitly disabled
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import JSON5 from "json5";
|
|
2
|
-
import {
|
|
2
|
+
import { LEGACY_MANIFEST_KEYS, MANIFEST_KEY } from "../compat/legacy-names.js";
|
|
3
3
|
import { parseFrontmatterBlock } from "../markdown/frontmatter.js";
|
|
4
4
|
import { parseBooleanValue } from "../utils/boolean.js";
|
|
5
5
|
export function parseFrontmatter(content) {
|
|
@@ -52,7 +52,7 @@ function parseFrontmatterBool(value, fallback) {
|
|
|
52
52
|
const parsed = parseBooleanValue(value);
|
|
53
53
|
return parsed === undefined ? fallback : parsed;
|
|
54
54
|
}
|
|
55
|
-
export function
|
|
55
|
+
export function resolveOpenClawMetadata(frontmatter) {
|
|
56
56
|
const raw = getFrontmatterValue(frontmatter, "metadata");
|
|
57
57
|
if (!raw)
|
|
58
58
|
return undefined;
|
|
@@ -60,7 +60,15 @@ export function resolveMoltbotMetadata(frontmatter) {
|
|
|
60
60
|
const parsed = JSON5.parse(raw);
|
|
61
61
|
if (!parsed || typeof parsed !== "object")
|
|
62
62
|
return undefined;
|
|
63
|
-
const
|
|
63
|
+
const metadataRawCandidates = [MANIFEST_KEY, ...LEGACY_MANIFEST_KEYS];
|
|
64
|
+
let metadataRaw;
|
|
65
|
+
for (const key of metadataRawCandidates) {
|
|
66
|
+
const candidate = parsed[key];
|
|
67
|
+
if (candidate && typeof candidate === "object") {
|
|
68
|
+
metadataRaw = candidate;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
64
72
|
if (!metadataRaw || typeof metadataRaw !== "object")
|
|
65
73
|
return undefined;
|
|
66
74
|
const metadataObj = metadataRaw;
|
package/dist/hooks/gmail-ops.js
CHANGED
|
@@ -162,7 +162,7 @@ export async function runGmailSetup(opts) {
|
|
|
162
162
|
defaultRuntime.log(`- push endpoint: ${pushEndpoint}`);
|
|
163
163
|
defaultRuntime.log(`- hook url: ${hookUrl}`);
|
|
164
164
|
defaultRuntime.log(`- config: ${displayPath(CONFIG_PATH)}`);
|
|
165
|
-
defaultRuntime.log(`Next: ${formatCliCommand("
|
|
165
|
+
defaultRuntime.log(`Next: ${formatCliCommand("openclaw webhooks gmail run")}`);
|
|
166
166
|
}
|
|
167
167
|
export async function runGmailService(opts) {
|
|
168
168
|
await ensureDependency("gog", ["gogcli"]);
|
|
@@ -78,7 +78,7 @@ function spawnGogServe(cfg) {
|
|
|
78
78
|
return;
|
|
79
79
|
if (addressInUse) {
|
|
80
80
|
log.warn("gog serve failed to bind (address already in use); stopping restarts. " +
|
|
81
|
-
"Another watcher is likely running. Set
|
|
81
|
+
"Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
|
|
82
82
|
watcherProcess = null;
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
@@ -16,7 +16,7 @@ function normalizeInstallOptions(entry) {
|
|
|
16
16
|
let label = (spec.label ?? "").trim();
|
|
17
17
|
if (!label) {
|
|
18
18
|
if (spec.kind === "bundled") {
|
|
19
|
-
label = "Bundled with
|
|
19
|
+
label = "Bundled with OpenClaw";
|
|
20
20
|
}
|
|
21
21
|
else if (spec.kind === "npm" && spec.package) {
|
|
22
22
|
label = `Install ${spec.package} (npm)`;
|
|
@@ -34,7 +34,7 @@ function normalizeInstallOptions(entry) {
|
|
|
34
34
|
function buildHookStatus(entry, config, eligibility) {
|
|
35
35
|
const hookKey = resolveHookKey(entry);
|
|
36
36
|
const hookConfig = resolveHookConfig(config, hookKey);
|
|
37
|
-
const managedByPlugin = entry.hook.source === "
|
|
37
|
+
const managedByPlugin = entry.hook.source === "openclaw-plugin";
|
|
38
38
|
const disabled = managedByPlugin ? false : hookConfig?.enabled === false;
|
|
39
39
|
const always = entry.metadata?.always === true;
|
|
40
40
|
const emoji = entry.metadata?.emoji ?? entry.frontmatter.emoji;
|
package/dist/hooks/install.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import { MANIFEST_KEY } from "../compat/legacy-names.js";
|
|
5
5
|
import { runCommandWithTimeout } from "../process/exec.js";
|
|
6
6
|
import { CONFIG_DIR, resolveUserPath } from "../utils.js";
|
|
7
7
|
import { extractArchive, fileExists, readJsonFile, resolveArchiveKind, resolvePackedRootDir, } from "../infra/archive.js";
|
|
@@ -23,14 +23,14 @@ export function resolveHookInstallDir(hookId, hooksDir) {
|
|
|
23
23
|
const hooksBase = hooksDir ? resolveUserPath(hooksDir) : path.join(CONFIG_DIR, "hooks");
|
|
24
24
|
return path.join(hooksBase, safeDirName(hookId));
|
|
25
25
|
}
|
|
26
|
-
async function
|
|
27
|
-
const hooks = manifest
|
|
26
|
+
async function ensureOpenClawHooks(manifest) {
|
|
27
|
+
const hooks = manifest[MANIFEST_KEY]?.hooks;
|
|
28
28
|
if (!Array.isArray(hooks)) {
|
|
29
|
-
throw new Error("package.json missing
|
|
29
|
+
throw new Error("package.json missing openclaw.hooks");
|
|
30
30
|
}
|
|
31
31
|
const list = hooks.map((e) => (typeof e === "string" ? e.trim() : "")).filter(Boolean);
|
|
32
32
|
if (list.length === 0) {
|
|
33
|
-
throw new Error("package.json
|
|
33
|
+
throw new Error("package.json openclaw.hooks is empty");
|
|
34
34
|
}
|
|
35
35
|
return list;
|
|
36
36
|
}
|
|
@@ -72,7 +72,7 @@ async function installHookPackageFromDir(params) {
|
|
|
72
72
|
}
|
|
73
73
|
let hookEntries;
|
|
74
74
|
try {
|
|
75
|
-
hookEntries = await
|
|
75
|
+
hookEntries = await ensureOpenClawHooks(manifest);
|
|
76
76
|
}
|
|
77
77
|
catch (err) {
|
|
78
78
|
return { ok: false, error: String(err) };
|
|
@@ -209,7 +209,7 @@ export async function installHooksFromArchive(params) {
|
|
|
209
209
|
if (!resolveArchiveKind(archivePath)) {
|
|
210
210
|
return { ok: false, error: `unsupported archive: ${archivePath}` };
|
|
211
211
|
}
|
|
212
|
-
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
212
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-hook-"));
|
|
213
213
|
const extractDir = path.join(tmpDir, "extract");
|
|
214
214
|
await fs.mkdir(extractDir, { recursive: true });
|
|
215
215
|
logger.info?.(`Extracting ${archivePath}…`);
|
|
@@ -256,7 +256,7 @@ export async function installHooksFromNpmSpec(params) {
|
|
|
256
256
|
const spec = params.spec.trim();
|
|
257
257
|
if (!spec)
|
|
258
258
|
return { ok: false, error: "missing npm spec" };
|
|
259
|
-
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
259
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-hook-pack-"));
|
|
260
260
|
logger.info?.(`Downloading ${spec}…`);
|
|
261
261
|
const res = await runCommandWithTimeout(["npm", "pack", spec], {
|
|
262
262
|
timeoutMs: Math.max(timeoutMs, 300_000),
|
|
@@ -16,7 +16,7 @@ export async function generateSlugViaLLM(params) {
|
|
|
16
16
|
const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId);
|
|
17
17
|
const agentDir = resolveAgentDir(params.cfg, agentId);
|
|
18
18
|
// Create a temporary session file for this one-off LLM call
|
|
19
|
-
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "
|
|
19
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-slug-"));
|
|
20
20
|
tempSessionFile = path.join(tempDir, "session.jsonl");
|
|
21
21
|
const prompt = `Based on this conversation, generate a short 1-2 word filename slug (lowercase, hyphen-separated, no file extension).
|
|
22
22
|
|
package/dist/hooks/loader.js
CHANGED
|
@@ -17,7 +17,7 @@ import { shouldIncludeHook } from "./config.js";
|
|
|
17
17
|
* 1. Directory-based discovery (bundled, managed, workspace)
|
|
18
18
|
* 2. Legacy config handlers (backwards compatibility)
|
|
19
19
|
*
|
|
20
|
-
* @param cfg -
|
|
20
|
+
* @param cfg - OpenClaw configuration
|
|
21
21
|
* @param workspaceDir - Workspace directory for hook discovery
|
|
22
22
|
* @returns Number of handlers successfully loaded
|
|
23
23
|
*
|
|
@@ -12,7 +12,7 @@ function normalizePluginHookEntry(api, entry) {
|
|
|
12
12
|
...entry,
|
|
13
13
|
hook: {
|
|
14
14
|
...entry.hook,
|
|
15
|
-
source: "
|
|
15
|
+
source: "openclaw-plugin",
|
|
16
16
|
pluginId: api.id,
|
|
17
17
|
},
|
|
18
18
|
metadata: {
|
|
@@ -44,7 +44,7 @@ export async function registerPluginHooksFromDir(api, dir) {
|
|
|
44
44
|
const resolvedDir = resolveHookDir(api, dir);
|
|
45
45
|
const hooks = loadHookEntriesFromDir({
|
|
46
46
|
dir: resolvedDir,
|
|
47
|
-
source: "
|
|
47
|
+
source: "openclaw-plugin",
|
|
48
48
|
pluginId: api.id,
|
|
49
49
|
});
|
|
50
50
|
const result = {
|
package/dist/hooks/workspace.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { MANIFEST_KEY } from "../compat/legacy-names.js";
|
|
4
4
|
import { CONFIG_DIR, resolveUserPath } from "../utils.js";
|
|
5
5
|
import { resolveBundledHooksDir } from "./bundled-dir.js";
|
|
6
6
|
import { shouldIncludeHook } from "./config.js";
|
|
7
|
-
import { parseFrontmatter,
|
|
7
|
+
import { parseFrontmatter, resolveOpenClawMetadata, resolveHookInvocationPolicy, } from "./frontmatter.js";
|
|
8
8
|
function filterHookEntries(entries, config, eligibility) {
|
|
9
9
|
return entries.filter((entry) => shouldIncludeHook({ entry, config, eligibility }));
|
|
10
10
|
}
|
|
@@ -21,7 +21,7 @@ function readHookPackageManifest(dir) {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
function resolvePackageHooks(manifest) {
|
|
24
|
-
const raw = manifest
|
|
24
|
+
const raw = manifest[MANIFEST_KEY]?.hooks;
|
|
25
25
|
if (!Array.isArray(raw))
|
|
26
26
|
return [];
|
|
27
27
|
return raw.map((entry) => (typeof entry === "string" ? entry.trim() : "")).filter(Boolean);
|
|
@@ -128,7 +128,7 @@ export function loadHookEntriesFromDir(params) {
|
|
|
128
128
|
pluginId: params.pluginId,
|
|
129
129
|
},
|
|
130
130
|
frontmatter,
|
|
131
|
-
metadata:
|
|
131
|
+
metadata: resolveOpenClawMetadata(frontmatter),
|
|
132
132
|
invocation: resolveHookInvocationPolicy(frontmatter),
|
|
133
133
|
};
|
|
134
134
|
return entry;
|
|
@@ -145,23 +145,23 @@ function loadHookEntries(workspaceDir, opts) {
|
|
|
145
145
|
const bundledHooks = bundledHooksDir
|
|
146
146
|
? loadHooksFromDir({
|
|
147
147
|
dir: bundledHooksDir,
|
|
148
|
-
source: "
|
|
148
|
+
source: "openclaw-bundled",
|
|
149
149
|
})
|
|
150
150
|
: [];
|
|
151
151
|
const extraHooks = extraDirs.flatMap((dir) => {
|
|
152
152
|
const resolved = resolveUserPath(dir);
|
|
153
153
|
return loadHooksFromDir({
|
|
154
154
|
dir: resolved,
|
|
155
|
-
source: "
|
|
155
|
+
source: "openclaw-workspace", // Extra dirs treated as workspace
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
158
|
const managedHooks = loadHooksFromDir({
|
|
159
159
|
dir: managedHooksDir,
|
|
160
|
-
source: "
|
|
160
|
+
source: "openclaw-managed",
|
|
161
161
|
});
|
|
162
162
|
const workspaceHooks = loadHooksFromDir({
|
|
163
163
|
dir: workspaceHooksDir,
|
|
164
|
-
source: "
|
|
164
|
+
source: "openclaw-workspace",
|
|
165
165
|
});
|
|
166
166
|
const merged = new Map();
|
|
167
167
|
// Precedence: extra < bundled < managed < workspace (workspace wins)
|
|
@@ -185,7 +185,7 @@ function loadHookEntries(workspaceDir, opts) {
|
|
|
185
185
|
return {
|
|
186
186
|
hook,
|
|
187
187
|
frontmatter,
|
|
188
|
-
metadata:
|
|
188
|
+
metadata: resolveOpenClawMetadata(frontmatter),
|
|
189
189
|
invocation: resolveHookInvocationPolicy(frontmatter),
|
|
190
190
|
};
|
|
191
191
|
});
|
|
@@ -32,7 +32,7 @@ import { deliverReplies } from "./deliver.js";
|
|
|
32
32
|
import { normalizeAllowList, resolveRuntime } from "./runtime.js";
|
|
33
33
|
/**
|
|
34
34
|
* Try to detect remote host from an SSH wrapper script like:
|
|
35
|
-
* exec ssh -T
|
|
35
|
+
* exec ssh -T openclaw@192.168.64.3 /opt/homebrew/bin/imsg "$@"
|
|
36
36
|
* exec ssh -T mac-mini imsg "$@"
|
|
37
37
|
* Returns the user@host or host portion if found, undefined otherwise.
|
|
38
38
|
*/
|
|
@@ -43,7 +43,7 @@ async function detectRemoteHostFromCliPath(cliPath) {
|
|
|
43
43
|
? cliPath.replace(/^~/, process.env.HOME ?? "")
|
|
44
44
|
: cliPath;
|
|
45
45
|
const content = await fs.readFile(expanded, "utf8");
|
|
46
|
-
// Match user@host pattern first (e.g.,
|
|
46
|
+
// Match user@host pattern first (e.g., openclaw@192.168.64.3)
|
|
47
47
|
const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
|
|
48
48
|
if (userHostMatch)
|
|
49
49
|
return userHostMatch[1];
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import { ensureBinary } from "./infra/binaries.js";
|
|
|
13
13
|
import { loadDotEnv } from "./infra/dotenv.js";
|
|
14
14
|
import { normalizeEnv } from "./infra/env.js";
|
|
15
15
|
import { isMainModule } from "./infra/is-main.js";
|
|
16
|
-
import {
|
|
16
|
+
import { ensureOpenClawCliOnPath } from "./infra/path-env.js";
|
|
17
17
|
import { describePortOwner, ensurePortAvailable, handlePortError, PortInUseError, } from "./infra/ports.js";
|
|
18
18
|
import { assertSupportedRuntime } from "./infra/runtime-guard.js";
|
|
19
19
|
import { formatUncaughtError } from "./infra/errors.js";
|
|
@@ -23,7 +23,7 @@ import { runCommandWithTimeout, runExec } from "./process/exec.js";
|
|
|
23
23
|
import { assertWebChannel, normalizeE164, toWhatsappJid } from "./utils.js";
|
|
24
24
|
loadDotEnv({ quiet: true });
|
|
25
25
|
normalizeEnv();
|
|
26
|
-
|
|
26
|
+
ensureOpenClawCliOnPath();
|
|
27
27
|
// Capture all console output into structured logs while keeping stdout/stderr behavior.
|
|
28
28
|
enableConsoleCapture();
|
|
29
29
|
// Enforce the minimum supported runtime before doing any work.
|
|
@@ -39,11 +39,11 @@ if (isMain) {
|
|
|
39
39
|
// These log the error and exit gracefully instead of crashing without trace.
|
|
40
40
|
installUnhandledRejectionHandler();
|
|
41
41
|
process.on("uncaughtException", (error) => {
|
|
42
|
-
console.error("[
|
|
42
|
+
console.error("[openclaw] Uncaught exception:", formatUncaughtError(error));
|
|
43
43
|
process.exit(1);
|
|
44
44
|
});
|
|
45
45
|
void program.parseAsync(process.argv).catch((err) => {
|
|
46
|
-
console.error("[
|
|
46
|
+
console.error("[openclaw] CLI failed:", formatUncaughtError(err));
|
|
47
47
|
process.exit(1);
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { runCommandWithTimeout } from "../process/exec.js";
|
|
2
|
-
import {
|
|
2
|
+
import { resolveWideAreaDiscoveryDomain } from "./widearea-dns.js";
|
|
3
3
|
const DEFAULT_TIMEOUT_MS = 2000;
|
|
4
|
-
const
|
|
4
|
+
const GATEWAY_SERVICE_TYPE = "_openclaw-gw._tcp";
|
|
5
5
|
function decodeDnsSdEscapes(value) {
|
|
6
6
|
let decoded = false;
|
|
7
7
|
const bytes = [];
|
|
@@ -139,11 +139,11 @@ function parseDnsSdBrowse(stdout) {
|
|
|
139
139
|
const instances = new Set();
|
|
140
140
|
for (const raw of stdout.split("\n")) {
|
|
141
141
|
const line = raw.trim();
|
|
142
|
-
if (!line || !line.includes(
|
|
142
|
+
if (!line || !line.includes(GATEWAY_SERVICE_TYPE))
|
|
143
143
|
continue;
|
|
144
144
|
if (!line.includes("Add"))
|
|
145
145
|
continue;
|
|
146
|
-
const match = line.match(/
|
|
146
|
+
const match = line.match(/_openclaw-gw\._tcp\.?\s+(.+)$/);
|
|
147
147
|
if (match?.[1]) {
|
|
148
148
|
instances.add(decodeDnsSdEscapes(match[1].trim()));
|
|
149
149
|
}
|
|
@@ -199,13 +199,13 @@ function parseDnsSdResolve(stdout, instanceName) {
|
|
|
199
199
|
return beacon;
|
|
200
200
|
}
|
|
201
201
|
async function discoverViaDnsSd(domain, timeoutMs, run) {
|
|
202
|
-
const browse = await run(["dns-sd", "-B",
|
|
202
|
+
const browse = await run(["dns-sd", "-B", GATEWAY_SERVICE_TYPE, domain], {
|
|
203
203
|
timeoutMs,
|
|
204
204
|
});
|
|
205
205
|
const instances = parseDnsSdBrowse(browse.stdout);
|
|
206
206
|
const results = [];
|
|
207
207
|
for (const instance of instances) {
|
|
208
|
-
const resolved = await run(["dns-sd", "-L", instance,
|
|
208
|
+
const resolved = await run(["dns-sd", "-L", instance, GATEWAY_SERVICE_TYPE, domain], {
|
|
209
209
|
timeoutMs,
|
|
210
210
|
});
|
|
211
211
|
const parsed = parseDnsSdResolve(resolved.stdout, instance);
|
|
@@ -215,7 +215,7 @@ async function discoverViaDnsSd(domain, timeoutMs, run) {
|
|
|
215
215
|
return results;
|
|
216
216
|
}
|
|
217
217
|
async function discoverWideAreaViaTailnetDns(domain, timeoutMs, run) {
|
|
218
|
-
if (domain
|
|
218
|
+
if (!domain || domain === "local.")
|
|
219
219
|
return [];
|
|
220
220
|
const startedAt = Date.now();
|
|
221
221
|
const remainingMs = () => timeoutMs - (Date.now() - startedAt);
|
|
@@ -240,7 +240,7 @@ async function discoverWideAreaViaTailnetDns(domain, timeoutMs, run) {
|
|
|
240
240
|
return [];
|
|
241
241
|
// Keep scans bounded: this is a fallback and should not block long.
|
|
242
242
|
ips = ips.slice(0, 40);
|
|
243
|
-
const probeName =
|
|
243
|
+
const probeName = `${GATEWAY_SERVICE_TYPE}.${domain.replace(/\.$/, "")}`;
|
|
244
244
|
const concurrency = 6;
|
|
245
245
|
let nextIndex = 0;
|
|
246
246
|
let nameserver = null;
|
|
@@ -285,7 +285,7 @@ async function discoverWideAreaViaTailnetDns(domain, timeoutMs, run) {
|
|
|
285
285
|
const ptrName = ptr.trim().replace(/\.$/, "");
|
|
286
286
|
if (!ptrName)
|
|
287
287
|
continue;
|
|
288
|
-
const instanceName = ptrName.replace(/\.?
|
|
288
|
+
const instanceName = ptrName.replace(/\.?_openclaw-gw\._tcp\..*$/, "");
|
|
289
289
|
const srv = await run(["dig", "+short", "+time=1", "+tries=1", nameserverArg, ptrName, "SRV"], {
|
|
290
290
|
timeoutMs: Math.max(1, Math.min(350, budget)),
|
|
291
291
|
}).catch(() => null);
|
|
@@ -341,10 +341,10 @@ function parseAvahiBrowse(stdout) {
|
|
|
341
341
|
const line = raw.trimEnd();
|
|
342
342
|
if (!line)
|
|
343
343
|
continue;
|
|
344
|
-
if (line.startsWith("=") && line.includes(
|
|
344
|
+
if (line.startsWith("=") && line.includes(GATEWAY_SERVICE_TYPE)) {
|
|
345
345
|
if (current)
|
|
346
346
|
results.push(current);
|
|
347
|
-
const marker =
|
|
347
|
+
const marker = ` ${GATEWAY_SERVICE_TYPE}`;
|
|
348
348
|
const idx = line.indexOf(marker);
|
|
349
349
|
const left = idx >= 0 ? line.slice(0, idx).trim() : line;
|
|
350
350
|
const parts = left.split(/\s+/);
|
|
@@ -401,7 +401,7 @@ function parseAvahiBrowse(stdout) {
|
|
|
401
401
|
return results;
|
|
402
402
|
}
|
|
403
403
|
async function discoverViaAvahi(domain, timeoutMs, run) {
|
|
404
|
-
const args = ["avahi-browse", "-rt",
|
|
404
|
+
const args = ["avahi-browse", "-rt", GATEWAY_SERVICE_TYPE];
|
|
405
405
|
if (domain && domain !== "local.") {
|
|
406
406
|
// avahi-browse wants a plain domain (no trailing dot)
|
|
407
407
|
args.push("-d", domain.replace(/\.$/, ""));
|
|
@@ -416,8 +416,10 @@ export async function discoverGatewayBeacons(opts = {}) {
|
|
|
416
416
|
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
417
417
|
const platform = opts.platform ?? process.platform;
|
|
418
418
|
const run = opts.run ?? runCommandWithTimeout;
|
|
419
|
+
const wideAreaDomain = resolveWideAreaDiscoveryDomain({ configDomain: opts.wideAreaDomain });
|
|
419
420
|
const domainsRaw = Array.isArray(opts.domains) ? opts.domains : [];
|
|
420
|
-
const
|
|
421
|
+
const defaultDomains = ["local.", ...(wideAreaDomain ? [wideAreaDomain] : [])];
|
|
422
|
+
const domains = (domainsRaw.length > 0 ? domainsRaw : defaultDomains)
|
|
421
423
|
.map((d) => String(d).trim())
|
|
422
424
|
.filter(Boolean)
|
|
423
425
|
.map((d) => (d.endsWith(".") ? d : `${d}.`));
|
|
@@ -425,10 +427,12 @@ export async function discoverGatewayBeacons(opts = {}) {
|
|
|
425
427
|
if (platform === "darwin") {
|
|
426
428
|
const perDomain = await Promise.allSettled(domains.map(async (domain) => await discoverViaDnsSd(domain, timeoutMs, run)));
|
|
427
429
|
const discovered = perDomain.flatMap((r) => (r.status === "fulfilled" ? r.value : []));
|
|
428
|
-
const wantsWideArea = domains.includes(
|
|
429
|
-
const hasWideArea =
|
|
430
|
-
|
|
431
|
-
|
|
430
|
+
const wantsWideArea = wideAreaDomain ? domains.includes(wideAreaDomain) : false;
|
|
431
|
+
const hasWideArea = wideAreaDomain
|
|
432
|
+
? discovered.some((b) => b.domain === wideAreaDomain)
|
|
433
|
+
: false;
|
|
434
|
+
if (wantsWideArea && !hasWideArea && wideAreaDomain) {
|
|
435
|
+
const fallback = await discoverWideAreaViaTailnetDns(wideAreaDomain, timeoutMs, run).catch(() => []);
|
|
432
436
|
return [...discovered, ...fallback];
|
|
433
437
|
}
|
|
434
438
|
return discovered;
|
package/dist/infra/bonjour.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import os from "node:os";
|
|
2
1
|
import { logDebug, logWarn } from "../logger.js";
|
|
3
2
|
import { getLogger } from "../logging.js";
|
|
4
3
|
import { ignoreCiaoCancellationRejection } from "./bonjour-ciao.js";
|
|
@@ -6,7 +5,7 @@ import { formatBonjourError } from "./bonjour-errors.js";
|
|
|
6
5
|
import { isTruthyEnvValue } from "./env.js";
|
|
7
6
|
import { registerUnhandledRejectionHandler } from "./unhandled-rejections.js";
|
|
8
7
|
function isDisabledByEnv() {
|
|
9
|
-
if (isTruthyEnvValue(process.env.
|
|
8
|
+
if (isTruthyEnvValue(process.env.OPENCLAW_DISABLE_BONJOUR))
|
|
10
9
|
return true;
|
|
11
10
|
if (process.env.NODE_ENV === "test")
|
|
12
11
|
return true;
|
|
@@ -16,11 +15,11 @@ function isDisabledByEnv() {
|
|
|
16
15
|
}
|
|
17
16
|
function safeServiceName(name) {
|
|
18
17
|
const trimmed = name.trim();
|
|
19
|
-
return trimmed.length > 0 ? trimmed : "
|
|
18
|
+
return trimmed.length > 0 ? trimmed : "OpenClaw";
|
|
20
19
|
}
|
|
21
20
|
function prettifyInstanceName(name) {
|
|
22
21
|
const normalized = name.trim().replace(/\s+/g, " ");
|
|
23
|
-
return normalized.replace(/\s+\(
|
|
22
|
+
return normalized.replace(/\s+\(OpenClaw\)\s*$/i, "").trim() || normalized;
|
|
24
23
|
}
|
|
25
24
|
function serviceSummary(label, svc) {
|
|
26
25
|
let fqdn = "unknown";
|
|
@@ -56,14 +55,16 @@ export async function startGatewayBonjourAdvertiser(opts) {
|
|
|
56
55
|
// mDNS service instance names are single DNS labels; dots in hostnames (like
|
|
57
56
|
// `Mac.localdomain`) can confuse some resolvers/browsers and break discovery.
|
|
58
57
|
// Keep only the first label and normalize away a trailing `.local`.
|
|
59
|
-
const
|
|
60
|
-
.
|
|
58
|
+
const hostnameRaw = process.env.OPENCLAW_MDNS_HOSTNAME?.trim() ||
|
|
59
|
+
process.env.CLAWDBOT_MDNS_HOSTNAME?.trim() ||
|
|
60
|
+
"openclaw";
|
|
61
|
+
const hostname = hostnameRaw
|
|
61
62
|
.replace(/\.local$/i, "")
|
|
62
63
|
.split(".")[0]
|
|
63
|
-
.trim() || "
|
|
64
|
+
.trim() || "openclaw";
|
|
64
65
|
const instanceName = typeof opts.instanceName === "string" && opts.instanceName.trim()
|
|
65
66
|
? opts.instanceName.trim()
|
|
66
|
-
: `${hostname} (
|
|
67
|
+
: `${hostname} (OpenClaw)`;
|
|
67
68
|
const displayName = prettifyInstanceName(instanceName);
|
|
68
69
|
const txtBase = {
|
|
69
70
|
role: "gateway",
|
|
@@ -100,7 +101,7 @@ export async function startGatewayBonjourAdvertiser(opts) {
|
|
|
100
101
|
}
|
|
101
102
|
const gateway = responder.createService({
|
|
102
103
|
name: safeServiceName(instanceName),
|
|
103
|
-
type: "
|
|
104
|
+
type: "openclaw-gw",
|
|
104
105
|
protocol: "tcp" /* Protocol.TCP */,
|
|
105
106
|
port: opts.gatewayPort,
|
|
106
107
|
domain: "local",
|
|
@@ -2,7 +2,7 @@ import crypto from "node:crypto";
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
const DEFAULT_DIR = path.join(os.homedir(), ".
|
|
5
|
+
const DEFAULT_DIR = path.join(os.homedir(), ".openclaw", "identity");
|
|
6
6
|
const DEFAULT_FILE = path.join(DEFAULT_DIR, "device.json");
|
|
7
7
|
function ensureDir(filePath) {
|
|
8
8
|
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
package/dist/infra/dotenv.js
CHANGED
|
@@ -6,7 +6,7 @@ export function loadDotEnv(opts) {
|
|
|
6
6
|
const quiet = opts?.quiet ?? true;
|
|
7
7
|
// Load from process CWD first (dotenv default).
|
|
8
8
|
dotenv.config({ quiet });
|
|
9
|
-
// Then load global fallback: ~/.
|
|
9
|
+
// Then load global fallback: ~/.openclaw/.env (or OPENCLAW_STATE_DIR/.env),
|
|
10
10
|
// without overriding any env vars already present.
|
|
11
11
|
const globalEnvPath = path.join(resolveConfigDir(process.env), ".env");
|
|
12
12
|
if (!fs.existsSync(globalEnvPath))
|
|
@@ -8,8 +8,8 @@ const DEFAULT_SECURITY = "deny";
|
|
|
8
8
|
const DEFAULT_ASK = "on-miss";
|
|
9
9
|
const DEFAULT_ASK_FALLBACK = "deny";
|
|
10
10
|
const DEFAULT_AUTO_ALLOW_SKILLS = false;
|
|
11
|
-
const DEFAULT_SOCKET = "~/.
|
|
12
|
-
const DEFAULT_FILE = "~/.
|
|
11
|
+
const DEFAULT_SOCKET = "~/.openclaw/exec-approvals.sock";
|
|
12
|
+
const DEFAULT_FILE = "~/.openclaw/exec-approvals.json";
|
|
13
13
|
export const DEFAULT_SAFE_BINS = ["jq", "grep", "cut", "sort", "uniq", "head", "tail", "tr", "wc"];
|
|
14
14
|
function hashExecApprovalsRaw(raw) {
|
|
15
15
|
return crypto
|
|
@@ -42,6 +42,7 @@ function isGatewayArgv(args) {
|
|
|
42
42
|
"dist/index.js",
|
|
43
43
|
"dist/index.mjs",
|
|
44
44
|
"dist/entry.js",
|
|
45
|
+
"openclaw.mjs",
|
|
45
46
|
"dist/entry.mjs",
|
|
46
47
|
"scripts/run-node.mjs",
|
|
47
48
|
"src/index.ts",
|
|
@@ -50,7 +51,7 @@ function isGatewayArgv(args) {
|
|
|
50
51
|
return true;
|
|
51
52
|
}
|
|
52
53
|
const exe = normalized[0] ?? "";
|
|
53
|
-
return exe.endsWith("/
|
|
54
|
+
return exe.endsWith("/openclaw") || exe === "openclaw";
|
|
54
55
|
}
|
|
55
56
|
function readLinuxCmdline(pid) {
|
|
56
57
|
try {
|
|
@@ -126,7 +127,7 @@ function resolveGatewayLockPath(env) {
|
|
|
126
127
|
export async function acquireGatewayLock(opts = {}) {
|
|
127
128
|
const env = opts.env ?? process.env;
|
|
128
129
|
const allowInTests = opts.allowInTests === true;
|
|
129
|
-
if (env.
|
|
130
|
+
if (env.OPENCLAW_ALLOW_MULTI_GATEWAY === "1" ||
|
|
130
131
|
(!allowInTests && (env.VITEST || env.NODE_ENV === "test"))) {
|
|
131
132
|
return null;
|
|
132
133
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
const CORE_PACKAGE_NAMES = new Set(["
|
|
4
|
+
const CORE_PACKAGE_NAMES = new Set(["openclaw"]);
|
|
5
5
|
async function readPackageName(dir) {
|
|
6
6
|
try {
|
|
7
7
|
const raw = await fs.readFile(path.join(dir, "package.json"), "utf-8");
|
|
@@ -37,7 +37,7 @@ function candidateDirsFromArgv1(argv1) {
|
|
|
37
37
|
}
|
|
38
38
|
return candidates;
|
|
39
39
|
}
|
|
40
|
-
export async function
|
|
40
|
+
export async function resolveOpenClawPackageRoot(opts) {
|
|
41
41
|
const candidates = [];
|
|
42
42
|
if (opts.moduleUrl) {
|
|
43
43
|
candidates.push(path.dirname(fileURLToPath(opts.moduleUrl)));
|