tinyhumansai/openhuman · error · anyhow::Error

invalid arguments for memory_store_raw_search: {e}

Error message

invalid arguments for memory_store_raw_search: {e}

What it means

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.

Source

Thrown at src/openhuman/memory/tools/raw_store/raw_search.rs:72

                },
                "kinds": {
                    "type": "array",
                    "items": { "type": "string" },
                    "description": "Optional entity kind filter (e.g. [\"person\", \"channel\"]). Empty/absent = all kinds."
                },
                "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Max matches to return (default 5, clamped 100)."
                }
            }
        })
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let parsed: Args = serde_json::from_value(args)
            .map_err(|e| anyhow::anyhow!("invalid arguments for memory_store_raw_search: {e}"))?;
        log::debug!(
            "[tool][memory_store] raw_search q_len={} kinds={:?} limit={}",
            parsed.query.len(),
            parsed.kinds,
            parsed.limit
        );
        // An empty `kinds` list means "no filter", matching the previous
        // behaviour — it is not forwarded as an empty allowlist, which the
        // driver would read as "match no kind at all".
        let kinds = parsed
            .kinds
            .as_ref()
            .filter(|kinds| !kinds.is_empty())
            .map(Vec::as_slice);
        // Kind validation belongs to the driver now: the vocabulary is open on
        // the wire. See the note in `memory/query/search_entities.rs`.
        let guard = active_memory_guard()
            .await

View on GitHub (pinned to 7491200858)

Solutions

  1. Include the "query" string and check other field types
  2. Use integers 1-100 for limit
  3. Fix malformed JSON
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/memory/tools/raw_store/raw_search.rs:72 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/b3ccc51aa462469b. Report an issue: GitHub.