{"record":{"id":"b3ccc51aa462469b","repo":"tinyhumansai/openhuman","slug":"invalid-arguments-for-memory-store-raw-search-e","errorCode":null,"errorMessage":"invalid arguments for memory_store_raw_search: {e}","messagePattern":"invalid arguments for memory_store_raw_search: (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/tools/raw_store/raw_search.rs","lineNumber":72,"sourceCode":"                },\n                \"kinds\": {\n                    \"type\": \"array\",\n                    \"items\": { \"type\": \"string\" },\n                    \"description\": \"Optional entity kind filter (e.g. [\\\"person\\\", \\\"channel\\\"]). Empty/absent = all kinds.\"\n                },\n                \"limit\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 1,\n                    \"maximum\": 100,\n                    \"description\": \"Max matches to return (default 5, clamped 100).\"\n                }\n            }\n        })\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        let parsed: Args = serde_json::from_value(args)\n            .map_err(|e| anyhow::anyhow!(\"invalid arguments for memory_store_raw_search: {e}\"))?;\n        log::debug!(\n            \"[tool][memory_store] raw_search q_len={} kinds={:?} limit={}\",\n            parsed.query.len(),\n            parsed.kinds,\n            parsed.limit\n        );\n        // An empty `kinds` list means \"no filter\", matching the previous\n        // behaviour — it is not forwarded as an empty allowlist, which the\n        // driver would read as \"match no kind at all\".\n        let kinds = parsed\n            .kinds\n            .as_ref()\n            .filter(|kinds| !kinds.is_empty())\n            .map(Vec::as_slice);\n        // Kind validation belongs to the driver now: the vocabulary is open on\n        // the wire. See the note in `memory/query/search_entities.rs`.\n        let guard = active_memory_guard()\n            .await","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/tools/raw_store/raw_search.rs#L54-L90","documentation":"Argument-deserialization wrapper in the memory_store_raw_search tool's execute: args failed to deserialize into the search Args struct (bad `query`, `kinds`, or `limit` types). Generic sentinel carrying the serde message; fires before the empty-kinds normalization and driver search.","triggerScenarios":"Thrown at src/openhuman/memory/tools/raw_store/raw_search.rs:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the \"query\" string and check other field types","Use integers 1-100 for limit","Fix malformed JSON"],"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-14T00:17:10.932Z"}