Well they could work any way the author wanted, but if it were me, I'd make the plugins WASM.
That's how my favorite code formatter (dprint) does it.
For that matter though, it's how I would implement just about any plugin, these days, except those that need to exchange large info rapidly (e.g. an editor plugin that needs to operate on every key press).
It's dead easy to implement on the app side, and plugin authors can use an increasing number of higher-level languages to build plugins.