Summary
MeshClaw (v0.2.2 / main) fails to load on current OpenClaw because it imports
from openclaw/plugin-sdk/irc, a subpath that no longer exists in the OpenClaw
plugin SDK. The grab-bag irc module was removed and its exports redistributed
into focused subpaths (plus a temporary compat umbrella).
Environment
- OpenClaw 2026.5.28 (
e932160)
- MeshClaw v0.2.2 (
main, 379da00), installed via openclaw plugins install --link
- Node 22
Error
ERR_PACKAGE_PATH_NOT_EXPORTED: Package subpath './plugin-sdk/irc' is not defined
by "exports" in /usr/lib/node_modules/openclaw/package.json
Confirmed against the package's exports map:
irc: false ← removed
matrix: true ← still exists, but the symbols MeshClaw imports from it moved
compat: true ← temporary umbrella (deprecation-warned at runtime)
When the shim below is used, OpenClaw also logs:
[OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED] openclaw/plugin-sdk/compat is deprecated
for new plugins. Migrate to focused openclaw/plugin-sdk/<subpath> imports.
... External plugins may keep compat temporarily while migrating.
https://docs.openclaw.ai/plugins/sdk-migration
Affected files
openclaw/plugin-sdk/irc → src/{channel,config-schema,inbound,monitor,setup-wizard,types}.ts
openclaw/plugin-sdk/matrix → src/inbound.ts (createReplyPrefixOptions), src/setup-wizard.ts (promptAccountId, promptChannelAccessConfig)
Fix
The clean fix is to migrate the imports to the focused subpaths. I verified the
following mapping on 2026.5.28 (the symbols MeshClaw uses):
| Symbol(s) |
New subpath |
createLoggerBackedRuntime |
openclaw/plugin-sdk/runtime-logger |
DEFAULT_ACCOUNT_ID |
openclaw/plugin-sdk/account-id |
resolveDefaultGroupPolicy, resolveAllowlistProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce, GROUP_POLICY_BLOCKED_LABEL |
openclaw/plugin-sdk/runtime-group-policy |
setAccountEnabledInConfigSection, deleteAccountFromConfigSection, formatPairingApproveHint, PAIRING_APPROVED_MESSAGE |
openclaw/plugin-sdk/channel-plugin-common |
buildBaseAccountStatusSnapshot, buildBaseChannelStatusSummary |
openclaw/plugin-sdk/status-helpers |
createNormalizedOutboundDeliverer, formatTextWithAttachmentLinks, resolveOutboundMediaUrls |
openclaw/plugin-sdk/reply-payload |
logInboundDrop |
openclaw/plugin-sdk/channel-inbound |
promptAccountId, promptChannelAccessConfig, addWildcardAllowFrom |
openclaw/plugin-sdk/setup |
remaining shared types / helpers (ChannelPlugin, OpenClawConfig, RuntimeEnv, requireOpenAllowFrom, schema shapes, etc.) |
openclaw/plugin-sdk/compat (umbrella) |
A minimal interim workaround is a one-file re-export shim that the local imports
point at, so the rest of the codebase is untouched:
// src/sdk-compat.ts
export * from "openclaw/plugin-sdk/compat";
export { createLoggerBackedRuntime } from "openclaw/plugin-sdk/runtime-logger";
export { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
// ...focused re-exports per the table above...
Offer
I have this working locally and am happy to open a PR. Before I do — what's the
minimum OpenClaw version MeshClaw aims to support? That determines whether to
migrate fully to focused subpaths (cleanest, what the deprecation warning asks
for) or route everything through compat for the widest compatibility window.
(Filed while getting MeshClaw running against OpenClaw 2026.5.28; the separate
MQTT JSON protocol fix is #18.)
Summary
MeshClaw (v0.2.2 /
main) fails to load on current OpenClaw because it importsfrom
openclaw/plugin-sdk/irc, a subpath that no longer exists in the OpenClawplugin SDK. The grab-bag
ircmodule was removed and its exports redistributedinto focused subpaths (plus a temporary
compatumbrella).Environment
e932160)main, 379da00), installed viaopenclaw plugins install --linkError
Confirmed against the package's
exportsmap:When the shim below is used, OpenClaw also logs:
Affected files
openclaw/plugin-sdk/irc→src/{channel,config-schema,inbound,monitor,setup-wizard,types}.tsopenclaw/plugin-sdk/matrix→src/inbound.ts(createReplyPrefixOptions),src/setup-wizard.ts(promptAccountId,promptChannelAccessConfig)Fix
The clean fix is to migrate the imports to the focused subpaths. I verified the
following mapping on 2026.5.28 (the symbols MeshClaw uses):
createLoggerBackedRuntimeopenclaw/plugin-sdk/runtime-loggerDEFAULT_ACCOUNT_IDopenclaw/plugin-sdk/account-idresolveDefaultGroupPolicy,resolveAllowlistProviderRuntimeGroupPolicy,warnMissingProviderGroupPolicyFallbackOnce,GROUP_POLICY_BLOCKED_LABELopenclaw/plugin-sdk/runtime-group-policysetAccountEnabledInConfigSection,deleteAccountFromConfigSection,formatPairingApproveHint,PAIRING_APPROVED_MESSAGEopenclaw/plugin-sdk/channel-plugin-commonbuildBaseAccountStatusSnapshot,buildBaseChannelStatusSummaryopenclaw/plugin-sdk/status-helperscreateNormalizedOutboundDeliverer,formatTextWithAttachmentLinks,resolveOutboundMediaUrlsopenclaw/plugin-sdk/reply-payloadlogInboundDropopenclaw/plugin-sdk/channel-inboundpromptAccountId,promptChannelAccessConfig,addWildcardAllowFromopenclaw/plugin-sdk/setupChannelPlugin,OpenClawConfig,RuntimeEnv,requireOpenAllowFrom, schema shapes, etc.)openclaw/plugin-sdk/compat(umbrella)A minimal interim workaround is a one-file re-export shim that the local imports
point at, so the rest of the codebase is untouched:
Offer
I have this working locally and am happy to open a PR. Before I do — what's the
minimum OpenClaw version MeshClaw aims to support? That determines whether to
migrate fully to focused subpaths (cleanest, what the deprecation warning asks
for) or route everything through
compatfor the widest compatibility window.(Filed while getting MeshClaw running against OpenClaw 2026.5.28; the separate
MQTT JSON protocol fix is #18.)