From 81b239dc984fe2732d6c6589b3bb3981cad3d793 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 14 May 2026 07:39:36 +0100 Subject: [PATCH] build: externalize slack openshell vertex plugins --- AGENTS.md | 3 + CHANGELOG.md | 1 + docs/channels/slack.md | 14 +- docs/gateway/openshell.md | 7 +- docs/plugins/plugin-inventory.md | 64 ++++----- docs/plugins/reference.md | 6 +- docs/plugins/reference/anthropic-vertex.md | 2 +- docs/plugins/reference/openshell.md | 2 +- docs/plugins/reference/slack.md | 2 +- docs/providers/models.md | 4 +- docs/start/wizard.md | 2 +- extensions/anthropic-vertex/package.json | 22 +++- extensions/openshell/package.json | 22 +++- extensions/slack/package.json | 31 ++++- package.json | 8 +- pnpm-lock.yaml | 18 +-- .../lib/bundled-runtime-sidecar-paths.json | 2 - .../official-external-channel-catalog.json | 24 ++++ .../lib/official-external-plugin-catalog.json | 17 +++ .../official-external-provider-catalog.json | 25 ++++ src/agents/anthropic-vertex-stream.test.ts | 121 ++++++++++++++++++ src/agents/anthropic-vertex-stream.ts | 2 +- src/plugin-sdk/anthropic-vertex.ts | 2 +- test/helpers/bundled-runtime-sidecars.ts | 2 +- test/openclaw-npm-postpublish-verify.test.ts | 8 +- 25 files changed, 332 insertions(+), 79 deletions(-) create mode 100644 src/agents/anthropic-vertex-stream.test.ts diff --git a/AGENTS.md b/AGENTS.md index 50d3499d1909..a98b6fff22af 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,6 +31,9 @@ Skills own workflows; root owns hard policy and routing. - Core/tests: no deep plugin internals (`extensions/*/src/**`, `onboard.js`). Use public barrels, SDK facade, generic contracts. - Owner boundary: owner-specific repair/detection/onboarding/auth/defaults/provider behavior lives in owner plugin. Shared/core gets generic seams only. - Dependency ownership follows runtime ownership: plugin-only deps stay plugin-local; root deps only for core imports or intentionally internalized bundled plugin runtime. +- Internal bundled plugins ship in core dist; bundled-only facade loader ok only for them. +- External official plugins own package/deps and are excluded from core dist; core uses registry-aware `facade-runtime` or generic contracts. +- Moving external: update package excludes, official catalogs, docs, tests, and prove core runtime paths resolve installed plugin roots before root-dep removal. - Legacy config repair belongs in `openclaw doctor --fix`, not startup/load-time core migrations. Runtime paths use canonical contracts. - New seams: backward-compatible, documented, versioned. Third-party plugins exist. - Channels are implementation under `src/channels/**`; plugin authors get SDK seams. Providers own auth/catalog/runtime hooks; core owns generic loop. diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e58f81376d2..d02ab646d267 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Docs: https://docs.openclaw.ai ### Changes - Amazon Bedrock: externalize the Bedrock and Bedrock Mantle provider packages so core installs no longer pull AWS SDK dependencies unless those providers are installed. +- Plugins: externalize Slack, OpenShell sandbox, and Anthropic Vertex so their runtime dependency cones install only when those plugins are installed. - Control UI/WebChat: add a persisted auto-scroll mode selector so users can keep the current near-bottom behavior, always follow streaming output, or turn automatic streaming scroll off and use the New messages button manually. Fixes #7648 and #81287. Thanks @BunsDev. - ACP: add `acp.fallbacks` so ACP turns can try configured backup runtime backends when the primary backend is unavailable before any output is emitted. (#69542) Thanks @kaseonedge. diff --git a/docs/channels/slack.md b/docs/channels/slack.md index 4e99b42bc259..5c0c8888319b 100644 --- a/docs/channels/slack.md +++ b/docs/channels/slack.md @@ -41,6 +41,16 @@ Both transports are production-ready and reach feature parity for messaging, sla **Pick HTTP Request URLs** when running multiple Gateway replicas behind a load balancer, when outbound WSS is blocked but inbound HTTPS is allowed, or when you already terminate Slack webhooks at a reverse proxy. +## Install + +Install Slack before configuring the channel: + +```bash +openclaw plugins install @openclaw/slack +``` + +`plugins install` registers and enables the plugin. The plugin still does nothing until you configure the Slack app and channel settings below. See [Plugins](/tools/plugin) for general plugin behavior and install rules. + ## Quick setup @@ -181,7 +191,7 @@ Both transports are production-ready and reach feature parity for messaging, sla - **Recommended** matches the bundled Slack plugin's full feature set: App Home, slash commands, files, reactions, pins, group DMs, and emoji/usergroup reads. Pick **Minimal** when workspace policy restricts scopes — it covers DMs, channel/group history, mentions, and slash commands but drops files, reactions, pins, group-DM (`mpim:*`), `emoji:read`, and `usergroups:read`. See [Manifest and scope checklist](#manifest-and-scope-checklist) for per-scope rationale and additive options like extra slash commands. + **Recommended** matches the Slack plugin's full feature set: App Home, slash commands, files, reactions, pins, group DMs, and emoji/usergroup reads. Pick **Minimal** when workspace policy restricts scopes — it covers DMs, channel/group history, mentions, and slash commands but drops files, reactions, pins, group-DM (`mpim:*`), `emoji:read`, and `usergroups:read`. See [Manifest and scope checklist](#manifest-and-scope-checklist) for per-scope rationale and additive options like extra slash commands. After Slack creates the app: @@ -383,7 +393,7 @@ openclaw gateway - **Recommended** matches the bundled Slack plugin's full feature set; **Minimal** drops files, reactions, pins, group-DM (`mpim:*`), `emoji:read`, and `usergroups:read` for restrictive workspaces. See [Manifest and scope checklist](#manifest-and-scope-checklist) for per-scope rationale. + **Recommended** matches the Slack plugin's full feature set; **Minimal** drops files, reactions, pins, group-DM (`mpim:*`), `emoji:read`, and `usergroups:read` for restrictive workspaces. See [Manifest and scope checklist](#manifest-and-scope-checklist) for per-scope rationale. diff --git a/docs/gateway/openshell.md b/docs/gateway/openshell.md index d24999a27ac4..67d3f965dbfe 100644 --- a/docs/gateway/openshell.md +++ b/docs/gateway/openshell.md @@ -18,6 +18,7 @@ and an optional `mirror` workspace mode. ## Prerequisites +- OpenShell plugin installed (`openclaw plugins install @openclaw/openshell-sandbox`) - The `openshell` CLI installed and on `PATH` (or set a custom path via `plugins.entries.openshell.config.command`) - An OpenShell account with sandbox access @@ -25,7 +26,11 @@ and an optional `mirror` workspace mode. ## Quick start -1. Enable the plugin and set the sandbox backend: +1. Install and enable the plugin, then set the sandbox backend: + +```bash +openclaw plugins install @openclaw/openshell-sandbox +``` ```json5 { diff --git a/docs/plugins/plugin-inventory.md b/docs/plugins/plugin-inventory.md index b56e6a8f344b..5d662922f583 100644 --- a/docs/plugins/plugin-inventory.md +++ b/docs/plugins/plugin-inventory.md @@ -53,7 +53,6 @@ commands. | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [alibaba](/plugins/reference/alibaba) | Adds video generation provider support. | `@openclaw/alibaba-provider`
included in OpenClaw | contracts: videoGenerationProviders | | [anthropic](/plugins/reference/anthropic) | Adds Anthropic model provider support to OpenClaw. | `@openclaw/anthropic-provider`
included in OpenClaw | providers: anthropic; contracts: mediaUnderstandingProviders | -| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
included in OpenClaw | providers: anthropic-vertex | | [arcee](/plugins/reference/arcee) | Adds Arcee model provider support to OpenClaw. | `@openclaw/arcee-provider`
included in OpenClaw | providers: arcee | | [azure-speech](/plugins/reference/azure-speech) | Azure AI Speech text-to-speech (MP3, native Ogg/Opus voice notes, PCM telephony). | `@openclaw/azure-speech`
included in OpenClaw | contracts: speechProviders | | [bonjour](/plugins/reference/bonjour) | Advertise the local OpenClaw gateway over Bonjour/mDNS. | `@openclaw/bonjour`
included in OpenClaw | plugin | @@ -108,7 +107,6 @@ commands. | [opencode](/plugins/reference/opencode) | Adds OpenCode model provider support to OpenClaw. | `@openclaw/opencode-provider`
included in OpenClaw | providers: opencode; contracts: mediaUnderstandingProviders | | [opencode-go](/plugins/reference/opencode-go) | Adds OpenCode Go model provider support to OpenClaw. | `@openclaw/opencode-go-provider`
included in OpenClaw | providers: opencode-go; contracts: mediaUnderstandingProviders | | [openrouter](/plugins/reference/openrouter) | Adds OpenRouter model provider support to OpenClaw. | `@openclaw/openrouter-provider`
included in OpenClaw | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders | -| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
included in OpenClaw | plugin | | [perplexity](/plugins/reference/perplexity) | Adds web search provider support. | `@openclaw/perplexity-plugin`
included in OpenClaw | contracts: webSearchProviders | | [qianfan](/plugins/reference/qianfan) | Adds Qianfan model provider support to OpenClaw. | `@openclaw/qianfan-provider`
included in OpenClaw | providers: qianfan | | [qwen](/plugins/reference/qwen) | Adds Qwen, Qwen Cloud, Model Studio, DashScope model provider support to OpenClaw. | `@openclaw/qwen-provider`
included in OpenClaw | providers: qwen, qwencloud, modelstudio, dashscope; contracts: mediaUnderstandingProviders, videoGenerationProviders | @@ -118,7 +116,6 @@ commands. | [sglang](/plugins/reference/sglang) | Adds SGLang model provider support to OpenClaw. | `@openclaw/sglang-provider`
included in OpenClaw | providers: sglang | | [signal](/plugins/reference/signal) | Adds the Signal channel surface for sending and receiving OpenClaw messages. | `@openclaw/signal`
included in OpenClaw | channels: signal | | [skill-workshop](/plugins/reference/skill-workshop) | Captures repeatable workflows as workspace skills, with pending review, safe writes, and skill prompt refresh. | `@openclaw/skill-workshop`
included in OpenClaw | contracts: tools | -| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
included in OpenClaw | channels: slack | | [stepfun](/plugins/reference/stepfun) | Adds StepFun, StepFun Plan model provider support to OpenClaw. | `@openclaw/stepfun-provider`
included in OpenClaw | providers: stepfun, stepfun-plan | | [synthetic](/plugins/reference/synthetic) | Adds Synthetic model provider support to OpenClaw. | `@openclaw/synthetic-provider`
included in OpenClaw | providers: synthetic | | [tavily](/plugins/reference/tavily) | Adds agent-callable tools. Adds web search provider support. | `@openclaw/tavily-plugin`
included in OpenClaw | contracts: tools, webSearchProviders; skills | @@ -141,35 +138,38 @@ commands. ## Official external packages -| Plugin | Description | Distribution | Surface | -| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | -| [acpx](/plugins/reference/acpx) | Embedded ACP runtime backend with plugin-owned session and transport management. | `@openclaw/acpx`
npm; ClawHub | skills | -| [amazon-bedrock](/plugins/reference/amazon-bedrock) | Adds Amazon Bedrock model provider support to OpenClaw. | `@openclaw/amazon-bedrock-provider`
npm | providers: amazon-bedrock; contracts: memoryEmbeddingProviders | -| [amazon-bedrock-mantle](/plugins/reference/amazon-bedrock-mantle) | Adds Amazon Bedrock Mantle model provider support to OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`
npm | providers: amazon-bedrock-mantle | -| [brave](/plugins/reference/brave) | Adds web search provider support. | `@openclaw/brave-plugin`
npm; ClawHub | contracts: webSearchProviders | -| [codex](/plugins/reference/codex) | Codex app-server harness and Codex-managed GPT model catalog. | `@openclaw/codex`
npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders | -| [diagnostics-otel](/plugins/reference/diagnostics-otel) | OpenClaw diagnostics OpenTelemetry exporter. | `@openclaw/diagnostics-otel`
npm; ClawHub: `clawhub:@openclaw/diagnostics-otel` | plugin | -| [diagnostics-prometheus](/plugins/reference/diagnostics-prometheus) | OpenClaw diagnostics Prometheus exporter. | `@openclaw/diagnostics-prometheus`
npm; ClawHub: `clawhub:@openclaw/diagnostics-prometheus` | plugin | -| [diffs](/plugins/reference/diffs) | Read-only diff viewer and file renderer for agents. | `@openclaw/diffs`
npm; ClawHub | contracts: tools; skills | -| [discord](/plugins/reference/discord) | Adds the Discord channel surface for sending and receiving OpenClaw messages. | `@openclaw/discord`
npm; ClawHub | channels: discord | -| [feishu](/plugins/reference/feishu) | Adds the Feishu channel surface for sending and receiving OpenClaw messages. | `@openclaw/feishu`
npm; ClawHub | channels: feishu; contracts: tools; skills | -| [google-meet](/plugins/reference/google-meet) | Join Google Meet calls through Chrome or Twilio transports. | `@openclaw/google-meet`
npm; ClawHub | contracts: tools | -| [googlechat](/plugins/reference/googlechat) | Adds the Google Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/googlechat`
npm; ClawHub | channels: googlechat | -| [line](/plugins/reference/line) | Adds the LINE channel surface for sending and receiving OpenClaw messages. | `@openclaw/line`
npm; ClawHub | channels: line | -| [lobster](/plugins/reference/lobster) | Typed workflow tool with resumable approvals. | `@openclaw/lobster`
npm; ClawHub | contracts: tools | -| [matrix](/plugins/reference/matrix) | Adds the Matrix channel surface for sending and receiving OpenClaw messages. | `@openclaw/matrix`
ClawHub: `clawhub:@openclaw/matrix`; npm | channels: matrix | -| [memory-lancedb](/plugins/reference/memory-lancedb) | Adds agent-callable tools. | `@openclaw/memory-lancedb`
npm; ClawHub | contracts: tools | -| [msteams](/plugins/reference/msteams) | Adds the Microsoft Teams channel surface for sending and receiving OpenClaw messages. | `@openclaw/msteams`
npm; ClawHub | channels: msteams | -| [nextcloud-talk](/plugins/reference/nextcloud-talk) | Adds the Nextcloud Talk channel surface for sending and receiving OpenClaw messages. | `@openclaw/nextcloud-talk`
npm; ClawHub | channels: nextcloud-talk | -| [nostr](/plugins/reference/nostr) | Adds the Nostr channel surface for sending and receiving OpenClaw messages. | `@openclaw/nostr`
npm; ClawHub | channels: nostr | -| [qqbot](/plugins/reference/qqbot) | Adds the QQ Bot channel surface for sending and receiving OpenClaw messages. | `@openclaw/qqbot`
npm; ClawHub | channels: qqbot; contracts: tools; skills | -| [synology-chat](/plugins/reference/synology-chat) | Adds the Synology Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/synology-chat`
npm; ClawHub | channels: synology-chat | -| [tlon](/plugins/reference/tlon) | Adds the Tlon channel surface for sending and receiving OpenClaw messages. | `@openclaw/tlon`
npm; ClawHub | channels: tlon; contracts: tools; skills | -| [twitch](/plugins/reference/twitch) | Adds the Twitch channel surface for sending and receiving OpenClaw messages. | `@openclaw/twitch`
npm; ClawHub | channels: twitch | -| [voice-call](/plugins/reference/voice-call) | Adds agent-callable tools. | `@openclaw/voice-call`
npm; ClawHub | contracts: tools | -| [whatsapp](/plugins/reference/whatsapp) | Adds the WhatsApp channel surface for sending and receiving OpenClaw messages. | `@openclaw/whatsapp`
ClawHub: `clawhub:@openclaw/whatsapp`; npm | channels: whatsapp | -| [zalo](/plugins/reference/zalo) | Adds the Zalo channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalo`
npm; ClawHub | channels: zalo | -| [zalouser](/plugins/reference/zalouser) | Adds the Zalo Personal channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalouser`
npm; ClawHub | channels: zalouser; contracts: tools | +| Plugin | Description | Distribution | Surface | +| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | +| [acpx](/plugins/reference/acpx) | Embedded ACP runtime backend with plugin-owned session and transport management. | `@openclaw/acpx`
npm; ClawHub | skills | +| [amazon-bedrock](/plugins/reference/amazon-bedrock) | Adds Amazon Bedrock model provider support to OpenClaw. | `@openclaw/amazon-bedrock-provider`
npm | providers: amazon-bedrock; contracts: memoryEmbeddingProviders | +| [amazon-bedrock-mantle](/plugins/reference/amazon-bedrock-mantle) | Adds Amazon Bedrock Mantle model provider support to OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`
npm | providers: amazon-bedrock-mantle | +| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
npm; ClawHub | providers: anthropic-vertex | +| [brave](/plugins/reference/brave) | Adds web search provider support. | `@openclaw/brave-plugin`
npm; ClawHub | contracts: webSearchProviders | +| [codex](/plugins/reference/codex) | Codex app-server harness and Codex-managed GPT model catalog. | `@openclaw/codex`
npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders | +| [diagnostics-otel](/plugins/reference/diagnostics-otel) | OpenClaw diagnostics OpenTelemetry exporter. | `@openclaw/diagnostics-otel`
npm; ClawHub: `clawhub:@openclaw/diagnostics-otel` | plugin | +| [diagnostics-prometheus](/plugins/reference/diagnostics-prometheus) | OpenClaw diagnostics Prometheus exporter. | `@openclaw/diagnostics-prometheus`
npm; ClawHub: `clawhub:@openclaw/diagnostics-prometheus` | plugin | +| [diffs](/plugins/reference/diffs) | Read-only diff viewer and file renderer for agents. | `@openclaw/diffs`
npm; ClawHub | contracts: tools; skills | +| [discord](/plugins/reference/discord) | Adds the Discord channel surface for sending and receiving OpenClaw messages. | `@openclaw/discord`
npm; ClawHub | channels: discord | +| [feishu](/plugins/reference/feishu) | Adds the Feishu channel surface for sending and receiving OpenClaw messages. | `@openclaw/feishu`
npm; ClawHub | channels: feishu; contracts: tools; skills | +| [google-meet](/plugins/reference/google-meet) | Join Google Meet calls through Chrome or Twilio transports. | `@openclaw/google-meet`
npm; ClawHub | contracts: tools | +| [googlechat](/plugins/reference/googlechat) | Adds the Google Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/googlechat`
npm; ClawHub | channels: googlechat | +| [line](/plugins/reference/line) | Adds the LINE channel surface for sending and receiving OpenClaw messages. | `@openclaw/line`
npm; ClawHub | channels: line | +| [lobster](/plugins/reference/lobster) | Typed workflow tool with resumable approvals. | `@openclaw/lobster`
npm; ClawHub | contracts: tools | +| [matrix](/plugins/reference/matrix) | Adds the Matrix channel surface for sending and receiving OpenClaw messages. | `@openclaw/matrix`
ClawHub: `clawhub:@openclaw/matrix`; npm | channels: matrix | +| [memory-lancedb](/plugins/reference/memory-lancedb) | Adds agent-callable tools. | `@openclaw/memory-lancedb`
npm; ClawHub | contracts: tools | +| [msteams](/plugins/reference/msteams) | Adds the Microsoft Teams channel surface for sending and receiving OpenClaw messages. | `@openclaw/msteams`
npm; ClawHub | channels: msteams | +| [nextcloud-talk](/plugins/reference/nextcloud-talk) | Adds the Nextcloud Talk channel surface for sending and receiving OpenClaw messages. | `@openclaw/nextcloud-talk`
npm; ClawHub | channels: nextcloud-talk | +| [nostr](/plugins/reference/nostr) | Adds the Nostr channel surface for sending and receiving OpenClaw messages. | `@openclaw/nostr`
npm; ClawHub | channels: nostr | +| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin | +| [qqbot](/plugins/reference/qqbot) | Adds the QQ Bot channel surface for sending and receiving OpenClaw messages. | `@openclaw/qqbot`
npm; ClawHub | channels: qqbot; contracts: tools; skills | +| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
npm; ClawHub | channels: slack | +| [synology-chat](/plugins/reference/synology-chat) | Adds the Synology Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/synology-chat`
npm; ClawHub | channels: synology-chat | +| [tlon](/plugins/reference/tlon) | Adds the Tlon channel surface for sending and receiving OpenClaw messages. | `@openclaw/tlon`
npm; ClawHub | channels: tlon; contracts: tools; skills | +| [twitch](/plugins/reference/twitch) | Adds the Twitch channel surface for sending and receiving OpenClaw messages. | `@openclaw/twitch`
npm; ClawHub | channels: twitch | +| [voice-call](/plugins/reference/voice-call) | Adds agent-callable tools. | `@openclaw/voice-call`
npm; ClawHub | contracts: tools | +| [whatsapp](/plugins/reference/whatsapp) | Adds the WhatsApp channel surface for sending and receiving OpenClaw messages. | `@openclaw/whatsapp`
ClawHub: `clawhub:@openclaw/whatsapp`; npm | channels: whatsapp | +| [zalo](/plugins/reference/zalo) | Adds the Zalo channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalo`
npm; ClawHub | channels: zalo | +| [zalouser](/plugins/reference/zalouser) | Adds the Zalo Personal channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalouser`
npm; ClawHub | channels: zalouser; contracts: tools | ## Source checkout only diff --git a/docs/plugins/reference.md b/docs/plugins/reference.md index cbd8400384f1..6ae5dfa506b4 100644 --- a/docs/plugins/reference.md +++ b/docs/plugins/reference.md @@ -22,7 +22,7 @@ pnpm plugins:inventory:gen | [amazon-bedrock](/plugins/reference/amazon-bedrock) | Adds Amazon Bedrock model provider support to OpenClaw. | `@openclaw/amazon-bedrock-provider`
npm | providers: amazon-bedrock; contracts: memoryEmbeddingProviders | | [amazon-bedrock-mantle](/plugins/reference/amazon-bedrock-mantle) | Adds Amazon Bedrock Mantle model provider support to OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`
npm | providers: amazon-bedrock-mantle | | [anthropic](/plugins/reference/anthropic) | Adds Anthropic model provider support to OpenClaw. | `@openclaw/anthropic-provider`
included in OpenClaw | providers: anthropic; contracts: mediaUnderstandingProviders | -| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
included in OpenClaw | providers: anthropic-vertex | +| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
npm; ClawHub | providers: anthropic-vertex | | [arcee](/plugins/reference/arcee) | Adds Arcee model provider support to OpenClaw. | `@openclaw/arcee-provider`
included in OpenClaw | providers: arcee | | [azure-speech](/plugins/reference/azure-speech) | Azure AI Speech text-to-speech (MP3, native Ogg/Opus voice notes, PCM telephony). | `@openclaw/azure-speech`
included in OpenClaw | contracts: speechProviders | | [bonjour](/plugins/reference/bonjour) | Advertise the local OpenClaw gateway over Bonjour/mDNS. | `@openclaw/bonjour`
included in OpenClaw | plugin | @@ -93,7 +93,7 @@ pnpm plugins:inventory:gen | [opencode](/plugins/reference/opencode) | Adds OpenCode model provider support to OpenClaw. | `@openclaw/opencode-provider`
included in OpenClaw | providers: opencode; contracts: mediaUnderstandingProviders | | [opencode-go](/plugins/reference/opencode-go) | Adds OpenCode Go model provider support to OpenClaw. | `@openclaw/opencode-go-provider`
included in OpenClaw | providers: opencode-go; contracts: mediaUnderstandingProviders | | [openrouter](/plugins/reference/openrouter) | Adds OpenRouter model provider support to OpenClaw. | `@openclaw/openrouter-provider`
included in OpenClaw | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders | -| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
included in OpenClaw | plugin | +| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin | | [perplexity](/plugins/reference/perplexity) | Adds web search provider support. | `@openclaw/perplexity-plugin`
included in OpenClaw | contracts: webSearchProviders | | [qa-channel](/plugins/reference/qa-channel) | Adds the QA Channel surface for sending and receiving OpenClaw messages. | `@openclaw/qa-channel`
source checkout only | channels: qa-channel | | [qa-lab](/plugins/reference/qa-lab) | OpenClaw QA lab plugin with private debugger UI and scenario runner. | `@openclaw/qa-lab`
source checkout only | plugin | @@ -107,7 +107,7 @@ pnpm plugins:inventory:gen | [sglang](/plugins/reference/sglang) | Adds SGLang model provider support to OpenClaw. | `@openclaw/sglang-provider`
included in OpenClaw | providers: sglang | | [signal](/plugins/reference/signal) | Adds the Signal channel surface for sending and receiving OpenClaw messages. | `@openclaw/signal`
included in OpenClaw | channels: signal | | [skill-workshop](/plugins/reference/skill-workshop) | Captures repeatable workflows as workspace skills, with pending review, safe writes, and skill prompt refresh. | `@openclaw/skill-workshop`
included in OpenClaw | contracts: tools | -| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
included in OpenClaw | channels: slack | +| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
npm; ClawHub | channels: slack | | [stepfun](/plugins/reference/stepfun) | Adds StepFun, StepFun Plan model provider support to OpenClaw. | `@openclaw/stepfun-provider`
included in OpenClaw | providers: stepfun, stepfun-plan | | [synology-chat](/plugins/reference/synology-chat) | Adds the Synology Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/synology-chat`
npm; ClawHub | channels: synology-chat | | [synthetic](/plugins/reference/synthetic) | Adds Synthetic model provider support to OpenClaw. | `@openclaw/synthetic-provider`
included in OpenClaw | providers: synthetic | diff --git a/docs/plugins/reference/anthropic-vertex.md b/docs/plugins/reference/anthropic-vertex.md index 4084e6b2cd13..295509103447 100644 --- a/docs/plugins/reference/anthropic-vertex.md +++ b/docs/plugins/reference/anthropic-vertex.md @@ -12,7 +12,7 @@ Adds Anthropic Vertex model provider support to OpenClaw. ## Distribution - Package: `@openclaw/anthropic-vertex-provider` -- Install route: included in OpenClaw +- Install route: npm; ClawHub ## Surface diff --git a/docs/plugins/reference/openshell.md b/docs/plugins/reference/openshell.md index 43de142399cb..5f8ff3a947af 100644 --- a/docs/plugins/reference/openshell.md +++ b/docs/plugins/reference/openshell.md @@ -12,7 +12,7 @@ Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-base ## Distribution - Package: `@openclaw/openshell-sandbox` -- Install route: included in OpenClaw +- Install route: npm; ClawHub ## Surface diff --git a/docs/plugins/reference/slack.md b/docs/plugins/reference/slack.md index 7d769e0568c1..77d31ec653d1 100644 --- a/docs/plugins/reference/slack.md +++ b/docs/plugins/reference/slack.md @@ -12,7 +12,7 @@ Adds the Slack channel surface for sending and receiving OpenClaw messages. ## Distribution - Package: `@openclaw/slack` -- Install route: included in OpenClaw +- Install route: npm; ClawHub ## Surface diff --git a/docs/providers/models.md b/docs/providers/models.md index 4d6d0c066d82..a96cd76d47a8 100644 --- a/docs/providers/models.md +++ b/docs/providers/models.md @@ -49,9 +49,9 @@ model as `provider/model`. - [xAI](/providers/xai) - [Z.AI](/providers/zai) -## Additional bundled provider variants +## Additional provider variants -- `anthropic-vertex` - implicit Anthropic on Google Vertex support when Vertex credentials are available; no separate onboarding auth choice +- `anthropic-vertex` - install `@openclaw/anthropic-vertex-provider` for implicit Anthropic on Google Vertex support when Vertex credentials are available; no separate onboarding auth choice - `copilot-proxy` - local VS Code Copilot Proxy bridge; use `openclaw onboard --auth-choice copilot-proxy` - `google-gemini-cli` - unofficial Gemini CLI OAuth flow; requires a local `gemini` install (`brew install gemini-cli` or `npm install -g @google/gemini-cli`); default model `google-gemini-cli/gemini-3-flash-preview`; use `openclaw onboard --auth-choice google-gemini-cli` or `openclaw models auth login --provider google-gemini-cli --set-default` diff --git a/docs/start/wizard.md b/docs/start/wizard.md index 046f429cd87a..fc17f1af3e17 100644 --- a/docs/start/wizard.md +++ b/docs/start/wizard.md @@ -77,7 +77,7 @@ Onboarding starts with **QuickStart** (defaults) vs **Advanced** (full control). 3. **Gateway** — Port, bind address, auth mode, Tailscale exposure. In interactive token mode, choose default plaintext token storage or opt into SecretRef. Non-interactive token SecretRef path: `--gateway-token-ref-env `. -4. **Channels** — built-in and bundled chat channels such as iMessage, Discord, Feishu, Google Chat, Mattermost, Microsoft Teams, QQ Bot, Signal, Slack, Telegram, WhatsApp, and more. +4. **Channels** — built-in and official plugin chat channels such as iMessage, Discord, Feishu, Google Chat, Mattermost, Microsoft Teams, QQ Bot, Signal, Slack, Telegram, WhatsApp, and more. 5. **Daemon** — Installs a LaunchAgent (macOS), systemd user unit (Linux/WSL2), or native Windows Scheduled Task with per-user Startup-folder fallback. If token auth requires a token and `gateway.auth.token` is SecretRef-managed, daemon install validates it but does not persist the resolved token into supervisor service environment metadata. If token auth requires a token and the configured token SecretRef is unresolved, daemon install is blocked with actionable guidance. diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json index 93d012175b8b..70dcbe9582f3 100644 --- a/extensions/anthropic-vertex/package.json +++ b/extensions/anthropic-vertex/package.json @@ -1,8 +1,11 @@ { "name": "@openclaw/anthropic-vertex-provider", "version": "2026.5.12-beta.1", - "private": true, "description": "OpenClaw Anthropic Vertex provider plugin", + "repository": { + "type": "git", + "url": "https://github.com/openclaw/openclaw" + }, "type": "module", "dependencies": { "@anthropic-ai/vertex-sdk": "0.16.0", @@ -15,6 +18,21 @@ "openclaw": { "extensions": [ "./index.ts" - ] + ], + "install": { + "npmSpec": "@openclaw/anthropic-vertex-provider", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + }, + "compat": { + "pluginApi": ">=2026.5.12-beta.1" + }, + "build": { + "openclawVersion": "2026.5.12-beta.1" + }, + "release": { + "publishToClawHub": true, + "publishToNpm": true + } } } diff --git a/extensions/openshell/package.json b/extensions/openshell/package.json index 485af14ff26d..4de420f59bb7 100644 --- a/extensions/openshell/package.json +++ b/extensions/openshell/package.json @@ -1,8 +1,11 @@ { "name": "@openclaw/openshell-sandbox", "version": "2026.5.12-beta.1", - "private": true, "description": "OpenClaw OpenShell sandbox backend", + "repository": { + "type": "git", + "url": "https://github.com/openclaw/openclaw" + }, "type": "module", "dependencies": { "openshell": "0.1.0", @@ -14,6 +17,21 @@ "openclaw": { "extensions": [ "./index.ts" - ] + ], + "install": { + "npmSpec": "@openclaw/openshell-sandbox", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + }, + "compat": { + "pluginApi": ">=2026.5.12-beta.1" + }, + "build": { + "openclawVersion": "2026.5.12-beta.1" + }, + "release": { + "publishToClawHub": true, + "publishToNpm": true + } } } diff --git a/extensions/slack/package.json b/extensions/slack/package.json index 3f27983b3b44..8d1396c1acb8 100644 --- a/extensions/slack/package.json +++ b/extensions/slack/package.json @@ -1,8 +1,11 @@ { "name": "@openclaw/slack", "version": "2026.5.12-beta.1", - "private": true, "description": "OpenClaw Slack channel plugin", + "repository": { + "type": "git", + "url": "https://github.com/openclaw/openclaw" + }, "type": "module", "dependencies": { "@slack/bolt": "4.7.2", @@ -13,7 +16,16 @@ "zod": "4.4.3" }, "devDependencies": { - "@openclaw/plugin-sdk": "workspace:*" + "@openclaw/plugin-sdk": "workspace:*", + "openclaw": "workspace:*" + }, + "peerDependencies": { + "openclaw": ">=2026.5.12-beta.1" + }, + "peerDependenciesMeta": { + "openclaw": { + "optional": true + } }, "openclaw": { "extensions": [ @@ -45,6 +57,21 @@ "specifier": "./configured-state", "exportName": "hasSlackConfiguredState" } + }, + "install": { + "npmSpec": "@openclaw/slack", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + }, + "compat": { + "pluginApi": ">=2026.5.12-beta.1" + }, + "build": { + "openclawVersion": "2026.5.12-beta.1" + }, + "release": { + "publishToClawHub": true, + "publishToNpm": true } } } diff --git a/package.json b/package.json index 6e37e10f5c34..2c50088ca289 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "!dist/extensions/acpx/**", "!dist/extensions/amazon-bedrock/**", "!dist/extensions/amazon-bedrock-mantle/**", + "!dist/extensions/anthropic-vertex/**", "!dist/extensions/node_modules/**", "!dist/extensions/*/node_modules/**", "!dist/extensions/brave/**", @@ -56,6 +57,8 @@ "!dist/extensions/qa-channel/**", "!dist/extensions/qa-lab/**", "!dist/extensions/qa-matrix/**", + "!dist/extensions/openshell/**", + "!dist/extensions/slack/**", "!dist/extensions/synology-chat/**", "!dist/extensions/tlon/**", "!dist/extensions/twitch/**", @@ -1749,7 +1752,6 @@ }, "dependencies": { "@agentclientprotocol/sdk": "0.21.0", - "@anthropic-ai/vertex-sdk": "0.16.0", "@clack/core": "1.3.0", "@clack/prompts": "1.3.0", "@earendil-works/pi-agent-core": "0.74.0", @@ -1764,9 +1766,6 @@ "@modelcontextprotocol/sdk": "1.29.0", "@mozilla/readability": "0.6.0", "@openclaw/fs-safe": "0.2.3", - "@slack/bolt": "4.7.2", - "@slack/types": "2.21.1", - "@slack/web-api": "7.15.2", "ajv": "8.20.0", "chalk": "5.6.2", "chokidar": "5.0.0", @@ -1788,7 +1787,6 @@ "minimatch": "10.2.5", "node-edge-tts": "1.2.10", "openai": "6.37.0", - "openshell": "0.1.0", "pdfjs-dist": "5.7.284", "playwright-core": "1.60.0", "proxy-agent": "8.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a2135c522a8..6a92da1a111e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,9 +44,6 @@ importers: '@agentclientprotocol/sdk': specifier: 0.21.0 version: 0.21.0(zod@4.4.3) - '@anthropic-ai/vertex-sdk': - specifier: 0.16.0 - version: 0.16.0(zod@4.4.3) '@clack/core': specifier: 1.3.0 version: 1.3.0 @@ -89,15 +86,6 @@ importers: '@openclaw/fs-safe': specifier: 0.2.3 version: 0.2.3 - '@slack/bolt': - specifier: 4.7.2 - version: 4.7.2(@types/express@5.0.6) - '@slack/types': - specifier: 2.21.1 - version: 2.21.1 - '@slack/web-api': - specifier: 7.15.2 - version: 7.15.2 ajv: specifier: 8.20.0 version: 8.20.0 @@ -161,9 +149,6 @@ importers: openai: specifier: 6.37.0 version: 6.37.0(ws@8.20.0)(zod@4.4.3) - openshell: - specifier: 0.1.0 - version: 0.1.0 pdfjs-dist: specifier: 5.7.284 version: 5.7.284 @@ -1418,6 +1403,9 @@ importers: '@openclaw/plugin-sdk': specifier: workspace:* version: link:../../packages/plugin-sdk + openclaw: + specifier: workspace:* + version: link:../.. extensions/speech-core: devDependencies: diff --git a/scripts/lib/bundled-runtime-sidecar-paths.json b/scripts/lib/bundled-runtime-sidecar-paths.json index 29ce509e5da4..b3402442b670 100644 --- a/scripts/lib/bundled-runtime-sidecar-paths.json +++ b/scripts/lib/bundled-runtime-sidecar-paths.json @@ -12,8 +12,6 @@ "dist/extensions/ollama/runtime-api.js", "dist/extensions/open-prose/runtime-api.js", "dist/extensions/signal/runtime-api.js", - "dist/extensions/slack/runtime-api.js", - "dist/extensions/slack/runtime-setter-api.js", "dist/extensions/telegram/runtime-api.js", "dist/extensions/telegram/runtime-setter-api.js", "dist/extensions/tokenjuice/runtime-api.js", diff --git a/scripts/lib/official-external-channel-catalog.json b/scripts/lib/official-external-channel-catalog.json index 1048a5d102db..b975cba6ef8e 100644 --- a/scripts/lib/official-external-channel-catalog.json +++ b/scripts/lib/official-external-channel-catalog.json @@ -392,6 +392,30 @@ } } }, + { + "name": "@openclaw/slack", + "description": "OpenClaw Slack channel plugin", + "source": "official", + "kind": "channel", + "openclaw": { + "channel": { + "id": "slack", + "label": "Slack", + "selectionLabel": "Slack (Socket Mode)", + "detailLabel": "Slack Bot", + "docsPath": "/channels/slack", + "docsLabel": "slack", + "blurb": "supported (Socket Mode).", + "systemImage": "number", + "markdownCapable": true + }, + "install": { + "npmSpec": "@openclaw/slack", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + } + } + }, { "name": "@openclaw/synology-chat", "description": "Synology Chat channel plugin for OpenClaw", diff --git a/scripts/lib/official-external-plugin-catalog.json b/scripts/lib/official-external-plugin-catalog.json index dd2c50a46d7d..0d5ddb566141 100644 --- a/scripts/lib/official-external-plugin-catalog.json +++ b/scripts/lib/official-external-plugin-catalog.json @@ -153,6 +153,23 @@ } } }, + { + "name": "@openclaw/openshell-sandbox", + "description": "OpenClaw OpenShell sandbox backend", + "source": "official", + "kind": "plugin", + "openclaw": { + "plugin": { + "id": "openshell", + "label": "OpenShell Sandbox" + }, + "install": { + "npmSpec": "@openclaw/openshell-sandbox", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + } + } + }, { "name": "@openclaw/voice-call", "description": "OpenClaw voice-call plugin", diff --git a/scripts/lib/official-external-provider-catalog.json b/scripts/lib/official-external-provider-catalog.json index 2bd1509bc7c0..8fc0130f41f9 100644 --- a/scripts/lib/official-external-provider-catalog.json +++ b/scripts/lib/official-external-provider-catalog.json @@ -50,6 +50,31 @@ } } }, + { + "name": "@openclaw/anthropic-vertex-provider", + "description": "OpenClaw Anthropic Vertex provider plugin", + "source": "official", + "kind": "provider", + "openclaw": { + "plugin": { + "id": "anthropic-vertex", + "label": "Anthropic Vertex" + }, + "providers": [ + { + "id": "anthropic-vertex", + "name": "Anthropic Vertex", + "docs": "/providers/models", + "categories": ["cloud", "llm"] + } + ], + "install": { + "npmSpec": "@openclaw/anthropic-vertex-provider", + "defaultChoice": "npm", + "minHostVersion": ">=2026.5.12-beta.1" + } + } + }, { "name": "@openclaw/codex", "description": "OpenClaw Codex harness and model provider plugin", diff --git a/src/agents/anthropic-vertex-stream.test.ts b/src/agents/anthropic-vertex-stream.test.ts new file mode 100644 index 000000000000..39c910cc0d3d --- /dev/null +++ b/src/agents/anthropic-vertex-stream.test.ts @@ -0,0 +1,121 @@ +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { afterEach, describe, expect, it, vi } from "vitest"; +import { + clearRuntimeConfigSnapshot, + setRuntimeConfigSnapshot, +} from "../config/runtime-snapshot.js"; +import { resetFacadeRuntimeStateForTest } from "../plugin-sdk/facade-runtime.js"; +import { setBundledPluginsDirOverrideForTest } from "../plugins/bundled-dir.js"; +import { writePersistedInstalledPluginIndexInstallRecordsSync } from "../plugins/installed-plugin-index-records.js"; + +const originalBundledPluginsDir = process.env.OPENCLAW_BUNDLED_PLUGINS_DIR; +const originalDisableBundledPlugins = process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS; +const originalStateDir = process.env.OPENCLAW_STATE_DIR; +const tempDirs: string[] = []; + +function makeTempDir(prefix: string): string { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), prefix)); + tempDirs.push(dir); + return dir; +} + +function writeExternalAnthropicVertexPlugin(rootDir: string): void { + fs.mkdirSync(rootDir, { recursive: true }); + fs.writeFileSync( + path.join(rootDir, "package.json"), + JSON.stringify({ + name: "@openclaw/anthropic-vertex-provider", + version: "0.0.0", + type: "module", + openclaw: { + extensions: ["./index.js", "./api.js"], + }, + }), + "utf8", + ); + fs.writeFileSync( + path.join(rootDir, "openclaw.plugin.json"), + JSON.stringify({ + id: "anthropic-vertex", + providers: ["anthropic-vertex"], + configSchema: { type: "object", additionalProperties: false, properties: {} }, + }), + "utf8", + ); + fs.writeFileSync( + path.join(rootDir, "api.js"), + [ + "export function createAnthropicVertexStreamFnForModel(model, env) {", + " return async () => ({ marker: 'external-vertex', baseUrl: model.baseUrl, envMarker: env.OPENCLAW_TEST_MARKER });", + "}", + "", + ].join("\n"), + "utf8", + ); + fs.writeFileSync(path.join(rootDir, "index.js"), "export default {};\n", "utf8"); +} + +afterEach(() => { + vi.resetModules(); + clearRuntimeConfigSnapshot(); + resetFacadeRuntimeStateForTest(); + setBundledPluginsDirOverrideForTest(undefined); + if (originalBundledPluginsDir === undefined) { + delete process.env.OPENCLAW_BUNDLED_PLUGINS_DIR; + } else { + process.env.OPENCLAW_BUNDLED_PLUGINS_DIR = originalBundledPluginsDir; + } + if (originalDisableBundledPlugins === undefined) { + delete process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS; + } else { + process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS = originalDisableBundledPlugins; + } + if (originalStateDir === undefined) { + delete process.env.OPENCLAW_STATE_DIR; + } else { + process.env.OPENCLAW_STATE_DIR = originalStateDir; + } + for (const dir of tempDirs.splice(0)) { + fs.rmSync(dir, { recursive: true, force: true }); + } +}); + +describe("anthropic-vertex stream facade", () => { + it("loads the stream facade from an installed external provider when bundled surfaces are absent", async () => { + const bundledDir = makeTempDir("openclaw-empty-bundled-vertex-"); + const stateDir = makeTempDir("openclaw-state-vertex-"); + const pluginRoot = makeTempDir("openclaw-external-vertex-"); + writeExternalAnthropicVertexPlugin(pluginRoot); + writePersistedInstalledPluginIndexInstallRecordsSync( + { + "anthropic-vertex": { + source: "npm", + spec: "@openclaw/anthropic-vertex-provider", + installPath: pluginRoot, + resolvedName: "@openclaw/anthropic-vertex-provider", + resolvedVersion: "0.0.0", + }, + }, + { stateDir }, + ); + process.env.OPENCLAW_BUNDLED_PLUGINS_DIR = bundledDir; + process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS = "1"; + process.env.OPENCLAW_STATE_DIR = stateDir; + setBundledPluginsDirOverrideForTest(bundledDir); + setRuntimeConfigSnapshot({}); + + const { createAnthropicVertexStreamFnForModel } = await import("./anthropic-vertex-stream.js"); + const streamFn = createAnthropicVertexStreamFnForModel( + { baseUrl: "https://us-central1-aiplatform.googleapis.com" }, + { OPENCLAW_TEST_MARKER: "registry" }, + ); + + await expect(streamFn({} as never, {} as never, {} as never)).resolves.toEqual({ + marker: "external-vertex", + baseUrl: "https://us-central1-aiplatform.googleapis.com", + envMarker: "registry", + }); + }); +}); diff --git a/src/agents/anthropic-vertex-stream.ts b/src/agents/anthropic-vertex-stream.ts index 0594832c2903..c1fc2263babb 100644 --- a/src/agents/anthropic-vertex-stream.ts +++ b/src/agents/anthropic-vertex-stream.ts @@ -1,5 +1,5 @@ import type { StreamFn } from "@earendil-works/pi-agent-core"; -import { loadBundledPluginPublicSurfaceModuleSync } from "../plugin-sdk/facade-loader.js"; +import { loadBundledPluginPublicSurfaceModuleSync } from "../plugin-sdk/facade-runtime.js"; type AnthropicVertexStreamFacade = { createAnthropicVertexStreamFn: ( diff --git a/src/plugin-sdk/anthropic-vertex.ts b/src/plugin-sdk/anthropic-vertex.ts index d67c6c937bfe..d6ec752204a6 100644 --- a/src/plugin-sdk/anthropic-vertex.ts +++ b/src/plugin-sdk/anthropic-vertex.ts @@ -1,5 +1,5 @@ import type { ModelProviderConfig } from "../config/types.js"; -import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-loader.js"; +import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-runtime.js"; type FacadeModule = { resolveAnthropicVertexClientRegion: (params?: { diff --git a/test/helpers/bundled-runtime-sidecars.ts b/test/helpers/bundled-runtime-sidecars.ts index b83544955ef2..e59a14f47ab0 100644 --- a/test/helpers/bundled-runtime-sidecars.ts +++ b/test/helpers/bundled-runtime-sidecars.ts @@ -1,5 +1,5 @@ export const TEST_BUNDLED_RUNTIME_SIDECAR_PATHS = [ "dist/extensions/discord/runtime-api.js", - "dist/extensions/slack/helper-api.js", + "dist/extensions/telegram/runtime-api.js", "dist/extensions/telegram/thread-bindings-runtime.js", ] as const; diff --git a/test/openclaw-npm-postpublish-verify.test.ts b/test/openclaw-npm-postpublish-verify.test.ts index 0774a153922b..659252922e63 100644 --- a/test/openclaw-npm-postpublish-verify.test.ts +++ b/test/openclaw-npm-postpublish-verify.test.ts @@ -79,15 +79,15 @@ describe("collectInstalledPackageErrors", () => { try { writeFileSync(join(packageRoot, "package.json"), '{"version":"2026.3.23"}\n', "utf8"); - mkdirSync(join(packageRoot, "dist", "extensions", "slack"), { recursive: true }); + mkdirSync(join(packageRoot, "dist", "extensions", "telegram"), { recursive: true }); writeFileSync( - join(packageRoot, "dist", "extensions", "slack", "package.json"), + join(packageRoot, "dist", "extensions", "telegram", "package.json"), "{}\n", "utf8", ); expect(collectInstalledBundledRuntimeSidecarPaths(packageRoot)).toContain( - "dist/extensions/slack/runtime-api.js", + "dist/extensions/telegram/runtime-api.js", ); expect( collectInstalledPackageErrors({ @@ -96,7 +96,7 @@ describe("collectInstalledPackageErrors", () => { packageRoot, }), ).toContain( - "installed package is missing required bundled runtime sidecar: dist/extensions/slack/runtime-api.js", + "installed package is missing required bundled runtime sidecar: dist/extensions/telegram/runtime-api.js", ); } finally { rmSync(packageRoot, { recursive: true, force: true });