Home / Documentation / VS Code API Coverage VS Code API Coverage Authoritative map of every top-level vscode.* API surface and its implementation split across Sky (workbench renderer), Cocoon (extension-host Node sidecar), and Mountain (Rust backend).
Dual-Track Strategy Track A - Stock-Node : Cocoon loads stock VS Code extHost*.ts sources unchanged. The workbench’s mainThread*.ts runs inside Sky. The ExtHostContext/MainContext RPC glue is provided by Cocoon’s shim alongside stock extHost code. Maximum compatibility from day one for any API the stock implementation handles in-process.
Track B - Rust-native : Mountain owns the backend. Cocoon’s vscode shim sends gRPC to Mountain which does the work natively (filesystem, process, terminal, search, git). Faster and safer than bouncing through Node for I/O-heavy APIs.
The two tracks are not mutually exclusive. Most APIs live on Track A by default, and we promote individual operations to Track B when a measured benefit exists. The Cocoon <Namespace>Route.ts tier router decides per-call.
Legend Track Meaning A Stock-Node - lift unchanged extHost*.ts into Cocoon B Rust-native - Mountain owns backend, gRPC from Cocoon C Cocoon-bespoke - hand-rolled TS in Land (last resort) S Sky-direct - call via __CEL_SERVICES__.* workbench accessor
Status symbols:
Working - end-to-end (activation + feature render path confirmed)Partial - RPC wired but UI render gap, or missing sub-methodStubbed - registration accepted, no effectNot attempted Pure lift - stateless, no RPC, already landed via StockLift.tsCommands Operation Primary Status registerCommandA+S Working registerTextEditorCommandA Working executeCommandA+S Working getCommandsA Working
Window - Editors Operation Primary Status activeTextEditorA Working visibleTextEditorsA Working showTextDocumentA Working onDidChangeActiveTextEditorA Working
Window - Surfaces Operation Primary Status createStatusBarItemS (native) Working setStatusBarMessageS Working createTreeViewA+S Working registerTreeDataProviderA+S Working createWebviewPanelA Stubbed registerWebviewViewProviderA Stubbed registerCustomEditorProviderA Stubbed createTerminalB Partial onDidOpen/CloseTerminalB Partial createOutputChannelS Working showInformationMessage / showWarningMessage / showErrorMessageA Working showQuickPick / createQuickPickA Partial showInputBoxA Partial showOpenDialog / showSaveDialogB Working withProgressA+S Partial registerFileDecorationProviderA Partial registerUriHandlerA Partial onDidChangeWindowStateA Working showNotebookDocumentA Stubbed
Workspace Operation Primary Status workspaceFoldersA Working onDidChangeWorkspaceFoldersA Working getWorkspaceFolderA+B Working textDocumentsA Working openTextDocumentA+B Working onDidOpen/Close/SaveTextDocumentA Working onWillSaveTextDocumentA Partial applyEditA+S Partial save / saveAsA Gap fs.readFile / writeFile / stat / readDirectory / createDirectory / delete / rename / copyB Working fs.isWritableFileSystemA Working registerFileSystemProviderA Partial createFileSystemWatcherB Partial findFilesB Working findTextInFilesB Working registerTextDocumentContentProviderA Partial getConfiguration / onDidChangeConfigurationA+B Working registerTaskProviderA Partial
Languages Operation Primary Status registerCompletionItemProviderA Partial registerHoverProviderA Partial registerDefinitionProviderA Partial registerReferenceProviderA Partial registerDocumentSymbolProviderA Partial registerCodeActionsProviderA Partial registerCodeLensProviderA Partial registerDocumentFormattingEditProviderA Partial registerRenameProviderA Partial registerInlayHintsProviderA Partial registerFoldingRangeProviderA Partial registerSemanticTokensProviderA Partial registerSignatureHelpProviderA Partial setTextDocumentLanguageA+S Working setLanguageConfigurationA+S Working createDiagnosticCollectionA+S Working matchPure Working
Debug Operation Primary Status registerDebugConfigurationProviderA Partial registerDebugAdapterDescriptorFactoryA Partial registerDebugAdapterTrackerFactoryA Partial startDebuggingA+B Stubbed activeDebugSession / onDidStart/ChangeSessionA Stubbed addBreakpoints / removeBreakpointsA Stubbed activeStackItemA Gap
Tasks Operation Primary Status registerTaskProviderA Partial fetchTasksA Stubbed executeTaskA+B Stubbed taskExecutions / onDidStartTask / onDidEndTaskA Stubbed
SCM Operation Primary Status createSourceControlA+S Partial inputBox.value read/writeA Partial $gitExec (built-in git ext)B Stubbed
Environment Operation Primary Status appName / appRoot / uriScheme / language / shell / machineId / sessionId / isNewAppInstallA Working clipboard.readText / writeTextB Working openExternalB Working asExternalUriA Gap remoteName / remoteAuthorityA Working
Extensions Operation Primary Status getExtension(id)A Working allA Working onDidChangeA Working
Authentication Operation Primary Status registerAuthenticationProviderA Partial getSessionA Partial getAccountsA Partial
Notebooks Operation Primary Status createNotebookControllerA Stubbed registerNotebookCellStatusBarItemProviderA Stubbed registerNotebookSerializerA Partial
Tests Operation Primary Status createTestControllerA Partial Run profile / run request A Stubbed
Chat / LM Operation Primary Status createChatParticipantA Stubbed registerLanguageModelChatProviderA Gap selectChatModelsA Stubbed
Localization Operation Primary Status t(message, ...)Pure Working bundle / uriA Working
Operation Primary Status createCommentControllerA Stubbed
Domain-Grouped Primary Assignment Rust-native primary (Track B wins) High I/O, process, or syscall-bound operations where Node adds latency:
File system — workspace.fs.*, scanner reads. Mountain owns File::* via tokio. Find files / text search — workspace.findFiles / findTextInFiles. Mountain’s globset walk. Terminal PTY — Mountain-owned via portable-pty. Git subprocess — Mountain spawns git as a child process. File watch — createFileSystemWatcher. Mountain notify crate. Native dialogs / clipboard / openExternal — Tauri covers these. Process spawn for debug adapters / task exec — upcoming via tokio::process. Node-stock primary (Track A wins) State-heavy or coordination-heavy APIs where stock VS Code handles nuance:
Command registry, language features, editor/document/selection, configuration, messages/dialogs/quick-input, progress, secrets/storage/memento, authentication, debug/tasks (stock core + Mountain process spawn), webviews, notebooks, tree views. Hybrid (per-operation split) SCM — stock for provider registration, Mountain-native for $gitExec. Terminal shell integration — shell events via extHost, PTY via Mountain. FileSystemProvider — Cocoon forwards reads via gRPC to Mountain for disk ops. Status bar — stock manages entry lifecycle, Sky renders via __CEL_SERVICES__.Statusbar. Highest-Priority Gaps vscode.debug.* end-to-end (startDebugging, sessions, breakpoints) — blocks every language debugger.vscode.tasks.executeTask — blocks Jake / Gulp / Grunt / npm task providers.vscode.window.createWebviewPanel — blocks GitLens graph panel, Copilot chat, markdown-preview internals.vscode.scm viewlet route into ISCMService — extensions register but UI stays empty.Tree-view renderer wiring — landed : extension-registered tree views render via __CEL_SERVICES__.TreeViewByViewId(id).dataProvider. localGit channel — landed .See Also