Marketplace
Marketplace displays real server state with a next action, not placeholder statistics.
Surface contract
Primary object: the published packages in the free cross-tenant catalog and this organization's registry rows: name, version, publisher, trust and state exactly as the server returned them.
Actions
- SearchSends the term to the control plane (?q=), which matches catalog name/version/publisher/description and this organization’s registry rows; the lists then apply to the filtered result.
- InspectCatalog Details reads GET /v1/catalog/packages/<name>/<version> and shows the exact server package document (manifest, trust, digests); registry Inspect reveals the server row, and nothing is summarized away or added client-side.
- InstallComponents are free: Install prints the registry’s own `docsloth component add <name>@<version>` command. There is no order, price, checkout or approval on this surface.
- PublishPublish package creates a free registry record through POST /v1/registry/packages with a manifest and source URL; no entitlement, price or seller account is involved.
Required states and how this surface reaches them
- loading
- the session probe and each list show Loading… until the control plane answers.
- ready
- the server’s own records render as returned; the primary object is named before its details.
- empty
- no package is published yet; Publish package states the free registry contract (manifest plus source URL, no entitlement).
- error
- the control plane’s status and detail are shown; no placeholder row replaces them.
- offline
- no control plane is reachable; nothing is rendered rather than invented.
- permission_denied
- a 401 returns to sign-in with this path; a 403 states that the role cannot read this surface.
- not_configured
- a deployment whose registry store is not configured answers 503 with its own detail; the page shows it rather than fabricated packages.
- budget_paused
- a 402 (quota_exceeded / upgrade_required) pauses spending; the budget row shows the cap and consumption that caused it.
- requires_approval
- publishing and identity changes are refused with the server’s own 403 unless the caller is an owner or admin; the page never claims an approval it did not receive.
Scope: the catalog is public and the registry rows are workspace membership. Search runs server-side (?q=); publishing is free and session-bound, and no price, seller account, order or verified identity is invented by this page.
Catalog
Published components from the public cross-tenant catalog (GET /v1/catalog/packages). Every package is free: Details reads the server's own package document and Install prints the registry's CLI command; no price, listing or buy step exists here.
Loading…
Published packages
checkingLoading…
Rows come from the authenticated control plane; this page never renders placeholder records. Actions report the server's own response, including refusals.