use std::path::{Path, PathBuf};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Host {
pub namespace: String,
pub command: String,
pub cargo_package: String,
pub skills_directory: PathBuf,
}
impl Host {
#[must_use]
pub fn hash_schema(&self) -> String {
format!("{}.skill-evidence.hash.v1", self.namespace)
}
#[must_use]
pub fn record_schema(&self) -> String {
format!("{}.skill-evidence.record.v1", self.namespace)
}
#[must_use]
pub fn method_gap_inventory_schema(&self) -> String {
format!("{}.method-gap-research-status.inventory/v1", self.namespace)
}
#[must_use]
pub fn operator_skill(&self, operator_skill_name: &str) -> PathBuf {
self.skills_directory.join(operator_skill_name)
}
#[must_use]
pub fn skills_directory(&self) -> &Path {
&self.skills_directory
}
#[must_use]
pub fn recovery_instruction(&self, recovery: Recovery) -> String {
match recovery {
Recovery::RederiveGate => format!(
"Run `{} skills evidence derive --target <skill-dir>`.",
self.command
),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum Recovery {
RederiveGate,
}