tinyhumansai/openhuman · error · anyhow::Error
people_record_interaction: {e}
Error message
people_record_interaction: {e} What it means
Error-surfacing wrapper in the people_record_interaction tool's execute: record_interaction on the driver failed after the PersonInteraction was assembled (person_id, timestamp, is_outbound, length). The interaction was not persisted; causes include unknown person_id or driver errors. Distinct from the earlier `missing required boolean argument is_outbound` guard, which fires before this.
Source
Thrown at src/openhuman/memory/tools/people.rs:347
.and_then(serde_json::Value::as_bool)
.ok_or_else(|| anyhow::anyhow!("missing required boolean argument `is_outbound`"))?;
let length = args
.get("length")
.and_then(serde_json::Value::as_u64)
.unwrap_or(0) as u32;
let interaction = PersonInteraction {
person_id,
at: Utc::now().to_rfc3339(),
is_outbound,
length,
};
let guard = people_guard().await?;
guard
.as_people()
.expect("checked")
.record_interaction(&interaction)
.await
.map_err(|e| anyhow::anyhow!("people_record_interaction: {e}"))?;
Ok(ToolResult::success(serde_json::to_string(
&json!({ "ok": true }),
)?))
}
}
/// Bulk-ingest the OS address book. **Triggers a permission prompt** —
/// default-OFF.
pub struct PeopleRefreshAddressBookTool;
#[async_trait]
impl Tool for PeopleRefreshAddressBookTool {
fn name(&self) -> &str {
"people_refresh_address_book"
}
fn description(&self) -> &str {
"Bulk-import the operating system address book into the people store, \View on GitHub (pinned to 7491200858)
Solutions
- Retry transient store failures
- Verify the person_id exists first
- Inspect the chained error for constraint violations
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/memory/tools/people.rs:347 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/544e4346842a9879.
Report an issue: GitHub.