@absolutejs/voice 0.0.22-beta.47 → 0.0.22-beta.470

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/README.md +4368 -603
  2. package/dist/agent.d.ts +67 -5
  3. package/dist/agentSquadContract.d.ts +98 -0
  4. package/dist/agentTools.d.ts +132 -0
  5. package/dist/angular/index.d.ts +24 -4
  6. package/dist/angular/index.js +4143 -1158
  7. package/dist/angular/voice-agent-squad-status.service.d.ts +12 -0
  8. package/dist/angular/voice-call-debugger.service.d.ts +12 -0
  9. package/dist/angular/voice-campaign-dialer-proof.service.d.ts +14 -0
  10. package/dist/angular/voice-controller.service.d.ts +3 -1
  11. package/dist/angular/voice-delivery-runtime.component.d.ts +17 -0
  12. package/dist/angular/voice-delivery-runtime.service.d.ts +16 -0
  13. package/dist/angular/voice-live-ops.service.d.ts +11 -0
  14. package/dist/angular/voice-ops-action-center.service.d.ts +13 -0
  15. package/dist/angular/voice-ops-status.component.d.ts +15 -0
  16. package/dist/angular/voice-ops-status.service.d.ts +12 -0
  17. package/dist/angular/voice-platform-coverage.service.d.ts +12 -0
  18. package/dist/angular/voice-profile-comparison.service.d.ts +12 -0
  19. package/dist/angular/voice-proof-trends.service.d.ts +12 -0
  20. package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
  21. package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
  22. package/dist/angular/voice-provider-status.service.d.ts +2 -2
  23. package/dist/angular/voice-readiness-failures.service.d.ts +13 -0
  24. package/dist/angular/voice-reconnect-profile-evidence.service.d.ts +12 -0
  25. package/dist/angular/voice-routing-status.service.d.ts +11 -0
  26. package/dist/angular/voice-session-observability.service.d.ts +12 -0
  27. package/dist/angular/voice-session-snapshot.service.d.ts +13 -0
  28. package/dist/angular/voice-stream.service.d.ts +4 -1
  29. package/dist/angular/voice-trace-timeline.service.d.ts +12 -0
  30. package/dist/angular/voice-turn-latency.service.d.ts +13 -0
  31. package/dist/angular/voice-turn-quality.service.d.ts +12 -0
  32. package/dist/angular/voice-workflow-status.service.d.ts +2 -2
  33. package/dist/assistant.d.ts +11 -11
  34. package/dist/assistantHealth.d.ts +6 -6
  35. package/dist/assistantMemory.d.ts +3 -3
  36. package/dist/audioConditioning.d.ts +1 -1
  37. package/dist/audit.d.ts +131 -0
  38. package/dist/auditDeliveryRoutes.d.ts +85 -0
  39. package/dist/auditExport.d.ts +34 -0
  40. package/dist/auditRoutes.d.ts +66 -0
  41. package/dist/auditSinks.d.ts +151 -0
  42. package/dist/bargeInRoutes.d.ts +56 -0
  43. package/dist/browserCallProfiles.d.ts +120 -0
  44. package/dist/browserMediaRoutes.d.ts +62 -0
  45. package/dist/callDebugger.d.ts +66 -0
  46. package/dist/campaign.d.ts +794 -0
  47. package/dist/campaignDialers.d.ts +111 -0
  48. package/dist/client/actions.d.ts +95 -1
  49. package/dist/client/agentSquadStatus.d.ts +37 -0
  50. package/dist/client/agentSquadStatusWidget.d.ts +24 -0
  51. package/dist/client/audioPlayer.d.ts +2 -2
  52. package/dist/client/bargeInMonitor.d.ts +7 -0
  53. package/dist/client/browserMedia.d.ts +8 -0
  54. package/dist/client/callDebugger.d.ts +19 -0
  55. package/dist/client/callDebuggerWidget.d.ts +30 -0
  56. package/dist/client/campaignDialerProof.d.ts +23 -0
  57. package/dist/client/connection.d.ts +4 -3
  58. package/dist/client/controller.d.ts +1 -1
  59. package/dist/client/createVoiceStream.d.ts +1 -1
  60. package/dist/client/deliveryRuntime.d.ts +34 -0
  61. package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
  62. package/dist/client/duplex.d.ts +2 -2
  63. package/dist/client/htmx.d.ts +1 -1
  64. package/dist/client/htmxBootstrap.js +967 -14
  65. package/dist/client/index.d.ts +104 -11
  66. package/dist/client/index.js +10221 -25
  67. package/dist/client/liveOps.d.ts +22 -0
  68. package/dist/client/liveOpsWidget.d.ts +23 -0
  69. package/dist/client/liveTurnLatency.d.ts +41 -0
  70. package/dist/client/microphone.d.ts +4 -4
  71. package/dist/client/opsActionCenter.d.ts +54 -0
  72. package/dist/client/opsActionCenterWidget.d.ts +29 -0
  73. package/dist/client/opsActionHistory.d.ts +19 -0
  74. package/dist/client/opsActionHistoryWidget.d.ts +11 -0
  75. package/dist/client/opsStatus.d.ts +19 -0
  76. package/dist/client/opsStatusWidget.d.ts +40 -0
  77. package/dist/client/platformCoverage.d.ts +19 -0
  78. package/dist/client/platformCoverageWidget.d.ts +37 -0
  79. package/dist/client/profileComparison.d.ts +19 -0
  80. package/dist/client/profileComparisonWidget.d.ts +41 -0
  81. package/dist/client/profileSwitchRecommendation.d.ts +19 -0
  82. package/dist/client/profileSwitchRecommendationWidget.d.ts +12 -0
  83. package/dist/client/proofTrends.d.ts +19 -0
  84. package/dist/client/proofTrendsWidget.d.ts +37 -0
  85. package/dist/client/providerCapabilities.d.ts +19 -0
  86. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  87. package/dist/client/providerContracts.d.ts +19 -0
  88. package/dist/client/providerContractsWidget.d.ts +37 -0
  89. package/dist/client/providerSimulationControls.d.ts +33 -0
  90. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  91. package/dist/client/providerStatus.d.ts +1 -1
  92. package/dist/client/providerStatusWidget.d.ts +32 -0
  93. package/dist/client/readinessFailures.d.ts +19 -0
  94. package/dist/client/readinessFailuresWidget.d.ts +42 -0
  95. package/dist/client/reconnectProfileEvidence.d.ts +19 -0
  96. package/dist/client/reconnectProfileEvidenceWidget.d.ts +39 -0
  97. package/dist/client/routingStatus.d.ts +19 -0
  98. package/dist/client/routingStatusWidget.d.ts +32 -0
  99. package/dist/client/sessionObservability.d.ts +19 -0
  100. package/dist/client/sessionObservabilityWidget.d.ts +31 -0
  101. package/dist/client/sessionSnapshot.d.ts +21 -0
  102. package/dist/client/sessionSnapshotWidget.d.ts +33 -0
  103. package/dist/client/store.d.ts +1 -1
  104. package/dist/client/traceTimeline.d.ts +19 -0
  105. package/dist/client/traceTimelineWidget.d.ts +36 -0
  106. package/dist/client/turnLatency.d.ts +22 -0
  107. package/dist/client/turnLatencyWidget.d.ts +33 -0
  108. package/dist/client/turnQuality.d.ts +19 -0
  109. package/dist/client/turnQualityWidget.d.ts +32 -0
  110. package/dist/client/workflowStatus.d.ts +1 -1
  111. package/dist/competitiveCoverage.d.ts +141 -0
  112. package/dist/correction.d.ts +2 -2
  113. package/dist/dataControl.d.ts +180 -0
  114. package/dist/deliveryRuntime.d.ts +158 -0
  115. package/dist/deliverySinkRoutes.d.ts +117 -0
  116. package/dist/demoReadyRoutes.d.ts +98 -0
  117. package/dist/diagnosticsRoutes.d.ts +2 -2
  118. package/dist/evalRoutes.d.ts +10 -4
  119. package/dist/fileStore.d.ts +19 -7
  120. package/dist/generated/htmxBootstrapBundle.d.ts +1 -0
  121. package/dist/guardrails.d.ts +128 -0
  122. package/dist/handoff.d.ts +6 -6
  123. package/dist/handoffHealth.d.ts +5 -5
  124. package/dist/htmx.d.ts +1 -1
  125. package/dist/incidentBundle.d.ts +119 -0
  126. package/dist/incidentTimeline.d.ts +260 -0
  127. package/dist/index.d.ts +224 -72
  128. package/dist/index.js +36883 -6907
  129. package/dist/latencySlo.d.ts +56 -0
  130. package/dist/liveLatency.d.ts +78 -0
  131. package/dist/liveOps.d.ts +190 -0
  132. package/dist/logger.d.ts +1 -1
  133. package/dist/mediaPipelineRoutes.d.ts +171 -0
  134. package/dist/mediaPipelineSurfaces.d.ts +48 -0
  135. package/dist/memoryStore.d.ts +1 -1
  136. package/dist/modelAdapters.d.ts +59 -7
  137. package/dist/observabilityExport.d.ts +501 -0
  138. package/dist/openaiTTS.d.ts +18 -0
  139. package/dist/operationalStatus.d.ts +87 -0
  140. package/dist/operationsRecord.d.ts +370 -0
  141. package/dist/ops.d.ts +12 -12
  142. package/dist/opsActionAuditRoutes.d.ts +99 -0
  143. package/dist/opsConsoleRoutes.d.ts +8 -5
  144. package/dist/opsPresets.d.ts +2 -2
  145. package/dist/opsRecovery.d.ts +137 -0
  146. package/dist/opsRuntime.d.ts +6 -6
  147. package/dist/opsSinks.d.ts +13 -13
  148. package/dist/opsStatus.d.ts +76 -0
  149. package/dist/opsStatusRoutes.d.ts +33 -0
  150. package/dist/opsWebhook.d.ts +6 -6
  151. package/dist/outcomeContract.d.ts +146 -0
  152. package/dist/outcomeRecipes.d.ts +4 -4
  153. package/dist/phoneAgent.d.ts +139 -0
  154. package/dist/phoneAgentProductionSmoke.d.ts +115 -0
  155. package/dist/platformCoverage.d.ts +91 -0
  156. package/dist/plugin.d.ts +2 -2
  157. package/dist/postCallAnalysis.d.ts +98 -0
  158. package/dist/postgresStore.d.ts +17 -6
  159. package/dist/presets.d.ts +3 -3
  160. package/dist/productionReadiness.d.ts +756 -0
  161. package/dist/profileSwitchRecommendation.d.ts +350 -0
  162. package/dist/proofAssertions.d.ts +32 -0
  163. package/dist/proofPack.d.ts +211 -0
  164. package/dist/proofRunner.d.ts +79 -0
  165. package/dist/proofTrends.d.ts +966 -0
  166. package/dist/providerAdapters.d.ts +16 -5
  167. package/dist/providerCapabilities.d.ts +92 -0
  168. package/dist/providerDecisionTraces.d.ts +130 -0
  169. package/dist/providerHealth.d.ts +3 -3
  170. package/dist/providerOrchestration.d.ts +109 -0
  171. package/dist/providerRouterTraces.d.ts +35 -0
  172. package/dist/providerRoutingContract.d.ts +71 -0
  173. package/dist/providerSlo.d.ts +142 -0
  174. package/dist/providerStackRecommendations.d.ts +187 -0
  175. package/dist/qualityRoutes.d.ts +4 -4
  176. package/dist/queue.d.ts +23 -14
  177. package/dist/ragTool.d.ts +47 -0
  178. package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
  179. package/dist/react/VoiceCallDebuggerLaunch.d.ts +6 -0
  180. package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
  181. package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
  182. package/dist/react/VoiceOpsStatus.d.ts +6 -0
  183. package/dist/react/VoicePlatformCoverage.d.ts +6 -0
  184. package/dist/react/VoiceProfileComparison.d.ts +6 -0
  185. package/dist/react/VoiceProfileSwitchRecommendation.d.ts +6 -0
  186. package/dist/react/VoiceProofTrends.d.ts +6 -0
  187. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  188. package/dist/react/VoiceProviderContracts.d.ts +6 -0
  189. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  190. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  191. package/dist/react/VoiceReadinessFailures.d.ts +6 -0
  192. package/dist/react/VoiceReconnectProfileEvidence.d.ts +6 -0
  193. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  194. package/dist/react/VoiceSessionObservability.d.ts +6 -0
  195. package/dist/react/VoiceSessionSnapshot.d.ts +6 -0
  196. package/dist/react/VoiceTraceTimeline.d.ts +6 -0
  197. package/dist/react/VoiceTurnLatency.d.ts +6 -0
  198. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  199. package/dist/react/index.d.ts +47 -4
  200. package/dist/react/index.js +11231 -117
  201. package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
  202. package/dist/react/useVoiceCallDebugger.d.ts +8 -0
  203. package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
  204. package/dist/react/useVoiceController.d.ts +4 -1
  205. package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
  206. package/dist/react/useVoiceLiveOps.d.ts +9 -0
  207. package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
  208. package/dist/react/useVoiceOpsStatus.d.ts +8 -0
  209. package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
  210. package/dist/react/useVoiceProfileComparison.d.ts +8 -0
  211. package/dist/react/useVoiceProfileSwitchRecommendation.d.ts +8 -0
  212. package/dist/react/useVoiceProofTrends.d.ts +8 -0
  213. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  214. package/dist/react/useVoiceProviderContracts.d.ts +8 -0
  215. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  216. package/dist/react/useVoiceProviderStatus.d.ts +1 -1
  217. package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
  218. package/dist/react/useVoiceReconnectProfileEvidence.d.ts +8 -0
  219. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  220. package/dist/react/useVoiceSessionObservability.d.ts +8 -0
  221. package/dist/react/useVoiceSessionSnapshot.d.ts +9 -0
  222. package/dist/react/useVoiceStream.d.ts +4 -1
  223. package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
  224. package/dist/react/useVoiceTurnLatency.d.ts +9 -0
  225. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  226. package/dist/react/useVoiceWorkflowStatus.d.ts +1 -1
  227. package/dist/readinessProfiles.d.ts +45 -0
  228. package/dist/realtimeChannel.d.ts +136 -0
  229. package/dist/realtimeProviderContracts.d.ts +133 -0
  230. package/dist/reconnectContract.d.ts +176 -0
  231. package/dist/resilienceRoutes.d.ts +45 -5
  232. package/dist/routing.d.ts +1 -1
  233. package/dist/runtimeOps.d.ts +3 -3
  234. package/dist/s3Store.d.ts +3 -3
  235. package/dist/session.d.ts +1 -1
  236. package/dist/sessionObservability.d.ts +145 -0
  237. package/dist/sessionReplay.d.ts +19 -7
  238. package/dist/sessionSnapshot.d.ts +109 -0
  239. package/dist/simulationSuite.d.ts +143 -0
  240. package/dist/sloCalibration.d.ts +185 -0
  241. package/dist/sqliteStore.d.ts +17 -6
  242. package/dist/store.d.ts +1 -1
  243. package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
  244. package/dist/svelte/createVoiceCallDebugger.d.ts +12 -0
  245. package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
  246. package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
  247. package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
  248. package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
  249. package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
  250. package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
  251. package/dist/svelte/createVoiceProfileComparison.d.ts +7 -0
  252. package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
  253. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  254. package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
  255. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  256. package/dist/svelte/createVoiceProviderStatus.d.ts +4 -2
  257. package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
  258. package/dist/svelte/createVoiceReconnectProfileEvidence.d.ts +7 -0
  259. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  260. package/dist/svelte/createVoiceSessionObservability.d.ts +10 -0
  261. package/dist/svelte/createVoiceSessionSnapshot.d.ts +13 -0
  262. package/dist/svelte/createVoiceStream.d.ts +1 -1
  263. package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
  264. package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
  265. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  266. package/dist/svelte/createVoiceWorkflowStatus.d.ts +1 -1
  267. package/dist/svelte/index.d.ts +25 -4
  268. package/dist/svelte/index.js +5957 -463
  269. package/dist/telephony/contract.d.ts +61 -0
  270. package/dist/telephony/matrix.d.ts +97 -0
  271. package/dist/telephony/plivo.d.ts +303 -0
  272. package/dist/telephony/response.d.ts +1 -1
  273. package/dist/telephony/security.d.ts +182 -0
  274. package/dist/telephony/telnyx.d.ts +291 -0
  275. package/dist/telephony/twilio.d.ts +147 -13
  276. package/dist/telephonyMediaRoutes.d.ts +72 -0
  277. package/dist/telephonyOutcome.d.ts +273 -0
  278. package/dist/testing/accuracy.d.ts +1 -1
  279. package/dist/testing/benchmark.d.ts +9 -9
  280. package/dist/testing/corrected.d.ts +5 -5
  281. package/dist/testing/duplex.d.ts +3 -3
  282. package/dist/testing/fixtures.d.ts +3 -3
  283. package/dist/testing/index.d.ts +13 -13
  284. package/dist/testing/index.js +4745 -98
  285. package/dist/testing/ioProviderSimulator.d.ts +5 -5
  286. package/dist/testing/providerSimulator.d.ts +5 -5
  287. package/dist/testing/review.d.ts +4 -4
  288. package/dist/testing/sessionBenchmark.d.ts +3 -3
  289. package/dist/testing/stt.d.ts +3 -3
  290. package/dist/testing/telephony.d.ts +25 -0
  291. package/dist/testing/tts.d.ts +1 -1
  292. package/dist/toolContract.d.ts +161 -0
  293. package/dist/toolRuntime.d.ts +50 -0
  294. package/dist/trace.d.ts +46 -7
  295. package/dist/traceDeliveryRoutes.d.ts +86 -0
  296. package/dist/traceTimeline.d.ts +97 -0
  297. package/dist/turnDetection.d.ts +1 -1
  298. package/dist/turnLatency.d.ts +95 -0
  299. package/dist/turnProfiles.d.ts +2 -2
  300. package/dist/turnQuality.d.ts +94 -0
  301. package/dist/types.d.ts +236 -80
  302. package/dist/voiceMonitoring.d.ts +444 -0
  303. package/dist/vue/VoiceCallDebuggerLaunch.d.ts +68 -0
  304. package/dist/vue/VoiceDeliveryRuntime.d.ts +30 -0
  305. package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
  306. package/dist/vue/VoiceOpsStatus.d.ts +30 -0
  307. package/dist/vue/VoicePlatformCoverage.d.ts +23 -0
  308. package/dist/vue/VoiceProofTrends.d.ts +21 -0
  309. package/dist/vue/VoiceProviderCapabilities.d.ts +51 -0
  310. package/dist/vue/VoiceProviderContracts.d.ts +21 -0
  311. package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
  312. package/dist/vue/VoiceProviderStatus.d.ts +51 -0
  313. package/dist/vue/VoiceReadinessFailures.d.ts +21 -0
  314. package/dist/vue/VoiceReconnectProfileEvidence.d.ts +21 -0
  315. package/dist/vue/VoiceRoutingStatus.d.ts +51 -0
  316. package/dist/vue/VoiceSessionObservability.d.ts +23 -0
  317. package/dist/vue/VoiceSessionSnapshot.d.ts +68 -0
  318. package/dist/vue/VoiceTurnLatency.d.ts +69 -0
  319. package/dist/vue/VoiceTurnQuality.d.ts +51 -0
  320. package/dist/vue/index.d.ts +42 -4
  321. package/dist/vue/index.js +10644 -135
  322. package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
  323. package/dist/vue/useVoiceCallDebugger.d.ts +10 -0
  324. package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
  325. package/dist/vue/useVoiceController.d.ts +4 -2
  326. package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
  327. package/dist/vue/useVoiceLiveOps.d.ts +9 -0
  328. package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
  329. package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
  330. package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
  331. package/dist/vue/useVoiceProfileComparison.d.ts +9 -0
  332. package/dist/vue/useVoiceProofTrends.d.ts +9 -0
  333. package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
  334. package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
  335. package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
  336. package/dist/vue/useVoiceProviderStatus.d.ts +3 -3
  337. package/dist/vue/useVoiceReadinessFailures.d.ts +959 -0
  338. package/dist/vue/useVoiceReconnectProfileEvidence.d.ts +9 -0
  339. package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
  340. package/dist/vue/useVoiceSessionObservability.d.ts +9 -0
  341. package/dist/vue/useVoiceSessionSnapshot.d.ts +10 -0
  342. package/dist/vue/useVoiceStream.d.ts +5 -2
  343. package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
  344. package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
  345. package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
  346. package/dist/vue/useVoiceWorkflowStatus.d.ts +3 -3
  347. package/dist/workflowContract.d.ts +8 -8
  348. package/fixtures/manifest.json +356 -197
  349. package/package.json +260 -256
