bodhi-realtime-agent / RealtimeUsagePublished
Interface: RealtimeUsagePublished
Defined in: src/types/events.ts:45
Payload for the realtime.usage EventBus event. One emission per provider usage callback (NOT one per turn) — OpenAI fires once for response.done and once for transcription completion; Gemini fires for interim updates and once at turnComplete.
Aggregation key recommendations:
- openai.response → (sessionId, turnId, source, providerItemId)
- openai.transcription → (sessionId, source, providerItemId) // turnId is null
- gemini.turn.final → (sessionId, turnId, source)
- gemini.usage.update → ignored for billing; use
sequencefor replay - qwen.response → (sessionId, turnId, source, providerItemId)
- qwen.transcription → (sessionId, source, providerItemId) // turnId is null
Properties
agentName
agentName:
string
Defined in: src/types/events.ts:47
cacheHitRatio?
optionalcacheHitRatio?:number
Defined in: src/types/events.ts:61
cachedTokens / inputTokens. Undefined when caching was not reported by the provider for this event. Treat undefined as "no signal," NOT 0%.
emittedAt
emittedAt:
number
Defined in: src/types/events.ts:57
Wall-clock ms when VoiceSession published the event.
providerItemId
providerItemId:
string|null
Defined in: src/types/events.ts:53
Provider-supplied opaque id. response.id for openai.response, item_id for openai.transcription, null for gemini.*.
sequence
sequence:
number
Defined in: src/types/events.ts:55
Monotonic per-(sessionId, turnId, source). Disambiguates Gemini interim duplicates.
sessionId
sessionId:
string
Defined in: src/types/events.ts:46
source
source:
RealtimeUsageSource
Defined in: src/types/events.ts:50
turnId
turnId:
string|null
Defined in: src/types/events.ts:49
Null when the event is not bound to a model turn (transcription).
usage
usage:
RealtimeLLMUsageEvent
Defined in: src/types/events.ts:58