@absolutejs/voice 0.0.22-beta.56 → 0.0.22-beta.561

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 (495) hide show
  1. package/README.md +4550 -1156
  2. package/dist/angular/index.d.ts +36 -5
  3. package/dist/angular/index.js +4189 -390
  4. package/dist/angular/voice-agent-squad-status.service.d.ts +12 -0
  5. package/dist/angular/voice-call-debugger.service.d.ts +12 -0
  6. package/dist/angular/voice-call-player.service.d.ts +19 -0
  7. package/dist/angular/voice-campaign-dialer-proof.service.d.ts +14 -0
  8. package/dist/angular/voice-controller.service.d.ts +3 -1
  9. package/dist/angular/voice-cost-dashboard.service.d.ts +15 -0
  10. package/dist/angular/voice-delivery-runtime.service.d.ts +16 -0
  11. package/dist/angular/voice-live-agent-console.service.d.ts +16 -0
  12. package/dist/angular/voice-live-call-viewer.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.service.d.ts +12 -0
  16. package/dist/angular/voice-platform-coverage.service.d.ts +12 -0
  17. package/dist/angular/voice-profile-comparison.service.d.ts +12 -0
  18. package/dist/angular/voice-proof-trends.service.d.ts +12 -0
  19. package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
  20. package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
  21. package/dist/angular/voice-provider-status.service.d.ts +2 -2
  22. package/dist/angular/voice-readiness-failures.service.d.ts +13 -0
  23. package/dist/angular/voice-reconnect-profile-evidence.service.d.ts +12 -0
  24. package/dist/angular/voice-replay-timeline.service.d.ts +13 -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-widget.service.d.ts +18 -0
  33. package/dist/angular/voice-workflow-status.service.d.ts +2 -2
  34. package/dist/client/actions.d.ts +95 -1
  35. package/dist/client/agentSquadStatus.d.ts +37 -0
  36. package/dist/client/agentSquadStatusWidget.d.ts +24 -0
  37. package/dist/client/audioPlayer.d.ts +2 -2
  38. package/dist/client/bargeInMonitor.d.ts +7 -0
  39. package/dist/client/browserMedia.d.ts +8 -0
  40. package/dist/client/browserNoiseSuppression.d.ts +42 -0
  41. package/dist/client/browserVoiceSupport.d.ts +22 -0
  42. package/dist/client/callDebugger.d.ts +21 -0
  43. package/dist/client/callDebuggerWidget.d.ts +30 -0
  44. package/dist/client/callPlayer.d.ts +41 -0
  45. package/dist/client/campaignDialerProof.d.ts +25 -0
  46. package/dist/client/connection.d.ts +4 -3
  47. package/dist/client/controller.d.ts +1 -1
  48. package/dist/client/conversationAnalytics.d.ts +30 -0
  49. package/dist/client/costDashboard.d.ts +27 -0
  50. package/dist/client/createVoiceStream.d.ts +1 -1
  51. package/dist/client/deliveryRuntime.d.ts +36 -0
  52. package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
  53. package/dist/client/duplex.d.ts +2 -2
  54. package/dist/client/htmx.d.ts +1 -1
  55. package/dist/client/htmxAttributes.d.ts +24 -0
  56. package/dist/client/htmxBootstrap.js +1029 -73
  57. package/dist/client/htmxDashboardRenderers.d.ts +71 -0
  58. package/dist/client/index.d.ts +106 -15
  59. package/dist/client/index.js +10520 -279
  60. package/dist/client/liveAgentConsole.d.ts +28 -0
  61. package/dist/client/liveCallViewer.d.ts +42 -0
  62. package/dist/client/liveOps.d.ts +22 -0
  63. package/dist/client/liveOpsWidget.d.ts +23 -0
  64. package/dist/client/liveTurnLatency.d.ts +41 -0
  65. package/dist/client/microphone.d.ts +4 -4
  66. package/dist/client/opsActionCenter.d.ts +56 -0
  67. package/dist/client/opsActionCenterWidget.d.ts +29 -0
  68. package/dist/client/opsActionHistory.d.ts +21 -0
  69. package/dist/client/opsActionHistoryWidget.d.ts +11 -0
  70. package/dist/client/opsStatus.d.ts +21 -0
  71. package/dist/client/opsStatusWidget.d.ts +10 -10
  72. package/dist/client/platformCoverage.d.ts +21 -0
  73. package/dist/client/platformCoverageWidget.d.ts +38 -0
  74. package/dist/client/profileComparison.d.ts +21 -0
  75. package/dist/client/profileComparisonWidget.d.ts +41 -0
  76. package/dist/client/profileSwitchRecommendation.d.ts +21 -0
  77. package/dist/client/profileSwitchRecommendationWidget.d.ts +12 -0
  78. package/dist/client/proofTrends.d.ts +21 -0
  79. package/dist/client/proofTrendsWidget.d.ts +38 -0
  80. package/dist/client/providerCapabilities.d.ts +21 -0
  81. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  82. package/dist/client/providerContracts.d.ts +21 -0
  83. package/dist/client/providerContractsWidget.d.ts +37 -0
  84. package/dist/client/providerSimulationControls.d.ts +33 -0
  85. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  86. package/dist/client/providerStatus.d.ts +5 -3
  87. package/dist/client/providerStatusWidget.d.ts +32 -0
  88. package/dist/client/reactiveSource.d.ts +8 -0
  89. package/dist/client/readinessFailures.d.ts +21 -0
  90. package/dist/client/readinessFailuresWidget.d.ts +42 -0
  91. package/dist/client/reconnectProfileEvidence.d.ts +21 -0
  92. package/dist/client/reconnectProfileEvidenceWidget.d.ts +39 -0
  93. package/dist/client/replayTimeline.d.ts +26 -0
  94. package/dist/client/routingStatus.d.ts +21 -0
  95. package/dist/client/routingStatusWidget.d.ts +32 -0
  96. package/dist/client/sessionObservability.d.ts +21 -0
  97. package/dist/client/sessionObservabilityWidget.d.ts +31 -0
  98. package/dist/client/sessionSnapshot.d.ts +23 -0
  99. package/dist/client/sessionSnapshotWidget.d.ts +33 -0
  100. package/dist/client/store.d.ts +1 -1
  101. package/dist/client/traceTimeline.d.ts +21 -0
  102. package/dist/client/traceTimelineWidget.d.ts +36 -0
  103. package/dist/client/turnLatency.d.ts +24 -0
  104. package/dist/client/turnLatencyWidget.d.ts +33 -0
  105. package/dist/client/turnQuality.d.ts +21 -0
  106. package/dist/client/turnQualityWidget.d.ts +32 -0
  107. package/dist/client/voiceWidgetView.d.ts +48 -0
  108. package/dist/client/workflowStatus.d.ts +5 -3
  109. package/dist/{agent.d.ts → core/agent.d.ts} +83 -6
  110. package/dist/core/agentPerformanceReport.d.ts +40 -0
  111. package/dist/core/agentSquadContract.d.ts +98 -0
  112. package/dist/core/agentState.d.ts +12 -0
  113. package/dist/core/agentTools.d.ts +132 -0
  114. package/dist/core/aiScorecard.d.ts +32 -0
  115. package/dist/core/aiVoiceModel.d.ts +15 -0
  116. package/dist/core/amdDetector.d.ts +25 -0
  117. package/dist/{assistant.d.ts → core/assistant.d.ts} +14 -14
  118. package/dist/core/assistantExperiment.d.ts +42 -0
  119. package/dist/{assistantHealth.d.ts → core/assistantHealth.d.ts} +9 -9
  120. package/dist/{assistantMemory.d.ts → core/assistantMemory.d.ts} +10 -10
  121. package/dist/core/assistantMode.d.ts +22 -0
  122. package/dist/{audioConditioning.d.ts → core/audioConditioning.d.ts} +2 -2
  123. package/dist/core/audit.d.ts +131 -0
  124. package/dist/core/auditDeliveryRoutes.d.ts +85 -0
  125. package/dist/core/auditExport.d.ts +34 -0
  126. package/dist/core/auditRoutes.d.ts +66 -0
  127. package/dist/core/auditSinks.d.ts +151 -0
  128. package/dist/core/backchannel.d.ts +18 -0
  129. package/dist/core/bargeInRoutes.d.ts +56 -0
  130. package/dist/core/bookingFlow.d.ts +43 -0
  131. package/dist/core/browserCallProfiles.d.ts +120 -0
  132. package/dist/core/browserMediaRoutes.d.ts +62 -0
  133. package/dist/core/cachedTTS.d.ts +30 -0
  134. package/dist/core/calendarAdapter.d.ts +47 -0
  135. package/dist/core/calendarSlots.d.ts +35 -0
  136. package/dist/core/callDebugger.d.ts +66 -0
  137. package/dist/core/callDisposition.d.ts +38 -0
  138. package/dist/core/callQuota.d.ts +54 -0
  139. package/dist/core/callScorecard.d.ts +53 -0
  140. package/dist/core/callerCRMLinker.d.ts +29 -0
  141. package/dist/core/callerMemory.d.ts +37 -0
  142. package/dist/core/callingWindow.d.ts +26 -0
  143. package/dist/core/campaign.d.ts +795 -0
  144. package/dist/core/campaignControls.d.ts +37 -0
  145. package/dist/core/campaignDialers.d.ts +111 -0
  146. package/dist/core/campaignTemplate.d.ts +16 -0
  147. package/dist/core/competitiveCoverage.d.ts +141 -0
  148. package/dist/core/conversationSimulator.d.ts +73 -0
  149. package/dist/{correction.d.ts → core/correction.d.ts} +5 -4
  150. package/dist/core/costAccounting.d.ts +76 -0
  151. package/dist/core/costPredictor.d.ts +74 -0
  152. package/dist/core/crmCallLogger.d.ts +37 -0
  153. package/dist/core/crmContract.d.ts +70 -0
  154. package/dist/core/dataControl.d.ts +180 -0
  155. package/dist/core/defineVoiceAssistant.d.ts +68 -0
  156. package/dist/core/deliveryRuntime.d.ts +159 -0
  157. package/dist/core/deliverySinkRoutes.d.ts +117 -0
  158. package/dist/core/demoReadyRoutes.d.ts +98 -0
  159. package/dist/{diagnosticsRoutes.d.ts → core/diagnosticsRoutes.d.ts} +2 -2
  160. package/dist/core/dncRegistry.d.ts +38 -0
  161. package/dist/core/dtmfCollector.d.ts +37 -0
  162. package/dist/{evalRoutes.d.ts → core/evalRoutes.d.ts} +26 -20
  163. package/dist/{fileStore.d.ts → core/fileStore.d.ts} +34 -20
  164. package/dist/core/guardrails.d.ts +128 -0
  165. package/dist/{handoff.d.ts → core/handoff.d.ts} +10 -10
  166. package/dist/{handoffHealth.d.ts → core/handoffHealth.d.ts} +9 -9
  167. package/dist/core/holdAudio.d.ts +23 -0
  168. package/dist/{htmx.d.ts → core/htmx.d.ts} +2 -2
  169. package/dist/core/htmxDashboardRoutes.d.ts +250 -0
  170. package/dist/core/iceServers.d.ts +34 -0
  171. package/dist/core/incidentBundle.d.ts +119 -0
  172. package/dist/core/incidentTimeline.d.ts +260 -0
  173. package/dist/core/ivrPlan.d.ts +40 -0
  174. package/dist/core/latencySlo.d.ts +56 -0
  175. package/dist/core/liveCoach.d.ts +43 -0
  176. package/dist/core/liveLatency.d.ts +78 -0
  177. package/dist/core/liveOps.d.ts +190 -0
  178. package/dist/core/llmJudge.d.ts +45 -0
  179. package/dist/{logger.d.ts → core/logger.d.ts} +1 -2
  180. package/dist/core/mcpToolset.d.ts +58 -0
  181. package/dist/core/mediaPipelineRoutes.d.ts +171 -0
  182. package/dist/core/mediaPipelineSurfaces.d.ts +48 -0
  183. package/dist/{memoryStore.d.ts → core/memoryStore.d.ts} +1 -1
  184. package/dist/core/midCallSummary.d.ts +27 -0
  185. package/dist/{modelAdapters.d.ts → core/modelAdapters.d.ts} +52 -7
  186. package/dist/core/monitor.d.ts +148 -0
  187. package/dist/core/multilingualProof.d.ts +77 -0
  188. package/dist/core/noShowPredictor.d.ts +46 -0
  189. package/dist/core/oauth2TokenSource.d.ts +21 -0
  190. package/dist/core/observabilityExport.d.ts +501 -0
  191. package/dist/core/openaiTTS.d.ts +18 -0
  192. package/dist/core/operationalStatus.d.ts +87 -0
  193. package/dist/core/operationsRecord.d.ts +371 -0
  194. package/dist/{ops.d.ts → core/ops.d.ts} +70 -70
  195. package/dist/core/opsActionAuditRoutes.d.ts +99 -0
  196. package/dist/{opsConsoleRoutes.d.ts → core/opsConsoleRoutes.d.ts} +11 -8
  197. package/dist/{opsPresets.d.ts → core/opsPresets.d.ts} +2 -2
  198. package/dist/core/opsRecovery.d.ts +137 -0
  199. package/dist/{opsRuntime.d.ts → core/opsRuntime.d.ts} +6 -6
  200. package/dist/{opsSinks.d.ts → core/opsSinks.d.ts} +19 -19
  201. package/dist/core/opsStatus.d.ts +76 -0
  202. package/dist/core/opsStatusRoutes.d.ts +33 -0
  203. package/dist/{opsWebhook.d.ts → core/opsWebhook.d.ts} +15 -15
  204. package/dist/core/otelExporter.d.ts +83 -0
  205. package/dist/core/outcomeContract.d.ts +146 -0
  206. package/dist/{outcomeRecipes.d.ts → core/outcomeRecipes.d.ts} +4 -4
  207. package/dist/core/pathway.d.ts +94 -0
  208. package/dist/core/pathwayCompiler.d.ts +31 -0
  209. package/dist/core/pathwayGenerator.d.ts +27 -0
  210. package/dist/core/pathwayRuntime.d.ts +57 -0
  211. package/dist/core/pathwaySlotCollector.d.ts +29 -0
  212. package/dist/core/pathwayVisualizer.d.ts +8 -0
  213. package/dist/core/phoneAgent.d.ts +139 -0
  214. package/dist/core/phoneAgentProductionSmoke.d.ts +115 -0
  215. package/dist/core/phoneProvisioning.d.ts +29 -0
  216. package/dist/core/platformCoverage.d.ts +91 -0
  217. package/dist/{plugin.d.ts → core/plugin.d.ts} +2 -2
  218. package/dist/core/postCallAnalysis.d.ts +98 -0
  219. package/dist/core/postCallSurvey.d.ts +41 -0
  220. package/dist/{postgresStore.d.ts → core/postgresStore.d.ts} +20 -9
  221. package/dist/{presets.d.ts → core/presets.d.ts} +3 -3
  222. package/dist/core/productionReadiness.d.ts +757 -0
  223. package/dist/core/profileSwitchRecommendation.d.ts +350 -0
  224. package/dist/core/promptInjectionGuard.d.ts +30 -0
  225. package/dist/core/proofAssertions.d.ts +32 -0
  226. package/dist/core/proofPack.d.ts +211 -0
  227. package/dist/core/proofRunner.d.ts +79 -0
  228. package/dist/core/proofTrends.d.ts +966 -0
  229. package/dist/{providerAdapters.d.ts → core/providerAdapters.d.ts} +16 -5
  230. package/dist/core/providerCapabilities.d.ts +92 -0
  231. package/dist/core/providerDecisionTraces.d.ts +130 -0
  232. package/dist/{providerHealth.d.ts → core/providerHealth.d.ts} +15 -5
  233. package/dist/core/providerOrchestration.d.ts +109 -0
  234. package/dist/core/providerRouterTraces.d.ts +35 -0
  235. package/dist/core/providerRoutingContract.d.ts +71 -0
  236. package/dist/core/providerSlo.d.ts +142 -0
  237. package/dist/core/providerStackRecommendations.d.ts +188 -0
  238. package/dist/core/qualityDriftDetector.d.ts +44 -0
  239. package/dist/{qualityRoutes.d.ts → core/qualityRoutes.d.ts} +7 -7
  240. package/dist/{queue.d.ts → core/queue.d.ts} +48 -39
  241. package/dist/core/ragTool.d.ts +52 -0
  242. package/dist/core/readinessProfiles.d.ts +45 -0
  243. package/dist/core/realtimeChannel.d.ts +136 -0
  244. package/dist/core/realtimeProviderContracts.d.ts +133 -0
  245. package/dist/core/reconnectContract.d.ts +177 -0
  246. package/dist/core/recordingRedaction.d.ts +47 -0
  247. package/dist/core/recordingStore.d.ts +60 -0
  248. package/dist/core/redaction.d.ts +13 -0
  249. package/dist/core/reminderScheduler.d.ts +43 -0
  250. package/dist/{resilienceRoutes.d.ts → core/resilienceRoutes.d.ts} +45 -5
  251. package/dist/core/retention.d.ts +37 -0
  252. package/dist/core/retryPolicy.d.ts +38 -0
  253. package/dist/core/routeAuth.d.ts +58 -0
  254. package/dist/{routing.d.ts → core/routing.d.ts} +2 -2
  255. package/dist/{runtimeOps.d.ts → core/runtimeOps.d.ts} +3 -3
  256. package/dist/{s3Store.d.ts → core/s3Store.d.ts} +12 -3
  257. package/dist/core/scorecardCalibration.d.ts +31 -0
  258. package/dist/core/scribe.d.ts +50 -0
  259. package/dist/core/semanticTurn.d.ts +27 -0
  260. package/dist/{session.d.ts → core/session.d.ts} +1 -1
  261. package/dist/core/sessionObservability.d.ts +145 -0
  262. package/dist/{sessionReplay.d.ts → core/sessionReplay.d.ts} +31 -19
  263. package/dist/core/sessionSnapshot.d.ts +109 -0
  264. package/dist/core/simulationSuite.d.ts +144 -0
  265. package/dist/core/sloCalibration.d.ts +185 -0
  266. package/dist/{sqliteStore.d.ts → core/sqliteStore.d.ts} +20 -9
  267. package/dist/{store.d.ts → core/store.d.ts} +1 -1
  268. package/dist/core/supervisorPermissions.d.ts +33 -0
  269. package/dist/core/supervisorPresence.d.ts +49 -0
  270. package/dist/core/telephonyMediaRoutes.d.ts +72 -0
  271. package/dist/core/telephonyOutcome.d.ts +269 -0
  272. package/dist/core/toolContract.d.ts +161 -0
  273. package/dist/core/toolRuntime.d.ts +50 -0
  274. package/dist/{trace.d.ts → core/trace.d.ts} +61 -22
  275. package/dist/core/traceDeliveryRoutes.d.ts +86 -0
  276. package/dist/core/traceTimeline.d.ts +97 -0
  277. package/dist/core/transcriptAnnotator.d.ts +41 -0
  278. package/dist/{turnDetection.d.ts → core/turnDetection.d.ts} +1 -1
  279. package/dist/core/turnLatency.d.ts +95 -0
  280. package/dist/core/turnProfiles.d.ts +3 -0
  281. package/dist/core/turnQuality.d.ts +94 -0
  282. package/dist/{types.d.ts → core/types.d.ts} +477 -81
  283. package/dist/core/vapiAdapter.d.ts +160 -0
  284. package/dist/core/variableAnalytics.d.ts +47 -0
  285. package/dist/core/voiceConfiguration.d.ts +8 -0
  286. package/dist/core/voiceMonitoring.d.ts +444 -0
  287. package/dist/core/webhookFanout.d.ts +48 -0
  288. package/dist/core/webhookVerification.d.ts +27 -0
  289. package/dist/core/whisperChannel.d.ts +50 -0
  290. package/dist/{workflowContract.d.ts → core/workflowContract.d.ts} +21 -21
  291. package/dist/core/zeroDataRetention.d.ts +31 -0
  292. package/dist/drizzle/assistantMemory.d.ts +112 -0
  293. package/dist/drizzle/eval.d.ts +61 -0
  294. package/dist/drizzle/handoff.d.ts +62 -0
  295. package/dist/drizzle/incidentBundle.d.ts +61 -0
  296. package/dist/drizzle/index.d.ts +1105 -0
  297. package/dist/drizzle/index.js +3059 -0
  298. package/dist/drizzle/observabilityExport.d.ts +61 -0
  299. package/dist/drizzle/proofTrends.d.ts +126 -0
  300. package/dist/drizzle/runtimeStorage.d.ts +1315 -0
  301. package/dist/drizzle/shared.d.ts +76 -0
  302. package/dist/embed/index.d.ts +38 -0
  303. package/dist/embed/index.js +1710 -0
  304. package/dist/embed/voice-widget.js +10 -0
  305. package/dist/index.d.ts +373 -74
  306. package/dist/index.js +46402 -7516
  307. package/dist/internal/evidence.d.ts +10 -0
  308. package/dist/internal/html.d.ts +6 -0
  309. package/dist/internal/status.d.ts +7 -0
  310. package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
  311. package/dist/react/VoiceCallDebuggerLaunch.d.ts +6 -0
  312. package/dist/react/VoiceCallPlayer.d.ts +11 -0
  313. package/dist/react/VoiceCostDashboard.d.ts +10 -0
  314. package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
  315. package/dist/react/VoiceLiveAgentConsole.d.ts +11 -0
  316. package/dist/react/VoiceLiveCallViewer.d.ts +9 -0
  317. package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
  318. package/dist/react/VoiceOpsStatus.d.ts +1 -1
  319. package/dist/react/VoicePlatformCoverage.d.ts +6 -0
  320. package/dist/react/VoiceProfileComparison.d.ts +6 -0
  321. package/dist/react/VoiceProfileSwitchRecommendation.d.ts +6 -0
  322. package/dist/react/VoiceProofTrends.d.ts +6 -0
  323. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  324. package/dist/react/VoiceProviderContracts.d.ts +6 -0
  325. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  326. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  327. package/dist/react/VoiceReadinessFailures.d.ts +6 -0
  328. package/dist/react/VoiceReconnectProfileEvidence.d.ts +6 -0
  329. package/dist/react/VoiceReplayTimeline.d.ts +6 -0
  330. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  331. package/dist/react/VoiceSessionObservability.d.ts +6 -0
  332. package/dist/react/VoiceSessionSnapshot.d.ts +6 -0
  333. package/dist/react/VoiceTraceTimeline.d.ts +6 -0
  334. package/dist/react/VoiceTurnLatency.d.ts +6 -0
  335. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  336. package/dist/react/VoiceWidget.d.ts +13 -0
  337. package/dist/react/index.d.ts +80 -6
  338. package/dist/react/index.js +12925 -319
  339. package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
  340. package/dist/react/useVoiceCallDebugger.d.ts +8 -0
  341. package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
  342. package/dist/react/useVoiceController.d.ts +4 -1
  343. package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
  344. package/dist/react/useVoiceLiveOps.d.ts +9 -0
  345. package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
  346. package/dist/react/useVoiceOpsStatus.d.ts +8 -0
  347. package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
  348. package/dist/react/useVoiceProfileComparison.d.ts +8 -0
  349. package/dist/react/useVoiceProfileSwitchRecommendation.d.ts +8 -0
  350. package/dist/react/useVoiceProofTrends.d.ts +8 -0
  351. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  352. package/dist/react/useVoiceProviderContracts.d.ts +8 -0
  353. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  354. package/dist/react/useVoiceProviderStatus.d.ts +1 -1
  355. package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
  356. package/dist/react/useVoiceReconnectProfileEvidence.d.ts +8 -0
  357. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  358. package/dist/react/useVoiceSessionObservability.d.ts +8 -0
  359. package/dist/react/useVoiceSessionSnapshot.d.ts +9 -0
  360. package/dist/react/useVoiceStream.d.ts +4 -1
  361. package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
  362. package/dist/react/useVoiceTurnLatency.d.ts +9 -0
  363. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  364. package/dist/react/useVoiceWorkflowStatus.d.ts +1 -1
  365. package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
  366. package/dist/svelte/createVoiceCallDebugger.d.ts +10 -0
  367. package/dist/svelte/createVoiceCallPlayer.d.ts +33 -0
  368. package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
  369. package/dist/svelte/createVoiceCostDashboard.d.ts +13 -0
  370. package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
  371. package/dist/svelte/createVoiceLiveAgentConsole.d.ts +23 -0
  372. package/dist/svelte/createVoiceLiveCallViewer.d.ts +26 -0
  373. package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
  374. package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
  375. package/dist/svelte/createVoiceOpsStatus.d.ts +4 -4
  376. package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
  377. package/dist/svelte/createVoiceProfileComparison.d.ts +7 -0
  378. package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
  379. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  380. package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
  381. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  382. package/dist/svelte/createVoiceProviderStatus.d.ts +5 -3
  383. package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
  384. package/dist/svelte/createVoiceReconnectProfileEvidence.d.ts +7 -0
  385. package/dist/svelte/createVoiceReplayTimeline.d.ts +13 -0
  386. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  387. package/dist/svelte/createVoiceSessionObservability.d.ts +10 -0
  388. package/dist/svelte/createVoiceSessionSnapshot.d.ts +11 -0
  389. package/dist/svelte/createVoiceStream.d.ts +1 -1
  390. package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
  391. package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
  392. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  393. package/dist/svelte/createVoiceWidget.d.ts +19 -0
  394. package/dist/svelte/createVoiceWorkflowStatus.d.ts +2 -2
  395. package/dist/svelte/index.d.ts +37 -6
  396. package/dist/svelte/index.js +7067 -768
  397. package/dist/telephony/contract.d.ts +61 -0
  398. package/dist/telephony/matrix.d.ts +97 -0
  399. package/dist/telephony/plivo.d.ts +303 -0
  400. package/dist/telephony/response.d.ts +1 -1
  401. package/dist/telephony/security.d.ts +182 -0
  402. package/dist/telephony/telnyx.d.ts +291 -0
  403. package/dist/telephony/twilio.d.ts +196 -15
  404. package/dist/testing/accuracy.d.ts +1 -1
  405. package/dist/testing/benchmark.d.ts +15 -15
  406. package/dist/testing/corrected.d.ts +9 -9
  407. package/dist/testing/duplex.d.ts +5 -5
  408. package/dist/testing/fixtures.d.ts +4 -4
  409. package/dist/testing/index.d.ts +13 -13
  410. package/dist/testing/index.js +6327 -899
  411. package/dist/testing/ioProviderSimulator.d.ts +5 -5
  412. package/dist/testing/providerSimulator.d.ts +5 -5
  413. package/dist/testing/review.d.ts +8 -8
  414. package/dist/testing/sessionBenchmark.d.ts +13 -13
  415. package/dist/testing/stt.d.ts +3 -3
  416. package/dist/testing/telephony.d.ts +27 -2
  417. package/dist/testing/tts.d.ts +2 -2
  418. package/dist/vue/VoiceCallDebuggerLaunch.d.ts +72 -0
  419. package/dist/vue/VoiceCallPlayer.d.ts +40 -0
  420. package/dist/vue/VoiceCostDashboard.d.ts +57 -0
  421. package/dist/vue/VoiceDeliveryRuntime.d.ts +34 -0
  422. package/dist/vue/VoiceLiveAgentConsole.d.ts +50 -0
  423. package/dist/vue/VoiceLiveCallViewer.d.ts +35 -0
  424. package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
  425. package/dist/vue/VoiceOpsStatus.d.ts +4 -0
  426. package/dist/vue/VoicePlatformCoverage.d.ts +27 -0
  427. package/dist/vue/VoiceProofTrends.d.ts +25 -0
  428. package/dist/vue/VoiceProviderCapabilities.d.ts +55 -0
  429. package/dist/vue/VoiceProviderContracts.d.ts +25 -0
  430. package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
  431. package/dist/vue/VoiceProviderStatus.d.ts +55 -0
  432. package/dist/vue/VoiceReadinessFailures.d.ts +25 -0
  433. package/dist/vue/VoiceReconnectProfileEvidence.d.ts +25 -0
  434. package/dist/vue/VoiceReplayTimeline.d.ts +17 -0
  435. package/dist/vue/VoiceRoutingStatus.d.ts +55 -0
  436. package/dist/vue/VoiceSessionObservability.d.ts +27 -0
  437. package/dist/vue/VoiceSessionSnapshot.d.ts +72 -0
  438. package/dist/vue/VoiceTurnLatency.d.ts +73 -0
  439. package/dist/vue/VoiceTurnQuality.d.ts +55 -0
  440. package/dist/vue/VoiceWidget.d.ts +77 -0
  441. package/dist/vue/index.d.ts +49 -6
  442. package/dist/vue/index.js +12224 -413
  443. package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
  444. package/dist/vue/useVoiceCallDebugger.d.ts +10 -0
  445. package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
  446. package/dist/vue/useVoiceController.d.ts +9 -7
  447. package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
  448. package/dist/vue/useVoiceLiveOps.d.ts +9 -0
  449. package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
  450. package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
  451. package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
  452. package/dist/vue/useVoiceProfileComparison.d.ts +9 -0
  453. package/dist/vue/useVoiceProofTrends.d.ts +9 -0
  454. package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
  455. package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
  456. package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
  457. package/dist/vue/useVoiceProviderStatus.d.ts +3 -3
  458. package/dist/vue/useVoiceReadinessFailures.d.ts +959 -0
  459. package/dist/vue/useVoiceReconnectProfileEvidence.d.ts +9 -0
  460. package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
  461. package/dist/vue/useVoiceSessionObservability.d.ts +9 -0
  462. package/dist/vue/useVoiceSessionSnapshot.d.ts +10 -0
  463. package/dist/vue/useVoiceStream.d.ts +9 -6
  464. package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
  465. package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
  466. package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
  467. package/dist/vue/useVoiceWorkflowStatus.d.ts +3 -3
  468. package/package.json +51 -152
  469. package/dist/angular/voice-app-kit-status.service.d.ts +0 -12
  470. package/dist/angular/voice-ops-status.component.d.ts +0 -15
  471. package/dist/appKit.d.ts +0 -92
  472. package/dist/client/appKitStatus.d.ts +0 -19
  473. package/dist/react/useVoiceAppKitStatus.d.ts +0 -8
  474. package/dist/svelte/createVoiceAppKitStatus.d.ts +0 -8
  475. package/dist/turnProfiles.d.ts +0 -6
  476. package/dist/vue/useVoiceAppKitStatus.d.ts +0 -9
  477. package/fixtures/README.md +0 -57
  478. package/fixtures/manifest.json +0 -199
  479. package/fixtures/pcm/dialogue-three-clean.pcm +0 -0
  480. package/fixtures/pcm/dialogue-three-mixed.pcm +0 -0
  481. package/fixtures/pcm/dialogue-two-clean.pcm +0 -0
  482. package/fixtures/pcm/dialogue-two-noisy.pcm +0 -0
  483. package/fixtures/pcm/multiturn-three-mixed.pcm +0 -0
  484. package/fixtures/pcm/multiturn-two-clean.pcm +0 -0
  485. package/fixtures/pcm/quietly-alone-clean.pcm +0 -0
  486. package/fixtures/pcm/rainstorms-noisy.pcm +0 -0
  487. package/fixtures/pcm/stella-bulgaria-bulgarian20.pcm +0 -0
  488. package/fixtures/pcm/stella-ghana-english507.pcm +0 -0
  489. package/fixtures/pcm/stella-india-english37.pcm +0 -0
  490. package/fixtures/pcm/stella-jamaica-jamaican-creole-english1.pcm +0 -0
  491. package/fixtures/pcm/stella-liberia-liberian-pidgin-english2.pcm +0 -0
  492. package/fixtures/pcm/stella-pakistan-english519.pcm +0 -0
  493. package/fixtures/pcm/stella-sierra-leone-krio5.pcm +0 -0
  494. package/fixtures/pcm/stella-singapore-english655.pcm +0 -0
  495. package/fixtures/pcm/traveled-back-route-clean.pcm +0 -0
