{"record":{"id":"d367c53342d4574c","repo":"tinyhumansai/openhuman","slug":"transcript-search-e","errorCode":null,"errorMessage":"transcript_search: {e}","messagePattern":"transcript_search: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/threads/tools.rs","lineNumber":383,"sourceCode":"        let exclude_owned: Option<String> = match args\n            .get(\"exclude_thread_id\")\n            .and_then(serde_json::Value::as_str)\n        {\n            None => crate::openhuman::agent::tinyagents::thread_context::current_thread_id(),\n            Some(s) if s.trim().is_empty() => None,\n            Some(s) => Some(s.trim().to_string()),\n        };\n        let exclude = exclude_owned.as_deref();\n        log::debug!(\n            \"[tool][threads] transcript_search invoked query_chars={} limit={} exclude={:?}\",\n            query.chars().count(),\n            limit,\n            exclude\n        );\n\n        let hits = ops::transcript_search(&query, limit, exclude)\n            .await\n            .map_err(|e| anyhow::anyhow!(\"transcript_search: {e}\"))?;\n\n        if hits.is_empty() {\n            return Ok(ToolResult::success(format!(\n                \"No past messages matched `{query}`.\"\n            )));\n        }\n\n        let mut out = format!(\n            \"{} past message(s) matched `{query}` (newest first):\\n\",\n            hits.len()\n        );\n        for hit in &hits {\n            let _ = std::fmt::Write::write_fmt(\n                &mut out,\n                format_args!(\n                    \"- [thread {} · {} · {}] {}\\n\",\n                    hit.thread_id,\n                    hit.role,","sourceCodeStart":365,"sourceCodeEnd":401,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/threads/tools.rs#L365-L401","documentation":"Generic wrapper from transcript_search: the memory-conversations search failed after the query, limit and exclude-thread resolution. The underlying {e} is the search-layer error — typically the memory/search backend being unavailable or the conversation index failing.","triggerScenarios":"Thrown at src/openhuman/threads/tools.rs:383 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read {e} for the search backend failure","Retry — search backends can fail transiently","Broaden or shorten the query if the failure is resource-related"],"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"}