tinyhumansai/openhuman · error

memory_tree_search_entities: memory driver does not support

Error message

memory_tree_search_entities: memory driver does not support the retrieval family

What it means

The bound driver's as_retrieval() is None — it does not implement the retrieval family, so entity search cannot run. This host deliberately does not validate kinds itself; the failure is purely driver capability.

Source

Thrown at src/openhuman/memory/query/search_entities.rs:80

        // Entity kinds are an open vocabulary on the wire (see
        // `memory::api::provider::retrieval`): the engine's own `EntityKind` is
        // `#[non_exhaustive]` and has grown twice, so a closed host-side copy
        // would either reject a kind the engine understands or drift silently
        // out of date. The driver owns the vocabulary and rejects an unknown
        // kind with `Invalid`.
        //
        // The cost is real and worth naming: a bad `kinds` value used to fail
        // without a workspace, and now needs a bound driver to fail. The
        // alternative — duplicating an open vocabulary host-side — is the
        // failure mode this contract was shaped to avoid.
        let limit = req.limit.unwrap_or(5).min(100);
        let guard = active_memory_guard()
            .await
            .map_err(|e| anyhow::anyhow!("memory_tree_search_entities: {e}"))?;
        let matches = guard
            .as_retrieval()
            .ok_or_else(|| {
                anyhow::anyhow!(
                    "memory_tree_search_entities: memory driver does not support the \
                     retrieval family"
                )
            })?
            .search_entities(&req.query, req.kinds.as_deref(), limit)
            .await
            .map_err(|e| anyhow::anyhow!("memory_tree_search_entities: {e}"))?;
        log::debug!(
            "[tool][memory_tree] search_entities returning matches={}",
            matches.len()
        );
        let json = serde_json::to_string(&matches)?;
        Ok(ToolResult::success(json))
    }
}

#[cfg(test)]
mod tests {

View on GitHub (pinned to 7491200858)

Solutions

  1. Use a retrieval-capable memory driver
  2. Diagnose why a driver without retrieval got bound
  3. Pick a memory_tree mode the active driver supports
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at src/openhuman/memory/query/search_entities.rs:80 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/1d029d911ebfc18b. Report an issue: GitHub.