feat: validate visible_skills field at config load time

This commit is contained in:
2026-06-04 13:43:40 -06:00
parent 7b320e08c4
commit 84dcb3078b
6 changed files with 82 additions and 42 deletions
+14 -6
View File
@@ -1738,14 +1738,22 @@ impl RequestContext {
let raw: Option<String> = super::parse_value(value)?;
let parsed: Option<Vec<String>> = raw.map(|s| super::csv_to_vec(&s));
if let Some(names) = parsed.as_ref() {
let visible =
paths::list_visible_skills(self.app.config.visible_skills.as_deref());
let visible = self.app.config.visible_skills.as_deref();
for name in names {
paths::validate_skill_name(name)?;
if !visible.iter().any(|s| s == name) {
bail!(
"enabled_skills references skill '{name}' which is not visible (check global 'visible_skills' and that the skill is installed)"
);
match visible {
Some(vs) => {
if !vs.iter().any(|s| s == name) {
bail!(
"skill '{name}' is not in the global 'visible_skills' allow-list"
);
}
}
None => {
if !paths::has_skill(name) {
bail!("skill '{name}' is not installed");
}
}
}
}
}