{"record":{"id":"712dcdefe01d9f53","repo":"tinyhumansai/openhuman","slug":"core-rejected-the-meet-list-upcoming-request","errorCode":null,"errorMessage":"Core rejected the meet_list_upcoming request.","messagePattern":"Core rejected the meet_list_upcoming request\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/services/meetCallService.ts","lineNumber":409,"sourceCode":"}\n\n/**\n * Fetch upcoming calendar meetings that have a conferencing link.\n * Returns an empty array when no Google Calendar is connected.\n */\nexport async function listUpcomingMeetings(\n  lookaheadMinutes?: number,\n  limit?: number\n): Promise<UpcomingMeeting[]> {\n  const result = await callCoreRpc<CoreListUpcomingResponse>({\n    method: 'openhuman.meet_list_upcoming',\n    params: {\n      ...(lookaheadMinutes != null ? { lookahead_minutes: lookaheadMinutes } : {}),\n      ...(limit != null ? { limit } : {}),\n    },\n  });\n  if (!result?.ok) {\n    throw new Error('Core rejected the meet_list_upcoming request.');\n  }\n  return result.meetings ?? [];\n}\n\n// ---------------------------------------------------------------------------\n// Per-event join-policy overrides\n// ---------------------------------------------------------------------------\n\ninterface CoreSetEventPolicyResponse {\n  ok: boolean;\n}\n\ninterface CoreGetEventPoliciesResponse {\n  ok: boolean;\n  policies: Record<string, string>;\n}\n\n/**","sourceCodeStart":391,"sourceCodeEnd":427,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/services/meetCallService.ts#L391-L427","documentation":"The openhuman.meet_list_upcoming RPC (calendar lookahead for auto-join planning) returned a falsy result or ok:false. Params are conditionally spread — lookahead_minutes and limit are omitted when null — so a rejection here is the core's calendar/meet domain failing the query, not a transport issue.","triggerScenarios":"Calling listUpcomingMeetings(lookaheadMinutes?, limit?) when the calendar integration is not connected/authorized; the calendar provider fetch failing upstream; the meet domain failing to read its policy store during listing; unsupported lookahead/limit values.","commonSituations":"No calendar connected but the upcoming-meetings widget still polls; expired calendar OAuth token; provider API outage or rate limit surfacing as ok:false.","solutions":["Check calendar connection status in Settings → Connections before relying on upcoming lists","Inspect core logs for the calendar provider error behind the ok:false","Fall back to an empty list plus a 'connect your calendar' affordance in the UI","Keep limit/lookahead within sensible ranges the handler validates"],"exampleFix":"// before\nconst meetings = await listUpcomingMeetings(60, 10);\n\n// after\nlet meetings: UpcomingMeeting[] = [];\ntry { meetings = await listUpcomingMeetings(60, 10); }\ncatch (err) { logger.warn('upcoming meetings unavailable', err); }","handlingStrategy":"fallback","validationCode":"async function calendarConnected(): Promise<boolean> {\n  const status = await callCoreRpc<{ connected: boolean }>({ method: 'openhuman.calendar_status', params: {} }).catch(() => null);\n  return status?.connected === true;\n}","typeGuard":"function isUpcomingRejected(err: unknown): boolean {\n  return err instanceof Error && err.message.includes('meet_list_upcoming');\n}","tryCatchPattern":"let meetings: UpcomingMeeting[] = [];\ntry { meetings = await listUpcomingMeetings(lookahead, limit); }\ncatch (err) { logger.warn('upcoming meetings unavailable', err); }\nreturn meetings; // empty list = no auto-join candidates","preventionTips":["Gate polling on calendar connection status","Treat the upcoming list as advisory data — empty fallback keeps auto-join planning inert","Keep lookahead/limit within the handler's accepted ranges"],"tags":["meet","calendar","rpc","ok-flag","upcoming"],"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"}