Files
openidea/wit/types.wit
l0ng-ai fd1f465aeb feat(plugins): extension points, capability consent, async runtime and plugin API 1.0
Rework the plugin system per docs/plugin_plan.md (P0–P8):

- Extension-point registry (ide-extension) so new contribution types register
  without touching the kernel; languages, run detectors, providers, views and
  UI contributions go through it.
- Per-plugin capability consent with a risk-graded ledger; process
  capabilities are pinned to resolved binary paths and hashes.
- Async, actor-per-plugin Wasm runtime with lazy activation, cancellation,
  events, long-running tasks and idle reclamation.
- Plugin host moved into ide-host, shared by local and remote projects.
- Distribution: install/package tooling (openidea-plugin bin) and a static
  market index.
- WIT frozen as openidea:plugin@1.0.0; Rust SDK with mock host.
- Ten official validation plugins under plugins/official.
2026-11-04 02:41:46 +08:00

65 lines
1.5 KiB
Plaintext

package openidea:plugin@1.0.0;
/// Shared types. Positions are 0-based lines and UTF-16 code unit columns,
/// as in the editor and LSP.
interface types {
/// Why a host call failed. A capability that is not granted is reported
/// as `denied`, so the plugin can degrade (0.1 trapped instead).
variant error {
/// Not granted; the payload names the capability (`editor.write`).
denied(string),
/// The document changed since the version the edit was made for.
stale,
not-found(string),
invalid(string),
/// Cancelled by the user, or the plugin is being stopped.
cancelled,
failed(string),
}
enum log-level {
trace,
debug,
info,
warn,
error,
}
enum notification-level {
info,
warning,
error,
}
record position {
line: u32,
character: u32,
}
record range {
start: position,
end: position,
}
record text-edit {
range: range,
text: string,
}
/// A range in a file (absolute path).
record location {
path: string,
range: range,
}
/// Passed to `lifecycle.activate`.
record context {
plugin-id: string,
plugin-version: string,
/// Version of this API the host implements, e.g. "1.0".
api-version: string,
/// Capabilities granted to the plugin (`editor.write`, `process:git`, …).
capabilities: list<string>,
}
}