|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| use serde::{Deserialize, Serialize};
|
|
|
| #[derive(Debug, Clone, Serialize, Deserialize)]
|
| pub struct BobRoute {
|
| pub emoji: &'static str,
|
| pub agent: &'static str,
|
| pub action: &'static str,
|
| pub subject: &'static str,
|
| pub verb: &'static str,
|
| }
|
|
|
| #[derive(Debug, Default)]
|
| pub struct BobSignals {
|
| pub has_seal: bool,
|
| pub has_vault: bool,
|
| pub ruptures: i32,
|
| pub has_forge: bool,
|
| pub has_resonance: bool,
|
| pub has_memory: bool,
|
| pub has_echo: bool,
|
| pub steps: i32,
|
| }
|
|
|
| static ROUTE_SEAL: BobRoute = BobRoute { emoji: "๐", agent: "CIPHER", action: "SIGN", subject: "sovereign.cipher.seal.v1", verb: "METAMINE_SEAL" };
|
| static ROUTE_VAULT: BobRoute = BobRoute { emoji: "๐ฆ", agent: "VAULT", action: "APPROVE", subject: "sovereign.vault.approve.v1", verb: "VAULT_APPROVE" };
|
| static ROUTE_SENTINEL: BobRoute = BobRoute { emoji: "๐", agent: "SENTINEL", action: "MONITOR", subject: "sovereign.sentinel.watch.v1", verb: "SENTINEL_MONITOR" };
|
| static ROUTE_FORGE: BobRoute = BobRoute { emoji: "โ๏ธ", agent: "FORGE", action: "BUILD", subject: "sovereign.forge.build.v1", verb: "FORGE_BUILD" };
|
| static ROUTE_ORACLE: BobRoute = BobRoute { emoji: "๐ฎ", agent: "ORACLE", action: "KNOWLEDGE", subject: "sovereign.oracle.query.v1", verb: "ORACLE_QUERY" };
|
| static ROUTE_MNEMEX: BobRoute = BobRoute { emoji: "๐", agent: "MNEMEX", action: "WORM", subject: "sovereign.mnemex.anchor.v1", verb: "ANCHOR" };
|
| static ROUTE_HERALD: BobRoute = BobRoute { emoji: "โก", agent: "HERALD", action: "BROADCAST", subject: "sovereign.herald.flux.v1", verb: "FLUX_BROADCAST" };
|
| static ROUTE_NOVA: BobRoute = BobRoute { emoji: "๐ง ", agent: "NOVA", action: "SYNTHETIC", subject: "sovereign.nova.query.v1", verb: "NOVA_SYNTHETIC" };
|
|
|
| impl BobSignals {
|
|
|
| pub fn from_errant_and_action(
|
| errant: &crate::errant_ffi::ErrantResult,
|
| action: &str,
|
| ) -> Self {
|
| BobSignals {
|
| has_seal: action.contains("seal") || action.contains("sign"),
|
| has_vault: action.contains("vault") || action.contains("approve") || action.contains("transfer"),
|
| ruptures: errant.ruptures,
|
| has_forge: action.contains("forge") || action.contains("build"),
|
| has_resonance: action.contains("query") || action.contains("oracle") || action.contains("resona"),
|
| has_memory: action.contains("anchor") || action.contains("memory"),
|
| has_echo: errant.output.len() > 0,
|
| steps: errant.steps,
|
| }
|
| }
|
| }
|
|
|
| pub fn route(signals: &BobSignals) -> &'static BobRoute {
|
|
|
| if signals.has_seal { return &ROUTE_SEAL; }
|
| if signals.has_vault { return &ROUTE_VAULT; }
|
| if signals.ruptures > 0 { return &ROUTE_SENTINEL; }
|
| if signals.has_forge { return &ROUTE_FORGE; }
|
| if signals.has_resonance { return &ROUTE_ORACLE; }
|
| if signals.has_memory { return &ROUTE_MNEMEX; }
|
| if signals.has_echo { return &ROUTE_HERALD; }
|
| &ROUTE_NOVA
|
| }
|
|
|
|
|
| pub fn pipeline_stages() -> &'static [&'static str] {
|
| &["TRUST-DEED-GATE", "MAMBA", "WATSON", "PROLOG-KERNEL", "HASKELL-MONAD", "SEAL"]
|
| }
|
|
|