Skip to content

feat(marketplace): add unified experimental extension catalogs - #60816

Closed
dobord wants to merge 5 commits into
anomalyco:devfrom
dobord:marketplace-upstream
Closed

dobord wants to merge 5 commits into
anomalyco:devfrom
dobord:marketplace-upstream

Conversation

@dobord

@dobord dobord commented Oct 31, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #28696.

Ports #40108 to the current V2 runtime, following the maintainer's request when that PR was closed.

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Adds an experimental Marketplace for plugins, skills, agents, commands, MCP servers, instructions, and bundles.

  • SQLite owns sources and installed state; Location config projects active packages without rewriting user JSONC.
  • Install, update, and profile operations prepare a revision-bound, one-time plan. Apply verifies the materialized files before committing it.
  • Supports local/HTTPS catalogs, SSH repositories, private GitLab catalogs, and compatible OpenAI, Copilot, and Claude plugin manifests. Credential values are resolved from environment bindings at request time.
  • Adds app settings, /marketplace in the TUI, CLI workflows, and /api/experimental/marketplace with regenerated clients and OpenAPI.

The five commits are based on current upstream dev (1d479d7642).

How did you verify your code works?

  • Pre-push bun run check: all 35 typecheck tasks passed; lint reported no errors.
  • Core: 62 Marketplace/vanilla tests passed; database migration and config suites also passed. Core and Server passed typecheck:tsc.
  • Server: 119 passed, 1 skipped, in an isolated environment. The new client-to-runtime test installs an agent, disables it, rejects plan replay, and preserves user JSONC byte-for-byte.
  • Client API/alias tests: 43 passed; HTTP API codegen: 103 passed.
  • TUI Marketplace/config tests: 15 passed. Built-app Playwright checks covered explicit installation approval and existing extension-row alignment.
  • Real CLI smoke: add, list, install, profile export, lock export/verification, and uninstall passed against a private test server.
  • Documentation typecheck, production build, and link validation passed.

Visual

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72" fill="none">
  <style>
    @keyframes pulse { 0%,100% { opacity:.3 } 50% { opacity:1 } }
    .flow { animation:pulse 2.4s ease-in-out infinite }
    .done { animation:pulse 2.4s ease-in-out .8s infinite }
    @media (prefers-reduced-motion:reduce) { .flow,.done { animation:none } }
  </style>
  <g stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
    <rect x="9" y="15" width="47" height="42" rx="5" opacity=".55"/>
    <path d="M18 26h27M18 36h21M18 46h25" opacity=".7"/>
    <path class="flow" d="M64 36h29m-5-5 5 5-5 5"/>
    <path d="m104 24 20-10 20 10-20 11-20-11Zm0 0v25l20 10 20-10V24m-20 11v24" opacity=".8"/>
    <path class="flow" d="M152 36h29m-5-5 5 5-5 5"/>
    <rect x="190" y="15" width="40" height="42" rx="5" opacity=".55"/>
    <path d="M199 26h21M199 35h14" opacity=".55"/>
    <path class="done" d="m199 46 6 5 13-13"/>
  </g>
</svg>

Screenshots / recordings

Marketplace installation review

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@opencodejr opencodejr Bot closed this Oct 31, 2026
@opencodejr

opencodejr Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Thanks for porting the Marketplace work from #40108 to V2. You clearly put a lot of care into it. At ~19k changed lines across core, protocol, server, clients, app, TUI, CLI and docs, though, it's too large to review well as one pull request, so I'm closing this one. Please split it into smaller, focused pull requests, each of which can be reviewed and tested on its own. For example:

  • Core runtime and storage: schema types, the SQLite migration, the source/cache/plan-store/projection services and their tests. If you can, start with a smaller first slice, e.g. local catalogs and a single package kind, and add HTTPS/SSH/GitLab sources, Codex/Claude/Copilot manifest compatibility, profiles and lockfiles in follow-ups.
  • HTTP API: the /api/experimental/marketplace group, server handlers and the regenerated clients. Please regenerate openapi.json so only the new routes appear: right now it has ~3k unrelated deleted lines that look like the whole spec was reordered.
  • CLI commands
  • App settings UI
  • TUI /marketplace dialog
  • Docs

It would also help to agree on the overall design in #28696 before the core pull request, since this adds a new persistent subsystem. You're welcome to open these pull requests.

@dobord

dobord commented Oct 31, 2026

Copy link
Copy Markdown
Author

The focused follow-up is #60821 (local agent catalogs only), now in draft pending the design discussion in #28696. It addresses the package-boundary and agent-name review comments with Core-owned runtime state and qualified agent IDs; 66 tests and full checks pass. I also audited the earlier generated OpenAPI diff: all 138 existing paths and 489 schemas, including their key order, are unchanged. git diff --minimal shows 3,865 additions and zero deletions; the apparent unrelated deletions come from alignment of repeated JSON. The API follow-up will include an additive-contract check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Plugin/Agent/Skills/etc marketplace

1 participant