@@ -1,24 +1,48 @@
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 { MediaWebRTCStatsCollector, MediaWebRTCStatsReport, MediaWebRTCStatsReportInput, MediaWebRTCStreamContinuityInput, MediaWebRTCStreamContinuityReport } from "@absolutejs/media";
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";
6
+ import type { VoiceLiveOpsControlState } from "./liveOps";
7
+ import type { VoiceAuditActor, VoiceAuditEventStore } from "./audit";
8
+ import type { VoiceProfileSwitchGuardDecision, VoiceProfileSwitchGuardMode, VoiceProfileSwitchObservedSignals } from "./profileSwitchRecommendation";
9
+ import type { VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryReport } from "./proofTrends";
6
10
  export type AudioFormat = {
7
- container: 'raw';
8
- encoding: 'alaw' | 'mulaw' | 'pcm_s16le';
11
+ container: "raw";
12
+ encoding: "alaw" | "mulaw" | "pcm_s16le";
9
13
  sampleRateHz: number;
10
14
  channels: 1 | 2;
11
15
  };
12
16
  export type AudioChunk = ArrayBuffer | ArrayBufferView;
17
+ /**
18
+ * Structural contract for an inbound noise suppressor applied before STT.
19
+ * Matches `@absolutejs/media`'s `NoiseSuppressor`, so any media suppressor
20
+ * (`createFFmpegNoiseSuppressor`, `createEnergyGateNoiseSuppressor`, a Krisp
21
+ * adapter, etc.) satisfies it without a hard import.
22
+ */
23
+ export type VoiceNoiseSuppressor = {
24
+ readonly kind: string;
25
+ process: (input: {
26
+ format: AudioFormat;
27
+ pcm: ArrayBuffer | ArrayBufferView;
28
+ }) => Promise<{
29
+ bytes: Uint8Array;
30
+ format: AudioFormat;
31
+ }> | {
32
+ bytes: Uint8Array;
33
+ format: AudioFormat;
34
+ };
35
+ close?: () => Promise<void> | void;
36
+ };
13
37
  export type VoiceLanguageStrategy = {
14
- mode: 'auto-detect';
38
+ mode: "auto-detect";
15
39
  allowedLanguages?: string[];
16
40
  } | {
17
- mode: 'fixed';
41
+ mode: "fixed";
18
42
  primaryLanguage: string;
19
43
  secondaryLanguages?: string[];
20
44
  } | {
21
- mode: 'allow-switching';
45
+ mode: "allow-switching";
22
46
  primaryLanguage?: string;
23
47
  secondaryLanguages: string[];
24
48
  };
