@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
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
type ChannelOnboardingAdapter,
|
|
9
9
|
type ChannelOnboardingDmPolicy,
|
|
10
10
|
type WizardPrompter,
|
|
11
|
-
} from "
|
|
11
|
+
} from "openclaw/plugin-sdk";
|
|
12
12
|
import { DEFAULT_ACCOUNT_ID, getAccountConfig } from "./config.js";
|
|
13
13
|
import { isAccountConfigured } from "./utils/twitch.js";
|
|
14
14
|
import type { TwitchAccountConfig, TwitchRole } from "./types.js";
|
|
15
|
-
import type {
|
|
15
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
16
16
|
|
|
17
17
|
const channel = "twitch" as const;
|
|
18
18
|
|
|
@@ -20,9 +20,9 @@ const channel = "twitch" as const;
|
|
|
20
20
|
* Set Twitch account configuration
|
|
21
21
|
*/
|
|
22
22
|
function setTwitchAccount(
|
|
23
|
-
cfg:
|
|
23
|
+
cfg: OpenClawConfig,
|
|
24
24
|
account: Partial<TwitchAccountConfig>,
|
|
25
|
-
):
|
|
25
|
+
): OpenClawConfig {
|
|
26
26
|
const existing = getAccountConfig(cfg, DEFAULT_ACCOUNT_ID);
|
|
27
27
|
const merged: TwitchAccountConfig = {
|
|
28
28
|
username: account.username ?? existing?.username ?? "",
|
|
@@ -70,7 +70,7 @@ async function noteTwitchSetupHelp(prompter: WizardPrompter): Promise<void> {
|
|
|
70
70
|
"2. Generate a token with scopes: chat:read and chat:write",
|
|
71
71
|
" Use https://twitchtokengenerator.com/ or https://twitchapps.com/tmi/",
|
|
72
72
|
"3. Copy the token (starts with 'oauth:') and Client ID",
|
|
73
|
-
"Env vars supported:
|
|
73
|
+
"Env vars supported: OPENCLAW_TWITCH_ACCESS_TOKEN",
|
|
74
74
|
`Docs: ${formatDocsLink("/channels/twitch", "channels/twitch")}`,
|
|
75
75
|
].join("\n"),
|
|
76
76
|
"Twitch setup",
|
|
@@ -205,15 +205,15 @@ async function promptRefreshTokenSetup(
|
|
|
205
205
|
* Configure with env token path (returns early if user chooses env token).
|
|
206
206
|
*/
|
|
207
207
|
async function configureWithEnvToken(
|
|
208
|
-
cfg:
|
|
208
|
+
cfg: OpenClawConfig,
|
|
209
209
|
prompter: WizardPrompter,
|
|
210
210
|
account: TwitchAccountConfig | null,
|
|
211
211
|
envToken: string,
|
|
212
212
|
forceAllowFrom: boolean,
|
|
213
213
|
dmPolicy: ChannelOnboardingDmPolicy,
|
|
214
|
-
): Promise<{ cfg:
|
|
214
|
+
): Promise<{ cfg: OpenClawConfig } | null> {
|
|
215
215
|
const useEnv = await prompter.confirm({
|
|
216
|
-
message: "Twitch env var
|
|
216
|
+
message: "Twitch env var OPENCLAW_TWITCH_ACCESS_TOKEN detected. Use env token?",
|
|
217
217
|
initialValue: true,
|
|
218
218
|
});
|
|
219
219
|
if (!useEnv) {
|
|
@@ -241,10 +241,10 @@ async function configureWithEnvToken(
|
|
|
241
241
|
* Set Twitch access control (role-based)
|
|
242
242
|
*/
|
|
243
243
|
function setTwitchAccessControl(
|
|
244
|
-
cfg:
|
|
244
|
+
cfg: OpenClawConfig,
|
|
245
245
|
allowedRoles: TwitchRole[],
|
|
246
246
|
requireMention: boolean,
|
|
247
|
-
):
|
|
247
|
+
): OpenClawConfig {
|
|
248
248
|
const account = getAccountConfig(cfg, DEFAULT_ACCOUNT_ID);
|
|
249
249
|
if (!account) {
|
|
250
250
|
return cfg;
|
|
@@ -272,7 +272,7 @@ const dmPolicy: ChannelOnboardingDmPolicy = {
|
|
|
272
272
|
setPolicy: (cfg, policy) => {
|
|
273
273
|
const allowedRoles: TwitchRole[] =
|
|
274
274
|
policy === "open" ? ["all"] : policy === "allowlist" ? [] : ["moderator"];
|
|
275
|
-
return setTwitchAccessControl(cfg as
|
|
275
|
+
return setTwitchAccessControl(cfg as OpenClawConfig, allowedRoles, true);
|
|
276
276
|
},
|
|
277
277
|
promptAllowFrom: async ({ cfg, prompter }) => {
|
|
278
278
|
const account = getAccountConfig(cfg, DEFAULT_ACCOUNT_ID);
|
|
@@ -289,7 +289,7 @@ const dmPolicy: ChannelOnboardingDmPolicy = {
|
|
|
289
289
|
.map((s) => s.trim())
|
|
290
290
|
.filter(Boolean);
|
|
291
291
|
|
|
292
|
-
return setTwitchAccount(cfg as
|
|
292
|
+
return setTwitchAccount(cfg as OpenClawConfig, {
|
|
293
293
|
...(account ?? undefined),
|
|
294
294
|
allowFrom,
|
|
295
295
|
});
|
|
@@ -316,7 +316,7 @@ export const twitchOnboardingAdapter: ChannelOnboardingAdapter = {
|
|
|
316
316
|
await noteTwitchSetupHelp(prompter);
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
-
const envToken = process.env.
|
|
319
|
+
const envToken = process.env.OPENCLAW_TWITCH_ACCESS_TOKEN?.trim();
|
|
320
320
|
|
|
321
321
|
// Check if env var is set and config is empty
|
|
322
322
|
if (envToken && !account?.accessToken) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
13
13
|
import { twitchOutbound } from "./outbound.js";
|
|
14
|
-
import type {
|
|
14
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
15
15
|
|
|
16
16
|
// Mock dependencies
|
|
17
17
|
vi.mock("./config.js", () => ({
|
|
@@ -49,7 +49,7 @@ describe("outbound", () => {
|
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
51
|
},
|
|
52
|
-
} as unknown as
|
|
52
|
+
} as unknown as OpenClawConfig;
|
|
53
53
|
|
|
54
54
|
beforeEach(() => {
|
|
55
55
|
vi.clearAllMocks();
|
|
@@ -99,7 +99,7 @@ export const twitchOutbound: ChannelOutboundAdapter = {
|
|
|
99
99
|
*
|
|
100
100
|
* @example
|
|
101
101
|
* const result = await twitchOutbound.sendText({
|
|
102
|
-
* cfg:
|
|
102
|
+
* cfg: openclawConfig,
|
|
103
103
|
* to: "#mychannel",
|
|
104
104
|
* text: "Hello Twitch!",
|
|
105
105
|
* accountId: "default",
|
|
@@ -159,7 +159,7 @@ export const twitchOutbound: ChannelOutboundAdapter = {
|
|
|
159
159
|
*
|
|
160
160
|
* @example
|
|
161
161
|
* const result = await twitchOutbound.sendMedia({
|
|
162
|
-
* cfg:
|
|
162
|
+
* cfg: openclawConfig,
|
|
163
163
|
* to: "#mychannel",
|
|
164
164
|
* text: "Check this out!",
|
|
165
165
|
* mediaUrl: "https://example.com/image.png",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import type {
|
|
2
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
3
3
|
import { twitchPlugin } from "./plugin.js";
|
|
4
4
|
|
|
5
5
|
describe("twitchPlugin.status.buildAccountSnapshot", () => {
|
|
@@ -27,7 +27,7 @@ describe("twitchPlugin.status.buildAccountSnapshot", () => {
|
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
},
|
|
30
|
-
} as
|
|
30
|
+
} as OpenClawConfig;
|
|
31
31
|
|
|
32
32
|
const snapshot = await twitchPlugin.status?.buildAccountSnapshot?.({
|
|
33
33
|
account: secondary,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Twitch channel plugin for
|
|
2
|
+
* Twitch channel plugin for OpenClaw.
|
|
3
3
|
*
|
|
4
4
|
* Main plugin export combining all adapters (outbound, actions, status, gateway).
|
|
5
5
|
* This is the primary entry point for the Twitch channel integration.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type {
|
|
9
|
-
import { buildChannelConfigSchema } from "
|
|
8
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
9
|
+
import { buildChannelConfigSchema } from "openclaw/plugin-sdk";
|
|
10
10
|
import { twitchMessageActions } from "./actions.js";
|
|
11
11
|
import { TwitchConfigSchema } from "./config-schema.js";
|
|
12
12
|
import { DEFAULT_ACCOUNT_ID, getAccountConfig, listAccountIds } from "./config.js";
|
|
@@ -33,7 +33,7 @@ import type {
|
|
|
33
33
|
* Twitch channel plugin.
|
|
34
34
|
*
|
|
35
35
|
* Implements the ChannelPlugin interface to provide Twitch chat integration
|
|
36
|
-
* for
|
|
36
|
+
* for OpenClaw. Supports message sending, receiving, access control, and
|
|
37
37
|
* status monitoring.
|
|
38
38
|
*/
|
|
39
39
|
export const twitchPlugin: ChannelPlugin<TwitchAccountConfig> = {
|
|
@@ -75,10 +75,10 @@ export const twitchPlugin: ChannelPlugin<TwitchAccountConfig> = {
|
|
|
75
75
|
/** Account configuration management */
|
|
76
76
|
config: {
|
|
77
77
|
/** List all configured account IDs */
|
|
78
|
-
listAccountIds: (cfg:
|
|
78
|
+
listAccountIds: (cfg: OpenClawConfig): string[] => listAccountIds(cfg),
|
|
79
79
|
|
|
80
80
|
/** Resolve an account config by ID */
|
|
81
|
-
resolveAccount: (cfg:
|
|
81
|
+
resolveAccount: (cfg: OpenClawConfig, accountId?: string | null): TwitchAccountConfig => {
|
|
82
82
|
const account = getAccountConfig(cfg, accountId ?? DEFAULT_ACCOUNT_ID);
|
|
83
83
|
if (!account) {
|
|
84
84
|
// Return a default/empty account if not configured
|
|
@@ -96,7 +96,7 @@ export const twitchPlugin: ChannelPlugin<TwitchAccountConfig> = {
|
|
|
96
96
|
defaultAccountId: (): string => DEFAULT_ACCOUNT_ID,
|
|
97
97
|
|
|
98
98
|
/** Check if an account is configured */
|
|
99
|
-
isConfigured: (_account: unknown, cfg:
|
|
99
|
+
isConfigured: (_account: unknown, cfg: OpenClawConfig): boolean => {
|
|
100
100
|
const account = getAccountConfig(cfg, DEFAULT_ACCOUNT_ID);
|
|
101
101
|
const tokenResolution = resolveTwitchToken(cfg, { accountId: DEFAULT_ACCOUNT_ID });
|
|
102
102
|
return account ? isAccountConfigured(account, tokenResolution.token) : false;
|
|
@@ -130,7 +130,7 @@ export const twitchPlugin: ChannelPlugin<TwitchAccountConfig> = {
|
|
|
130
130
|
kind,
|
|
131
131
|
runtime,
|
|
132
132
|
}: {
|
|
133
|
-
cfg:
|
|
133
|
+
cfg: OpenClawConfig;
|
|
134
134
|
accountId?: string | null;
|
|
135
135
|
inputs: string[];
|
|
136
136
|
kind: ChannelResolveKind;
|
|
@@ -198,7 +198,7 @@ export const twitchPlugin: ChannelPlugin<TwitchAccountConfig> = {
|
|
|
198
198
|
probe,
|
|
199
199
|
}: {
|
|
200
200
|
account: TwitchAccountConfig;
|
|
201
|
-
cfg:
|
|
201
|
+
cfg: OpenClawConfig;
|
|
202
202
|
runtime?: ChannelAccountSnapshot;
|
|
203
203
|
probe?: unknown;
|
|
204
204
|
}): ChannelAccountSnapshot => {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
14
14
|
import { sendMessageTwitchInternal } from "./send.js";
|
|
15
|
-
import type {
|
|
15
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
16
16
|
|
|
17
17
|
// Mock dependencies
|
|
18
18
|
vi.mock("./config.js", () => ({
|
|
@@ -57,7 +57,7 @@ describe("send", () => {
|
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
|
-
} as unknown as
|
|
60
|
+
} as unknown as OpenClawConfig;
|
|
61
61
|
|
|
62
62
|
beforeEach(() => {
|
|
63
63
|
vi.clearAllMocks();
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { DEFAULT_ACCOUNT_ID, getAccountConfig } from "./config.js";
|
|
9
9
|
import { getClientManager as getRegistryClientManager } from "./client-manager-registry.js";
|
|
10
|
-
import type {
|
|
10
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
11
11
|
import { resolveTwitchToken } from "./token.js";
|
|
12
12
|
import { stripMarkdownForTwitch } from "./utils/markdown.js";
|
|
13
13
|
import { generateMessageId, isAccountConfigured, normalizeTwitchChannel } from "./utils/twitch.js";
|
|
@@ -27,12 +27,12 @@ export interface SendMessageResult {
|
|
|
27
27
|
/**
|
|
28
28
|
* Internal send function used by the outbound adapter.
|
|
29
29
|
*
|
|
30
|
-
* This function has access to the full
|
|
30
|
+
* This function has access to the full OpenClaw config and handles
|
|
31
31
|
* account resolution, markdown stripping, and actual message sending.
|
|
32
32
|
*
|
|
33
33
|
* @param channel - The channel name
|
|
34
34
|
* @param text - The message text
|
|
35
|
-
* @param cfg - Full
|
|
35
|
+
* @param cfg - Full OpenClaw configuration
|
|
36
36
|
* @param accountId - Account ID to use
|
|
37
37
|
* @param stripMarkdown - Whether to strip markdown (default: true)
|
|
38
38
|
* @param logger - Logger instance
|
|
@@ -42,7 +42,7 @@ export interface SendMessageResult {
|
|
|
42
42
|
* const result = await sendMessageTwitchInternal(
|
|
43
43
|
* "#mychannel",
|
|
44
44
|
* "Hello Twitch!",
|
|
45
|
-
*
|
|
45
|
+
* openclawConfig,
|
|
46
46
|
* "default",
|
|
47
47
|
* true,
|
|
48
48
|
* console,
|
|
@@ -51,7 +51,7 @@ export interface SendMessageResult {
|
|
|
51
51
|
export async function sendMessageTwitchInternal(
|
|
52
52
|
channel: string,
|
|
53
53
|
text: string,
|
|
54
|
-
cfg:
|
|
54
|
+
cfg: OpenClawConfig,
|
|
55
55
|
accountId: string = DEFAULT_ACCOUNT_ID,
|
|
56
56
|
stripMarkdown: boolean = true,
|
|
57
57
|
logger: Console = console,
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
12
12
|
import { resolveTwitchToken, type TwitchTokenSource } from "./token.js";
|
|
13
|
-
import type {
|
|
13
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
14
14
|
|
|
15
15
|
describe("token", () => {
|
|
16
16
|
// Multi-account config for testing non-default accounts
|
|
@@ -29,7 +29,7 @@ describe("token", () => {
|
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
|
-
} as unknown as
|
|
32
|
+
} as unknown as OpenClawConfig;
|
|
33
33
|
|
|
34
34
|
// Simplified single-account config
|
|
35
35
|
const mockSimplifiedConfig = {
|
|
@@ -39,7 +39,7 @@ describe("token", () => {
|
|
|
39
39
|
accessToken: "oauth:config-token",
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
|
-
} as unknown as
|
|
42
|
+
} as unknown as OpenClawConfig;
|
|
43
43
|
|
|
44
44
|
beforeEach(() => {
|
|
45
45
|
vi.clearAllMocks();
|
|
@@ -47,7 +47,7 @@ describe("token", () => {
|
|
|
47
47
|
|
|
48
48
|
afterEach(() => {
|
|
49
49
|
vi.restoreAllMocks();
|
|
50
|
-
delete process.env.
|
|
50
|
+
delete process.env.OPENCLAW_TWITCH_ACCESS_TOKEN;
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
describe("resolveTwitchToken", () => {
|
|
@@ -66,7 +66,7 @@ describe("token", () => {
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
it("should prioritize config token over env var (simplified config)", () => {
|
|
69
|
-
process.env.
|
|
69
|
+
process.env.OPENCLAW_TWITCH_ACCESS_TOKEN = "oauth:env-token";
|
|
70
70
|
|
|
71
71
|
const result = resolveTwitchToken(mockSimplifiedConfig, { accountId: "default" });
|
|
72
72
|
|
|
@@ -76,7 +76,7 @@ describe("token", () => {
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
it("should use env var when config token is empty (simplified config)", () => {
|
|
79
|
-
process.env.
|
|
79
|
+
process.env.OPENCLAW_TWITCH_ACCESS_TOKEN = "oauth:env-token";
|
|
80
80
|
|
|
81
81
|
const configWithEmptyToken = {
|
|
82
82
|
channels: {
|
|
@@ -85,7 +85,7 @@ describe("token", () => {
|
|
|
85
85
|
accessToken: "",
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
|
-
} as unknown as
|
|
88
|
+
} as unknown as OpenClawConfig;
|
|
89
89
|
|
|
90
90
|
const result = resolveTwitchToken(configWithEmptyToken, { accountId: "default" });
|
|
91
91
|
|
|
@@ -101,7 +101,7 @@ describe("token", () => {
|
|
|
101
101
|
accessToken: "",
|
|
102
102
|
},
|
|
103
103
|
},
|
|
104
|
-
} as unknown as
|
|
104
|
+
} as unknown as OpenClawConfig;
|
|
105
105
|
|
|
106
106
|
const result = resolveTwitchToken(configWithoutToken, { accountId: "default" });
|
|
107
107
|
|
|
@@ -110,7 +110,7 @@ describe("token", () => {
|
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
it("should not use env var for non-default accounts (multi-account)", () => {
|
|
113
|
-
process.env.
|
|
113
|
+
process.env.OPENCLAW_TWITCH_ACCESS_TOKEN = "oauth:env-token";
|
|
114
114
|
|
|
115
115
|
const configWithoutToken = {
|
|
116
116
|
channels: {
|
|
@@ -123,7 +123,7 @@ describe("token", () => {
|
|
|
123
123
|
},
|
|
124
124
|
},
|
|
125
125
|
},
|
|
126
|
-
} as unknown as
|
|
126
|
+
} as unknown as OpenClawConfig;
|
|
127
127
|
|
|
128
128
|
const result = resolveTwitchToken(configWithoutToken, { accountId: "secondary" });
|
|
129
129
|
|
|
@@ -139,7 +139,7 @@ describe("token", () => {
|
|
|
139
139
|
accounts: {},
|
|
140
140
|
},
|
|
141
141
|
},
|
|
142
|
-
} as unknown as
|
|
142
|
+
} as unknown as OpenClawConfig;
|
|
143
143
|
|
|
144
144
|
const result = resolveTwitchToken(configWithoutAccount, { accountId: "nonexistent" });
|
|
145
145
|
|
|
@@ -150,7 +150,7 @@ describe("token", () => {
|
|
|
150
150
|
it("should handle missing Twitch config section", () => {
|
|
151
151
|
const configWithoutSection = {
|
|
152
152
|
channels: {},
|
|
153
|
-
} as unknown as
|
|
153
|
+
} as unknown as OpenClawConfig;
|
|
154
154
|
|
|
155
155
|
const result = resolveTwitchToken(configWithoutSection, { accountId: "default" });
|
|
156
156
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Twitch access token resolution with environment variable support.
|
|
3
3
|
*
|
|
4
4
|
* Supports reading Twitch OAuth access tokens from config or environment variable.
|
|
5
|
-
* The
|
|
5
|
+
* The OPENCLAW_TWITCH_ACCESS_TOKEN env var is only used for the default account.
|
|
6
6
|
*
|
|
7
7
|
* Token resolution priority:
|
|
8
8
|
* 1. Account access token from merged config (accounts.{id} or base-level for default)
|
|
9
|
-
* 2. Environment variable:
|
|
9
|
+
* 2. Environment variable: OPENCLAW_TWITCH_ACCESS_TOKEN (default account only)
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type {
|
|
12
|
+
import type { OpenClawConfig } from "../../../src/config/config.js";
|
|
13
13
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../../../src/routing/session-key.js";
|
|
14
14
|
|
|
15
15
|
export type TwitchTokenSource = "env" | "config" | "none";
|
|
@@ -35,17 +35,17 @@ function normalizeTwitchToken(raw?: string | null): string | undefined {
|
|
|
35
35
|
*
|
|
36
36
|
* Priority:
|
|
37
37
|
* 1. Account access token (from merged config - base-level for default, or accounts.{accountId})
|
|
38
|
-
* 2. Environment variable:
|
|
38
|
+
* 2. Environment variable: OPENCLAW_TWITCH_ACCESS_TOKEN (default account only)
|
|
39
39
|
*
|
|
40
40
|
* The getAccountConfig function handles merging base-level config with accounts.default,
|
|
41
41
|
* so this logic works for both simplified and multi-account patterns.
|
|
42
42
|
*
|
|
43
|
-
* @param cfg -
|
|
43
|
+
* @param cfg - OpenClaw config
|
|
44
44
|
* @param opts - Options including accountId and optional envToken override
|
|
45
45
|
* @returns Token resolution with source
|
|
46
46
|
*/
|
|
47
47
|
export function resolveTwitchToken(
|
|
48
|
-
cfg?:
|
|
48
|
+
cfg?: OpenClawConfig,
|
|
49
49
|
opts: { accountId?: string | null; envToken?: string | null } = {},
|
|
50
50
|
): TwitchTokenResolution {
|
|
51
51
|
const accountId = normalizeAccountId(opts.accountId);
|
|
@@ -77,7 +77,7 @@ export function resolveTwitchToken(
|
|
|
77
77
|
// Environment variable (default account only)
|
|
78
78
|
const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
|
|
79
79
|
const envToken = allowEnv
|
|
80
|
-
? normalizeTwitchToken(opts.envToken ?? process.env.
|
|
80
|
+
? normalizeTwitchToken(opts.envToken ?? process.env.OPENCLAW_TWITCH_ACCESS_TOKEN)
|
|
81
81
|
: undefined;
|
|
82
82
|
if (envToken) {
|
|
83
83
|
return { token: envToken, source: "env" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RefreshingAuthProvider, StaticAuthProvider } from "@twurple/auth";
|
|
2
2
|
import { ChatClient, LogLevel } from "@twurple/chat";
|
|
3
|
-
import type {
|
|
3
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
4
4
|
import type { ChannelLogSink, TwitchAccountConfig, TwitchChatMessage } from "./types.js";
|
|
5
5
|
import { resolveTwitchToken } from "./token.js";
|
|
6
6
|
import { normalizeToken } from "./utils/twitch.js";
|
|
@@ -76,7 +76,7 @@ export class TwitchClientManager {
|
|
|
76
76
|
*/
|
|
77
77
|
async getClient(
|
|
78
78
|
account: TwitchAccountConfig,
|
|
79
|
-
cfg?:
|
|
79
|
+
cfg?: OpenClawConfig,
|
|
80
80
|
accountId?: string,
|
|
81
81
|
): Promise<ChatClient> {
|
|
82
82
|
const key = this.getAccountKey(account);
|
|
@@ -92,7 +92,7 @@ export class TwitchClientManager {
|
|
|
92
92
|
|
|
93
93
|
if (!tokenResolution.token) {
|
|
94
94
|
this.logger.error(
|
|
95
|
-
`Missing Twitch token for account ${account.username} (set channels.twitch.accounts.${account.username}.token or
|
|
95
|
+
`Missing Twitch token for account ${account.username} (set channels.twitch.accounts.${account.username}.token or OPENCLAW_TWITCH_ACCESS_TOKEN for default)`,
|
|
96
96
|
);
|
|
97
97
|
throw new Error("Missing Twitch token");
|
|
98
98
|
}
|
|
@@ -236,7 +236,7 @@ export class TwitchClientManager {
|
|
|
236
236
|
account: TwitchAccountConfig,
|
|
237
237
|
channel: string,
|
|
238
238
|
message: string,
|
|
239
|
-
cfg?:
|
|
239
|
+
cfg?: OpenClawConfig,
|
|
240
240
|
accountId?: string,
|
|
241
241
|
): Promise<{ ok: boolean; error?: string; messageId?: string }> {
|
|
242
242
|
try {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Twitch channel plugin types.
|
|
3
3
|
*
|
|
4
4
|
* This file defines Twitch-specific types. Generic channel types are imported
|
|
5
|
-
* from
|
|
5
|
+
* from OpenClaw core.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import type {
|
|
@@ -22,7 +22,7 @@ import type {
|
|
|
22
22
|
ChannelResolveResult,
|
|
23
23
|
ChannelStatusAdapter,
|
|
24
24
|
} from "../../../src/channels/plugins/types.adapters.js";
|
|
25
|
-
import type {
|
|
25
|
+
import type { OpenClawConfig } from "../../../src/config/config.js";
|
|
26
26
|
import type { OutboundDeliveryResult } from "../../../src/infra/outbound/deliver.js";
|
|
27
27
|
import type { RuntimeEnv } from "../../../src/runtime.js";
|
|
28
28
|
|
|
@@ -137,5 +137,5 @@ import type { TwitchConfigSchema } from "./config-schema.js";
|
|
|
137
137
|
import type { z } from "zod";
|
|
138
138
|
export type TwitchConfig = z.infer<typeof TwitchConfigSchema>;
|
|
139
139
|
|
|
140
|
-
export type {
|
|
140
|
+
export type { OpenClawConfig };
|
|
141
141
|
export type { RuntimeEnv };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Markdown utilities for Twitch chat
|
|
3
3
|
*
|
|
4
4
|
* Twitch chat doesn't support markdown formatting, so we strip it before sending.
|
|
5
|
-
* Based on
|
|
5
|
+
* Based on OpenClaw's markdownToText in src/agents/tools/web-fetch-utils.ts.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.1.29
|
|
4
|
+
|
|
5
|
+
### Changes
|
|
6
|
+
- Version alignment with core OpenClaw release numbers.
|
|
7
|
+
|
|
3
8
|
## 2026.1.26
|
|
4
9
|
|
|
5
10
|
### Changes
|
|
@@ -11,52 +16,52 @@
|
|
|
11
16
|
## 2026.1.23
|
|
12
17
|
|
|
13
18
|
### Changes
|
|
14
|
-
- Version alignment with core
|
|
19
|
+
- Version alignment with core OpenClaw release numbers.
|
|
15
20
|
|
|
16
21
|
## 2026.1.22
|
|
17
22
|
|
|
18
23
|
### Changes
|
|
19
|
-
- Version alignment with core
|
|
24
|
+
- Version alignment with core OpenClaw release numbers.
|
|
20
25
|
|
|
21
26
|
## 2026.1.21
|
|
22
27
|
|
|
23
28
|
### Changes
|
|
24
|
-
- Version alignment with core
|
|
29
|
+
- Version alignment with core OpenClaw release numbers.
|
|
25
30
|
|
|
26
31
|
## 2026.1.20
|
|
27
32
|
|
|
28
33
|
### Changes
|
|
29
|
-
- Version alignment with core
|
|
34
|
+
- Version alignment with core OpenClaw release numbers.
|
|
30
35
|
|
|
31
36
|
## 2026.1.17-1
|
|
32
37
|
|
|
33
38
|
### Changes
|
|
34
|
-
- Version alignment with core
|
|
39
|
+
- Version alignment with core OpenClaw release numbers.
|
|
35
40
|
|
|
36
41
|
## 2026.1.17
|
|
37
42
|
|
|
38
43
|
### Changes
|
|
39
|
-
- Version alignment with core
|
|
44
|
+
- Version alignment with core OpenClaw release numbers.
|
|
40
45
|
|
|
41
46
|
## 2026.1.16
|
|
42
47
|
|
|
43
48
|
### Changes
|
|
44
|
-
- Version alignment with core
|
|
49
|
+
- Version alignment with core OpenClaw release numbers.
|
|
45
50
|
|
|
46
51
|
## 2026.1.15
|
|
47
52
|
|
|
48
53
|
### Changes
|
|
49
|
-
- Version alignment with core
|
|
54
|
+
- Version alignment with core OpenClaw release numbers.
|
|
50
55
|
|
|
51
56
|
## 2026.1.14
|
|
52
57
|
|
|
53
58
|
### Changes
|
|
54
|
-
- Version alignment with core
|
|
59
|
+
- Version alignment with core OpenClaw release numbers.
|
|
55
60
|
|
|
56
61
|
## 0.1.0
|
|
57
62
|
|
|
58
63
|
### Highlights
|
|
59
|
-
- First public release of the @
|
|
64
|
+
- First public release of the @openclaw/voice-call plugin.
|
|
60
65
|
|
|
61
66
|
### Features
|
|
62
67
|
- Providers: Twilio (Programmable Voice + Media Streams), Telnyx (Call Control v2), and mock provider for local dev.
|
|
@@ -68,6 +73,6 @@
|
|
|
68
73
|
- Speech: OpenAI TTS (model/voice/instructions) with Twilio `<Say>` fallback.
|
|
69
74
|
- Tooling: `voice_call` tool actions for initiate/continue/speak/end/status.
|
|
70
75
|
- Gateway RPC: `voicecall.initiate|continue|speak|end|status` (+ legacy `voicecall.start`).
|
|
71
|
-
- CLI: `
|
|
76
|
+
- CLI: `openclaw voicecall` commands (call/start/continue/speak/end/status/tail/expose).
|
|
72
77
|
- Observability: JSONL call logs and `voicecall tail` for live inspection.
|
|
73
78
|
- Response controls: `responseModel`, `responseSystemPrompt`, and `responseTimeoutMs` for auto‑responses.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @openclaw/voice-call
|
|
2
2
|
|
|
3
|
-
Official Voice Call plugin for **
|
|
3
|
+
Official Voice Call plugin for **OpenClaw**.
|
|
4
4
|
|
|
5
5
|
Providers:
|
|
6
6
|
- **Twilio** (Programmable Voice + Media Streams)
|
|
@@ -8,15 +8,15 @@ Providers:
|
|
|
8
8
|
- **Plivo** (Voice API + XML transfer + GetInput speech)
|
|
9
9
|
- **Mock** (dev/no network)
|
|
10
10
|
|
|
11
|
-
Docs: `https://docs.
|
|
12
|
-
Plugin system: `https://docs.
|
|
11
|
+
Docs: `https://docs.openclaw.ai/plugins/voice-call`
|
|
12
|
+
Plugin system: `https://docs.openclaw.ai/plugin`
|
|
13
13
|
|
|
14
14
|
## Install (local dev)
|
|
15
15
|
|
|
16
|
-
### Option A: install via
|
|
16
|
+
### Option A: install via OpenClaw (recommended)
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
|
|
19
|
+
openclaw plugins install @openclaw/voice-call
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Restart the Gateway afterwards.
|
|
@@ -24,9 +24,9 @@ Restart the Gateway afterwards.
|
|
|
24
24
|
### Option B: copy into your global extensions folder (dev)
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
mkdir -p ~/.
|
|
28
|
-
cp -R extensions/voice-call ~/.
|
|
29
|
-
cd ~/.
|
|
27
|
+
mkdir -p ~/.openclaw/extensions
|
|
28
|
+
cp -R extensions/voice-call ~/.openclaw/extensions/voice-call
|
|
29
|
+
cd ~/.openclaw/extensions/voice-call && pnpm install
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
## Config
|
|
@@ -100,13 +100,13 @@ Notes:
|
|
|
100
100
|
## CLI
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
openclaw voicecall call --to "+15555550123" --message "Hello from OpenClaw"
|
|
104
|
+
openclaw voicecall continue --call-id <id> --message "Any questions?"
|
|
105
|
+
openclaw voicecall speak --call-id <id> --message "One moment"
|
|
106
|
+
openclaw voicecall end --call-id <id>
|
|
107
|
+
openclaw voicecall status --call-id <id>
|
|
108
|
+
openclaw voicecall tail
|
|
109
|
+
openclaw voicecall expose --mode funnel
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
## Tool
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@
|
|
3
|
-
"version": "2026.1.
|
|
2
|
+
"name": "@openclaw/voice-call",
|
|
3
|
+
"version": "2026.1.29",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "OpenClaw voice-call plugin",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@sinclair/typebox": "0.34.47",
|
|
8
8
|
"ws": "^8.19.0",
|
|
9
9
|
"zod": "^4.3.6"
|
|
10
10
|
},
|
|
11
|
-
"
|
|
11
|
+
"openclaw": {
|
|
12
12
|
"extensions": [
|
|
13
13
|
"./index.ts"
|
|
14
14
|
]
|