mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
Plugins get a host-owned WebSocket resource (net.websocket-connect → websocket with id/send/drain/close; dropping it closes the transport). The connection is bound to the project it was opened for, needs the endpoint's net:<host> grant, uses WSS outside loopback with the shared rustls config, and is capped at eight per plugin. Request headers (secret placeholders expanded) go with the handshake, except the ones the handshake owns; an empty subprotocol requests none; the handshake is bounded by the call's I/O budget. Incoming frames queue in a bounded FIFO, signalled by the websocket-ready event. Checked-in components are rebuilt for API 1.6. Co-authored-by: SorPuti <56741582+SorPuti@users.noreply.github.com>
74 lines
1.9 KiB
Plaintext
74 lines
1.9 KiB
Plaintext
package openidea:plugin@1.6.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,
|
|
}
|
|
|
|
/// A case added after 1.0, carried by the `other` case of a variant that
|
|
/// grows (events, view bodies, view events, form fields): its kind and its
|
|
/// data as JSON. Whoever doesn't know the kind ignores it or shows a
|
|
/// fallback; the SDKs decode the kinds they know.
|
|
record extension {
|
|
kind: string,
|
|
data: string,
|
|
}
|
|
|
|
/// 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>,
|
|
}
|
|
}
|