tinyhumansai/openhuman · error

todo_replace: {e}

Error message

todo_replace: {e}

What it means

Generic wrapper from todo_replace: the wholesale board write failed after the cards array deserialized. The underlying {e} is the ops replace error — typically a persistence or validation failure in the board layer.

Source

Thrown at src/openhuman/threads/todos/tools.rs:476

        })
    }

    fn permission_level(&self) -> PermissionLevel {
        PermissionLevel::Write
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][todos] replace invoked");
        let cards_val = args
            .get("cards")
            .cloned()
            .ok_or_else(|| anyhow::anyhow!("missing required array argument `cards`"))?;
        let cards = serde_json::from_value(cards_val)
            .map_err(|e| anyhow::anyhow!("todo_replace: invalid cards: {e}"))?;
        let location = board_location(&self.config, &args);
        let snapshot = ops::replace(&location, cards)
            .await
            .map_err(|e| anyhow::anyhow!("todo_replace: {e}"))?;
        snapshot_to_result(snapshot)
    }
}

/// Empty the board. **Destructive** — default-OFF.
pub struct TodoClearTool {
    config: Arc<Config>,
}

impl TodoClearTool {
    pub fn new(config: Arc<Config>) -> Self {
        Self { config }
    }
}

#[async_trait]
impl Tool for TodoClearTool {
    fn name(&self) -> &str {

View on GitHub (pinned to 7491200858)

Solutions

  1. Read {e} for the board-layer failure reason
  2. Verify write access to the thread's board storage
  3. Retry transient persistence errors
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/threads/todos/tools.rs:476 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/a61f7819be4537cf. Report an issue: GitHub.