@@ -28,7 +52,7 @@ export type VoicePhraseHint = {
28
52
  boost?: number;
29
53
  metadata?: Record<string, unknown>;
30
54
  };
31
- export type VoiceCorrectionRiskTier = 'safe' | 'balanced' | 'risky';
55
+ export type VoiceCorrectionRiskTier = "safe" | "balanced" | "risky";
32
56
  export type VoiceDomainTerm = {
33
57
  text: string;
34
58
  aliases?: string[];
@@ -44,12 +68,18 @@ export type VoiceLexiconEntry = {
44
68
  metadata?: Record<string, unknown>;
45
69
  pronunciation?: string;
46
70
  };
71
+ export type VoiceTranscriptSentiment = {
72
+ label: "negative" | "neutral" | "positive" | (string & {});
73
+ metadata?: Record<string, unknown>;
74
+ score?: number;
75
+ };
47
76
  export type Transcript = {
48
77
  id: string;
49
78
  text: string;
50
79
  isFinal: boolean;
51
80
  confidence?: number;
52
81
  language?: string;
82
+ sentiment?: VoiceTranscriptSentiment;
53
83
  speaker?: string | number;
54
84
  startedAtMs?: number;
55
85
  endedAtMs?: number;
@@ -65,7 +95,7 @@ export type VoiceTranscriptQuality = {
65
95
  fallback?: VoiceFallbackDiagnostics;
66
96
  partialTranscriptCount: number;
67
97
  selectedTranscriptCount: number;
68
- source: 'fallback' | 'primary';
98
+ source: "fallback" | "primary";
69
99
  };
70
100
  export type VoiceTurnCorrectionDiagnostics = {
71
101
  attempted: boolean;
@@ -83,7 +113,7 @@ export type VoiceTurnCostEstimate = {
83
113
  primaryAudioMs: number;
84
114
  totalBillableAudioMs: number;
85
115
  };
86
- export type VoiceFallbackSelectionReason = 'fallback-empty' | 'primary-empty' | 'word-count-margin' | 'confidence-margin' | 'word-count-tiebreak' | 'kept-primary';
116
+ export type VoiceFallbackSelectionReason = "fallback-empty" | "primary-empty" | "word-count-margin" | "confidence-margin" | "word-count-tiebreak" | "kept-primary";
87
117
  export type VoiceFallbackDiagnostics = {
88
118
  attempted: boolean;
89
119
  fallbackConfidence?: number;
@@ -94,31 +124,31 @@ export type VoiceFallbackDiagnostics = {
94
124
  primaryWordCount: number;
95
125
  selected: boolean;
96
126
  selectionReason: VoiceFallbackSelectionReason;
97
- trigger: 'empty-turn' | 'low-confidence' | 'empty-or-low-confidence' | 'always';
127
+ trigger: "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
98
128
  };
99
129
  export type VoicePartialEvent = {
100
- type: 'partial';
130
+ type: "partial";
101
131
  transcript: Transcript;
102
132
  receivedAt: number;
103
133
  };
104
134
  export type VoiceFinalEvent = {
105
- type: 'final';
135
+ type: "final";
106
136
  transcript: Transcript;
107
137
  receivedAt: number;
108
138
  };
109
139
  export type VoiceEndOfTurnEvent = {
110
- type: 'endOfTurn';
111
- reason: 'vendor' | 'silence' | 'manual';
140
+ type: "endOfTurn";
141
+ reason: "vendor" | "silence" | "manual";
112
142
  receivedAt: number;
113
143
  };
114
144
  export type VoiceErrorEvent = {
115
- type: 'error';
145
+ type: "error";
116
146
  error: Error;
117
147
  recoverable: boolean;
118
148
  code?: string;
119
149
  };
120
150
  export type VoiceCloseEvent = {
121
- type: 'close';
151
+ type: "close";
122
152
  code?: number;
123
153
  reason?: string;
124
154
  recoverable?: boolean;
@@ -144,11 +174,11 @@ export type STTAdapterOpenOptions = {
144
174
  signal?: AbortSignal;
145
175
  };
146
176
  export type STTAdapter<TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions> = {
147
- kind: 'stt';
177
+ kind: "stt";
148
178
  open: (options: TOptions) => Promise<STTAdapterSession> | STTAdapterSession;
149
179
  };
150
180
  export type TTSAudioEvent = {
151
- type: 'audio';
181
+ type: "audio";
152
182
  chunk: AudioChunk;
153
183
  format: AudioFormat;
154
184
  receivedAt: number;
@@ -161,15 +191,26 @@ export type TTSSessionEventMap = {
161
191
  export type TTSAdapterSession = {
162
192
  on: <K extends keyof TTSSessionEventMap>(event: K, handler: (payload: TTSSessionEventMap[K]) => void | Promise<void>) => () => void;
163
193
  send: (text: string) => Promise<void>;
194
+ cancel?: (reason?: string) => Promise<void>;
164
195
  close: (reason?: string) => Promise<void>;
165
196
  };
197
+ export declare const ttsAdapterSessionCanCancel: (session: TTSAdapterSession) => session is TTSAdapterSession & {
198
+ cancel: (reason?: string) => Promise<void>;
199
+ };
200
+ export type VoiceTTSProsody = {
201
+ emphasis?: number;
202
+ pitch?: number;
203
+ speed?: number;
204
+ style?: string;
205
+ };
166
206
  export type TTSAdapterOpenOptions = {
167
207
  sessionId: string;
168
208
  lexicon?: VoiceLexiconEntry[];
209
+ prosody?: VoiceTTSProsody;
169
210
  signal?: AbortSignal;
170
211
  };
171
212
  export type TTSAdapter<TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions> = {
172
- kind: 'tts';
213
+ kind: "tts";
173
214
  open: (options: TOptions) => Promise<TTSAdapterSession> | TTSAdapterSession;
174
215
  };
175
216
  export type RealtimeSessionEventMap = STTSessionEventMap & {
@@ -185,20 +226,40 @@ export type RealtimeAdapterOpenOptions = {
185
226
  format: AudioFormat;
186
227
  languageStrategy?: VoiceLanguageStrategy;
187
228
  lexicon?: VoiceLexiconEntry[];
229
+ modalities?: ReadonlyArray<"audio" | "text">;
188
230
  phraseHints?: VoicePhraseHint[];
231
+ promptCacheKey?: string;
232
+ semanticVAD?: import("./assistantMode").VoiceSemanticVADConfig;
189
233
  signal?: AbortSignal;
190
234
  };
191
235
  export type RealtimeAdapter<TOptions extends RealtimeAdapterOpenOptions = RealtimeAdapterOpenOptions> = {
192
- kind: 'realtime';
236
+ kind: "realtime";
193
237
  open: (options: TOptions) => Promise<RealtimeAdapterSession> | RealtimeAdapterSession;
194
238
  };
195
- export type VoiceSessionStatus = 'active' | 'reconnecting' | 'completed' | 'failed';
239
+ export type VoiceSessionStatus = "active" | "reconnecting" | "completed" | "failed";
240
+ export type VoiceReconnectClientStatus = "idle" | "reconnecting" | "resumed" | "exhausted";
241
+ export type VoiceReconnectClientState = {
242
+ attempts: number;
243
+ lastDisconnectAt?: number;
244
+ lastResumedAt?: number;
245
+ maxAttempts: number;
246
+ nextAttemptAt?: number;
247
+ status: VoiceReconnectClientStatus;
248
+ };
249
+ export type VoiceTurnCitation = {
250
+ chunkId: string;
251
+ score: number;
252
+ source?: string;
253
+ title?: string;
254
+ };
196
255
  export type VoiceTurnRecord<TResult = unknown> = {
197
256
  id: string;
198
257
  text: string;
199
258
  quality?: VoiceTranscriptQuality;
200
259
  transcripts: Transcript[];
201
260
  assistantText?: string;
261
+ attachments?: import("./agent").VoiceAgentMessageAttachment[];
262
+ citations?: VoiceTurnCitation[];
202
263
  committedAt: number;
203
264
  result?: TResult;
204
265
  };
@@ -253,10 +314,10 @@ export type VoiceSessionSummary = {
253
314
  status: VoiceSessionStatus;
254
315
  turnCount: number;
255
316
  };
256
- export type VoiceCallDisposition = 'completed' | 'transferred' | 'escalated' | 'voicemail' | 'no-answer' | 'failed' | 'closed';
317
+ export type VoiceCallDisposition = "completed" | "transferred" | "escalated" | "voicemail" | "no-answer" | "failed" | "silence-timeout" | "closed";
257
318
  export type VoiceCallLifecycleEvent = {
258
319
  at: number;
259
- type: 'start' | 'end' | 'transfer' | 'escalation' | 'voicemail' | 'no-answer';
320
+ type: "start" | "end" | "transfer" | "escalation" | "voicemail" | "no-answer";
260
321
  disposition?: VoiceCallDisposition;
261
322
  metadata?: Record<string, unknown>;
262
323
  reason?: string;
@@ -269,8 +330,8 @@ export type VoiceCallLifecycleState = {
269
330
  lastEventAt: number;
270
331
  startedAt: number;
271
332
  };
272
- export type VoiceHandoffAction = 'escalate' | 'no-answer' | 'transfer' | 'voicemail';
273
- export type VoiceHandoffStatus = 'delivered' | 'failed' | 'skipped';
333
+ export type VoiceHandoffAction = "escalate" | "no-answer" | "transfer" | "voicemail";
334
+ export type VoiceHandoffStatus = "delivered" | "failed" | "skipped";
274
335
  export type VoiceHandoffResult = {
275
336
  deliveredAt?: number;
276
337
  deliveredTo?: string;
@@ -278,7 +339,7 @@ export type VoiceHandoffResult = {
278
339
  metadata?: Record<string, unknown>;
279
340
  status: VoiceHandoffStatus;
280
341
  };
281
- export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus | 'pending';
342
+ export type VoiceHandoffDeliveryQueueStatus = VoiceHandoffStatus | "pending";
282
343
  export type StoredVoiceHandoffDelivery<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
283
344
  action: VoiceHandoffAction;
284
345
  context: TContext;
@@ -326,9 +387,15 @@ export type VoiceHandoffConfig<TContext = unknown, TSession extends VoiceSession
326
387
  adapters: VoiceHandoffAdapter<TContext, TSession, TResult>[];
327
388
  deliveryQueue?: VoiceHandoffDeliveryStore<StoredVoiceHandoffDelivery<TContext, TSession, TResult>>;
328
389
  enqueueOnly?: boolean;
329
- failMode?: 'record' | 'throw';
390
+ failMode?: "record" | "throw";
391
+ };
392
+ export type VoiceSessionStore<TSession extends VoiceSessionRecord = VoiceSessionRecord> = {
393
+ get: (id: string) => Promise<TSession | undefined>;
394
+ getOrCreate: (id: string) => Promise<TSession>;
395
+ set: (id: string, value: TSession) => Promise<void>;
396
+ list: () => Promise<VoiceSessionSummary[]>;
397
+ remove: (id: string) => Promise<void>;
330
398
  };
331
- export type VoiceSessionStore<TSession extends VoiceSessionRecord = VoiceSessionRecord> = SessionStore<TSession, VoiceSessionSummary>;
332
399
  export type VoiceLogger = {
333
400
  debug?: (message: string, meta?: Record<string, unknown>) => void;
334
401
  info?: (message: string, meta?: Record<string, unknown>) => void;
@@ -336,15 +403,15 @@ export type VoiceLogger = {
336
403
  error?: (message: string, meta?: Record<string, unknown>) => void;
337
404
  };
338
405
  export type VoiceReconnectConfig = {
339
- strategy?: 'resume-last-turn' | 'restart' | 'fail';
406
+ strategy?: "resume-last-turn" | "restart" | "fail";
340
407
  timeout?: number;
341
408
  maxAttempts?: number;
342
409
  };
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';
410
+ export type VoiceRuntimePreset = "default" | "chat" | "guided-intake" | "dictation" | "noisy-room" | "pstn-balanced" | "pstn-fast" | "reliability";
411
+ export type VoiceSTTLifecycle = "continuous" | "turn-scoped";
412
+ export type VoiceTurnProfile = "fast" | "balanced" | "long-form";
413
+ export type VoiceTurnQualityProfile = "general" | "accent-heavy" | "noisy-room" | "short-command";
414
+ export type VoiceTurnFallbackTrigger = "empty-turn" | "low-confidence" | "empty-or-low-confidence" | "always";
348
415
  export type VoiceSTTFallbackConfig = {
349
416
  adapter: STTAdapter;
350
417
  trigger?: VoiceTurnFallbackTrigger;
@@ -396,12 +463,34 @@ export type VoiceResolvedAudioConditioningConfig = {
396
463
  export type VoiceSocket = {
397
464
  send: (data: string | Uint8Array | ArrayBuffer) => void | Promise<void>;
398
465
  close: (code?: number, reason?: string) => void | Promise<void>;
466
+ /**
467
+ * Discard any audio already buffered downstream (e.g. a telephony carrier's
468
+ * outbound media buffer). Called on barge-in so the caller stops hearing the
469
+ * assistant immediately, even when frames have already been flushed to the
470
+ * transport. Optional: transports without a flush concept omit it.
471
+ */
472
+ clear?: () => void | Promise<void>;
473
+ };
474
+ export type VoiceMonitorRuntimeSessionBinding = {
475
+ deregister: (reason?: string) => void;
476
+ emitAudio: (chunk: Uint8Array | ArrayBuffer, options?: {
477
+ source?: "assistant" | "caller" | (string & {});
478
+ }) => void;
479
+ };
480
+ export type VoiceMonitorRuntimeRegisterInput = {
481
+ handle: VoiceSessionHandle<unknown, VoiceSessionRecord, unknown>;
482
+ metadata?: Record<string, unknown>;
483
+ sessionId: string;
484
+ };
485
+ export type VoiceMonitorRuntimeBinding = {
486
+ registerSession: (input: VoiceMonitorRuntimeRegisterInput) => VoiceMonitorRuntimeSessionBinding;
399
487
  };
400
488
  export type VoiceSessionHandle<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
401
489
  id: string;
402
490
  connect: (socket: VoiceSocket) => Promise<void>;
403
491
  receiveAudio: (audio: AudioChunk) => Promise<void>;
404
- commitTurn: (reason?: VoiceEndOfTurnEvent['reason']) => Promise<void>;
492
+ attachUserMedia: (attachment: import("./agent").VoiceAgentMessageAttachment) => Promise<void>;
493
+ commitTurn: (reason?: VoiceEndOfTurnEvent["reason"]) => Promise<void>;
405
494
  disconnect: (event?: VoiceCloseEvent) => Promise<void>;
406
495
  complete: (result?: TResult) => Promise<void>;
407
496
  escalate: (input: {
@@ -423,18 +512,33 @@ export type VoiceSessionHandle<TContext = unknown, TSession extends VoiceSession
423
512
  reason?: string;
424
513
  result?: TResult;
425
514
  target: string;
515
+ transferMode?: "cold" | "warm";
426
516
  }) => Promise<void>;
427
517
  close: (reason?: string) => Promise<void>;
428
518
  snapshot: () => Promise<TSession>;
519
+ /**
520
+ * Mutate the live turn-detection config for this session — useful when a
521
+ * tool call wants to dial silenceMs up ("the caller asked for more time")
522
+ * or down. The change takes effect on the NEXT silence-timer schedule, so
523
+ * an in-flight commit isn't cancelled. Returns the merged config so the
524
+ * caller can confirm.
525
+ */
526
+ setTurnDetection: (patch: Partial<VoiceTurnDetectionConfig>) => Promise<{
527
+ silenceMs: number;
528
+ speechThreshold: number;
529
+ transcriptStabilityMs: number;
530
+ }>;
429
531
  };
430
532
  export type VoiceRouteResult<TResult = unknown> = {
431
533
  complete?: boolean;
432
534
  result?: TResult;
433
535
  assistantText?: string;
536
+ citations?: ReadonlyArray<VoiceTurnCitation>;
434
537
  transfer?: {
435
538
  metadata?: Record<string, unknown>;
436
539
  reason?: string;
437
540
  target: string;
541
+ transferMode?: "cold" | "warm";
438
542
  };
439
543
  escalate?: {
440
544
  metadata?: Record<string, unknown>;
@@ -475,6 +579,11 @@ export type VoiceLexiconResolver<TContext = unknown> = (input: {
475
579
  }) => Promise<VoiceLexiconEntry[] | void> | VoiceLexiconEntry[] | void;
476
580
  export type VoiceOnTurnObjectHandler<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = (input: {
477
581
  context: TContext;
582
+ liveOps?: {
583
+ control: VoiceLiveOpsControlState;
584
+ injectedInstruction?: string;
585
+ };
586
+ onTextDelta?: (delta: string) => void;
478
587
  session: TSession;
479
588
  turn: VoiceTurnRecord;
480
589
  api: VoiceSessionHandle<TContext, TSession, TResult>;
@@ -559,7 +668,7 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
559
668
  disposition: VoiceCallDisposition;
560
669
  review: StoredVoiceCallReviewArtifact;
561
670
  session: TSession;
562
- }) => Promise<Omit<VoiceOpsTask, 'id'> | VoiceOpsTask | StoredVoiceOpsTask | null | void> | Omit<VoiceOpsTask, 'id'> | VoiceOpsTask | StoredVoiceOpsTask | null | void;
671
+ }) => Promise<Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void> | Omit<VoiceOpsTask, "id"> | VoiceOpsTask | StoredVoiceOpsTask | null | void;
563
672
  resolveTaskPolicy?: (input: {
564
673
  api: VoiceSessionHandle<TContext, TSession, TResult>;
565
674
  context: TContext;
@@ -596,7 +705,37 @@ export type VoiceRuntimeOpsConfig<TContext = unknown, TSession extends VoiceSess
596
705
  tasks?: VoiceOpsTaskStore;
597
706
  webhook?: VoiceIntegrationWebhookConfig;
598
707
  };
599
- export type VoiceNormalizedRouteConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = Omit<VoiceRouteConfig<TContext, TSession, TResult>, 'onTurn'> & {
708
+ export type VoiceLiveOpsRuntimeConfig = {
709
+ getControl: (sessionId: string) => Promise<VoiceLiveOpsControlState | null | undefined> | VoiceLiveOpsControlState | null | undefined;
710
+ };
711
+ export type VoiceProfileSwitchGuardResolverInput<TContext = unknown> = {
712
+ context: TContext;
713
+ scenarioId?: string;
714
+ sessionId: string;
715
+ };
716
+ export type VoicePluginProfileSwitchGuardConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
717
+ actor?: VoiceAuditActor;
718
+ allowedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
719
+ audit?: VoiceAuditEventStore;
720
+ blockedProfileIds?: string[] | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string[] | undefined> | string[] | undefined);
721
+ currentProfileId?: string | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<string | undefined> | string | undefined);
722
+ defaultProfileId?: string;
723
+ defaults: VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport> | VoiceRealCallProfileDefaultsReport | VoiceRealCallProfileHistoryReport);
724
+ metadata?: Record<string, unknown> | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<Record<string, unknown> | undefined> | Record<string, unknown> | undefined);
725
+ minConfidence?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
726
+ maxAutoSwitchesPerSession?: number | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<number | undefined> | number | undefined);
727
+ mode?: VoiceProfileSwitchGuardMode | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchGuardMode | undefined> | VoiceProfileSwitchGuardMode | undefined);
728
+ observed?: VoiceProfileSwitchObservedSignals | ((input: VoiceProfileSwitchGuardResolverInput<TContext>) => Promise<VoiceProfileSwitchObservedSignals | undefined> | VoiceProfileSwitchObservedSignals | undefined);
729
+ onDecision?: (input: {
730
+ context: TContext;
731
+ decision: VoiceProfileSwitchGuardDecision;
732
+ scenarioId?: string;
733
+ sessionId: string;
734
+ }) => Promise<void> | void;
735
+ sessionMetadataKey?: string | false;
736
+ trace?: false | VoiceTraceEventStore;
737
+ };
738
+ export type VoiceNormalizedRouteConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = Omit<VoiceRouteConfig<TContext, TSession, TResult>, "onTurn"> & {
600
739
  onTurn: VoiceOnTurnObjectHandler<TContext, TSession, TResult>;
601
740
  };
602
741
  export type VoiceScenario = {
@@ -609,131 +748,326 @@ export type VoiceExpectedSpeakerTurn = {
609
748
  speaker: string;
610
749
  text: string;
611
750
  };
751
+ /**
752
+ * Configures one of the plugin's optional route surfaces. Pass that surface's
753
+ * options object to mount it, `false` (or omit) to leave it off. Surfaces whose
754
+ * options are entirely optional may also be enabled with `true` for defaults.
755
+ */
756
+ export type VoiceSurfaceConfig<O> = false | O | (Record<string, never> extends O ? true : never);
612
757
  export type VoicePluginConfig<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
613
758
  costTelemetry?: VoiceCostTelemetryConfig<TContext, TSession, TResult>;
614
759
  path: string;
760
+ greeting?: string | ((input: {
761
+ session: TSession;
762
+ }) => string | Promise<string>);
615
763
  languageStrategy?: VoiceLanguageStrategy;
616
764
  lexicon?: VoiceLexiconEntry[] | VoiceLexiconResolver<TContext>;
617
765
  phraseHints?: VoicePhraseHint[] | VoicePhraseHintResolver<TContext>;
618
766
  preset?: VoiceRuntimePreset;
619
- stt: STTAdapter;
767
+ stt?: STTAdapter;
620
768
  sttFallback?: VoiceSTTFallbackConfig;
621
769
  sttLifecycle?: VoiceSTTLifecycle;
770
+ realtime?: RealtimeAdapter;
771
+ realtimeInputFormat?: AudioFormat;
622
772
  tts?: TTSAdapter;
623
773
  session: VoiceSessionStore<NoInfer<TSession>>;
624
774
  reconnect?: VoiceReconnectConfig;
625
775
  turnDetection?: VoiceTurnDetectionConfig;
626
776
  audioConditioning?: VoiceAudioConditioningConfig;
777
+ noiseSuppressor?: VoiceNoiseSuppressor;
778
+ noiseSuppressorFormat?: AudioFormat;
627
779
  logger?: VoiceLogger;
628
780
  htmx?: boolean | VoiceHTMXConfig<TSession, NoInfer<TResult>>;
629
781
  handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
630
782
  ops?: VoiceRuntimeOpsConfig<TContext, TSession, TResult>;
783
+ liveOps?: VoiceLiveOpsRuntimeConfig;
784
+ monitor?: VoiceMonitorRuntimeBinding;
785
+ profileSwitchGuard?: VoicePluginProfileSwitchGuardConfig<TContext, TSession, TResult>;
631
786
  trace?: VoiceTraceEventStore;
787
+ assistantHealth?: VoiceSurfaceConfig<import("./assistantHealth").VoiceAssistantHealthRoutesOptions>;
788
+ auditDelivery?: VoiceSurfaceConfig<import("./auditDeliveryRoutes").VoiceAuditDeliveryRoutesOptions>;
789
+ auditTrail?: VoiceSurfaceConfig<import("./auditRoutes").VoiceAuditTrailRoutesOptions>;
790
+ bargeIn?: VoiceSurfaceConfig<import("./bargeInRoutes").VoiceBargeInRoutesOptions>;
791
+ browserCallProfile?: VoiceSurfaceConfig<import("./browserCallProfiles").VoiceBrowserCallProfileRoutesOptions>;
792
+ browserMedia?: VoiceSurfaceConfig<import("./browserMediaRoutes").VoiceBrowserMediaRoutesOptions>;
793
+ callDebugger?: VoiceSurfaceConfig<import("./callDebugger").VoiceCallDebuggerRoutesOptions>;
794
+ campaign?: VoiceSurfaceConfig<import("./campaign").VoiceCampaignRoutesOptions>;
795
+ competitiveCoverage?: VoiceSurfaceConfig<import("./competitiveCoverage").VoiceCompetitiveCoverageRoutesOptions>;
796
+ dataControl?: VoiceSurfaceConfig<import("./dataControl").VoiceDataControlRoutesOptions>;
797
+ deliveryRuntime?: VoiceSurfaceConfig<import("./deliveryRuntime").VoiceDeliveryRuntimeRoutesOptions>;
798
+ deliverySink?: VoiceSurfaceConfig<import("./deliverySinkRoutes").VoiceDeliverySinkRoutesOptions>;
799
+ demoReady?: VoiceSurfaceConfig<import("./demoReadyRoutes").VoiceDemoReadyRoutesOptions>;
800
+ diagnostics?: VoiceSurfaceConfig<import("./diagnosticsRoutes").VoiceDiagnosticsRoutesOptions>;
801
+ eval?: VoiceSurfaceConfig<import("./evalRoutes").VoiceEvalRoutesOptions>;
802
+ guardrail?: VoiceSurfaceConfig<import("./guardrails").VoiceGuardrailRoutesOptions>;
803
+ handoffHealth?: VoiceSurfaceConfig<import("./handoffHealth").VoiceHandoffHealthRoutesOptions>;
804
+ htmxDashboard?: VoiceSurfaceConfig<import("./htmxDashboardRoutes").VoiceHTMXDashboardRoutesOptions>;
805
+ incidentBundle?: VoiceSurfaceConfig<import("./incidentBundle").VoiceIncidentBundleRoutesOptions>;
806
+ incidentTimeline?: VoiceSurfaceConfig<import("./incidentTimeline").VoiceIncidentTimelineRoutesOptions>;
807
+ liveLatency?: VoiceSurfaceConfig<import("./liveLatency").VoiceLiveLatencyRoutesOptions>;
808
+ liveMonitor?: VoiceSurfaceConfig<import("./monitor").VoiceLiveMonitorRoutesOptions>;
809
+ liveOpsConsole?: VoiceSurfaceConfig<import("./liveOps").VoiceLiveOpsRoutesOptions>;
810
+ mediaPipeline?: VoiceSurfaceConfig<import("./mediaPipelineRoutes").VoiceMediaPipelineRoutesOptions>;
811
+ monitorReport?: VoiceSurfaceConfig<import("./voiceMonitoring").VoiceMonitorRoutesOptions>;
812
+ monitorRunner?: VoiceSurfaceConfig<import("./voiceMonitoring").VoiceMonitorRunnerRoutesOptions>;
813
+ observabilityExport?: VoiceSurfaceConfig<import("./observabilityExport").VoiceObservabilityExportRoutesOptions>;
814
+ observabilityExportReplay?: VoiceSurfaceConfig<import("./observabilityExport").VoiceObservabilityExportReplayRoutesOptions>;
815
+ operationalStatus?: VoiceSurfaceConfig<import("./operationalStatus").VoiceOperationalStatusRoutesOptions>;
816
+ operationsRecord?: VoiceSurfaceConfig<import("./operationsRecord").VoiceOperationsRecordRoutesOptions>;
817
+ opsActionAudit?: VoiceSurfaceConfig<import("./opsActionAuditRoutes").VoiceOpsActionAuditRoutesOptions>;
818
+ opsConsole?: VoiceSurfaceConfig<import("./opsConsoleRoutes").VoiceOpsConsoleRoutesOptions>;
819
+ opsRecovery?: VoiceSurfaceConfig<import("./opsRecovery").VoiceOpsRecoveryRoutesOptions>;
820
+ opsStatus?: VoiceSurfaceConfig<import("./opsStatus").VoiceOpsStatusRoutesOptions>;
821
+ opsWebhookReceiver?: VoiceSurfaceConfig<import("./opsWebhook").VoiceOpsWebhookReceiverRoutesOptions>;
822
+ outcomeContract?: VoiceSurfaceConfig<import("./outcomeContract").VoiceOutcomeContractRoutesOptions>;
823
+ phoneAgentProductionSmoke?: VoiceSurfaceConfig<import("./phoneAgentProductionSmoke").VoicePhoneAgentProductionSmokeRoutesOptions>;
824
+ platformCoverage?: VoiceSurfaceConfig<import("./platformCoverage").VoicePlatformCoverageRoutesOptions>;
825
+ postCallAnalysis?: VoiceSurfaceConfig<import("./postCallAnalysis").VoicePostCallAnalysisRoutesOptions>;
826
+ productionReadiness?: VoiceSurfaceConfig<import("./productionReadiness").VoiceProductionReadinessRoutesOptions>;
827
+ profileSwitchLiveDecision?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchLiveDecisionRoutesOptions>;
828
+ profileSwitchPolicyProof?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchPolicyProofRoutesOptions>;
829
+ profileSwitchReadiness?: VoiceSurfaceConfig<import("./profileSwitchRecommendation").VoiceProfileSwitchReadinessRoutesOptions>;
830
+ proofPack?: VoiceSurfaceConfig<import("./proofPack").VoiceProofPackRoutesOptions>;
831
+ proofTrend?: VoiceSurfaceConfig<import("./proofTrends").VoiceProofTrendRoutesOptions>;
832
+ proofTrendRecommendation?: VoiceSurfaceConfig<import("./proofTrends").VoiceProofTrendRecommendationRoutesOptions>;
833
+ providerCapability?: VoiceSurfaceConfig<import("./providerCapabilities").VoiceProviderCapabilityRoutesOptions>;
834
+ providerContractMatrix?: VoiceSurfaceConfig<import("./providerStackRecommendations").VoiceProviderContractMatrixRoutesOptions>;
835
+ providerDecisionTrace?: VoiceSurfaceConfig<import("./providerDecisionTraces").VoiceProviderDecisionTraceRoutesOptions>;
836
+ providerHealth?: VoiceSurfaceConfig<import("./providerHealth").VoiceProviderHealthRoutesOptions>;
837
+ providerOrchestration?: VoiceSurfaceConfig<import("./providerOrchestration").VoiceProviderOrchestrationRoutesOptions>;
838
+ providerSlo?: VoiceSurfaceConfig<import("./providerSlo").VoiceProviderSloRoutesOptions>;
839
+ quality?: VoiceSurfaceConfig<import("./qualityRoutes").VoiceQualityRoutesOptions>;
840
+ realCallEvidenceRuntime?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallEvidenceRuntimeRoutesOptions>;
841
+ realCallProfileHistory?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallProfileHistoryRoutesOptions>;
842
+ realCallProfileRecoveryAction?: VoiceSurfaceConfig<import("./proofTrends").VoiceRealCallProfileRecoveryActionRoutesOptions>;
843
+ realtimeChannel?: VoiceSurfaceConfig<import("./realtimeChannel").VoiceRealtimeChannelRoutesOptions>;
844
+ realtimeProviderContract?: VoiceSurfaceConfig<import("./realtimeProviderContracts").VoiceRealtimeProviderContractRoutesOptions>;
845
+ reconnectContract?: VoiceSurfaceConfig<import("./reconnectContract").VoiceReconnectContractRoutesOptions>;
846
+ reconnectProof?: VoiceSurfaceConfig<import("./reconnectContract").VoiceReconnectProofRoutesOptions>;
847
+ resilience?: VoiceSurfaceConfig<import("./resilienceRoutes").VoiceResilienceRoutesOptions>;
848
+ sessionList?: VoiceSurfaceConfig<import("./sessionReplay").VoiceSessionListRoutesOptions>;
849
+ sessionObservability?: VoiceSurfaceConfig<import("./sessionObservability").VoiceSessionObservabilityRoutesOptions>;
850
+ sessionReplay?: VoiceSurfaceConfig<import("./sessionReplay").VoiceSessionReplayRoutesOptions>;
851
+ sessionSnapshot?: VoiceSurfaceConfig<import("./sessionSnapshot").VoiceSessionSnapshotRoutesOptions>;
852
+ simulationSuite?: VoiceSurfaceConfig<import("./simulationSuite").VoiceSimulationSuiteRoutesOptions>;
853
+ sloCalibration?: VoiceSurfaceConfig<import("./sloCalibration").VoiceSloCalibrationRoutesOptions>;
854
+ sloReadinessThreshold?: VoiceSurfaceConfig<import("./sloCalibration").VoiceSloReadinessThresholdRoutesOptions>;
855
+ telephonyCarrierMatrix?: VoiceSurfaceConfig<import("../telephony/matrix").VoiceTelephonyCarrierMatrixRoutesOptions>;
856
+ telephonyMedia?: VoiceSurfaceConfig<import("./telephonyMediaRoutes").VoiceTelephonyMediaRoutesOptions>;
857
+ telephonyWebhook?: VoiceSurfaceConfig<import("./telephonyOutcome").VoiceTelephonyWebhookRoutesOptions>;
858
+ telephonyWebhookSecurity?: VoiceSurfaceConfig<import("../telephony/security").VoiceTelephonyWebhookSecurityRoutesOptions>;
859
+ toolContract?: VoiceSurfaceConfig<import("./toolContract").VoiceToolContractRoutesOptions>;
860
+ traceDelivery?: VoiceSurfaceConfig<import("./traceDeliveryRoutes").VoiceTraceDeliveryRoutesOptions>;
861
+ traceTimeline?: VoiceSurfaceConfig<import("./traceTimeline").VoiceTraceTimelineRoutesOptions>;
862
+ turnLatency?: VoiceSurfaceConfig<import("./turnLatency").VoiceTurnLatencyRoutesOptions>;
863
+ turnQuality?: VoiceSurfaceConfig<import("./turnQuality").VoiceTurnQualityRoutesOptions>;
632
864
  } & VoiceRouteConfig<TContext, TSession, TResult>;
865
+ export type VoiceSessionRecordingConfig = {
866
+ channels?: ReadonlyArray<"assistant" | "user">;
867
+ maxBytesPerChannel?: number;
868
+ store: import("./recordingStore").VoiceRecordingStore;
869
+ userInputFormat?: AudioFormat;
870
+ };
633
871
  export type CreateVoiceSessionOptions<TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = {
634
872
  costTelemetry?: VoiceCostTelemetryConfig<TContext, TSession, TResult>;
635
873
  id: string;
636
874
  context: TContext;
637
875
  socket: VoiceSocket;
638
- stt: STTAdapter;
876
+ greeting?: string | ((input: {
877
+ session: TSession;
878
+ }) => string | Promise<string>);
879
+ stt?: STTAdapter;
880
+ realtime?: RealtimeAdapter;
881
+ realtimeInputFormat?: AudioFormat;
639
882
  tts?: TTSAdapter;
640
883
  languageStrategy?: VoiceLanguageStrategy;
641
884
  lexicon?: VoiceLexiconEntry[];
642
885
  sttFallback?: VoiceResolvedSTTFallbackConfig;
643
886
  store: VoiceSessionStore<TSession>;
644
887
  trace?: VoiceTraceEventStore;
888
+ recording?: VoiceSessionRecordingConfig;
889
+ callSilenceTimeoutMs?: number;
890
+ amd?: import("./amdDetector").VoiceAMDDetector<TContext, TSession, TResult>;
891
+ costAccountant?: import("./costAccounting").VoiceCostAccountant;
892
+ costTelephony?: {
893
+ provider?: string;
894
+ };
895
+ redact?: import("./redaction").VoiceTranscriptRedactor;
896
+ semanticTurnDetector?: import("./semanticTurn").VoiceSemanticTurnDetector;
897
+ /**
898
+ * Pre-rendered filler phrases the runtime plays in the gap between
899
+ * user-turn-commit and real assistant audio (typically 800-1500ms). The
900
+ * caller hears something within ~150-300ms of stopping speaking, so the
901
+ * LLM/TTS latency feels like the bot thinking instead of dead air. Boardy's
902
+ * killer UX feature.
903
+ *
904
+ * Behavior:
905
+ * - After a turn commits, a timer fires at `fillerDelayMs` (default
906
+ * 250ms). At that point, if the real assistant audio for this turn
907
+ * hasn't started flowing yet, a random phrase is rendered via the
908
+ * configured `tts` adapter and pushed to the socket.
909
+ * - When the real assistant audio's first chunk arrives, any in-flight
910
+ * filler is cancelled (`cancelActiveTTS` clears the carrier buffer).
911
+ * - Cooldown protects against double-fillers per turn.
912
+ *
913
+ * Set `fillerPhrases: []` (or omit) to disable. Reasonable defaults if
914
+ * you enable: `["Hmm.", "Got it.", "Right.", "Mm-hm.", "Let me think.", "Okay."]`.
915
+ */
916
+ fillerPhrases?: ReadonlyArray<string>;
917
+ /** Milliseconds after turn-commit before the filler fires. Default 250ms — short enough to feel instant, long enough to skip if the LLM is very fast. */
918
+ fillerDelayMs?: number;
919
+ /**
920
+ * Default spoken ack if the model returns ONLY tool calls (no text) and the
921
+ * turn isn't ending. Without this, the caller hears total silence after
922
+ * their turn and assumes the line dropped. Default is "Sorry, one moment."
923
+ * Set to "" to opt out entirely.
924
+ */
925
+ defaultSilentTurnAck?: string;
926
+ /**
927
+ * Hard timeout on a single `route.onTurn` call. If onTurn hasn't resolved
928
+ * in this many ms, it's rejected with a hard-timeout error which falls
929
+ * through to defaultSilentTurnAck. Default 45s — generous for normal
930
+ * conversational LLM calls (1-3s typical), but catches hangs where the
931
+ * model adapter's own timeout doesn't fire. Set to 0 to disable.
932
+ */
933
+ routeOnTurnTimeoutMs?: number;
934
+ assistantMode?: import("./assistantMode").VoiceAssistantMode;
935
+ modalities?: ReadonlyArray<"audio" | "text">;
936
+ prosody?: VoiceTTSProsody;
645
937
  reconnect: Required<VoiceReconnectConfig>;
646
938
  phraseHints?: VoicePhraseHint[];
939
+ sessionMetadata?: Record<string, unknown>;
647
940
  scenarioId?: string;
648
941
  sttLifecycle: VoiceSTTLifecycle;
649
942
  turnDetection: VoiceResolvedTurnDetectionConfig;
650
943
  audioConditioning?: VoiceResolvedAudioConditioningConfig;
944
+ noiseSuppressor?: VoiceNoiseSuppressor;
945
+ noiseSuppressorFormat?: AudioFormat;
651
946
  handoff?: VoiceHandoffConfig<TContext, TSession, TResult>;
947
+ liveOps?: VoiceLiveOpsRuntimeConfig;
652
948
  route: VoiceNormalizedRouteConfig<TContext, TSession, TResult>;
653
949
  logger?: VoiceLogger;
654
950
  };
655
951
  export type CreateVoiceSession = <TContext = unknown, TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown>(options: CreateVoiceSessionOptions<TContext, TSession, TResult>) => VoiceSessionHandle<TContext, TSession, TResult>;
656
952
  export type VoiceClientStartMessage = {
657
- type: 'start';
953
+ type: "start";
658
954
  sessionId?: string;
659
955
  scenarioId?: string;
660
956
  };
661
957
  export type VoiceClientEndTurnMessage = {
662
- type: 'end_turn';
958
+ type: "end_turn";
663
959
  };
664
960
  export type VoiceClientCloseMessage = {
665
- type: 'close';
961
+ type: "close";
666
962
  reason?: string;
667
963
  };
668
964
  export type VoiceClientCallControlMessage = {
669
- type: 'call_control';
670
- action: 'complete' | 'escalate' | 'no-answer' | 'transfer' | 'voicemail';
965
+ type: "call_control";
966
+ action: "complete" | "escalate" | "no-answer" | "transfer" | "voicemail";
671
967
  metadata?: Record<string, unknown>;
672
968
  reason?: string;
673
969
  target?: string;
674
970
  };
675
971
  export type VoiceClientPingMessage = {
676
- type: 'ping';
972
+ type: "ping";
677
973
  };
678
974
  export type VoiceClientMessage = VoiceClientStartMessage | VoiceClientEndTurnMessage | VoiceClientCloseMessage | VoiceClientCallControlMessage | VoiceClientPingMessage;
679
975
  export type VoiceServerSessionMessage = {
680
- type: 'session';
976
+ type: "session";
681
977
  sessionId: string;
682
978
  status: VoiceSessionStatus;
683
979
  scenarioId?: string;
980
+ sessionMetadata?: Record<string, unknown>;
981
+ };
982
+ export type VoiceServerReplayMessage<TResult = unknown> = {
983
+ type: "replay";
984
+ assistantTexts: string[];
985
+ call?: VoiceCallLifecycleState;
986
+ partial: string;
987
+ scenarioId?: string;
988
+ sessionId: string;
989
+ sessionMetadata?: Record<string, unknown>;
990
+ status: VoiceSessionStatus;
991
+ turns: VoiceTurnRecord<TResult>[];
684
992
  };
685
993
  export type VoiceServerPartialMessage = {
686
- type: 'partial';
994
+ type: "partial";
687
995
  transcript: Transcript;
688
996
  };
689
997
  export type VoiceServerFinalMessage = {
690
- type: 'final';
998
+ type: "final";
691
999
  transcript: Transcript;
692
1000
  };
693
1001
  export type VoiceServerTurnMessage<TResult = unknown> = {
694
- type: 'turn';
1002
+ type: "turn";
695
1003
  turn: VoiceTurnRecord<TResult>;
696
1004
  };
697
1005
  export type VoiceServerAssistantMessage = {
698
- type: 'assistant';
1006
+ type: "assistant";
699
1007
  text: string;
700
1008
  turnId?: string;
701
1009
  };
702
1010
  export type VoiceServerAudioMessage = {
703
- type: 'audio';
1011
+ type: "audio";
704
1012
  chunkBase64: string;
705
1013
  format: AudioFormat;
706
1014
  receivedAt: number;
707
1015
  turnId?: string;
708
1016
  };
709
1017
  export type VoiceServerCompleteMessage = {
710
- type: 'complete';
1018
+ type: "complete";
711
1019
  sessionId: string;
712
1020
  };
713
1021
  export type VoiceServerCallLifecycleMessage = {
714
- type: 'call_lifecycle';
1022
+ type: "call_lifecycle";
715
1023
  event: VoiceCallLifecycleEvent;
716
1024
  sessionId: string;
717
1025
  };
718
1026
  export type VoiceServerErrorMessage = {
719
- type: 'error';
1027
+ type: "error";
720
1028
  message: string;
721
1029
  recoverable?: boolean;
722
1030
  };
723
1031
  export type VoiceServerPongMessage = {
724
- type: 'pong';
1032
+ type: "pong";
725
1033
  };
726
- export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage;
1034
+ export type VoiceServerConnectionMessage = {
1035
+ type: "connection";
1036
+ reconnect: VoiceReconnectClientState;
1037
+ };
1038
+ export type VoiceServerMessage<TResult = unknown> = VoiceServerSessionMessage | VoiceServerReplayMessage<TResult> | VoiceServerPartialMessage | VoiceServerFinalMessage | VoiceServerTurnMessage<TResult> | VoiceServerAssistantMessage | VoiceServerAudioMessage | VoiceServerCallLifecycleMessage | VoiceServerCompleteMessage | VoiceServerErrorMessage | VoiceServerPongMessage | VoiceServerConnectionMessage;
727
1039
  export type VoiceConnectionOptions = {
1040
+ browserMedia?: false | VoiceBrowserMediaReporterOptions;
728
1041
  protocols?: string[];
729
1042
  scenarioId?: string;
730
1043
  reconnect?: boolean;
1044
+ reconnectReportPath?: string;
731
1045
  maxReconnectAttempts?: number;
732
1046
  pingInterval?: number;
733
1047
  sessionId?: string;
734
1048
  };
1049
+ export type VoiceBrowserMediaReportPayload = {
1050
+ at: number;
1051
+ continuity?: MediaWebRTCStreamContinuityReport;
1052
+ report: MediaWebRTCStatsReport;
1053
+ scenarioId?: string | null;
1054
+ sessionId?: string | null;
1055
+ };
1056
+ export type VoiceBrowserMediaReporterOptions = Omit<MediaWebRTCStatsReportInput, "peerConnection"> & {
1057
+ fetch?: typeof fetch;
1058
+ getPeerConnection?: (() => MediaWebRTCStatsCollector | null | undefined) | (() => Promise<MediaWebRTCStatsCollector | null | undefined>);
1059
+ getScenarioId?: () => string | null | undefined;
1060
+ getSessionId?: () => string | null | undefined;
1061
+ intervalMs?: number;
1062
+ continuity?: false | Omit<MediaWebRTCStreamContinuityInput, "previousStats" | "stats">;
1063
+ onError?: (error: unknown) => void;
1064
+ onReport?: (payload: VoiceBrowserMediaReportPayload) => void;
1065
+ path?: string;
1066
+ peerConnection?: MediaWebRTCStatsCollector;
1067
+ };
735
1068
  export type VoiceCaptureOptions = {
736
1069
  channelCount?: 1 | 2;
1070
+ onAudio?: (audio: Uint8Array | ArrayBuffer, sendAudio: (audio: Uint8Array | ArrayBuffer) => void) => void;
737
1071
  onLevel?: (level: number) => void;
738
1072
  sampleRateHz?: number;
739
1073
  };
@@ -747,6 +1081,46 @@ export type VoiceBargeInOptions = {
747
1081
  enabled?: boolean;
748
1082
  interruptOnPartial?: boolean;
749
1083
  interruptThreshold?: number;
1084
+ monitor?: VoiceBargeInMonitor;
1085
+ };
1086
+ export type VoiceBargeInTriggerReason = "input-level" | "manual-audio" | "manual-interrupt" | "partial-transcript";
1087
+ export type VoiceBargeInMonitorEvent = {
1088
+ at: number;
1089
+ id: string;
1090
+ latencyMs?: number;
1091
+ playbackStopLatencyMs?: number;
1092
+ reason: VoiceBargeInTriggerReason;
1093
+ sessionId?: string | null;
1094
+ status: "requested" | "stopped" | "skipped";
1095
+ thresholdMs?: number;
1096
+ };
1097
+ export type VoiceBargeInMonitorSnapshot = {
1098
+ averageLatencyMs?: number;
1099
+ events: VoiceBargeInMonitorEvent[];
1100
+ failed: number;
1101
+ lastEvent?: VoiceBargeInMonitorEvent;
1102
+ passed: number;
1103
+ status: "empty" | "fail" | "pass" | "warn";
1104
+ thresholdMs: number;
1105
+ total: number;
1106
+ };
1107
+ export type VoiceBargeInMonitor = {
1108
+ getSnapshot: () => VoiceBargeInMonitorSnapshot;
1109
+ recordRequested: (input: {
1110
+ reason: VoiceBargeInTriggerReason;
1111
+ sessionId?: string | null;
1112
+ }) => VoiceBargeInMonitorEvent;
1113
+ recordSkipped: (input: {
1114
+ reason: VoiceBargeInTriggerReason;
1115
+ sessionId?: string | null;
1116
+ }) => VoiceBargeInMonitorEvent;
1117
+ recordStopped: (input: {
1118
+ latencyMs?: number;
1119
+ playbackStopLatencyMs?: number;
1120
+ reason: VoiceBargeInTriggerReason;
1121
+ sessionId?: string | null;
1122
+ }) => VoiceBargeInMonitorEvent;
1123
+ subscribe: (subscriber: () => void) => () => void;
750
1124
  };
751
1125
  export type VoiceAudioPlayerOptions = {
752
1126
  autoStart?: boolean;
@@ -757,10 +1131,10 @@ export type VoiceDuplexControllerOptions = VoiceControllerOptions & {
757
1131
  audioPlayer?: VoiceAudioPlayerOptions;
758
1132
  bargeIn?: VoiceBargeInOptions;
759
1133
  };
760
- export type VoiceSTTRoutingGoal = 'best' | 'low-cost';
761
- export type VoiceSTTRoutingCorrectionMode = 'generic' | 'none' | 'risky-turn';
1134
+ export type VoiceSTTRoutingGoal = "best" | "low-cost";
1135
+ export type VoiceSTTRoutingCorrectionMode = "generic" | "none" | "risky-turn";
762
1136
  export type VoiceSTTRoutingStrategy = {
763
- benchmarkSessionTarget: 'deepgram-corrected' | 'deepgram-flux';
1137
+ benchmarkSessionTarget: "deepgram-corrected" | "deepgram-flux";
764
1138
  correctionMode: VoiceSTTRoutingCorrectionMode;
765
1139
  goal: VoiceSTTRoutingGoal;
766
1140
  notes: string[];
@@ -774,7 +1148,7 @@ export type VoiceHTMXRenderInput<TResult = unknown, TSession extends VoiceSessio
774
1148
  result?: TResult;
775
1149
  session?: TSession;
776
1150
  sessionId?: string;
777
- status: VoiceSessionStatus | 'idle';
1151
+ status: VoiceSessionStatus | "idle";
778
1152
  turnCount: number;
779
1153
  turns: VoiceTurnRecord<TResult>[];
780
1154
  };
@@ -802,9 +1176,11 @@ export type VoiceHTMXOptions<TSession extends VoiceSessionRecord = VoiceSessionR
802
1176
  export type VoiceHTMXConfig<TSession extends VoiceSessionRecord = VoiceSessionRecord, TResult = unknown> = VoiceHTMXRenderer<TSession, TResult> | VoiceHTMXOptions<TSession, TResult>;
803
1177
  export type VoiceStreamState<TResult = unknown> = {
804
1178
  call: VoiceCallLifecycleState | null;
1179
+ sessionMetadata: Record<string, unknown> | null;
805
1180
  sessionId: string | null;
806
1181
  scenarioId: string | null;
807
- status: VoiceSessionStatus | 'idle';
1182
+ status: VoiceSessionStatus | "idle";
1183
+ reconnect: VoiceReconnectClientState;
808
1184
  partial: string;
809
1185
  turns: VoiceTurnRecord<TResult>[];
810
1186
  assistantTexts: string[];
@@ -819,7 +1195,7 @@ export type VoiceStreamState<TResult = unknown> = {
819
1195
  };
820
1196
  export type VoiceStream<TResult = unknown> = {
821
1197
  call: VoiceCallLifecycleState | null;
822
- callControl: (message: Omit<VoiceClientCallControlMessage, 'type'>) => void;
1198
+ callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
823
1199
  close: () => void;
824
1200
  start: (input?: {
825
1201
  scenarioId?: string;
@@ -831,10 +1207,13 @@ export type VoiceStream<TResult = unknown> = {
831
1207
  getSnapshot: () => VoiceStreamState<TResult>;
832
1208
  isConnected: boolean;
833
1209
  partial: string;
1210
+ reconnect: VoiceReconnectClientState;
834
1211
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
1212
+ simulateDisconnect: () => void;
835
1213
  sessionId: string | null;
1214
+ sessionMetadata: Record<string, unknown> | null;
836
1215
  scenarioId: string | null;
837
- status: VoiceSessionStatus | 'idle';
1216
+ status: VoiceSessionStatus | "idle";
838
1217
  subscribe: (subscriber: () => void) => () => void;
839
1218
  turns: VoiceTurnRecord<TResult>[];
840
1219
  assistantTexts: string[];
@@ -860,7 +1239,7 @@ export type VoiceAudioPlayerState = {
860
1239
  queuedChunkCount: number;
861
1240
  };
862
1241
  export type VoiceAudioPlayerSource = {
863
- assistantAudio: VoiceStreamState['assistantAudio'];
1242
+ assistantAudio: VoiceStreamState["assistantAudio"];
864
1243
  subscribe: (subscriber: () => void) => () => void;
865
1244
  };
866
1245
  export type VoiceAudioPlayer = {
@@ -887,7 +1266,7 @@ export type VoiceBargeInBinding = {
887
1266
  export type VoiceController<TResult = unknown> = {
888
1267
  bindHTMX: (options: VoiceHTMXBindingOptions) => () => void;
889
1268
  call: VoiceCallLifecycleState | null;
890
- callControl: (message: Omit<VoiceClientCallControlMessage, 'type'>) => void;
1269
+ callControl: (message: Omit<VoiceClientCallControlMessage, "type">) => void;
891
1270
  close: () => void;
892
1271
  endTurn: () => void;
893
1272
  start: (input?: {
@@ -900,12 +1279,15 @@ export type VoiceController<TResult = unknown> = {
900
1279
  isConnected: boolean;
901
1280
  isRecording: boolean;
902
1281
  partial: string;
1282
+ reconnect: VoiceReconnectClientState;
903
1283
  recordingError: string | null;
904
1284
  sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
1285
+ simulateDisconnect: () => void;
905
1286
  sessionId: string | null;
1287
+ sessionMetadata: Record<string, unknown> | null;
906
1288
  scenarioId: string | null;
907
1289
  startRecording: () => Promise<void>;
908
- status: VoiceSessionStatus | 'idle';
1290
+ status: VoiceSessionStatus | "idle";
909
1291
  stopRecording: () => void;
910
1292
  subscribe: (subscriber: () => void) => () => void;
911
1293
  toggleRecording: () => Promise<void>;
@@ -929,40 +1311,54 @@ export type VoiceHTMXBindingOptions = {
929
1311
  sessionQueryParam?: string;
930
1312
  };
931
1313
  export type VoiceStoreAction<TResult = unknown> = {
932
- type: 'session';
1314
+ type: "session";
933
1315
  sessionId: string;
1316
+ sessionMetadata?: Record<string, unknown>;
934
1317
  scenarioId?: string;
935
1318
  status: VoiceSessionStatus;
936
1319
  } | {
937
- type: 'call_lifecycle';
1320
+ type: "replay";
1321
+ assistantTexts: string[];
1322
+ call?: VoiceCallLifecycleState;
1323
+ partial: string;
1324
+ scenarioId?: string;
1325
+ sessionId: string;
1326
+ sessionMetadata?: Record<string, unknown>;
1327
+ status: VoiceSessionStatus;
1328
+ turns: VoiceTurnRecord<TResult>[];
1329
+ } | {
1330
+ type: "call_lifecycle";
938
1331
  event: VoiceCallLifecycleEvent;
939
1332
  sessionId: string;
940
1333
  } | {
941
- type: 'partial';
1334
+ type: "partial";
942
1335
  transcript: Transcript;
943
1336
  } | {
944
- type: 'final';
1337
+ type: "final";
945
1338
  transcript: Transcript;
946
1339
  } | {
947
- type: 'turn';
1340
+ type: "turn";
948
1341
  turn: VoiceTurnRecord<TResult>;
949
1342
  } | {
950
- type: 'assistant';
1343
+ type: "assistant";
951
1344
  text: string;
952
1345
  } | {
953
- type: 'audio';
1346
+ type: "audio";
954
1347
  chunk: Uint8Array;
955
1348
  format: AudioFormat;
956
1349
  receivedAt: number;
957
1350
  turnId?: string;
958
1351
  } | {
959
- type: 'complete';
1352
+ type: "complete";
960
1353
  sessionId: string;
961
1354
  } | {
962
- type: 'error';
1355
+ type: "error";
963
1356
  message: string;
964
1357
  } | {
965
- type: 'connected';
1358
+ type: "connected";
1359
+ } | {
1360
+ type: "connection";
1361
+ reconnect: VoiceReconnectClientState;
966
1362
  } | {
967
- type: 'disconnected';
1363
+ type: "disconnected";
968
1364
  };