tinyhumansai/openhuman · error
Core rejected the meet_get_event_policies request.
Error message
Core rejected the meet_get_event_policies request.
What it means
The batch fetch openhuman.meet_get_event_policies returned ok:false. Note the early return: an empty calendarEventIds array never reaches the wire, so this only fires for non-empty batches the core rejects. The contract is that only explicitly-overridden IDs appear in the returned map — ok:false means the read failed, not 'no overrides exist'.
Solutions
- Catch and degrade to {} (treated as 'no overrides') so the UI falls back to per-platform/global policy display
- Filter/normalize IDs to non-empty strings before batching
- Check core logs for the policy-store read error if overrides silently vanish
- Retry once — a transient store lock during a concurrent setEventPolicy can surface as ok:false
Example fix
// before const policies = await getEventPolicies(ids); // after const policies = await getEventPolicies(ids.filter(id => typeof id === 'string' && id.length > 0));
Defensive patterns
Strategy: fallback
Validate before calling
function sanitizeIds(ids: string[]): string[] {
return ids.filter(id => typeof id === 'string' && id.trim().length > 0);
} Type guard
function isGetPoliciesRejected(err: unknown): boolean {
return err instanceof Error && err.message.includes('meet_get_event_policies');
} Try / catch
try {
return await getEventPolicies(sanitizeIds(ids));
} catch {
return {}; // no overrides resolvable → UI falls back to per-platform/global policy
} Prevention
- Filter out empty/non-string IDs before batching
- Remember the API already short-circuits [] — don't pre-guard on length
- Treat the map as optional metadata; an empty result and a failed read should render identically
When it happens
Trigger: getEventPolicies([...ids]) when the policy store is unreadable; IDs of a type/format the handler rejects (non-string, empty strings slipping through); calendar disconnected so the store context is unavailable.
Common situations: Rendering a list of upcoming events and batch-fetching policies while the workspace store is mid-migration; mixed ID sources (external calendar IDs vs internal IDs); store locked by a concurrent write.
Related errors
- Core rejected the meet_set_event_policy request.
- Core rejected the agent_meetings_join request.
- Core rejected the meet_agent_get_call_detail request.
- Core rejected the meet_agent_list_calls request.
- Core rejected the meet_list_upcoming request.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/2fe30fbfeb41328d.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/services/meetCallService.ts:457
if (!result?.ok) {
throw new Error('Core rejected the meet_set_event_policy request.');
}
}
/**
* Batch-fetch per-event join-policy overrides for the given calendar event IDs.
* Only IDs that have an explicit override are present in the returned map.
*/
export async function getEventPolicies(
calendarEventIds: string[]
): Promise<Record<string, string>> {
if (calendarEventIds.length === 0) return {};
const result = await callCoreRpc<CoreGetEventPoliciesResponse>({
method: 'openhuman.meet_get_event_policies',
params: { calendar_event_ids: calendarEventIds },
});
if (!result?.ok) {
throw new Error('Core rejected the meet_get_event_policies request.');
}
return result.policies ?? {};
}
export async function joinMeetingViaMascotBot(
input: MascotJoinMeetingInput
): Promise<MascotJoinMeetingResult> {
const meetUrl = input.meetUrl.trim();
if (!meetUrl) {
throw { message: 'Please paste a meeting link.', isCapacityGated: false };
}
try {
return await apiClient.post<MascotJoinMeetingResult>('/mascots/join-meeting', {
platform: input.platform,
meetUrl,
displayName: input.displayName?.trim() || undefined,
});
} catch (err) {View on GitHub (pinned to 7491200858)