{"record":{"id":"eb0dcd02b6527a72","repo":"tinyhumansai/openhuman","slug":"uninstall-workflow-e","errorCode":null,"errorMessage":"uninstall_workflow: {e}","messagePattern":"uninstall_workflow: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/skills/tools.rs","lineNumber":682,"sourceCode":"    }\n\n    fn parameters_schema(&self) -> serde_json::Value {\n        json!({\n            \"type\": \"object\",\n            \"properties\": { \"name\": { \"type\": \"string\", \"description\": \"Workflow name (directory) to remove.\" } },\n            \"required\": [\"name\"]\n        })\n    }\n\n    fn permission_level(&self) -> PermissionLevel {\n        PermissionLevel::Dangerous\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        log::debug!(\"[tool][skills] uninstall invoked\");\n        let name = read_required_str(&args, \"name\")?;\n        let outcome = uninstall_workflow(UninstallWorkflowParams { name }, None)\n            .map_err(|e| anyhow::anyhow!(\"uninstall_workflow: {e}\"))?;\n        Ok(ToolResult::success(serde_json::to_string(&outcome)?))\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use crate::openhuman::tools::traits::ToolScope;\n\n    fn cfg() -> Arc<Config> {\n        Arc::new(Config::default())\n    }\n\n    #[test]\n    fn skill_allowed_respects_optional_allowlist() {\n        // None = all skills visible.\n        assert!(skill_allowed(&None, \"deep-research\"));\n        // Some(set) restricts to named dir_name slugs.","sourceCodeStart":664,"sourceCodeEnd":700,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/skills/tools.rs#L664-L700","documentation":"Generic wrapper from uninstall_workflow: removing the named workflow directory failed after the name argument was read. The underlying {e} names the real cause — most commonly the workflow does not exist, or the directory could not be deleted.","triggerScenarios":"Thrown at src/openhuman/skills/tools.rs:682 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Confirm the workflow name matches an installed directory exactly (it is the directory name, not a title)","List installed workflows to see the exact name","Check filesystem permissions on the skills/workflows root"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}