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

Function reset_assistant_workspace

src/apps/desktop/src/api/commands.rs:1725–1783  ·  view source on GitHub ↗
(
    state: State<'_, AppState>,
    app: tauri::AppHandle,
    request: ResetAssistantWorkspaceRequest,
)

Source from the content-addressed store, hash-verified

1723
1724#[tauri::command]
1725pub async fn reset_assistant_workspace(
1726 state: State<'_, AppState>,
1727 app: tauri::AppHandle,
1728 request: ResetAssistantWorkspaceRequest,
1729) -> Result<WorkspaceInfoDto, String> {
1730 let workspace_info = state
1731 .workspace_service
1732 .get_workspace(&request.workspace_id)
1733 .await
1734 .ok_or_else(|| format!("Assistant workspace not found: {}", request.workspace_id))?;
1735
1736 if workspace_info.workspace_kind != WorkspaceKind::Assistant {
1737 return Err(format!(
1738 "Workspace is not an assistant workspace: {}",
1739 request.workspace_id
1740 ));
1741 }
1742
1743 if !state
1744 .workspace_service
1745 .is_assistant_workspace_path(&workspace_info.root_path)
1746 {
1747 return Err(format!(
1748 "Workspace path is not a managed assistant workspace: {}",
1749 workspace_info.root_path.display()
1750 ));
1751 }
1752
1753 clear_directory_contents(&workspace_info.root_path).await?;
1754
1755 bitfun_core::service::reset_workspace_persona_files_to_default(&workspace_info.root_path)
1756 .await
1757 .map_err(|e| format!("Failed to restore assistant workspace persona files: {}", e))?;
1758
1759 let updated_workspace = state
1760 .workspace_service
1761 .rescan_workspace(&request.workspace_id)
1762 .await
1763 .map_err(|e| format!("Failed to rescan assistant workspace after reset: {}", e))?;
1764
1765 if state
1766 .workspace_service
1767 .get_current_workspace()
1768 .await
1769 .map(|workspace| workspace.id == request.workspace_id)
1770 .unwrap_or(false)
1771 {
1772 apply_active_workspace_context(&state, &app, &updated_workspace, None).await;
1773 }
1774
1775 info!(
1776 "Assistant workspace reset: workspace_id={}, assistant_id={:?}, path={}",
1777 request.workspace_id,
1778 workspace_info.assistant_id,
1779 workspace_info.root_path.display()
1780 );
1781
1782 Ok(WorkspaceInfoDto::from_workspace_info(&updated_workspace))

Callers

nothing calls this directly

Tested by

no test coverage detected