tinyhumansai/openhuman · error
todo_list: {e}
Error message
todo_list: {e} What it means
Generic wrapper from the todo_list tool: reading or rendering the thread's task board (via the todos ops layer) failed after argument parsing. The underlying {e} carries the board-read error — typically a missing/corrupt board file or thread lookup failure.
Source
Thrown at src/openhuman/threads/todos/tools.rs:137
}
fn description(&self) -> &str {
"List the todo cards on a thread's task board, with a markdown \
rendering. Use to review outstanding/completed work before adding or \
updating tasks. Each card has an `id`, `content`, `status`, and \
optional objective/plan/notes/blocker fields."
}
fn parameters_schema(&self) -> serde_json::Value {
json!({ "type": "object", "properties": { "thread_id": thread_id_prop() } })
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][todos] list invoked");
let location = board_location(&self.config, &args);
let snapshot = ops::list(&location)
.await
.map_err(|e| anyhow::anyhow!("todo_list: {e}"))?;
snapshot_to_result(snapshot)
}
fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {
true
}
}
/// Add a new card to a thread's todo board.
pub struct TodoAddTool {
config: Arc<Config>,
}
impl TodoAddTool {
pub fn new(config: Arc<Config>) -> Self {
Self { config }
}
}View on GitHub (pinned to 7491200858)
Solutions
- Read the wrapped {e} for the concrete board-read failure
- Confirm the thread_id (if given) refers to an existing thread
- Omit thread_id to read the scratch board instead
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/threads/todos/tools.rs:137 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/af6d421dd3be1118.
Report an issue: GitHub.