tinyhumansai/openhuman · error

Core rejected the meet_get_event_policies request.

Error message

Core rejected the meet_get_event_policies request.

What it means

`openhuman.meet_get_event_policies` resolved with `ok` falsy. The function short-circuits an empty id array locally (returns `{}` without RPC), so this throw requires a non-empty batch the core refused. By contract only ids with explicit overrides come back in the map; a missing id is not an error — so ok:false again signals a handler-level failure (store read error) or invalid ids rather than 'nothing found'.

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 a221052e0d)

Solutions

  1. Filter the id list before calling: drop empty/whitespace values and de-duplicate
  2. Chunk very large batches into smaller calls
  3. Check core logs for the get_event_policies failure
  4. Treat a failed batch as 'no overrides' in the UI (safe default) and surface a warning

Example fix

// before
const policies = await getEventPolicies(eventIds);

// after
const ids = [...new Set(eventIds.map(i => i.trim()).filter(Boolean))];
const policies = ids.length ? await getEventPolicies(ids) : {};
Defensive patterns

Strategy: try-catch

Validate before calling

const ids = [...new Set(calendarEventIds.map(i => i?.trim() ?? '').filter(Boolean))];
if (ids.length === 0) return {}; // matches the service's own empty short-circuit

Type guard

function areValidEventIds(ids: unknown[]): ids is string[] {
  return ids.every(i => typeof i === 'string' && i.trim().length > 0);
}

Try / catch

let policies: Record<string, string> = {};
try { policies = await getEventPolicies(ids); }
catch { policies = {}; } // no overrides shown — safe default

Prevention

When it happens

Trigger: Batch containing malformed calendar_event_id values (empty strings, wrong type); the policy store unreadable; very large batches exceeding a core-side limit.

Common situations: UI passing unfiltered ids including blanks or stale rows; workspace store corrupted or partially copied; frontend batching logic changed to send thousands of ids.

Related errors


AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16). Data as JSON: /api/errors/2fe30fbfeb41328d. Report an issue: GitHub.