tinyhumansai/openhuman · error
thread_title_generate: {e}
Error message
thread_title_generate: {e} What it means
Wrapped error from the thread_title_generate agent tool: parsing the args into GenerateConversationThreadTitleRequest (via parse_req) failed, almost always a missing/invalid `thread_id` or `assistant_message` field. The {e} carries the underlying serde/parse detail; the prefix only identifies which tool rejected the call.
Source
Thrown at src/openhuman/threads/tools.rs:528
"properties": {
"thread_id": { "type": "string" },
"assistant_message": { "type": "string" }
},
"required": ["thread_id"]
})
}
fn permission_level(&self) -> PermissionLevel {
// Runs an inference call.
PermissionLevel::Execute
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][threads] title_generate invoked");
let req: GenerateConversationThreadTitleRequest = parse_req(args, "thread_title_generate")?;
let outcome = ops::thread_generate_title(req)
.await
.map_err(|e| anyhow::anyhow!("thread_title_generate: {e}"))?;
Ok(ToolResult::success(serde_json::to_string(&outcome.value)?))
}
}
/// Read in-flight turn state for one thread.
pub struct ThreadTurnStateGetTool;
#[async_trait]
impl Tool for ThreadTurnStateGetTool {
fn name(&self) -> &str {
"thread_turn_state_get"
}
fn description(&self) -> &str {
"Read the saved in-flight turn state for a thread by `thread_id` (the \
snapshot of an interrupted/streaming agent turn), or null if none."
}
View on GitHub (pinned to 7491200858)
Solutions
- Check the tool call includes `thread_id` (required) as a string
- Ensure `assistant_message`, if provided, is a string
- Retry the call with corrected JSON arguments
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/threads/tools.rs:528 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/4c868a1cec929461.
Report an issue: GitHub.