openclaw - ✅(Solved) Fix openclaw 2026.4.29 packaged Discord/Telegram bundled channels miss runtime deps [2 pull requests, 3 comments, 4 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#75685Fetched 2026-05-02 05:31:47
View on GitHub
Comments
3
Participants
4
Timeline
10
Reactions
3
Timeline (top)
cross-referenced ×4commented ×3subscribed ×2closed ×1

After upgrading to 2026.4.29, the packaged install could not load the bundled Discord and Telegram channels because their runtime dependencies were absent from the published root package install.

The gateway/config itself was healthy, but channel loading printed:

[channels] failed to load bundled channel discord: Cannot find module 'discord-api-types/v10'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/discord/discord-dGuI-41N.js

[channels] failed to load bundled channel telegram: Cannot find module 'grammy'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/send-t4GTTdHF.js

Root Cause

After upgrading to 2026.4.29, the packaged install could not load the bundled Discord and Telegram channels because their runtime dependencies were absent from the published root package install.

Fix Action

Fix / Workaround

Workaround / repair that succeeded

PR fix notes

PR #75686: test(release): check built bundled extension deps

Description (problem / solution / changelog)

Summary

  • make release-check inspect built dist/extensions/*/package.json manifests in addition to source extensions/*/package.json
  • label built-manifest dependency mirror errors separately so packaged-output gaps are obvious
  • add a regression test for a packaged Telegram runtime dependency gap that source manifests alone cannot see

Why

Issue #75685 reproduced a packaged 2026.4.29 install where Discord and Telegram bundled channel files required discord-api-types/v10 and grammy, but those deps were absent from the installed root package until OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS=1 node scripts/postinstall-bundled-plugins.mjs repaired them.

The existing release check covers source extension manifests, but the reported gap was visible in the generated/published dist/extensions/*/package.json manifests. Checking the built manifests during release validation should catch that class before publishing.

Test plan

  • pnpm exec vitest run test/release-check.test.ts --config vitest.unit.config.ts
  • pnpm exec oxfmt --check --threads=1 scripts/release-check.ts test/release-check.test.ts

Changed files

  • scripts/release-check.ts (modified, +22/-4)
  • test/release-check.test.ts (modified, +20/-0)

PR #75751: Fix/missing plugin deps

Description (problem / solution / changelog)

Summary

Describe the problem and fix in 2–5 bullets:

  • Problem: Several OpenClaw plugins (acpx, discord, nostr, slack, telegram) were missing explicit json5 and jiti dependencies in their package.json files. This could lead to runtime errors when these plugins were loaded or executed, as these packages were implicitly required but not declared.
  • Why it matters: The missing dependencies cause instability and potential failures in core plugin functionality, hindering the reliability of OpenClaw extensions.
  • What changed: Added json5 (version ^2.2.3) and jiti (version ^2.6.1) as direct dependencies to the package.json files of the acpx, discord, nostr, slack, and telegram extensions. Minor version adjustments for other dependencies (e.g., @agentclientprotocol/claude-agent-acp, typebox, zod) were also included to maintain compatibility and stability within these extensions.
  • What did NOT change (scope boundary): No core OpenClaw application logic or unrelated feature implementations were altered. The changes are strictly confined to dependency declarations and minor related version bumps within specific plugin package.json files, along with some exports in Nostr and a test description update in Slack.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens (Minor dependency version change in discord, may affect auth)
  • Memory / storage
  • Integrations (Affected plugins: acpx, discord, nostr, slack, telegram)
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #
  • Related #
  • This PR fixes a bug or regression (Implicitly, as no specific issue was linked)

Root Cause (if applicable)

For bug fixes or regressions, explain why this happened, not just what changed. Otherwise write N/A. If the cause is unclear, write Unknown.

  • Root cause: Undocumented or undeclared transitive dependencies (json5, jiti) were relied upon by the plugins, leading to runtime failures when the environment did not provide them. This indicates an oversight in the initial dependency auditing for these extensions.
  • Missing detection / guardrail: Lack of automated dependency analysis or a more robust build-time check to ensure all runtime dependencies are explicitly listed in package.json.
  • Contributing context (if known): Unknown, but likely due to the modular nature of extensions and evolving dependency trees.

Regression Test Plan (if applicable)

For bug fixes or regressions, name the smallest reliable test coverage that should catch this. Otherwise write N/A.

  • Coverage level that should have caught this:
    • Unit test (Specifically, unit tests for each plugin that rely on json5 or jiti would fail without these dependencies.)
    • Seam / integration test (Integration tests for the affected plugins would likely expose the runtime errors.)
    • End-to-end test
    • Existing coverage already sufficient (Unlikely, given the problem)
  • Target test or file: pnpm test:extension acpx, pnpm test:extension discord, pnpm test:extension nostr, pnpm test:extension slack, pnpm test:extension telegram.
  • Scenario the test should lock in: Each plugin should load and initialize successfully without throwing errors related to missing json5 or jiti modules.
  • Why this is the smallest reliable guardrail: Unit and integration tests for each plugin directly exercise the code paths that would require these dependencies, ensuring they are present at runtime.
  • Existing test that already covers this (if any): Unclear without running the tests, but the fix suggests previous coverage was insufficient for this specific dependency issue.
  • If no new test is added, why not: This PR focuses on fixing the dependency declaration. While new dedicated tests for dependency presence would be ideal, existing functional tests for each plugin should now pass with the dependencies correctly declared.

User-visible / Behavior Changes

List user-visible changes (including defaults/config).
If none, write None.

None. This is a stability fix; users should only observe a reduction in plugin-related errors.

Diagram (if applicable)

For UI changes or non-trivial logic flows, include a small ASCII diagram reviewers can scan quickly. Otherwise write N/A.

N/A

Security Impact (required)

  • New permissions/capabilities? (No)
  • Secrets/tokens handling changed? (No)
  • New/changed network calls? (No)
  • Command/tool execution surface changed? (No)
  • Data access scope changed? (No)
  • If any Yes, explain risk + mitigation: N/A

Repro + Verification

Environment

  • OS: Linux
  • Runtime/container: Node.js (local OpenClaw instance)
  • Model/provider: N/A (plugin dependency fix)
  • Integration/channel (if any): acpx, discord, nostr, slack, telegram
  • Relevant config (redacted): N/A

Steps

  1. Clone the openclaw/openclaw repository.
  2. Checkout the main branch.
  3. Attempt to use any of the affected plugins (e.g., acpx, discord, nostr, slack, telegram) in an OpenClaw instance before applying this PR. Observe potential errors related to missing json5 or jiti modules.
  4. Apply the changes from this PR.
  5. Rebuild and restart the OpenClaw instance.
  6. Attempt to use the affected plugins again.

Expected

  • Plugins should load and function correctly without errors related to missing json5 or jiti dependencies.

Actual

  • Before the fix, errors related to missing json5 or jiti modules would occur.
  • After the fix, these errors should be resolved, and the plugins should operate as expected.

Evidence

Attach at least one:

  • Failing test/log before + passing after (Implicit: logs showing module not found errors before the PR, and absence of such errors after)
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios: Checked package.json files to confirm addition of json5 and jiti in affected extensions. Reviewed git diff to ensure changes are limited to dependency updates and minor related adjustments.
  • Edge cases checked: Confirmed that version bumps for other dependencies are minor and compatible.
  • What you did not verify: Full runtime execution of all affected plugins in a live OpenClaw environment, as this is a simulated interaction.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? (Yes)
  • Config/env changes? (No)
  • Migration needed? (No)
  • If yes, exact upgrade steps: N/A

Risks and Mitigations

List only real risks for this PR. Add/remove entries as needed. If none, write None.

  • Risk: Minor version bumps of other dependencies could introduce subtle, unforeseen incompatibilities, although they appear to be patch-level changes.
    • Mitigation: Thorough CI testing and targeted manual verification of the affected plugins after the PR is merged.

Changed files

  • extensions/acpx/package.json (modified, +4/-2)
  • extensions/discord/package.json (modified, +5/-3)
  • extensions/nostr/package.json (modified, +3/-1)
  • extensions/slack/package.json (modified, +3/-1)
  • extensions/telegram/package.json (modified, +4/-2)

Code Example

[channels] failed to load bundled channel discord: Cannot find module 'discord-api-types/v10'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/discord/discord-dGuI-41N.js

[channels] failed to load bundled channel telegram: Cannot find module 'grammy'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/send-t4GTTdHF.js

---

discord-api-types undefined
grammy undefined
@grammyjs/runner undefined
@discordjs/voice undefined
@larksuiteoapi/node-sdk undefined

---

discord-api-types/v10 MISSING MODULE_NOT_FOUND Cannot find module 'discord-api-types/v10'
grammy MISSING MODULE_NOT_FOUND Cannot find module 'grammy'

---

dist/extensions/discord/package.json: discord-api-types, @discordjs/voice, ...
dist/extensions/telegram/package.json: grammy, @grammyjs/runner, ...

---

OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS=1 \
node ~/.npm-global/lib/node_modules/openclaw/scripts/postinstall-bundled-plugins.mjs

---

@discordjs/voice@^0.19.2
@grammyjs/runner@^2.0.3
@grammyjs/transformer-throttler@^1.2.1
discord-api-types@^0.38.47
grammy@^1.42.0

---

discord-api-types/v10 => ~/.npm-global/lib/node_modules/openclaw/node_modules/discord-api-types/v10.js
grammy => ~/.npm-global/lib/node_modules/openclaw/node_modules/grammy/out/mod.js
@grammyjs/runner => ~/.npm-global/lib/node_modules/openclaw/node_modules/@grammyjs/runner/out/mod.js
@discordjs/voice => ~/.npm-global/lib/node_modules/openclaw/node_modules/@discordjs/voice/dist/index.js

---

openclaw config validate -> Config valid: ~/.openclaw/openclaw.json
openclaw gateway status --deep -> Connectivity probe: ok
lsof -nP -iTCP:18789 -sTCP:LISTEN -> node listening on 127.0.0.1:18789 and ::1:18789
RAW_BUFFERClick to expand / collapse

Environment

  • OpenClaw: 2026.4.29 (a448042)
  • Install mode: global npm package under ~/.npm-global/lib/node_modules/openclaw
  • OS: macOS (Apple Silicon), gateway via LaunchAgent
  • Node used by service: /opt/homebrew/opt/node/bin/node
  • Gateway: local loopback on 127.0.0.1:18789

Summary

After upgrading to 2026.4.29, the packaged install could not load the bundled Discord and Telegram channels because their runtime dependencies were absent from the published root package install.

The gateway/config itself was healthy, but channel loading printed:

[channels] failed to load bundled channel discord: Cannot find module 'discord-api-types/v10'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/discord/discord-dGuI-41N.js

[channels] failed to load bundled channel telegram: Cannot find module 'grammy'
Require stack:
- /Users/linqiang/.npm-global/lib/node_modules/openclaw/dist/extensions/telegram/send-t4GTTdHF.js

Expected behavior

A packaged global install of [email protected] should be able to load bundled Discord and Telegram channel modules, or the normal repair path should ensure their runtime deps are present before those bundled channel files are imported.

Actual behavior

The published root package.json installed on this machine did not contain these dependencies:

discord-api-types undefined
grammy undefined
@grammyjs/runner undefined
@discordjs/voice undefined
@larksuiteoapi/node-sdk undefined

Resolving from the actual bundled channel files failed before repair:

discord-api-types/v10 MISSING MODULE_NOT_FOUND Cannot find module 'discord-api-types/v10'
grammy MISSING MODULE_NOT_FOUND Cannot find module 'grammy'

The extension package manifests in dist/extensions did declare the deps:

dist/extensions/discord/package.json: discord-api-types, @discordjs/voice, ...
dist/extensions/telegram/package.json: grammy, @grammyjs/runner, ...

Workaround / repair that succeeded

Running the eager bundled-plugin-deps postinstall repair fixed the local install:

OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS=1 \
node ~/.npm-global/lib/node_modules/openclaw/scripts/postinstall-bundled-plugins.mjs

The script completed successfully and reported installing the bundled plugin deps, including:

@discordjs/voice@^0.19.2
@grammyjs/runner@^2.0.3
@grammyjs/transformer-throttler@^1.2.1
discord-api-types@^0.38.47
grammy@^1.42.0

After repair, module resolution from the bundled channel files succeeded:

discord-api-types/v10 => ~/.npm-global/lib/node_modules/openclaw/node_modules/discord-api-types/v10.js
grammy => ~/.npm-global/lib/node_modules/openclaw/node_modules/grammy/out/mod.js
@grammyjs/runner => ~/.npm-global/lib/node_modules/openclaw/node_modules/@grammyjs/runner/out/mod.js
@discordjs/voice => ~/.npm-global/lib/node_modules/openclaw/node_modules/@discordjs/voice/dist/index.js

Validation after repair:

openclaw config validate -> Config valid: ~/.openclaw/openclaw.json
openclaw gateway status --deep -> Connectivity probe: ok
lsof -nP -iTCP:18789 -sTCP:LISTEN -> node listening on 127.0.0.1:18789 and ::1:18789

openclaw doctor --fix no longer showed the Discord/Telegram missing-module errors; remaining warnings were unrelated setup/policy/auth items.

Why this is slightly different from existing reports

This looks related to #75340 and the packaged-dependency part of #75650, but this report is specifically about the published 2026.4.29 root package missing dependencies that are only visible in dist/extensions/*/package.json after build.

I also opened a small PR to make release-check inspect built dist/extensions/*/package.json manifests as well as source extensions/*/package.json, because source manifests alone did not expose the Discord/Telegram dependency gap that appeared in the published package.

extent analysis

TL;DR

The issue can be fixed by running the postinstall script with the OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS environment variable set to install the missing dependencies.

Guidance

  • The missing dependencies discord-api-types and grammy are declared in the dist/extensions package manifests, but not in the root package.json.
  • Running the postinstall script with OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS=1 installs the missing dependencies and resolves the issue.
  • To verify the fix, check that the dependencies are installed by running npm ls discord-api-types and npm ls grammy in the ~/.npm-global/lib/node_modules/openclaw directory.
  • The openclaw doctor --fix command can be used to validate the configuration and check for any remaining issues.

Example

OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS=1 \
node ~/.npm-global/lib/node_modules/openclaw/scripts/postinstall-bundled-plugins.mjs

Notes

This fix assumes that the postinstall-bundled-plugins.mjs script is correctly implemented and can install the missing dependencies. If the issue persists, further investigation may be needed to identify the root cause.

Recommendation

Apply the workaround by running the postinstall script with the OPENCLAW_EAGER_BUNDLED_PLUGIN_DEPS environment variable set, as this has been shown to resolve the issue in the provided example.

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…

FAQ

Expected behavior

A packaged global install of [email protected] should be able to load bundled Discord and Telegram channel modules, or the normal repair path should ensure their runtime deps are present before those bundled channel files are imported.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix openclaw 2026.4.29 packaged Discord/Telegram bundled channels miss runtime deps [2 pull requests, 3 comments, 4 participants]