-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
doctor --fix does not auto-build unbuilt plugins (validator error misdirects users) #80490
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.impact:crash-loopCrash, hang, restart loop, or process-level availability failure.Crash, hang, restart loop, or process-level availability failure.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.impact:crash-loopCrash, hang, restart loop, or process-level availability failure.Crash, hang, restart loop, or process-level availability failure.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
openclaw doctor --fixis advertised by the plugin validator as the way to resolveinstalled plugin package requires compiled runtime output for TypeScript entry index.ts, but doctor doesn't actually run any build step against the plugin. It just bounces launchd and the same validation error fires again.Repro
index.tswith nodist/and noscripts.buildinpackage.json. (Many community memory/auth plugins, including widely-distributed ones, are in this state — see filed issue against the plugin author for the specific case that prompted this.)openclaw doctor --fix. It restarts launchd:cdto the plugin directory and run a build (in my casenpx tsdown index.ts --format esm --out-dir dist). doctor never tries this.Expected
Either:
doctor --fixactually attempts a build for plugins with an unbuilt TS entry — detect missingdist/, then runnpm run build, thentsdown/tscfallback if no script is defined, then rerun validation. Ordoctor --fixand instead instructs the user tocd <plugin-dir> && <build command>, with a concrete remediation block per plugin. The current message is actively misleading because it implies a one-command fix that doesn't exist.Impact
A first-time install of any community plugin that ships unbuilt source bricks the gateway with no actionable guidance. The user has to either:
doctor --fix(which doesn't help), then bounce launchd a few times, then file an issue, ortsdown/tscexists and know the plugin's source layout well enough to bundle it manually.This is a poor onboarding experience for plugins that openclaw is otherwise prepared to load.
Suggested fix surface
The validator that emits this error knows:
plugins.slots.memory: plugin not found: openclaw-mem0line in the same error block)./dist/index.jsetc.)A first-class fix would let doctor invoke whatever build pipeline the plugin declares (in order of preference:
scripts.build,tsdownwith the entry from the manifest, ortscwith default options), then re-run validation. If no build path works, surface a clearer error: "this plugin ships unbuilt source and declares no build script — file an issue against the plugin author."