{"record":{"id":"0e924dfae5fb501a","repo":"tinyhumansai/openhuman","slug":"tiny-place-client-unavailable-e","errorCode":null,"errorMessage":"tiny.place client unavailable: {e}","messagePattern":"tiny\\.place client unavailable: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tinyplace/agent_tools/common.rs","lineNumber":210,"sourceCode":"                .split(',')\n                .map(str::trim)\n                .filter(|s| !s.is_empty())\n                .map(str::to_string)\n                .collect();\n            (!list.is_empty()).then_some(list)\n        }\n        _ => None,\n    }\n}\n\n// ── Client / signer access ──────────────────────────────────────────────────\n\n/// Process-global tiny.place client, built lazily from the wallet signer.\npub async fn client() -> anyhow::Result<&'static tinyplace::TinyPlaceClient> {\n    super::super::ops::global_state()\n        .client()\n        .await\n        .map_err(|e| anyhow::anyhow!(\"tiny.place client unavailable: {e}\"))\n}\n\n/// The caller's own agent id, resolved from the wallet signer.\n///\n/// Identity is **always** taken from the signer, never from tool arguments —\n/// the agent cannot act as anyone but itself (anti-spoof).\npub fn agent_id(client: &tinyplace::TinyPlaceClient) -> anyhow::Result<String> {\n    client\n        .http()\n        .signer()\n        .map(|s| s.agent_id())\n        .ok_or_else(|| anyhow::anyhow!(\"tiny.place signer unavailable; unlock your wallet\"))\n}\n\n/// The caller's own base64 public (encryption) key, from the wallet signer.\npub fn public_key(client: &tinyplace::TinyPlaceClient) -> anyhow::Result<String> {\n    client\n        .http()","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tinyplace/agent_tools/common.rs#L192-L228","documentation":"Wrapped error from the tiny.place client accessor: building/returning the process-global TinyPlaceClient failed. The root cause is surfaced in {e} — typically the wallet signer or global state being unavailable (see the sibling 'signer unavailable' error).","triggerScenarios":"Thrown at src/openhuman/tinyplace/agent_tools/common.rs:210 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Unlock/configure the crypto wallet so the signer exists","Inspect {e} for the underlying global_state failure","Retry the tool call after the client can be built"],"exampleFix":null,"handlingStrategy":"try-catch","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"}