Yep β that specific pi-tools.before-tool-call.runtime-<hash>.js mismatch is a real package-state problem (usually a mixed/stale global install, not your script).
Quick path to unblock:
- Confirm runtime + path (paste outputs):
openclaw --version
node -v
which openclaw
- Check the mismatch directly:
PKG="$(npm root -g)/openclaw/dist/plugin-sdk"
grep -H "pi-tools.before-tool-call.runtime-" "$PKG"/thread-bindings-*.js
ls "$PKG"/pi-tools.before-tool-call.runtime-*.js