{"record":{"id":"8871040432a5f86f","repo":"tinyhumansai/openhuman","slug":"core-rejected-the-meet-agent-list-calls-request","errorCode":null,"errorMessage":"Core rejected the meet_agent_list_calls request.","messagePattern":"Core rejected the meet_agent_list_calls request\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/services/meetCallService.ts","lineNumber":116,"sourceCode":"interface CoreGetCallDetailResponse {\n  ok: boolean;\n  detail: MeetCallDetail | null;\n}\n\n/**\n * Fetch the most recent completed Meet calls (newest first). Used\n * by the Skills \"Meeting Bots\" modal to render a history list\n * underneath the join form. Returns an empty array on a fresh\n * install (no recorded calls yet) — the core treats a missing\n * JSONL file as \"no rows\" rather than an error.\n */\nexport async function listMeetCalls(limit = 20): Promise<MeetCallRecord[]> {\n  const result = await callCoreRpc<CoreListCallsResponse>({\n    method: 'openhuman.meet_agent_list_calls',\n    params: { limit },\n  });\n  if (!result?.ok) {\n    throw new Error('Core rejected the meet_agent_list_calls request.');\n  }\n  return result.calls ?? [];\n}\n\n/**\n * Fetch the transcript + summary for one completed call. Lazy-loaded when the\n * user expands a recent-call row. Returns `null` when the core has no detail\n * for this call (older calls recorded before the feature, or a failed write) —\n * the panel renders a \"no transcript yet\" state in that case.\n */\nexport async function getMeetCallDetail(requestId: string): Promise<MeetCallDetail | null> {\n  const result = await callCoreRpc<CoreGetCallDetailResponse>({\n    method: 'openhuman.meet_agent_get_call_detail',\n    params: { request_id: requestId },\n  });\n  if (!result?.ok) {\n    throw new Error('Core rejected the meet_agent_get_call_detail request.');\n  }","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/app/src/services/meetCallService.ts#L98-L134","documentation":"Thrown when the `openhuman.meet_agent_list_calls` RPC resolves but `result.ok` is falsy (`!result?.ok` — this also covers a result object that is null/undefined or missing the `ok` field). Transport-level failures (unknown method, auth) already throw earlier as `CoreRpcError`, so reaching this line means the meet-agent controller ran and explicitly reported failure — by design a missing recordings JSONL is treated as 'no rows', so a genuine IO error (unreadable/corrupt file, permissions) is the usual cause.","triggerScenarios":"The Rust `meet_agent_list_calls` handler returns `{ok:false}` — recordings directory not writable, JSONL corrupted mid-line beyond tolerance, or a disk/permissions failure while listing. Also a core build where the handler's success shape differs (older core returning a payload without `ok`).","commonSituations":"Upgraded app reusing an old workspace whose recordings path moved; workspace on a synced/read-only drive; core version older than the frontend's expected response shape.","solutions":["Check the core log for the `meet_agent` recordings read error at the same timestamp","Verify the workspace recordings directory exists and is writable by the core process","Confirm the core build includes the meet agent feature (GET /schema lists `meet_agent_list_calls`)","Restart or rebuild the core if the response shape is stale (`pnpm dev:app`)"],"exampleFix":"// before\nconst calls = await listMeetCalls();\n\n// after — history list is non-critical, degrade gracefully\nlet calls: MeetCallRecord[] = [];\ntry { calls = await listMeetCalls(20); }\ncatch (e) { console.warn('meet history unavailable', e); }","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"let calls: MeetCallRecord[] = [];\ntry { calls = await listMeetCalls(limit); }\ncatch (e) {\n  // history is a nice-to-have; degrade instead of blocking the join form\n  console.warn('[meet] history unavailable', e);\n}","preventionTips":["Treat the call-history list as non-critical UI — always have an empty-state fallback","Monitor core logs for meet_agent recordings IO errors after workspace migrations","Verify the core build exposes meet_agent_* methods (GET /schema) before shipping features that call them"],"tags":["meet","core-rpc","json-rpc","io"],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}