{"record":{"id":"eeb0b64f20493157","repo":"tinyhumansai/openhuman","slug":"invalid-group-params-e","errorCode":null,"errorMessage":"invalid group params: {e}","messagePattern":"invalid group params: (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/tinyplace/agent_tools/flows_write.rs","lineNumber":365,"sourceCode":"fn create_group_flow(args: Value) -> FlowFuture {\n    Box::pin(async move {\n        let name = req_str(&args, \"name\")?;\n        log::debug!(\"[tinyplace][flow] create_group start name={name}\");\n        let client = client().await?;\n        // Build via JSON so the membership-policy enum and camelCase wire format\n        // are handled by serde rather than re-declared here.\n        let mut body = json!({ \"name\": name });\n        if let Some(desc) = opt_str(&args, \"description\") {\n            body[\"description\"] = json!(desc);\n        }\n        if let Some(policy) = opt_str(&args, \"policy\") {\n            body[\"membershipPolicy\"] = json!(policy);\n        }\n        if let Some(tags) = opt_str_list(&args, \"tags\") {\n            body[\"tags\"] = json!(tags);\n        }\n        let request: GroupCreateRequest = serde_json::from_value(body)\n            .map_err(|e| anyhow::anyhow!(\"invalid group params: {e}\"))?;\n        match client.groups.create(request).await {\n            Ok(group) => {\n                let v = serde_json::to_value(group).unwrap_or(Value::Null);\n                let group_id = collect_field(&v, \"groupId\").into_iter().next();\n                let mut md = Markdown::new();\n                md.heading(format!(\"Created group \\\"{name}\\\"\"));\n                md.raw_section(render_json(&v));\n                let suggestions = group_id\n                    .map(|id| {\n                        vec![Suggestion::new(\n                            \"Create an invite link\",\n                            \"tinyplace_call\",\n                            json!({ \"command\": \"groups_create_invite\", \"params\": { \"groupId\": id } }),\n                        )]\n                    })\n                    .unwrap_or_default();\n                finish(md, &suggestions)\n            }","sourceCodeStart":347,"sourceCodeEnd":383,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tinyplace/agent_tools/flows_write.rs#L347-L383","documentation":"Wrapped error in the tiny.place create_group flow: the membership-policy/extra parameters extracted from tool args could not be merged into the JSON request body — {e} names the argument that failed conversion. The body is built via JSON precisely so the enum/camelCase wire format is handled by serde; a bad `policy` or similar value surfaces here.","triggerScenarios":"Thrown at src/openhuman/tinyplace/agent_tools/flows_write.rs:365 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check {e} for which parameter failed","Use a valid membership policy value as documented by the group API","Resubmit with corrected parameters"],"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"}