MCPcopy Create free account
hub / github.com/GCWing/BitFun / set_skill_enabled

Method set_skill_enabled

src/apps/cli/src/modes/chat.rs:3017–3077  ·  view source on GitHub ↗
(
        &self,
        selected: &SkillItem,
        enabled: bool,
        chat_state: &mut ChatState,
        rt_handle: &tokio::runtime::Handle,
    )

Source from the content-addressed store, hash-verified

3015 }
3016
3017 fn set_skill_enabled(
3018 &self,
3019 selected: &SkillItem,
3020 enabled: bool,
3021 chat_state: &mut ChatState,
3022 rt_handle: &tokio::runtime::Handle,
3023 ) {
3024 let workspace = self.agent.workspace_path_buf();
3025 let mode_id = self.agent_type.clone();
3026 let skill = selected.clone();
3027
3028 let result: Result<(), String> = tokio::task::block_in_place(|| {
3029 rt_handle.block_on(async {
3030 match skill.level.as_str() {
3031 "user" => {
3032 set_user_mode_skill_state(
3033 &mode_id,
3034 &skill.key,
3035 enabled,
3036 skill.default_enabled,
3037 )
3038 .await
3039 .map_err(|error| error.to_string())?;
3040 }
3041 "project" => {
3042 let mut document = load_project_mode_skills_document_local(&workspace)
3043 .await
3044 .map_err(|error| error.to_string())?;
3045 set_mode_skill_disabled_in_document(
3046 &mut document,
3047 &mode_id,
3048 &skill.key,
3049 !enabled,
3050 )
3051 .map_err(|error| error.to_string())?;
3052 save_project_mode_skills_document_local(&workspace, &document)
3053 .await
3054 .map_err(|error| error.to_string())?;
3055 }
3056 other => {
3057 return Err(format!("Unsupported skill level '{}'", other));
3058 }
3059 }
3060
3061 Ok(())
3062 })
3063 });
3064
3065 match result {
3066 Ok(()) => chat_state.add_system_message(format!(
3067 "Skill '{}' {} for mode '{}'.",
3068 selected.name,
3069 if enabled { "enabled" } else { "disabled" },
3070 self.agent_type
3071 )),
3072 Err(error) => chat_state.add_system_message(format!(
3073 "Failed to update skill '{}': {}",
3074 selected.name, error

Callers 1

Calls 8

add_system_messageMethod · 0.80
workspace_path_bufMethod · 0.45
cloneMethod · 0.45
as_strMethod · 0.45

Tested by

no test coverage detected