{"record":{"id":"0fdcb91fcb2b07dc","repo":"tinyhumansai/openhuman","slug":"missing-required-string-argument-key-0fdcb9","errorCode":null,"errorMessage":"missing required string argument `{key}`","messagePattern":"missing required string argument `(.+?)`","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/agent/learning/tools.rs","lineNumber":51,"sourceCode":"    Ok(FacetCache::new(client.profile_store()))\n}\n\n/// Compose the full facet key from a class string + key suffix.\nfn full_key(class_str: &str, key_suffix: &str) -> String {\n    format!(\"{class_str}/{key_suffix}\")\n}\n\nfn facet_to_json(f: &ProfileFacet) -> serde_json::Value {\n    serde_json::to_value(f).unwrap_or(serde_json::Value::Null)\n}\n\nfn read_required_str(args: &serde_json::Value, key: &str) -> anyhow::Result<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        .ok_or_else(|| anyhow::anyhow!(\"missing required string argument `{key}`\"))\n}\n\n/// List learned facets (active + provisional), optionally filtered by class.\npub struct LearningListFacetsTool;\n\n#[async_trait]\nimpl Tool for LearningListFacetsTool {\n    fn name(&self) -> &str {\n        \"learning_list_facets\"\n    }\n\n    fn description(&self) -> &str {\n        \"List the assistant's learned facets about the user (active and \\\n         provisional states only), optionally filtered by `class` (e.g. \\\n         style, identity, tooling, goal). Each facet has a key, value, \\\n         confidence, and state. Use to see what the assistant has inferred.\"\n    }\n","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/src/openhuman/agent/learning/tools.rs#L33-L69","documentation":"Error \"missing required string argument `{key}`\" thrown in tinyhumansai/openhuman.","triggerScenarios":"Thrown at src/openhuman/agent/learning/tools.rs:51 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"}