openclaw - ✅(Solved) Fix Bug: Telegram bundled plugin missing src/ directory in 2026.4.7 [2 pull requests, 6 comments, 7 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#62875Fetched 2026-04-09 08:01:23
View on GitHub
Comments
6
Participants
7
Timeline
16
Reactions
2
Author
Timeline (top)
commented ×6subscribed ×4cross-referenced ×2unsubscribed ×2

After upgrading to OpenClaw 2026.4.7, the gateway fails to start due to missing src/ directory in the bundled Telegram plugin.

Error Message

bundled plugin entry "./src/channel.setup.js" failed to open from "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/setup-entry.js" (resolved "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js", plugin root "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram", reason "path"): ENOENT: no such file or directory, lstat '/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js'

Root Cause

After upgrading to OpenClaw 2026.4.7, the gateway fails to start due to missing src/ directory in the bundled Telegram plugin.

Fix Action

Workaround

Downgrade to 2026.4.5:

npm install -g [email protected]

PR fix notes

PR #62900: fix(telegram): stop setup entry from deep-importing src

Description (problem / solution / changelog)

Summary

  • point the bundled Telegram setup entry at packaged dist-facing sidecar modules instead of missing ./src/* files
  • add focused regression coverage for loading Telegram setup sidecars from a dist-only bundled plugin layout

Change Type

  • Bug fix
  • New feature
  • Breaking change
  • Refactor
  • Docs
  • Test-only

Scope

This PR is intentionally narrow.

It only changes the bundled Telegram setup entry specifiers and adds focused regression coverage around packaged bundled-entry loading.

It does not change:

  • bundled loader fallback semantics
  • non-Telegram bundled channel entries
  • plugin update flow
  • packaging behavior outside the Telegram setup entry metadata

Linked Issue/PR

  • Related #62867
  • Related #62868
  • Related #62875
  • Related #62880
  • Related #62886
  • Related #62904
  • Related #62905
  • Related #62898
  • Related #62903
  • This PR fixes a bug or regression

Root Cause / Regression History

The bundled Telegram setup-entry.ts still referenced ./src/channel.setup.js and ./src/secret-contract.js.

That works in the source tree, but the published npm package does not ship dist/extensions/telegram/src/**. It ships the dist-facing sidecar entry modules (./channel-plugin-api.js and ./secret-contract-api.js) instead.

After upgrading to 2026.4.7, bundled setup entry resolution could therefore fail during config load / gateway startup with ENOENT while trying to open the missing ./src/... files from dist/extensions/telegram.

Behavior Changes

Before:

  • the bundled Telegram setup entry tried to load ./src/channel.setup.js
  • the bundled Telegram setup entry tried to load ./src/secret-contract.js
  • packaged npm installs could fail config load or gateway startup with a bundled plugin entry ENOENT

After:

  • the bundled Telegram setup entry loads ./channel-plugin-api.js
  • the bundled Telegram setup entry loads ./secret-contract-api.js
  • setup plugin and setup secrets sidecars resolve correctly from a dist-only bundled plugin layout

Regression Test Plan

Updated:

  • src/plugin-sdk/channel-entry-contract.test.ts

Coverage:

  • creates a temporary dist-only dist/extensions/telegram plugin root
  • verifies ./channel-plugin-api.js resolves telegramSetupPlugin
  • verifies ./secret-contract-api.js resolves channelSecrets
  • keeps the contracts boundary lane green after narrowing the fix back down to Telegram only

Repro + Verification

Observed on an installed npm-global runtime:

  • config loading and plugin update were blocked by bundled plugin entry "./src/channel.setup.js" failed to open from dist/extensions/telegram/setup-entry.js

With this patch:

  • the focused contracts boundary test still passes
  • a dist-only runtime check using loadBundledEntryExportSync(...) successfully loads both Telegram setup sidecars through the new specifiers
  • the same specifier swap applied to the installed runtime unblocked config loading and let openclaw plugins update lossless-claw proceed normally

Tests

Passed locally:

  • node scripts/run-vitest.mjs run --config vitest.contracts.config.ts src/plugins/contracts/boundary-invariants.test.ts

Additional focused coverage added in this PR:

  • loads packaged telegram setup sidecars from dist-facing api modules

Did not run full repo pre-commit:

  • local git commit hooks were slow / stuck in the broader pnpm check -> tsgo chain, so I used focused validation for this narrow fix instead

Risks and Mitigations

Risk:

  • the Telegram bundled setup entry now depends on the dist-facing facade modules being the supported packaged contract

Mitigation:

  • those facade modules are already present in packaged installs
  • the new regression test exercises a dist-only bundled plugin layout directly
  • the change is limited to Telegram setup-entry metadata and does not alter shared loader behavior

AI assistance

AI-assisted: drafted and implemented with Codex, then locally reviewed and tested by me.

Changed files

  • src/plugin-sdk/channel-entry-contract.test.ts (modified, +19/-18)

PR #62990: test(plugin-sdk): cover packaged telegram setup sidecars

Description (problem / solution / changelog)

Summary

  • add focused regression coverage for packaged Telegram setup sidecar loading in loadBundledEntryExportSync
  • keep this PR test-only and scoped to src/plugin-sdk/channel-entry-contract.test.ts

Change Type

  • Bug fix
  • New feature
  • Breaking change
  • Refactor
  • Docs
  • Test-only

Scope

This PR is intentionally narrow.

It only adds one plugin-sdk contract test and does not change runtime behavior.

Linked Issue/PR

  • Follow-up to closed/superseded PR #62900
  • Related #62867
  • Related #62875
  • Related #62880

Root Cause / Context

The runtime packaging path for Telegram setup sidecars has already been fixed on main and released.

This follow-up only keeps targeted regression coverage so packaged/dist-facing setup facades (setup-plugin-api.js and secret-contract-api.js) are exercised explicitly in the plugin-sdk contract tests.

Behavior Changes

Before:

  • plugin-sdk contract tests did not explicitly assert the packaged Telegram setup facade load path

After:

  • plugin-sdk contract tests include explicit coverage that a dist-only Telegram setup entry can load:
    • telegramSetupPlugin from ./setup-plugin-api.js
    • channelSecrets from ./secret-contract-api.js

Tests

Passed locally:

  • node scripts/run-vitest.mjs run --config vitest.plugin-sdk.config.ts src/plugin-sdk/channel-entry-contract.test.ts

Risks and Mitigations

Risk:

  • very low; test-only change

Mitigation:

  • no runtime code changes; only contract test coverage added

AI assistance

AI-assisted: drafted and implemented with Codex, then locally reviewed and tested by me.

Changed files

  • src/plugin-sdk/channel-entry-contract.test.ts (modified, +47/-0)

Code Example

bundled plugin entry "./src/channel.setup.js" failed to open from "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/setup-entry.js" (resolved "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js", plugin root "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram", reason "path"): ENOENT: no such file or directory, lstat '/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js'

---

ls ~/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/
# No src/ directory present

---

npm install -g openclaw@2026.4.5
RAW_BUFFERClick to expand / collapse

Bug Report: Telegram bundled plugin missing src/ directory in 2026.4.7

Description

After upgrading to OpenClaw 2026.4.7, the gateway fails to start due to missing src/ directory in the bundled Telegram plugin.

Error Message

bundled plugin entry "./src/channel.setup.js" failed to open from "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/setup-entry.js" (resolved "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js", plugin root "/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram", reason "path"): ENOENT: no such file or directory, lstat '/home/eihei/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/src/channel.setup.js'

Steps to Reproduce

  1. npm install -g openclaw@beta (installs 2026.4.7)
  2. openclaw gateway restart
  3. Gateway fails to start with config invalid error

Environment

  • OS: Arch Linux (6.19.9-zen1-1-zen)
  • Node: v25.8.1
  • OpenClaw: 2026.4.7 (5050017)
  • Install method: npm global

Investigation

The setup-entry.js file references ./src/channel.setup.js but the src/ directory does not exist in the npm package:

ls ~/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/
# No src/ directory present

The actual plugin code appears to be in:

  • ./api.js (exports telegramSetupPlugin)
  • ./channel-plugin-api.js (re-exports from ../../channel.setup-*.js)

Workaround

Downgrade to 2026.4.5:

npm install -g [email protected]

Expected Behavior

The bundled Telegram plugin should load successfully without missing file errors.

extent analysis

TL;DR

Downgrade OpenClaw to version 2026.4.5 to resolve the issue with the missing src/ directory in the bundled Telegram plugin.

Guidance

  • Verify the presence of the src/ directory in the Telegram plugin by checking the file system after installing a different version of OpenClaw.
  • Check the setup-entry.js file to ensure it references the correct path to the plugin code.
  • Consider reporting the issue to the OpenClaw maintainers to ensure the bug is fixed in future versions.
  • If downgrading is not feasible, investigate alternative plugins or workarounds that do not rely on the missing src/ directory.

Example

No code snippet is provided as the issue is related to a missing directory in a bundled plugin, and the workaround involves downgrading the OpenClaw version.

Notes

The provided workaround downgrades OpenClaw to version 2026.4.5, which may not be desirable if newer features or bug fixes are required. Additionally, this issue may be specific to the Arch Linux environment or the npm install -g method.

Recommendation

Apply the workaround by downgrading to OpenClaw version 2026.4.5, as it is a verified solution that resolves the issue with the missing src/ directory in the bundled Telegram plugin.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING