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

Function set_mode_skill_disabled

src/apps/desktop/src/api/skill_api.rs:504–632  ·  view source on GitHub ↗
(
    state: State<'_, AppState>,
    mode_id: String,
    skill_key: String,
    disabled: bool,
    workspace_path: Option<String>,
)

Source from the content-addressed store, hash-verified

502
503#[tauri::command]
504pub async fn set_mode_skill_disabled(
505 state: State<'_, AppState>,
506 mode_id: String,
507 skill_key: String,
508 disabled: bool,
509 workspace_path: Option<String>,
510) -> Result<String, String> {
511 if skill_key.starts_with("user::") {
512 let registry = SkillRegistry::global();
513 let skill_info = if let Some((remote_root, entry)) =
514 resolve_remote_workspace(&state, workspace_path.as_deref()).await?
515 {
516 let remote_fs = state
517 .get_remote_file_service_async()
518 .await
519 .map_err(|e| format!("Remote file service not available: {}", e))?;
520 let remote_workspace_fs = RemoteWorkspaceFs::new(entry.connection_id, remote_fs);
521 registry
522 .find_skill_by_key_for_remote_workspace(
523 &remote_workspace_fs,
524 &remote_root,
525 &skill_key,
526 )
527 .await
528 } else {
529 registry
530 .find_skill_by_key_for_workspace(
531 &skill_key,
532 workspace_root_from_input(workspace_path.as_deref()).as_deref(),
533 )
534 .await
535 }
536 .ok_or_else(|| format!("Skill '{}' not found", skill_key))?;
537
538 let default_enabled = resolve_skill_default_enabled_for_mode(&skill_info, &mode_id);
539 set_user_mode_skill_state(&mode_id, &skill_key, !disabled, default_enabled)
540 .await
541 .map_err(|e| format!("Failed to update user skill override: {}", e))?;
542 if let Err(e) = bitfun_core::service::config::reload_global_config().await {
543 log::warn!(
544 "Failed to reload global config after user skill override change: mode_id={}, skill_key={}, error={}",
545 mode_id,
546 skill_key,
547 e
548 );
549 }
550 return Ok(format!(
551 "Mode '{}' skill '{}' updated successfully",
552 mode_id, skill_key
553 ));
554 }
555
556 if !skill_key.starts_with("project::") {
557 return Err(format!("Unsupported skill key '{}'", skill_key));
558 }
559
560 if let Some((remote_root, entry)) =
561 resolve_remote_workspace(&state, workspace_path.as_deref()).await?

Callers

nothing calls this directly

Tested by

no test coverage detected