Expand description
§Vine::Server::Notification
Cocoon → Mountain notification handlers with non-trivial logic. Pure relay atoms (single RelayToSky::Fn call, single EmitToRenderer, or single dev_log!) are inlined directly in the Mountain dispatcher rather than given their own file.
Every handler here has at least one of:
- Payload reshape / field extraction
- Channel-drain coalescer (OnceLock flusher)
- Multiple side effects
- Non-obvious sky-event mapping
Modules§
- Apply
Text Edits - Cocoon →
window.applyTextEditsnotification. Emitted when an extension callseditor.edit(editBuilder => {...}). Cocoon’s TextEditor shim collects the edits and sends them here. Mountain relayssky://editor/apply-text-editsso Sky can apply them viaICodeEditorService.listCodeEditors()→editor.executeEdits(...). - Debug
Lifecycle - Cocoon →
debug.addBreakpoints/debug.removeBreakpoints/debug.consoleAppendnotifications. Fans onsky://debug/<suffix>so the Sky-side debug view picks up breakpoint changes and console output from the extension’svscode.debug.*surface. For breakpoint mutations specifically, also fans back to Cocoon sovscode.debug.onDidChangeBreakpointssubscribers in OTHER extensions observe the change. Without this round-trip, only the extension that calledaddBreakpoints/removeBreakpointsknows about its own write. - Decoration
Type Lifecycle - Cocoon
window.createTextEditorDecorationType/window.disposeTextEditorDecorationTypenotifications. Forwards the payload onsky://decoration/<suffix>as a batch; Sky demultiplexes back to per-decorationcel:decoration:*CustomEvents. - Dispose
Status BarItem - Cocoon →
disposeStatusBarItemnotification. Forwarded ontosky://statusbar/dispose-entryso the Sky shim removes the DOM node. - Open
External - Cocoon
openExternalnotification - extension calledvscode.env.openExternal(uri). Delegates to the platform default handler via theopenercrate. Fire-and-forget; success/failure is logged but not surfaced back to the extension. - Output
Append Line - Cocoon
output.appendLinenotification. Appendstextto the named output channel; we suffix the newline here so the downstreamsky://output/appendlistener stays a single append code path (no dedicatedappendLinelistener in Sky). - Output
Channel Append - Cocoon
outputChannel.appendnotification. Twin ofoutput.append; seeOutputCreate.rsfor the duplicate-wire rationale. - Output
Channel Coalesce - Per-channel coalescing buffer for
outputChannel.appendnotifications. - Output
Channel Hide - Cocoon
outputChannel.hidenotification. Forwards to Sky assky://output/show { visible: false, channel }so the workbench panel can dismiss the channel via the same handler that processesshow()calls. - Output
Replace - Cocoon
output.replacenotification - swap the channel’s entire contents. Mapped toclear+appendsince Sky has no dedicatedsky://output/replacelistener yet. - Progress
End - Cocoon
progress.endnotification. Fires once pervscode.window.withProgress(...)call when the task settles. Forwarded ontosky://notification/progress-end. - Progress
Report - Cocoon
progress.reportnotification. - Progress
Start - Cocoon
progress.startnotification. Fires at the top of everyvscode.window.withProgress(...)call. Normalised ontosky://notification/progress-begin. - Register
Command - Cocoon →
registerCommandnotification. Two side effects per call: - Register
Language Provider - Cocoon →
register_*/register_*_providernotification dispatcher. - Register
ScmProvider - Cocoon →
register_scm_providernotification. - Register
ScmResource Group - Cocoon →
register_scm_resource_groupnotification. - Security
Incident - Cocoon
security.incidentnotification - Cocoon-side security policy flagged a breach (extension violated permission set, blocked filesystem access, etc.). Land has no central security dashboard yet; the atom surfaces the incident viadev_log!and re-emits onsky://security/incidentfor future listeners. - SetLanguage
Configuration - Cocoon →
set_language_configurationnotification. Carries brackets / indent rules / word-pattern / comments. Forwarded onsky://language/configure; Monaco’s config side reads the payload and callsmonaco.languages.setLanguageConfiguration(...). - SetStatus
BarText - Cocoon →
setStatusBarTextnotification. Pure text-only fast path forvscode.window.setStatusBarMessage(...). Distinct from the typedstatusBar.updatenotification (which carries colour/tooltip/command fields). Forwards ontosky://statusbar/set-entry. - SetText
Editor Decorations - Cocoon →
window.setTextEditorDecorationsnotification. Channel-drain batching: ~5-200 calls per extension per second during scroll; one renderer event per frame (16 ms window, drain stragglers). UsesArc<dyn RendererEmitter>captured once fromVineHost::RendererEmitter()so the drain task never holds a reference to the full host across await points. - Status
BarLifecycle - Cocoon →
statusBar.update/statusBar.disposenotifications. Derives the Sky event name from the wire method suffix and emits onsky://statusbar/<suffix>. Canonical prefix issky://statusbar/(no hyphen) to match every other emit site in the statusbar group. - Status
BarMessage - Cocoon →
statusBar.messagenotification. Emitted when an extension callsvscode.window.setStatusBarMessage(one-shot text, optional auto-hide). Canonical channel issky://statusbar/set-message. - Support
- Vine::Server::Notification::Support
- Terminal
Lifecycle - Cocoon →
terminal.sendText/terminal.show/terminal.hide/terminal.disposenotifications. - Unregister
Command - Cocoon →
unregisterCommandnotification. Removes the proxiedCommandHandlerfrom the embedder’s dispatch registry so subsequentcommands.executeCommandno longer routes back to the extension. Also notifies Sky so the workbench command-service view and Mountain’s registry stay in sync when an extension disposes a command. - Unregister
ScmProvider - Cocoon →
unregister_scm_providernotification. Emitted whenvscode.scm.createSourceControl(...).dispose()fires. Resolves the provider handle: uses the explicithandlefield when Cocoon sends it, otherwise recomputes the DJB-31 hash ofscmIdthatRegisterScmProviderused when it originally registered the provider (necessary because Cocoon’s dispose path only carries the string id). - Update
ScmGroup - Cocoon →
update_scm_groupnotification. Fire-and-forget resource-state update for an SCM group. Two side effects: - Webview
Dispose - Cocoon
webview.disposenotification - extension disposed a webview panel or the user closed the tab. Sky’s webview shim listens onsky://webview/disposeand tears down the DOM container and unregisters the handle. - Webview
Lifecycle - Cocoon →
webview.setTitle/webview.setIconPath/webview.setHtml/webview.postMessage/webview.updateView/webview.viewState/webview.disposenotifications. - Webview
Post Message - Cocoon
webview.postMessagenotification - extension calledWebviewPanel.webview.postMessage(...). Stock VS Code delivers this as a DOMmessageevent inside the webview iframe; Land emits onsky://webview/postMessageand lets the Sky bridge relay into the specific webview DOM container keyed on{ handle, message }. - Window
Create Terminal - Cocoon →
window.createTerminalnotification. Spawns a PTY viaVineHost::CreateTerminal, then emitssky://terminal/createwith the provider-minted{ id, pid, name }. - Window
Show Message - Cocoon
window.showMessagenotification - fire-and-forget toast. Distinct fromWindow.ShowMessage(capitalised, round-trip request); this is the notification form that does not wait for a button selection.