Files
胡飞 b680b504e5 refactor(plugins): retire third-party plugin UI, keep headless IPC runtime layer
- Remove declarative panel chain: declarative_ui_demo crate, universal_plugin_panel,
  home_tab hooks, extension_widget/extension_selector, manifest declarativePanels
- Remove WASM ViewSpec/UiNode UI: WIT open-view/handle-view-action/open-result-view,
  popup rendering in extension_action_handler
- Remove provider reverse UI RPC: ui/action, ui/dialog, ui/window, host
  quick_pick/confirm/open_view, dialog/window activation managers
- Keep headless provider layer: resource/job/event/blob, secrets/storage/log,
  host blob upload, runtime monitor, extension_view manager
- Rework ActivationManager::activate_runtime as independent lease refcount;
  fix concurrent-start wait, cancellation cleanup, job registry release,
  catalog hot-replace; add regression tests
- Add ShellPluginHost global stub as gpui-shell integration point
- Sync docs/examples to headless protocol; drop ui:* permissions from fixtures
2026-08-31 09:37:29 +08:00

1.2 KiB

Architecture

extension.json
    |
    v
ExtensionRuntimeCatalog
    |
    v
ActivationManager ---- RuntimeMonitor
    |
    v
ProcessRpcSession
    |
    +---- resource
    +---- job
    +---- event stream
    +---- blob

Ownership

  • ExtensionRuntimeCatalog owns validated static runtime metadata.
  • ActivationManager owns runtime activation leases, process generations and shutdown.
  • RuntimeMonitor owns health polling and bounded restart decisions.
  • UniversalProviderHost owns reverse host capabilities such as secrets and host blob upload.
  • BlobStore, JobActivationManager and EventActivationManager own generation-scoped state.

Activation contract

activate_runtime(runtime_id) is the only process activation entry. Multiple callers may acquire independent leases for the same runtime; one process session is shared. Releasing a stale lease is an idempotent no-op. The last live lease shuts the runtime down.

UI boundary

The runtime layer has no UI model. Declarative panels, ViewSpec/UiNode, WIT open-view and provider UI RPC have been removed. gpui-shell will be integrated above this layer and will consume runtime services through a host-owned adapter.