Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Design model

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

Tree structure for beskidPackagesView, the pckgClient TypeScript contract, and status-bar activity phases shared with LSP and CLI.

The Packages view lives in container beskidViews alongside Workspaces, Project, and Outline (see extension surface design model).

flowchart TB
subgraph packagesView [beskidPackagesView]
TP[ThisProject section]
RS[RegistrySearch section]
TP --> D1[Declared/Locked dependency rows]
RS --> Q[Search results]
Q --> V[Version nodes]
V --> Dep[Dependency leaves]
end

Root sections must always be visible (not hidden behind empty search).

sectionkindChildren
ThisProjectsectionDependency rows from LSP
ThisProjectdependencyOptional context actions only
RegistrySearchsectionSearch prompt or results
RegistrySearchsearchResultPackage summary node
RegistrySearchversionCollapsible version metadata
RegistrySearchregistryDependencyDependency of selected version

Icons: dependency package; unresolved warning; registry package cloud-download.

FunctionHTTPCache key
searchPackages({ q, limit, registryBaseUrl })GET {base}/api/search?q=…&limit=…search:{base}:{q}:{limit} ~30s TTL
getPackageDetails({ name, registryBaseUrl })GET {base}/api/packages/{name}details:{base}:{name}
buildRegistryPackageUrl({ name, version, registryBaseUrl })N/A (string builder)
createPckgFetch(context)Injects auth from SecretStorage

All functions must use createPckgFetch for transport.

Align TypeScript types with pckg records:

  • PackageSearchResponse: { package, reviewCount, health }
  • PackageDetailsResponse: { package, versions, dependencies, dependentsCount, readme, health, … }
  • PackageDependencyResponse: { name, version, source, registry }
  1. If focused project belongs to a workspace, use registries entry with alias: "default" from beskid.getWorkspaceSummary.
  2. Else vscode.workspace.getConfiguration('beskid.pckg').get('baseUrl').
  3. Else http://localhost:5000.

Extend shared PckgActivityPhase (and CLI phases) with:

PhaseWhen
searchRegistry search in flight
detailsPackage details fetch
fetchbeskid fetch running
lockbeskid lock running

LSP scan phases remain separate on the same status controller.

ActionCommand
Searchbeskid.packages.search
Refreshbeskid.packages.refresh
Fetchbeskid.packages.fetch
Lockbeskid.packages.lock

View welcome content should offer “Search registry…” when RegistrySearch is empty.