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>
container-runner — API 1.4 example
Put this directory on PATH before installing/granting the plugin, so
process:openidea-example-wrapper resolves to the included executable. Run
Example: Register Container Wrapper in a trusted project. It registers a
project run target, opens a keyed terminal, writes an Output channel and sets
a window status item. The owned terminal-exited event updates that window.
Disable withdraws the target; terminal/output lifetimes follow the host rules.
The fake wrapper just executes argv locally and exits its demo terminal.
To adapt it to DDEV, declare process:ddev, change program to ddev,
args to ["exec"], and use command overrides such as
("composer", ["composer"]). For Lando declare process:lando and supply its
CLI's command prefixes. Only approved executables run; selecting one in
Settings › Plugins reapproves/pins it. No shell command strings are evaluated.
For mapped working directories set container_root and workdir_args using
your wrapper's documented argv convention (for example --cwd {cwd}), or let
the wrapper manage cwd. Environment forwarding also belongs to that wrapper.
Build from the repository root:
plugins/build.sh official/container-runner
cargo test --manifest-path plugins/official/container-runner/Cargo.toml
cargo run -p ide-host --bin openidea-plugin -- check plugins/official/container-runner
Install the built package folder through Settings › Plugins › Install from Disk. See the plugin guide and official/community policy.
On Windows, supply an equivalent approved executable; the included demo script requires a POSIX shell. The host API itself is cross-platform.