Symptom
Installing any 0.6.x openclaw plugin release fails at the dependency step:
$ node dist/index.js plugins install "clawhub:@eleboucher/memini@0.6.4" --pin --force
Resolving clawhub:@eleboucher/memini@0.6.4…
Downloading plugin @eleboucher/memini@0.6.4 from ClawHub…
Extracting …/eleboucher-memini-0.6.4.tgz…
Installing to ~/.openclaw/extensions/memini…
Installing plugin dependencies…
npm install failed: npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "workspace:": workspace:*
In a gateway boot script this fails soft ("starting with whatever is present"), so deployments silently keep running 0.5.12 — the last installable release — while pinned to 0.6.x. Fixes that shipped in 0.6.x (e.g. the per-agent tool namespace resolution from #30) are unreachable.
Cause
Since v0.6.0 (the pnpm workspace migration), the published clawpack's package.json ships:
"dependencies": {
"@memini/namespace-resolver": "workspace:*",
"typebox": "^1.1.38"
}
Two problems compound:
workspace:* is a pnpm-only protocol; OpenClaw's plugin installer runs plain npm install, which rejects it (EUNSUPPORTEDPROTOCOL). pnpm pack/pnpm publish normally rewrite workspace:* to a concrete semver at pack time — the literal workspace:* surviving into the tarball suggests the clawpack is built with npm pack/tar instead.
- Even with the protocol rewritten,
@memini/namespace-resolver is not published to npm (404), so the dependency can't resolve.
The plugin builds with plain tsc (no bundler), so dist/index.js contains a real runtime import "@memini/namespace-resolver" — the dependency can't simply be dropped from package.json.
Affected
Every plugin release ≥ 0.6.0. @eleboucher/memini@0.5.12 installs fine (deps: typebox only).
Possible fixes
- Bundle
@memini/namespace-resolver into dist/ (tsup/esbuild with the workspace package marked noExternal) and remove it from dependencies — keeps the clawpack self-contained and npm-agnostic; or
- Publish
@memini/namespace-resolver to npm and pack with pnpm pack so workspace:* is rewritten to a real version; or
- Vendor the resolver source into the plugin at release time.
The bundling option seems most robust for a clawpack, since installs happen under whatever package manager the host runtime uses.
Symptom
Installing any 0.6.x openclaw plugin release fails at the dependency step:
In a gateway boot script this fails soft ("starting with whatever is present"), so deployments silently keep running 0.5.12 — the last installable release — while pinned to 0.6.x. Fixes that shipped in 0.6.x (e.g. the per-agent tool namespace resolution from #30) are unreachable.
Cause
Since v0.6.0 (the pnpm workspace migration), the published clawpack's
package.jsonships:Two problems compound:
workspace:*is a pnpm-only protocol; OpenClaw's plugin installer runs plainnpm install, which rejects it (EUNSUPPORTEDPROTOCOL).pnpm pack/pnpm publishnormally rewriteworkspace:*to a concrete semver at pack time — the literalworkspace:*surviving into the tarball suggests the clawpack is built withnpm pack/tar instead.@memini/namespace-resolveris not published to npm (404), so the dependency can't resolve.The plugin builds with plain
tsc(no bundler), sodist/index.jscontains a real runtimeimport "@memini/namespace-resolver"— the dependency can't simply be dropped frompackage.json.Affected
Every plugin release ≥ 0.6.0.
@eleboucher/memini@0.5.12installs fine (deps:typeboxonly).Possible fixes
@memini/namespace-resolverintodist/(tsup/esbuild with the workspace package markednoExternal) and remove it fromdependencies— keeps the clawpack self-contained and npm-agnostic; or@memini/namespace-resolverto npm and pack withpnpm packsoworkspace:*is rewritten to a real version; orThe bundling option seems most robust for a clawpack, since installs happen under whatever package manager the host runtime uses.