Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Extension surface

Platform spec feature

Extension surface

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

What this feature specifies

Extension surface is the cross-cutting contract for the Beskid VS Code extension: four activity-bar views, the focusedProjectUri focus model, language-client initialization and configuration sync, shared status-bar phases (LSP scan, registry, CLI), and palette commands that tie explorers, outline, packages, and tasks together.

Implementation anchors

  • beskid_vscode/package.jsoncontributes.views, commands, configuration, taskDefinitions
  • beskid_vscode/src/extension.ts, runtime/BeskidExtensionRuntime.ts, lsp/beskidLanguageClient.ts
  • beskid_vscode/src/status/beskidStatusController.ts
  • LSP: compiler/crates/beskid_lsp/src/server/init.rs, backend.rs

Contract statement

The extension must present Workspaces, Project, Outline, and Packages views under a single Beskid view container. Outline continues to reflect symbols for the focused project; Packages and Project must share focusedProjectUri. Registry HTTP must use pckgClient only; workspace graphs must use LSP executeCommands documented in workspace and project explorer.

Inputs and outputs

InputOutput
VS Code workspace foldersLSP workspace roots; explorer workspace list
User focus (tree, auto-select, beskid.selectProject)focusedProjectUri → LSP + dependent views
Settings (beskid.cli.path, beskid.pckg.*, beskid.project.*)Client behavior, registry URL, CLI spawn
LSP progress / scanStatus bar phases for analysis
User package/CLI actionsStatus phases search, details, fetch, lock, build, …

State model

StateStorageConsumers
focusedProjectUriworkspaceState + LSP serverProject tree, outline, packages ThisProject
Language client handleExtension runtimeAll LSP requests
Status controller snapshotIn-memorySingle status bar item
pckg cachespckgClientPackages view only

Algorithms and flow

See flow and algorithm for activation → LSP init → tree refresh → package search.

Edge cases and errors

  • Server path change: Full language-client restart required.
  • Focus-only change: Configuration notification only (see explorer feature).
  • Offline registry: Packages registry section errors; LSP/local sections remain usable.
  • Missing beskid on PATH: CLI commands must fail with explicit notification referencing beskid.cli.path.

Compatibility and versioning

  • Extension engine pin and Open VSX platform matrix remain governed by publish workflow (darwin-arm64 / darwin-x64 LSP target pairing).
  • selectedProjectUri deprecated in favor of focusedProjectUri for one release cycle.

Security and performance notes

  • Secrets only in SecretStorage.
  • Debounce file watchers and registry search.
  • Do not restart LSP on focus churn.

Examples

See examples for corelib workspace and single-app project walkthroughs.

Verification and traceability

See verification and traceability for CI, unit, and smoke anchors.

Decisions

No open decisions. ADRs D-TOOL-VSC-00010005 under adr/; use the ADRs tab. Area index: decisions record.

Newcomer reading order

  1. VS Code extension area
  2. This hub → Design modelContractsFlowExamplesVerification
  3. Child features workspace explorer and package panel for depth

Articles