@absolutejs/voice 0.0.22-beta.530 → 0.0.22-beta.532

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 (318) hide show
  1. package/dist/angular/index.js +4 -4
  2. package/dist/angular/voice-call-debugger.service.d.ts +1 -1
  3. package/dist/angular/voice-campaign-dialer-proof.service.d.ts +1 -1
  4. package/dist/angular/voice-controller.service.d.ts +1 -1
  5. package/dist/angular/voice-cost-dashboard.service.d.ts +1 -1
  6. package/dist/angular/voice-delivery-runtime.service.d.ts +1 -1
  7. package/dist/angular/voice-ops-status.service.d.ts +1 -1
  8. package/dist/angular/voice-platform-coverage.service.d.ts +1 -1
  9. package/dist/angular/voice-profile-comparison.service.d.ts +1 -1
  10. package/dist/angular/voice-proof-trends.service.d.ts +1 -1
  11. package/dist/angular/voice-provider-capabilities.service.d.ts +1 -1
  12. package/dist/angular/voice-provider-contracts.service.d.ts +1 -1
  13. package/dist/angular/voice-provider-status.service.d.ts +1 -1
  14. package/dist/angular/voice-readiness-failures.service.d.ts +1 -1
  15. package/dist/angular/voice-reconnect-profile-evidence.service.d.ts +1 -1
  16. package/dist/angular/voice-session-observability.service.d.ts +1 -1
  17. package/dist/angular/voice-session-snapshot.service.d.ts +1 -1
  18. package/dist/angular/voice-stream.service.d.ts +1 -1
  19. package/dist/angular/voice-trace-timeline.service.d.ts +1 -1
  20. package/dist/angular/voice-turn-latency.service.d.ts +1 -1
  21. package/dist/angular/voice-turn-quality.service.d.ts +1 -1
  22. package/dist/angular/voice-widget.service.d.ts +1 -1
  23. package/dist/angular/voice-workflow-status.service.d.ts +1 -1
  24. package/dist/client/actions.d.ts +1 -1
  25. package/dist/client/agentSquadStatus.d.ts +1 -1
  26. package/dist/client/audioPlayer.d.ts +1 -1
  27. package/dist/client/bargeInMonitor.d.ts +1 -1
  28. package/dist/client/browserMedia.d.ts +1 -1
  29. package/dist/client/callDebugger.d.ts +1 -1
  30. package/dist/client/callPlayer.d.ts +1 -1
  31. package/dist/client/campaignDialerProof.d.ts +1 -1
  32. package/dist/client/connection.d.ts +1 -1
  33. package/dist/client/controller.d.ts +1 -1
  34. package/dist/client/conversationAnalytics.d.ts +1 -1
  35. package/dist/client/costDashboard.d.ts +1 -1
  36. package/dist/client/createVoiceStream.d.ts +1 -1
  37. package/dist/client/deliveryRuntime.d.ts +1 -1
  38. package/dist/client/duplex.d.ts +1 -1
  39. package/dist/client/htmx.d.ts +1 -1
  40. package/dist/client/htmxBootstrap.js +3 -3
  41. package/dist/client/htmxDashboardRenderers.d.ts +1 -1
  42. package/dist/client/index.js +25 -29
  43. package/dist/client/liveAgentConsole.d.ts +1 -1
  44. package/dist/client/liveCallViewer.d.ts +1 -1
  45. package/dist/client/liveOps.d.ts +1 -1
  46. package/dist/client/liveOpsWidget.d.ts +1 -1
  47. package/dist/client/liveTurnLatency.d.ts +1 -1
  48. package/dist/client/microphone.d.ts +1 -1
  49. package/dist/client/opsActionHistory.d.ts +1 -1
  50. package/dist/client/opsStatus.d.ts +1 -1
  51. package/dist/client/opsStatusWidget.d.ts +1 -1
  52. package/dist/client/platformCoverage.d.ts +1 -1
  53. package/dist/client/platformCoverageWidget.d.ts +1 -1
  54. package/dist/client/profileComparison.d.ts +1 -1
  55. package/dist/client/profileSwitchRecommendation.d.ts +1 -1
  56. package/dist/client/proofTrends.d.ts +1 -1
  57. package/dist/client/proofTrendsWidget.d.ts +1 -1
  58. package/dist/client/providerCapabilities.d.ts +1 -1
  59. package/dist/client/providerCapabilitiesWidget.d.ts +1 -1
  60. package/dist/client/providerContracts.d.ts +1 -1
  61. package/dist/client/providerContractsWidget.d.ts +1 -1
  62. package/dist/client/providerStatus.d.ts +1 -1
  63. package/dist/client/providerStatusWidget.d.ts +1 -1
  64. package/dist/client/readinessFailures.d.ts +1 -1
  65. package/dist/client/readinessFailuresWidget.d.ts +1 -1
  66. package/dist/client/reconnectProfileEvidence.d.ts +1 -1
  67. package/dist/client/routingStatus.d.ts +1 -1
  68. package/dist/client/routingStatusWidget.d.ts +1 -1
  69. package/dist/client/sessionObservability.d.ts +1 -1
  70. package/dist/client/sessionObservabilityWidget.d.ts +1 -1
  71. package/dist/client/sessionSnapshot.d.ts +1 -1
  72. package/dist/client/store.d.ts +1 -1
  73. package/dist/client/traceTimeline.d.ts +1 -1
  74. package/dist/client/traceTimelineWidget.d.ts +1 -1
  75. package/dist/client/turnLatency.d.ts +1 -1
  76. package/dist/client/turnLatencyWidget.d.ts +1 -1
  77. package/dist/client/turnQuality.d.ts +1 -1
  78. package/dist/client/turnQualityWidget.d.ts +1 -1
  79. package/dist/client/voiceWidgetView.d.ts +2 -2
  80. package/dist/client/workflowStatus.d.ts +1 -1
  81. package/dist/{dataControl.d.ts → core/dataControl.d.ts} +1 -1
  82. package/dist/{fileStore.d.ts → core/fileStore.d.ts} +1 -1
  83. package/dist/{htmxDashboardRoutes.d.ts → core/htmxDashboardRoutes.d.ts} +4 -4
  84. package/dist/{multilingualProof.d.ts → core/multilingualProof.d.ts} +2 -2
  85. package/dist/{operationsRecord.d.ts → core/operationsRecord.d.ts} +1 -1
  86. package/dist/{ops.d.ts → core/ops.d.ts} +1 -1
  87. package/dist/{outcomeContract.d.ts → core/outcomeContract.d.ts} +1 -1
  88. package/dist/{phoneAgent.d.ts → core/phoneAgent.d.ts} +5 -5
  89. package/dist/{phoneAgentProductionSmoke.d.ts → core/phoneAgentProductionSmoke.d.ts} +1 -1
  90. package/dist/{postCallAnalysis.d.ts → core/postCallAnalysis.d.ts} +1 -1
  91. package/dist/{postgresStore.d.ts → core/postgresStore.d.ts} +1 -1
  92. package/dist/{productionReadiness.d.ts → core/productionReadiness.d.ts} +2 -2
  93. package/dist/{resilienceRoutes.d.ts → core/resilienceRoutes.d.ts} +1 -1
  94. package/dist/{runtimeOps.d.ts → core/runtimeOps.d.ts} +1 -1
  95. package/dist/{s3Store.d.ts → core/s3Store.d.ts} +1 -1
  96. package/dist/{sqliteStore.d.ts → core/sqliteStore.d.ts} +1 -1
  97. package/dist/{types.d.ts → core/types.d.ts} +3 -3
  98. package/dist/embed/index.d.ts +1 -1
  99. package/dist/embed/index.js +4 -4
  100. package/dist/embed/voice-widget.js +1 -1
  101. package/dist/index.d.ts +339 -339
  102. package/dist/index.js +232 -324
  103. package/dist/internal/evidence.d.ts +10 -0
  104. package/dist/internal/status.d.ts +0 -2
  105. package/dist/react/VoiceCallPlayer.d.ts +1 -1
  106. package/dist/react/VoiceWidget.d.ts +1 -1
  107. package/dist/react/index.js +21 -17
  108. package/dist/react/useVoiceController.d.ts +1 -1
  109. package/dist/react/useVoiceStream.d.ts +1 -1
  110. package/dist/svelte/createVoiceStream.d.ts +1 -1
  111. package/dist/svelte/createVoiceWidget.d.ts +1 -1
  112. package/dist/svelte/index.js +18 -18
  113. package/dist/telephony/plivo.d.ts +3 -3
  114. package/dist/telephony/security.d.ts +3 -3
  115. package/dist/telephony/telnyx.d.ts +3 -3
  116. package/dist/telephony/twilio.d.ts +2 -2
  117. package/dist/testing/accuracy.d.ts +1 -1
  118. package/dist/testing/benchmark.d.ts +1 -1
  119. package/dist/testing/corrected.d.ts +1 -1
  120. package/dist/testing/duplex.d.ts +1 -1
  121. package/dist/testing/fixtures.d.ts +1 -1
  122. package/dist/testing/index.js +33 -29
  123. package/dist/testing/ioProviderSimulator.d.ts +1 -1
  124. package/dist/testing/providerSimulator.d.ts +3 -3
  125. package/dist/testing/review.d.ts +1 -1
  126. package/dist/testing/sessionBenchmark.d.ts +1 -1
  127. package/dist/testing/stt.d.ts +1 -1
  128. package/dist/testing/telephony.d.ts +2 -2
  129. package/dist/testing/tts.d.ts +1 -1
  130. package/dist/vue/VoiceCallPlayer.d.ts +1 -1
  131. package/dist/vue/VoiceCostDashboard.d.ts +1 -1
  132. package/dist/vue/VoiceWidget.d.ts +1 -1
  133. package/dist/vue/index.js +21 -17
  134. package/dist/vue/useVoiceCallDebugger.d.ts +1 -1
  135. package/dist/vue/useVoiceCampaignDialerProof.d.ts +1 -1
  136. package/dist/vue/useVoiceController.d.ts +1 -1
  137. package/dist/vue/useVoiceDeliveryRuntime.d.ts +1 -1
  138. package/dist/vue/useVoiceOpsStatus.d.ts +1 -1
  139. package/dist/vue/useVoicePlatformCoverage.d.ts +1 -1
  140. package/dist/vue/useVoiceProfileComparison.d.ts +1 -1
  141. package/dist/vue/useVoiceProofTrends.d.ts +1 -1
  142. package/dist/vue/useVoiceProviderCapabilities.d.ts +1 -1
  143. package/dist/vue/useVoiceProviderContracts.d.ts +1 -1
  144. package/dist/vue/useVoiceProviderStatus.d.ts +1 -1
  145. package/dist/vue/useVoiceReadinessFailures.d.ts +1 -1
  146. package/dist/vue/useVoiceReconnectProfileEvidence.d.ts +1 -1
  147. package/dist/vue/useVoiceSessionObservability.d.ts +1 -1
  148. package/dist/vue/useVoiceSessionSnapshot.d.ts +1 -1
  149. package/dist/vue/useVoiceStream.d.ts +1 -1
  150. package/dist/vue/useVoiceTraceTimeline.d.ts +1 -1
  151. package/dist/vue/useVoiceTurnLatency.d.ts +1 -1
  152. package/dist/vue/useVoiceTurnQuality.d.ts +1 -1
  153. package/dist/vue/useVoiceWorkflowStatus.d.ts +1 -1
  154. package/package.json +3 -1
  155. /package/dist/{agent.d.ts → core/agent.d.ts} +0 -0
  156. /package/dist/{agentPerformanceReport.d.ts → core/agentPerformanceReport.d.ts} +0 -0
  157. /package/dist/{agentSquadContract.d.ts → core/agentSquadContract.d.ts} +0 -0
  158. /package/dist/{agentState.d.ts → core/agentState.d.ts} +0 -0
  159. /package/dist/{agentTools.d.ts → core/agentTools.d.ts} +0 -0
  160. /package/dist/{aiScorecard.d.ts → core/aiScorecard.d.ts} +0 -0
  161. /package/dist/{aiVoiceModel.d.ts → core/aiVoiceModel.d.ts} +0 -0
  162. /package/dist/{amdDetector.d.ts → core/amdDetector.d.ts} +0 -0
  163. /package/dist/{assistant.d.ts → core/assistant.d.ts} +0 -0
  164. /package/dist/{assistantExperiment.d.ts → core/assistantExperiment.d.ts} +0 -0
  165. /package/dist/{assistantHealth.d.ts → core/assistantHealth.d.ts} +0 -0
  166. /package/dist/{assistantMemory.d.ts → core/assistantMemory.d.ts} +0 -0
  167. /package/dist/{assistantMode.d.ts → core/assistantMode.d.ts} +0 -0
  168. /package/dist/{audioConditioning.d.ts → core/audioConditioning.d.ts} +0 -0
  169. /package/dist/{audit.d.ts → core/audit.d.ts} +0 -0
  170. /package/dist/{auditDeliveryRoutes.d.ts → core/auditDeliveryRoutes.d.ts} +0 -0
  171. /package/dist/{auditExport.d.ts → core/auditExport.d.ts} +0 -0
  172. /package/dist/{auditRoutes.d.ts → core/auditRoutes.d.ts} +0 -0
  173. /package/dist/{auditSinks.d.ts → core/auditSinks.d.ts} +0 -0
  174. /package/dist/{backchannel.d.ts → core/backchannel.d.ts} +0 -0
  175. /package/dist/{bargeInRoutes.d.ts → core/bargeInRoutes.d.ts} +0 -0
  176. /package/dist/{bookingFlow.d.ts → core/bookingFlow.d.ts} +0 -0
  177. /package/dist/{browserCallProfiles.d.ts → core/browserCallProfiles.d.ts} +0 -0
  178. /package/dist/{browserMediaRoutes.d.ts → core/browserMediaRoutes.d.ts} +0 -0
  179. /package/dist/{calendarAdapter.d.ts → core/calendarAdapter.d.ts} +0 -0
  180. /package/dist/{calendarSlots.d.ts → core/calendarSlots.d.ts} +0 -0
  181. /package/dist/{callDebugger.d.ts → core/callDebugger.d.ts} +0 -0
  182. /package/dist/{callDisposition.d.ts → core/callDisposition.d.ts} +0 -0
  183. /package/dist/{callQuota.d.ts → core/callQuota.d.ts} +0 -0
  184. /package/dist/{callScorecard.d.ts → core/callScorecard.d.ts} +0 -0
  185. /package/dist/{callerCRMLinker.d.ts → core/callerCRMLinker.d.ts} +0 -0
  186. /package/dist/{callerMemory.d.ts → core/callerMemory.d.ts} +0 -0
  187. /package/dist/{callingWindow.d.ts → core/callingWindow.d.ts} +0 -0
  188. /package/dist/{campaign.d.ts → core/campaign.d.ts} +0 -0
  189. /package/dist/{campaignControls.d.ts → core/campaignControls.d.ts} +0 -0
  190. /package/dist/{campaignDialers.d.ts → core/campaignDialers.d.ts} +0 -0
  191. /package/dist/{campaignTemplate.d.ts → core/campaignTemplate.d.ts} +0 -0
  192. /package/dist/{competitiveCoverage.d.ts → core/competitiveCoverage.d.ts} +0 -0
  193. /package/dist/{conversationSimulator.d.ts → core/conversationSimulator.d.ts} +0 -0
  194. /package/dist/{correction.d.ts → core/correction.d.ts} +0 -0
  195. /package/dist/{costAccounting.d.ts → core/costAccounting.d.ts} +0 -0
  196. /package/dist/{costPredictor.d.ts → core/costPredictor.d.ts} +0 -0
  197. /package/dist/{crmCallLogger.d.ts → core/crmCallLogger.d.ts} +0 -0
  198. /package/dist/{crmContract.d.ts → core/crmContract.d.ts} +0 -0
  199. /package/dist/{defineVoiceAssistant.d.ts → core/defineVoiceAssistant.d.ts} +0 -0
  200. /package/dist/{deliveryRuntime.d.ts → core/deliveryRuntime.d.ts} +0 -0
  201. /package/dist/{deliverySinkRoutes.d.ts → core/deliverySinkRoutes.d.ts} +0 -0
  202. /package/dist/{demoReadyRoutes.d.ts → core/demoReadyRoutes.d.ts} +0 -0
  203. /package/dist/{diagnosticsRoutes.d.ts → core/diagnosticsRoutes.d.ts} +0 -0
  204. /package/dist/{dncRegistry.d.ts → core/dncRegistry.d.ts} +0 -0
  205. /package/dist/{dtmfCollector.d.ts → core/dtmfCollector.d.ts} +0 -0
  206. /package/dist/{evalRoutes.d.ts → core/evalRoutes.d.ts} +0 -0
  207. /package/dist/{guardrails.d.ts → core/guardrails.d.ts} +0 -0
  208. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  209. /package/dist/{handoffHealth.d.ts → core/handoffHealth.d.ts} +0 -0
  210. /package/dist/{holdAudio.d.ts → core/holdAudio.d.ts} +0 -0
  211. /package/dist/{htmx.d.ts → core/htmx.d.ts} +0 -0
  212. /package/dist/{iceServers.d.ts → core/iceServers.d.ts} +0 -0
  213. /package/dist/{incidentBundle.d.ts → core/incidentBundle.d.ts} +0 -0
  214. /package/dist/{incidentTimeline.d.ts → core/incidentTimeline.d.ts} +0 -0
  215. /package/dist/{ivrPlan.d.ts → core/ivrPlan.d.ts} +0 -0
  216. /package/dist/{latencySlo.d.ts → core/latencySlo.d.ts} +0 -0
  217. /package/dist/{liveCoach.d.ts → core/liveCoach.d.ts} +0 -0
  218. /package/dist/{liveLatency.d.ts → core/liveLatency.d.ts} +0 -0
  219. /package/dist/{liveOps.d.ts → core/liveOps.d.ts} +0 -0
  220. /package/dist/{llmJudge.d.ts → core/llmJudge.d.ts} +0 -0
  221. /package/dist/{logger.d.ts → core/logger.d.ts} +0 -0
  222. /package/dist/{mcpToolset.d.ts → core/mcpToolset.d.ts} +0 -0
  223. /package/dist/{mediaPipelineRoutes.d.ts → core/mediaPipelineRoutes.d.ts} +0 -0
  224. /package/dist/{mediaPipelineSurfaces.d.ts → core/mediaPipelineSurfaces.d.ts} +0 -0
  225. /package/dist/{memoryStore.d.ts → core/memoryStore.d.ts} +0 -0
  226. /package/dist/{midCallSummary.d.ts → core/midCallSummary.d.ts} +0 -0
  227. /package/dist/{modelAdapters.d.ts → core/modelAdapters.d.ts} +0 -0
  228. /package/dist/{monitor.d.ts → core/monitor.d.ts} +0 -0
  229. /package/dist/{noShowPredictor.d.ts → core/noShowPredictor.d.ts} +0 -0
  230. /package/dist/{oauth2TokenSource.d.ts → core/oauth2TokenSource.d.ts} +0 -0
  231. /package/dist/{observabilityExport.d.ts → core/observabilityExport.d.ts} +0 -0
  232. /package/dist/{openaiTTS.d.ts → core/openaiTTS.d.ts} +0 -0
  233. /package/dist/{operationalStatus.d.ts → core/operationalStatus.d.ts} +0 -0
  234. /package/dist/{opsActionAuditRoutes.d.ts → core/opsActionAuditRoutes.d.ts} +0 -0
  235. /package/dist/{opsConsoleRoutes.d.ts → core/opsConsoleRoutes.d.ts} +0 -0
  236. /package/dist/{opsPresets.d.ts → core/opsPresets.d.ts} +0 -0
  237. /package/dist/{opsRecovery.d.ts → core/opsRecovery.d.ts} +0 -0
  238. /package/dist/{opsRuntime.d.ts → core/opsRuntime.d.ts} +0 -0
  239. /package/dist/{opsSinks.d.ts → core/opsSinks.d.ts} +0 -0
  240. /package/dist/{opsStatus.d.ts → core/opsStatus.d.ts} +0 -0
  241. /package/dist/{opsStatusRoutes.d.ts → core/opsStatusRoutes.d.ts} +0 -0
  242. /package/dist/{opsWebhook.d.ts → core/opsWebhook.d.ts} +0 -0
  243. /package/dist/{otelExporter.d.ts → core/otelExporter.d.ts} +0 -0
  244. /package/dist/{outcomeRecipes.d.ts → core/outcomeRecipes.d.ts} +0 -0
  245. /package/dist/{pathway.d.ts → core/pathway.d.ts} +0 -0
  246. /package/dist/{pathwayCompiler.d.ts → core/pathwayCompiler.d.ts} +0 -0
  247. /package/dist/{pathwayGenerator.d.ts → core/pathwayGenerator.d.ts} +0 -0
  248. /package/dist/{pathwayRuntime.d.ts → core/pathwayRuntime.d.ts} +0 -0
  249. /package/dist/{pathwaySlotCollector.d.ts → core/pathwaySlotCollector.d.ts} +0 -0
  250. /package/dist/{pathwayVisualizer.d.ts → core/pathwayVisualizer.d.ts} +0 -0
  251. /package/dist/{phoneProvisioning.d.ts → core/phoneProvisioning.d.ts} +0 -0
  252. /package/dist/{platformCoverage.d.ts → core/platformCoverage.d.ts} +0 -0
  253. /package/dist/{plugin.d.ts → core/plugin.d.ts} +0 -0
  254. /package/dist/{postCallSurvey.d.ts → core/postCallSurvey.d.ts} +0 -0
  255. /package/dist/{presets.d.ts → core/presets.d.ts} +0 -0
  256. /package/dist/{profileSwitchRecommendation.d.ts → core/profileSwitchRecommendation.d.ts} +0 -0
  257. /package/dist/{promptInjectionGuard.d.ts → core/promptInjectionGuard.d.ts} +0 -0
  258. /package/dist/{proofAssertions.d.ts → core/proofAssertions.d.ts} +0 -0
  259. /package/dist/{proofPack.d.ts → core/proofPack.d.ts} +0 -0
  260. /package/dist/{proofRunner.d.ts → core/proofRunner.d.ts} +0 -0
  261. /package/dist/{proofTrends.d.ts → core/proofTrends.d.ts} +0 -0
  262. /package/dist/{providerAdapters.d.ts → core/providerAdapters.d.ts} +0 -0
  263. /package/dist/{providerCapabilities.d.ts → core/providerCapabilities.d.ts} +0 -0
  264. /package/dist/{providerDecisionTraces.d.ts → core/providerDecisionTraces.d.ts} +0 -0
  265. /package/dist/{providerHealth.d.ts → core/providerHealth.d.ts} +0 -0
  266. /package/dist/{providerOrchestration.d.ts → core/providerOrchestration.d.ts} +0 -0
  267. /package/dist/{providerRouterTraces.d.ts → core/providerRouterTraces.d.ts} +0 -0
  268. /package/dist/{providerRoutingContract.d.ts → core/providerRoutingContract.d.ts} +0 -0
  269. /package/dist/{providerSlo.d.ts → core/providerSlo.d.ts} +0 -0
  270. /package/dist/{providerStackRecommendations.d.ts → core/providerStackRecommendations.d.ts} +0 -0
  271. /package/dist/{qualityDriftDetector.d.ts → core/qualityDriftDetector.d.ts} +0 -0
  272. /package/dist/{qualityRoutes.d.ts → core/qualityRoutes.d.ts} +0 -0
  273. /package/dist/{queue.d.ts → core/queue.d.ts} +0 -0
  274. /package/dist/{ragTool.d.ts → core/ragTool.d.ts} +0 -0
  275. /package/dist/{readinessProfiles.d.ts → core/readinessProfiles.d.ts} +0 -0
  276. /package/dist/{realtimeChannel.d.ts → core/realtimeChannel.d.ts} +0 -0
  277. /package/dist/{realtimeProviderContracts.d.ts → core/realtimeProviderContracts.d.ts} +0 -0
  278. /package/dist/{reconnectContract.d.ts → core/reconnectContract.d.ts} +0 -0
  279. /package/dist/{recordingRedaction.d.ts → core/recordingRedaction.d.ts} +0 -0
  280. /package/dist/{recordingStore.d.ts → core/recordingStore.d.ts} +0 -0
  281. /package/dist/{redaction.d.ts → core/redaction.d.ts} +0 -0
  282. /package/dist/{reminderScheduler.d.ts → core/reminderScheduler.d.ts} +0 -0
  283. /package/dist/{retention.d.ts → core/retention.d.ts} +0 -0
  284. /package/dist/{retryPolicy.d.ts → core/retryPolicy.d.ts} +0 -0
  285. /package/dist/{routeAuth.d.ts → core/routeAuth.d.ts} +0 -0
  286. /package/dist/{routing.d.ts → core/routing.d.ts} +0 -0
  287. /package/dist/{scorecardCalibration.d.ts → core/scorecardCalibration.d.ts} +0 -0
  288. /package/dist/{semanticTurn.d.ts → core/semanticTurn.d.ts} +0 -0
  289. /package/dist/{session.d.ts → core/session.d.ts} +0 -0
  290. /package/dist/{sessionObservability.d.ts → core/sessionObservability.d.ts} +0 -0
  291. /package/dist/{sessionReplay.d.ts → core/sessionReplay.d.ts} +0 -0
  292. /package/dist/{sessionSnapshot.d.ts → core/sessionSnapshot.d.ts} +0 -0
  293. /package/dist/{simulationSuite.d.ts → core/simulationSuite.d.ts} +0 -0
  294. /package/dist/{sloCalibration.d.ts → core/sloCalibration.d.ts} +0 -0
  295. /package/dist/{store.d.ts → core/store.d.ts} +0 -0
  296. /package/dist/{supervisorPermissions.d.ts → core/supervisorPermissions.d.ts} +0 -0
  297. /package/dist/{supervisorPresence.d.ts → core/supervisorPresence.d.ts} +0 -0
  298. /package/dist/{telephonyMediaRoutes.d.ts → core/telephonyMediaRoutes.d.ts} +0 -0
  299. /package/dist/{telephonyOutcome.d.ts → core/telephonyOutcome.d.ts} +0 -0
  300. /package/dist/{toolContract.d.ts → core/toolContract.d.ts} +0 -0
  301. /package/dist/{toolRuntime.d.ts → core/toolRuntime.d.ts} +0 -0
  302. /package/dist/{trace.d.ts → core/trace.d.ts} +0 -0
  303. /package/dist/{traceDeliveryRoutes.d.ts → core/traceDeliveryRoutes.d.ts} +0 -0
  304. /package/dist/{traceTimeline.d.ts → core/traceTimeline.d.ts} +0 -0
  305. /package/dist/{transcriptAnnotator.d.ts → core/transcriptAnnotator.d.ts} +0 -0
  306. /package/dist/{turnDetection.d.ts → core/turnDetection.d.ts} +0 -0
  307. /package/dist/{turnLatency.d.ts → core/turnLatency.d.ts} +0 -0
  308. /package/dist/{turnProfiles.d.ts → core/turnProfiles.d.ts} +0 -0
  309. /package/dist/{turnQuality.d.ts → core/turnQuality.d.ts} +0 -0
  310. /package/dist/{vapiAdapter.d.ts → core/vapiAdapter.d.ts} +0 -0
  311. /package/dist/{variableAnalytics.d.ts → core/variableAnalytics.d.ts} +0 -0
  312. /package/dist/{voiceConfiguration.d.ts → core/voiceConfiguration.d.ts} +0 -0
  313. /package/dist/{voiceMonitoring.d.ts → core/voiceMonitoring.d.ts} +0 -0
  314. /package/dist/{webhookFanout.d.ts → core/webhookFanout.d.ts} +0 -0
  315. /package/dist/{webhookVerification.d.ts → core/webhookVerification.d.ts} +0 -0
  316. /package/dist/{whisperChannel.d.ts → core/whisperChannel.d.ts} +0 -0
  317. /package/dist/{workflowContract.d.ts → core/workflowContract.d.ts} +0 -0
  318. /package/dist/{zeroDataRetention.d.ts → core/zeroDataRetention.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -83,7 +83,7 @@ var __decorateElement = (array, flags, name, decorators, target, extra) => {
83
83
  };
84
84
  var __require = import.meta.require;
85
85
 
86
- // src/calendarSlots.ts
86
+ // src/core/calendarSlots.ts
87
87
  var exports_calendarSlots = {};
88
88
  __export(exports_calendarSlots, {
89
89
  summarizeVoiceCalendarSlot: () => summarizeVoiceCalendarSlot,
@@ -192,7 +192,7 @@ var parseHHMM = (value) => {
192
192
  return formatter.format(new Date(slot.startMs));
193
193
  };
194
194
 
195
- // src/audioConditioning.ts
195
+ // src/core/audioConditioning.ts
196
196
  var DEFAULT_TARGET_LEVEL = 0.08;
197
197
  var DEFAULT_MAX_GAIN = 3;
198
198
  var DEFAULT_NOISE_GATE_THRESHOLD = 0.006;
@@ -247,14 +247,14 @@ var conditionAudioChunk = (audio, config) => {
247
247
  return new Uint8Array(output.buffer);
248
248
  };
249
249
 
250
- // src/plugin.ts
250
+ // src/core/plugin.ts
251
251
  import { Elysia as Elysia70 } from "elysia";
252
252
  import { resolve } from "path";
253
253
 
254
254
  // src/internal/html.ts
255
255
  var escapeHtml = (value) => String(value).replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#39;");
256
256
 
257
- // src/htmx.ts
257
+ // src/core/htmx.ts
258
258
  var DEFAULT_HTMX_TARGETS = {
259
259
  assistant: "voice-htmx-assistant",
260
260
  metrics: "voice-htmx-metrics",
@@ -378,7 +378,7 @@ var buildVoiceHTMXResponse = (input, renderers, targets) => [
378
378
  renderOob(targets.result, renderers.result(input))
379
379
  ].join("");
380
380
 
381
- // src/logger.ts
381
+ // src/core/logger.ts
382
382
  var noop = () => {};
383
383
  var createNoopLogger = () => ({
384
384
  debug: noop,
@@ -391,7 +391,7 @@ var resolveLogger = (logger) => ({
391
391
  ...logger
392
392
  });
393
393
 
394
- // src/turnProfiles.ts
394
+ // src/core/turnProfiles.ts
395
395
  var TURN_PROFILE_DEFAULTS = {
396
396
  balanced: {
397
397
  qualityProfile: "general",
@@ -446,7 +446,7 @@ var resolveTurnDetectionConfig = (config) => {
446
446
  };
447
447
  };
448
448
 
449
- // src/presets.ts
449
+ // src/core/presets.ts
450
450
  var PRESET_INPUTS = {
451
451
  chat: {
452
452
  audioConditioning: {
@@ -652,7 +652,7 @@ var resolveVoiceRuntimePreset = (name = "default") => {
652
652
  };
653
653
  };
654
654
 
655
- // src/ops.ts
655
+ // src/core/ops.ts
656
656
  var createVoiceExternalObjectMapId = (input) => [
657
657
  input.provider,
658
658
  input.sinkId ?? "default",
@@ -1442,7 +1442,7 @@ var buildVoiceOpsTaskFromSLABreach = (task, policy = {}) => {
1442
1442
  return followUp;
1443
1443
  };
1444
1444
 
1445
- // src/opsSinks.ts
1445
+ // src/core/opsSinks.ts
1446
1446
  var sleep2 = async (delayMs) => {
1447
1447
  if (delayMs <= 0) {
1448
1448
  return;
@@ -2804,7 +2804,7 @@ var renderVoiceCallReviewHTML = (artifact) => {
2804
2804
  </html>`;
2805
2805
  };
2806
2806
 
2807
- // src/runtimeOps.ts
2807
+ // src/core/runtimeOps.ts
2808
2808
  var defaultReviewTitle = (session) => session.scenarioId ? `Voice call review: ${session.scenarioId}` : `Voice call review: ${session.id}`;
2809
2809
  var buildDefaultPostCallSummary = (input) => {
2810
2810
  switch (input.disposition) {
@@ -3049,7 +3049,7 @@ var recordVoiceRuntimeOps = async (input) => {
3049
3049
  };
3050
3050
  };
3051
3051
 
3052
- // src/store.ts
3052
+ // src/core/store.ts
3053
3053
  var createId = () => crypto.randomUUID();
3054
3054
  var createVoiceSessionRecord = (id, scenarioId) => ({
3055
3055
  committedTurnIds: [],
@@ -3089,10 +3089,10 @@ var toVoiceSessionSummary = (session) => ({
3089
3089
  turnCount: session.turns.length
3090
3090
  });
3091
3091
 
3092
- // src/session.ts
3092
+ // src/core/session.ts
3093
3093
  import { Buffer as Buffer2 } from "buffer";
3094
3094
 
3095
- // src/handoff.ts
3095
+ // src/core/handoff.ts
3096
3096
  var toHex3 = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
3097
3097
  var signHandoffBody = async (input) => {
3098
3098
  const encoder = new TextEncoder;
@@ -3375,7 +3375,7 @@ var createVoiceTwilioRedirectHandoffAdapter = (options) => ({
3375
3375
  kind: "twilio-redirect"
3376
3376
  });
3377
3377
 
3378
- // src/turnDetection.ts
3378
+ // src/core/turnDetection.ts
3379
3379
  var DEFAULT_SILENCE_MS = 700;
3380
3380
  var DEFAULT_SPEECH_THRESHOLD = 0.015;
3381
3381
  var toUint8Array = (audio) => {
@@ -3492,10 +3492,10 @@ var buildTurnText = (transcripts, partialText, options = {}) => {
3492
3492
  return selectPreferredTranscriptText(finalText, nextPartial);
3493
3493
  };
3494
3494
 
3495
- // src/types.ts
3495
+ // src/core/types.ts
3496
3496
  var ttsAdapterSessionCanCancel = (session) => typeof session.cancel === "function";
3497
3497
 
3498
- // src/recordingStore.ts
3498
+ // src/core/recordingStore.ts
3499
3499
  var writeUint32LE = (view, offset, value) => {
3500
3500
  view.setUint32(offset, value, true);
3501
3501
  };
@@ -3596,7 +3596,7 @@ var createVoiceMemoryRecordingStore = () => {
3596
3596
  };
3597
3597
  };
3598
3598
 
3599
- // src/assistantMode.ts
3599
+ // src/core/assistantMode.ts
3600
3600
  var resolveVoiceAssistantMode = (options) => {
3601
3601
  if (options.assistantMode) {
3602
3602
  return options.assistantMode;
@@ -3618,7 +3618,7 @@ var describeVoiceAssistantMode = (options) => {
3618
3618
  };
3619
3619
  };
3620
3620
 
3621
- // src/session.ts
3621
+ // src/core/session.ts
3622
3622
  var DEFAULT_RECONNECT_TIMEOUT = 30000;
3623
3623
  var DEFAULT_MAX_RECONNECT_ATTEMPTS = 10;
3624
3624
  var DEFAULT_TRANSCRIPT_STABILITY_MS = 450;
@@ -5749,10 +5749,10 @@ var createVoiceSession = (options) => {
5749
5749
  return api;
5750
5750
  };
5751
5751
 
5752
- // src/profileSwitchRecommendation.ts
5752
+ // src/core/profileSwitchRecommendation.ts
5753
5753
  import { Elysia } from "elysia";
5754
5754
 
5755
- // src/audit.ts
5755
+ // src/core/audit.ts
5756
5756
  var includes = (filter, value) => {
5757
5757
  if (!filter) {
5758
5758
  return true;
@@ -5953,7 +5953,7 @@ var createVoiceAuditLogger = (store) => ({
5953
5953
  toolCall: (input) => recordVoiceToolAuditEvent({ ...input, store })
5954
5954
  });
5955
5955
 
5956
- // src/profileSwitchRecommendation.ts
5956
+ // src/core/profileSwitchRecommendation.ts
5957
5957
  var readDefaults = (input) => ("defaults" in input) ? input.defaults : input;
5958
5958
  var stringifyForHtml = (value) => escapeHtml(JSON.stringify(value, null, 2) ?? "");
5959
5959
  var isNumber = (value) => typeof value === "number" && Number.isFinite(value);
@@ -6546,10 +6546,10 @@ var createVoiceProfileSwitchReadinessRoutes = (options) => {
6546
6546
  return routes;
6547
6547
  };
6548
6548
 
6549
- // src/assistantHealth.ts
6549
+ // src/core/assistantHealth.ts
6550
6550
  import { Elysia as Elysia3 } from "elysia";
6551
6551
 
6552
- // src/ragTool.ts
6552
+ // src/core/ragTool.ts
6553
6553
  var extractVoiceRAGCitations = (toolResults, toolName = "searchKnowledgeBase") => {
6554
6554
  const out = [];
6555
6555
  for (const entry of toolResults) {
@@ -6699,7 +6699,7 @@ var createVoiceRAGTool = (collection, options = {}) => {
6699
6699
  });
6700
6700
  };
6701
6701
 
6702
- // src/agent.ts
6702
+ // src/core/agent.ts
6703
6703
  var normalizeText3 = (value) => typeof value === "string" ? value.trim() : "";
6704
6704
  var toErrorMessage3 = (error) => error instanceof Error ? error.message : String(error);
6705
6705
  var createHistoryMessages = (session, turn) => {
@@ -7363,7 +7363,7 @@ var createVoiceAgentSquad = (options) => {
7363
7363
  };
7364
7364
  };
7365
7365
 
7366
- // src/outcomeRecipes.ts
7366
+ // src/core/outcomeRecipes.ts
7367
7367
  var RECIPE_DEFAULTS = {
7368
7368
  "appointment-booking": {
7369
7369
  completedAction: "Verify appointment details, confirm calendar state, and send any required confirmation.",
@@ -7600,7 +7600,7 @@ var resolveVoiceOutcomeRecipe = (name, options = {}) => {
7600
7600
  };
7601
7601
  };
7602
7602
 
7603
- // src/assistantMemory.ts
7603
+ // src/core/assistantMemory.ts
7604
7604
  var createMemoryId = (input) => `${input.assistantId}:${input.namespace}:${input.key}`;
7605
7605
  var createVoiceAssistantMemoryRecord = (input) => {
7606
7606
  const now = Date.now();
@@ -7706,7 +7706,7 @@ var createVoiceAssistantMemoryHandle = async (input) => {
7706
7706
  };
7707
7707
  };
7708
7708
 
7709
- // src/assistant.ts
7709
+ // src/core/assistant.ts
7710
7710
  var hashString = (value) => {
7711
7711
  let hash = 2166136261;
7712
7712
  for (let index = 0;index < value.length; index += 1) {
@@ -8115,7 +8115,7 @@ var summarizeVoiceAssistantRuns = async (input) => {
8115
8115
  };
8116
8116
  };
8117
8117
 
8118
- // src/providerHealth.ts
8118
+ // src/core/providerHealth.ts
8119
8119
  import { Elysia as Elysia2 } from "elysia";
8120
8120
  var getString = (value) => typeof value === "string" ? value : undefined;
8121
8121
  var getNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -8323,7 +8323,7 @@ var createVoiceProviderHealthRoutes = (options) => {
8323
8323
  return routes;
8324
8324
  };
8325
8325
 
8326
- // src/assistantHealth.ts
8326
+ // src/core/assistantHealth.ts
8327
8327
  var renderCountMap = (values) => {
8328
8328
  const entries = Object.entries(values).sort((left, right) => right[1] - left[1]);
8329
8329
  if (entries.length === 0) {
@@ -8429,10 +8429,10 @@ var createVoiceAssistantHealthRoutes = (options) => {
8429
8429
  return routes;
8430
8430
  };
8431
8431
 
8432
- // src/auditDeliveryRoutes.ts
8432
+ // src/core/auditDeliveryRoutes.ts
8433
8433
  import { Elysia as Elysia5 } from "elysia";
8434
8434
 
8435
- // src/trace.ts
8435
+ // src/core/trace.ts
8436
8436
  var createVoiceTraceEventId = (event) => [
8437
8437
  event.sessionId,
8438
8438
  event.turnId ?? "session",
@@ -9243,7 +9243,7 @@ var buildVoiceTraceReplay = (events, options = {}) => ({
9243
9243
  summary: summarizeVoiceTrace(options.redact ? redactVoiceTraceEvents(events, options.redact) : events)
9244
9244
  });
9245
9245
 
9246
- // src/auditRoutes.ts
9246
+ // src/core/auditRoutes.ts
9247
9247
  import { Elysia as Elysia4 } from "elysia";
9248
9248
  var getString3 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
9249
9249
  var getNumber2 = (value) => {
@@ -9440,7 +9440,7 @@ var createVoiceAuditTrailRoutes = (options) => {
9440
9440
  return routes;
9441
9441
  };
9442
9442
 
9443
- // src/auditExport.ts
9443
+ // src/core/auditExport.ts
9444
9444
  var normalizeRedactionKey2 = (key) => key.trim().toLowerCase().replace(/[^a-z0-9]/g, "");
9445
9445
  var resolveReplacement2 = (input) => typeof input.options.replacement === "function" ? input.options.replacement({
9446
9446
  key: input.key,
@@ -9571,7 +9571,7 @@ var buildVoiceAuditExport = (events, options = {}) => {
9571
9571
  };
9572
9572
  };
9573
9573
 
9574
- // src/auditSinks.ts
9574
+ // src/core/auditSinks.ts
9575
9575
  var sleep4 = async (delayMs) => {
9576
9576
  if (delayMs <= 0) {
9577
9577
  return;
@@ -10008,7 +10008,7 @@ var createVoiceAuditSinkDeliveryWorkerLoop = (options) => {
10008
10008
  };
10009
10009
  };
10010
10010
 
10011
- // src/auditDeliveryRoutes.ts
10011
+ // src/core/auditDeliveryRoutes.ts
10012
10012
  var getString4 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
10013
10013
  var getNumber3 = (value) => {
10014
10014
  if (typeof value === "number" && Number.isFinite(value)) {
@@ -10134,7 +10134,7 @@ var createVoiceAuditDeliveryRoutes = (options) => {
10134
10134
  return routes;
10135
10135
  };
10136
10136
 
10137
- // src/bargeInRoutes.ts
10137
+ // src/core/bargeInRoutes.ts
10138
10138
  import { Elysia as Elysia6 } from "elysia";
10139
10139
  var isBargeInPayload = (value) => !!value && typeof value === "object" && typeof value.at === "number" && typeof value.id === "string" && typeof value.reason === "string" && typeof value.status === "string";
10140
10140
  var toBargeInEvent = (event) => event.type === "client.barge_in" && isBargeInPayload(event.payload) ? event.payload : undefined;
@@ -10230,7 +10230,7 @@ var createVoiceBargeInRoutes = (options) => {
10230
10230
  return routes;
10231
10231
  };
10232
10232
 
10233
- // src/browserCallProfiles.ts
10233
+ // src/core/browserCallProfiles.ts
10234
10234
  import { Elysia as Elysia7 } from "elysia";
10235
10235
  var DEFAULT_MAX_AGE_MS = 10 * 60 * 1000;
10236
10236
  var toTime = (value) => {
@@ -10415,7 +10415,7 @@ var createVoiceBrowserCallProfileRoutes = (options = {}) => {
10415
10415
  return routes;
10416
10416
  };
10417
10417
 
10418
- // src/browserMediaRoutes.ts
10418
+ // src/core/browserMediaRoutes.ts
10419
10419
  import { Elysia as Elysia8 } from "elysia";
10420
10420
  var isMediaWebRTCStatsReport = (value) => {
10421
10421
  const report = value;
@@ -10527,10 +10527,10 @@ var createVoiceBrowserMediaRoutes = (options) => {
10527
10527
  return routes;
10528
10528
  };
10529
10529
 
10530
- // src/callDebugger.ts
10530
+ // src/core/callDebugger.ts
10531
10531
  import { Elysia as Elysia13 } from "elysia";
10532
10532
 
10533
- // src/operationsRecord.ts
10533
+ // src/core/operationsRecord.ts
10534
10534
  import { Elysia as Elysia11 } from "elysia";
10535
10535
  import {
10536
10536
  summarizeMediaProcessorGraphReport,
@@ -10538,7 +10538,7 @@ import {
10538
10538
  summarizeMediaTransportReport
10539
10539
  } from "@absolutejs/media";
10540
10540
 
10541
- // src/sessionReplay.ts
10541
+ // src/core/sessionReplay.ts
10542
10542
  import { Elysia as Elysia9 } from "elysia";
10543
10543
  var getString5 = (value) => typeof value === "string" ? value : undefined;
10544
10544
  var increment3 = (record, key) => {
@@ -10818,7 +10818,7 @@ var createVoiceSessionReplayRoutes = (options) => {
10818
10818
  return routes;
10819
10819
  };
10820
10820
 
10821
- // src/traceTimeline.ts
10821
+ // src/core/traceTimeline.ts
10822
10822
  import { Elysia as Elysia10 } from "elysia";
10823
10823
  var getString6 = (value) => typeof value === "string" && value.trim() ? value : undefined;
10824
10824
  var getNumber4 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -11096,7 +11096,7 @@ var createVoiceTraceTimelineRoutes = (options) => {
11096
11096
  return routes;
11097
11097
  };
11098
11098
 
11099
- // src/operationsRecord.ts
11099
+ // src/core/operationsRecord.ts
11100
11100
  var getString7 = (value) => typeof value === "string" ? value : undefined;
11101
11101
  var getNumber5 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
11102
11102
  var getBoolean = (value) => typeof value === "boolean" ? value : undefined;
@@ -11944,10 +11944,10 @@ var createVoiceOperationsRecordRoutes = (options) => {
11944
11944
  return routes;
11945
11945
  };
11946
11946
 
11947
- // src/sessionSnapshot.ts
11947
+ // src/core/sessionSnapshot.ts
11948
11948
  import { Elysia as Elysia12 } from "elysia";
11949
11949
 
11950
- // src/proofAssertions.ts
11950
+ // src/core/proofAssertions.ts
11951
11951
  var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
11952
11952
  var createVoiceProofAssertion = (input) => ({
11953
11953
  kind: "json-assertion",
@@ -11986,7 +11986,7 @@ var summarizeVoiceProofAssertions = (assertions) => {
11986
11986
  };
11987
11987
  };
11988
11988
 
11989
- // src/sessionSnapshot.ts
11989
+ // src/core/sessionSnapshot.ts
11990
11990
  var statusRank = (status) => {
11991
11991
  if (status === "fail") {
11992
11992
  return 2;
@@ -12121,7 +12121,7 @@ var createVoiceSessionSnapshotRoutes = (options = {}) => {
12121
12121
  return app;
12122
12122
  };
12123
12123
 
12124
- // src/callDebugger.ts
12124
+ // src/core/callDebugger.ts
12125
12125
  var resolveSessionId = (params) => {
12126
12126
  const sessionId = params.sessionId;
12127
12127
  return typeof sessionId === "string" ? sessionId : "";
@@ -12271,7 +12271,15 @@ var createVoiceCallDebuggerRoutes = (options) => {
12271
12271
  return app;
12272
12272
  };
12273
12273
 
12274
- // src/campaign.ts
12274
+ // src/internal/evidence.ts
12275
+ var assertVoiceEvidence = (failureMessage, assertion) => {
12276
+ if (!assertion.ok) {
12277
+ throw new Error(`${failureMessage}: ${assertion.issues.join(" ")}`);
12278
+ }
12279
+ return assertion;
12280
+ };
12281
+
12282
+ // src/core/campaign.ts
12275
12283
  import { Elysia as Elysia14 } from "elysia";
12276
12284
  var createId2 = () => crypto.randomUUID();
12277
12285
  var cloneRecord = (record) => ({
@@ -13399,11 +13407,7 @@ var evaluateVoiceCampaignReadinessEvidence = (report, input = {}) => {
13399
13407
  };
13400
13408
  };
13401
13409
  var assertVoiceCampaignReadinessEvidence = (report, input = {}) => {
13402
- const assertion = evaluateVoiceCampaignReadinessEvidence(report, input);
13403
- if (!assertion.ok) {
13404
- throw new Error(`Voice campaign readiness evidence assertion failed: ${assertion.issues.join(" ")}`);
13405
- }
13406
- return assertion;
13410
+ return assertVoiceEvidence("Voice campaign readiness evidence assertion failed", evaluateVoiceCampaignReadinessEvidence(report, input));
13407
13411
  };
13408
13412
  var getString8 = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
13409
13413
  var campaignAttemptSessionId = (attempt) => getString8(attempt.metadata?.sessionId) ?? getString8(attempt.metadata?.voiceSessionId) ?? getString8(attempt.metadata?.callSessionId);
@@ -13483,7 +13487,7 @@ var createVoiceCampaignRoutes = (options) => {
13483
13487
  return app;
13484
13488
  };
13485
13489
 
13486
- // src/competitiveCoverage.ts
13490
+ // src/core/competitiveCoverage.ts
13487
13491
  import { Elysia as Elysia15 } from "elysia";
13488
13492
  var escapeMarkdown = (value) => value.replaceAll("|", "\\|");
13489
13493
  var resolveSurfaceStatus = (surface) => {
@@ -13713,7 +13717,7 @@ var createVoiceCompetitiveCoverageRoutes = (options) => {
13713
13717
  return app;
13714
13718
  };
13715
13719
 
13716
- // src/dataControl.ts
13720
+ // src/core/dataControl.ts
13717
13721
  import { Elysia as Elysia16 } from "elysia";
13718
13722
  var voiceComplianceRedactionDefaults = {
13719
13723
  keys: [
@@ -14151,11 +14155,7 @@ var evaluateVoiceDataControlEvidence = (report, input = {}) => {
14151
14155
  };
14152
14156
  };
14153
14157
  var assertVoiceDataControlEvidence = (report, input = {}) => {
14154
- const assertion = evaluateVoiceDataControlEvidence(report, input);
14155
- if (!assertion.ok) {
14156
- throw new Error(`Voice data-control evidence assertion failed: ${assertion.issues.join(" ")}`);
14157
- }
14158
- return assertion;
14158
+ return assertVoiceEvidence("Voice data-control evidence assertion failed", evaluateVoiceDataControlEvidence(report, input));
14159
14159
  };
14160
14160
  var createVoiceZeroRetentionPolicy = (options) => ({
14161
14161
  ...options,
@@ -14328,12 +14328,12 @@ var createVoiceDataControlRoutes = (options) => {
14328
14328
  return routes;
14329
14329
  };
14330
14330
 
14331
- // src/deliveryRuntime.ts
14331
+ // src/core/deliveryRuntime.ts
14332
14332
  import { Elysia as Elysia17 } from "elysia";
14333
14333
  import { mkdir } from "fs/promises";
14334
14334
  import { dirname, join } from "path";
14335
14335
 
14336
- // src/queue.ts
14336
+ // src/core/queue.ts
14337
14337
  var releaseLeaseScript = `
14338
14338
  if redis.call("GET", KEYS[1]) == ARGV[1] then
14339
14339
  return redis.call("DEL", KEYS[1])
@@ -15273,7 +15273,7 @@ var createVoiceOpsTaskProcessorWorkerLoop = (options) => {
15273
15273
  };
15274
15274
  };
15275
15275
 
15276
- // src/deliveryRuntime.ts
15276
+ // src/core/deliveryRuntime.ts
15277
15277
  var renderSummaryCard = (label, summary) => {
15278
15278
  if (!summary) {
15279
15279
  return `<article><span>${escapeHtml(label)}</span><strong>Disabled</strong><p class="muted">No worker configured.</p></article>`;
@@ -15572,7 +15572,7 @@ var worstVoiceStatus = (statuses) => {
15572
15572
  return worst;
15573
15573
  };
15574
15574
 
15575
- // src/deliverySinkRoutes.ts
15575
+ // src/core/deliverySinkRoutes.ts
15576
15576
  import { Elysia as Elysia18 } from "elysia";
15577
15577
  var deliveryStatus = (summary) => {
15578
15578
  if (!summary) {
@@ -15708,7 +15708,7 @@ var createVoiceDeliverySinkRoutes = (options) => {
15708
15708
  return routes;
15709
15709
  };
15710
15710
 
15711
- // src/demoReadyRoutes.ts
15711
+ // src/core/demoReadyRoutes.ts
15712
15712
  import { Elysia as Elysia19 } from "elysia";
15713
15713
  var rollupStatus = (sections) => worstVoiceStatus(sections.map((section) => section.status));
15714
15714
  var resolveLoader = async (loader, input) => typeof loader === "function" ? await loader(input) : loader;
@@ -15825,7 +15825,7 @@ var createVoiceDemoReadyRoutes = (options) => {
15825
15825
  return routes;
15826
15826
  };
15827
15827
 
15828
- // src/diagnosticsRoutes.ts
15828
+ // src/core/diagnosticsRoutes.ts
15829
15829
  import { Elysia as Elysia20 } from "elysia";
15830
15830
  var getString9 = (value) => typeof value === "string" && value.trim() ? value : undefined;
15831
15831
  var getNumber6 = (value) => {
@@ -15963,15 +15963,15 @@ var createVoiceDiagnosticsRoutes = (options) => {
15963
15963
  return routes;
15964
15964
  };
15965
15965
 
15966
- // src/evalRoutes.ts
15966
+ // src/core/evalRoutes.ts
15967
15967
  import { Elysia as Elysia23 } from "elysia";
15968
15968
  import { mkdir as mkdir2 } from "fs/promises";
15969
15969
  import { dirname as dirname2 } from "path";
15970
15970
 
15971
- // src/qualityRoutes.ts
15971
+ // src/core/qualityRoutes.ts
15972
15972
  import { Elysia as Elysia22 } from "elysia";
15973
15973
 
15974
- // src/handoffHealth.ts
15974
+ // src/core/handoffHealth.ts
15975
15975
  import { Elysia as Elysia21 } from "elysia";
15976
15976
  var getString10 = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
15977
15977
  var isStatus = (value) => value === "delivered" || value === "failed" || value === "skipped";
@@ -16163,7 +16163,7 @@ var createVoiceHandoffHealthRoutes = (options = {}) => {
16163
16163
  return routes;
16164
16164
  };
16165
16165
 
16166
- // src/qualityRoutes.ts
16166
+ // src/core/qualityRoutes.ts
16167
16167
  var DEFAULT_THRESHOLDS = {
16168
16168
  maxDuplicateTurnRate: 0,
16169
16169
  maxEmptyTurnRate: 0.02,
@@ -16312,7 +16312,7 @@ var createVoiceQualityRoutes = (options) => {
16312
16312
  return routes;
16313
16313
  };
16314
16314
 
16315
- // src/evalRoutes.ts
16315
+ // src/core/evalRoutes.ts
16316
16316
  var rate2 = (count, total) => count / Math.max(1, total);
16317
16317
  var normalizeSearchText = (value) => value.trim().toLowerCase();
16318
16318
  var getString12 = (value) => typeof value === "string" ? value : undefined;
@@ -16842,7 +16842,7 @@ var createVoiceEvalRoutes = (options) => {
16842
16842
  return routes;
16843
16843
  };
16844
16844
 
16845
- // src/guardrails.ts
16845
+ // src/core/guardrails.ts
16846
16846
  import { Elysia as Elysia24 } from "elysia";
16847
16847
  var stringifyContent = (value) => typeof value === "string" ? value : JSON.stringify(value) ?? "";
16848
16848
  var appliesToStage = (rule, stage) => !rule.stages || rule.stages.length === 0 || rule.stages.includes(stage);
@@ -17180,7 +17180,7 @@ var createVoiceGuardrailRoutes = (options = {}) => {
17180
17180
  return routes;
17181
17181
  };
17182
17182
 
17183
- // src/htmxDashboardRoutes.ts
17183
+ // src/core/htmxDashboardRoutes.ts
17184
17184
  import { Elysia as Elysia25 } from "elysia";
17185
17185
 
17186
17186
  // src/client/costDashboard.ts
@@ -17263,7 +17263,7 @@ var buildVoiceCostDashboardReport = (options) => {
17263
17263
  };
17264
17264
  };
17265
17265
 
17266
- // src/agentState.ts
17266
+ // src/core/agentState.ts
17267
17267
  var deriveVoiceAgentUIState = (input) => {
17268
17268
  if (!input.isConnected) {
17269
17269
  return "idle";
@@ -17663,7 +17663,7 @@ var renderVoiceLiveCallViewerFromState = (input) => renderVoiceLiveCallViewerHTM
17663
17663
  });
17664
17664
  var createLiveCallViewerFromOptions = createLiveCallViewer;
17665
17665
 
17666
- // src/htmxDashboardRoutes.ts
17666
+ // src/core/htmxDashboardRoutes.ts
17667
17667
  var HTML_HEADERS = { "content-type": "text/html; charset=utf-8" };
17668
17668
  var createVoiceCostDashboardHTMXRoute = (options) => {
17669
17669
  const renderers = resolveVoiceDashboardRenderers(options.render);
@@ -17778,7 +17778,7 @@ var createVoiceHTMXDashboardRoutesFromStores = (options) => createVoiceHTMXDashb
17778
17778
  } : undefined
17779
17779
  });
17780
17780
 
17781
- // src/incidentBundle.ts
17781
+ // src/core/incidentBundle.ts
17782
17782
  import { Elysia as Elysia26 } from "elysia";
17783
17783
  var filterIncidentBundleArtifacts = (artifacts, filter = {}) => artifacts.filter((artifact) => {
17784
17784
  if (filter.sessionId && artifact.sessionId !== filter.sessionId) {
@@ -18026,10 +18026,10 @@ var createVoiceIncidentBundleRoutes = (options) => {
18026
18026
  return routes;
18027
18027
  };
18028
18028
 
18029
- // src/incidentTimeline.ts
18029
+ // src/core/incidentTimeline.ts
18030
18030
  import { Elysia as Elysia28 } from "elysia";
18031
18031
 
18032
- // src/opsActionAuditRoutes.ts
18032
+ // src/core/opsActionAuditRoutes.ts
18033
18033
  import { Elysia as Elysia27 } from "elysia";
18034
18034
  var readRecordBody = (body) => {
18035
18035
  if (!body || typeof body !== "object") {
@@ -18160,7 +18160,7 @@ var renderVoiceOpsActionHistoryHTML = (report) => {
18160
18160
  return `<!doctype html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>Voice Ops Action History</title><style>body{background:#11140f;color:#f7f1df;font-family:ui-sans-serif,system-ui,sans-serif;margin:0}main{margin:auto;max-width:980px;padding:32px}.hero,article{background:#181d15;border:1px solid #2c3327;border-radius:24px;padding:20px}.hero{margin-bottom:16px}h1{font-size:clamp(2rem,6vw,4rem);line-height:.95}section{display:grid;gap:12px}article.ok{border-color:rgba(34,197,94,.55)}article.fail{border-color:rgba(239,68,68,.75)}span{color:#facc15;font-weight:900;text-transform:uppercase}p{color:#c8ccb8}</style></head><body><main><section class="hero"><span>Operator proof</span><h1>Voice Ops Action History</h1><p>${String(report.total)} action(s), ${String(report.failed)} failed.</p></section><section>${rows || "<p>No operator actions have been recorded.</p>"}</section></main></body></html>`;
18161
18161
  };
18162
18162
 
18163
- // src/incidentTimeline.ts
18163
+ // src/core/incidentTimeline.ts
18164
18164
  var resolveValue = async (value) => typeof value === "function" ? await value() : value;
18165
18165
  var linkForSession = (link, sessionId) => {
18166
18166
  if (!link || !sessionId) {
@@ -18937,7 +18937,7 @@ var createVoiceIncidentTimelineRoutes = (options) => {
18937
18937
  return routes;
18938
18938
  };
18939
18939
 
18940
- // src/liveLatency.ts
18940
+ // src/core/liveLatency.ts
18941
18941
  import { Elysia as Elysia29 } from "elysia";
18942
18942
  var percentile = (values, percentileValue) => {
18943
18943
  if (values.length === 0) {
@@ -19028,7 +19028,7 @@ var createVoiceLiveLatencyRoutes = (options) => {
19028
19028
  return routes;
19029
19029
  };
19030
19030
 
19031
- // src/liveOps.ts
19031
+ // src/core/liveOps.ts
19032
19032
  import { Elysia as Elysia30 } from "elysia";
19033
19033
  var VOICE_LIVE_OPS_ACTIONS = [
19034
19034
  "assign",
@@ -19130,11 +19130,7 @@ var evaluateVoiceLiveOpsEvidence = (input = {}) => {
19130
19130
  };
19131
19131
  };
19132
19132
  var assertVoiceLiveOpsEvidence = (input = {}) => {
19133
- const assertion = evaluateVoiceLiveOpsEvidence(input);
19134
- if (!assertion.ok) {
19135
- throw new Error(`Voice live-ops evidence assertion failed: ${assertion.issues.join(" ")}`);
19136
- }
19137
- return assertion;
19133
+ return assertVoiceEvidence("Voice live-ops evidence assertion failed", evaluateVoiceLiveOpsEvidence(input));
19138
19134
  };
19139
19135
  var evaluateVoiceLiveOpsControlEvidence = (input = {}) => {
19140
19136
  const issues = [];
@@ -19182,11 +19178,7 @@ var evaluateVoiceLiveOpsControlEvidence = (input = {}) => {
19182
19178
  };
19183
19179
  };
19184
19180
  var assertVoiceLiveOpsControlEvidence = (input = {}) => {
19185
- const assertion = evaluateVoiceLiveOpsControlEvidence(input);
19186
- if (!assertion.ok) {
19187
- throw new Error(`Voice live-ops control evidence assertion failed: ${assertion.issues.join(" ")}`);
19188
- }
19189
- return assertion;
19181
+ return assertVoiceEvidence("Voice live-ops control evidence assertion failed", evaluateVoiceLiveOpsControlEvidence(input));
19190
19182
  };
19191
19183
  var createVoiceMemoryLiveOpsControlStore = () => {
19192
19184
  const states = new Map;
@@ -19361,7 +19353,7 @@ var createVoiceLiveOpsRoutes = (options = {}) => {
19361
19353
  });
19362
19354
  };
19363
19355
 
19364
- // src/mediaPipelineRoutes.ts
19356
+ // src/core/mediaPipelineRoutes.ts
19365
19357
  import { Elysia as Elysia31 } from "elysia";
19366
19358
  import {
19367
19359
  buildMediaInterruptionReport,
@@ -19505,11 +19497,7 @@ var evaluateVoiceMediaPipelineEvidence = (report, input = {}) => {
19505
19497
  };
19506
19498
  };
19507
19499
  var assertVoiceMediaPipelineEvidence = (report, input = {}) => {
19508
- const assertion = evaluateVoiceMediaPipelineEvidence(report, input);
19509
- if (!assertion.ok) {
19510
- throw new Error(`Voice media pipeline assertion failed: ${assertion.issues.join(" ")}`);
19511
- }
19512
- return assertion;
19500
+ return assertVoiceEvidence("Voice media pipeline assertion failed", evaluateVoiceMediaPipelineEvidence(report, input));
19513
19501
  };
19514
19502
  var renderVoiceMediaPipelineMarkdown = (report) => [
19515
19503
  "# Voice Media Pipeline Proof",
@@ -19673,7 +19661,7 @@ var summarizeVoiceMediaPipelineReport = (report, options = {}) => {
19673
19661
  };
19674
19662
  };
19675
19663
 
19676
- // src/monitor.ts
19664
+ // src/core/monitor.ts
19677
19665
  import { Elysia as Elysia32 } from "elysia";
19678
19666
  var buildAudioFanout = () => {
19679
19667
  const handlers = new Set;
@@ -20134,7 +20122,7 @@ var createVoiceLiveMonitorRoutes = (options) => {
20134
20122
  return app;
20135
20123
  };
20136
20124
 
20137
- // src/observabilityExport.ts
20125
+ // src/core/observabilityExport.ts
20138
20126
  import { Elysia as Elysia33 } from "elysia";
20139
20127
  import { Database } from "bun:sqlite";
20140
20128
  import { createHash } from "crypto";
@@ -20703,11 +20691,7 @@ var evaluateVoiceObservabilityExportReplayEvidence = (report, input = {}) => {
20703
20691
  };
20704
20692
  };
20705
20693
  var assertVoiceObservabilityExportReplayEvidence = (report, input = {}) => {
20706
- const assertion = evaluateVoiceObservabilityExportReplayEvidence(report, input);
20707
- if (!assertion.ok) {
20708
- throw new Error(`Voice observability export replay assertion failed: ${assertion.issues.join(" ")}`);
20709
- }
20710
- return assertion;
20694
+ return assertVoiceEvidence("Voice observability export replay assertion failed", evaluateVoiceObservabilityExportReplayEvidence(report, input));
20711
20695
  };
20712
20696
  var loadVoiceObservabilityExportReplaySource = async (source) => {
20713
20697
  if (source.kind === "records") {
@@ -21056,11 +21040,7 @@ var evaluateVoiceObservabilityExportDeliveryEvidence = (history, input = {}) =>
21056
21040
  };
21057
21041
  };
21058
21042
  var assertVoiceObservabilityExportDeliveryEvidence = (history, input = {}) => {
21059
- const assertion = evaluateVoiceObservabilityExportDeliveryEvidence(history, input);
21060
- if (!assertion.ok) {
21061
- throw new Error(`Voice observability export delivery assertion failed: ${assertion.issues.join(" ")}`);
21062
- }
21063
- return assertion;
21043
+ return assertVoiceEvidence("Voice observability export delivery assertion failed", evaluateVoiceObservabilityExportDeliveryEvidence(history, input));
21064
21044
  };
21065
21045
  var inferContentType = (artifact) => {
21066
21046
  if (artifact.contentType) {
@@ -21742,13 +21722,13 @@ var createVoiceObservabilityExportRoutes = (options = {}) => {
21742
21722
  return app;
21743
21723
  };
21744
21724
 
21745
- // src/operationalStatus.ts
21725
+ // src/core/operationalStatus.ts
21746
21726
  import { Elysia as Elysia45 } from "elysia";
21747
21727
 
21748
- // src/productionReadiness.ts
21728
+ // src/core/productionReadiness.ts
21749
21729
  import { Elysia as Elysia44 } from "elysia";
21750
21730
 
21751
- // src/resilienceRoutes.ts
21731
+ // src/core/resilienceRoutes.ts
21752
21732
  import { Elysia as Elysia34 } from "elysia";
21753
21733
  var getString14 = (value) => typeof value === "string" ? value : undefined;
21754
21734
  var getNumber8 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -22419,7 +22399,7 @@ var createVoiceTelephonyCarrierMatrixRoutes = (options) => {
22419
22399
  });
22420
22400
  };
22421
22401
 
22422
- // src/telephonyOutcome.ts
22402
+ // src/core/telephonyOutcome.ts
22423
22403
  import { Elysia as Elysia36 } from "elysia";
22424
22404
  var DEFAULT_COMPLETED_STATUSES = [
22425
22405
  "answered",
@@ -22584,11 +22564,7 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
22584
22564
  };
22585
22565
  };
22586
22566
  var assertVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
22587
- const assertion = evaluateVoiceTelephonyWebhookNormalizationEvidence(input);
22588
- if (!assertion.ok) {
22589
- throw new Error(`Voice telephony webhook normalization evidence assertion failed: ${assertion.issues.join(" ")}`);
22590
- }
22591
- return assertion;
22567
+ return assertVoiceEvidence("Voice telephony webhook normalization evidence assertion failed", evaluateVoiceTelephonyWebhookNormalizationEvidence(input));
22592
22568
  };
22593
22569
  var normalizeToken = (value) => typeof value === "string" ? value.trim().toLowerCase().replace(/\s+/g, "-").replace(/_+/g, "-") : undefined;
22594
22570
  var firstString2 = (source, keys) => {
@@ -23214,7 +23190,7 @@ var createVoiceTelephonyWebhookRoutes = (options = {}) => {
23214
23190
  // src/telephony/security.ts
23215
23191
  import { Elysia as Elysia40 } from "elysia";
23216
23192
 
23217
- // src/postgresStore.ts
23193
+ // src/core/postgresStore.ts
23218
23194
  var normalizeIdentifierSegment = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice";
23219
23195
  var quoteIdentifier = (value) => `"${value.replace(/"/g, '""')}"`;
23220
23196
  var resolveStoreTableName = (input) => {
@@ -23474,7 +23450,7 @@ var createVoicePostgresRuntimeStorage = (options) => {
23474
23450
  };
23475
23451
  };
23476
23452
 
23477
- // src/sqliteStore.ts
23453
+ // src/core/sqliteStore.ts
23478
23454
  import { Database as Database2 } from "bun:sqlite";
23479
23455
  var normalizeTableNameSegment = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice";
23480
23456
  var resolveTableName = (input) => {
@@ -26003,11 +25979,7 @@ var evaluateVoiceTelephonyWebhookSecurityEvidence = (report, input = {}) => {
26003
25979
  };
26004
25980
  };
26005
25981
  var assertVoiceTelephonyWebhookSecurityEvidence = (report, input = {}) => {
26006
- const assertion = evaluateVoiceTelephonyWebhookSecurityEvidence(report, input);
26007
- if (!assertion.ok) {
26008
- throw new Error(`Voice telephony webhook security assertion failed: ${assertion.issues.join(" ")}`);
26009
- }
26010
- return assertion;
25982
+ return assertVoiceEvidence("Voice telephony webhook security assertion failed", evaluateVoiceTelephonyWebhookSecurityEvidence(report, input));
26011
25983
  };
26012
25984
  var createVoiceTelephonyWebhookSecurityRoutes = (options) => {
26013
25985
  const path = options.path ?? "/api/voice/telephony/webhook-security";
@@ -26067,7 +26039,7 @@ var createVoiceTelephonyWebhookSecurityPreset = (options = {}) => {
26067
26039
  };
26068
26040
  };
26069
26041
 
26070
- // src/providerSlo.ts
26042
+ // src/core/providerSlo.ts
26071
26043
  import { Elysia as Elysia41 } from "elysia";
26072
26044
  var defaultThresholds = {
26073
26045
  llm: {
@@ -26356,11 +26328,7 @@ var evaluateVoiceProviderSloEvidence = (report, input = {}) => {
26356
26328
  };
26357
26329
  };
26358
26330
  var assertVoiceProviderSloEvidence = (report, input = {}) => {
26359
- const assertion = evaluateVoiceProviderSloEvidence(report, input);
26360
- if (!assertion.ok) {
26361
- throw new Error(`Voice provider SLO assertion failed: ${assertion.issues.join(" ")}`);
26362
- }
26363
- return assertion;
26331
+ return assertVoiceEvidence("Voice provider SLO assertion failed", evaluateVoiceProviderSloEvidence(report, input));
26364
26332
  };
26365
26333
  var formatMetricValue2 = (metric) => metric.unit === "rate" ? `${(metric.actual * 100).toFixed(2)}%` : metric.unit === "ms" ? `${Math.round(metric.actual)}ms` : String(metric.actual);
26366
26334
  var formatMetricThreshold = (metric) => metric.unit === "rate" ? `${(metric.threshold * 100).toFixed(2)}%` : metric.unit === "ms" ? `${Math.round(metric.threshold)}ms` : String(metric.threshold);
@@ -26453,7 +26421,7 @@ var createVoiceProviderSloRoutes = (options) => {
26453
26421
  return app;
26454
26422
  };
26455
26423
 
26456
- // src/sessionObservability.ts
26424
+ // src/core/sessionObservability.ts
26457
26425
  import { Elysia as Elysia42 } from "elysia";
26458
26426
  var formatMs4 = (value) => value === undefined ? "n/a" : `${String(value)}ms`;
26459
26427
  var resolveHref = (href, sessionId) => {
@@ -26722,11 +26690,7 @@ var evaluateVoiceSessionObservabilityEvidence = (report, input = {}) => {
26722
26690
  };
26723
26691
  };
26724
26692
  var assertVoiceSessionObservabilityEvidence = (report, input = {}) => {
26725
- const assertion = evaluateVoiceSessionObservabilityEvidence(report, input);
26726
- if (!assertion.ok) {
26727
- throw new Error(`Voice session observability evidence assertion failed: ${assertion.issues.join(" ")}`);
26728
- }
26729
- return assertion;
26693
+ return assertVoiceEvidence("Voice session observability evidence assertion failed", evaluateVoiceSessionObservabilityEvidence(report, input));
26730
26694
  };
26731
26695
  var createVoiceSessionObservabilityRoutes = (options) => {
26732
26696
  const path = options.path ?? "/api/voice/session-observability/:sessionId";
@@ -26780,10 +26744,10 @@ var createVoiceSessionObservabilityRoutes = (options) => {
26780
26744
  return routes;
26781
26745
  };
26782
26746
 
26783
- // src/opsRecovery.ts
26747
+ // src/core/opsRecovery.ts
26784
26748
  import { Elysia as Elysia43 } from "elysia";
26785
26749
 
26786
- // src/latencySlo.ts
26750
+ // src/core/latencySlo.ts
26787
26751
  var DEFAULT_WARN_AFTER_MS = 1800;
26788
26752
  var DEFAULT_FAIL_AFTER_MS = 3200;
26789
26753
  var STAGE_LABELS = {
@@ -27086,7 +27050,7 @@ None.
27086
27050
  `}`;
27087
27051
  };
27088
27052
 
27089
- // src/opsRecovery.ts
27053
+ // src/core/opsRecovery.ts
27090
27054
  var getString16 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
27091
27055
  var hrefForSession = (value, sessionId) => {
27092
27056
  if (typeof value === "function") {
@@ -27341,7 +27305,7 @@ var createVoiceOpsRecoveryRoutes = (options = {}) => {
27341
27305
  return routes;
27342
27306
  };
27343
27307
 
27344
- // src/productionReadiness.ts
27308
+ // src/core/productionReadiness.ts
27345
27309
  var buildVoiceReadinessRecoveryActions = (input, options = {}) => {
27346
27310
  const checks = "checks" in input ? input.checks : input;
27347
27311
  const includeWarnings = options.includeWarnings ?? true;
@@ -27653,11 +27617,7 @@ var evaluateVoiceProductionReadinessEvidence = (report, input = {}) => {
27653
27617
  };
27654
27618
  };
27655
27619
  var assertVoiceProductionReadinessEvidence = (report, input = {}) => {
27656
- const assertion = evaluateVoiceProductionReadinessEvidence(report, input);
27657
- if (!assertion.ok) {
27658
- throw new Error(`Voice production readiness assertion failed: ${assertion.issues.join(" ")}`);
27659
- }
27660
- return assertion;
27620
+ return assertVoiceEvidence("Voice production readiness assertion failed", evaluateVoiceProductionReadinessEvidence(report, input));
27661
27621
  };
27662
27622
  var carrierStatus = (matrix) => matrix.summary.failing > 0 ? "fail" : matrix.summary.warnings > 0 || matrix.summary.ready < matrix.summary.providers ? "warn" : "pass";
27663
27623
  var resolveCarriers = async (options, input) => {
@@ -29566,7 +29526,7 @@ var createVoiceProductionReadinessRoutes = (options) => {
29566
29526
  return routes;
29567
29527
  };
29568
29528
 
29569
- // src/operationalStatus.ts
29529
+ // src/core/operationalStatus.ts
29570
29530
  var resolveValue2 = async (value) => typeof value === "function" ? await value() : value;
29571
29531
  var isDeliveryRuntime = (value) => Boolean(value && typeof value === "object" && "isRunning" in value && "summarize" in value);
29572
29532
  var worstStatus3 = (statuses) => worstVoiceStatus(statuses);
@@ -29675,7 +29635,7 @@ var createVoiceOperationalStatusRoutes = (options) => {
29675
29635
  return routes;
29676
29636
  };
29677
29637
 
29678
- // src/opsConsoleRoutes.ts
29638
+ // src/core/opsConsoleRoutes.ts
29679
29639
  import { Elysia as Elysia46 } from "elysia";
29680
29640
  var DEFAULT_LINKS = [
29681
29641
  {
@@ -29800,10 +29760,10 @@ var createVoiceOpsConsoleRoutes = (options) => {
29800
29760
  return routes;
29801
29761
  };
29802
29762
 
29803
- // src/opsStatusRoutes.ts
29763
+ // src/core/opsStatusRoutes.ts
29804
29764
  import { Elysia as Elysia47 } from "elysia";
29805
29765
 
29806
- // src/opsStatus.ts
29766
+ // src/core/opsStatus.ts
29807
29767
  var DEFAULT_LINKS2 = [
29808
29768
  {
29809
29769
  description: "Production quality gates.",
@@ -29966,7 +29926,7 @@ var summarizeVoiceOpsStatus = async (options) => {
29966
29926
  };
29967
29927
  };
29968
29928
 
29969
- // src/opsStatusRoutes.ts
29929
+ // src/core/opsStatusRoutes.ts
29970
29930
  var renderVoiceOpsStatusHTML = (report, options = {}) => {
29971
29931
  const title = options.title ?? "AbsoluteJS Voice Ops Status";
29972
29932
  const surfaces = Object.entries(report.surfaces).map(([key, surface]) => {
@@ -29993,7 +29953,7 @@ var createVoiceOpsStatusRoutes = (options) => {
29993
29953
  return routes;
29994
29954
  };
29995
29955
 
29996
- // src/opsWebhook.ts
29956
+ // src/core/opsWebhook.ts
29997
29957
  import { Elysia as Elysia48 } from "elysia";
29998
29958
  var toHex6 = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
29999
29959
  var signVoiceOpsWebhookBody = async (input) => {
@@ -30157,7 +30117,7 @@ var createVoiceOpsWebhookReceiverRoutes = (options = {}) => {
30157
30117
  });
30158
30118
  };
30159
30119
 
30160
- // src/outcomeContract.ts
30120
+ // src/core/outcomeContract.ts
30161
30121
  import { Elysia as Elysia49 } from "elysia";
30162
30122
  var resolveSessionHref4 = (value, sessionId) => {
30163
30123
  if (value === false) {
@@ -30360,11 +30320,7 @@ var evaluateVoiceOutcomeContractEvidence = (report, input = {}) => {
30360
30320
  };
30361
30321
  };
30362
30322
  var assertVoiceOutcomeContractEvidence = (report, input = {}) => {
30363
- const assertion = evaluateVoiceOutcomeContractEvidence(report, input);
30364
- if (!assertion.ok) {
30365
- throw new Error(`Voice outcome contract evidence assertion failed: ${assertion.issues.join(" ")}`);
30366
- }
30367
- return assertion;
30323
+ return assertVoiceEvidence("Voice outcome contract evidence assertion failed", evaluateVoiceOutcomeContractEvidence(report, input));
30368
30324
  };
30369
30325
  var renderVoiceOutcomeContractHTML = (report, options = {}) => {
30370
30326
  const title = options.title ?? "Voice Outcome Contracts";
@@ -30415,7 +30371,7 @@ var createVoiceOutcomeContractRoutes = (options) => {
30415
30371
  return routes;
30416
30372
  };
30417
30373
 
30418
- // src/phoneAgentProductionSmoke.ts
30374
+ // src/core/phoneAgentProductionSmoke.ts
30419
30375
  import { Elysia as Elysia50 } from "elysia";
30420
30376
  var defaultRequirements = [
30421
30377
  "media-started",
@@ -30567,7 +30523,7 @@ var createVoicePhoneAgentProductionSmokeRoutes = (options) => {
30567
30523
  return routes;
30568
30524
  };
30569
30525
 
30570
- // src/platformCoverage.ts
30526
+ // src/core/platformCoverage.ts
30571
30527
  import { Elysia as Elysia51 } from "elysia";
30572
30528
  var buildVoicePlatformCoverageSummary = (input) => {
30573
30529
  const coverage = input.coverage ?? [];
@@ -30641,7 +30597,7 @@ var createVoicePlatformCoverageRoutes = (options) => {
30641
30597
  return routes;
30642
30598
  };
30643
30599
 
30644
- // src/postCallAnalysis.ts
30600
+ // src/core/postCallAnalysis.ts
30645
30601
  import { Elysia as Elysia52 } from "elysia";
30646
30602
  var isStore = (value) => Boolean(value) && typeof value === "object" && value !== null && ("list" in value);
30647
30603
  var asArray = async (value) => Array.isArray(value) ? value : isStore(value) ? await value.list() : [];
@@ -30846,7 +30802,7 @@ var createVoicePostCallAnalysisRoutes = (options = {}) => {
30846
30802
  return routes;
30847
30803
  };
30848
30804
 
30849
- // src/proofPack.ts
30805
+ // src/core/proofPack.ts
30850
30806
  import { Elysia as Elysia53 } from "elysia";
30851
30807
  import { mkdir as mkdir4 } from "fs/promises";
30852
30808
  import { dirname as dirname3, join as join3 } from "path";
@@ -31453,10 +31409,10 @@ var createVoiceProofPackRoutes = (options) => {
31453
31409
  return app;
31454
31410
  };
31455
31411
 
31456
- // src/proofTrends.ts
31412
+ // src/core/proofTrends.ts
31457
31413
  import { Elysia as Elysia55 } from "elysia";
31458
31414
 
31459
- // src/providerDecisionTraces.ts
31415
+ // src/core/providerDecisionTraces.ts
31460
31416
  import { Elysia as Elysia54 } from "elysia";
31461
31417
  var getString18 = (value) => typeof value === "string" ? value : undefined;
31462
31418
  var getNumber11 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -31770,7 +31726,7 @@ var createVoiceProviderDecisionTraceRoutes = (options) => {
31770
31726
  return app;
31771
31727
  };
31772
31728
 
31773
- // src/proofTrends.ts
31729
+ // src/core/proofTrends.ts
31774
31730
  var DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS = 24 * 60 * 60 * 1000;
31775
31731
  var DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS = [
31776
31732
  {
@@ -34010,11 +33966,7 @@ var evaluateVoiceProofTrendEvidence = (report, input = {}) => {
34010
33966
  };
34011
33967
  };
34012
33968
  var assertVoiceProofTrendEvidence = (report, input = {}) => {
34013
- const assertion = evaluateVoiceProofTrendEvidence(report, input);
34014
- if (!assertion.ok) {
34015
- throw new Error(`Voice proof trends assertion failed: ${assertion.issues.join(" ")}`);
34016
- }
34017
- return assertion;
33969
+ return assertVoiceEvidence("Voice proof trends assertion failed", evaluateVoiceProofTrendEvidence(report, input));
34018
33970
  };
34019
33971
  var DEFAULT_RECOMMENDATION_BUDGETS = {
34020
33972
  maxLiveP95Ms: 800,
@@ -34589,7 +34541,7 @@ var formatVoiceProofTrendAge = (ageMs) => {
34589
34541
  return `${days}d ${hours % 24}h`;
34590
34542
  };
34591
34543
 
34592
- // src/providerCapabilities.ts
34544
+ // src/core/providerCapabilities.ts
34593
34545
  import { Elysia as Elysia56 } from "elysia";
34594
34546
  var fromProviderList = (kind, providers, options) => (providers ?? []).map((provider) => ({
34595
34547
  configured: true,
@@ -34701,7 +34653,7 @@ var createVoiceProviderCapabilityRoutes = (options) => {
34701
34653
  return routes;
34702
34654
  };
34703
34655
 
34704
- // src/providerOrchestration.ts
34656
+ // src/core/providerOrchestration.ts
34705
34657
  import { Elysia as Elysia57 } from "elysia";
34706
34658
  var defaultRequirement = {
34707
34659
  minProviders: 1,
@@ -34907,7 +34859,7 @@ var createVoiceProviderOrchestrationRoutes = (options) => {
34907
34859
  return routes;
34908
34860
  };
34909
34861
 
34910
- // src/providerStackRecommendations.ts
34862
+ // src/core/providerStackRecommendations.ts
34911
34863
  import { Elysia as Elysia58 } from "elysia";
34912
34864
  var profileProviderPriorities = {
34913
34865
  "meeting-recorder": {
@@ -35186,11 +35138,7 @@ var evaluateVoiceProviderContractMatrixEvidence = (report, input = {}) => {
35186
35138
  };
35187
35139
  };
35188
35140
  var assertVoiceProviderContractMatrixEvidence = (report, input = {}) => {
35189
- const assertion = evaluateVoiceProviderContractMatrixEvidence(report, input);
35190
- if (!assertion.ok) {
35191
- throw new Error(`Voice provider contract matrix assertion failed: ${assertion.issues.join(" ")}`);
35192
- }
35193
- return assertion;
35141
+ return assertVoiceEvidence("Voice provider contract matrix assertion failed", evaluateVoiceProviderContractMatrixEvidence(report, input));
35194
35142
  };
35195
35143
  var createVoiceProviderContractMatrixPreset = (profile, options) => {
35196
35144
  const contracts = ["llm", "stt", "tts"].flatMap((kind) => {
@@ -35380,14 +35328,10 @@ var evaluateVoiceProviderStackEvidence = (report, input = {}) => {
35380
35328
  };
35381
35329
  };
35382
35330
  var assertVoiceProviderStackEvidence = (report, input = {}) => {
35383
- const assertion = evaluateVoiceProviderStackEvidence(report, input);
35384
- if (!assertion.ok) {
35385
- throw new Error(`Voice provider stack assertion failed: ${assertion.issues.join(" ")}`);
35386
- }
35387
- return assertion;
35331
+ return assertVoiceEvidence("Voice provider stack assertion failed", evaluateVoiceProviderStackEvidence(report, input));
35388
35332
  };
35389
35333
 
35390
- // src/realtimeChannel.ts
35334
+ // src/core/realtimeChannel.ts
35391
35335
  import { Elysia as Elysia59 } from "elysia";
35392
35336
  var DEFAULT_REALTIME_FORMAT2 = {
35393
35337
  channels: 1,
@@ -35622,11 +35566,7 @@ var evaluateVoiceRealtimeChannelEvidence = (report, input = {}) => {
35622
35566
  };
35623
35567
  };
35624
35568
  var assertVoiceRealtimeChannelEvidence = (report, input = {}) => {
35625
- const assertion = evaluateVoiceRealtimeChannelEvidence(report, input);
35626
- if (!assertion.ok) {
35627
- throw new Error(`Voice realtime channel assertion failed: ${assertion.issues.join(" ")}`);
35628
- }
35629
- return assertion;
35569
+ return assertVoiceEvidence("Voice realtime channel assertion failed", evaluateVoiceRealtimeChannelEvidence(report, input));
35630
35570
  };
35631
35571
  var renderVoiceRealtimeChannelMarkdown = (report) => [
35632
35572
  "# Voice Realtime Channel Proof",
@@ -35708,7 +35648,7 @@ var createVoiceRealtimeChannelRoutes = (options) => {
35708
35648
  return app;
35709
35649
  };
35710
35650
 
35711
- // src/realtimeProviderContracts.ts
35651
+ // src/core/realtimeProviderContracts.ts
35712
35652
  import { Elysia as Elysia60 } from "elysia";
35713
35653
  var defaultRequiredCapabilities = [
35714
35654
  "browser-format-negotiation",
@@ -35896,11 +35836,7 @@ var evaluateVoiceRealtimeProviderContractEvidence = (report, input = {}) => {
35896
35836
  };
35897
35837
  };
35898
35838
  var assertVoiceRealtimeProviderContractEvidence = (report, input = {}) => {
35899
- const assertion = evaluateVoiceRealtimeProviderContractEvidence(report, input);
35900
- if (!assertion.ok) {
35901
- throw new Error(`Voice realtime provider contract assertion failed: ${assertion.issues.join(" ")}`);
35902
- }
35903
- return assertion;
35839
+ return assertVoiceEvidence("Voice realtime provider contract assertion failed", evaluateVoiceRealtimeProviderContractEvidence(report, input));
35904
35840
  };
35905
35841
  var resolveMatrix = async (matrix) => typeof matrix === "function" ? await matrix() : matrix;
35906
35842
  var renderVoiceRealtimeProviderContractHTML = (report, title = "Voice Realtime Provider Contracts") => {
@@ -35940,7 +35876,7 @@ var createVoiceRealtimeProviderContractRoutes = (options) => {
35940
35876
  return routes;
35941
35877
  };
35942
35878
 
35943
- // src/reconnectContract.ts
35879
+ // src/core/reconnectContract.ts
35944
35880
  import { Elysia as Elysia61 } from "elysia";
35945
35881
  var unique2 = (values) => [...new Set(values)];
35946
35882
  var isReconnectPayload = (value) => {
@@ -36189,13 +36125,13 @@ var createVoiceReconnectContractRoutes = (options) => {
36189
36125
  return app;
36190
36126
  };
36191
36127
 
36192
- // src/simulationSuite.ts
36128
+ // src/core/simulationSuite.ts
36193
36129
  import { Elysia as Elysia63 } from "elysia";
36194
36130
 
36195
- // src/toolContract.ts
36131
+ // src/core/toolContract.ts
36196
36132
  import { Elysia as Elysia62 } from "elysia";
36197
36133
 
36198
- // src/toolRuntime.ts
36134
+ // src/core/toolRuntime.ts
36199
36135
  var toErrorMessage4 = (error) => error instanceof Error ? error.message : String(error);
36200
36136
  var sleep5 = (ms) => new Promise((resolve) => {
36201
36137
  setTimeout(resolve, ms);
@@ -36392,7 +36328,7 @@ var createVoiceToolIdempotencyKey = (input) => {
36392
36328
  ].join(":");
36393
36329
  };
36394
36330
 
36395
- // src/toolContract.ts
36331
+ // src/core/toolContract.ts
36396
36332
  var createDefaultSession = (contractId, caseId) => createVoiceSessionRecord(`tool-contract-${contractId}-${caseId}`);
36397
36333
  var createDefaultTurn = (caseId) => ({
36398
36334
  committedAt: Date.now(),
@@ -36644,11 +36580,7 @@ var evaluateVoiceToolContractEvidence = (report, input = {}) => {
36644
36580
  };
36645
36581
  };
36646
36582
  var assertVoiceToolContractEvidence = (report, input = {}) => {
36647
- const assertion = evaluateVoiceToolContractEvidence(report, input);
36648
- if (!assertion.ok) {
36649
- throw new Error(`Voice tool contract evidence assertion failed: ${assertion.issues.join(" ")}`);
36650
- }
36651
- return assertion;
36583
+ return assertVoiceEvidence("Voice tool contract evidence assertion failed", evaluateVoiceToolContractEvidence(report, input));
36652
36584
  };
36653
36585
  var renderVoiceToolContractHTML = (report, options = {}) => {
36654
36586
  const title = options.title ?? "Voice Tool Contracts";
@@ -36727,7 +36659,7 @@ var createVoiceToolContractRoutes = (options) => {
36727
36659
  return routes;
36728
36660
  };
36729
36661
 
36730
- // src/simulationSuite.ts
36662
+ // src/core/simulationSuite.ts
36731
36663
  var summarizeSection = (report) => ({
36732
36664
  failed: report.failed,
36733
36665
  passed: report.passed,
@@ -36913,11 +36845,7 @@ var evaluateVoiceSimulationSuiteEvidence = (report, input = {}) => {
36913
36845
  };
36914
36846
  };
36915
36847
  var assertVoiceSimulationSuiteEvidence = (report, input = {}) => {
36916
- const assertion = evaluateVoiceSimulationSuiteEvidence(report, input);
36917
- if (!assertion.ok) {
36918
- throw new Error(`Voice simulation suite evidence assertion failed: ${assertion.issues.join(" ")}`);
36919
- }
36920
- return assertion;
36848
+ return assertVoiceEvidence("Voice simulation suite evidence assertion failed", evaluateVoiceSimulationSuiteEvidence(report, input));
36921
36849
  };
36922
36850
  var renderSection = (label, summary) => {
36923
36851
  if (!summary) {
@@ -36987,7 +36915,7 @@ var createVoiceSimulationSuiteRoutes = (options) => {
36987
36915
  return app;
36988
36916
  };
36989
36917
 
36990
- // src/sloCalibration.ts
36918
+ // src/core/sloCalibration.ts
36991
36919
  import { Elysia as Elysia64 } from "elysia";
36992
36920
  var DEFAULT_HEADROOM_MULTIPLIER = 1.5;
36993
36921
  var DEFAULT_WARN_RATIO = 0.8;
@@ -37326,7 +37254,7 @@ var createVoiceSloReadinessThresholdRoutes = (options) => {
37326
37254
  return routes;
37327
37255
  };
37328
37256
 
37329
- // src/telephonyMediaRoutes.ts
37257
+ // src/core/telephonyMediaRoutes.ts
37330
37258
  import { Elysia as Elysia65 } from "elysia";
37331
37259
  import {
37332
37260
  buildMediaTelephonyStreamLifecycleReport,
@@ -37539,7 +37467,7 @@ var createVoiceTelephonyMediaRoutes = (options = {}) => {
37539
37467
  return routes;
37540
37468
  };
37541
37469
 
37542
- // src/traceDeliveryRoutes.ts
37470
+ // src/core/traceDeliveryRoutes.ts
37543
37471
  import { Elysia as Elysia66 } from "elysia";
37544
37472
  var getString19 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
37545
37473
  var getNumber12 = (value) => {
@@ -37666,7 +37594,7 @@ var createVoiceTraceDeliveryRoutes = (options) => {
37666
37594
  return routes;
37667
37595
  };
37668
37596
 
37669
- // src/turnLatency.ts
37597
+ // src/core/turnLatency.ts
37670
37598
  import { Elysia as Elysia67 } from "elysia";
37671
37599
  var DEFAULT_WARN_AFTER_MS2 = 1800;
37672
37600
  var DEFAULT_FAIL_AFTER_MS2 = 3200;
@@ -37835,7 +37763,7 @@ var createVoiceTurnLatencyRoutes = (options) => {
37835
37763
  return routes;
37836
37764
  };
37837
37765
 
37838
- // src/turnQuality.ts
37766
+ // src/core/turnQuality.ts
37839
37767
  import { Elysia as Elysia68 } from "elysia";
37840
37768
  var DEFAULT_CONFIDENCE_WARN_THRESHOLD = 0.72;
37841
37769
  var getTurnLatencyMs = (turn) => {
@@ -37950,7 +37878,7 @@ var createVoiceTurnQualityRoutes = (options) => {
37950
37878
  return routes;
37951
37879
  };
37952
37880
 
37953
- // src/voiceMonitoring.ts
37881
+ // src/core/voiceMonitoring.ts
37954
37882
  import { Elysia as Elysia69 } from "elysia";
37955
37883
  var issueIdForRun = (run) => `voice-monitor:${run.id}:${run.impactedSessions?.[0] ?? "global"}`;
37956
37884
  var rollupStatus5 = (runs) => worstVoiceStatus(runs.map((run) => run.status));
@@ -38299,7 +38227,7 @@ var createVoiceMonitorRunnerRoutes = (options) => {
38299
38227
  });
38300
38228
  };
38301
38229
 
38302
- // src/plugin.ts
38230
+ // src/core/plugin.ts
38303
38231
  var resolveQueryScenario = (query) => {
38304
38232
  if (typeof query?.scenarioId === "string" && query.scenarioId.trim()) {
38305
38233
  return query.scenarioId.trim();
@@ -38962,7 +38890,7 @@ var voice = (config) => {
38962
38890
  }
38963
38891
  }).use(htmxRoutes()).use(surfaceRoutes());
38964
38892
  };
38965
- // src/campaignDialers.ts
38893
+ // src/core/campaignDialers.ts
38966
38894
  import { Buffer as Buffer6 } from "buffer";
38967
38895
  var resolveFetch = (fetcher) => {
38968
38896
  const activeFetch = fetcher ?? globalThis.fetch;
@@ -39358,13 +39286,9 @@ var evaluateVoiceCampaignDialerProofEvidence = (report, input = {}) => {
39358
39286
  };
39359
39287
  };
39360
39288
  var assertVoiceCampaignDialerProofEvidence = (report, input = {}) => {
39361
- const assertion = evaluateVoiceCampaignDialerProofEvidence(report, input);
39362
- if (!assertion.ok) {
39363
- throw new Error(`Voice campaign dialer proof evidence assertion failed: ${assertion.issues.join(" ")}`);
39364
- }
39365
- return assertion;
39289
+ return assertVoiceEvidence("Voice campaign dialer proof evidence assertion failed", evaluateVoiceCampaignDialerProofEvidence(report, input));
39366
39290
  };
39367
- // src/mediaPipelineSurfaces.ts
39291
+ // src/core/mediaPipelineSurfaces.ts
39368
39292
  import {
39369
39293
  buildMediaProcessorGraphArtifact,
39370
39294
  buildMediaQualityArtifact,
@@ -39577,7 +39501,7 @@ var writeVoiceMediaPipelineArtifacts = async (options) => {
39577
39501
  }
39578
39502
  return { artifacts, hrefs };
39579
39503
  };
39580
- // src/proofRunner.ts
39504
+ // src/core/proofRunner.ts
39581
39505
  var encoder = new TextEncoder;
39582
39506
  var trimBaseUrl = (baseUrl) => baseUrl.replace(/\/$/, "");
39583
39507
  var safeArtifactName = (name) => name.replace(/[^a-z0-9_.-]/gi, "-");
@@ -39789,7 +39713,7 @@ var runVoiceCommandProofTarget = async (target, options) => {
39789
39713
  };
39790
39714
  };
39791
39715
  var runVoiceCommandProofTargets = (targets, options) => mapVoiceProofTargetsWithConcurrency(targets, options.concurrency ?? targets.length, (target) => runVoiceCommandProofTarget(target, options));
39792
- // src/providerRouterTraces.ts
39716
+ // src/core/providerRouterTraces.ts
39793
39717
  var buildVoiceProviderRouterTraceEvent = (options) => ({
39794
39718
  at: options.at ?? options.event.at,
39795
39719
  id: options.id ?? `${options.sessionId}:${options.turnId ?? "session"}:${options.event.provider}:${options.event.status}:${String(options.at ?? options.event.at)}`,
@@ -39820,7 +39744,7 @@ var buildVoiceIOProviderRouterTraceEvent = (options) => ({
39820
39744
  type: options.type ?? "session.error"
39821
39745
  });
39822
39746
  var appendVoiceIOProviderRouterTraceEvent = async (options) => options.store.append(buildVoiceIOProviderRouterTraceEvent(options));
39823
- // src/workflowContract.ts
39747
+ // src/core/workflowContract.ts
39824
39748
  var getObject2 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
39825
39749
  var getPathValue3 = (value, path) => {
39826
39750
  let current = value;
@@ -40122,7 +40046,7 @@ var createVoiceWorkflowContractHandler = (input) => {
40122
40046
  return result;
40123
40047
  };
40124
40048
  };
40125
- // src/conversationSimulator.ts
40049
+ // src/core/conversationSimulator.ts
40126
40050
  var createStubApi = (sessionId) => ({ id: sessionId });
40127
40051
  var callerTurnText = async (caller, transcript, turnIndex) => {
40128
40052
  if (caller.kind === "script") {
@@ -40240,7 +40164,7 @@ Respond with only your spoken line. When your goal is met or you want to hang up
40240
40164
  persona: options.persona
40241
40165
  };
40242
40166
  };
40243
- // src/mcpToolset.ts
40167
+ // src/core/mcpToolset.ts
40244
40168
  var flattenContent = (result) => {
40245
40169
  const blocks = result.content ?? [];
40246
40170
  const text = blocks.filter((block) => block.type === "text" && typeof block.text === "string").map((block) => block.text).join(`
@@ -40286,7 +40210,7 @@ var createVoiceMCPToolset = async (options) => {
40286
40210
  }
40287
40211
  return tools;
40288
40212
  };
40289
- // src/aiVoiceModel.ts
40213
+ // src/core/aiVoiceModel.ts
40290
40214
  var toProviderMessages = (messages) => {
40291
40215
  const out = [];
40292
40216
  for (const message of messages) {
@@ -40392,7 +40316,7 @@ var createAIVoiceModel = (options) => ({
40392
40316
  return output;
40393
40317
  }
40394
40318
  });
40395
- // src/llmJudge.ts
40319
+ // src/core/llmJudge.ts
40396
40320
  var DEFAULT_SYSTEM_PROMPT = "You are an impartial evaluator scoring a voice-agent transcript against a rubric. " + "For each criterion, decide pass/fail and give a one-sentence rationale grounded in the transcript. " + 'Respond with strict JSON: {"criteria":[{"criterionId":"\u2026","passed":true,"rationale":"\u2026"}],"summary":"\u2026"}.';
40397
40321
  var buildPrompt = (rubric, input) => {
40398
40322
  const criteriaBlock = rubric.criteria.map((criterion) => `- ${criterion.id}${criterion.required ? " (required)" : ""}: ${criterion.description}`).join(`
@@ -40518,7 +40442,7 @@ var createVoiceAIJudgeCompletion = (options) => async ({ prompt, systemPrompt })
40518
40442
  }
40519
40443
  return buffered;
40520
40444
  };
40521
- // src/redaction.ts
40445
+ // src/core/redaction.ts
40522
40446
  var DEFAULT_VOICE_REDACTION_PATTERNS = [
40523
40447
  {
40524
40448
  label: "credit-card",
@@ -40558,7 +40482,7 @@ var createVoiceTranscriptRedactor = (options = {}) => {
40558
40482
  };
40559
40483
  };
40560
40484
  var redactVoiceTranscript = (transcript, patterns = DEFAULT_VOICE_REDACTION_PATTERNS) => createVoiceTranscriptRedactor({ patterns })(transcript);
40561
- // src/recordingRedaction.ts
40485
+ // src/core/recordingRedaction.ts
40562
40486
  import {
40563
40487
  applyAudioRedaction,
40564
40488
  mergeAudioRedactionRanges
@@ -40617,7 +40541,7 @@ var redactVoiceRecording = (input) => {
40617
40541
  redactedCount: ranges.length
40618
40542
  };
40619
40543
  };
40620
- // src/variableAnalytics.ts
40544
+ // src/core/variableAnalytics.ts
40621
40545
  var stringifyValue = (value) => {
40622
40546
  if (value === null || value === undefined)
40623
40547
  return "(none)";
@@ -40691,7 +40615,7 @@ var buildVoiceVariableAnalytics = (input) => {
40691
40615
  }
40692
40616
  return { byVariable, overall, totalCalls };
40693
40617
  };
40694
- // src/zeroDataRetention.ts
40618
+ // src/core/zeroDataRetention.ts
40695
40619
  var RETAIN_ALL = {
40696
40620
  assistantText: true,
40697
40621
  metadata: true,
@@ -40751,7 +40675,7 @@ var scrubVoiceTraceForZeroDataRetention = (event, policy) => {
40751
40675
  return { ...event, payload: scrubbedPayload };
40752
40676
  };
40753
40677
  var VOICE_ZERO_DATA_RETENTION_REDACTION_MARKER = REDACTED;
40754
- // src/costAccounting.ts
40678
+ // src/core/costAccounting.ts
40755
40679
  var DEFAULT_VOICE_PRICE_BOOK = {
40756
40680
  "anthropic:claude-opus-4-5": {
40757
40681
  llm: {
@@ -40894,7 +40818,7 @@ var createVoiceCostAccountant = (options = {}) => {
40894
40818
  })
40895
40819
  };
40896
40820
  };
40897
- // src/semanticTurn.ts
40821
+ // src/core/semanticTurn.ts
40898
40822
  var DEFAULT_END_PUNCTUATION = [".", "?", "!"];
40899
40823
  var DEFAULT_FILLER_WORDS = [
40900
40824
  "uh",
@@ -40964,7 +40888,7 @@ var createRegexSemanticTurnDetector = (options) => {
40964
40888
  }
40965
40889
  };
40966
40890
  };
40967
- // src/webhookVerification.ts
40891
+ // src/core/webhookVerification.ts
40968
40892
  var VOICE_WEBHOOK_SIGNATURE_HEADER = "x-absolutejs-signature";
40969
40893
  var VOICE_WEBHOOK_TIMESTAMP_HEADER = "x-absolutejs-timestamp";
40970
40894
  var toHex7 = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
@@ -41035,7 +40959,7 @@ var extractVoiceWebhookSignatureFromHeaders = (headers) => {
41035
40959
  timestamp: get(VOICE_WEBHOOK_TIMESTAMP_HEADER)
41036
40960
  };
41037
40961
  };
41038
- // src/campaignControls.ts
40962
+ // src/core/campaignControls.ts
41039
40963
  var normalizePhoneNumber = (phone) => phone.replace(/[\s()-]/g, "").trim();
41040
40964
  var createInMemoryDNCList = (phones) => {
41041
40965
  const set = new Set(phones.map(normalizePhoneNumber));
@@ -41119,7 +41043,7 @@ var summarizeVoiceCampaignDispositions = (record) => {
41119
41043
  totalRecipients: record.recipients.length
41120
41044
  };
41121
41045
  };
41122
- // src/backchannel.ts
41046
+ // src/core/backchannel.ts
41123
41047
  var DEFAULT_CUES = [
41124
41048
  { text: "mm-hmm" },
41125
41049
  { text: "I see" },
@@ -41183,7 +41107,7 @@ var createVoiceBackchannelDriver = (options) => {
41183
41107
  }
41184
41108
  };
41185
41109
  };
41186
- // src/oauth2TokenSource.ts
41110
+ // src/core/oauth2TokenSource.ts
41187
41111
  var createVoiceOAuth2TokenSource = (options) => {
41188
41112
  const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
41189
41113
  const refreshSkewMs = (options.refreshSkewSeconds ?? 60) * 1000;
@@ -41243,7 +41167,7 @@ var createVoiceOAuth2TokenSource = (options) => {
41243
41167
  }
41244
41168
  };
41245
41169
  };
41246
- // src/ivrPlan.ts
41170
+ // src/core/ivrPlan.ts
41247
41171
  var speechMatchesPattern = (pattern, speech) => {
41248
41172
  const normalized = speech.toLowerCase().trim();
41249
41173
  if (pattern instanceof RegExp) {
@@ -41327,7 +41251,7 @@ var describeVoiceIVRPlan = (plan) => {
41327
41251
  return lines.join(`
41328
41252
  `);
41329
41253
  };
41330
- // src/callerMemory.ts
41254
+ // src/core/callerMemory.ts
41331
41255
  var VOICE_CALLER_MEMORY_KEY = "caller-memory-snapshot";
41332
41256
  var normalizeIdentifier = (value) => value.trim().replace(/[^a-zA-Z0-9+@._-]/g, "-").toLowerCase();
41333
41257
  var buildVoiceCallerMemoryNamespace = (identity, prefix = "caller") => {
@@ -41418,7 +41342,7 @@ Return JSON only.`;
41418
41342
  summary: typeof record.summary === "string" ? record.summary : ""
41419
41343
  };
41420
41344
  };
41421
- // src/otelExporter.ts
41345
+ // src/core/otelExporter.ts
41422
41346
  var SCOPE_NAME = "@absolutejs/voice";
41423
41347
  var SPAN_KIND_INTERNAL = 1;
41424
41348
  var STATUS_OK = 1;
@@ -41555,7 +41479,7 @@ var createVoiceOTELHTTPExporter = (options) => {
41555
41479
  }
41556
41480
  };
41557
41481
  };
41558
- // src/amdDetector.ts
41482
+ // src/core/amdDetector.ts
41559
41483
  var createMonologueAMDDetector = (options = {}) => {
41560
41484
  const minMonologueMs = options.minMonologueMs ?? 8000;
41561
41485
  const reason = options.reason ?? "monologue-suspected-voicemail";
@@ -41585,7 +41509,7 @@ var createMonologueAMDDetector = (options = {}) => {
41585
41509
  intervalMs: options.intervalMs ?? 1000
41586
41510
  };
41587
41511
  };
41588
- // src/agentTools.ts
41512
+ // src/core/agentTools.ts
41589
41513
  var createVoiceEndCallTool = (options = {}) => createVoiceAgentTool({
41590
41514
  description: options.description ?? "End the call gracefully. Call this only when the conversation is complete or the caller asks to hang up.",
41591
41515
  execute: async ({ api, args, context, session }) => {
@@ -41808,9 +41732,9 @@ var createVoiceApiRequestTool = (options) => {
41808
41732
  resultToMessage: options.formatResult ?? ((result) => result.ok ? `API request ${options.name} succeeded (${String(result.status)}).` : `API request ${options.name} failed with status ${String(result.status)}.`)
41809
41733
  });
41810
41734
  };
41811
- // src/voiceConfiguration.ts
41735
+ // src/core/voiceConfiguration.ts
41812
41736
  var createVoiceConfiguration = (configuration) => configuration;
41813
- // src/defineVoiceAssistant.ts
41737
+ // src/core/defineVoiceAssistant.ts
41814
41738
  var DEFAULT_SPEECH_THRESHOLD2 = 0.015;
41815
41739
  var DEFAULT_SILENCE_MS2 = 700;
41816
41740
  var DEFAULT_TRANSCRIPT_STABILITY_MS2 = 200;
@@ -41879,7 +41803,7 @@ var defineVoiceAssistant = (definition) => {
41879
41803
  }
41880
41804
  };
41881
41805
  };
41882
- // src/callQuota.ts
41806
+ // src/core/callQuota.ts
41883
41807
  var monthBucketKey = (epochMs) => {
41884
41808
  const date = new Date(epochMs);
41885
41809
  return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, "0")}`;
@@ -41977,7 +41901,7 @@ var createInMemoryVoiceCallQuota = (options) => {
41977
41901
  }
41978
41902
  };
41979
41903
  };
41980
- // src/routeAuth.ts
41904
+ // src/core/routeAuth.ts
41981
41905
  import { Elysia as Elysia71 } from "elysia";
41982
41906
  var createVoiceBearerAuthVerifier = (input) => {
41983
41907
  const headerName = (input.headerName ?? "authorization").toLowerCase();
@@ -42188,7 +42112,7 @@ var formatVoiceCallPlayerTimestamp = (ms) => {
42188
42112
  const remaining = seconds % 60;
42189
42113
  return `${String(minutes).padStart(2, "0")}:${String(remaining).padStart(2, "0")}`;
42190
42114
  };
42191
- // src/phoneProvisioning.ts
42115
+ // src/core/phoneProvisioning.ts
42192
42116
  var requireAuth = (input) => {
42193
42117
  if (!input.accountSid || !input.authToken) {
42194
42118
  throw new Error("Twilio provisioning requires accountSid + authToken");
@@ -42330,7 +42254,7 @@ var provisionTelnyxPhoneNumber = async (input) => {
42330
42254
  raw: orderResult
42331
42255
  };
42332
42256
  };
42333
- // src/webhookFanout.ts
42257
+ // src/core/webhookFanout.ts
42334
42258
  var deliverOnce = async (input) => {
42335
42259
  const startedAt = Date.now();
42336
42260
  const timeoutMs = input.sink.timeoutMs ?? 1e4;
@@ -42483,7 +42407,7 @@ var BROWSER_NOISE_SUPPRESSOR_PRESETS = {
42483
42407
  workletUrl
42484
42408
  })
42485
42409
  };
42486
- // src/retention.ts
42410
+ // src/core/retention.ts
42487
42411
  var defaultResolveAt = (event) => {
42488
42412
  if (!event || typeof event !== "object")
42489
42413
  return;
@@ -42536,7 +42460,7 @@ var createVoiceRetentionScheduler = (options) => {
42536
42460
  }
42537
42461
  };
42538
42462
  };
42539
- // src/vapiAdapter.ts
42463
+ // src/core/vapiAdapter.ts
42540
42464
  var VAPI_BUILT_IN_VARIABLES = {
42541
42465
  date: () => new Date().toISOString().slice(0, 10),
42542
42466
  now: () => new Date().toISOString(),
@@ -42810,7 +42734,7 @@ var fromVapiAssistantConfig = (config, options) => {
42810
42734
  unsupported
42811
42735
  };
42812
42736
  };
42813
- // src/agentSquadContract.ts
42737
+ // src/core/agentSquadContract.ts
42814
42738
  var normalizeIncludes = (value) => value.trim().toLowerCase();
42815
42739
  var resolveOutcome4 = (result) => {
42816
42740
  if (result.complete)
@@ -43112,13 +43036,9 @@ var evaluateVoiceAgentSquadContractEvidence = (reports, input = {}) => {
43112
43036
  };
43113
43037
  };
43114
43038
  var assertVoiceAgentSquadContractEvidence = (reports, input = {}) => {
43115
- const report = evaluateVoiceAgentSquadContractEvidence(reports, input);
43116
- if (!report.ok) {
43117
- throw new Error(`Voice agent squad contract evidence assertion failed: ${report.issues.join(" ")}`);
43118
- }
43119
- return report;
43039
+ return assertVoiceEvidence("Voice agent squad contract evidence assertion failed", evaluateVoiceAgentSquadContractEvidence(reports, input));
43120
43040
  };
43121
- // src/phoneAgent.ts
43041
+ // src/core/phoneAgent.ts
43122
43042
  import { Elysia as Elysia72 } from "elysia";
43123
43043
  var defaultSetupPath = (provider) => `/api/voice/${provider}/setup`;
43124
43044
  var defaultSmokePath = (provider) => `/api/voice/${provider}/smoke`;
@@ -43283,11 +43203,7 @@ var evaluateVoicePhoneAssistantEvidence = (report, input = {}) => {
43283
43203
  };
43284
43204
  };
43285
43205
  var assertVoicePhoneAssistantEvidence = (report, input = {}) => {
43286
- const assertion = evaluateVoicePhoneAssistantEvidence(report, input);
43287
- if (!assertion.ok) {
43288
- throw new Error(`Voice phone assistant evidence assertion failed: ${assertion.issues.join(" ")}`);
43289
- }
43290
- return assertion;
43206
+ return assertVoiceEvidence("Voice phone assistant evidence assertion failed", evaluateVoicePhoneAssistantEvidence(report, input));
43291
43207
  };
43292
43208
  var evaluateVoicePhoneCallControlEvidence = (input = {}) => {
43293
43209
  const issues = [];
@@ -43333,11 +43249,7 @@ var evaluateVoicePhoneCallControlEvidence = (input = {}) => {
43333
43249
  };
43334
43250
  };
43335
43251
  var assertVoicePhoneCallControlEvidence = (input = {}) => {
43336
- const assertion = evaluateVoicePhoneCallControlEvidence(input);
43337
- if (!assertion.ok) {
43338
- throw new Error(`Voice phone call-control evidence assertion failed: ${assertion.issues.join(" ")}`);
43339
- }
43340
- return assertion;
43252
+ return assertVoiceEvidence("Voice phone call-control evidence assertion failed", evaluateVoicePhoneCallControlEvidence(input));
43341
43253
  };
43342
43254
  var buildVoicePhoneAgentSetupInstructions = (input) => input.carriers.map((carrier) => {
43343
43255
  const entry = findCarrierMatrixEntry(input.matrix, carrier);
@@ -43530,7 +43442,7 @@ var createVoicePhoneAgent = (options) => {
43530
43442
  setupPath
43531
43443
  };
43532
43444
  };
43533
- // src/fileStore.ts
43445
+ // src/core/fileStore.ts
43534
43446
  import {
43535
43447
  mkdir as mkdir5,
43536
43448
  readFile as readFile2,
@@ -44159,7 +44071,7 @@ var createVoiceFileRecordingStore = (options) => {
44159
44071
  };
44160
44072
  return { get, list, put };
44161
44073
  };
44162
- // src/modelAdapters.ts
44074
+ // src/core/modelAdapters.ts
44163
44075
  var isVoiceProviderRoutingPolicyPreset = (value) => value === "balanced" || value === "cost-cap" || value === "cost-first" || value === "latency-first" || value === "quality-first";
44164
44076
  var resolveVoiceProviderRoutingPolicyPreset = (preset, options = {}) => {
44165
44077
  switch (preset) {
@@ -45114,7 +45026,7 @@ var createGeminiVoiceAssistantModel = (options) => {
45114
45026
  }
45115
45027
  };
45116
45028
  };
45117
- // src/openaiTTS.ts
45029
+ // src/core/openaiTTS.ts
45118
45030
  var OPENAI_PCM24_FORMAT = {
45119
45031
  channels: 1,
45120
45032
  container: "raw",
@@ -45248,7 +45160,7 @@ var createOpenAIVoiceTTS = (options) => {
45248
45160
  }
45249
45161
  };
45250
45162
  };
45251
- // src/providerRoutingContract.ts
45163
+ // src/core/providerRoutingContract.ts
45252
45164
  var isRoutingEvent2 = (event) => Boolean(event && typeof event === "object" && "status" in event && "kind" in event && "sessionId" in event);
45253
45165
  var normalizeEvents2 = (events) => (events.every(isRoutingEvent2) ? [...events] : listVoiceRoutingEvents(events)).sort((left, right) => left.at - right.at);
45254
45166
  var matchesExpectation = (event, expectation) => (expectation.kind === undefined || event.kind === expectation.kind) && (expectation.operation === undefined || event.operation === expectation.operation) && (expectation.provider === undefined || event.provider === expectation.provider) && (expectation.selectedProvider === undefined || event.selectedProvider === expectation.selectedProvider) && (expectation.fallbackProvider === undefined || event.fallbackProvider === expectation.fallbackProvider) && (expectation.status === undefined || event.status === expectation.status);
@@ -45385,13 +45297,9 @@ var evaluateVoiceProviderRoutingContractEvidence = (reports, input = {}) => {
45385
45297
  };
45386
45298
  };
45387
45299
  var assertVoiceProviderRoutingContractEvidence = (reports, input = {}) => {
45388
- const report = evaluateVoiceProviderRoutingContractEvidence(reports, input);
45389
- if (!report.ok) {
45390
- throw new Error(`Voice provider routing contract evidence assertion failed: ${report.issues.join(" ")}`);
45391
- }
45392
- return report;
45300
+ return assertVoiceEvidence("Voice provider routing contract evidence assertion failed", evaluateVoiceProviderRoutingContractEvidence(reports, input));
45393
45301
  };
45394
- // src/readinessProfiles.ts
45302
+ // src/core/readinessProfiles.ts
45395
45303
  var profileSurfaceLabels = {
45396
45304
  "meeting-recorder": {
45397
45305
  bargeInReports: "barge-in proof configured",
@@ -45762,7 +45670,7 @@ var recommendVoiceReadinessProfile = (options) => {
45762
45670
  scores
45763
45671
  };
45764
45672
  };
45765
- // src/providerAdapters.ts
45673
+ // src/core/providerAdapters.ts
45766
45674
  class VoiceIOProviderTimeoutError extends Error {
45767
45675
  provider;
45768
45676
  timeoutMs;
@@ -46179,7 +46087,7 @@ var createVoiceTTSProviderRouter = (options) => {
46179
46087
  }
46180
46088
  };
46181
46089
  };
46182
- // src/s3Store.ts
46090
+ // src/core/s3Store.ts
46183
46091
  var encodeStoreId2 = (id) => `${encodeURIComponent(id)}.json`;
46184
46092
  var normalizeKeyPrefix = (prefix) => prefix?.trim().replace(/^\/+|\/+$/g, "") ?? "voice/reviews";
46185
46093
  var toReviewObjectKey = (prefix, id) => `${prefix}/${encodeStoreId2(id)}`;
@@ -46293,7 +46201,7 @@ var createVoiceS3RecordingStore = (options) => {
46293
46201
  };
46294
46202
  return { get, list, put };
46295
46203
  };
46296
- // src/memoryStore.ts
46204
+ // src/core/memoryStore.ts
46297
46205
  var createVoiceMemoryStore = () => {
46298
46206
  const sessions = new Map;
46299
46207
  const get = async (id) => sessions.get(id);
@@ -46314,7 +46222,7 @@ var createVoiceMemoryStore = () => {
46314
46222
  };
46315
46223
  return { get, getOrCreate, list, remove, set };
46316
46224
  };
46317
- // src/opsRuntime.ts
46225
+ // src/core/opsRuntime.ts
46318
46226
  var resolveTaskStores = (config) => {
46319
46227
  if (!config.ops.tasks) {
46320
46228
  throw new Error("Voice ops runtime task workers require ops.tasks to be configured.");
@@ -46502,7 +46410,7 @@ var createVoiceOpsRuntime = (config) => {
46502
46410
  }
46503
46411
  };
46504
46412
  };
46505
- // src/opsPresets.ts
46413
+ // src/core/opsPresets.ts
46506
46414
  var PRESET_INPUTS2 = {
46507
46415
  "collections-default": {
46508
46416
  description: "Biases toward fast callback recovery, aggressive retry routing, and supervisor escalation for overdue debt or collections follow-up.",
@@ -46736,7 +46644,7 @@ var resolveVoiceOpsPreset = (name, overrides = {}) => {
46736
46644
  taskPolicies: mergePolicies(preset.taskPolicies, overrides.taskPolicies)
46737
46645
  };
46738
46646
  };
46739
- // src/correction.ts
46647
+ // src/core/correction.ts
46740
46648
  var escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
46741
46649
  var buildAliasMatcher = (alias) => new RegExp(`(?<![\\p{L}\\p{N}'])${escapeRegExp(alias)}(?![\\p{L}\\p{N}'])`, "giu");
46742
46650
  var WORD_PATTERN = /[\p{L}\p{N}']+/gu;
@@ -47031,7 +46939,7 @@ var createRiskyTurnCorrectionHandler = (options = {}) => {
47031
46939
  };
47032
46940
  };
47033
46941
 
47034
- // src/routing.ts
46942
+ // src/core/routing.ts
47035
46943
  var resolveVoiceSTTRoutingStrategy = (goal = "best") => {
47036
46944
  if (goal === "low-cost") {
47037
46945
  return {
@@ -47993,7 +47901,7 @@ var runSTTAdapterBenchmarkSeries = async ({
47993
47901
  });
47994
47902
  };
47995
47903
 
47996
- // src/multilingualProof.ts
47904
+ // src/core/multilingualProof.ts
47997
47905
  var average3 = (values) => {
47998
47906
  if (values.length === 0)
47999
47907
  return 0;
@@ -48205,7 +48113,7 @@ var buildVoiceMultilingualProofReadinessCheck = (report, options = {}) => {
48205
48113
  value: failedAdapters.length
48206
48114
  };
48207
48115
  };
48208
- // src/costPredictor.ts
48116
+ // src/core/costPredictor.ts
48209
48117
  var lookupRates2 = (priceBook, provider, model) => {
48210
48118
  if (!provider)
48211
48119
  return;
@@ -48289,7 +48197,7 @@ var compareVoiceCostScenarios = (input) => {
48289
48197
  })
48290
48198
  };
48291
48199
  };
48292
- // src/iceServers.ts
48200
+ // src/core/iceServers.ts
48293
48201
  var toBase643 = (bytes) => {
48294
48202
  if (typeof Buffer !== "undefined") {
48295
48203
  return Buffer.from(bytes).toString("base64");
@@ -48350,7 +48258,7 @@ var createTwilioNTSIceServers = async (input) => {
48350
48258
  username: entry.username
48351
48259
  }));
48352
48260
  };
48353
- // src/holdAudio.ts
48261
+ // src/core/holdAudio.ts
48354
48262
  var DEFAULT_CUES2 = [
48355
48263
  { text: "Let me look that up for you." },
48356
48264
  { text: "One moment while I check on that." },
@@ -48427,7 +48335,7 @@ var createVoiceHoldAudioDriver = (options) => {
48427
48335
  }
48428
48336
  };
48429
48337
  };
48430
- // src/promptInjectionGuard.ts
48338
+ // src/core/promptInjectionGuard.ts
48431
48339
  var DEFAULT_VOICE_PROMPT_INJECTION_RULES = [
48432
48340
  {
48433
48341
  label: "ignore-prior-instructions",
@@ -48491,7 +48399,7 @@ var createVoicePromptInjectionGuard = (options = {}) => {
48491
48399
  }
48492
48400
  };
48493
48401
  };
48494
- // src/postCallSurvey.ts
48402
+ // src/core/postCallSurvey.ts
48495
48403
  var DEFAULT_VOICE_POST_CALL_SURVEY_QUESTIONS = [
48496
48404
  {
48497
48405
  id: "nps",
@@ -48618,7 +48526,7 @@ var summarizeVoicePostCallSurveys = (responses) => {
48618
48526
  sampleSize: ratings.length
48619
48527
  };
48620
48528
  };
48621
- // src/dtmfCollector.ts
48529
+ // src/core/dtmfCollector.ts
48622
48530
  var VOICE_DTMF_DIGITS = [
48623
48531
  "0",
48624
48532
  "1",
@@ -48755,7 +48663,7 @@ var validateVoiceDTMFLuhn = (digits) => {
48755
48663
  }
48756
48664
  return sum % 10 === 0;
48757
48665
  };
48758
- // src/dncRegistry.ts
48666
+ // src/core/dncRegistry.ts
48759
48667
  var normalizePhone = (phone) => {
48760
48668
  const trimmed = phone.trim();
48761
48669
  if (!trimmed)
@@ -48865,7 +48773,7 @@ var importVoiceDNCFromCSV = (csv, options = {}) => {
48865
48773
  }
48866
48774
  return entries;
48867
48775
  };
48868
- // src/callingWindow.ts
48776
+ // src/core/callingWindow.ts
48869
48777
  var DAY_INDEX = {
48870
48778
  friday: 5,
48871
48779
  monday: 1,
@@ -49009,7 +48917,7 @@ var VOICE_TCPA_DEFAULT_WINDOW = {
49009
48917
  allowedDays: ["monday", "tuesday", "wednesday", "thursday", "friday"],
49010
48918
  allowedHours: { end: "21:00", start: "08:00" }
49011
48919
  };
49012
- // src/callDisposition.ts
48920
+ // src/core/callDisposition.ts
49013
48921
  var DEFAULT_VOICE_CALL_DISPOSITIONS = [
49014
48922
  {
49015
48923
  code: "sale",
@@ -49185,7 +49093,7 @@ var createVoiceCallDispositionTagger = (options = {}) => {
49185
49093
  untag
49186
49094
  };
49187
49095
  };
49188
- // src/retryPolicy.ts
49096
+ // src/core/retryPolicy.ts
49189
49097
  var DEFAULT_RULES = [
49190
49098
  {
49191
49099
  action: "retry",
@@ -49253,7 +49161,7 @@ var createVoiceRetryPolicy = (options = {}) => {
49253
49161
  }
49254
49162
  };
49255
49163
  };
49256
- // src/campaignTemplate.ts
49164
+ // src/core/campaignTemplate.ts
49257
49165
  var lookupPath = (scope, path) => {
49258
49166
  const parts2 = path.split(".");
49259
49167
  let cursor = scope;
@@ -49373,7 +49281,7 @@ var collectVoiceCampaignTemplateVariables = (template) => {
49373
49281
  }
49374
49282
  return Array.from(set);
49375
49283
  };
49376
- // src/whisperChannel.ts
49284
+ // src/core/whisperChannel.ts
49377
49285
  var createVoiceWhisperChannel = (options) => {
49378
49286
  const now = options.now ?? (() => Date.now());
49379
49287
  const defaultRoute = options.defaultRoute ?? "agent-only";
@@ -49447,7 +49355,7 @@ var createVoiceWhisperChannel = (options) => {
49447
49355
  }
49448
49356
  };
49449
49357
  };
49450
- // src/liveCoach.ts
49358
+ // src/core/liveCoach.ts
49451
49359
  var DEFAULT_TEMPLATES = {
49452
49360
  correction: "Supervisor correction (do not repeat this verbatim; weave it into your next response): {{text}}",
49453
49361
  hint: "Supervisor hint: {{text}}",
@@ -49530,7 +49438,7 @@ var createVoiceLiveCoach = (options) => {
49530
49438
  }
49531
49439
  };
49532
49440
  };
49533
- // src/transcriptAnnotator.ts
49441
+ // src/core/transcriptAnnotator.ts
49534
49442
  var DEFAULT_VOICE_ANNOTATION_KIND_SEVERITY = {
49535
49443
  "compliance-concern": "major",
49536
49444
  custom: "info",
@@ -49608,7 +49516,7 @@ var createVoiceTranscriptAnnotator = (options) => {
49608
49516
  summarize
49609
49517
  };
49610
49518
  };
49611
- // src/supervisorPresence.ts
49519
+ // src/core/supervisorPresence.ts
49612
49520
  var createVoiceSupervisorPresence = (options = {}) => {
49613
49521
  const now = options.now ?? (() => Date.now());
49614
49522
  const staleAfter = options.staleAfterMs ?? 30000;
@@ -49716,7 +49624,7 @@ var createVoiceSupervisorPresence = (options = {}) => {
49716
49624
  }
49717
49625
  };
49718
49626
  };
49719
- // src/supervisorPermissions.ts
49627
+ // src/core/supervisorPermissions.ts
49720
49628
  var TIER_CAPABILITIES = {
49721
49629
  annotate: ["monitor", "annotate"],
49722
49630
  coach: ["monitor", "annotate", "coach"],
@@ -49807,7 +49715,7 @@ var createVoiceSupervisorPermissions = (options = {}) => {
49807
49715
  };
49808
49716
  };
49809
49717
  var VOICE_SUPERVISOR_TIER_CAPABILITIES = TIER_CAPABILITIES;
49810
- // src/calendarAdapter.ts
49718
+ // src/core/calendarAdapter.ts
49811
49719
  var createVoiceInMemoryCalendarAdapter = (options) => {
49812
49720
  const now = options.now ?? (() => Date.now());
49813
49721
  const generateId = options.generateId ?? (() => `appt_${Math.random().toString(36).slice(2, 10)}`);
@@ -49892,7 +49800,7 @@ var createVoiceInMemoryCalendarAdapter = (options) => {
49892
49800
  }
49893
49801
  };
49894
49802
  };
49895
- // src/bookingFlow.ts
49803
+ // src/core/bookingFlow.ts
49896
49804
  var createVoiceBookingFlow = (options) => {
49897
49805
  const initial = {
49898
49806
  proposedSlots: [],
@@ -49990,7 +49898,7 @@ var createVoiceBookingFlow = (options) => {
49990
49898
  }
49991
49899
  };
49992
49900
  };
49993
- // src/noShowPredictor.ts
49901
+ // src/core/noShowPredictor.ts
49994
49902
  var clamp = (value, min = 0, max = 1) => Math.max(min, Math.min(max, value));
49995
49903
  var scoreVoiceNoShowRisk = (input) => {
49996
49904
  const now = input.now ?? (() => Date.now());
@@ -50059,7 +49967,7 @@ var summarizeVoiceNoShowVerdict = (verdict) => {
50059
49967
  const top = verdict.drivers.slice(0, 2).map((d) => d.kind).join(", ");
50060
49968
  return `${verdict.band} risk (${pct}%)${top ? ` \u2014 driven by ${top}` : ""}`;
50061
49969
  };
50062
- // src/reminderScheduler.ts
49970
+ // src/core/reminderScheduler.ts
50063
49971
  var DEFAULT_VOICE_REMINDER_TRIGGERS = [
50064
49972
  {
50065
49973
  channel: "sms",
@@ -50172,7 +50080,7 @@ var createVoiceReminderScheduler = (options = {}) => {
50172
50080
  }
50173
50081
  };
50174
50082
  };
50175
- // src/callScorecard.ts
50083
+ // src/core/callScorecard.ts
50176
50084
  var clampScore = (raw, max) => Math.max(0, Math.min(max, raw));
50177
50085
  var buildVoiceCallScorecard = (input) => {
50178
50086
  const now = input.now ?? (() => Date.now());
@@ -50274,7 +50182,7 @@ var DEFAULT_VOICE_SALES_RUBRIC = {
50274
50182
  passingGrade: 0.75,
50275
50183
  scaleMax: 5
50276
50184
  };
50277
- // src/aiScorecard.ts
50185
+ // src/core/aiScorecard.ts
50278
50186
  var DEFAULT_SYSTEM_PROMPT3 = "You are an impartial quality reviewer scoring a voice-agent call transcript. " + "For each criterion, return a numeric score between 0 and the rubric's scaleMax, with a one-sentence rationale grounded in the transcript. " + 'Respond with strict JSON: {"scores":[{"criterionId":"\u2026","score":4,"rationale":"\u2026"}],"comments":"\u2026"}. ' + "Do not return prose outside the JSON.";
50279
50187
  var buildPrompt2 = (input) => {
50280
50188
  const { rubric } = input;
@@ -50380,7 +50288,7 @@ var createVoiceAIScorecard = (options) => {
50380
50288
  }
50381
50289
  };
50382
50290
  };
50383
- // src/agentPerformanceReport.ts
50291
+ // src/core/agentPerformanceReport.ts
50384
50292
  var bucketKeyFor = (ms, bucket) => {
50385
50293
  const date = new Date(ms);
50386
50294
  const year = date.getUTCFullYear();
@@ -50490,7 +50398,7 @@ var buildVoiceAgentPerformanceReport = (input) => {
50490
50398
  worstCriterion: ranked[0]?.criterionId ?? null
50491
50399
  };
50492
50400
  };
50493
- // src/scorecardCalibration.ts
50401
+ // src/core/scorecardCalibration.ts
50494
50402
  var normalize = (raw, scaleMax) => scaleMax === 0 ? 0 : raw / scaleMax;
50495
50403
  var correlation = (xs, ys) => {
50496
50404
  if (xs.length === 0 || xs.length !== ys.length)
@@ -50595,7 +50503,7 @@ var computeVoiceScorecardCalibration = (pairs, options = {}) => {
50595
50503
  worstDivergences: divergences.sort((a, b) => Math.abs(b.normalizedGap) - Math.abs(a.normalizedGap)).slice(0, topN)
50596
50504
  };
50597
50505
  };
50598
- // src/qualityDriftDetector.ts
50506
+ // src/core/qualityDriftDetector.ts
50599
50507
  var severityFor = (delta, watch, regression) => {
50600
50508
  if (delta <= -regression)
50601
50509
  return "regression";
@@ -50675,7 +50583,7 @@ var detectVoiceQualityDrift = (input) => {
50675
50583
  scope: { from: baselineFrom, to: cutoff }
50676
50584
  };
50677
50585
  };
50678
- // src/pathway.ts
50586
+ // src/core/pathway.ts
50679
50587
  var slotRefsInActions = (actions) => {
50680
50588
  if (!actions)
50681
50589
  return [];
@@ -50826,7 +50734,7 @@ var validateVoicePathway = (pathway) => {
50826
50734
  };
50827
50735
  var findVoicePathwayState = (pathway, id) => pathway.states.find((s) => s.id === id) ?? null;
50828
50736
  var findVoicePathwaySlot = (pathway, id) => pathway.slots.find((s) => s.id === id) ?? null;
50829
- // src/pathwayRuntime.ts
50737
+ // src/core/pathwayRuntime.ts
50830
50738
  var evaluateCondition = (condition, slots) => {
50831
50739
  switch (condition.kind) {
50832
50740
  case "always":
@@ -51017,7 +50925,7 @@ var createVoicePathwayRuntime = (options) => {
51017
50925
  tryTransition
51018
50926
  };
51019
50927
  };
51020
- // src/pathwaySlotCollector.ts
50928
+ // src/core/pathwaySlotCollector.ts
51021
50929
  var numberWords = {
51022
50930
  eight: 8,
51023
50931
  five: 5,
@@ -51224,7 +51132,7 @@ var createVoicePathwaySlotCollector = (options = {}) => {
51224
51132
  }
51225
51133
  };
51226
51134
  };
51227
- // src/pathwayCompiler.ts
51135
+ // src/core/pathwayCompiler.ts
51228
51136
  var describeAction = (action) => {
51229
51137
  switch (action.kind) {
51230
51138
  case "say":
@@ -51379,7 +51287,7 @@ ${stateBlock}`
51379
51287
  ...options.introduction !== undefined ? { initialPrompt: options.introduction } : {}
51380
51288
  };
51381
51289
  };
51382
- // src/pathwayVisualizer.ts
51290
+ // src/core/pathwayVisualizer.ts
51383
51291
  var escapeMermaidLabel = (text) => text.replace(/[<>"]/gu, "").replace(/\|/gu, "/");
51384
51292
  var conditionLabel = (condition) => {
51385
51293
  switch (condition.kind) {
@@ -51475,7 +51383,7 @@ var visualizeVoicePathway = (pathway) => ({
51475
51383
  mermaid: renderVoicePathwayMermaid(pathway),
51476
51384
  text: renderVoicePathwayText(pathway)
51477
51385
  });
51478
- // src/pathwayGenerator.ts
51386
+ // src/core/pathwayGenerator.ts
51479
51387
  var SYSTEM_PROMPT = `You design conversation pathways for voice agents as strict JSON.
51480
51388
 
51481
51389
  A pathway is a state machine. Output ONLY a JSON object with this shape:
@@ -51588,7 +51496,7 @@ Return a corrected pathway JSON that fixes every error.`;
51588
51496
  report: lastReport
51589
51497
  };
51590
51498
  };
51591
- // src/crmContract.ts
51499
+ // src/core/crmContract.ts
51592
51500
  var createVoiceCRMRegistry = (options) => {
51593
51501
  const byVendor = new Map;
51594
51502
  for (const contract of options.contracts) {
@@ -51607,7 +51515,7 @@ var createVoiceCRMRegistry = (options) => {
51607
51515
  }
51608
51516
  };
51609
51517
  };
51610
- // src/callerCRMLinker.ts
51518
+ // src/core/callerCRMLinker.ts
51611
51519
  var cacheKeyFor = (identity, vendor) => {
51612
51520
  const id = identity.externalId ?? identity.phone ?? identity.email ?? "anonymous";
51613
51521
  return `${vendor}::${id}`;
@@ -51682,7 +51590,7 @@ var createVoiceCallerCRMLinker = (options) => {
51682
51590
  resolve: resolve3
51683
51591
  };
51684
51592
  };
51685
- // src/crmCallLogger.ts
51593
+ // src/core/crmCallLogger.ts
51686
51594
  var createVoiceCRMCallLogger = (options) => {
51687
51595
  const now = options.now ?? (() => Date.now());
51688
51596
  const errorPolicy = options.errorPolicy ?? "swallow";