sim_lib_openai_server/plan/
address.rs1use sim_kernel::{Error, Result, Symbol};
2
3#[derive(Clone, Debug, PartialEq, Eq)]
6pub struct BackendDescriptor {
7 pub address: String,
9 pub head: String,
11 pub runner: Symbol,
13 pub fixture: bool,
15}
16
17pub fn resolve_atom_address(address: &str) -> Result<BackendDescriptor> {
20 let Some((head, _)) = address.split_once('/') else {
21 return Err(model_not_found(address));
22 };
23 if !KNOWN_HEADS.contains(&head) {
24 return Err(model_not_found(address));
25 }
26 Ok(BackendDescriptor {
27 address: address.to_owned(),
28 head: head.to_owned(),
29 runner: Symbol::new(address.to_owned()),
30 fixture: head == "fixture",
31 })
32}
33
34fn model_not_found(address: &str) -> Error {
35 Error::Eval(format!("model_not_found: {address}"))
36}
37
38const KNOWN_HEADS: &[&str] = &[
39 "openai", "ollama", "process", "runner", "agent", "skill", "sim", "fixture", "gateway",
40];