Add first-party artifact-based notebook support for Bokeh 4.0
Bokeh notebook output is split across several host-specific JavaScript paths and pieces of global state. Static output, live updates, saved notebooks, JupyterLab, Colab, AnyWidget, marimo, and export do not share a clear ownership or recovery model. This contributes to resource-loading races, retained views, and fragile update and export behavior.
Build the Bokeh 4.0 notebook integrations as first-party adapters over the shared artifact and mount APIs. Use a bounded, revisioned protocol for live updates and binary buffers, with snapshot recovery after missed revisions. Each output should own and release its mount, comms, listeners, and queued work. Saved output and concurrent PNG or SVG export should use the same model, and the Jupyter extension should be tested and built reproducibly from source.
Source: bokeh/bokeh