Expand description
§Extension management handlers
Wind queries the scanner’s registry through these. Each
delegates to MountainEnvironment::GetExtensions /
GetExtension; the work has already happened in
ExtensionPopulate / Scanner::ScanDirectoryForExtensions.
Layout (one export per file, file name = identity):
ExtensionsGetInstalled::ExtensionsGetInstalled-ILocalExtension-shaped list with optional0/1type filter; carries the boot-race poll (≤5 s wait forExtensionPopulate) and the manifest skeleton fix that keeps the trusted-publishers migration from crashing the webview onmanifest.publisher.toLowerCase().ExtensionsGetAll::ExtensionsGetAll- raw manifests, no reshape. Tooling / debug surfaces only.ExtensionsGet::ExtensionsGet- single extension by<publisher>.<name>.ExtensionsIsActive::ExtensionsIsActive- currently a “scanned & present” predicate; TODO: consult Cocoon’s activation table for a real answer.
Modules§
- Extensions
Get extensions:get(id)- fetch a single extension’s manifest by<publisher>.<name>identifier. Returnsnullwhen the id isn’t in the scanner’s registry; non-error outcome so callers can?? defaultscleanly without anunwrap.- Extensions
GetAll extensions:getAll- every scanned extension’s raw manifest, noILocalExtensionreshape. Used by tooling / debug surfaces that want the full payload (extension activity log, marketplace UI, audit reports). Renderer consumers MUST go throughExtensionsGetInstalledfor the workbench-shaped data.- Extensions
GetInstalled extensions:getInstalled(type?)- return scanned extensions reshaped as VS Code’sILocalExtension[]soExtensionManagementChannelClient.getInstalledcan destructureextension.identifier.id,extension.manifest.*, andextension.locationwithout blowing up.- Extensions
IsActive extensions:isActive(id) -> bool- predicate over the scanner’s registry. Currently a “scanned & present” check; a future revision should consult Cocoon’s per-extension activation table so the answer reflects whether the extension’sactivate()function actually ran.