pub struct AppManifest {Show 25 fields
pub manifest_version: u8,
pub name: String,
pub version: String,
pub app_type: AppType,
pub description: String,
pub abi: Option<AbiVersion>,
pub entrypoint: Option<String>,
pub hot_reload: Option<HotReloadKind>,
pub critical: bool,
pub auto_start: bool,
pub has_ui: bool,
pub ui_path: String,
pub permissions: Vec<String>,
pub optional_permissions: Vec<String>,
pub provides_scopes: Vec<ProvidedScope>,
pub endpoint_policies: Vec<EndpointPolicy>,
pub capability_scopes: HashMap<String, String>,
pub provides: HashMap<String, ProvidedCapability>,
pub capabilities: ManifestCapabilities,
pub author: Option<String>,
pub homepage: Option<String>,
pub depends_on: Option<Vec<String>>,
pub boot_priority: Option<u32>,
pub standalone: Option<StandaloneConfig>,
pub tcp: Option<TcpManifest>,
}Expand description
Canonical manifest entity — unified v1/v2 format.
Deserializes both old (v1, no manifest_version) and new (v2) manifests.
All v2-only fields use #[serde(default)] so that v1 manifests parse
correctly without any field changes.
Fields§
§manifest_version: u8Schema version. Absent or 1 = legacy v1; 2 = extended v2.
name: String§version: String§app_type: AppType§description: String§abi: Option<AbiVersion>Host ABI compatibility version. Required when manifest_version == 2.
entrypoint: Option<String>Payload entry point relative to the app directory.
Default: app.so for Native, dist/index.js for Bun.
hot_reload: Option<HotReloadKind>Hot-reload behaviour classification.
Default: experimental for Native, supported for Bun.
critical: bool§auto_start: bool§has_ui: bool§ui_path: String§permissions: Vec<String>§optional_permissions: Vec<String>§provides_scopes: Vec<ProvidedScope>§endpoint_policies: Vec<EndpointPolicy>§capability_scopes: HashMap<String, String>§provides: HashMap<String, ProvidedCapability>§capabilities: ManifestCapabilities§homepage: Option<String>§depends_on: Option<Vec<String>>§boot_priority: Option<u32>§standalone: Option<StandaloneConfig>Required when app_type == "standalone" and the manifest declares any
provides / capabilities.provides entries. Carries the Unix domain
socket path the daemon dispatches capability calls to.
tcp: Option<TcpManifest>Optional TCP-binding block — feature 470 (port registry). Absence means the app does not bind a TCP port the registry manages.
Implementations§
Source§impl AppManifest
impl AppManifest
Sourcepub fn effective_hot_reload(&self) -> HotReloadKind
pub fn effective_hot_reload(&self) -> HotReloadKind
Returns the effective HotReloadKind — explicit field or the default
for the app type.
Sourcepub fn effective_entrypoint(&self) -> &str
pub fn effective_entrypoint(&self) -> &str
Returns the effective entrypoint — explicit field or the type-specific default.
Standalone apps have no daemon-managed entrypoint (systemd owns the lifecycle); the empty string signals “not applicable”.
Sourcepub fn has_capability_providers(&self) -> bool
pub fn has_capability_providers(&self) -> bool
True iff this manifest declares at least one capability provider
(via either the v1 provides map or the v2 capabilities.provides list).
Sourcepub fn resolved_capability_provides(
&self,
) -> HashMap<String, ProvidedCapability>
pub fn resolved_capability_provides( &self, ) -> HashMap<String, ProvidedCapability>
Merges the v1 provides map and the v2 capabilities.provides name
list into a single capability→declaration map (composition-root
cleanup Round 4 T28 — extracted from
control_ipc::handlers::handle_app_register_standalone, which uses
this to shape a standalone app’s declared providers for capability
registration).
- v1 entries (the
providesmap) carry their real description/schema and always win on a name conflict. - v2-only names (declared only via
capabilities.provides, format"name"or"name:extra"— only the part before the first:is used) get a blank declaration, inserted only if the name is not already present from v1. Blank/whitespace-only names are skipped.
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the manifest for structural correctness.
Returns Ok(()) on success, or a human-readable error string.
Called by the manifest parser after deserialization.
Sourcepub fn validate_with_socket_path_policy(
&self,
allow_non_run: bool,
) -> Result<(), String>
pub fn validate_with_socket_path_policy( &self, allow_non_run: bool, ) -> Result<(), String>
Validate this manifest with an explicit standalone socket-path policy.
Runtime adapters may opt into non-/run paths for development without
making the domain model read process configuration.
Trait Implementations§
Source§impl Clone for AppManifest
impl Clone for AppManifest
Source§fn clone(&self) -> AppManifest
fn clone(&self) -> AppManifest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more