pub struct ServiceManifestEntry {
pub id: String,
pub name: Option<String>,
pub enabled: bool,
pub command: String,
pub args: Vec<String>,
pub cwd: Option<String>,
pub env: HashMap<String, String>,
pub health_check: HealthCheckSpec,
pub restart_policy: ReconnectConfig,
pub graceful_shutdown: GracefulShutdown,
}Expand description
A long-running service this plugin wants supervised (issue #479, prereq
for epic #477 — standalone connectors distributed as plugins). The
highest-trust artifact kind a plugin can declare: unlike an MCP stdio
server (whose command is free-form — see McpServerManifestEntry), a
service’s command MUST be exactly PLATFORM_BIN_TOKEN — no PATH
resolution, no ambient binaries. It may only ever execute the plugin’s
own verified, sha256-pinned per-platform binary (see
PluginArtifact’s archive contract) resolved via
platform_bin_path.
args/cwd/env (values only) accept the same ${plugin_dir}/
${platform_bin} substitution as MCP stdio entries — see
substitute_tokens.
Fields§
§id: StringService id — becomes the key bamboo-server’s ServiceManager and
provenance (RegisteredCapabilities::service_ids) key off.
name: Option<String>§enabled: bool§command: StringMUST validate as exactly PLATFORM_BIN_TOKEN — see the type docs.
args: Vec<String>§cwd: Option<String>May contain ${plugin_dir} / ${platform_bin}.
env: HashMap<String, String>Values (not keys) may contain ${plugin_dir} / ${platform_bin}.
health_check: HealthCheckSpec§restart_policy: ReconnectConfigReuses bamboo_domain::mcp_config::ReconnectConfig’s shape
(enabled/initial_backoff_ms/max_backoff_ms/max_attempts) per the
issue’s design.
graceful_shutdown: GracefulShutdownImplementations§
Source§impl ServiceManifestEntry
impl ServiceManifestEntry
Sourcepub fn resolve(
&self,
plugin_dir: &Path,
plugin_id: &str,
platform: Platform,
) -> ResolvedServiceEntry
pub fn resolve( &self, plugin_dir: &Path, plugin_id: &str, platform: Platform, ) -> ResolvedServiceEntry
Resolve this manifest entry against a concrete plugin_dir/platform.
Pure — does not touch disk, does not spawn anything. command is
always platform_bin_path (never substitute_tokens’d from
self.command) — validation already pins self.command to exactly
PLATFORM_BIN_TOKEN, and platform_bin_path IS that token’s
resolution.
Trait Implementations§
Source§impl Clone for ServiceManifestEntry
impl Clone for ServiceManifestEntry
Source§fn clone(&self) -> ServiceManifestEntry
fn clone(&self) -> ServiceManifestEntry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more