Marketplace extension model
The Market is the catalog and install surface for Yapture extensions. Public site pages explain the model and link to authenticated app_v2 install flows; authenticated clients use the installed inventory API for canonical state.
Overview
Catalog pages describe what can be installed. Install state is not
inferred from those catalogs. Every authenticated client should read
GET /api/user/installed
and cache entries by
InstalledExtension.key.
Public vs authenticated surfaces
site_v2
publishes public specs and listings. app_v2 owns account-specific
install, uninstall, enable/disable, ratings, and inventory views.
Extension types
| Type | Purpose | Stable key |
|---|---|---|
plugin | Signed WASM command package for Launcher, desktop, and command-palette hosts. | plugin:<slug> |
macro_pack | Versioned set of portable macro definitions that materialize into user macro records. | macro_pack:<slug> |
integration | OAuth or service connection that grants scoped access to external systems. | integration:<slug> |
chat_pack | Reusable assistant prompts, tools, or conversation templates for chat surfaces. | chat_pack:<slug> |
Install endpoint model
Install endpoints are typed by catalog section and slug. app_v2 handles authentication, consent, validation, and creation of the install record. Public site install buttons should link to the authenticated app Market route for the same slug.
POST /api/market/plugins/github-jump/install
DELETE /api/market/plugins/github-jump/install
POST /api/market/macros/recruiter-starter/install
DELETE /api/market/macros/recruiter-starter/install - Plugin install validates manifest, signatures, ABI, trigger conflicts, and capabilities.
- Macro pack install validates the pack and materializes included macros into user macro records.
- Integration install grants scoped OAuth or service credentials.
- Chat pack install adds reusable chat assets to the user's available pack list.
Installed inventory model
GET /api/user/installed
is the canonical installed inventory endpoint. It normalizes plugin,
macro pack, integration, and chat pack installs into one response.
{
"data": [
{
"id": "lpi_01HV7QK3KX7Z9Q9Y6RZ2Z9W3R5",
"type": "plugin",
"key": "plugin:github-jump",
"slug": "github-jump",
"name": "GitHub Jump",
"description": "Search repositories, pull requests, and issues.",
"icon": "github",
"version": "0.3.3",
"author": "Dev Tools Co",
"enabled": true,
"installedAt": "2026-05-24T18:05:00.000Z",
"updatedAt": "2026-05-24T18:05:00.000Z",
"clients": ["app_v2", "desktop", "launcher"],
"source": "launcher_plugin_install"
},
{
"id": "ump_01HV7R4P9TNCHY2Y8MA91C9KG4",
"type": "macro_pack",
"key": "macro_pack:recruiter-starter",
"slug": "recruiter-starter",
"name": "Recruiter starter pack",
"version": "1.0.0",
"author": "Yapture",
"enabled": true,
"installedAt": "2026-05-24T18:08:00.000Z",
"clients": ["app_v2", "browser_v2", "cli_v2", "desktop", "launcher"],
"source": "user_macro_pack"
}
],
"error": null,
"totals": {
"plugin": 1,
"macro_pack": 1,
"integration": 0,
"chat_pack": 0
},
"generatedAt": "2026-05-24T18:10:00.000Z"
} Cross-client availability
The inventory response carries a
clients
array so every surface can distinguish installed from runnable.
| Client | Marketplace behavior |
|---|---|
app_v2 | Authenticated Market UI, install/uninstall actions, account inventory, and macro management. |
site_v2 | Public documentation and listing pages. It links to app_v2 for authenticated install actions. |
browser_v2 | Installed badges, macro pack availability, and local offline macro cache after auth. |
cli_v2 | market installed commands, macro sync, and local inventory cache keyed by InstalledExtension.key. |
desktop | Plugin and macro management UI, local runtime cache, and system text expansion. |
launcher | Plugin prefix hints, command results, and macro search backed by Desktop or API sync. |
Review and rating model
Rating
One rating per installed user per extension. Aggregates are shown on public Market pages.
Review
Optional short text tied to an installed version and publisher response thread.
Abuse report
Separate moderation path for malware, spam, capability misuse, or unsafe macro packs.
Publisher quality
Review status considers signatures, capability scope, install warnings, and support metadata.
Update behavior
| Case | Behavior |
|---|---|
| Patch update | Auto-update is allowed when signatures verify and requested capabilities do not expand. |
| New capability | Update is paused until the user reviews and approves the added grant. |
| Breaking compatibility | Clients that do not meet min_yapture or client compatibility stay on the last compatible version. |
| Macro pack update | Unchanged pack-sourced macros update in place; user-owned forks are preserved. |
| Uninstall | Install record is removed. Pack-sourced macros are deleted on sync; user-created records remain. |