package/dist/types.d.ts CHANGED
@@ -1,24 +1,29 @@
1
- import type { SessionStore } from '@absolutejs/absolute';
2
- import type { VoiceOpsDispositionTaskPolicies, VoiceOpsTaskAssignmentRule, VoiceOpsTaskAssignmentRules, VoiceIntegrationWebhookConfig, StoredVoiceIntegrationEvent, StoredVoiceOpsTask, VoiceIntegrationEventStore, VoiceOpsTaskPolicy, VoiceOpsTask, VoiceOpsTaskStore } from './ops';
3
- import type { VoiceIntegrationSink } from './opsSinks';
4
- import type { StoredVoiceCallReviewArtifact, VoiceCallReviewArtifact, VoiceCallReviewStore } from './testing/review';
5
- import type { VoiceTraceEventStore } from './trace';
1
+ import type { SessionStore } from "@absolutejs/absolute";
2
+ import type { MediaWebRTCStatsCollector, MediaWebRTCStatsReport, MediaWebRTCStatsReportInput, MediaWebRTCStreamContinuityInput, MediaWebRTCStreamContinuityReport } from "@absolutejs/media";
3
+ import type { VoiceOpsDispositionTaskPolicies, VoiceOpsTaskAssignmentRule, VoiceOpsTaskAssignmentRules, VoiceIntegrationWebhookConfig, StoredVoiceIntegrationEvent, StoredVoiceOpsTask, VoiceIntegrationEventStore, VoiceOpsTaskPolicy, VoiceOpsTask, VoiceOpsTaskStore } from "./ops";
4
+ import type { VoiceIntegrationSink } from "./opsSinks";
5
+ import type { StoredVoiceCallReviewArtifact, VoiceCallReviewArtifact, VoiceCallReviewStore } from "./testing/review";
6
+ import type { VoiceTraceEventStore } from "./trace";
7
+ import type { VoiceLiveOpsControlState } from "./liveOps";
8
+ import type { VoiceAuditActor, VoiceAuditEventStore } from "./audit";
9
+ import type { VoiceProfileSwitchGuardDecision, VoiceProfileSwitchGuardMode, VoiceProfileSwitchObservedSignals } from "./profileSwitchRecommendation";
10
+ import type { VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryReport } from "./proofTrends";
6
11
  export type AudioFormat = {
7
- container: 'raw';
8
- encoding: 'alaw' | 'mulaw' | 'pcm_s16le';
12
+ container: "raw";
13
+ encoding: "alaw" | "mulaw" | "pcm_s16le";
9
14
  sampleRateHz: number;
10
15
  channels: 1 | 2;
11
16
  };
