(
mode_id: &str,
all_skills: &[SkillInfo],
enabled_keys: &HashSet<String>,
)
| 245 | } |
| 246 | |
| 247 | async fn persist_user_mode_skill_selection( |
| 248 | mode_id: &str, |
| 249 | all_skills: &[SkillInfo], |
| 250 | enabled_keys: &HashSet<String>, |
| 251 | ) -> Result<(), String> { |
| 252 | let mut disabled_user_skills = Vec::new(); |
| 253 | let mut enabled_user_skills = Vec::new(); |
| 254 | |
| 255 | for skill in all_skills |
| 256 | .iter() |
| 257 | .filter(|skill| skill.level == SkillLocation::User) |
| 258 | { |
| 259 | let should_enable = enabled_keys.contains(&skill.key); |
| 260 | let default_enabled = resolve_skill_default_enabled_for_mode(skill, mode_id); |
| 261 | |
| 262 | if default_enabled && !should_enable { |
| 263 | disabled_user_skills.push(skill.key.clone()); |
| 264 | } else if !default_enabled && should_enable { |
| 265 | enabled_user_skills.push(skill.key.clone()); |
| 266 | } |
| 267 | } |
| 268 | |
| 269 | bitfun_core::service::config::mode_config_canonicalizer::persist_agent_profile_from_value( |
| 270 | mode_id, |
| 271 | serde_json::json!({ |
| 272 | "disabled_user_skills": normalize_skill_key_list(disabled_user_skills), |
| 273 | "enabled_user_skills": normalize_skill_key_list(enabled_user_skills), |
| 274 | }), |
| 275 | ) |
| 276 | .await |
| 277 | .map_err(|e| format!("Failed to update user skill overrides: {}", e)) |
| 278 | } |
| 279 | |
| 280 | fn build_disabled_project_skill_keys( |
| 281 | all_skills: &[SkillInfo], |
no test coverage detected