(
state: State<'_, AppState>,
app: tauri::AppHandle,
request: ResetAssistantWorkspaceRequest,
)
| 1723 | |
| 1724 | #[tauri::command] |
| 1725 | pub 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)) |
nothing calls this directly
no test coverage detected