tinyhumansai/openhuman · error

learning_enrich_profile

Error message

learning_enrich_profile: {e}

What it means

Wraps a failure to load the TOML config (config_rpc::load_config_with_timeout) inside the learning_enrich_profile agent tool's execute. The tool cannot proceed without config (workspace/backend resolution), so the config loader's error is re-wrapped with this tool-name prefix to identify the failing agent tool in transcripts and logs. The underlying fault is whatever made config loading time out or fail — a locked/corrupt config file or slow disk.

Solutions

  1. Retry the tool call — load_config_with_timeout can fail under transient lock contention
  2. Check that the workspace config.toml is readable and valid TOML
  3. If it persists, inspect the inner {e} message for the specific loader failure (timeout vs parse)
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/agent/learning/tools.rs:602 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/cc6f36fc39c08c15. Report an issue: GitHub.

Appendix: source

Thrown at src/openhuman/agent/learning/tools.rs:602

    }

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

    fn external_effect(&self) -> bool {
        true
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][learning] enrich_profile invoked");
        let preset = args
            .get("profile_url")
            .and_then(serde_json::Value::as_str)
            .map(str::to_string);
        let config = config_rpc::load_config_with_timeout()
            .await
            .map_err(|e| anyhow::anyhow!("learning_enrich_profile: {e}"))?;
        let result =
            crate::openhuman::agent::learning::linkedin_enrichment::run_linkedin_enrichment(
                &config, preset,
            )
            .await
            .map_err(|e| anyhow::anyhow!("learning_enrich_profile: {e:#}"))?;
        Ok(ToolResult::success(serde_json::to_string(&json!({
            "profile_url": result.profile_url,
            "profile_data": result.profile_data,
            "stages": result.stages,
            "log": result.log,
        }))?))
    }
}

#[cfg(test)]
mod tests {
    use super::*;

View on GitHub (pinned to 7491200858)