pub const DEFAULT_ARCHITECT: &str = include_str!("../../instructions/architect.md");
pub const DEFAULT_BACKEND: &str = include_str!("../../instructions/backend.md");
pub const DEFAULT_DEBUGGER: &str = include_str!("../../instructions/debugger.md");
pub const DEFAULT_FRONTEND: &str = include_str!("../../instructions/frontend.md");
pub const DEFAULT_PLANNER: &str = include_str!("../../instructions/planner.md");
pub const DEFAULT_GENERAL: &str = include_str!("../../instructions/general.md");
pub fn get_default(role: &str) -> Option<&'static str> {
match role {
"architect" => Some(DEFAULT_ARCHITECT),
"backend" => Some(DEFAULT_BACKEND),
"debugger" => Some(DEFAULT_DEBUGGER),
"frontend" => Some(DEFAULT_FRONTEND),
"planner" => Some(DEFAULT_PLANNER),
"general" => Some(DEFAULT_GENERAL),
_ => None,
}
}
pub fn default_role_names() -> &'static [&'static str] {
&[
"architect",
"backend",
"debugger",
"frontend",
"general",
"planner",
]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn get_default_returns_content_for_known_roles() {
assert!(get_default("architect").is_some());
assert!(get_default("backend").is_some());
assert!(get_default("debugger").is_some());
assert!(get_default("frontend").is_some());
assert!(get_default("planner").is_some());
assert!(get_default("general").is_some());
}
#[test]
fn get_default_returns_none_for_unknown_role() {
assert!(get_default("unknown-role").is_none());
assert!(get_default("custom").is_none());
}
#[test]
fn default_role_names_contains_all_defaults() {
let names = default_role_names();
assert!(names.contains(&"architect"));
assert!(names.contains(&"backend"));
assert!(names.contains(&"debugger"));
assert!(names.contains(&"frontend"));
assert!(names.contains(&"planner"));
assert!(names.contains(&"general"));
}
#[test]
fn embedded_instructions_are_not_empty() {
assert!(!DEFAULT_ARCHITECT.is_empty());
assert!(!DEFAULT_BACKEND.is_empty());
assert!(!DEFAULT_DEBUGGER.is_empty());
assert!(!DEFAULT_FRONTEND.is_empty());
assert!(!DEFAULT_PLANNER.is_empty());
assert!(!DEFAULT_GENERAL.is_empty());
}
}