Skip to main content
The plugin API is the WIT package openidea:plugin@1.5.0 in wit/. The WIT files are the reference: each interface, type and function is documented in comments there. 1.5.0 is the version on main; the latest released version is 1.4.0, whose WIT is kept in sdk/rust/openidea-plugin/tests/api/released/.
A generated API reference is planned. Until then, use the WIT files below, cargo doc for the Rust SDK (sdk/rust/openidea-plugin), and the table mapping every SDK function to its WIT function and capability in plugins/README.md.

Worlds

plugin.wit defines the worlds: the base plugin world (every import, plus the lifecycle, commands and event-handler exports) and one optional world per extra export (plugin-providers, plugin-views, plugin-hover, …). See Architecture and sandbox.

Host interfaces (imports)

The plugin calls these. Most are gated by a capability.

Plugin interfaces (exports)

The IDE calls these. The first three are in every code plugin; the rest are optional and each comes with its own world.

Other languages

The SDK carries an identical copy of the WIT files in sdk/rust/openidea-plugin/wit. To write a plugin in another language, generate bindings for the plugin world (or an optional world) with your language’s component-model tooling, build the component, and validate it with openidea-plugin check.