fix: reject plugin npm packages without manifests#99904
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 4, 2026, 5:38 AM ET / 09:38 UTC. Summary PR surface: Tests +39, Other +4. Total +43 across 2 files. Reproducibility: yes. at source level. Current main lacks the published-package manifest gate, the installer/docs require native plugin manifests, and the linked issue contains concrete SearXNG/Tavily install failure output. Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the manifest verifier gate as the release-safety fix while keeping the existing installer manifest/id contract and normal official plugin publication path unchanged. Do we have a high-confidence way to reproduce the issue? Yes at source level. Current main lacks the published-package manifest gate, the installer/docs require native plugin manifests, and the linked issue contains concrete SearXNG/Tavily install failure output. Is this the best way to solve the issue? Yes. The post-publish verifier is the narrowest durable layer because it blocks bad official npm plugin artifacts before they can be accepted as release outputs without duplicating installer policy or changing user config. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a0e604862470. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Tests +39, Other +4. Total +43 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (3 earlier review cycles) |
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Closes #96878
AI-assisted with Codex.
What Problem This Solves
Fixes an issue where users trying to recover SearXNG or Tavily web_search after upgrade could be directed to official npm plugin packages that did not contain an OpenClaw plugin manifest, causing install validation to fail instead of restoring the provider.
Why This Change Was Made
The current live
@openclaw/[email protected]and@openclaw/[email protected]packages now contain the expected manifests and install successfully. This change adds the missing release verifier gate so plugin npm packages without a rootopenclaw.plugin.json, including 0.0.0 reservation packages, fail plugin runtime verification before they can be treated as valid published plugin artifacts.User Impact
Users get a working official npm recovery path for SearXNG and Tavily, and release managers get a direct guard against publishing or accepting plugin npm packages that would later fail with
plugin id mismatchor hook-pack fallback errors.Evidence
node scripts/run-vitest.mjs test/scripts/verify-plugin-npm-published-runtime.test.ts -- --reporter verbosepnpm format:check scripts/verify-plugin-npm-published-runtime.mjs test/scripts/verify-plugin-npm-published-runtime.test.ts./node_modules/.bin/oxlint --tsconfig config/tsconfig/oxlint.scripts.json scripts/verify-plugin-npm-published-runtime.mjs./node_modules/.bin/oxlint test/scripts/verify-plugin-npm-published-runtime.test.tsOPENCLAW_PLUGIN_NPM_VERIFY_ATTEMPTS=1 OPENCLAW_PLUGIN_NPM_README_VERIFY_ATTEMPTS=1 node scripts/verify-plugin-npm-published-runtime.mjs @openclaw/[email protected]OPENCLAW_PLUGIN_NPM_VERIFY_ATTEMPTS=1 OPENCLAW_PLUGIN_NPM_README_VERIFY_ATTEMPTS=1 node scripts/verify-plugin-npm-published-runtime.mjs @openclaw/[email protected]OPENCLAW_HOME=$(mktemp -d) pnpm openclaw plugins install npm:@openclaw/searxng-pluginOPENCLAW_HOME=$(mktemp -d) pnpm openclaw plugins install npm:@openclaw/tavily-plugin.agents/skills/autoreview/scripts/autoreview --mode branch --base upstream/main-> clean, no accepted/actionable findingsRedacted terminal proof: