{"record":{"id":"6fc35c0cfbb3e667","repo":"tinyhumansai/openhuman","slug":"invalid-provider-e","errorCode":null,"errorMessage":"invalid provider: {e}","messagePattern":"invalid provider: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/integrations/task_sources/tools.rs","lineNumber":48,"sourceCode":"        .map(str::to_string)\n        .ok_or_else(|| anyhow::anyhow!(\"missing required string argument `{key}`\"))\n}\n\nfn opt_u64(args: &serde_json::Value, key: &str) -> Option<u64> {\n    args.get(key).and_then(serde_json::Value::as_u64)\n}\n\nfn opt_str(args: &serde_json::Value, key: &str) -> Option<String> {\n    args.get(key)\n        .and_then(serde_json::Value::as_str)\n        .map(str::trim)\n        .filter(|s| !s.is_empty())\n        .map(str::to_string)\n}\n\nfn parse_provider(args: &serde_json::Value) -> anyhow::Result<ProviderSlug> {\n    let raw = read_required_str(args, \"provider\")?;\n    ProviderSlug::parse(&raw).map_err(|e| anyhow::anyhow!(\"invalid provider: {e}\"))\n}\n\nfn parse_filter(args: &serde_json::Value) -> anyhow::Result<FilterSpec> {\n    let val = args\n        .get(\"filter\")\n        .cloned()\n        .ok_or_else(|| anyhow::anyhow!(\"missing required object argument `filter`\"))?;\n    serde_json::from_value(val).map_err(|e| anyhow::anyhow!(\"invalid filter: {e}\"))\n}\n\nmacro_rules! emit {\n    ($outcome:expr, $name:literal) => {{\n        let outcome = $outcome.map_err(|e| anyhow::anyhow!(concat!($name, \": {}\"), e))?;\n        Ok(ToolResult::success(serde_json::to_string(&outcome.value)?))\n    }};\n}\n\n/// List configured external task sources.","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/integrations/task_sources/tools.rs#L30-L66","documentation":"parse_provider: the 'provider' argument was present and non-empty, but ProviderSlug::parse rejected it — the string does not name a known task-source provider slug. The parser's own error detail is appended.","triggerScenarios":"Thrown at src/openhuman/integrations/task_sources/tools.rs:48 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a supported provider slug as listed in the tool schema/docs","Check the parser detail {e} for the accepted slug list","Fix casing/typo in the slug"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}