{"record":{"id":"cc68384371827732","repo":"tinyhumansai/openhuman","slug":"memory-tree-walk-query-is-required","errorCode":null,"errorMessage":"memory_tree walk: `query` is required","messagePattern":"memory_tree walk: `query` is required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/query/fast_walk.rs","lineNumber":21,"sourceCode":"//!\n//! Both modes now resolve to [`fast_retrieve`] — the E2GraphRAG, LLM-free\n//! retriever. It returns a structured [`QueryResponse`] of ranked evidence\n//! (no synthesized prose); a higher-level context agent composes the answer.\n\nuse crate::openhuman::memory::api::provider::{FastRetrieveQuery, MemoryProvider};\nuse crate::openhuman::memory::ops::guard::active_memory_guard;\nuse crate::openhuman::tools::traits::ToolResult;\n\n/// Parse the shared `memory_tree` args and run deterministic retrieval.\n/// Accepts `query` (required), `limit`, `time_window_days`, and `max_hops`.\npub async fn run_fast_walk(args: serde_json::Value) -> anyhow::Result<ToolResult> {\n    let query = args\n        .get(\"query\")\n        .and_then(|v| v.as_str())\n        .unwrap_or(\"\")\n        .to_string();\n    if query.trim().is_empty() {\n        return Err(anyhow::anyhow!(\"memory_tree walk: `query` is required\"));\n    }\n\n    let limit = args\n        .get(\"limit\")\n        .and_then(|v| v.as_u64())\n        .map(|n| n as usize)\n        .unwrap_or(10);\n    let time_window_days = args\n        .get(\"time_window_days\")\n        .and_then(|v| v.as_u64())\n        .map(|n| n as u32);\n    let max_hops = args\n        .get(\"max_hops\")\n        .and_then(|v| v.as_u64())\n        .map(|n| n as u32)\n        .unwrap_or(2);\n\n    log::debug!(","sourceCodeStart":3,"sourceCodeEnd":39,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/query/fast_walk.rs#L3-L39","documentation":"The memory_tree walk entry point found no \"query\" string in the args. run_fast_walk requires a natural-language query to drive the E2GraphRAG deterministic retriever; this guard fires before limit/hops parsing.","triggerScenarios":"Thrown at src/openhuman/memory/query/fast_walk.rs:21 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-empty \"query\" string describing what to retrieve","Check the tool call did not drop fields mid-serialization"],"exampleFix":null,"handlingStrategy":"validation","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-14T05:17:10.506Z"}