sim-lib-agent 0.1.1

Agent runtime surfaces for SIM.
Documentation
use super::runtime::AgentFnKind;
use sim_kernel::{Export, Symbol};
use std::sync::LazyLock;

pub(crate) fn agent_exports() -> Vec<Export> {
    AgentFnKind::all()
        .iter()
        .map(|(symbol, _)| Export::Function {
            symbol: symbol.clone(),
            function_id: None,
        })
        .collect()
}
pub(super) static AGENT_FUNCTIONS: LazyLock<Vec<(Symbol, AgentFnKind)>> = LazyLock::new(|| {
    vec![
        (Symbol::qualified("agent", "defun"), AgentFnKind::Defun),
        (Symbol::qualified("agent", "tools"), AgentFnKind::Tools),
        (
            Symbol::qualified("agent", "call-tool"),
            AgentFnKind::CallTool,
        ),
        (Symbol::qualified("agent", "make"), AgentFnKind::Make),
        (Symbol::qualified("agent", "start"), AgentFnKind::Start),
        (Symbol::qualified("agent", "connect"), AgentFnKind::Connect),
        (Symbol::qualified("agent", "call"), AgentFnKind::Call),
        (Symbol::qualified("agent", "stream"), AgentFnKind::Stream),
        (
            Symbol::qualified("agent", "component"),
            AgentFnKind::Component,
        ),
        (
            Symbol::qualified("agent", "components"),
            AgentFnKind::Components,
        ),
        (Symbol::qualified("agent", "replace"), AgentFnKind::Replace),
        (Symbol::qualified("agent", "restart"), AgentFnKind::Restart),
        (Symbol::qualified("agent", "derive"), AgentFnKind::Derive),
        (Symbol::qualified("agent", "lisp"), AgentFnKind::Lisp),
        (Symbol::qualified("agent", "reflect"), AgentFnKind::Reflect),
        (Symbol::qualified("agent", "server"), AgentFnKind::Server),
        (Symbol::qualified("agent", "attach"), AgentFnKind::Attach),
        (Symbol::qualified("agent", "audit"), AgentFnKind::Audit),
        (Symbol::qualified("agent", "trace"), AgentFnKind::Trace),
        (Symbol::qualified("agent", "wire"), AgentFnKind::Wire),
        (Symbol::qualified("agent", "pattern"), AgentFnKind::Pattern),
        (
            Symbol::qualified("memory", "working"),
            AgentFnKind::MemoryWorking,
        ),
        (Symbol::qualified("memory", "file"), AgentFnKind::MemoryFile),
        (
            Symbol::qualified("memory", "vector"),
            AgentFnKind::MemoryVector,
        ),
        (
            Symbol::qualified("memory", "blackboard"),
            AgentFnKind::MemoryBlackboard,
        ),
        (
            Symbol::qualified("memory", "persona"),
            AgentFnKind::MemoryPersona,
        ),
        (
            Symbol::qualified("memory", "append"),
            AgentFnKind::MemoryAppend,
        ),
        (
            Symbol::qualified("memory", "recent"),
            AgentFnKind::MemoryRecent,
        ),
        (Symbol::qualified("memory", "scan"), AgentFnKind::MemoryScan),
        (
            Symbol::qualified("memory", "search"),
            AgentFnKind::MemorySearch,
        ),
        (
            Symbol::qualified("memory", "snapshot"),
            AgentFnKind::MemorySnapshot,
        ),
        (
            Symbol::qualified("memory", "restore"),
            AgentFnKind::MemoryRestore,
        ),
        (Symbol::qualified("runner", "echo"), AgentFnKind::RunnerEcho),
        (
            Symbol::qualified("runner", "cassette"),
            AgentFnKind::RunnerCassette,
        ),
        (Symbol::qualified("runner", "fake"), AgentFnKind::RunnerFake),
        (
            Symbol::qualified("runner", "agent"),
            AgentFnKind::RunnerAgent,
        ),
        (
            Symbol::qualified("runner", "debate"),
            AgentFnKind::RunnerDebate,
        ),
        (
            Symbol::qualified("runner", "market"),
            AgentFnKind::RunnerMarket,
        ),
        (Symbol::qualified("runner", "card"), AgentFnKind::RunnerCard),
        (
            Symbol::qualified("runner", "cards"),
            AgentFnKind::RunnerCards,
        ),
        (
            Symbol::qualified("runner", "health"),
            AgentFnKind::RunnerHealth,
        ),
        (
            Symbol::qualified("runner", "place"),
            AgentFnKind::RunnerPlace,
        ),
        (Symbol::new("model-sites"), AgentFnKind::ModelSites),
        (Symbol::qualified("model", "at"), AgentFnKind::ModelAt),
        (
            Symbol::qualified("model", "cached"),
            AgentFnKind::ModelCached,
        ),
        (Symbol::qualified("model", "sites"), AgentFnKind::ModelSites),
        (
            Symbol::qualified("model", "site-card"),
            AgentFnKind::ModelSiteCard,
        ),
        (Symbol::new("model-policy"), AgentFnKind::ModelPolicy),
        #[cfg(feature = "runner-http")]
        (
            Symbol::qualified("runner", "openai-compatible"),
            AgentFnKind::RunnerOpenAiCompatible,
        ),
        #[cfg(feature = "runner-ollama")]
        (
            Symbol::qualified("runner", "ollama"),
            AgentFnKind::RunnerOllama,
        ),
        #[cfg(feature = "runner-process")]
        (
            Symbol::qualified("runner", "process"),
            AgentFnKind::RunnerProcess,
        ),
        (
            Symbol::qualified("planner", "budget"),
            AgentFnKind::PlannerBudget,
        ),
        (
            Symbol::qualified("planner", "refine"),
            AgentFnKind::PlannerRefine,
        ),
        (
            Symbol::qualified("planner", "parallel"),
            AgentFnKind::PlannerParallel,
        ),
        (
            Symbol::qualified("planner", "chain"),
            AgentFnKind::PlannerChain,
        ),
        (
            Symbol::qualified("judge", "rubric"),
            AgentFnKind::JudgeRubric,
        ),
        (
            Symbol::qualified("judge", "ranked-vote"),
            AgentFnKind::JudgeRankedVote,
        ),
        (
            Symbol::qualified("judge", "threshold"),
            AgentFnKind::JudgeThreshold,
        ),
        (
            Symbol::qualified("router", "round-robin"),
            AgentFnKind::RouterRoundRobin,
        ),
        (Symbol::qualified("router", "bid"), AgentFnKind::RouterBid),
        (
            Symbol::qualified("router", "sticky"),
            AgentFnKind::RouterSticky,
        ),
        (
            Symbol::qualified("persona", "style"),
            AgentFnKind::PersonaStyle,
        ),
        (
            Symbol::qualified("persona", "language"),
            AgentFnKind::PersonaLanguage,
        ),
        (
            Symbol::qualified("persona", "translator"),
            AgentFnKind::PersonaTranslator,
        ),
        (
            Symbol::qualified("retriever", "vector"),
            AgentFnKind::RetrieverVector,
        ),
        (
            Symbol::qualified("retriever", "web"),
            AgentFnKind::RetrieverWeb,
        ),
        (
            Symbol::qualified("retriever", "file"),
            AgentFnKind::RetrieverFile,
        ),
        (
            Symbol::qualified("retriever", "db"),
            AgentFnKind::RetrieverDb,
        ),
        (
            Symbol::qualified("sandbox", "wasm"),
            AgentFnKind::SandboxWasm,
        ),
        (
            Symbol::qualified("sandbox", "subprocess"),
            AgentFnKind::SandboxSubprocess,
        ),
        (
            Symbol::qualified("sandbox", "capability-restricted"),
            AgentFnKind::SandboxCapabilityRestricted,
        ),
        (
            Symbol::qualified("recorder", "journal"),
            AgentFnKind::RecorderJournal,
        ),
        (
            Symbol::qualified("recorder", "audit"),
            AgentFnKind::RecorderAudit,
        ),
        (
            Symbol::qualified("recorder", "prometheus"),
            AgentFnKind::RecorderPrometheus,
        ),
        (Symbol::qualified("voice", "tts"), AgentFnKind::VoiceTts),
        (Symbol::qualified("voice", "stt"), AgentFnKind::VoiceStt),
        (Symbol::qualified("swarm", "make"), AgentFnKind::SwarmMake),
        (
            Symbol::qualified("swarm", "launch"),
            AgentFnKind::SwarmLaunch,
        ),
        (
            Symbol::qualified("swarm", "explain"),
            AgentFnKind::SwarmExplain,
        ),
        (
            Symbol::qualified("swarm", "status"),
            AgentFnKind::SwarmStatus,
        ),
        (
            Symbol::qualified("swarm", "as-fabric"),
            AgentFnKind::SwarmAsFabric,
        ),
        (
            Symbol::qualified("swarm", "as-site"),
            AgentFnKind::SwarmAsSite,
        ),
        (
            Symbol::qualified("topology", "ring"),
            AgentFnKind::TopologyRing,
        ),
        (
            Symbol::qualified("topology", "star"),
            AgentFnKind::TopologyStar,
        ),
        (
            Symbol::qualified("topology", "mesh"),
            AgentFnKind::TopologyMesh,
        ),
        (
            Symbol::qualified("topology", "market"),
            AgentFnKind::TopologyMarket,
        ),
        (
            Symbol::qualified("topology", "debate"),
            AgentFnKind::TopologyDebate,
        ),
        (
            Symbol::qualified("topology", "speculate-verify"),
            AgentFnKind::TopologySpeculateVerify,
        ),
        (
            Symbol::qualified("topology", "open-claw"),
            AgentFnKind::TopologyOpenClaw,
        ),
        (
            Symbol::qualified("gateway", "create"),
            AgentFnKind::GatewayCreate,
        ),
    ]
});