Skip to content

MeshClaw v0.2.2 fails to load on OpenClaw 2026.5.x: 'openclaw/plugin-sdk/irc' subpath removed #19

Description

@1Croydan1

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/ircsrc/{channel,config-schema,inbound,monitor,setup-wizard,types}.ts
openclaw/plugin-sdk/matrixsrc/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.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions