workload-call
Provided by the host to a component plugin that imports an interface a workload exports, so the plugin can call into that workload — the reverse of the capability direction, where a workload imports what the plugin exports.
A host-native (Rust) plugin does this by holding a handle: it captures the workload when the workload deploys and invokes the export whenever it likes, off any event of its own. This interface is that handle, for a plugin that is itself a component and so cannot hold a Rust value.
No call goes through this interface. The plugin invokes a workload's export through its own import of that interface; this one only names which workload those calls land on, and lists the workloads callable at all.
Importing this interface is also what declares the intent: a plugin that does not is held to a closed import surface, where an import no host built-in provides fails the plugin's load rather than waiting for a workload that may never appear.
Only interfaces the plugin imports that no host built-in provides are routed
this way. They are matched to a workload exactly as a capability is: the
workload must both declare the interface among the ones it needs from the
host and export it. Every function on such an interface must be an
async func: the host serves it concurrently, so that a call out to a
workload never holds the plugin's store — shared by every workload it serves
— for the round trip. A plain func is refused when the plugin loads.