Refactor external plugin catalog toward feeds#95846
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 27, 2026, 10:39 AM ET / 14:39 UTC. Summary PR surface: Source +44, Tests +51, Other +5. Total +100 across 3 files. Reproducibility: not applicable. as a bug reproduction: this is a preparatory marketplace feed refactor. Source inspection and the PR body proof show the intended feed-wrapper path and existing catalog consumer path. Review metrics: 1 noteworthy metric.
Stored data model 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. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this parser/control-plane prep only after maintainers confirm the schemaVersion 1 wrapper, fail-closed behavior, and stack order; keep hosted fetching, persistence, config, and CLI activation in the follow-up PRs. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction: this is a preparatory marketplace feed refactor. Source inspection and the PR body proof show the intended feed-wrapper path and existing catalog consumer path. Is this the best way to solve the issue? Yes for the implementation layer: the parser/control-plane module is the narrow place to accept a bundled feed wrapper without changing callers. The remaining question is maintainer acceptance of the schema contract and rollout order, not a code defect. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f4fa10c2c5ac. Label changesLabel justifications:
Evidence reviewedPR surface: Source +44, Tests +51, Other +5. Total +100 across 3 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
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
|
@clawsweeper re-review |
|
Merged via squash.
Thanks @giodl73-repo! |
Merged via squash. Prepared head SHA: 82d05bd Co-authored-by: giodl73-repo <[email protected]> Co-authored-by: giodl73-repo <[email protected]> Reviewed-by: @giodl73-repo
Merged via squash. Prepared head SHA: 82d05bd Co-authored-by: giodl73-repo <[email protected]> Co-authored-by: giodl73-repo <[email protected]> Reviewed-by: @giodl73-repo
Merged via squash. Prepared head SHA: 82d05bd Co-authored-by: giodl73-repo <[email protected]> Co-authored-by: giodl73-repo <[email protected]> Reviewed-by: @giodl73-repo
Merged via squash. Prepared head SHA: 82d05bd Co-authored-by: giodl73-repo <[email protected]> Co-authored-by: giodl73-repo <[email protected]> Reviewed-by: @giodl73-repo
Hosted Marketplace Feed Stack
This is the first PR in the hosted marketplace feed stack. The stack should land in order, with maintainer review at each step before the later PRs wire hosted marketplace data into broader user flows.
marketplaces.feedsandmarketplaces.sourcesprofiles.openclaw plugins marketplace refreshas the explicit manual snapshot refresh path.openclaw plugins marketplace entriesas the explicit manual read path over hosted, snapshot, or bundled fallback entries.The broader follow-up after this stack is to decide whether and how marketplace entries should feed install/search/startup behavior, add automatic conditional refresh using
ETag/Last-Modified, or move to ClawHub producer-side validation for/v1/feeds/pluginsand/v1/feeds/skills.Journey Context
This is step 1 of the hosted OpenClaw feed path from RFC 19. This PR does the smallest safe prep: it makes the bundled official external plugin catalog look like the feed document we want to host later, while preserving current local behavior.
What This PR Does
scripts/lib/official-external-plugin-catalog.jsonwithout changing the existingentriespayload.What This PR Intentionally Does Not Do
This PR does not fetch from
register.openclaw.ai, add auth, add source profiles, add signed envelopes, add regional selection, add snapshot persistence, change search behavior, or move skills into feeds. Those are separate reviewable slices.How To Review
Review this as a mechanical shape change plus compatibility guard. Existing callers should still get the same official external plugin entries from the bundled catalog, while the bundled file becomes ready to serve as the local fallback for a hosted feed.
Validation
pnpm exec oxfmt --check src/plugins/official-external-plugin-catalog.ts src/plugins/official-external-plugin-catalog.test.tspnpm exec oxlint --deny-warnings src/plugins/official-external-plugin-catalog.ts src/plugins/official-external-plugin-catalog.test.tsscripts/lib/official-external-plugin-catalog.jsongit diff --checkCI=1 timeout 180s node scripts/test-projects.mjs src/plugins/official-external-plugin-catalog.test.ts(17 tests at initial PR authoring)Real Behavior Proof
Behavior or issue addressed:
The feed-shaped bundled fallback is still loaded by existing runtime catalog consumers after the catalog wrapper refactor.
Real environment tested:
Windows checkout
C:\tmp\openclaw-feeds-proof\pr1at44c0884c3edc, source harness vianode --import tsx, no network services.Exact steps or command run after this patch:
src/plugins/official-external-plugin-catalog.ts.src/plugins/web-search-install-catalog.ts.Evidence after fix:
{ "head": "44c0884c3edc", "bundledFeedAccepted": true, "officialEntryCount": 74, "firstOfficialIds": ["wecom-openclaw-plugin", "openclaw-plugin-yuanbao", "openclaw-weixin", "openclaw-zaloclawbot"], "webSearchConsumerCount": 9, "webSearchConsumerSample": [ { "pluginId": "brave", "provider": "brave", "npmSpec": "@openclaw/brave-plugin" }, { "pluginId": "exa", "provider": "exa", "npmSpec": "@openclaw/exa-plugin" }, { "pluginId": "firecrawl", "provider": "firecrawl", "npmSpec": "@openclaw/firecrawl-plugin" } ] }Observed result after fix:
The bundled feed wrapper validates, the existing official catalog returns 74 entries, and a real catalog consumer still resolves web-search install candidates from that feed-shaped fallback.
What was not tested:
Hosted network fetching is intentionally not part of this PR. It is covered by the next hosted-fetch PR.