openclaw - 💡(How to fix) Fix [Bug]: 2026.4.26 ships incomplete typebox bundles in extensions/xai and extensions/browser, breaking plugin load [1 comments, 2 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#73736Fetched 2026-04-29 06:15:45
View on GitHub
Comments
1
Participants
2
Timeline
2
Reactions
0
Author
Timeline (top)
commented ×1cross-referenced ×1

The ghcr.io/openclaw/openclaw:2026.4.26 image ships incomplete copies of typebox 1.1.28 in extensions/xai/node_modules/typebox/ and extensions/browser/node_modules/typebox/. Multiple subdirectories are missing files that the bundled index.mjs barrel-re-exports try to require:

  • system/memory/index.mjs does export * as Memory from './memory.mjs' but the file isn't there. It's also missing metrics.mjs and update.mjs.
  • guard/guard.mjs does ... from './string.mjs' — also missing.

Result: at every CLI invocation, the loader logs

[plugins] xai failed to load from /app/dist/extensions/xai/index.js:
  Error: Cannot find module './memory.mjs'
  Require stack:
  - /app/dist/extensions/xai/node_modules/typebox/build/system/memory/index.mjs

then (after a workaround patches that) the next missing file:

Cannot find module './string.mjs'
- /app/dist/extensions/xai/node_modules/typebox/build/guard/guard.mjs

If xai (or browser) is enabled in plugins.entries.<name>.enabled, this blocks every openclaw agent invocation with the loader stack trace cascading up to runCli.

Error Message

[plugins] xai failed to load from /app/dist/extensions/xai/index.js: Error: Cannot find module './memory.mjs' Require stack:

  • /app/dist/extensions/xai/node_modules/typebox/build/system/memory/index.mjs

Root Cause

The ghcr.io/openclaw/openclaw:2026.4.26 image ships incomplete copies of typebox 1.1.28 in extensions/xai/node_modules/typebox/ and extensions/browser/node_modules/typebox/. Multiple subdirectories are missing files that the bundled index.mjs barrel-re-exports try to require:

  • system/memory/index.mjs does export * as Memory from './memory.mjs' but the file isn't there. It's also missing metrics.mjs and update.mjs.
  • guard/guard.mjs does ... from './string.mjs' — also missing.

Result: at every CLI invocation, the loader logs

[plugins] xai failed to load from /app/dist/extensions/xai/index.js:
  Error: Cannot find module './memory.mjs'
  Require stack:
  - /app/dist/extensions/xai/node_modules/typebox/build/system/memory/index.mjs

then (after a workaround patches that) the next missing file:

Cannot find module './string.mjs'
- /app/dist/extensions/xai/node_modules/typebox/build/guard/guard.mjs

If xai (or browser) is enabled in plugins.entries.<name>.enabled, this blocks every openclaw agent invocation with the loader stack trace cascading up to runCli.

Fix Action

Fix / Workaround

then (after a workaround patches that) the next missing file:

Workaround (in-image patch)

After this patch + a docker restart, agent invocations succeed and the xai/browser plugins load cleanly.

Code Example

[plugins] xai failed to load from /app/dist/extensions/xai/index.js:
  Error: Cannot find module './memory.mjs'
  Require stack:
  - /app/dist/extensions/xai/node_modules/typebox/build/system/memory/index.mjs

---

Cannot find module './string.mjs'
- /app/dist/extensions/xai/node_modules/typebox/build/guard/guard.mjs

---

docker run --rm --entrypoint sh ghcr.io/openclaw/openclaw:2026.4.26 -c '
  ls /app/dist/extensions/xai/node_modules/typebox/build/system/memory/
'
# observed: assign.mjs clone.mjs create.mjs discard.mjs index.mjs   (5 files)

docker run --rm --entrypoint sh ghcr.io/openclaw/openclaw:2026.4.26 -c '
  ls /app/dist/extensions/openai/node_modules/typebox/build/system/memory/
'
# expected: 16 files including memory.mjs, metrics.mjs, update.mjs, and their .d.mts pairs

---

docker exec --user root <container> sh -c '
  rm -rf /app/dist/extensions/xai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/xai/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
'
RAW_BUFFERClick to expand / collapse

Summary

The ghcr.io/openclaw/openclaw:2026.4.26 image ships incomplete copies of typebox 1.1.28 in extensions/xai/node_modules/typebox/ and extensions/browser/node_modules/typebox/. Multiple subdirectories are missing files that the bundled index.mjs barrel-re-exports try to require:

  • system/memory/index.mjs does export * as Memory from './memory.mjs' but the file isn't there. It's also missing metrics.mjs and update.mjs.
  • guard/guard.mjs does ... from './string.mjs' — also missing.

Result: at every CLI invocation, the loader logs

[plugins] xai failed to load from /app/dist/extensions/xai/index.js:
  Error: Cannot find module './memory.mjs'
  Require stack:
  - /app/dist/extensions/xai/node_modules/typebox/build/system/memory/index.mjs

then (after a workaround patches that) the next missing file:

Cannot find module './string.mjs'
- /app/dist/extensions/xai/node_modules/typebox/build/guard/guard.mjs

If xai (or browser) is enabled in plugins.entries.<name>.enabled, this blocks every openclaw agent invocation with the loader stack trace cascading up to runCli.

Reproduction (any host with podman/docker)

docker run --rm --entrypoint sh ghcr.io/openclaw/openclaw:2026.4.26 -c '
  ls /app/dist/extensions/xai/node_modules/typebox/build/system/memory/
'
# observed: assign.mjs clone.mjs create.mjs discard.mjs index.mjs   (5 files)

docker run --rm --entrypoint sh ghcr.io/openclaw/openclaw:2026.4.26 -c '
  ls /app/dist/extensions/openai/node_modules/typebox/build/system/memory/
'
# expected: 16 files including memory.mjs, metrics.mjs, update.mjs, and their .d.mts pairs

10+ other extensions ship the complete typebox bundle (openai, anthropic, brave, kimi-coding, discord, lmstudio, diffs, slack, whatsapp, tavily). Only xai and browser are truncated. The missing files exist in the runtime-deps cache at /home/node/.openclaw/plugin-runtime-deps/openclaw-2026.4.26-*/node_modules/typebox/build/system/memory/memory.mjs, so the source artifact is fine — this is a packaging step truncation, not an upstream typebox issue.

Workaround (in-image patch)

docker exec --user root <container> sh -c '
  rm -rf /app/dist/extensions/xai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/xai/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
'

After this patch + a docker restart, agent invocations succeed and the xai/browser plugins load cleanly.

Adjacent

  • #71233 (closed 2026-04-26) — same shape (typebox barrel re-export), but fixed loader-side ("ESM-safe aliases for mirrored runtime deps"). Our finding is image-side: the extensions still ship incomplete bundles.
  • #73685 (open) — @openclaw/[email protected] fails on [email protected] with a missing plugin-sdk/discord export. Pattern: 4.26 has plugin-bundling regressions on multiple extensions.

Versions

  • ghcr.io/openclaw/openclaw:2026.4.26, sha256 04e27383656941e59fba80a5a9c28b709f240ea980bd2cb375e4a7786d5a7a20
  • typebox 1.1.28 (bundled inside extensions); 1.1.33 also exists in plugin-runtime-deps/

extent analysis

TL;DR

The issue can be fixed by ensuring that the typebox bundle in the xai and browser extensions is complete, either by updating the packaging step or applying a workaround that copies the complete bundle from another extension.

Guidance

  • Verify that the typebox bundle is complete by checking the files in /app/dist/extensions/xai/node_modules/typebox/build/system/memory/ and /app/dist/extensions/browser/node_modules/typebox/build/guard/.
  • Apply the provided workaround by removing the incomplete typebox bundles and copying the complete bundle from the openai extension.
  • Check if the issue is resolved by running the openclaw agent invocation after applying the workaround.
  • Consider updating the packaging step to include the complete typebox bundle in the xai and browser extensions.

Example

The workaround can be applied using the following command:

docker exec --user root <container> sh -c '
  rm -rf /app/dist/extensions/xai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/xai/node_modules/typebox
  cp -r /app/dist/extensions/openai/node_modules/typebox /app/dist/extensions/browser/node_modules/typebox
'

Notes

The issue seems to be specific to the xai and browser extensions, and the workaround provided should resolve the issue. However, it's recommended to update the packaging step to include the complete typebox bundle to prevent similar issues in the future.

Recommendation

Apply the workaround to copy the complete typebox bundle from the openai extension to the xai and browser extensions, as it provides a quick fix to the issue.

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

openclaw - 💡(How to fix) Fix [Bug]: 2026.4.26 ships incomplete typebox bundles in extensions/xai and extensions/browser, breaking plugin load [1 comments, 2 participants]