{"record":{"id":"b35a3eb1f4c96fbc","repo":"tinyhumansai/openhuman","slug":"gmail-fetch-emails-direct-failed-e","errorCode":null,"errorMessage":"GMAIL_FETCH_EMAILS (direct) failed: {e:#}","messagePattern":"GMAIL_FETCH_EMAILS \\(direct\\) failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/agent/learning/linkedin_enrichment.rs","lineNumber":549,"sourceCode":"    });\n    let resp = match &client_kind {\n        ComposioClientKind::Backend(client) => client\n            .execute_tool(\"GMAIL_FETCH_EMAILS\", Some(args))\n            .await\n            .map_err(|e| anyhow::anyhow!(\"GMAIL_FETCH_EMAILS failed: {e:#}\"))?,\n        ComposioClientKind::Direct(direct) => {\n            tracing::debug!(\n                \"[linkedin_enrichment][composio-direct] GMAIL_FETCH_EMAILS via direct tenant\"\n            );\n            direct_execute(\n                direct,\n                \"GMAIL_FETCH_EMAILS\",\n                Some(args),\n                &config.composio.entity_id,\n                None,\n            )\n            .await\n            .map_err(|e| anyhow::anyhow!(\"GMAIL_FETCH_EMAILS (direct) failed: {e:#}\"))?\n        }\n    };\n\n    if !resp.successful {\n        let err = resp.error.unwrap_or_else(|| \"unknown error\".into());\n        anyhow::bail!(\"GMAIL_FETCH_EMAILS error: {err}\");\n    }\n\n    // Walk the messages, decode HTML parts, and search for profile URLs.\n    let messages = resp\n        .data\n        .get(\"messages\")\n        .and_then(|v| v.as_array())\n        .cloned()\n        .unwrap_or_default();\n\n    for msg in &messages {\n        // Collect all text to search: plain messageText + decoded HTML parts.","sourceCodeStart":531,"sourceCodeEnd":567,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/src/openhuman/agent/learning/linkedin_enrichment.rs#L531-L567","documentation":"Error \"GMAIL_FETCH_EMAILS (direct) failed: {e:#}\" thrown in tinyhumansai/openhuman.","triggerScenarios":"Thrown at src/openhuman/agent/learning/linkedin_enrichment.rs:549 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}