tinyhumansai/openhuman · error
Core rejected the meet_agent_get_call_detail request.
Error message
Core rejected the meet_agent_get_call_detail request.
What it means
Same application-level rejection pattern as list calls: openhuman.meet_agent_get_call_detail returned ok:false for the given request_id. This is distinct from the designed 'no detail' case — the function returns null when ok:true and detail is absent (older calls recorded before the feature, or a failed transcript write), and only throws when the core explicitly rejects the request.
Solutions
- Catch this error where the row expands and render the same 'no transcript yet' state used for a null detail — the user experience is identical
- Confirm the request_id came from listMeetCalls in the same session/workspace
- Check core logs for why the handler rejected (read error vs unknown id)
- Update the core if the handler predates tolerant get-detail semantics
Example fix
// before
const detail = await getMeetCallDetail(requestId);
// after
let detail: MeetCallDetail | null = null;
try { detail = await getMeetCallDetail(requestId); }
catch { detail = null; } // panel already renders a 'no transcript yet' state for null
setDetail(detail); Defensive patterns
Strategy: fallback
Validate before calling
function isExpandableRequestId(id: string, calls: MeetCallRecord[]): boolean {
return calls.some(c => c.requestId === id); // only expand IDs from the current list
} Type guard
function isMeetDetailRejected(err: unknown): boolean {
return err instanceof Error && err.message.includes('meet_agent_get_call_detail');
} Try / catch
try {
setDetail(await getMeetCallDetail(requestId));
} catch {
setDetail(null); // same UI state as 'no transcript yet'
} Prevention
- Design the row UI around detail: MeetCallDetail | null from the start so rejection and absence share one state
- Pass request IDs straight from listMeetCalls — don't persist them across workspace switches
When it happens
Trigger: Calling getMeetCallDetail(requestId) with a malformed/unresolvable request_id that the handler rejects outright; the detail store being unreadable; a request_id from a different workspace/core instance.
Common situations: Expanding a history row after switching workspaces; stale request IDs persisted in UI state across core restarts; corrupt detail files on disk.
Related errors
- Core rejected the agent_meetings_join request.
- Core rejected the meet_agent_list_calls request.
- Core rejected the meet_get_event_policies request.
- Core rejected the meet_list_upcoming request.
- Core rejected the meet_set_event_policy request.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/268fe2c3209575da.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/services/meetCallService.ts:133
if (!result?.ok) {
throw new Error('Core rejected the meet_agent_list_calls request.');
}
return result.calls ?? [];
}
/**
* Fetch the transcript + summary for one completed call. Lazy-loaded when the
* user expands a recent-call row. Returns `null` when the core has no detail
* for this call (older calls recorded before the feature, or a failed write) —
* the panel renders a "no transcript yet" state in that case.
*/
export async function getMeetCallDetail(requestId: string): Promise<MeetCallDetail | null> {
const result = await callCoreRpc<CoreGetCallDetailResponse>({
method: 'openhuman.meet_agent_get_call_detail',
params: { request_id: requestId },
});
if (!result?.ok) {
throw new Error('Core rejected the meet_agent_get_call_detail request.');
}
return result.detail ?? null;
}
// ---------------------------------------------------------------------------
// Transcript parsing
// ---------------------------------------------------------------------------
/** A transcript line with its parsed timestamp/speaker prefix stripped out. */
interface ParsedTranscriptLine {
timestamp: string | null;
speaker: string | null;
text: string;
role: string;
}
const TRANSCRIPT_PREFIX_RE = /^\[(\d{1,2}:\d{2})\]\s*\[([^\]]+)\]\s*(.*)/s;
View on GitHub (pinned to 7491200858)