@gguf/pigbot 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1206 -12
- package/LICENSE +2 -2
- package/README.md +347 -37
- package/assets/chrome-extension/README.md +5 -5
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +5 -5
- package/assets/chrome-extension/options.js +1 -1
- package/dist/acp/client.js +5 -5
- package/dist/acp/server.js +3 -3
- package/dist/acp/types.js +2 -2
- package/dist/agents/agent-paths.js +6 -6
- package/dist/agents/agent-scope.js +1 -1
- package/dist/agents/anthropic-payload-log.js +2 -2
- package/dist/agents/auth-profiles/doctor.js +1 -1
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/bash-tools.exec.js +1 -1
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cache-trace.js +5 -5
- package/dist/agents/channel-tools.js +31 -2
- package/dist/agents/cli-runner/helpers.js +3 -3
- package/dist/agents/cli-runner.js +3 -3
- package/dist/agents/context.js +4 -4
- package/dist/agents/docs-path.js +3 -3
- package/dist/agents/identity.js +1 -1
- package/dist/agents/live-auth-keys.js +2 -2
- package/dist/agents/memory-search.js +5 -0
- package/dist/agents/minimax-vlm.js +1 -1
- package/dist/agents/model-auth.js +2 -1
- package/dist/agents/model-catalog.js +4 -4
- package/dist/agents/model-selection.js +1 -1
- package/dist/agents/models-config.js +3 -3
- package/dist/agents/models-config.providers.js +40 -8
- package/dist/agents/{moltbot-tools.js → openclaw-tools.js} +1 -1
- package/dist/agents/pi-embedded-helpers/errors.js +20 -0
- package/dist/agents/pi-embedded-helpers/openai.js +1 -1
- package/dist/agents/pi-embedded-helpers.js +1 -1
- package/dist/agents/pi-embedded-runner/cache-ttl.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +8 -8
- package/dist/agents/pi-embedded-runner/model.js +2 -2
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
- package/dist/agents/pi-embedded-runner/run.js +31 -5
- package/dist/agents/pi-embedded-runner/session-manager-cache.js +1 -1
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +2 -2
- package/dist/agents/pi-tools.js +5 -5
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/sandbox/browser.js +16 -11
- package/dist/agents/sandbox/constants.js +7 -7
- package/dist/agents/sandbox/docker.js +17 -14
- package/dist/agents/sandbox/runtime-status.js +1 -1
- package/dist/agents/session-transcript-repair.js +1 -1
- package/dist/agents/session-write-lock.js +2 -2
- package/dist/agents/skills/bundled-dir.js +1 -1
- package/dist/agents/skills/config.js +2 -1
- package/dist/agents/skills/frontmatter.js +11 -3
- package/dist/agents/skills/workspace.js +6 -6
- package/dist/agents/synthetic-models.js +8 -0
- package/dist/agents/system-prompt.js +21 -21
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.js +2 -2
- package/dist/agents/tools/browser-tool.js +5 -5
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/memory-tool.js +1 -1
- package/dist/agents/tools/sessions-send-tool.js +2 -2
- package/dist/agents/tools/web-search.js +7 -7
- package/dist/agents/transcript-policy.js +2 -1
- package/dist/agents/workspace.js +3 -3
- package/dist/auto-reply/commands-registry.data.js +1 -1
- package/dist/auto-reply/reply/agent-runner-execution.js +1 -1
- package/dist/auto-reply/reply/bash-command.js +2 -2
- package/dist/auto-reply/reply/commands-context-report.js +2 -2
- package/dist/auto-reply/reply/commands-session.js +4 -4
- package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +21 -0
- package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
- package/dist/auto-reply/reply/get-reply.js +1 -1
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/mentions.js +3 -2
- package/dist/auto-reply/reply/normalize-reply.js +12 -4
- package/dist/auto-reply/reply/reply-dispatcher.js +8 -1
- package/dist/auto-reply/reply/reply-elevated.js +1 -1
- package/dist/auto-reply/reply/stage-sandbox-media.js +1 -1
- package/dist/auto-reply/status.js +2 -2
- package/dist/browser/chrome.js +13 -13
- package/dist/browser/chrome.profile-decoration.js +5 -5
- package/dist/browser/client-fetch.js +3 -3
- package/dist/browser/config.js +11 -11
- package/dist/browser/constants.js +3 -3
- package/dist/browser/control-service.js +1 -1
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/profiles-service.js +2 -2
- package/dist/browser/profiles.js +1 -1
- package/dist/browser/pw-tools-core.downloads.js +1 -1
- package/dist/browser/pw-tools-core.interactions.js +5 -5
- package/dist/browser/pw-tools-core.responses.js +1 -1
- package/dist/browser/routes/agent.act.js +2 -2
- package/dist/browser/routes/agent.debug.js +1 -1
- package/dist/browser/server-context.js +9 -9
- package/dist/browser/server.js +2 -2
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +24 -19
- package/dist/canvas-host/a2ui/index.html +28 -28
- package/dist/canvas-host/a2ui.js +14 -18
- package/dist/canvas-host/server.js +33 -35
- package/dist/channels/plugins/catalog.js +7 -7
- package/dist/channels/plugins/helpers.js +2 -2
- package/dist/channels/plugins/onboarding/imessage.js +1 -1
- package/dist/channels/plugins/onboarding/signal.js +2 -2
- package/dist/channels/plugins/onboarding/slack.js +5 -5
- package/dist/channels/plugins/onboarding/telegram.js +3 -3
- package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
- package/dist/channels/plugins/pairing-message.js +1 -1
- package/dist/channels/plugins/status-issues/bluebubbles.js +1 -1
- package/dist/channels/plugins/status-issues/whatsapp.js +2 -2
- package/dist/channels/registry.js +1 -1
- package/dist/cli/acp-cli.js +2 -2
- package/dist/cli/argv.js +2 -2
- package/dist/cli/banner.js +10 -11
- package/dist/cli/browser-cli-actions-input/register.files-downloads.js +1 -1
- package/dist/cli/browser-cli-examples.js +29 -29
- package/dist/cli/browser-cli-extension.js +5 -5
- package/dist/cli/browser-cli-manage.js +4 -4
- package/dist/cli/browser-cli.js +3 -3
- package/dist/cli/channel-options.js +1 -1
- package/dist/cli/channels-cli.js +1 -1
- package/dist/cli/cli-name.js +4 -8
- package/dist/cli/command-format.js +3 -3
- package/dist/cli/config-cli.js +2 -2
- package/dist/cli/cron-cli/register.js +1 -1
- package/dist/cli/daemon-cli/install.js +2 -2
- package/dist/cli/daemon-cli/register.js +1 -1
- package/dist/cli/daemon-cli/shared.js +11 -13
- package/dist/cli/daemon-cli/status.gather.js +2 -5
- package/dist/cli/daemon-cli/status.print.js +9 -17
- package/dist/cli/directory-cli.js +1 -1
- package/dist/cli/dns-cli.js +20 -13
- package/dist/cli/docs-cli.js +2 -2
- package/dist/cli/exec-approvals-cli.js +2 -2
- package/dist/cli/gateway-cli/dev.js +7 -5
- package/dist/cli/gateway-cli/register.js +12 -6
- package/dist/cli/gateway-cli/run.js +15 -14
- package/dist/cli/gateway-cli/shared.js +5 -5
- package/dist/cli/hooks-cli.js +3 -3
- package/dist/cli/logs-cli.js +3 -3
- package/dist/cli/memory-cli.js +36 -5
- package/dist/cli/models-cli.js +1 -1
- package/dist/cli/node-cli/daemon.js +3 -3
- package/dist/cli/node-cli/register.js +1 -1
- package/dist/cli/nodes-cli/register.canvas.js +1 -1
- package/dist/cli/nodes-cli/register.js +1 -1
- package/dist/cli/nodes-screen.js +1 -1
- package/dist/cli/pairing-cli.js +3 -3
- package/dist/cli/plugin-registry.js +2 -2
- package/dist/cli/plugins-cli.js +3 -3
- package/dist/cli/profile.js +9 -9
- package/dist/cli/program/config-guard.js +1 -1
- package/dist/cli/program/help.js +14 -11
- package/dist/cli/program/preaction.js +1 -1
- package/dist/cli/program/register.agent.js +15 -12
- package/dist/cli/program/register.configure.js +1 -1
- package/dist/cli/program/register.maintenance.js +4 -4
- package/dist/cli/program/register.message.js +5 -5
- package/dist/cli/program/register.onboard.js +5 -3
- package/dist/cli/program/register.setup.js +3 -3
- package/dist/cli/program/register.status-health-sessions.js +13 -13
- package/dist/cli/program/register.subclis.js +7 -2
- package/dist/cli/route.js +1 -1
- package/dist/cli/run-main.js +3 -3
- package/dist/cli/sandbox-cli.js +19 -19
- package/dist/cli/security-cli.js +4 -4
- package/dist/cli/skills-cli.js +3 -3
- package/dist/cli/system-cli.js +1 -1
- package/dist/cli/tagline.js +11 -9
- package/dist/cli/tui-cli.js +1 -1
- package/dist/cli/update-cli.js +48 -45
- package/dist/cli/webhooks-cli.js +6 -6
- package/dist/commands/agent-via-gateway.js +1 -1
- package/dist/commands/agent.js +1 -1
- package/dist/commands/agents.command-shared.js +1 -1
- package/dist/commands/agents.commands.add.js +2 -2
- package/dist/commands/agents.commands.list.js +1 -1
- package/dist/commands/auth-choice-options.js +10 -0
- package/dist/commands/auth-choice.apply.api-providers.js +49 -1
- package/dist/commands/auth-choice.apply.openai.js +1 -1
- package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
- package/dist/commands/auth-choice.preferred-provider.js +1 -0
- package/dist/commands/channels/shared.js +1 -1
- package/dist/commands/channels/status.js +1 -1
- package/dist/commands/chutes-oauth.js +1 -1
- package/dist/commands/configure.channels.js +2 -2
- package/dist/commands/configure.gateway.js +1 -1
- package/dist/commands/configure.wizard.js +21 -21
- package/dist/commands/daemon-install-helpers.js +2 -2
- package/dist/commands/dashboard.js +2 -2
- package/dist/commands/docs.js +5 -5
- package/dist/commands/doctor-auth.js +5 -5
- package/dist/commands/doctor-config-flow.js +64 -7
- package/dist/commands/doctor-format.js +5 -5
- package/dist/commands/doctor-gateway-daemon-flow.js +7 -4
- package/dist/commands/doctor-gateway-services.js +72 -65
- package/dist/commands/doctor-platform-notes.js +51 -9
- package/dist/commands/doctor-sandbox.js +4 -4
- package/dist/commands/doctor-security.js +7 -7
- package/dist/commands/doctor-state-integrity.js +9 -7
- package/dist/commands/doctor-state-migrations.js +1 -1
- package/dist/commands/doctor-ui.js +2 -2
- package/dist/commands/doctor-update.js +5 -5
- package/dist/commands/doctor-workspace-status.js +2 -2
- package/dist/commands/doctor-workspace.js +5 -27
- package/dist/commands/doctor.js +11 -11
- package/dist/commands/gateway-status/helpers.js +2 -2
- package/dist/commands/gateway-status.js +9 -3
- package/dist/commands/health.js +2 -2
- package/dist/commands/models/auth.js +1 -1
- package/dist/commands/models/list.probe.js +2 -2
- package/dist/commands/models/list.registry.js +4 -4
- package/dist/commands/models/list.status-command.js +4 -4
- package/dist/commands/node-daemon-install-helpers.js +1 -1
- package/dist/commands/onboard-auth.config-core.js +65 -1
- package/dist/commands/onboard-auth.credentials.js +14 -2
- package/dist/commands/onboard-auth.js +2 -2
- package/dist/commands/onboard-channels.js +5 -5
- package/dist/commands/onboard-helpers.js +9 -8
- package/dist/commands/onboard-hooks.js +4 -4
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +21 -1
- package/dist/commands/onboard-non-interactive/local.js +1 -1
- package/dist/commands/onboard-non-interactive/remote.js +1 -1
- package/dist/commands/onboard-non-interactive.js +1 -1
- package/dist/commands/onboard-remote.js +7 -3
- package/dist/commands/onboard-skills.js +2 -2
- package/dist/commands/onboard.js +3 -3
- package/dist/commands/onboarding/plugin-install.js +2 -2
- package/dist/commands/reset.js +3 -3
- package/dist/commands/sandbox-display.js +1 -1
- package/dist/commands/sandbox-explain.js +2 -2
- package/dist/commands/setup.js +9 -7
- package/dist/commands/signal-install.js +2 -2
- package/dist/commands/status-all/diagnosis.js +1 -1
- package/dist/commands/status-all/report-lines.js +1 -1
- package/dist/commands/status-all.js +5 -5
- package/dist/commands/status.command.js +9 -9
- package/dist/commands/status.gateway-probe.js +2 -2
- package/dist/commands/status.scan.js +2 -2
- package/dist/commands/status.update.js +3 -3
- package/dist/commands/uninstall.js +4 -4
- package/dist/compat/legacy-names.js +8 -6
- package/dist/config/config.js +1 -1
- package/dist/config/io.js +13 -14
- package/dist/config/paths.js +107 -33
- package/dist/config/schema.js +14 -12
- package/dist/config/sessions/store.js +1 -1
- package/dist/config/sessions/transcript.js +1 -1
- package/dist/config/types.js +1 -1
- package/dist/config/validation.js +2 -2
- package/dist/config/version.js +4 -4
- package/dist/config/zod-schema.agent-runtime.js +1 -0
- package/dist/config/zod-schema.js +3 -2
- package/dist/config/zod-schema.session.js +6 -1
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/index-BKPyesll.css +1 -0
- package/dist/control-ui/assets/{index-CxLFx0Ae.js → index-DFDgq9AK.js} +397 -366
- package/dist/control-ui/assets/index-DFDgq9AK.js.map +1 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.svg +22 -0
- package/dist/control-ui/index.html +7 -5
- package/dist/daemon/constants.js +19 -25
- package/dist/daemon/inspect.js +64 -28
- package/dist/daemon/launchd.js +7 -7
- package/dist/daemon/node-service.js +14 -14
- package/dist/daemon/paths.js +3 -3
- package/dist/daemon/program-args.js +1 -1
- package/dist/daemon/schtasks.js +6 -6
- package/dist/daemon/service-env.js +25 -21
- package/dist/daemon/systemd-hints.js +1 -1
- package/dist/daemon/systemd-unit.js +1 -1
- package/dist/daemon/systemd.js +6 -6
- package/dist/discord/send.outbound.js +4 -4
- package/dist/discord/send.shared.js +32 -1
- package/dist/discord/targets.js +79 -0
- package/dist/entry.js +9 -8
- package/dist/gateway/auth.js +6 -3
- package/dist/gateway/call.js +3 -1
- package/dist/gateway/control-ui.js +4 -4
- package/dist/gateway/hooks.js +3 -1
- package/dist/gateway/http-utils.js +5 -3
- package/dist/gateway/openai-http.js +3 -3
- package/dist/gateway/openresponses-http.js +4 -4
- package/dist/gateway/protocol/client-info.js +5 -5
- package/dist/gateway/server/ws-connection/message-handler.js +1 -1
- package/dist/gateway/server-browser.js +2 -2
- package/dist/gateway/server-constants.js +2 -2
- package/dist/gateway/server-cron.js +1 -1
- package/dist/gateway/server-discovery-runtime.js +12 -4
- package/dist/gateway/server-discovery.js +7 -7
- package/dist/gateway/server-http.js +1 -1
- package/dist/gateway/server-methods/config.js +2 -2
- package/dist/gateway/server-methods/logs.js +1 -1
- package/dist/gateway/server-methods/update.js +2 -2
- package/dist/gateway/server-plugins.js +2 -2
- package/dist/gateway/server-reload-handlers.js +5 -5
- package/dist/gateway/server-runtime-config.js +3 -3
- package/dist/gateway/server-startup.js +6 -6
- package/dist/gateway/server.impl.js +8 -7
- package/dist/gateway/session-utils.fs.js +2 -1
- package/dist/gateway/test-helpers.mocks.js +8 -6
- package/dist/gateway/test-helpers.server.js +28 -28
- package/dist/gateway/tools-invoke-http.js +40 -4
- package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
- package/dist/hooks/bundled/command-logger/HOOK.md +12 -12
- package/dist/hooks/bundled/command-logger/handler.js +2 -1
- package/dist/hooks/bundled/session-memory/HOOK.md +30 -7
- package/dist/hooks/bundled/session-memory/handler.js +19 -12
- package/dist/hooks/bundled/soul-evil/HOOK.md +5 -5
- package/dist/hooks/bundled-dir.js +2 -2
- package/dist/hooks/config.js +1 -1
- package/dist/hooks/frontmatter.js +11 -3
- package/dist/hooks/gmail-ops.js +1 -1
- package/dist/hooks/gmail-watcher.js +1 -1
- package/dist/hooks/hooks-status.js +2 -2
- package/dist/hooks/install.js +8 -8
- package/dist/hooks/internal-hooks.js +1 -1
- package/dist/hooks/llm-slug-generator.js +1 -1
- package/dist/hooks/loader.js +1 -1
- package/dist/hooks/plugin-hooks.js +2 -2
- package/dist/hooks/workspace.js +9 -9
- package/dist/imessage/monitor/monitor-provider.js +2 -2
- package/dist/index.js +4 -4
- package/dist/infra/bonjour-discovery.js +21 -17
- package/dist/infra/bonjour.js +10 -9
- package/dist/infra/device-identity.js +1 -1
- package/dist/infra/diagnostic-flags.js +1 -1
- package/dist/infra/dotenv.js +1 -1
- package/dist/infra/exec-approvals.js +2 -2
- package/dist/infra/gateway-lock.js +3 -2
- package/dist/infra/machine-name.js +1 -1
- package/dist/infra/{moltbot-root.js → openclaw-root.js} +2 -2
- package/dist/infra/outbound/outbound-session.js +18 -0
- package/dist/infra/outbound/targets.js +1 -1
- package/dist/infra/path-env.js +10 -9
- package/dist/infra/ports-format.js +3 -2
- package/dist/infra/ports.js +2 -2
- package/dist/infra/provider-usage.auth.js +33 -0
- package/dist/infra/provider-usage.fetch.claude.js +1 -1
- package/dist/infra/provider-usage.fetch.minimax.js +1 -1
- package/dist/infra/provider-usage.load.js +6 -0
- package/dist/infra/provider-usage.shared.js +2 -0
- package/dist/infra/restart-sentinel.js +1 -1
- package/dist/infra/restart.js +4 -4
- package/dist/infra/runtime-guard.js +2 -2
- package/dist/infra/shell-env.js +4 -4
- package/dist/infra/ssh-config.js +2 -1
- package/dist/infra/ssh-tunnel.js +8 -1
- package/dist/infra/state-migrations.js +165 -6
- package/dist/infra/system-presence.js +1 -1
- package/dist/infra/tailscale.js +1 -1
- package/dist/infra/tls/gateway.js +1 -1
- package/dist/infra/unhandled-rejections.js +56 -33
- package/dist/infra/update-check.js +1 -1
- package/dist/infra/update-global.js +21 -11
- package/dist/infra/update-runner.js +7 -7
- package/dist/infra/update-startup.js +3 -3
- package/dist/infra/voicewake.js +1 -1
- package/dist/infra/warnings.js +1 -1
- package/dist/infra/widearea-dns.js +31 -14
- package/dist/logging/logger.js +4 -4
- package/dist/macos/gateway-daemon.js +9 -6
- package/dist/macos/relay-smoke.js +1 -1
- package/dist/macos/relay.js +6 -6
- package/dist/media/host.js +1 -1
- package/dist/media/image-ops.js +3 -3
- package/dist/media/input-files.js +1 -1
- package/dist/media/mime.js +3 -0
- package/dist/media-understanding/apply.js +278 -1
- package/dist/media-understanding/attachments.js +1 -1
- package/dist/media-understanding/providers/image.js +2 -2
- package/dist/media-understanding/runner.js +1 -1
- package/dist/memory/batch-gemini.js +2 -2
- package/dist/memory/batch-openai.js +1 -1
- package/dist/memory/embeddings-gemini.js +1 -1
- package/dist/memory/embeddings.js +1 -1
- package/dist/memory/internal.js +49 -16
- package/dist/memory/manager-cache-key.js +1 -0
- package/dist/memory/manager.js +62 -10
- package/dist/memory/sync-memory-files.js +1 -1
- package/dist/node-host/runner.js +6 -6
- package/dist/pairing/pairing-messages.js +2 -2
- package/dist/plugins/bundled-dir.js +1 -1
- package/dist/plugins/cli.js +2 -2
- package/dist/plugins/config-state.js +60 -0
- package/dist/plugins/discovery.js +14 -12
- package/dist/plugins/install.js +8 -8
- package/dist/plugins/loader.js +4 -7
- package/dist/plugins/manifest-registry.js +4 -4
- package/dist/plugins/manifest.js +4 -7
- package/dist/plugins/providers.js +2 -2
- package/dist/plugins/registry.js +2 -2
- package/dist/plugins/runtime.js +1 -1
- package/dist/plugins/status.js +2 -2
- package/dist/plugins/tools.js +2 -2
- package/dist/plugins/update.js +3 -3
- package/dist/providers/qwen-portal-oauth.js +1 -1
- package/dist/routing/resolve-route.js +2 -0
- package/dist/routing/session-key.js +5 -0
- package/dist/security/audit-extra.js +2 -2
- package/dist/security/audit.js +7 -7
- package/dist/shared/text/reasoning-tags.js +44 -3
- package/dist/slack/monitor/commands.js +4 -3
- package/dist/slack/monitor/slash.js +62 -59
- package/dist/slack/monitor.test-helpers.js +1 -1
- package/dist/telegram/accounts.js +1 -1
- package/dist/telegram/bot/delivery.js +26 -3
- package/dist/telegram/bot/helpers.js +13 -2
- package/dist/telegram/bot-message-context.js +8 -4
- package/dist/telegram/bot-message-dispatch.js +36 -5
- package/dist/telegram/bot-native-commands.js +50 -11
- package/dist/telegram/bot.js +7 -5
- package/dist/telegram/download.js +1 -1
- package/dist/telegram/monitor.js +19 -1
- package/dist/telegram/network-config.js +2 -2
- package/dist/telegram/network-errors.js +4 -0
- package/dist/terminal/links.js +1 -1
- package/dist/tts/tts.js +12 -6
- package/dist/tui/gateway-chat.js +3 -3
- package/dist/tui/tui.js +1 -1
- package/dist/utils.js +12 -3
- package/dist/version.js +3 -3
- package/dist/web/active-listener.js +1 -1
- package/dist/web/auth-store.js +1 -1
- package/dist/web/auto-reply/monitor/broadcast.js +2 -0
- package/dist/web/auto-reply/monitor/process-message.js +1 -1
- package/dist/web/auto-reply/monitor.js +1 -1
- package/dist/web/login.js +1 -1
- package/dist/web/session.js +2 -2
- package/dist/wizard/onboarding.finalize.js +24 -21
- package/dist/wizard/onboarding.gateway-config.js +1 -1
- package/dist/wizard/onboarding.js +11 -11
- package/docs/CNAME +1 -1
- package/docs/_config.yml +3 -3
- package/docs/_layouts/default.html +9 -9
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/theme.js +1 -1
- package/docs/automation/auth-monitoring.md +7 -7
- package/docs/automation/cron-jobs.md +19 -19
- package/docs/automation/cron-vs-heartbeat.md +7 -7
- package/docs/automation/gmail-pubsub.md +25 -25
- package/docs/automation/poll.md +7 -7
- package/docs/automation/webhook.md +5 -5
- package/docs/bedrock.md +10 -10
- package/docs/brave-search.md +1 -1
- package/docs/broadcast-groups.md +6 -6
- package/docs/channels/bluebubbles.md +12 -12
- package/docs/channels/discord.md +15 -15
- package/docs/channels/googlechat.md +16 -16
- package/docs/channels/imessage.md +13 -13
- package/docs/channels/index.md +4 -4
- package/docs/channels/line.md +6 -6
- package/docs/channels/location.md +1 -1
- package/docs/channels/matrix.md +14 -14
- package/docs/channels/mattermost.md +8 -8
- package/docs/channels/msteams.md +26 -26
- package/docs/channels/nextcloud-talk.md +7 -7
- package/docs/channels/nostr.md +9 -9
- package/docs/channels/signal.md +9 -9
- package/docs/channels/slack.md +16 -16
- package/docs/channels/telegram.md +23 -23
- package/docs/channels/tlon.md +5 -5
- package/docs/channels/troubleshooting.md +2 -2
- package/docs/channels/twitch.md +14 -14
- package/docs/channels/whatsapp.md +26 -26
- package/docs/channels/zalo.md +8 -8
- package/docs/channels/zalouser.md +12 -12
- package/docs/cli/acp.md +24 -24
- package/docs/cli/agent.md +6 -6
- package/docs/cli/agents.md +12 -12
- package/docs/cli/approvals.md +14 -14
- package/docs/cli/browser.md +24 -24
- package/docs/cli/channels.md +21 -21
- package/docs/cli/config.md +15 -15
- package/docs/cli/configure.md +6 -6
- package/docs/cli/cron.md +5 -5
- package/docs/cli/dashboard.md +4 -4
- package/docs/cli/devices.md +13 -13
- package/docs/cli/directory.md +12 -12
- package/docs/cli/dns.md +5 -6
- package/docs/cli/docs.md +5 -5
- package/docs/cli/doctor.md +11 -11
- package/docs/cli/gateway.md +26 -26
- package/docs/cli/health.md +5 -5
- package/docs/cli/hooks.md +35 -35
- package/docs/cli/index.md +42 -42
- package/docs/cli/logs.md +6 -6
- package/docs/cli/memory.md +12 -11
- package/docs/cli/message.md +11 -11
- package/docs/cli/models.md +15 -15
- package/docs/cli/node.md +14 -14
- package/docs/cli/nodes.md +14 -14
- package/docs/cli/onboard.md +7 -7
- package/docs/cli/pairing.md +4 -4
- package/docs/cli/plugins.md +16 -16
- package/docs/cli/reset.md +5 -5
- package/docs/cli/sandbox.md +28 -28
- package/docs/cli/security.md +6 -6
- package/docs/cli/sessions.md +5 -5
- package/docs/cli/setup.md +6 -6
- package/docs/cli/skills.md +6 -6
- package/docs/cli/status.md +7 -7
- package/docs/cli/system.md +6 -6
- package/docs/cli/tui.md +5 -5
- package/docs/cli/uninstall.md +5 -5
- package/docs/cli/update.md +20 -20
- package/docs/cli/voicecall.md +9 -9
- package/docs/cli/webhooks.md +5 -5
- package/docs/concepts/agent-loop.md +5 -5
- package/docs/concepts/agent-workspace.md +27 -27
- package/docs/concepts/agent.md +12 -12
- package/docs/concepts/architecture.md +2 -2
- package/docs/concepts/channel-routing.md +5 -5
- package/docs/concepts/compaction.md +5 -5
- package/docs/concepts/context.md +6 -6
- package/docs/concepts/group-messages.md +7 -7
- package/docs/concepts/groups.md +5 -5
- package/docs/concepts/markdown-formatting.md +3 -3
- package/docs/concepts/memory.md +41 -19
- package/docs/concepts/messages.md +4 -4
- package/docs/concepts/model-failover.md +14 -14
- package/docs/concepts/model-providers.md +25 -24
- package/docs/concepts/models.md +27 -27
- package/docs/concepts/multi-agent.md +31 -31
- package/docs/concepts/oauth.md +22 -22
- package/docs/concepts/presence.md +2 -2
- package/docs/concepts/retry.md +1 -1
- package/docs/concepts/session-pruning.md +1 -1
- package/docs/concepts/session-tool.md +4 -4
- package/docs/concepts/session.md +18 -16
- package/docs/concepts/streaming.md +3 -3
- package/docs/concepts/system-prompt.md +11 -11
- package/docs/concepts/timezone.md +2 -2
- package/docs/concepts/typebox.md +3 -3
- package/docs/concepts/typing-indicators.md +2 -2
- package/docs/concepts/usage-tracking.md +3 -3
- package/docs/date-time.md +2 -2
- package/docs/debug/node-issue.md +6 -6
- package/docs/debugging.md +18 -18
- package/docs/diagnostics/flags.md +7 -7
- package/docs/docs.json +21 -5
- package/docs/environment.md +7 -7
- package/docs/experiments/plans/cron-add-hardening.md +1 -1
- package/docs/experiments/plans/openresponses-gateway.md +2 -2
- package/docs/experiments/research/memory.md +12 -12
- package/docs/gateway/authentication.md +22 -22
- package/docs/gateway/background-process.md +2 -2
- package/docs/gateway/bonjour.md +25 -25
- package/docs/gateway/bridge-protocol.md +2 -2
- package/docs/gateway/cli-backends.md +12 -12
- package/docs/gateway/configuration-examples.md +26 -25
- package/docs/gateway/configuration.md +155 -153
- package/docs/gateway/discovery.md +10 -10
- package/docs/gateway/doctor.md +27 -27
- package/docs/gateway/gateway-lock.md +1 -1
- package/docs/gateway/health.md +11 -11
- package/docs/gateway/heartbeat.md +5 -5
- package/docs/gateway/index.md +63 -63
- package/docs/gateway/local-models.md +2 -2
- package/docs/gateway/logging.md +8 -8
- package/docs/gateway/multiple-gateways.md +24 -24
- package/docs/gateway/openai-http-api.md +12 -12
- package/docs/gateway/openresponses-http-api.md +12 -12
- package/docs/gateway/pairing.md +9 -9
- package/docs/gateway/protocol.md +4 -4
- package/docs/gateway/remote-gateway-readme.md +10 -10
- package/docs/gateway/remote.md +4 -4
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +7 -7
- package/docs/gateway/sandboxing.md +6 -6
- package/docs/gateway/security/formal-verification.md +67 -14
- package/docs/gateway/security/index.md +56 -59
- package/docs/gateway/tailscale.md +10 -10
- package/docs/gateway/tools-invoke-http-api.md +5 -5
- package/docs/gateway/troubleshooting.md +112 -112
- package/docs/help/faq.md +338 -338
- package/docs/help/troubleshooting.md +16 -16
- package/docs/hooks/soul-evil.md +2 -2
- package/docs/hooks.md +62 -62
- package/docs/index.md +45 -36
- package/docs/install/ansible.md +35 -35
- package/docs/install/development-channels.md +10 -10
- package/docs/install/docker.md +45 -45
- package/docs/install/index.md +33 -33
- package/docs/install/installer.md +24 -24
- package/docs/install/migrating.md +36 -36
- package/docs/install/nix.md +18 -18
- package/docs/install/node.md +4 -4
- package/docs/install/uninstall.md +29 -29
- package/docs/install/updating.md +51 -51
- package/docs/logging.md +59 -59
- package/docs/multi-agent-sandbox-tools.md +15 -15
- package/docs/network.md +1 -1
- package/docs/nodes/audio.md +2 -2
- package/docs/nodes/camera.md +18 -18
- package/docs/nodes/images.md +4 -4
- package/docs/nodes/index.md +57 -57
- package/docs/nodes/location-command.md +2 -2
- package/docs/nodes/media-understanding.md +5 -5
- package/docs/nodes/talk.md +1 -1
- package/docs/nodes/voicewake.md +3 -3
- package/docs/northflank.mdx +9 -9
- package/docs/perplexity.md +2 -2
- package/docs/platforms/android.md +14 -14
- package/docs/platforms/digitalocean.md +26 -26
- package/docs/platforms/exe-dev.md +68 -130
- package/docs/platforms/fly.md +33 -33
- package/docs/platforms/gcp.md +58 -58
- package/docs/platforms/hetzner.md +45 -45
- package/docs/platforms/index.md +8 -8
- package/docs/platforms/ios.md +13 -13
- package/docs/platforms/linux.md +11 -11
- package/docs/platforms/mac/bundled-gateway.md +14 -14
- package/docs/platforms/mac/canvas.md +14 -14
- package/docs/platforms/mac/child-process.md +5 -5
- package/docs/platforms/mac/dev-setup.md +10 -10
- package/docs/platforms/mac/health.md +2 -2
- package/docs/platforms/mac/icon.md +1 -1
- package/docs/platforms/mac/logging.md +4 -4
- package/docs/platforms/mac/menu-bar.md +1 -1
- package/docs/platforms/mac/peekaboo.md +9 -9
- package/docs/platforms/mac/permissions.md +1 -1
- package/docs/platforms/mac/release.md +18 -18
- package/docs/platforms/mac/remote.md +14 -14
- package/docs/platforms/mac/signing.md +7 -7
- package/docs/platforms/mac/skills.md +4 -4
- package/docs/platforms/mac/webchat.md +1 -1
- package/docs/platforms/mac/xpc.md +4 -4
- package/docs/platforms/macos-vm.md +27 -27
- package/docs/platforms/macos.md +16 -16
- package/docs/platforms/oracle.md +35 -35
- package/docs/platforms/raspberry-pi.md +22 -22
- package/docs/platforms/windows.md +11 -11
- package/docs/plugin.md +65 -65
- package/docs/plugins/agent-tools.md +1 -1
- package/docs/plugins/manifest.md +4 -4
- package/docs/plugins/voice-call.md +12 -12
- package/docs/plugins/zalouser.md +9 -9
- package/docs/prose.md +9 -9
- package/docs/providers/anthropic.md +16 -16
- package/docs/providers/claude-max-api-proxy.md +4 -4
- package/docs/providers/deepgram.md +2 -2
- package/docs/providers/github-copilot.md +11 -11
- package/docs/providers/glm.md +4 -4
- package/docs/providers/index.md +4 -3
- package/docs/providers/minimax.md +9 -9
- package/docs/providers/models.md +3 -3
- package/docs/providers/moonshot.md +15 -4
- package/docs/providers/ollama.md +11 -11
- package/docs/providers/openai.md +6 -6
- package/docs/providers/opencode.md +3 -3
- package/docs/providers/openrouter.md +3 -3
- package/docs/providers/qwen.md +6 -6
- package/docs/providers/synthetic.md +4 -4
- package/docs/providers/venice.md +23 -23
- package/docs/providers/vercel-ai-gateway.md +4 -4
- package/docs/providers/xiaomi.md +62 -0
- package/docs/providers/zai.md +5 -5
- package/docs/railway.mdx +8 -8
- package/docs/refactor/exec-host.md +5 -5
- package/docs/refactor/plugin-sdk.md +12 -12
- package/docs/refactor/strict-config.md +11 -11
- package/docs/reference/AGENTS.default.md +17 -17
- package/docs/reference/RELEASING.md +29 -29
- package/docs/reference/api-usage-costs.md +6 -6
- package/docs/reference/device-models.md +7 -7
- package/docs/reference/rpc.md +3 -3
- package/docs/reference/session-management-compaction.md +19 -19
- package/docs/reference/templates/AGENTS.dev.md +1 -1
- package/docs/reference/templates/BOOT.md +1 -1
- package/docs/reference/templates/IDENTITY.md +1 -1
- package/docs/reference/templates/TOOLS.dev.md +1 -1
- package/docs/reference/templates/USER.dev.md +2 -2
- package/docs/reference/test.md +2 -2
- package/docs/reference/transcript-hygiene.md +1 -1
- package/docs/render.mdx +13 -13
- package/docs/scripts.md +1 -1
- package/docs/security/formal-verification.md +66 -13
- package/docs/start/getting-started.md +29 -29
- package/docs/start/hubs.md +2 -2
- package/docs/start/lore.md +14 -14
- package/docs/start/onboarding.md +7 -7
- package/docs/start/{clawd.md → openclaw.md} +35 -35
- package/docs/start/pairing.md +10 -10
- package/docs/start/setup.md +22 -22
- package/docs/start/showcase.md +32 -32
- package/docs/start/wizard.md +30 -30
- package/docs/testing.md +56 -56
- package/docs/token-use.md +7 -7
- package/docs/tools/agent-send.md +10 -10
- package/docs/tools/browser-linux-troubleshooting.md +16 -16
- package/docs/tools/browser-login.md +6 -6
- package/docs/tools/browser.md +126 -126
- package/docs/tools/chrome-extension.md +17 -17
- package/docs/tools/clawdhub.md +7 -7
- package/docs/tools/creating-skills.md +6 -6
- package/docs/tools/exec-approvals.md +5 -5
- package/docs/tools/exec.md +4 -4
- package/docs/tools/firecrawl.md +2 -2
- package/docs/tools/index.md +13 -13
- package/docs/tools/llm-task.md +2 -2
- package/docs/tools/lobster.md +13 -13
- package/docs/tools/skills-config.md +2 -2
- package/docs/tools/skills.md +31 -31
- package/docs/tools/slash-commands.md +8 -8
- package/docs/tools/web.md +8 -8
- package/docs/tts.md +11 -11
- package/docs/tui.md +7 -7
- package/docs/vps.md +1 -1
- package/docs/web/control-ui.md +8 -8
- package/docs/web/dashboard.md +6 -6
- package/docs/web/index.md +5 -5
- package/extensions/bluebubbles/index.ts +3 -3
- package/extensions/bluebubbles/package.json +5 -5
- package/extensions/bluebubbles/src/accounts.ts +9 -9
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +6 -6
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +17 -17
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/config-schema.ts +1 -1
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +48 -48
- package/extensions/bluebubbles/src/monitor.ts +6 -6
- package/extensions/bluebubbles/src/onboarding.ts +9 -9
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/runtime.ts +1 -1
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/README.md +3 -3
- package/extensions/copilot-proxy/index.ts +1 -1
- package/extensions/copilot-proxy/package.json +4 -4
- package/extensions/diagnostics-otel/index.ts +3 -3
- package/extensions/diagnostics-otel/package.json +4 -4
- package/extensions/diagnostics-otel/src/service.test.ts +15 -15
- package/extensions/diagnostics-otel/src/service.ts +85 -85
- package/extensions/discord/index.ts +3 -3
- package/extensions/discord/package.json +4 -4
- package/extensions/discord/src/channel.ts +1 -1
- package/extensions/discord/src/runtime.ts +1 -1
- package/extensions/google-antigravity-auth/README.md +3 -3
- package/extensions/google-antigravity-auth/index.ts +2 -2
- package/extensions/google-antigravity-auth/package.json +4 -4
- package/extensions/google-gemini-cli-auth/README.md +5 -5
- package/extensions/google-gemini-cli-auth/index.ts +3 -3
- package/extensions/google-gemini-cli-auth/oauth.ts +4 -4
- package/extensions/google-gemini-cli-auth/package.json +4 -4
- package/extensions/googlechat/index.ts +4 -4
- package/extensions/googlechat/node_modules/.bin/openclaw +16 -0
- package/extensions/googlechat/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/googlechat/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/googlechat/package.json +7 -7
- package/extensions/googlechat/src/accounts.ts +9 -9
- package/extensions/googlechat/src/actions.ts +8 -8
- package/extensions/googlechat/src/api.ts +1 -1
- package/extensions/googlechat/src/channel.ts +23 -23
- package/extensions/googlechat/src/monitor.ts +9 -9
- package/extensions/googlechat/src/onboarding.ts +11 -11
- package/extensions/googlechat/src/runtime.ts +1 -1
- package/extensions/googlechat/src/types.config.ts +1 -1
- package/extensions/imessage/index.ts +3 -3
- package/extensions/imessage/package.json +4 -4
- package/extensions/imessage/src/channel.ts +1 -1
- package/extensions/imessage/src/runtime.ts +1 -1
- package/extensions/line/index.ts +3 -3
- package/extensions/line/node_modules/.bin/openclaw +16 -0
- package/extensions/line/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/line/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/line/package.json +6 -6
- package/extensions/line/src/card-command.ts +3 -3
- package/extensions/line/src/channel.logout.test.ts +4 -4
- package/extensions/line/src/channel.sendPayload.test.ts +8 -8
- package/extensions/line/src/channel.ts +5 -5
- package/extensions/line/src/runtime.ts +1 -1
- package/extensions/llm-task/README.md +4 -4
- package/extensions/llm-task/index.ts +2 -2
- package/extensions/llm-task/package.json +4 -4
- package/extensions/llm-task/src/llm-task-tool.ts +6 -6
- package/extensions/lobster/README.md +7 -7
- package/extensions/lobster/index.ts +2 -2
- package/extensions/lobster/package.json +3 -3
- package/extensions/lobster/src/lobster-tool.test.ts +7 -7
- package/extensions/lobster/src/lobster-tool.ts +2 -2
- package/extensions/matrix/CHANGELOG.md +14 -9
- package/extensions/matrix/index.ts +3 -3
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -5
- package/extensions/matrix/node_modules/.bin/markdown-it.CMD +0 -5
- package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +0 -13
- package/extensions/matrix/node_modules/.bin/openclaw +16 -0
- package/extensions/matrix/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/matrix/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/matrix/package.json +6 -6
- package/extensions/matrix/src/actions.ts +1 -1
- package/extensions/matrix/src/channel.directory.test.ts +1 -1
- package/extensions/matrix/src/channel.ts +1 -1
- package/extensions/matrix/src/config-schema.ts +1 -1
- package/extensions/matrix/src/directory-live.ts +1 -1
- package/extensions/matrix/src/group-mentions.ts +1 -1
- package/extensions/matrix/src/matrix/accounts.ts +1 -1
- package/extensions/matrix/src/matrix/actions/client.ts +1 -1
- package/extensions/matrix/src/matrix/client/config.ts +1 -1
- package/extensions/matrix/src/matrix/deps.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/allowlist.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/auto-join.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/events.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/handler.ts +5 -5
- package/extensions/matrix/src/matrix/monitor/index.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/location.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/media.test.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/replies.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/rooms.ts +1 -1
- package/extensions/matrix/src/matrix/poll-types.ts +1 -1
- package/extensions/matrix/src/matrix/send/client.ts +1 -1
- package/extensions/matrix/src/matrix/send.test.ts +1 -1
- package/extensions/matrix/src/matrix/send.ts +1 -1
- package/extensions/matrix/src/onboarding.ts +2 -2
- package/extensions/matrix/src/outbound.ts +1 -1
- package/extensions/matrix/src/resolve-targets.ts +1 -1
- package/extensions/matrix/src/runtime.ts +1 -1
- package/extensions/matrix/src/tool-actions.ts +1 -1
- package/extensions/mattermost/index.ts +3 -3
- package/extensions/mattermost/package.json +5 -5
- package/extensions/mattermost/src/channel.ts +1 -1
- package/extensions/mattermost/src/config-schema.ts +1 -1
- package/extensions/mattermost/src/group-mentions.ts +1 -1
- package/extensions/mattermost/src/mattermost/accounts.ts +9 -9
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +4 -4
- package/extensions/mattermost/src/onboarding-helpers.ts +4 -4
- package/extensions/mattermost/src/onboarding.ts +4 -4
- package/extensions/mattermost/src/runtime.ts +1 -1
- package/extensions/mattermost/src/types.ts +1 -1
- package/extensions/memory-core/index.ts +3 -3
- package/extensions/memory-core/node_modules/.bin/openclaw +16 -0
- package/extensions/memory-core/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/memory-core/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/memory-core/package.json +6 -6
- package/extensions/memory-lancedb/config.ts +26 -2
- package/extensions/memory-lancedb/index.test.ts +3 -3
- package/extensions/memory-lancedb/index.ts +4 -4
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -5
- package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +0 -5
- package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +0 -13
- package/extensions/memory-lancedb/{clawdbot.plugin.json → openclaw.plugin.json} +1 -1
- package/extensions/memory-lancedb/package.json +4 -4
- package/extensions/msteams/CHANGELOG.md +12 -7
- package/extensions/msteams/index.ts +3 -3
- package/extensions/msteams/node_modules/.bin/openclaw +16 -0
- package/extensions/msteams/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/msteams/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/msteams/package.json +6 -6
- package/extensions/msteams/src/attachments.test.ts +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +3 -3
- package/extensions/msteams/src/conversation-store-fs.test.ts +6 -5
- package/extensions/msteams/src/directory-live.ts +1 -1
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/media-helpers.ts +1 -1
- package/extensions/msteams/src/messenger.test.ts +1 -1
- package/extensions/msteams/src/messenger.ts +1 -1
- package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -1
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +3 -3
- package/extensions/msteams/src/onboarding.ts +11 -11
- package/extensions/msteams/src/outbound.ts +1 -1
- package/extensions/msteams/src/policy.test.ts +1 -1
- package/extensions/msteams/src/policy.ts +2 -2
- package/extensions/msteams/src/polls-store.test.ts +1 -1
- package/extensions/msteams/src/polls.test.ts +6 -5
- package/extensions/msteams/src/polls.ts +9 -8
- package/extensions/msteams/src/probe.test.ts +1 -1
- package/extensions/msteams/src/probe.ts +1 -1
- package/extensions/msteams/src/reply-dispatcher.ts +3 -3
- package/extensions/msteams/src/runtime.ts +1 -1
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +5 -5
- package/extensions/msteams/src/token.ts +1 -1
- package/extensions/nextcloud-talk/index.ts +3 -3
- package/extensions/nextcloud-talk/package.json +5 -5
- package/extensions/nextcloud-talk/src/accounts.ts +2 -2
- package/extensions/nextcloud-talk/src/channel.ts +8 -8
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
- package/extensions/nextcloud-talk/src/inbound.ts +8 -8
- package/extensions/nextcloud-talk/src/monitor.ts +1 -1
- package/extensions/nextcloud-talk/src/onboarding.ts +2 -2
- package/extensions/nextcloud-talk/src/policy.ts +2 -2
- package/extensions/nextcloud-talk/src/room-info.ts +1 -1
- package/extensions/nextcloud-talk/src/runtime.ts +1 -1
- package/extensions/nextcloud-talk/src/types.ts +1 -1
- package/extensions/nostr/CHANGELOG.md +9 -4
- package/extensions/nostr/README.md +5 -5
- package/extensions/nostr/index.ts +6 -6
- package/extensions/nostr/node_modules/.bin/openclaw +16 -0
- package/extensions/nostr/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/nostr/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/nostr/package.json +6 -6
- package/extensions/nostr/src/channel.ts +2 -2
- package/extensions/nostr/src/config-schema.ts +1 -1
- package/extensions/nostr/src/nostr-state-store.test.ts +9 -8
- package/extensions/nostr/src/runtime.ts +1 -1
- package/extensions/nostr/src/types.ts +4 -4
- package/extensions/open-prose/index.ts +2 -2
- package/extensions/open-prose/package.json +3 -3
- package/extensions/open-prose/skills/prose/SKILL.md +5 -5
- package/extensions/open-prose/skills/prose/prose.md +4 -4
- package/extensions/qwen-portal-auth/README.md +3 -3
- package/extensions/qwen-portal-auth/index.ts +1 -1
- package/extensions/signal/index.ts +3 -3
- package/extensions/signal/package.json +4 -4
- package/extensions/signal/src/channel.ts +1 -1
- package/extensions/signal/src/runtime.ts +1 -1
- package/extensions/slack/index.ts +3 -3
- package/extensions/slack/package.json +4 -4
- package/extensions/slack/src/channel.ts +1 -1
- package/extensions/slack/src/runtime.ts +1 -1
- package/extensions/telegram/index.ts +3 -3
- package/extensions/telegram/package.json +4 -4
- package/extensions/telegram/src/channel.ts +3 -3
- package/extensions/telegram/src/runtime.ts +1 -1
- package/extensions/tlon/README.md +3 -3
- package/extensions/tlon/index.ts +3 -3
- package/extensions/tlon/package.json +5 -5
- package/extensions/tlon/src/channel.ts +15 -15
- package/extensions/tlon/src/config-schema.ts +1 -1
- package/extensions/tlon/src/monitor/discovery.ts +1 -1
- package/extensions/tlon/src/monitor/history.ts +1 -1
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +4 -4
- package/extensions/tlon/src/runtime.ts +1 -1
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/twitch/CHANGELOG.md +6 -1
- package/extensions/twitch/README.md +8 -8
- package/extensions/twitch/index.ts +3 -3
- package/extensions/twitch/node_modules/.bin/openclaw +16 -0
- package/extensions/twitch/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/twitch/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/twitch/package.json +5 -5
- package/extensions/twitch/src/actions.ts +1 -1
- package/extensions/twitch/src/config-schema.ts +1 -1
- package/extensions/twitch/src/config.ts +3 -3
- package/extensions/twitch/src/monitor.ts +3 -3
- package/extensions/twitch/src/onboarding.test.ts +1 -1
- package/extensions/twitch/src/onboarding.ts +13 -13
- package/extensions/twitch/src/outbound.test.ts +2 -2
- package/extensions/twitch/src/outbound.ts +2 -2
- package/extensions/twitch/src/plugin.test.ts +2 -2
- package/extensions/twitch/src/plugin.ts +9 -9
- package/extensions/twitch/src/runtime.ts +1 -1
- package/extensions/twitch/src/send.test.ts +2 -2
- package/extensions/twitch/src/send.ts +5 -5
- package/extensions/twitch/src/token.test.ts +12 -12
- package/extensions/twitch/src/token.ts +7 -7
- package/extensions/twitch/src/twitch-client.ts +4 -4
- package/extensions/twitch/src/types.ts +3 -3
- package/extensions/twitch/src/utils/markdown.ts +1 -1
- package/extensions/voice-call/CHANGELOG.md +16 -11
- package/extensions/voice-call/README.md +16 -16
- package/extensions/voice-call/package.json +4 -4
- package/extensions/voice-call/src/cli.ts +16 -4
- package/extensions/voice-call/src/core-bridge.ts +5 -5
- package/extensions/voice-call/src/manager.test.ts +2 -2
- package/extensions/voice-call/src/manager.ts +17 -5
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/whatsapp/index.ts +3 -3
- package/extensions/whatsapp/package.json +4 -4
- package/extensions/whatsapp/src/channel.ts +1 -1
- package/extensions/whatsapp/src/runtime.ts +1 -1
- package/extensions/zalo/CHANGELOG.md +14 -9
- package/extensions/zalo/README.md +4 -4
- package/extensions/zalo/index.ts +3 -3
- package/extensions/zalo/node_modules/.bin/openclaw +16 -0
- package/extensions/zalo/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/zalo/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/zalo/package.json +6 -6
- package/extensions/zalo/src/accounts.ts +9 -9
- package/extensions/zalo/src/actions.ts +6 -6
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +20 -20
- package/extensions/zalo/src/config-schema.ts +1 -1
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +27 -27
- package/extensions/zalo/src/runtime.ts +1 -1
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalo/src/status-issues.ts +1 -1
- package/extensions/zalo/src/token.ts +1 -1
- package/extensions/zalouser/CHANGELOG.md +9 -4
- package/extensions/zalouser/README.md +18 -18
- package/extensions/zalouser/index.ts +3 -3
- package/extensions/zalouser/node_modules/.bin/openclaw +16 -0
- package/extensions/zalouser/node_modules/.bin/openclaw.CMD +7 -0
- package/extensions/zalouser/node_modules/.bin/openclaw.ps1 +28 -0
- package/extensions/zalouser/package.json +6 -6
- package/extensions/zalouser/src/accounts.ts +10 -10
- package/extensions/zalouser/src/channel.ts +27 -27
- package/extensions/zalouser/src/config-schema.ts +1 -1
- package/extensions/zalouser/src/monitor.ts +5 -5
- package/extensions/zalouser/src/onboarding.ts +32 -32
- package/extensions/zalouser/src/runtime.ts +1 -1
- package/extensions/zalouser/src/status-issues.ts +2 -2
- package/openclaw.mjs +14 -0
- package/package.json +35 -25
- package/scripts/postinstall.js +1 -0
- package/skills/1password/SKILL.md +3 -3
- package/skills/apple-notes/SKILL.md +2 -2
- package/skills/apple-reminders/SKILL.md +1 -1
- package/skills/bear-notes/SKILL.md +1 -1
- package/skills/bird/SKILL.md +1 -1
- package/skills/blogwatcher/SKILL.md +1 -1
- package/skills/blucli/SKILL.md +1 -1
- package/skills/bluebubbles/SKILL.md +1 -1
- package/skills/camsnap/SKILL.md +1 -1
- package/skills/canvas/SKILL.md +6 -6
- package/skills/clawdhub/SKILL.md +2 -2
- package/skills/coding-agent/SKILL.md +6 -6
- package/skills/discord/SKILL.md +5 -5
- package/skills/eightctl/SKILL.md +1 -1
- package/skills/food-order/SKILL.md +1 -1
- package/skills/gemini/SKILL.md +1 -1
- package/skills/gifgrep/SKILL.md +1 -1
- package/skills/github/SKILL.md +1 -1
- package/skills/gog/SKILL.md +1 -1
- package/skills/goplaces/SKILL.md +1 -1
- package/skills/himalaya/SKILL.md +1 -1
- package/skills/imsg/SKILL.md +1 -1
- package/skills/local-places/SKILL.md +1 -1
- package/skills/mcporter/SKILL.md +1 -1
- package/skills/model-usage/SKILL.md +1 -1
- package/skills/nano-banana-pro/SKILL.md +3 -3
- package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
- package/skills/nano-pdf/SKILL.md +1 -1
- package/skills/notion/SKILL.md +1 -1
- package/skills/obsidian/SKILL.md +1 -1
- package/skills/openai-image-gen/SKILL.md +1 -1
- package/skills/openai-whisper/SKILL.md +1 -1
- package/skills/openai-whisper-api/SKILL.md +2 -2
- package/skills/openhue/SKILL.md +1 -1
- package/skills/oracle/SKILL.md +1 -1
- package/skills/ordercli/SKILL.md +1 -1
- package/skills/peekaboo/SKILL.md +1 -1
- package/skills/sag/SKILL.md +1 -1
- package/skills/session-logs/SKILL.md +1 -1
- package/skills/sherpa-onnx-tts/SKILL.md +2 -2
- package/skills/slack/SKILL.md +4 -4
- package/skills/songsee/SKILL.md +1 -1
- package/skills/sonoscli/SKILL.md +1 -1
- package/skills/spotify-player/SKILL.md +1 -1
- package/skills/summarize/SKILL.md +1 -1
- package/skills/things-mac/SKILL.md +3 -3
- package/skills/tmux/SKILL.md +7 -7
- package/skills/trello/SKILL.md +2 -2
- package/skills/video-frames/SKILL.md +1 -1
- package/skills/voice-call/SKILL.md +4 -4
- package/skills/wacli/SKILL.md +2 -2
- package/skills/weather/SKILL.md +1 -1
- package/assets/images/icon.png +0 -0
- package/dist/control-ui/assets/index-BAFzd9IE.css +0 -1
- package/dist/control-ui/assets/index-CxLFx0Ae.js.map +0 -1
- package/dist/control-ui/pixel_pig_icon.png +0 -0
- package/dist/daemon/legacy.js +0 -44
- package/dist/extension.js +0 -70
- /package/dist/config/{types.clawdbot.js → types.openclaw.js} +0 -0
- /package/docs/{whatsapp-clawd.jpg → whatsapp-openclaw.jpg} +0 -0
- /package/extensions/bluebubbles/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/copilot-proxy/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/diagnostics-otel/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/discord/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/google-antigravity-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/google-gemini-cli-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/googlechat/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/imessage/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/line/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/llm-task/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/lobster/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/matrix/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/mattermost/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/memory-core/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/msteams/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/nextcloud-talk/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/nostr/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/open-prose/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/qwen-portal-auth/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/signal/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/slack/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/telegram/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/tlon/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/twitch/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/voice-call/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/whatsapp/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/zalo/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
- /package/extensions/zalouser/{clawdbot.plugin.json → openclaw.plugin.json} +0 -0
|
@@ -4,7 +4,7 @@ import { resolveAwsSdkEnvVarName, resolveEnvApiKey } from "./model-auth.js";
|
|
|
4
4
|
import { discoverBedrockModels } from "./bedrock-discovery.js";
|
|
5
5
|
import { buildSyntheticModelDefinition, SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, } from "./synthetic-models.js";
|
|
6
6
|
import { discoverVeniceModels, VENICE_BASE_URL } from "./venice-models.js";
|
|
7
|
-
const MINIMAX_API_BASE_URL = "https://api.minimax.
|
|
7
|
+
const MINIMAX_API_BASE_URL = "https://api.minimax.chat/v1";
|
|
8
8
|
const MINIMAX_DEFAULT_MODEL_ID = "MiniMax-M2.1";
|
|
9
9
|
const MINIMAX_DEFAULT_VISION_MODEL_ID = "MiniMax-VL-01";
|
|
10
10
|
const MINIMAX_DEFAULT_CONTEXT_WINDOW = 200000;
|
|
@@ -16,8 +16,18 @@ const MINIMAX_API_COST = {
|
|
|
16
16
|
cacheRead: 2,
|
|
17
17
|
cacheWrite: 10,
|
|
18
18
|
};
|
|
19
|
+
const XIAOMI_BASE_URL = "https://api.xiaomimimo.com/anthropic";
|
|
20
|
+
export const XIAOMI_DEFAULT_MODEL_ID = "mimo-v2-flash";
|
|
21
|
+
const XIAOMI_DEFAULT_CONTEXT_WINDOW = 262144;
|
|
22
|
+
const XIAOMI_DEFAULT_MAX_TOKENS = 8192;
|
|
23
|
+
const XIAOMI_DEFAULT_COST = {
|
|
24
|
+
input: 0,
|
|
25
|
+
output: 0,
|
|
26
|
+
cacheRead: 0,
|
|
27
|
+
cacheWrite: 0,
|
|
28
|
+
};
|
|
19
29
|
const MOONSHOT_BASE_URL = "https://api.moonshot.ai/v1";
|
|
20
|
-
const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2
|
|
30
|
+
const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2.5";
|
|
21
31
|
const MOONSHOT_DEFAULT_CONTEXT_WINDOW = 256000;
|
|
22
32
|
const MOONSHOT_DEFAULT_MAX_TOKENS = 8192;
|
|
23
33
|
const MOONSHOT_DEFAULT_COST = {
|
|
@@ -198,7 +208,7 @@ export function normalizeProviders(params) {
|
|
|
198
208
|
function buildMinimaxProvider() {
|
|
199
209
|
return {
|
|
200
210
|
baseUrl: MINIMAX_API_BASE_URL,
|
|
201
|
-
api: "
|
|
211
|
+
api: "openai-completions",
|
|
202
212
|
models: [
|
|
203
213
|
{
|
|
204
214
|
id: MINIMAX_DEFAULT_MODEL_ID,
|
|
@@ -228,7 +238,7 @@ function buildMoonshotProvider() {
|
|
|
228
238
|
models: [
|
|
229
239
|
{
|
|
230
240
|
id: MOONSHOT_DEFAULT_MODEL_ID,
|
|
231
|
-
name: "Kimi K2
|
|
241
|
+
name: "Kimi K2.5",
|
|
232
242
|
reasoning: false,
|
|
233
243
|
input: ["text"],
|
|
234
244
|
cost: MOONSHOT_DEFAULT_COST,
|
|
@@ -290,6 +300,23 @@ function buildSyntheticProvider() {
|
|
|
290
300
|
models: SYNTHETIC_MODEL_CATALOG.map(buildSyntheticModelDefinition),
|
|
291
301
|
};
|
|
292
302
|
}
|
|
303
|
+
export function buildXiaomiProvider() {
|
|
304
|
+
return {
|
|
305
|
+
baseUrl: XIAOMI_BASE_URL,
|
|
306
|
+
api: "anthropic-messages",
|
|
307
|
+
models: [
|
|
308
|
+
{
|
|
309
|
+
id: XIAOMI_DEFAULT_MODEL_ID,
|
|
310
|
+
name: "Xiaomi MiMo V2 Flash",
|
|
311
|
+
reasoning: false,
|
|
312
|
+
input: ["text"],
|
|
313
|
+
cost: XIAOMI_DEFAULT_COST,
|
|
314
|
+
contextWindow: XIAOMI_DEFAULT_CONTEXT_WINDOW,
|
|
315
|
+
maxTokens: XIAOMI_DEFAULT_MAX_TOKENS,
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
};
|
|
319
|
+
}
|
|
293
320
|
async function buildVeniceProvider() {
|
|
294
321
|
const models = await discoverVeniceModels();
|
|
295
322
|
return {
|
|
@@ -343,6 +370,11 @@ export async function resolveImplicitProviders(params) {
|
|
|
343
370
|
apiKey: QWEN_PORTAL_OAUTH_PLACEHOLDER,
|
|
344
371
|
};
|
|
345
372
|
}
|
|
373
|
+
const xiaomiKey = resolveEnvApiKeyVarName("xiaomi") ??
|
|
374
|
+
resolveApiKeyFromProfiles({ provider: "xiaomi", store: authStore });
|
|
375
|
+
if (xiaomiKey) {
|
|
376
|
+
providers.xiaomi = { ...buildXiaomiProvider(), apiKey: xiaomiKey };
|
|
377
|
+
}
|
|
346
378
|
// Ollama provider - only add if explicitly configured
|
|
347
379
|
const ollamaKey = resolveEnvApiKeyVarName("ollama") ??
|
|
348
380
|
resolveApiKeyFromProfiles({ provider: "ollama", store: authStore });
|
|
@@ -384,15 +416,15 @@ export async function resolveImplicitCopilotProvider(params) {
|
|
|
384
416
|
}
|
|
385
417
|
// pi-coding-agent's ModelRegistry marks a model "available" only if its
|
|
386
418
|
// `AuthStorage` has auth configured for that provider (via auth.json/env/etc).
|
|
387
|
-
// Our Copilot auth lives in
|
|
419
|
+
// Our Copilot auth lives in OpenClaw's auth-profiles store instead, so we also
|
|
388
420
|
// write a runtime-only auth.json entry for pi-coding-agent to pick up.
|
|
389
421
|
//
|
|
390
|
-
// This is safe because it's (1) within
|
|
422
|
+
// This is safe because it's (1) within OpenClaw's agent dir, (2) contains the
|
|
391
423
|
// GitHub token (not the exchanged Copilot token), and (3) matches existing
|
|
392
424
|
// patterns for OAuth-like providers in pi-coding-agent.
|
|
393
425
|
// Note: we deliberately do not write pi-coding-agent's `auth.json` here.
|
|
394
|
-
//
|
|
395
|
-
// `models list` uses
|
|
426
|
+
// OpenClaw uses its own auth store and exchanges tokens at runtime.
|
|
427
|
+
// `models list` uses OpenClaw's auth heuristics for availability.
|
|
396
428
|
// We intentionally do NOT define custom models for Copilot in models.json.
|
|
397
429
|
// pi-coding-agent treats providers with models as replacements requiring apiKey.
|
|
398
430
|
// We only override baseUrl; the model list comes from pi-ai built-ins.
|
|
@@ -15,7 +15,7 @@ import { createSessionsSendTool } from "./tools/sessions-send-tool.js";
|
|
|
15
15
|
import { createSessionsSpawnTool } from "./tools/sessions-spawn-tool.js";
|
|
16
16
|
import { createWebFetchTool, createWebSearchTool } from "./tools/web-tools.js";
|
|
17
17
|
import { createTtsTool } from "./tools/tts-tool.js";
|
|
18
|
-
export function
|
|
18
|
+
export function createOpenClawTools(options) {
|
|
19
19
|
const imageTool = options?.agentDir?.trim()
|
|
20
20
|
? createImageTool({
|
|
21
21
|
config: options?.config,
|
|
@@ -348,6 +348,7 @@ const ERROR_PATTERNS = {
|
|
|
348
348
|
};
|
|
349
349
|
const IMAGE_DIMENSION_ERROR_RE = /image dimensions exceed max allowed size for many-image requests:\s*(\d+)\s*pixels/i;
|
|
350
350
|
const IMAGE_DIMENSION_PATH_RE = /messages\.(\d+)\.content\.(\d+)\.image/i;
|
|
351
|
+
const IMAGE_SIZE_ERROR_RE = /image exceeds\s*(\d+(?:\.\d+)?)\s*mb/i;
|
|
351
352
|
function matchesErrorPatterns(raw, patterns) {
|
|
352
353
|
if (!raw)
|
|
353
354
|
return false;
|
|
@@ -401,6 +402,23 @@ export function parseImageDimensionError(raw) {
|
|
|
401
402
|
export function isImageDimensionErrorMessage(raw) {
|
|
402
403
|
return Boolean(parseImageDimensionError(raw));
|
|
403
404
|
}
|
|
405
|
+
export function parseImageSizeError(raw) {
|
|
406
|
+
if (!raw)
|
|
407
|
+
return null;
|
|
408
|
+
const lower = raw.toLowerCase();
|
|
409
|
+
if (!lower.includes("image exceeds") || !lower.includes("mb"))
|
|
410
|
+
return null;
|
|
411
|
+
const match = raw.match(IMAGE_SIZE_ERROR_RE);
|
|
412
|
+
return {
|
|
413
|
+
maxMb: match?.[1] ? Number.parseFloat(match[1]) : undefined,
|
|
414
|
+
raw,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
export function isImageSizeError(errorMessage) {
|
|
418
|
+
if (!errorMessage)
|
|
419
|
+
return false;
|
|
420
|
+
return Boolean(parseImageSizeError(errorMessage));
|
|
421
|
+
}
|
|
404
422
|
export function isCloudCodeAssistFormatError(raw) {
|
|
405
423
|
return !isImageDimensionErrorMessage(raw) && matchesErrorPatterns(raw, ERROR_PATTERNS.format);
|
|
406
424
|
}
|
|
@@ -412,6 +430,8 @@ export function isAuthAssistantError(msg) {
|
|
|
412
430
|
export function classifyFailoverReason(raw) {
|
|
413
431
|
if (isImageDimensionErrorMessage(raw))
|
|
414
432
|
return null;
|
|
433
|
+
if (isImageSizeError(raw))
|
|
434
|
+
return null;
|
|
415
435
|
if (isRateLimitErrorMessage(raw))
|
|
416
436
|
return "rate_limit";
|
|
417
437
|
if (isOverloadedErrorMessage(raw))
|
|
@@ -41,7 +41,7 @@ function hasFollowingNonThinkingBlock(content, index) {
|
|
|
41
41
|
* OpenAI Responses API can reject transcripts that contain a standalone `reasoning` item id
|
|
42
42
|
* without the required following item.
|
|
43
43
|
*
|
|
44
|
-
*
|
|
44
|
+
* OpenClaw persists provider-specific reasoning metadata in `thinkingSignature`; if that metadata
|
|
45
45
|
* is incomplete, drop the block to keep history usable.
|
|
46
46
|
*/
|
|
47
47
|
export function downgradeOpenAIReasoningBlocks(messages) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { buildBootstrapContextFiles, DEFAULT_BOOTSTRAP_MAX_CHARS, ensureSessionHeader, resolveBootstrapMaxChars, stripThoughtSignatures, } from "./pi-embedded-helpers/bootstrap.js";
|
|
2
|
-
export { classifyFailoverReason, formatRawAssistantErrorForUi, formatAssistantErrorText, getApiErrorPayloadFingerprint, isAuthAssistantError, isAuthErrorMessage, isBillingAssistantError, parseApiErrorInfo, sanitizeUserFacingText, isBillingErrorMessage, isCloudCodeAssistFormatError, isCompactionFailureError, isContextOverflowError, isLikelyContextOverflowError, isFailoverAssistantError, isFailoverErrorMessage, isImageDimensionErrorMessage, isOverloadedErrorMessage, isRawApiErrorPayload, isRateLimitAssistantError, isRateLimitErrorMessage, isTimeoutErrorMessage, parseImageDimensionError, } from "./pi-embedded-helpers/errors.js";
|
|
2
|
+
export { classifyFailoverReason, formatRawAssistantErrorForUi, formatAssistantErrorText, getApiErrorPayloadFingerprint, isAuthAssistantError, isAuthErrorMessage, isBillingAssistantError, parseApiErrorInfo, sanitizeUserFacingText, isBillingErrorMessage, isCloudCodeAssistFormatError, isCompactionFailureError, isContextOverflowError, isLikelyContextOverflowError, isFailoverAssistantError, isFailoverErrorMessage, isImageDimensionErrorMessage, isImageSizeError, isOverloadedErrorMessage, isRawApiErrorPayload, isRateLimitAssistantError, isRateLimitErrorMessage, isTimeoutErrorMessage, parseImageDimensionError, parseImageSizeError, } from "./pi-embedded-helpers/errors.js";
|
|
3
3
|
export { isGoogleModelApi, sanitizeGoogleTurnOrdering } from "./pi-embedded-helpers/google.js";
|
|
4
4
|
export { downgradeOpenAIReasoningBlocks } from "./pi-embedded-helpers/openai.js";
|
|
5
5
|
export { isEmptyAssistantMessageContent, sanitizeSessionMessagesImages, } from "./pi-embedded-helpers/images.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const CACHE_TTL_CUSTOM_TYPE = "
|
|
1
|
+
export const CACHE_TTL_CUSTOM_TYPE = "openclaw.cache-ttl";
|
|
2
2
|
export function isCacheTtlEligibleProvider(provider, modelId) {
|
|
3
3
|
const normalizedProvider = provider.toLowerCase();
|
|
4
4
|
const normalizedModelId = modelId.toLowerCase();
|
|
@@ -13,16 +13,16 @@ import { normalizeMessageChannel } from "../../utils/message-channel.js";
|
|
|
13
13
|
import { isSubagentSessionKey } from "../../routing/session-key.js";
|
|
14
14
|
import { isReasoningTagProvider } from "../../utils/provider-utils.js";
|
|
15
15
|
import { resolveUserPath } from "../../utils.js";
|
|
16
|
-
import {
|
|
16
|
+
import { resolveOpenClawAgentDir } from "../agent-paths.js";
|
|
17
17
|
import { resolveSessionAgentIds } from "../agent-scope.js";
|
|
18
18
|
import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../bootstrap-files.js";
|
|
19
|
-
import {
|
|
19
|
+
import { resolveOpenClawDocsPath } from "../docs-path.js";
|
|
20
20
|
import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../defaults.js";
|
|
21
21
|
import { getApiKeyForModel, resolveModelAuthMode } from "../model-auth.js";
|
|
22
|
-
import {
|
|
22
|
+
import { ensureOpenClawModelsJson } from "../models-config.js";
|
|
23
23
|
import { ensureSessionHeader, validateAnthropicTurns, validateGeminiTurns, } from "../pi-embedded-helpers.js";
|
|
24
24
|
import { ensurePiCompactionReserveTokens, resolveCompactionReserveTokensFloor, } from "../pi-settings.js";
|
|
25
|
-
import {
|
|
25
|
+
import { createOpenClawCodingTools } from "../pi-tools.js";
|
|
26
26
|
import { resolveSandboxContext } from "../sandbox.js";
|
|
27
27
|
import { guardSessionManager } from "../session-tool-result-guard-wrapper.js";
|
|
28
28
|
import { resolveTranscriptPolicy } from "../transcript-policy.js";
|
|
@@ -50,8 +50,8 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
50
50
|
const prevCwd = process.cwd();
|
|
51
51
|
const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
|
|
52
52
|
const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
|
|
53
|
-
const agentDir = params.agentDir ??
|
|
54
|
-
await
|
|
53
|
+
const agentDir = params.agentDir ?? resolveOpenClawAgentDir();
|
|
54
|
+
await ensureOpenClawModelsJson(params.config, agentDir);
|
|
55
55
|
const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
|
|
56
56
|
if (!model) {
|
|
57
57
|
return {
|
|
@@ -139,7 +139,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
139
139
|
warn: makeBootstrapWarn({ sessionLabel, warn: (message) => log.warn(message) }),
|
|
140
140
|
});
|
|
141
141
|
const runAbortController = new AbortController();
|
|
142
|
-
const toolsRaw =
|
|
142
|
+
const toolsRaw = createOpenClawCodingTools({
|
|
143
143
|
exec: {
|
|
144
144
|
...resolveExecToolDefaults(params.config),
|
|
145
145
|
elevated: params.bashElevated,
|
|
@@ -240,7 +240,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
240
240
|
});
|
|
241
241
|
const isDefaultAgent = sessionAgentId === defaultAgentId;
|
|
242
242
|
const promptMode = isSubagentSessionKey(params.sessionKey) ? "minimal" : "full";
|
|
243
|
-
const docsPath = await
|
|
243
|
+
const docsPath = await resolveOpenClawDocsPath({
|
|
244
244
|
workspaceDir: effectiveWorkspace,
|
|
245
245
|
argv1: process.argv[1],
|
|
246
246
|
cwd: process.cwd(),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { discoverAuthStorage, discoverModels } from "@mariozechner/pi-coding-agent";
|
|
2
|
-
import {
|
|
2
|
+
import { resolveOpenClawAgentDir } from "../agent-paths.js";
|
|
3
3
|
import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
|
|
4
4
|
import { normalizeModelCompat } from "../model-compat.js";
|
|
5
5
|
import { normalizeProviderId } from "../model-selection.js";
|
|
@@ -33,7 +33,7 @@ export function buildModelAliasLines(cfg) {
|
|
|
33
33
|
.map((entry) => `- ${entry.alias}: ${entry.model}`);
|
|
34
34
|
}
|
|
35
35
|
export function resolveModel(provider, modelId, agentDir, cfg) {
|
|
36
|
-
const resolvedAgentDir = agentDir ??
|
|
36
|
+
const resolvedAgentDir = agentDir ?? resolveOpenClawAgentDir();
|
|
37
37
|
const authStorage = discoverAuthStorage(resolvedAgentDir);
|
|
38
38
|
const modelRegistry = discoverModels(authStorage, resolvedAgentDir);
|
|
39
39
|
const model = modelRegistry.find(provider, modelId);
|
|
@@ -15,15 +15,15 @@ import { isSubagentSessionKey } from "../../../routing/session-key.js";
|
|
|
15
15
|
import { resolveUserPath } from "../../../utils.js";
|
|
16
16
|
import { createCacheTrace } from "../../cache-trace.js";
|
|
17
17
|
import { createAnthropicPayloadLogger } from "../../anthropic-payload-log.js";
|
|
18
|
-
import {
|
|
18
|
+
import { resolveOpenClawAgentDir } from "../../agent-paths.js";
|
|
19
19
|
import { resolveSessionAgentIds } from "../../agent-scope.js";
|
|
20
20
|
import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../../bootstrap-files.js";
|
|
21
|
-
import {
|
|
21
|
+
import { resolveOpenClawDocsPath } from "../../docs-path.js";
|
|
22
22
|
import { resolveModelAuthMode } from "../../model-auth.js";
|
|
23
23
|
import { isCloudCodeAssistFormatError, resolveBootstrapMaxChars, validateAnthropicTurns, validateGeminiTurns, } from "../../pi-embedded-helpers.js";
|
|
24
24
|
import { subscribeEmbeddedPiSession } from "../../pi-embedded-subscribe.js";
|
|
25
25
|
import { ensurePiCompactionReserveTokens, resolveCompactionReserveTokensFloor, } from "../../pi-settings.js";
|
|
26
|
-
import {
|
|
26
|
+
import { createOpenClawCodingTools } from "../../pi-tools.js";
|
|
27
27
|
import { resolveSandboxContext } from "../../sandbox.js";
|
|
28
28
|
import { guardSessionManager } from "../../session-tool-result-guard-wrapper.js";
|
|
29
29
|
import { resolveTranscriptPolicy } from "../../transcript-policy.js";
|
|
@@ -141,12 +141,12 @@ export async function runEmbeddedAttempt(params) {
|
|
|
141
141
|
const workspaceNotes = hookAdjustedBootstrapFiles.some((file) => file.name === DEFAULT_BOOTSTRAP_FILENAME && !file.missing)
|
|
142
142
|
? ["Reminder: commit your changes in this workspace after edits."]
|
|
143
143
|
: undefined;
|
|
144
|
-
const agentDir = params.agentDir ??
|
|
144
|
+
const agentDir = params.agentDir ?? resolveOpenClawAgentDir();
|
|
145
145
|
// Check if the model supports native image input
|
|
146
146
|
const modelHasVision = params.model.input?.includes("image") ?? false;
|
|
147
147
|
const toolsRaw = params.disableTools
|
|
148
148
|
? []
|
|
149
|
-
:
|
|
149
|
+
: createOpenClawCodingTools({
|
|
150
150
|
exec: {
|
|
151
151
|
...params.execOverrides,
|
|
152
152
|
elevated: params.bashElevated,
|
|
@@ -267,7 +267,7 @@ export async function runEmbeddedAttempt(params) {
|
|
|
267
267
|
});
|
|
268
268
|
const isDefaultAgent = sessionAgentId === defaultAgentId;
|
|
269
269
|
const promptMode = isSubagentSessionKey(params.sessionKey) ? "minimal" : "full";
|
|
270
|
-
const docsPath = await
|
|
270
|
+
const docsPath = await resolveOpenClawDocsPath({
|
|
271
271
|
workspaceDir: effectiveWorkspace,
|
|
272
272
|
argv1: process.argv[1],
|
|
273
273
|
cwd: process.cwd(),
|
|
@@ -2,15 +2,15 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import { enqueueCommandInLane } from "../../process/command-queue.js";
|
|
3
3
|
import { resolveUserPath } from "../../utils.js";
|
|
4
4
|
import { isMarkdownCapableMessageChannel } from "../../utils/message-channel.js";
|
|
5
|
-
import {
|
|
5
|
+
import { resolveOpenClawAgentDir } from "../agent-paths.js";
|
|
6
6
|
import { isProfileInCooldown, markAuthProfileFailure, markAuthProfileGood, markAuthProfileUsed, } from "../auth-profiles.js";
|
|
7
7
|
import { CONTEXT_WINDOW_HARD_MIN_TOKENS, CONTEXT_WINDOW_WARN_BELOW_TOKENS, evaluateContextWindowGuard, resolveContextWindowInfo, } from "../context-window-guard.js";
|
|
8
8
|
import { DEFAULT_CONTEXT_TOKENS, DEFAULT_MODEL, DEFAULT_PROVIDER } from "../defaults.js";
|
|
9
9
|
import { FailoverError, resolveFailoverStatus } from "../failover-error.js";
|
|
10
10
|
import { ensureAuthProfileStore, getApiKeyForModel, resolveAuthProfileOrder, } from "../model-auth.js";
|
|
11
11
|
import { normalizeProviderId } from "../model-selection.js";
|
|
12
|
-
import {
|
|
13
|
-
import { classifyFailoverReason, formatAssistantErrorText, isAuthAssistantError, isCompactionFailureError, isContextOverflowError, isFailoverAssistantError, isFailoverErrorMessage, parseImageDimensionError, isRateLimitAssistantError, isTimeoutErrorMessage, pickFallbackThinkingLevel, } from "../pi-embedded-helpers.js";
|
|
12
|
+
import { ensureOpenClawModelsJson } from "../models-config.js";
|
|
13
|
+
import { classifyFailoverReason, formatAssistantErrorText, isAuthAssistantError, isCompactionFailureError, isContextOverflowError, isFailoverAssistantError, isFailoverErrorMessage, parseImageSizeError, parseImageDimensionError, isRateLimitAssistantError, isTimeoutErrorMessage, pickFallbackThinkingLevel, } from "../pi-embedded-helpers.js";
|
|
14
14
|
import { normalizeUsage } from "../usage.js";
|
|
15
15
|
import { compactEmbeddedPiSessionDirect } from "./compact.js";
|
|
16
16
|
import { resolveGlobalLane, resolveSessionLane } from "./lanes.js";
|
|
@@ -46,9 +46,9 @@ export async function runEmbeddedPiAgent(params) {
|
|
|
46
46
|
const prevCwd = process.cwd();
|
|
47
47
|
const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
|
|
48
48
|
const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
|
|
49
|
-
const agentDir = params.agentDir ??
|
|
49
|
+
const agentDir = params.agentDir ?? resolveOpenClawAgentDir();
|
|
50
50
|
const fallbackConfigured = (params.config?.agents?.defaults?.model?.fallbacks?.length ?? 0) > 0;
|
|
51
|
-
await
|
|
51
|
+
await ensureOpenClawModelsJson(params.config, agentDir);
|
|
52
52
|
const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
|
|
53
53
|
if (!model) {
|
|
54
54
|
throw new Error(error ?? `Unknown model: ${provider}/${modelId}`);
|
|
@@ -351,6 +351,32 @@ export async function runEmbeddedPiAgent(params) {
|
|
|
351
351
|
},
|
|
352
352
|
};
|
|
353
353
|
}
|
|
354
|
+
// Handle image size errors with a user-friendly message (no retry needed)
|
|
355
|
+
const imageSizeError = parseImageSizeError(errorText);
|
|
356
|
+
if (imageSizeError) {
|
|
357
|
+
const maxMb = imageSizeError.maxMb;
|
|
358
|
+
const maxMbLabel = typeof maxMb === "number" && Number.isFinite(maxMb) ? `${maxMb}` : null;
|
|
359
|
+
const maxBytesHint = maxMbLabel ? ` (max ${maxMbLabel}MB)` : "";
|
|
360
|
+
return {
|
|
361
|
+
payloads: [
|
|
362
|
+
{
|
|
363
|
+
text: `Image too large for the model${maxBytesHint}. ` +
|
|
364
|
+
"Please compress or resize the image and try again.",
|
|
365
|
+
isError: true,
|
|
366
|
+
},
|
|
367
|
+
],
|
|
368
|
+
meta: {
|
|
369
|
+
durationMs: Date.now() - started,
|
|
370
|
+
agentMeta: {
|
|
371
|
+
sessionId: sessionIdUsed,
|
|
372
|
+
provider,
|
|
373
|
+
model: model.id,
|
|
374
|
+
},
|
|
375
|
+
systemPromptReport: attempt.systemPromptReport,
|
|
376
|
+
error: { kind: "image_size", message: errorText },
|
|
377
|
+
},
|
|
378
|
+
};
|
|
379
|
+
}
|
|
354
380
|
const promptFailoverReason = classifyFailoverReason(errorText);
|
|
355
381
|
if (promptFailoverReason && promptFailoverReason !== "timeout" && lastProfileId) {
|
|
356
382
|
await markAuthProfileFailure({
|
|
@@ -5,7 +5,7 @@ const SESSION_MANAGER_CACHE = new Map();
|
|
|
5
5
|
const DEFAULT_SESSION_MANAGER_TTL_MS = 45_000; // 45 seconds
|
|
6
6
|
function getSessionManagerTtl() {
|
|
7
7
|
return resolveCacheTtlMs({
|
|
8
|
-
envValue: process.env.
|
|
8
|
+
envValue: process.env.OPENCLAW_SESSION_MANAGER_CACHE_TTL_MS,
|
|
9
9
|
defaultTtlMs: DEFAULT_SESSION_MANAGER_TTL_MS,
|
|
10
10
|
});
|
|
11
11
|
}
|
|
@@ -2,8 +2,8 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { resolveStateDir } from "../config/paths.js";
|
|
4
4
|
import { isTruthyEnvValue } from "../infra/env.js";
|
|
5
|
-
const RAW_STREAM_ENABLED = isTruthyEnvValue(process.env.
|
|
6
|
-
const RAW_STREAM_PATH = process.env.
|
|
5
|
+
const RAW_STREAM_ENABLED = isTruthyEnvValue(process.env.OPENCLAW_RAW_STREAM);
|
|
6
|
+
const RAW_STREAM_PATH = process.env.OPENCLAW_RAW_STREAM_PATH?.trim() ||
|
|
7
7
|
path.join(resolveStateDir(), "logs", "raw-stream.jsonl");
|
|
8
8
|
let rawStreamReady = false;
|
|
9
9
|
export function appendRawStream(payload) {
|
package/dist/agents/pi-tools.js
CHANGED
|
@@ -4,10 +4,10 @@ import { resolveGatewayMessageChannel } from "../utils/message-channel.js";
|
|
|
4
4
|
import { createApplyPatchTool } from "./apply-patch.js";
|
|
5
5
|
import { createExecTool, createProcessTool, } from "./bash-tools.js";
|
|
6
6
|
import { listChannelAgentTools } from "./channel-tools.js";
|
|
7
|
-
import {
|
|
7
|
+
import { createOpenClawTools } from "./openclaw-tools.js";
|
|
8
8
|
import { wrapToolWithAbortSignal } from "./pi-tools.abort.js";
|
|
9
9
|
import { filterToolsByPolicy, isToolAllowedByPolicies, resolveEffectiveToolPolicy, resolveGroupToolPolicy, resolveSubagentToolPolicy, } from "./pi-tools.policy.js";
|
|
10
|
-
import { assertRequiredParams, CLAUDE_PARAM_GROUPS,
|
|
10
|
+
import { assertRequiredParams, CLAUDE_PARAM_GROUPS, createOpenClawReadTool, createSandboxedEditTool, createSandboxedReadTool, createSandboxedWriteTool, normalizeToolParams, patchToolSchemaForClaudeCompatibility, wrapToolParamNormalization, } from "./pi-tools.read.js";
|
|
11
11
|
import { cleanToolSchemaForGemini, normalizeToolParameters } from "./pi-tools.schema.js";
|
|
12
12
|
import { buildPluginToolGroups, collectExplicitAllowlist, expandPolicyWithPluginGroups, normalizeToolName, resolveToolProfilePolicy, stripPluginOnlyAllowlist, } from "./tool-policy.js";
|
|
13
13
|
import { getPluginToolMeta } from "../plugins/tools.js";
|
|
@@ -59,7 +59,7 @@ export const __testing = {
|
|
|
59
59
|
wrapToolParamNormalization,
|
|
60
60
|
assertRequiredParams,
|
|
61
61
|
};
|
|
62
|
-
export function
|
|
62
|
+
export function createOpenClawCodingTools(options) {
|
|
63
63
|
const execToolName = "exec";
|
|
64
64
|
const sandbox = options?.sandbox?.enabled ? options.sandbox : undefined;
|
|
65
65
|
const { agentId, globalPolicy, globalProviderPolicy, agentPolicy, agentProviderPolicy, profile, providerProfile, profileAlsoAllow, providerProfileAlsoAllow, } = resolveEffectiveToolPolicy({
|
|
@@ -124,7 +124,7 @@ export function createMoltbotCodingTools(options) {
|
|
|
124
124
|
return [createSandboxedReadTool(sandboxRoot)];
|
|
125
125
|
}
|
|
126
126
|
const freshReadTool = createReadTool(workspaceRoot);
|
|
127
|
-
return [
|
|
127
|
+
return [createOpenClawReadTool(freshReadTool)];
|
|
128
128
|
}
|
|
129
129
|
if (tool.name === "bash" || tool.name === execToolName)
|
|
130
130
|
return [];
|
|
@@ -194,7 +194,7 @@ export function createMoltbotCodingTools(options) {
|
|
|
194
194
|
processTool,
|
|
195
195
|
// Channel docking: include channel-defined agent tools (login, etc.).
|
|
196
196
|
...listChannelAgentTools({ cfg: options?.config }),
|
|
197
|
-
...
|
|
197
|
+
...createOpenClawTools({
|
|
198
198
|
sandboxBrowserBridgeUrl: sandbox?.browser?.bridgeUrl,
|
|
199
199
|
allowHostBrowserControl: sandbox ? sandbox.browserAllowHostControl : true,
|
|
200
200
|
agentSessionKey: options?.sessionKey,
|
|
@@ -199,7 +199,7 @@ function wrapSandboxPathGuard(tool, root) {
|
|
|
199
199
|
}
|
|
200
200
|
export function createSandboxedReadTool(root) {
|
|
201
201
|
const base = createReadTool(root);
|
|
202
|
-
return wrapSandboxPathGuard(
|
|
202
|
+
return wrapSandboxPathGuard(createOpenClawReadTool(base), root);
|
|
203
203
|
}
|
|
204
204
|
export function createSandboxedWriteTool(root) {
|
|
205
205
|
const base = createWriteTool(root);
|
|
@@ -209,7 +209,7 @@ export function createSandboxedEditTool(root) {
|
|
|
209
209
|
const base = createEditTool(root);
|
|
210
210
|
return wrapSandboxPathGuard(wrapToolParamNormalization(base, CLAUDE_PARAM_GROUPS.edit), root);
|
|
211
211
|
}
|
|
212
|
-
export function
|
|
212
|
+
export function createOpenClawReadTool(base) {
|
|
213
213
|
const patched = patchToolSchemaForClaudeCompatibility(base);
|
|
214
214
|
return {
|
|
215
215
|
...patched,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { startBrowserBridgeServer, stopBrowserBridgeServer } from "../../browser/bridge-server.js";
|
|
2
2
|
import { resolveProfile } from "../../browser/config.js";
|
|
3
|
-
import { DEFAULT_BROWSER_EVALUATE_ENABLED,
|
|
3
|
+
import { DEFAULT_BROWSER_EVALUATE_ENABLED, DEFAULT_OPENCLAW_BROWSER_COLOR, DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, } from "../../browser/constants.js";
|
|
4
4
|
import { BROWSER_BRIDGES } from "./browser-bridges.js";
|
|
5
5
|
import { DEFAULT_SANDBOX_BROWSER_IMAGE, SANDBOX_AGENT_WORKSPACE_MOUNT } from "./constants.js";
|
|
6
6
|
import { buildSandboxCreateArgs, dockerContainerState, execDocker, readDockerPort, } from "./docker.js";
|
|
@@ -41,14 +41,17 @@ function buildSandboxBrowserResolvedConfig(params) {
|
|
|
41
41
|
cdpIsLoopback: true,
|
|
42
42
|
remoteCdpTimeoutMs: 1500,
|
|
43
43
|
remoteCdpHandshakeTimeoutMs: 3000,
|
|
44
|
-
color:
|
|
44
|
+
color: DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
45
45
|
executablePath: undefined,
|
|
46
46
|
headless: params.headless,
|
|
47
47
|
noSandbox: false,
|
|
48
48
|
attachOnly: true,
|
|
49
|
-
defaultProfile:
|
|
49
|
+
defaultProfile: DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
|
|
50
50
|
profiles: {
|
|
51
|
-
|
|
51
|
+
[DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME]: {
|
|
52
|
+
cdpPort: params.cdpPort,
|
|
53
|
+
color: DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
54
|
+
},
|
|
52
55
|
},
|
|
53
56
|
};
|
|
54
57
|
}
|
|
@@ -75,7 +78,7 @@ export async function ensureSandboxBrowser(params) {
|
|
|
75
78
|
name: containerName,
|
|
76
79
|
cfg: params.cfg.docker,
|
|
77
80
|
scopeKey: params.scopeKey,
|
|
78
|
-
labels: { "
|
|
81
|
+
labels: { "openclaw.sandboxBrowser": "1" },
|
|
79
82
|
});
|
|
80
83
|
const mainMountSuffix = params.cfg.workspaceAccess === "ro" && params.workspaceDir === params.agentWorkspaceDir
|
|
81
84
|
? ":ro"
|
|
@@ -89,11 +92,11 @@ export async function ensureSandboxBrowser(params) {
|
|
|
89
92
|
if (params.cfg.browser.enableNoVnc && !params.cfg.browser.headless) {
|
|
90
93
|
args.push("-p", `127.0.0.1::${params.cfg.browser.noVncPort}`);
|
|
91
94
|
}
|
|
92
|
-
args.push("-e", `
|
|
93
|
-
args.push("-e", `
|
|
94
|
-
args.push("-e", `
|
|
95
|
-
args.push("-e", `
|
|
96
|
-
args.push("-e", `
|
|
95
|
+
args.push("-e", `OPENCLAW_BROWSER_HEADLESS=${params.cfg.browser.headless ? "1" : "0"}`);
|
|
96
|
+
args.push("-e", `OPENCLAW_BROWSER_ENABLE_NOVNC=${params.cfg.browser.enableNoVnc ? "1" : "0"}`);
|
|
97
|
+
args.push("-e", `OPENCLAW_BROWSER_CDP_PORT=${params.cfg.browser.cdpPort}`);
|
|
98
|
+
args.push("-e", `OPENCLAW_BROWSER_VNC_PORT=${params.cfg.browser.vncPort}`);
|
|
99
|
+
args.push("-e", `OPENCLAW_BROWSER_NOVNC_PORT=${params.cfg.browser.noVncPort}`);
|
|
97
100
|
args.push(params.cfg.browser.image);
|
|
98
101
|
await execDocker(args);
|
|
99
102
|
await execDocker(["start", containerName]);
|
|
@@ -109,7 +112,9 @@ export async function ensureSandboxBrowser(params) {
|
|
|
109
112
|
? await readDockerPort(containerName, params.cfg.browser.noVncPort)
|
|
110
113
|
: null;
|
|
111
114
|
const existing = BROWSER_BRIDGES.get(params.scopeKey);
|
|
112
|
-
const existingProfile = existing
|
|
115
|
+
const existingProfile = existing
|
|
116
|
+
? resolveProfile(existing.bridge.state.resolved, DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME)
|
|
117
|
+
: null;
|
|
113
118
|
const shouldReuse = existing && existing.containerName === containerName && existingProfile?.cdpPort === mappedCdp;
|
|
114
119
|
if (existing && !shouldReuse) {
|
|
115
120
|
await stopBrowserBridgeServer(existing.bridge.server).catch(() => undefined);
|
|
@@ -2,9 +2,9 @@ import os from "node:os";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { CHANNEL_IDS } from "../../channels/registry.js";
|
|
4
4
|
import { STATE_DIR } from "../../config/config.js";
|
|
5
|
-
export const DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(os.homedir(), ".
|
|
6
|
-
export const DEFAULT_SANDBOX_IMAGE = "
|
|
7
|
-
export const DEFAULT_SANDBOX_CONTAINER_PREFIX = "
|
|
5
|
+
export const DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(os.homedir(), ".openclaw", "sandboxes");
|
|
6
|
+
export const DEFAULT_SANDBOX_IMAGE = "openclaw-sandbox:bookworm-slim";
|
|
7
|
+
export const DEFAULT_SANDBOX_CONTAINER_PREFIX = "openclaw-sbx-";
|
|
8
8
|
export const DEFAULT_SANDBOX_WORKDIR = "/workspace";
|
|
9
9
|
export const DEFAULT_SANDBOX_IDLE_HOURS = 24;
|
|
10
10
|
export const DEFAULT_SANDBOX_MAX_AGE_DAYS = 7;
|
|
@@ -31,15 +31,15 @@ export const DEFAULT_TOOL_DENY = [
|
|
|
31
31
|
"gateway",
|
|
32
32
|
...CHANNEL_IDS,
|
|
33
33
|
];
|
|
34
|
-
export const DEFAULT_SANDBOX_BROWSER_IMAGE = "
|
|
35
|
-
export const DEFAULT_SANDBOX_COMMON_IMAGE = "
|
|
36
|
-
export const DEFAULT_SANDBOX_BROWSER_PREFIX = "
|
|
34
|
+
export const DEFAULT_SANDBOX_BROWSER_IMAGE = "openclaw-sandbox-browser:bookworm-slim";
|
|
35
|
+
export const DEFAULT_SANDBOX_COMMON_IMAGE = "openclaw-sandbox-common:bookworm-slim";
|
|
36
|
+
export const DEFAULT_SANDBOX_BROWSER_PREFIX = "openclaw-sbx-browser-";
|
|
37
37
|
export const DEFAULT_SANDBOX_BROWSER_CDP_PORT = 9222;
|
|
38
38
|
export const DEFAULT_SANDBOX_BROWSER_VNC_PORT = 5900;
|
|
39
39
|
export const DEFAULT_SANDBOX_BROWSER_NOVNC_PORT = 6080;
|
|
40
40
|
export const DEFAULT_SANDBOX_BROWSER_AUTOSTART_TIMEOUT_MS = 12_000;
|
|
41
41
|
export const SANDBOX_AGENT_WORKSPACE_MOUNT = "/agent";
|
|
42
|
-
const resolvedSandboxStateDir = STATE_DIR ?? path.join(os.homedir(), ".
|
|
42
|
+
const resolvedSandboxStateDir = STATE_DIR ?? path.join(os.homedir(), ".openclaw");
|
|
43
43
|
export const SANDBOX_STATE_DIR = path.join(resolvedSandboxStateDir, "sandbox");
|
|
44
44
|
export const SANDBOX_REGISTRY_PATH = path.join(SANDBOX_STATE_DIR, "containers.json");
|
|
45
45
|
export const SANDBOX_BROWSER_REGISTRY_PATH = path.join(SANDBOX_STATE_DIR, "browsers.json");
|
|
@@ -102,11 +102,11 @@ function formatUlimitValue(name, value) {
|
|
|
102
102
|
export function buildSandboxCreateArgs(params) {
|
|
103
103
|
const createdAtMs = params.createdAtMs ?? Date.now();
|
|
104
104
|
const args = ["create", "--name", params.name];
|
|
105
|
-
args.push("--label", "
|
|
106
|
-
args.push("--label", `
|
|
107
|
-
args.push("--label", `
|
|
105
|
+
args.push("--label", "openclaw.sandbox=1");
|
|
106
|
+
args.push("--label", `openclaw.sessionKey=${params.scopeKey}`);
|
|
107
|
+
args.push("--label", `openclaw.createdAtMs=${createdAtMs}`);
|
|
108
108
|
if (params.configHash) {
|
|
109
|
-
args.push("--label", `
|
|
109
|
+
args.push("--label", `openclaw.configHash=${params.configHash}`);
|
|
110
110
|
}
|
|
111
111
|
for (const [key, value] of Object.entries(params.labels ?? {})) {
|
|
112
112
|
if (key && value)
|
|
@@ -187,23 +187,26 @@ async function createSandboxContainer(params) {
|
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
async function readContainerConfigHash(containerName) {
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
190
|
+
const readLabel = async (label) => {
|
|
191
|
+
const result = await execDocker(["inspect", "-f", `{{ index .Config.Labels "${label}" }}`, containerName], { allowFailure: true });
|
|
192
|
+
if (result.code !== 0)
|
|
193
|
+
return null;
|
|
194
|
+
const raw = result.stdout.trim();
|
|
195
|
+
if (!raw || raw === "<no value>")
|
|
196
|
+
return null;
|
|
197
|
+
return raw;
|
|
198
|
+
};
|
|
199
|
+
return await readLabel("openclaw.configHash");
|
|
197
200
|
}
|
|
198
201
|
function formatSandboxRecreateHint(params) {
|
|
199
202
|
if (params.scope === "session") {
|
|
200
|
-
return formatCliCommand(`
|
|
203
|
+
return formatCliCommand(`openclaw sandbox recreate --session ${params.sessionKey}`);
|
|
201
204
|
}
|
|
202
205
|
if (params.scope === "agent") {
|
|
203
206
|
const agentId = resolveSandboxAgentId(params.sessionKey) ?? "main";
|
|
204
|
-
return formatCliCommand(`
|
|
207
|
+
return formatCliCommand(`openclaw sandbox recreate --agent ${agentId}`);
|
|
205
208
|
}
|
|
206
|
-
return formatCliCommand("
|
|
209
|
+
return formatCliCommand("openclaw sandbox recreate --all");
|
|
207
210
|
}
|
|
208
211
|
export async function ensureSandboxContainer(params) {
|
|
209
212
|
const scopeKey = resolveSandboxScopeKey(params.cfg.scope, params.sessionKey);
|
|
@@ -85,6 +85,6 @@ export function formatSandboxToolPolicyBlockedMessage(params) {
|
|
|
85
85
|
if (runtime.mode === "non-main") {
|
|
86
86
|
lines.push(`- Use main session key (direct): ${runtime.mainSessionKey}`);
|
|
87
87
|
}
|
|
88
|
-
lines.push(`- See: ${formatCliCommand(`
|
|
88
|
+
lines.push(`- See: ${formatCliCommand(`openclaw sandbox explain --session ${runtime.sessionKey}`)}`);
|
|
89
89
|
return lines.join("\n");
|
|
90
90
|
}
|
|
@@ -35,7 +35,7 @@ function makeMissingToolResult(params) {
|
|
|
35
35
|
content: [
|
|
36
36
|
{
|
|
37
37
|
type: "text",
|
|
38
|
-
text: "[
|
|
38
|
+
text: "[openclaw] missing tool result in session history; inserted synthetic error result for transcript repair.",
|
|
39
39
|
},
|
|
40
40
|
],
|
|
41
41
|
isError: true,
|
|
@@ -22,8 +22,8 @@ function isAlive(pid) {
|
|
|
22
22
|
function releaseAllLocksSync() {
|
|
23
23
|
for (const [sessionFile, held] of HELD_LOCKS) {
|
|
24
24
|
try {
|
|
25
|
-
if (typeof held.handle.
|
|
26
|
-
|
|
25
|
+
if (typeof held.handle.close === "function") {
|
|
26
|
+
void held.handle.close().catch(() => { });
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
catch {
|