Skip to main content

onetaskgraph_core/subprocess/
mod.rs

1//! Sources that are other processes, on both sides of the pipe.
2//!
3//! `docs/plugin-protocol.md` is the normative text; this module is its Rust
4//! implementation. [`SubprocessSource`] is the engine's half — a [`TaskSource`] that is a
5//! spawned program — and [`serve`] is the plugin's half, hosting any plugin of this build
6//! behind the same protocol so the two can be exercised against each other.
7//!
8//! Nothing here compensates for a capability. A subprocess-hosted source declares what it
9//! can do in the handshake exactly as a compiled-in one does, and the engine's one
10//! compensation layer reads that declaration and does the rest — which is what keeps a
11//! source's answers the same whichever side of a pipe it is on.
12//!
13//! [`TaskSource`]: onetaskgraph_plugin_api::TaskSource
14
15mod connection;
16mod plugin;
17mod serve;
18mod source;
19mod wire;
20
21pub use connection::MAX_LINE;
22pub use plugin::{Plugin as SubprocessPlugin, Program, SubprocessConfig};
23pub use serve::{serve, serve_plugin};
24pub use source::{RequestDeadline, SubprocessSource};