12
17
  export type AudioChunk = ArrayBuffer | ArrayBufferView;
13
18
  export type VoiceLanguageStrategy = {
14
- mode: 'auto-detect';
19
+ mode: "auto-detect";
15
20
  allowedLanguages?: string[];
16
21
  } | {
17
- mode: 'fixed';
22
+ mode: "fixed";
18
23
  primaryLanguage: string;
19
24
  secondaryLanguages?: string[];
20
25
  } | {
21
- mode: 'allow-switching';
26
+ mode: "allow-switching";
22
27
  primaryLanguage?: string;
23
28
  secondaryLanguages: string[];
24
29
  };
@@ -28,7 +33,7 @@ export type VoicePhraseHint = {
28
33
  boost?: number;
29
34
  metadata?: Record<string, unknown>;
30
35
  };
31
- export type VoiceCorrectionRiskTier = 'safe' | 'balanced' | 'risky';
36
+ export type VoiceCorrectionRiskTier = "safe" | "balanced" | "risky";
32
37
  export type VoiceDomainTerm = {
33
38
  text: string;
34
39
  aliases?: string[];
@@ -65,7 +70,7 @@ export type VoiceTranscriptQuality = {
65
70
  fallback?: VoiceFallbackDiagnostics;
66
71
  partialTranscriptCount: number;
67
72
  selectedTranscriptCount: number;
68
- source: 'fallback' | 'primary';
73
+ source: "fallback" | "primary";
69
74
  };
70
75
  export type VoiceTurnCorrectionDiagnostics = {
71
76
  attempted: boolean;
@@ -83,7 +88,7 @@ export type VoiceTurnCostEstimate = {
83
88
  primaryAudioMs: number;
84
89
  totalBillableAudioMs: number;
85
90
  };
86
- export type VoiceFallbackSelectionReason = 'fallback-empty' | 'primary-empty' | 'word-count-margin' | 'confidence-margin' | 'word-count-tiebreak' | 'kept-primary';
91
+ export type VoiceFallbackSelectionReason = "fallback-empty" | "primary-empty" | "word-count-margin" | "confidence-margin" | "word-count-tiebreak" | "kept-primary";
87
92
  export type VoiceFallbackDiagnostics = {
88
93
  attempted: boolean;
89
94
  fallbackConfidence?: number;
@@ -94,31 +99,31 @@ export type VoiceFallbackDiagnostics = {
94
99
  primaryWordCount: number;
95
100
  selected: boolean;
96
101
  selectionReason: VoiceFallbackSelectionReason;
97
- trigger: 'empty-turn' | 'low-confidence' | 'empty-or-low-confidence' | 'always';
102
+ trigger: "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
98
103
  };
99
104
  export type VoicePartialEvent = {
100
- type: 'partial';
105
+ type: "partial";
101
106
  transcript: Transcript;
102
107
  receivedAt: number;
103
108
  };
104
109
  export type VoiceFinalEvent = {
105
- type: 'final';
110
+ type: "final";
106
111
  transcript: Transcript;
107
112
  receivedAt: number;
108
113
  };
109
114
  export type VoiceEndOfTurnEvent = {
110
- type: 'endOfTurn';
111
- reason: 'vendor' | 'silence' | 'manual';
115
+ type: "endOfTurn";
116
+ reason: "vendor" | "silence" | "manual";
112
117
  receivedAt: number;
113
118
  };
114
119
  export type VoiceErrorEvent = {
115
- type: 'error';
120
+ type: "error";
116
121
  error: Error;
117
122
  recoverable: boolean;
118
123
  code?: string;
119
124
  };
120
125
  export type VoiceCloseEvent = {
121
- type: 'close';
126
+ type: "close";
122
127
  code?: number;
123
128
  reason?: string;
124
129
  recoverable?: boolean;
@@ -144,11 +149,11 @@ export type STTAdapterOpenOptions = {
144
149
  signal?: AbortSignal;
145
150
  };
146
151
  export type STTAdapter<TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions> = {
147
- kind: 'stt';
152
+ kind: "stt";
148
153
  open: (options: TOptions) => Promise<STTAdapterSession> | STTAdapterSession;
149
154
  };
150
155
  export type TTSAudioEvent = {
151
- type: 'audio';
156
+ type: "audio";
152
157
  chunk: AudioChunk;
153
158
  format: AudioFormat;
154
159
  receivedAt: number;
@@ -169,7 +174,7 @@ export type TTSAdapterOpenOptions = {
169
174
  signal?: AbortSignal;
170
175
  };
171
176
  export type TTSAdapter<TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions> = {
172
- kind: 'tts';
177
+ kind: "tts";
173
178
  open: (options: TOptions) => Promise<TTSAdapterSession> | TTSAdapterSession;
174
179
  };
175
180
  export type RealtimeSessionEventMap = STTSessionEventMap & {
@@ -189,10 +194,19 @@ export type RealtimeAdapterOpenOptions = {
189
194
  signal?: AbortSignal;
190
195
  };
191
196
  export type RealtimeAdapter<TOptions extends RealtimeAdapterOpenOptions = RealtimeAdapterOpenOptions> = {
192
- kind: 'realtime';
197
+ kind: "realtime";
193
198
  open: (options: TOptions) => Promise<RealtimeAdapterSession> | RealtimeAdapterSession;
194
199
  };
195
- export type VoiceSessionStatus = 'active' | 'reconnecting' | 'completed' | 'failed';
200
+ export type VoiceSessionStatus = "active" | "reconnecting" | "completed" | "failed";
201
+ export type VoiceReconnectClientStatus = "idle" | "reconnecting" | "resumed" | "exhausted";
202
+ export type VoiceReconnectClientState = {
203
+ attempts: number;
204
+ lastDisconnectAt?: number;
205
+ lastResumedAt?: number;
206
+ maxAttempts: number;
207
+ nextAttemptAt?: number;
208
+ status: VoiceReconnectClientStatus;
209
+ };
196
210
  export type VoiceTurnRecord<TResult = unknown> = {
197
211
  id: string;
198
212
  text: string;
@@ -253,10 +267,10 @@ export type VoiceSessionSummary = {
253
267
  status: VoiceSessionStatus;
254
268
  turnCount: number;
255
269
  };
256
- export type VoiceCallDisposition = 'completed' | 'transferred' | 'escalated' | 'voicemail' | 'no-answer' | 'failed' | 'closed';
270
+ export type VoiceCallDisposition = "completed" | "transferred" | "escalated" | "voicemail" | "no-answer" | "failed" | "closed";
257
271
  export type VoiceCallLifecycleEvent = {
258
272
  at: number;
259
- type: 'start' | 'end' | 'transfer' | 'escalation' | 'voicemail' | 'no-answer';
273
+ type: "start" | "end" | "transfer" | "escalation" | "voicemail" | "no-answer";
260
274
  disposition?: VoiceCallDisposition;
261
275
  metadata?: Record<string, unknown>;
262
276
  reason?: string;
@@ -269,8 +283,8 @@ export type VoiceCallLifecycleState = {
269
283
  lastEventAt: number;
270
284
  startedAt: number;
271
285
  };
272
- export type VoiceHandoffAction = 'escalate' | 'no-answer' | 'transfer' | 'voicemail';
273
- export type VoiceHandoffStatus = 'delivered' | 'failed' | 'skipped';
286
+ export type VoiceHandoffAction = "escalate" | "no-answer" | "transfer" | "voicemail";
287
+ export type VoiceHandoffStatus = "delivered" | "failed" | "skipped";
274
288
  export type VoiceHandoffResult = {
275
289
  deliveredAt?: number;
276
290
  deliveredTo?: string;
@@ -278,7 +292,7 @@ export type VoiceHandoffResult = {
278
292
  metadata?: Record<string, unknown>;
279
293
  status: VoiceHandoffStatus;
280
294
  };
281
- export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus | 'pending';
295
+ export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus | "pending";
282
296
  export type StoredVoiceHandoffDelivery<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
283
297
  action: VoiceHandoffAction;
284
298
  context: TContext;
@@ -326,7 +340,7 @@ export type VoiceHandoffConfig<TContext = unknown, TSession extends VoiceSession
326
340
  adapters: VoiceHandoffAdapter<TContext, TSession, TResult>[];
327
341
  deliveryQueue?: VoiceHandoffDeliveryStore<StoredVoiceHandoffDelivery<TContext, TSession, TResult>>;
328
342
  enqueueOnly?: boolean;
329
- failMode?: 'record' | 'throw';
343
+ failMode?: "record" | "throw";
330
344
  };
331
345
  export type VoiceSessionStore<TSession extends VoiceSessionRecord = VoiceSessionRecord> = SessionStore<TSession, VoiceSessionSummary>;
332
346
  export type VoiceLogger = {
@@ -336,15 +350,15 @@ export type VoiceLogger = {
336
350
  error?: (message: string, meta?: Record<string, unknown>) => void;
337
351
  };
338
352
  export type VoiceReconnectConfig = {
339
- strategy?: 'resume-last-turn' | 'restart' | 'fail';
353
+ strategy?: "resume-last-turn" | "restart" | "fail";
340
354
  timeout?: number;
341
355
  maxAttempts?: number;
342
356
  };
343
- export type VoiceRuntimePreset = 'default' | 'chat' | 'guided-intake' | 'dictation' | 'noisy-room' | 'pstn-balanced' | 'pstn-fast' | 'reliability';
344
- export type VoiceSTTLifecycle = 'continuous' | 'turn-scoped';
345
- export type VoiceTurnProfile = 'fast' | 'balanced' | 'long-form';
346
- export type VoiceTurnQualityProfile = 'general' | 'accent-heavy' | 'noisy-room' | 'short-command';
347
- export type VoiceTurnFallbackTrigger = 'empty-turn' | 'low-confidence' | 'empty-or-low-confidence' | 'always';
357
+ export type VoiceRuntimePreset = "default" | "chat" | "guided-intake" | "dictation" | "noisy-room" | "pstn-balanced" | "pstn-fast" | "reliability";
358
+ export type VoiceSTTLifecycle = "continuous" | "turn-scoped";
359
+ export type VoiceTurnProfile = "fast" | "balanced" | "long-form";
360
+ export type VoiceTurnQualityProfile = "general" | "accent-heavy" | "noisy-room" | "short-command";
361
+ export type VoiceTurnFallbackTrigger = "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
348
362
  export type VoiceSTTFallbackConfig = {
349
363
  adapter: STTAdapter;
350
364
  trigger?: VoiceTurnFallbackTrigger;
@@ -401,7 +415,7 @@ export type VoiceSessionHandle<TContext = unknown, TSession extends VoiceSession
401
415
  id: string;
402
416
  connect: (socket: VoiceSocket) => Promise<void>;
403
417
  receiveAudio: (audio: AudioChunk) => Promise<void>;
404
- commitTurn: (reason?: VoiceEndOfTurnEvent['reason']) => Promise<void>;
418
+ commitTurn: (reason?: VoiceEndOfTurnEvent["reason"]) => Promise<void>;
405
419
  disconnect: (event?: VoiceCloseEvent) => Promise<void>;
406
420
  complete: (result?: TResult) => Promise<void>;
407
421
  escalate: (input: {
@@ -475,6 +489,10 @@ export type VoiceLexiconResolver<TContext = unknown> = (input: {
475
489
  }) => Promise<VoiceLexiconEntry[] | void> | VoiceLexiconEntry[] | void;
476
490
  export type VoiceOnTurnObjectHandler<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = (input: {
477
491
  context: TContext;
492
+ liveOps?: {
493
+ control: VoiceLiveOpsControlState;
494
+ injectedInstruction?: string;
495
+ };
478
496
  session: TSession;
479
497
  turn: VoiceTurnRecord;
480
498
  api: VoiceSessionHandle<TContext, TSession, TResult>;
@@ -559,7 +577,7 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
559
577
  disposition: VoiceCallDisposition;
560
578
  review: StoredVoiceCallReviewArtifact;
561
579
  session: TSession;
562
- }) => Promise<Omit<VoiceOpsTask, 'id'> | VoiceOpsTask | StoredVoiceOpsTask | null | void> | Omit<VoiceOpsTask, 'id'> | VoiceOpsTask | StoredVoiceOpsTask | null | void;
580
+ }) => Promise<Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void> | Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void;
563
581
  resolveTaskPolicy?: (input: {
564
582
  api: VoiceSessionHandle<TContext, TSession, TResult>;
565
583
  context: TContext;
@@ -596,7 +614,37 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
596
614
  tasks?: VoiceOpsTaskStore;
597
615
  webhook?: VoiceIntegrationWebhookConfig;
598
616
  };
599
- export type VoiceNormalizedRouteConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = Omit<VoiceRouteConfig<TContext, TSession, TResult>, 'onTurn'> & {
617
+ export type VoiceLiveOpsRuntimeConfig = {
618
+ getControl: (sessionId: string) => Promise<VoiceLiveOpsControlState | null | undefined> | VoiceLiveOpsControlState | null | undefined;
619
+ };
620
+ export type VoiceProfileSwitchGuardResolverInput<TContext = unknown> = {
621
+ context: TContext;
622
+ scenarioId?: string;
623
+ sessionId: string;
624
+ };
625
+ export type VoicePluginProfileSwitchGuardConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
626
+ actor?: VoiceAuditActor;
627
+ allowedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
628
+ audit?: VoiceAuditEventStore;
629
+ blockedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
630
+ currentProfileId?: string | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string | undefined> | string | undefined);
631
+ defaultProfileId?: string;
632
+ defaults: VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport> | VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport);
633
+ metadata?: Record<string, unknown> | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<Record<string, unknown> | undefined> | Record<string, unknown> | undefined);
634
+ minConfidence?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
635
+ maxAutoSwitchesPerSession?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
636
+ mode?: VoiceProfileSwitchGuardMode | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchGuardMode | undefined> | VoiceProfileSwitchGuardMode | undefined);
637
+ observed?: VoiceProfileSwitchObservedSignals | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchObservedSignals | undefined> | VoiceProfileSwitchObservedSignals | undefined);
638
+ onDecision?: (input: {
639
+ context: TContext;
640
+ decision: VoiceProfileSwitchGuardDecision;
641
+ scenarioId?: string;
642
+ sessionId: string;
643
+ }) => Promise<void> | void;
644
+ sessionMetadataKey?: string | false;
645
+ trace?: false | VoiceTraceEventStore;
646
+ };
647
+ export type VoiceNormalizedRouteConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = Omit<VoiceRouteConfig<TContext, TSession, TResult>, "onTurn"> & {
600
648
  onTurn: VoiceOnTurnObjectHandler<TContext, TSession, TResult>;
601
649
  };
602
650
  export type VoiceScenario = {
@@ -616,9 +664,11 @@ export type VoicePluginConfig<TContext = unknown, TSession extends VoiceSessionR
616
664
  lexicon?: VoiceLexiconEntry[] | VoiceLexiconResolver<TContext>;
617
665
  phraseHints?: VoicePhraseHint[] | VoicePhraseHintResolver<TContext>;
618
666
  preset?: VoiceRuntimePreset;
619
- stt: STTAdapter;
667
+ stt?: STTAdapter;
620
668
  sttFallback?: VoiceSTTFallbackConfig;
621
669
  sttLifecycle?: VoiceSTTLifecycle;
670
+ realtime?: RealtimeAdapter;
671
+ realtimeInputFormat?: AudioFormat;
622
672
  tts?: TTSAdapter;
623
673
  session: VoiceSessionStore<NoInfer<TSession>>;
624
674
  reconnect?: VoiceReconnectConfig;
@@ -628,6 +678,8 @@ export type VoicePluginConfig<TContext = unknown, TSession extends VoiceSessionR
628
678
  htmx?: boolean | VoiceHTMXConfig<TSession, NoInfer<TResult>>;
629
679
  handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
630
680
  ops?: VoiceRuntimeOpsConfig<TContext, TSession, TResult>;
681
+ liveOps?: VoiceLiveOpsRuntimeConfig;
682
+ profileSwitchGuard?: VoicePluginProfileSwitchGuardConfig<TContext, TSession, TResult>;
631
683
  trace?: VoiceTraceEventStore;
632
684
  } & VoiceRouteConfig<TContext, TSession, TResult>;
633
685
  export type CreateVoiceSessionOptions<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
@@ -635,7 +687,9 @@ export type CreateVoiceSessionOptions<TContext = unknown, TSession extends Voice
635
687
  id: string;
636
688
  context: TContext;
637
689
  socket: VoiceSocket;
638
- stt: STTAdapter;
690
+ stt?: STTAdapter;
691
+ realtime?: RealtimeAdapter;
692
+ realtimeInputFormat?: AudioFormat;
639
693
  tts?: TTSAdapter;
640
694
  languageStrategy?: VoiceLanguageStrategy;
641
695
  lexicon?: VoiceLexiconEntry[];
@@ -644,96 +698,136 @@ export type CreateVoiceSessionOptions<TContext = unknown, TSession extends Voice
644
698
  trace?: VoiceTraceEventStore;
645
699
  reconnect: Required<VoiceReconnectConfig>;
646
700
  phraseHints?: VoicePhraseHint[];
701
+ sessionMetadata?: Record<string, unknown>;
647
702
  scenarioId?: string;
648
703
  sttLifecycle: VoiceSTTLifecycle;
649
704
  turnDetection: VoiceResolvedTurnDetectionConfig;
650
705
  audioConditioning?: VoiceResolvedAudioConditioningConfig;
651
706
  handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
707
+ liveOps?: VoiceLiveOpsRuntimeConfig;
652
708
  route: VoiceNormalizedRouteConfig<TContext, TSession, TResult>;
653
709
  logger?: VoiceLogger;
654
710
  };
655
711
  export type CreateVoiceSession = <TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown>(options: CreateVoiceSessionOptions<TContext, TSession, TResult>) => VoiceSessionHandle<TContext, TSession, TResult>;
656
712
  export type VoiceClientStartMessage = {
657
- type: 'start';
713
+ type: "start";
658
714
  sessionId?: string;
659
715
  scenarioId?: string;
660
716
  };
661
717
  export type VoiceClientEndTurnMessage = {
662
- type: 'end_turn';
718
+ type: "end_turn";
663
719
  };
664
720
  export type VoiceClientCloseMessage = {
665
- type: 'close';
721
+ type: "close";
666
722
  reason?: string;
667
723
  };
668
724
  export type VoiceClientCallControlMessage = {
669
- type: 'call_control';
670
- action: 'complete' | 'escalate' | 'no-answer' | 'transfer' | 'voicemail';
725
+ type: "call_control";
726
+ action: "complete" | "escalate" | "no-answer" | "transfer" | "voicemail";
671
727
  metadata?: Record<string, unknown>;
672
728
  reason?: string;
673
729
  target?: string;
674
730
  };
675
731
  export type VoiceClientPingMessage = {
676
- type: 'ping';
732
+ type: "ping";
677
733
  };
678
734
  export type VoiceClientMessage = VoiceClientStartMessage | VoiceClientEndTurnMessage | VoiceClientCloseMessage | VoiceClientCallControlMessage | VoiceClientPingMessage;
679
735
  export type VoiceServerSessionMessage = {
680
- type: 'session';
736
+ type: "session";
681
737
  sessionId: string;
682
738
  status: VoiceSessionStatus;
683
739
  scenarioId?: string;
740
+ sessionMetadata?: Record<string, unknown>;
741
+ };
742
+ export type VoiceServerReplayMessage<TResult = unknown> = {
743
+ type: "replay";
744
+ assistantTexts: string[];
745
+ call?: VoiceCallLifecycleState;
746
+ partial: string;
747
+ scenarioId?: string;
748
+ sessionId: string;
749
+ sessionMetadata?: Record<string, unknown>;
750
+ status: VoiceSessionStatus;
751
+ turns: VoiceTurnRecord<TResult>[];
684
752
  };
685
753
  export type VoiceServerPartialMessage = {
686
- type: 'partial';
754
+ type: "partial";
687
755
  transcript: Transcript;
688
756
  };
689
757
  export type VoiceServerFinalMessage = {
690
- type: 'final';
758
+ type: "final";
691
759
  transcript: Transcript;
692
760
  };
693
761
  export type VoiceServerTurnMessage<TResult = unknown> = {
694
- type: 'turn';
762
+ type: "turn";
695
763
  turn: VoiceTurnRecord<TResult>;
696
764
  };
697
765
  export type VoiceServerAssistantMessage = {
698
- type: 'assistant';
766
+ type: "assistant";
699
767
  text: string;
700
768
  turnId?: string;
701
769
  };
702
770
  export type VoiceServerAudioMessage = {
703
- type: 'audio';
771
+ type: "audio";
704
772
  chunkBase64: string;
705
773
  format: AudioFormat;
706
774
  receivedAt: number;
707
775
  turnId?: string;
708
776
  };
709
777
  export type VoiceServerCompleteMessage = {
710
- type: 'complete';
778
+ type: "complete";
711
779
  sessionId: string;
712
780
  };
713
781
  export type VoiceServerCallLifecycleMessage = {
714
- type: 'call_lifecycle';
782
+ type: "call_lifecycle";
715
783
  event: VoiceCallLifecycleEvent;
716
784
  sessionId: string;
717
785
  };
718
786
  export type VoiceServerErrorMessage = {
719
- type: 'error';
787
+ type: "error";
720
788
  message: string;
721
789
  recoverable?: boolean;
722
790
  };
723
791
  export type VoiceServerPongMessage = {
724
- type: 'pong';
792
+ type: "pong";
793
+ };
794
+ export type VoiceServerConnectionMessage = {
795
+ type: "connection";
796
+ reconnect: VoiceReconnectClientState;
725
797
  };
726
- export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage;
798
+ export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerReplayMessage<TResult> | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage | VoiceServerConnectionMessage;
727
799
  export type VoiceConnectionOptions = {
800
+ browserMedia?: false | VoiceBrowserMediaReporterOptions;
728
801
  protocols?: string[];
729
802
  scenarioId?: string;
730
803
  reconnect?: boolean;
804
+ reconnectReportPath?: string;
731
805
  maxReconnectAttempts?: number;
732
806
  pingInterval?: number;
733
807
  sessionId?: string;
734
808
  };
809
+ export type VoiceBrowserMediaReportPayload = {
810
+ at: number;
811
+ continuity?: MediaWebRTCStreamContinuityReport;
812
+ report: MediaWebRTCStatsReport;
813
+ scenarioId?: string | null;
814
+ sessionId?: string | null;
815
+ };
816
+ export type VoiceBrowserMediaReporterOptions = Omit<MediaWebRTCStatsReportInput, "peerConnection"> & {
817
+ fetch?: typeof fetch;
818
+ getPeerConnection?: (() => MediaWebRTCStatsCollector | null | undefined) | (() => Promise<MediaWebRTCStatsCollector | null | undefined>);
819
+ getScenarioId?: () => string | null | undefined;
820
+ getSessionId?: () => string | null | undefined;
821
+ intervalMs?: number;
822
+ continuity?: false | Omit<MediaWebRTCStreamContinuityInput, "previousStats" | "stats">;
823
+ onError?: (error: unknown) => void;
824
+ onReport?: (payload: VoiceBrowserMediaReportPayload) => void;
825
+ path?: string;
826
+ peerConnection?: MediaWebRTCStatsCollector;
827
+ };
735
828
  export type VoiceCaptureOptions = {
736
829
  channelCount?: 1 | 2;
830
+ onAudio?: (audio: Uint8Array | ArrayBuffer, sendAudio: (audio: Uint8Array | ArrayBuffer) => void) => void;
737
831
  onLevel?: (level: number) => void;
738
832
  sampleRateHz?: number;
739
833
  };
@@ -747,6 +841,46 @@ export type VoiceBargeInOptions = {
747
841
  enabled?: boolean;
748
842
  interruptOnPartial?: boolean;
749
843
  interruptThreshold?: number;
844
+ monitor?: VoiceBargeInMonitor;
845
+ };
846
+ export type VoiceBargeInTriggerReason = "input-level" | "manual-audio" | "manual-interrupt" | "partial-transcript";
847
+ export type VoiceBargeInMonitorEvent = {
848
+ at: number;
849
+ id: string;
850
+ latencyMs?: number;
851
+ playbackStopLatencyMs?: number;
852
+ reason: VoiceBargeInTriggerReason;
853
+ sessionId?: string | null;
854
+ status: "requested" | "stopped" | "skipped";
855
+ thresholdMs?: number;
856
+ };
857
+ export type VoiceBargeInMonitorSnapshot = {
858
+ averageLatencyMs?: number;
859
+ events: VoiceBargeInMonitorEvent[];
860
+ failed: number;
861
+ lastEvent?: VoiceBargeInMonitorEvent;
862
+ passed: number;
863
+ status: "empty" | "fail" | "pass" | "warn";
864
+ thresholdMs: number;
865
+ total: number;
866
+ };
867
+ export type VoiceBargeInMonitor = {
868
+ getSnapshot: () => VoiceBargeInMonitorSnapshot;
869
+ recordRequested: (input: {
870
+ reason: VoiceBargeInTriggerReason;
871
+ sessionId?: string | null;
872
+ }) => VoiceBargeInMonitorEvent;
873
+ recordSkipped: (input: {
874
+ reason: VoiceBargeInTriggerReason;
875
+ sessionId?: string | null;
876
+ }) => VoiceBargeInMonitorEvent;
877
+ recordStopped: (input: {
878
+ latencyMs?: number;
879
+ playbackStopLatencyMs?: number;
880
+ reason: VoiceBargeInTriggerReason;
881
+ sessionId?: string | null;
882
+ }) => VoiceBargeInMonitorEvent;
883
+ subscribe: (subscriber: () => void) => () => void;
750
884
  };
751
885
  export type VoiceAudioPlayerOptions = {
752
886
  autoStart?: boolean;
@@ -757,10 +891,10 @@ export type VoiceDuplexControllerOptions = VoiceControllerOptions & {
757
891
  audioPlayer?: VoiceAudioPlayerOptions;
758
892
  bargeIn?: VoiceBargeInOptions;
759
893
  };
760
- export type VoiceSTTRoutingGoal = 'best' | 'low-cost';
761
- export type VoiceSTTRoutingCorrectionMode = 'generic' | 'none' | 'risky-turn';
894
+ export type VoiceSTTRoutingGoal = "best" | "low-cost";
895
+ export type VoiceSTTRoutingCorrectionMode = "generic" | "none" | "risky-turn";
762
896
  export type VoiceSTTRoutingStrategy = {
763
- benchmarkSessionTarget: 'deepgram-corrected' | 'deepgram-flux';
897
+ benchmarkSessionTarget: "deepgram-corrected" | "deepgram-flux";
764
898
  correctionMode: VoiceSTTRoutingCorrectionMode;
765
899
  goal: VoiceSTTRoutingGoal;
766
900
  notes: string[];
@@ -774,7 +908,7 @@ export type VoiceHTMXRenderInput<TResult = unknown, TSession extends VoiceSessio
774
908
  result?: TResult;
775
909
  session?: TSession;
776
910
  sessionId?: string;
777
- status: VoiceSessionStatus | 'idle';
911
+ status: VoiceSessionStatus | "idle";
778
912
  turnCount: number;
779
913
  turns: VoiceTurnRecord<TResult>[];
780
914
  };
@@ -802,9 +936,11 @@ export type VoiceHTMXOptions<TSession extends VoiceSessionRecord = VoiceSessionR
802
936
  export type VoiceHTMXConfig<TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = VoiceHTMXRenderer<TSession, TResult> | VoiceHTMXOptions<TSession, TResult>;
803
937
  export type VoiceStreamState<TResult = unknown> = {
804
938
  call: VoiceCallLifecycleState | null;
939
+ sessionMetadata: Record<string, unknown> | null;
805
940
  sessionId: string | null;
806
941
  scenarioId: string | null;
807
- status: VoiceSessionStatus | 'idle';
942
+ status: VoiceSessionStatus | "idle";
943
+ reconnect: VoiceReconnectClientState;
808
944
  partial: string;
809
945
  turns: VoiceTurnRecord<TResult>[];
810
946
  assistantTexts: string[];
@@ -819,7 +955,7 @@ export type VoiceStreamState<TResult = unknown> = {
819
955
  };
820
956
  export type VoiceStream<TResult = unknown> = {
821
957
  call: VoiceCallLifecycleState | null;
822
- callControl: (message: Omit<VoiceClientCallControlMessage, 'type'>) => void;
958
+ callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
823
959
  close: () => void;
824
960
  start: (input?: {
825
961
  scenarioId?: string;
@@ -831,10 +967,13 @@ export type VoiceStream<TResult = unknown> = {
831
967
  getSnapshot: () => VoiceStreamState<TResult>;
832
968
  isConnected: boolean;
833
969
  partial: string;
970
+ reconnect: VoiceReconnectClientState;
834
971
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
972
+ simulateDisconnect: () => void;
835
973
  sessionId: string | null;
974
+ sessionMetadata: Record<string, unknown> | null;
836
975
  scenarioId: string | null;
837
- status: VoiceSessionStatus | 'idle';
976
+ status: VoiceSessionStatus | "idle";
838
977
  subscribe: (subscriber: () => void) => () => void;
839
978
  turns: VoiceTurnRecord<TResult>[];
840
979
  assistantTexts: string[];
@@ -860,7 +999,7 @@ export type VoiceAudioPlayerState = {
860
999
  queuedChunkCount: number;
861
1000
  };
862
1001
  export type VoiceAudioPlayerSource = {
863
- assistantAudio: VoiceStreamState['assistantAudio'];
1002
+ assistantAudio: VoiceStreamState["assistantAudio"];
864
1003
  subscribe: (subscriber: () => void) => () => void;
865
1004
  };
866
1005
  export type VoiceAudioPlayer = {
@@ -887,7 +1026,7 @@ export type VoiceBargeInBinding = {
887
1026
  export type VoiceController<TResult = unknown> = {
888
1027
  bindHTMX: (options: VoiceHTMXBindingOptions) => () => void;
889
1028
  call: VoiceCallLifecycleState | null;
890
- callControl: (message: Omit<VoiceClientCallControlMessage, 'type'>) => void;
1029
+ callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
891
1030
  close: () => void;
892
1031
  endTurn: () => void;
893
1032
  start: (input?: {
@@ -900,12 +1039,15 @@ export type VoiceController<TResult = unknown> = {
900
1039
  isConnected: boolean;
901
1040
  isRecording: boolean;
902
1041
  partial: string;
1042
+ reconnect: VoiceReconnectClientState;
903
1043
  recordingError: string | null;
904
1044
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
1045
+ simulateDisconnect: () => void;
905
1046
  sessionId: string | null;
1047
+ sessionMetadata: Record<string, unknown> | null;
906
1048
  scenarioId: string | null;
907
1049
  startRecording: () => Promise<void>;
908
- status: VoiceSessionStatus | 'idle';
1050
+ status: VoiceSessionStatus | "idle";
909
1051
  stopRecording: () => void;
910
1052
  subscribe: (subscriber: () => void) => () => void;
911
1053
  toggleRecording: () => Promise<void>;
@@ -929,40 +1071,54 @@ export type VoiceHTMXBindingOptions = {
929
1071
  sessionQueryParam?: string;
930
1072
  };
931
1073
  export type VoiceStoreAction<TResult = unknown> = {
932
- type: 'session';
1074
+ type: "session";
933
1075
  sessionId: string;
1076
+ sessionMetadata?: Record<string, unknown>;
934
1077
  scenarioId?: string;
935
1078
  status: VoiceSessionStatus;
936
1079
  } | {
937
- type: 'call_lifecycle';
1080
+ type: "replay";
1081
+ assistantTexts: string[];
1082
+ call?: VoiceCallLifecycleState;
1083
+ partial: string;
1084
+ scenarioId?: string;
1085
+ sessionId: string;
1086
+ sessionMetadata?: Record<string, unknown>;
1087
+ status: VoiceSessionStatus;
1088
+ turns: VoiceTurnRecord<TResult>[];
1089
+ } | {
1090
+ type: "call_lifecycle";
938
1091
  event: VoiceCallLifecycleEvent;
939
1092
  sessionId: string;
940
1093
  } | {
941
- type: 'partial';
1094
+ type: "partial";
942
1095
  transcript: Transcript;
943
1096
  } | {
944
- type: 'final';
1097
+ type: "final";
945
1098
  transcript: Transcript;
946
1099
  } | {
947
- type: 'turn';
1100
+ type: "turn";
948
1101
  turn: VoiceTurnRecord<TResult>;
949
1102
  } | {
950
- type: 'assistant';
1103
+ type: "assistant";
951
1104
  text: string;
952
1105
  } | {
953
- type: 'audio';
1106
+ type: "audio";
954
1107
  chunk: Uint8Array;
955
1108
  format: AudioFormat;
956
1109
  receivedAt: number;
957
1110
  turnId?: string;
958
1111
  } | {
959
- type: 'complete';
1112
+ type: "complete";
960
1113
  sessionId: string;
961
1114
  } | {
962
- type: 'error';
1115
+ type: "error";
963
1116
  message: string;
964
1117
  } | {
965
- type: 'connected';
1118
+ type: "connected";
1119
+ } | {
1120
+ type: "connection";
1121
+ reconnect: VoiceReconnectClientState;
966
1122
  } | {
967
- type: 'disconnected';
1123
+ type: "disconnected";
968
1124
  };