Skip to content

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 sequence for 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? ​

optional cacheHitRatio?: 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

Built with VitePress