{"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/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/services/meetCallService.ts#L98-L134","documentation":"The RPC transport succeeded and returned a result envelope, but the meet_agent_list_calls handler answered with ok:false (or a falsy result) — an application-level rejection from the Meet agent domain, not an HTTP/JSON-RPC failure. The doc comment notes the happy 'no data' case is a missing JSONL file treated as zero rows, so ok:false indicates the core actively failed the read.","triggerScenarios":"Calling listMeetCalls(limit) when the core's call-history JSONL store is unreadable/corrupt; the meet_agent domain failing to open its data directory; older core builds whose handler returns ok:false on read errors instead of an empty list.","commonSituations":"Meet history file locked or truncated after a crash; permissions on the workspace directory; running a core build predating the 'missing file = no rows' semantics; limit values the handler rejects.","solutions":["Check core logs for the meet_agent read failure (the Rust side logs before returning ok:false)","Verify the workspace call-history JSONL exists / is readable; repair or remove a corrupt file so it regenerates","Update core and frontend together — newer handlers treat a missing file as empty rather than failing","Wrap the call and fall back to [] in the UI so the Meeting Bots modal still renders the join form"],"exampleFix":"// before\nexport async function listMeetCallsSafe(): Promise<MeetCallRecord[]> {\n  return listMeetCalls(20);\n}\n\n// after\nexport async function listMeetCallsSafe(): Promise<MeetCallRecord[]> {\n  try { return await listMeetCalls(20); }\n  catch (err) { logger.warn('meet history unavailable', err); return []; }\n}","handlingStrategy":"fallback","validationCode":null,"typeGuard":"function isMeetListRejected(err: unknown): boolean {\n  return err instanceof Error && err.message.includes('meet_agent_list_calls');\n}","tryCatchPattern":"try {\n  return await listMeetCalls(20);\n} catch (err) {\n  logger.warn('meet history unavailable', err);\n  return [] as MeetCallRecord[]; // modal renders join form with empty history\n}","preventionTips":["Treat call history as best-effort data — never block the Meeting Bots modal on it","Watch core logs when ok:false appears repeatedly (corrupt JSONL store)","Update core so missing-file semantics stay 'no rows', not failure"],"tags":["meet","rpc","ok-flag","call-history","jsonl"],"backgroundTag":"rpc-ok-false-rejection","analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}