@absolutejs/voice 0.0.22-beta.531 → 0.0.22-beta.533

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 (323) 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 +3 -2
  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 +2 -3
  42. package/dist/client/index.js +14 -14
  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 +3 -2
  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 +3 -2
  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 -4
  80. package/dist/client/workflowStatus.d.ts +1 -1
  81. package/dist/{agent.d.ts → core/agent.d.ts} +2 -1
  82. package/dist/{agentTools.d.ts → core/agentTools.d.ts} +1 -2
  83. package/dist/{assistant.d.ts → core/assistant.d.ts} +2 -1
  84. package/dist/{assistantExperiment.d.ts → core/assistantExperiment.d.ts} +5 -4
  85. package/dist/{campaign.d.ts → core/campaign.d.ts} +2 -1
  86. package/dist/{correction.d.ts → core/correction.d.ts} +2 -1
  87. package/dist/{dataControl.d.ts → core/dataControl.d.ts} +1 -1
  88. package/dist/{deliveryRuntime.d.ts → core/deliveryRuntime.d.ts} +3 -2
  89. package/dist/{fileStore.d.ts → core/fileStore.d.ts} +1 -1
  90. package/dist/{htmxDashboardRoutes.d.ts → core/htmxDashboardRoutes.d.ts} +6 -5
  91. package/dist/{logger.d.ts → core/logger.d.ts} +0 -1
  92. package/dist/{midCallSummary.d.ts → core/midCallSummary.d.ts} +3 -3
  93. package/dist/{multilingualProof.d.ts → core/multilingualProof.d.ts} +2 -2
  94. package/dist/{operationsRecord.d.ts → core/operationsRecord.d.ts} +3 -2
  95. package/dist/{ops.d.ts → core/ops.d.ts} +1 -1
  96. package/dist/{outcomeContract.d.ts → core/outcomeContract.d.ts} +1 -1
  97. package/dist/{phoneAgent.d.ts → core/phoneAgent.d.ts} +6 -6
  98. package/dist/{phoneAgentProductionSmoke.d.ts → core/phoneAgentProductionSmoke.d.ts} +1 -1
  99. package/dist/{postCallAnalysis.d.ts → core/postCallAnalysis.d.ts} +1 -1
  100. package/dist/{postgresStore.d.ts → core/postgresStore.d.ts} +1 -1
  101. package/dist/{productionReadiness.d.ts → core/productionReadiness.d.ts} +7 -6
  102. package/dist/{providerStackRecommendations.d.ts → core/providerStackRecommendations.d.ts} +2 -1
  103. package/dist/{reconnectContract.d.ts → core/reconnectContract.d.ts} +2 -1
  104. package/dist/{resilienceRoutes.d.ts → core/resilienceRoutes.d.ts} +1 -1
  105. package/dist/{runtimeOps.d.ts → core/runtimeOps.d.ts} +1 -1
  106. package/dist/{s3Store.d.ts → core/s3Store.d.ts} +4 -10
  107. package/dist/{simulationSuite.d.ts → core/simulationSuite.d.ts} +2 -1
  108. package/dist/{sqliteStore.d.ts → core/sqliteStore.d.ts} +1 -1
  109. package/dist/{telephonyOutcome.d.ts → core/telephonyOutcome.d.ts} +0 -4
  110. package/dist/core/turnProfiles.d.ts +3 -0
  111. package/dist/{types.d.ts → core/types.d.ts} +3 -3
  112. package/dist/embed/index.d.ts +1 -1
  113. package/dist/embed/index.js +4 -4
  114. package/dist/embed/voice-widget.js +1 -1
  115. package/dist/index.d.ts +339 -339
  116. package/dist/index.js +199 -199
  117. package/dist/internal/status.d.ts +0 -2
  118. package/dist/react/VoiceCallPlayer.d.ts +1 -1
  119. package/dist/react/VoiceWidget.d.ts +1 -1
  120. package/dist/react/index.d.ts +21 -0
  121. package/dist/react/index.js +12 -12
  122. package/dist/react/useVoiceController.d.ts +1 -1
  123. package/dist/react/useVoiceStream.d.ts +1 -1
  124. package/dist/svelte/createVoiceCallDebugger.d.ts +0 -2
  125. package/dist/svelte/createVoiceSessionSnapshot.d.ts +0 -2
  126. package/dist/svelte/createVoiceStream.d.ts +1 -1
  127. package/dist/svelte/createVoiceWidget.d.ts +1 -1
  128. package/dist/svelte/index.js +8 -8
  129. package/dist/telephony/plivo.d.ts +3 -3
  130. package/dist/telephony/security.d.ts +3 -3
  131. package/dist/telephony/telnyx.d.ts +3 -3
  132. package/dist/telephony/twilio.d.ts +2 -2
  133. package/dist/testing/accuracy.d.ts +1 -1
  134. package/dist/testing/benchmark.d.ts +1 -1
  135. package/dist/testing/corrected.d.ts +1 -1
  136. package/dist/testing/duplex.d.ts +1 -1
  137. package/dist/testing/fixtures.d.ts +1 -1
  138. package/dist/testing/index.js +24 -24
  139. package/dist/testing/ioProviderSimulator.d.ts +1 -1
  140. package/dist/testing/providerSimulator.d.ts +3 -3
  141. package/dist/testing/review.d.ts +1 -1
  142. package/dist/testing/sessionBenchmark.d.ts +1 -1
  143. package/dist/testing/stt.d.ts +1 -1
  144. package/dist/testing/telephony.d.ts +2 -2
  145. package/dist/testing/tts.d.ts +1 -1
  146. package/dist/vue/VoiceCallPlayer.d.ts +1 -1
  147. package/dist/vue/VoiceCostDashboard.d.ts +1 -1
  148. package/dist/vue/VoiceWidget.d.ts +1 -1
  149. package/dist/vue/index.js +12 -12
  150. package/dist/vue/useVoiceCallDebugger.d.ts +1 -1
  151. package/dist/vue/useVoiceCampaignDialerProof.d.ts +1 -1
  152. package/dist/vue/useVoiceController.d.ts +1 -1
  153. package/dist/vue/useVoiceDeliveryRuntime.d.ts +1 -1
  154. package/dist/vue/useVoiceOpsStatus.d.ts +1 -1
  155. package/dist/vue/useVoicePlatformCoverage.d.ts +1 -1
  156. package/dist/vue/useVoiceProfileComparison.d.ts +1 -1
  157. package/dist/vue/useVoiceProofTrends.d.ts +1 -1
  158. package/dist/vue/useVoiceProviderCapabilities.d.ts +1 -1
  159. package/dist/vue/useVoiceProviderContracts.d.ts +1 -1
  160. package/dist/vue/useVoiceProviderStatus.d.ts +1 -1
  161. package/dist/vue/useVoiceReadinessFailures.d.ts +1 -1
  162. package/dist/vue/useVoiceReconnectProfileEvidence.d.ts +1 -1
  163. package/dist/vue/useVoiceSessionObservability.d.ts +1 -1
  164. package/dist/vue/useVoiceSessionSnapshot.d.ts +1 -1
  165. package/dist/vue/useVoiceStream.d.ts +1 -1
  166. package/dist/vue/useVoiceTraceTimeline.d.ts +1 -1
  167. package/dist/vue/useVoiceTurnLatency.d.ts +1 -1
  168. package/dist/vue/useVoiceTurnQuality.d.ts +1 -1
  169. package/dist/vue/useVoiceWorkflowStatus.d.ts +1 -1
  170. package/package.json +3 -1
  171. package/dist/angular/voice-delivery-runtime.component.d.ts +0 -17
  172. package/dist/angular/voice-ops-status.component.d.ts +0 -15
  173. package/dist/turnProfiles.d.ts +0 -6
  174. /package/dist/{agentPerformanceReport.d.ts → core/agentPerformanceReport.d.ts} +0 -0
  175. /package/dist/{agentSquadContract.d.ts → core/agentSquadContract.d.ts} +0 -0
  176. /package/dist/{agentState.d.ts → core/agentState.d.ts} +0 -0
  177. /package/dist/{aiScorecard.d.ts → core/aiScorecard.d.ts} +0 -0
  178. /package/dist/{aiVoiceModel.d.ts → core/aiVoiceModel.d.ts} +0 -0
  179. /package/dist/{amdDetector.d.ts → core/amdDetector.d.ts} +0 -0
  180. /package/dist/{assistantHealth.d.ts → core/assistantHealth.d.ts} +0 -0
  181. /package/dist/{assistantMemory.d.ts → core/assistantMemory.d.ts} +0 -0
  182. /package/dist/{assistantMode.d.ts → core/assistantMode.d.ts} +0 -0
  183. /package/dist/{audioConditioning.d.ts → core/audioConditioning.d.ts} +0 -0
  184. /package/dist/{audit.d.ts → core/audit.d.ts} +0 -0
  185. /package/dist/{auditDeliveryRoutes.d.ts → core/auditDeliveryRoutes.d.ts} +0 -0
  186. /package/dist/{auditExport.d.ts → core/auditExport.d.ts} +0 -0
  187. /package/dist/{auditRoutes.d.ts → core/auditRoutes.d.ts} +0 -0
  188. /package/dist/{auditSinks.d.ts → core/auditSinks.d.ts} +0 -0
  189. /package/dist/{backchannel.d.ts → core/backchannel.d.ts} +0 -0
  190. /package/dist/{bargeInRoutes.d.ts → core/bargeInRoutes.d.ts} +0 -0
  191. /package/dist/{bookingFlow.d.ts → core/bookingFlow.d.ts} +0 -0
  192. /package/dist/{browserCallProfiles.d.ts → core/browserCallProfiles.d.ts} +0 -0
  193. /package/dist/{browserMediaRoutes.d.ts → core/browserMediaRoutes.d.ts} +0 -0
  194. /package/dist/{calendarAdapter.d.ts → core/calendarAdapter.d.ts} +0 -0
  195. /package/dist/{calendarSlots.d.ts → core/calendarSlots.d.ts} +0 -0
  196. /package/dist/{callDebugger.d.ts → core/callDebugger.d.ts} +0 -0
  197. /package/dist/{callDisposition.d.ts → core/callDisposition.d.ts} +0 -0
  198. /package/dist/{callQuota.d.ts → core/callQuota.d.ts} +0 -0
  199. /package/dist/{callScorecard.d.ts → core/callScorecard.d.ts} +0 -0
  200. /package/dist/{callerCRMLinker.d.ts → core/callerCRMLinker.d.ts} +0 -0
  201. /package/dist/{callerMemory.d.ts → core/callerMemory.d.ts} +0 -0
  202. /package/dist/{callingWindow.d.ts → core/callingWindow.d.ts} +0 -0
  203. /package/dist/{campaignControls.d.ts → core/campaignControls.d.ts} +0 -0
  204. /package/dist/{campaignDialers.d.ts → core/campaignDialers.d.ts} +0 -0
  205. /package/dist/{campaignTemplate.d.ts → core/campaignTemplate.d.ts} +0 -0
  206. /package/dist/{competitiveCoverage.d.ts → core/competitiveCoverage.d.ts} +0 -0
  207. /package/dist/{conversationSimulator.d.ts → core/conversationSimulator.d.ts} +0 -0
  208. /package/dist/{costAccounting.d.ts → core/costAccounting.d.ts} +0 -0
  209. /package/dist/{costPredictor.d.ts → core/costPredictor.d.ts} +0 -0
  210. /package/dist/{crmCallLogger.d.ts → core/crmCallLogger.d.ts} +0 -0
  211. /package/dist/{crmContract.d.ts → core/crmContract.d.ts} +0 -0
  212. /package/dist/{defineVoiceAssistant.d.ts → core/defineVoiceAssistant.d.ts} +0 -0
  213. /package/dist/{deliverySinkRoutes.d.ts → core/deliverySinkRoutes.d.ts} +0 -0
  214. /package/dist/{demoReadyRoutes.d.ts → core/demoReadyRoutes.d.ts} +0 -0
  215. /package/dist/{diagnosticsRoutes.d.ts → core/diagnosticsRoutes.d.ts} +0 -0
  216. /package/dist/{dncRegistry.d.ts → core/dncRegistry.d.ts} +0 -0
  217. /package/dist/{dtmfCollector.d.ts → core/dtmfCollector.d.ts} +0 -0
  218. /package/dist/{evalRoutes.d.ts → core/evalRoutes.d.ts} +0 -0
  219. /package/dist/{guardrails.d.ts → core/guardrails.d.ts} +0 -0
  220. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  221. /package/dist/{handoffHealth.d.ts → core/handoffHealth.d.ts} +0 -0
  222. /package/dist/{holdAudio.d.ts → core/holdAudio.d.ts} +0 -0
  223. /package/dist/{htmx.d.ts → core/htmx.d.ts} +0 -0
  224. /package/dist/{iceServers.d.ts → core/iceServers.d.ts} +0 -0
  225. /package/dist/{incidentBundle.d.ts → core/incidentBundle.d.ts} +0 -0
  226. /package/dist/{incidentTimeline.d.ts → core/incidentTimeline.d.ts} +0 -0
  227. /package/dist/{ivrPlan.d.ts → core/ivrPlan.d.ts} +0 -0
  228. /package/dist/{latencySlo.d.ts → core/latencySlo.d.ts} +0 -0
  229. /package/dist/{liveCoach.d.ts → core/liveCoach.d.ts} +0 -0
  230. /package/dist/{liveLatency.d.ts → core/liveLatency.d.ts} +0 -0
  231. /package/dist/{liveOps.d.ts → core/liveOps.d.ts} +0 -0
  232. /package/dist/{llmJudge.d.ts → core/llmJudge.d.ts} +0 -0
  233. /package/dist/{mcpToolset.d.ts → core/mcpToolset.d.ts} +0 -0
  234. /package/dist/{mediaPipelineRoutes.d.ts → core/mediaPipelineRoutes.d.ts} +0 -0
  235. /package/dist/{mediaPipelineSurfaces.d.ts → core/mediaPipelineSurfaces.d.ts} +0 -0
  236. /package/dist/{memoryStore.d.ts → core/memoryStore.d.ts} +0 -0
  237. /package/dist/{modelAdapters.d.ts → core/modelAdapters.d.ts} +0 -0
  238. /package/dist/{monitor.d.ts → core/monitor.d.ts} +0 -0
  239. /package/dist/{noShowPredictor.d.ts → core/noShowPredictor.d.ts} +0 -0
  240. /package/dist/{oauth2TokenSource.d.ts → core/oauth2TokenSource.d.ts} +0 -0
  241. /package/dist/{observabilityExport.d.ts → core/observabilityExport.d.ts} +0 -0
  242. /package/dist/{openaiTTS.d.ts → core/openaiTTS.d.ts} +0 -0
  243. /package/dist/{operationalStatus.d.ts → core/operationalStatus.d.ts} +0 -0
  244. /package/dist/{opsActionAuditRoutes.d.ts → core/opsActionAuditRoutes.d.ts} +0 -0
  245. /package/dist/{opsConsoleRoutes.d.ts → core/opsConsoleRoutes.d.ts} +0 -0
  246. /package/dist/{opsPresets.d.ts → core/opsPresets.d.ts} +0 -0
  247. /package/dist/{opsRecovery.d.ts → core/opsRecovery.d.ts} +0 -0
  248. /package/dist/{opsRuntime.d.ts → core/opsRuntime.d.ts} +0 -0
  249. /package/dist/{opsSinks.d.ts → core/opsSinks.d.ts} +0 -0
  250. /package/dist/{opsStatus.d.ts → core/opsStatus.d.ts} +0 -0
  251. /package/dist/{opsStatusRoutes.d.ts → core/opsStatusRoutes.d.ts} +0 -0
  252. /package/dist/{opsWebhook.d.ts → core/opsWebhook.d.ts} +0 -0
  253. /package/dist/{otelExporter.d.ts → core/otelExporter.d.ts} +0 -0
  254. /package/dist/{outcomeRecipes.d.ts → core/outcomeRecipes.d.ts} +0 -0
  255. /package/dist/{pathway.d.ts → core/pathway.d.ts} +0 -0
  256. /package/dist/{pathwayCompiler.d.ts → core/pathwayCompiler.d.ts} +0 -0
  257. /package/dist/{pathwayGenerator.d.ts → core/pathwayGenerator.d.ts} +0 -0
  258. /package/dist/{pathwayRuntime.d.ts → core/pathwayRuntime.d.ts} +0 -0
  259. /package/dist/{pathwaySlotCollector.d.ts → core/pathwaySlotCollector.d.ts} +0 -0
  260. /package/dist/{pathwayVisualizer.d.ts → core/pathwayVisualizer.d.ts} +0 -0
  261. /package/dist/{phoneProvisioning.d.ts → core/phoneProvisioning.d.ts} +0 -0
  262. /package/dist/{platformCoverage.d.ts → core/platformCoverage.d.ts} +0 -0
  263. /package/dist/{plugin.d.ts → core/plugin.d.ts} +0 -0
  264. /package/dist/{postCallSurvey.d.ts → core/postCallSurvey.d.ts} +0 -0
  265. /package/dist/{presets.d.ts → core/presets.d.ts} +0 -0
  266. /package/dist/{profileSwitchRecommendation.d.ts → core/profileSwitchRecommendation.d.ts} +0 -0
  267. /package/dist/{promptInjectionGuard.d.ts → core/promptInjectionGuard.d.ts} +0 -0
  268. /package/dist/{proofAssertions.d.ts → core/proofAssertions.d.ts} +0 -0
  269. /package/dist/{proofPack.d.ts → core/proofPack.d.ts} +0 -0
  270. /package/dist/{proofRunner.d.ts → core/proofRunner.d.ts} +0 -0
  271. /package/dist/{proofTrends.d.ts → core/proofTrends.d.ts} +0 -0
  272. /package/dist/{providerAdapters.d.ts → core/providerAdapters.d.ts} +0 -0
  273. /package/dist/{providerCapabilities.d.ts → core/providerCapabilities.d.ts} +0 -0
  274. /package/dist/{providerDecisionTraces.d.ts → core/providerDecisionTraces.d.ts} +0 -0
  275. /package/dist/{providerHealth.d.ts → core/providerHealth.d.ts} +0 -0
  276. /package/dist/{providerOrchestration.d.ts → core/providerOrchestration.d.ts} +0 -0
  277. /package/dist/{providerRouterTraces.d.ts → core/providerRouterTraces.d.ts} +0 -0
  278. /package/dist/{providerRoutingContract.d.ts → core/providerRoutingContract.d.ts} +0 -0
  279. /package/dist/{providerSlo.d.ts → core/providerSlo.d.ts} +0 -0
  280. /package/dist/{qualityDriftDetector.d.ts → core/qualityDriftDetector.d.ts} +0 -0
  281. /package/dist/{qualityRoutes.d.ts → core/qualityRoutes.d.ts} +0 -0
  282. /package/dist/{queue.d.ts → core/queue.d.ts} +0 -0
  283. /package/dist/{ragTool.d.ts → core/ragTool.d.ts} +0 -0
  284. /package/dist/{readinessProfiles.d.ts → core/readinessProfiles.d.ts} +0 -0
  285. /package/dist/{realtimeChannel.d.ts → core/realtimeChannel.d.ts} +0 -0
  286. /package/dist/{realtimeProviderContracts.d.ts → core/realtimeProviderContracts.d.ts} +0 -0
  287. /package/dist/{recordingRedaction.d.ts → core/recordingRedaction.d.ts} +0 -0
  288. /package/dist/{recordingStore.d.ts → core/recordingStore.d.ts} +0 -0
  289. /package/dist/{redaction.d.ts → core/redaction.d.ts} +0 -0
  290. /package/dist/{reminderScheduler.d.ts → core/reminderScheduler.d.ts} +0 -0
  291. /package/dist/{retention.d.ts → core/retention.d.ts} +0 -0
  292. /package/dist/{retryPolicy.d.ts → core/retryPolicy.d.ts} +0 -0
  293. /package/dist/{routeAuth.d.ts → core/routeAuth.d.ts} +0 -0
  294. /package/dist/{routing.d.ts → core/routing.d.ts} +0 -0
  295. /package/dist/{scorecardCalibration.d.ts → core/scorecardCalibration.d.ts} +0 -0
  296. /package/dist/{semanticTurn.d.ts → core/semanticTurn.d.ts} +0 -0
  297. /package/dist/{session.d.ts → core/session.d.ts} +0 -0
  298. /package/dist/{sessionObservability.d.ts → core/sessionObservability.d.ts} +0 -0
  299. /package/dist/{sessionReplay.d.ts → core/sessionReplay.d.ts} +0 -0
  300. /package/dist/{sessionSnapshot.d.ts → core/sessionSnapshot.d.ts} +0 -0
  301. /package/dist/{sloCalibration.d.ts → core/sloCalibration.d.ts} +0 -0
  302. /package/dist/{store.d.ts → core/store.d.ts} +0 -0
  303. /package/dist/{supervisorPermissions.d.ts → core/supervisorPermissions.d.ts} +0 -0
  304. /package/dist/{supervisorPresence.d.ts → core/supervisorPresence.d.ts} +0 -0
  305. /package/dist/{telephonyMediaRoutes.d.ts → core/telephonyMediaRoutes.d.ts} +0 -0
  306. /package/dist/{toolContract.d.ts → core/toolContract.d.ts} +0 -0
  307. /package/dist/{toolRuntime.d.ts → core/toolRuntime.d.ts} +0 -0
  308. /package/dist/{trace.d.ts → core/trace.d.ts} +0 -0
  309. /package/dist/{traceDeliveryRoutes.d.ts → core/traceDeliveryRoutes.d.ts} +0 -0
  310. /package/dist/{traceTimeline.d.ts → core/traceTimeline.d.ts} +0 -0
  311. /package/dist/{transcriptAnnotator.d.ts → core/transcriptAnnotator.d.ts} +0 -0
  312. /package/dist/{turnDetection.d.ts → core/turnDetection.d.ts} +0 -0
  313. /package/dist/{turnLatency.d.ts → core/turnLatency.d.ts} +0 -0
  314. /package/dist/{turnQuality.d.ts → core/turnQuality.d.ts} +0 -0
  315. /package/dist/{vapiAdapter.d.ts → core/vapiAdapter.d.ts} +0 -0
  316. /package/dist/{variableAnalytics.d.ts → core/variableAnalytics.d.ts} +0 -0
  317. /package/dist/{voiceConfiguration.d.ts → core/voiceConfiguration.d.ts} +0 -0
  318. /package/dist/{voiceMonitoring.d.ts → core/voiceMonitoring.d.ts} +0 -0
  319. /package/dist/{webhookFanout.d.ts → core/webhookFanout.d.ts} +0 -0
  320. /package/dist/{webhookVerification.d.ts → core/webhookVerification.d.ts} +0 -0
  321. /package/dist/{whisperChannel.d.ts → core/whisperChannel.d.ts} +0 -0
  322. /package/dist/{workflowContract.d.ts → core/workflowContract.d.ts} +0 -0
  323. /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 : "";
@@ -12279,7 +12279,7 @@ var assertVoiceEvidence = (failureMessage, assertion) => {
12279
12279
  return assertion;
12280
12280
  };
12281
12281
 
12282
- // src/campaign.ts
12282
+ // src/core/campaign.ts
12283
12283
  import { Elysia as Elysia14 } from "elysia";
12284
12284
  var createId2 = () => crypto.randomUUID();
12285
12285
  var cloneRecord = (record) => ({
@@ -13487,7 +13487,7 @@ var createVoiceCampaignRoutes = (options) => {
13487
13487
  return app;
13488
13488
  };
13489
13489
 
13490
- // src/competitiveCoverage.ts
13490
+ // src/core/competitiveCoverage.ts
13491
13491
  import { Elysia as Elysia15 } from "elysia";
13492
13492
  var escapeMarkdown = (value) => value.replaceAll("|", "\\|");
13493
13493
  var resolveSurfaceStatus = (surface) => {
@@ -13717,7 +13717,7 @@ var createVoiceCompetitiveCoverageRoutes = (options) => {
13717
13717
  return app;
13718
13718
  };
13719
13719
 
13720
- // src/dataControl.ts
13720
+ // src/core/dataControl.ts
13721
13721
  import { Elysia as Elysia16 } from "elysia";
13722
13722
  var voiceComplianceRedactionDefaults = {
13723
13723
  keys: [
@@ -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",
@@ -19353,7 +19353,7 @@ var createVoiceLiveOpsRoutes = (options = {}) => {
19353
19353
  });
19354
19354
  };
19355
19355
 
19356
- // src/mediaPipelineRoutes.ts
19356
+ // src/core/mediaPipelineRoutes.ts
19357
19357
  import { Elysia as Elysia31 } from "elysia";
19358
19358
  import {
19359
19359
  buildMediaInterruptionReport,
@@ -19661,7 +19661,7 @@ var summarizeVoiceMediaPipelineReport = (report, options = {}) => {
19661
19661
  };
19662
19662
  };
19663
19663
 
19664
- // src/monitor.ts
19664
+ // src/core/monitor.ts
19665
19665
  import { Elysia as Elysia32 } from "elysia";
19666
19666
  var buildAudioFanout = () => {
19667
19667
  const handlers = new Set;
@@ -20122,7 +20122,7 @@ var createVoiceLiveMonitorRoutes = (options) => {
20122
20122
  return app;
20123
20123
  };
20124
20124
 
20125
- // src/observabilityExport.ts
20125
+ // src/core/observabilityExport.ts
20126
20126
  import { Elysia as Elysia33 } from "elysia";
20127
20127
  import { Database } from "bun:sqlite";
20128
20128
  import { createHash } from "crypto";
@@ -21722,13 +21722,13 @@ var createVoiceObservabilityExportRoutes = (options = {}) => {
21722
21722
  return app;
21723
21723
  };
21724
21724
 
21725
- // src/operationalStatus.ts
21725
+ // src/core/operationalStatus.ts
21726
21726
  import { Elysia as Elysia45 } from "elysia";
21727
21727
 
21728
- // src/productionReadiness.ts
21728
+ // src/core/productionReadiness.ts
21729
21729
  import { Elysia as Elysia44 } from "elysia";
21730
21730
 
21731
- // src/resilienceRoutes.ts
21731
+ // src/core/resilienceRoutes.ts
21732
21732
  import { Elysia as Elysia34 } from "elysia";
21733
21733
  var getString14 = (value) => typeof value === "string" ? value : undefined;
21734
21734
  var getNumber8 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -22399,7 +22399,7 @@ var createVoiceTelephonyCarrierMatrixRoutes = (options) => {
22399
22399
  });
22400
22400
  };
22401
22401
 
22402
- // src/telephonyOutcome.ts
22402
+ // src/core/telephonyOutcome.ts
22403
22403
  import { Elysia as Elysia36 } from "elysia";
22404
22404
  var DEFAULT_COMPLETED_STATUSES = [
22405
22405
  "answered",
@@ -23190,7 +23190,7 @@ var createVoiceTelephonyWebhookRoutes = (options = {}) => {
23190
23190
  // src/telephony/security.ts
23191
23191
  import { Elysia as Elysia40 } from "elysia";
23192
23192
 
23193
- // src/postgresStore.ts
23193
+ // src/core/postgresStore.ts
23194
23194
  var normalizeIdentifierSegment = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice";
23195
23195
  var quoteIdentifier = (value) => `"${value.replace(/"/g, '""')}"`;
23196
23196
  var resolveStoreTableName = (input) => {
@@ -23450,7 +23450,7 @@ var createVoicePostgresRuntimeStorage = (options) => {
23450
23450
  };
23451
23451
  };
23452
23452
 
23453
- // src/sqliteStore.ts
23453
+ // src/core/sqliteStore.ts
23454
23454
  import { Database as Database2 } from "bun:sqlite";
23455
23455
  var normalizeTableNameSegment = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice";
23456
23456
  var resolveTableName = (input) => {
@@ -26039,7 +26039,7 @@ var createVoiceTelephonyWebhookSecurityPreset = (options = {}) => {
26039
26039
  };
26040
26040
  };
26041
26041
 
26042
- // src/providerSlo.ts
26042
+ // src/core/providerSlo.ts
26043
26043
  import { Elysia as Elysia41 } from "elysia";
26044
26044
  var defaultThresholds = {
26045
26045
  llm: {
@@ -26421,7 +26421,7 @@ var createVoiceProviderSloRoutes = (options) => {
26421
26421
  return app;
26422
26422
  };
26423
26423
 
26424
- // src/sessionObservability.ts
26424
+ // src/core/sessionObservability.ts
26425
26425
  import { Elysia as Elysia42 } from "elysia";
26426
26426
  var formatMs4 = (value) => value === undefined ? "n/a" : `${String(value)}ms`;
26427
26427
  var resolveHref = (href, sessionId) => {
@@ -26744,10 +26744,10 @@ var createVoiceSessionObservabilityRoutes = (options) => {
26744
26744
  return routes;
26745
26745
  };
26746
26746
 
26747
- // src/opsRecovery.ts
26747
+ // src/core/opsRecovery.ts
26748
26748
  import { Elysia as Elysia43 } from "elysia";
26749
26749
 
26750
- // src/latencySlo.ts
26750
+ // src/core/latencySlo.ts
26751
26751
  var DEFAULT_WARN_AFTER_MS = 1800;
26752
26752
  var DEFAULT_FAIL_AFTER_MS = 3200;
26753
26753
  var STAGE_LABELS = {
@@ -27050,7 +27050,7 @@ None.
27050
27050
  `}`;
27051
27051
  };
27052
27052
 
27053
- // src/opsRecovery.ts
27053
+ // src/core/opsRecovery.ts
27054
27054
  var getString16 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
27055
27055
  var hrefForSession = (value, sessionId) => {
27056
27056
  if (typeof value === "function") {
@@ -27305,7 +27305,7 @@ var createVoiceOpsRecoveryRoutes = (options = {}) => {
27305
27305
  return routes;
27306
27306
  };
27307
27307
 
27308
- // src/productionReadiness.ts
27308
+ // src/core/productionReadiness.ts
27309
27309
  var buildVoiceReadinessRecoveryActions = (input, options = {}) => {
27310
27310
  const checks = "checks" in input ? input.checks : input;
27311
27311
  const includeWarnings = options.includeWarnings ?? true;
@@ -29526,7 +29526,7 @@ var createVoiceProductionReadinessRoutes = (options) => {
29526
29526
  return routes;
29527
29527
  };
29528
29528
 
29529
- // src/operationalStatus.ts
29529
+ // src/core/operationalStatus.ts
29530
29530
  var resolveValue2 = async (value) => typeof value === "function" ? await value() : value;
29531
29531
  var isDeliveryRuntime = (value) => Boolean(value && typeof value === "object" && "isRunning" in value && "summarize" in value);
29532
29532
  var worstStatus3 = (statuses) => worstVoiceStatus(statuses);
@@ -29635,7 +29635,7 @@ var createVoiceOperationalStatusRoutes = (options) => {
29635
29635
  return routes;
29636
29636
  };
29637
29637
 
29638
- // src/opsConsoleRoutes.ts
29638
+ // src/core/opsConsoleRoutes.ts
29639
29639
  import { Elysia as Elysia46 } from "elysia";
29640
29640
  var DEFAULT_LINKS = [
29641
29641
  {
@@ -29760,10 +29760,10 @@ var createVoiceOpsConsoleRoutes = (options) => {
29760
29760
  return routes;
29761
29761
  };
29762
29762
 
29763
- // src/opsStatusRoutes.ts
29763
+ // src/core/opsStatusRoutes.ts
29764
29764
  import { Elysia as Elysia47 } from "elysia";
29765
29765
 
29766
- // src/opsStatus.ts
29766
+ // src/core/opsStatus.ts
29767
29767
  var DEFAULT_LINKS2 = [
29768
29768
  {
29769
29769
  description: "Production quality gates.",
@@ -29926,7 +29926,7 @@ var summarizeVoiceOpsStatus = async (options) => {
29926
29926
  };
29927
29927
  };
29928
29928
 
29929
- // src/opsStatusRoutes.ts
29929
+ // src/core/opsStatusRoutes.ts
29930
29930
  var renderVoiceOpsStatusHTML = (report, options = {}) => {
29931
29931
  const title = options.title ?? "AbsoluteJS Voice Ops Status";
29932
29932
  const surfaces = Object.entries(report.surfaces).map(([key, surface]) => {
@@ -29953,7 +29953,7 @@ var createVoiceOpsStatusRoutes = (options) => {
29953
29953
  return routes;
29954
29954
  };
29955
29955
 
29956
- // src/opsWebhook.ts
29956
+ // src/core/opsWebhook.ts
29957
29957
  import { Elysia as Elysia48 } from "elysia";
29958
29958
  var toHex6 = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
29959
29959
  var signVoiceOpsWebhookBody = async (input) => {
@@ -30117,7 +30117,7 @@ var createVoiceOpsWebhookReceiverRoutes = (options = {}) => {
30117
30117
  });
30118
30118
  };
30119
30119
 
30120
- // src/outcomeContract.ts
30120
+ // src/core/outcomeContract.ts
30121
30121
  import { Elysia as Elysia49 } from "elysia";
30122
30122
  var resolveSessionHref4 = (value, sessionId) => {
30123
30123
  if (value === false) {
@@ -30371,7 +30371,7 @@ var createVoiceOutcomeContractRoutes = (options) => {
30371
30371
  return routes;
30372
30372
  };
30373
30373
 
30374
- // src/phoneAgentProductionSmoke.ts
30374
+ // src/core/phoneAgentProductionSmoke.ts
30375
30375
  import { Elysia as Elysia50 } from "elysia";
30376
30376
  var defaultRequirements = [
30377
30377
  "media-started",
@@ -30523,7 +30523,7 @@ var createVoicePhoneAgentProductionSmokeRoutes = (options) => {
30523
30523
  return routes;
30524
30524
  };
30525
30525
 
30526
- // src/platformCoverage.ts
30526
+ // src/core/platformCoverage.ts
30527
30527
  import { Elysia as Elysia51 } from "elysia";
30528
30528
  var buildVoicePlatformCoverageSummary = (input) => {
30529
30529
  const coverage = input.coverage ?? [];
@@ -30597,7 +30597,7 @@ var createVoicePlatformCoverageRoutes = (options) => {
30597
30597
  return routes;
30598
30598
  };
30599
30599
 
30600
- // src/postCallAnalysis.ts
30600
+ // src/core/postCallAnalysis.ts
30601
30601
  import { Elysia as Elysia52 } from "elysia";
30602
30602
  var isStore = (value) => Boolean(value) && typeof value === "object" && value !== null && ("list" in value);
30603
30603
  var asArray = async (value) => Array.isArray(value) ? value : isStore(value) ? await value.list() : [];
@@ -30802,7 +30802,7 @@ var createVoicePostCallAnalysisRoutes = (options = {}) => {
30802
30802
  return routes;
30803
30803
  };
30804
30804
 
30805
- // src/proofPack.ts
30805
+ // src/core/proofPack.ts
30806
30806
  import { Elysia as Elysia53 } from "elysia";
30807
30807
  import { mkdir as mkdir4 } from "fs/promises";
30808
30808
  import { dirname as dirname3, join as join3 } from "path";
@@ -31409,10 +31409,10 @@ var createVoiceProofPackRoutes = (options) => {
31409
31409
  return app;
31410
31410
  };
31411
31411
 
31412
- // src/proofTrends.ts
31412
+ // src/core/proofTrends.ts
31413
31413
  import { Elysia as Elysia55 } from "elysia";
31414
31414
 
31415
- // src/providerDecisionTraces.ts
31415
+ // src/core/providerDecisionTraces.ts
31416
31416
  import { Elysia as Elysia54 } from "elysia";
31417
31417
  var getString18 = (value) => typeof value === "string" ? value : undefined;
31418
31418
  var getNumber11 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
@@ -31726,7 +31726,7 @@ var createVoiceProviderDecisionTraceRoutes = (options) => {
31726
31726
  return app;
31727
31727
  };
31728
31728
 
31729
- // src/proofTrends.ts
31729
+ // src/core/proofTrends.ts
31730
31730
  var DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS = 24 * 60 * 60 * 1000;
31731
31731
  var DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS = [
31732
31732
  {
@@ -34541,7 +34541,7 @@ var formatVoiceProofTrendAge = (ageMs) => {
34541
34541
  return `${days}d ${hours % 24}h`;
34542
34542
  };
34543
34543
 
34544
- // src/providerCapabilities.ts
34544
+ // src/core/providerCapabilities.ts
34545
34545
  import { Elysia as Elysia56 } from "elysia";
34546
34546
  var fromProviderList = (kind, providers, options) => (providers ?? []).map((provider) => ({
34547
34547
  configured: true,
@@ -34653,7 +34653,7 @@ var createVoiceProviderCapabilityRoutes = (options) => {
34653
34653
  return routes;
34654
34654
  };
34655
34655
 
34656
- // src/providerOrchestration.ts
34656
+ // src/core/providerOrchestration.ts
34657
34657
  import { Elysia as Elysia57 } from "elysia";
34658
34658
  var defaultRequirement = {
34659
34659
  minProviders: 1,
@@ -34859,7 +34859,7 @@ var createVoiceProviderOrchestrationRoutes = (options) => {
34859
34859
  return routes;
34860
34860
  };
34861
34861
 
34862
- // src/providerStackRecommendations.ts
34862
+ // src/core/providerStackRecommendations.ts
34863
34863
  import { Elysia as Elysia58 } from "elysia";
34864
34864
  var profileProviderPriorities = {
34865
34865
  "meeting-recorder": {
@@ -35331,7 +35331,7 @@ var assertVoiceProviderStackEvidence = (report, input = {}) => {
35331
35331
  return assertVoiceEvidence("Voice provider stack assertion failed", evaluateVoiceProviderStackEvidence(report, input));
35332
35332
  };
35333
35333
 
35334
- // src/realtimeChannel.ts
35334
+ // src/core/realtimeChannel.ts
35335
35335
  import { Elysia as Elysia59 } from "elysia";
35336
35336
  var DEFAULT_REALTIME_FORMAT2 = {
35337
35337
  channels: 1,
@@ -35648,7 +35648,7 @@ var createVoiceRealtimeChannelRoutes = (options) => {
35648
35648
  return app;
35649
35649
  };
35650
35650
 
35651
- // src/realtimeProviderContracts.ts
35651
+ // src/core/realtimeProviderContracts.ts
35652
35652
  import { Elysia as Elysia60 } from "elysia";
35653
35653
  var defaultRequiredCapabilities = [
35654
35654
  "browser-format-negotiation",
@@ -35876,7 +35876,7 @@ var createVoiceRealtimeProviderContractRoutes = (options) => {
35876
35876
  return routes;
35877
35877
  };
35878
35878
 
35879
- // src/reconnectContract.ts
35879
+ // src/core/reconnectContract.ts
35880
35880
  import { Elysia as Elysia61 } from "elysia";
35881
35881
  var unique2 = (values) => [...new Set(values)];
35882
35882
  var isReconnectPayload = (value) => {
@@ -36125,13 +36125,13 @@ var createVoiceReconnectContractRoutes = (options) => {
36125
36125
  return app;
36126
36126
  };
36127
36127
 
36128
- // src/simulationSuite.ts
36128
+ // src/core/simulationSuite.ts
36129
36129
  import { Elysia as Elysia63 } from "elysia";
36130
36130
 
36131
- // src/toolContract.ts
36131
+ // src/core/toolContract.ts
36132
36132
  import { Elysia as Elysia62 } from "elysia";
36133
36133
 
36134
- // src/toolRuntime.ts
36134
+ // src/core/toolRuntime.ts
36135
36135
  var toErrorMessage4 = (error) => error instanceof Error ? error.message : String(error);
36136
36136
  var sleep5 = (ms) => new Promise((resolve) => {
36137
36137
  setTimeout(resolve, ms);
@@ -36328,7 +36328,7 @@ var createVoiceToolIdempotencyKey = (input) => {
36328
36328
  ].join(":");
36329
36329
  };
36330
36330
 
36331
- // src/toolContract.ts
36331
+ // src/core/toolContract.ts
36332
36332
  var createDefaultSession = (contractId, caseId) => createVoiceSessionRecord(`tool-contract-${contractId}-${caseId}`);
36333
36333
  var createDefaultTurn = (caseId) => ({
36334
36334
  committedAt: Date.now(),
@@ -36659,7 +36659,7 @@ var createVoiceToolContractRoutes = (options) => {
36659
36659
  return routes;
36660
36660
  };
36661
36661
 
36662
- // src/simulationSuite.ts
36662
+ // src/core/simulationSuite.ts
36663
36663
  var summarizeSection = (report) => ({
36664
36664
  failed: report.failed,
36665
36665
  passed: report.passed,
@@ -36915,7 +36915,7 @@ var createVoiceSimulationSuiteRoutes = (options) => {
36915
36915
  return app;
36916
36916
  };
36917
36917
 
36918
- // src/sloCalibration.ts
36918
+ // src/core/sloCalibration.ts
36919
36919
  import { Elysia as Elysia64 } from "elysia";
36920
36920
  var DEFAULT_HEADROOM_MULTIPLIER = 1.5;
36921
36921
  var DEFAULT_WARN_RATIO = 0.8;
@@ -37254,7 +37254,7 @@ var createVoiceSloReadinessThresholdRoutes = (options) => {
37254
37254
  return routes;
37255
37255
  };
37256
37256
 
37257
- // src/telephonyMediaRoutes.ts
37257
+ // src/core/telephonyMediaRoutes.ts
37258
37258
  import { Elysia as Elysia65 } from "elysia";
37259
37259
  import {
37260
37260
  buildMediaTelephonyStreamLifecycleReport,
@@ -37467,7 +37467,7 @@ var createVoiceTelephonyMediaRoutes = (options = {}) => {
37467
37467
  return routes;
37468
37468
  };
37469
37469
 
37470
- // src/traceDeliveryRoutes.ts
37470
+ // src/core/traceDeliveryRoutes.ts
37471
37471
  import { Elysia as Elysia66 } from "elysia";
37472
37472
  var getString19 = (value) => typeof value === "string" && value.trim() ? value.trim() : undefined;
37473
37473
  var getNumber12 = (value) => {
@@ -37594,7 +37594,7 @@ var createVoiceTraceDeliveryRoutes = (options) => {
37594
37594
  return routes;
37595
37595
  };
37596
37596
 
37597
- // src/turnLatency.ts
37597
+ // src/core/turnLatency.ts
37598
37598
  import { Elysia as Elysia67 } from "elysia";
37599
37599
  var DEFAULT_WARN_AFTER_MS2 = 1800;
37600
37600
  var DEFAULT_FAIL_AFTER_MS2 = 3200;
@@ -37763,7 +37763,7 @@ var createVoiceTurnLatencyRoutes = (options) => {
37763
37763
  return routes;
37764
37764
  };
37765
37765
 
37766
- // src/turnQuality.ts
37766
+ // src/core/turnQuality.ts
37767
37767
  import { Elysia as Elysia68 } from "elysia";
37768
37768
  var DEFAULT_CONFIDENCE_WARN_THRESHOLD = 0.72;
37769
37769
  var getTurnLatencyMs = (turn) => {
@@ -37878,7 +37878,7 @@ var createVoiceTurnQualityRoutes = (options) => {
37878
37878
  return routes;
37879
37879
  };
37880
37880
 
37881
- // src/voiceMonitoring.ts
37881
+ // src/core/voiceMonitoring.ts
37882
37882
  import { Elysia as Elysia69 } from "elysia";
37883
37883
  var issueIdForRun = (run) => `voice-monitor:${run.id}:${run.impactedSessions?.[0] ?? "global"}`;
37884
37884
  var rollupStatus5 = (runs) => worstVoiceStatus(runs.map((run) => run.status));
@@ -38227,7 +38227,7 @@ var createVoiceMonitorRunnerRoutes = (options) => {
38227
38227
  });
38228
38228
  };
38229
38229
 
38230
- // src/plugin.ts
38230
+ // src/core/plugin.ts
38231
38231
  var resolveQueryScenario = (query) => {
38232
38232
  if (typeof query?.scenarioId === "string" && query.scenarioId.trim()) {
38233
38233
  return query.scenarioId.trim();
@@ -38890,7 +38890,7 @@ var voice = (config) => {
38890
38890
  }
38891
38891
  }).use(htmxRoutes()).use(surfaceRoutes());
38892
38892
  };
38893
- // src/campaignDialers.ts
38893
+ // src/core/campaignDialers.ts
38894
38894
  import { Buffer as Buffer6 } from "buffer";
38895
38895
  var resolveFetch = (fetcher) => {
38896
38896
  const activeFetch = fetcher ?? globalThis.fetch;
@@ -39288,7 +39288,7 @@ var evaluateVoiceCampaignDialerProofEvidence = (report, input = {}) => {
39288
39288
  var assertVoiceCampaignDialerProofEvidence = (report, input = {}) => {
39289
39289
  return assertVoiceEvidence("Voice campaign dialer proof evidence assertion failed", evaluateVoiceCampaignDialerProofEvidence(report, input));
39290
39290
  };
39291
- // src/mediaPipelineSurfaces.ts
39291
+ // src/core/mediaPipelineSurfaces.ts
39292
39292
  import {
39293
39293
  buildMediaProcessorGraphArtifact,
39294
39294
  buildMediaQualityArtifact,
@@ -39501,7 +39501,7 @@ var writeVoiceMediaPipelineArtifacts = async (options) => {
39501
39501
  }
39502
39502
  return { artifacts, hrefs };
39503
39503
  };
39504
- // src/proofRunner.ts
39504
+ // src/core/proofRunner.ts
39505
39505
  var encoder = new TextEncoder;
39506
39506
  var trimBaseUrl = (baseUrl) => baseUrl.replace(/\/$/, "");
39507
39507
  var safeArtifactName = (name) => name.replace(/[^a-z0-9_.-]/gi, "-");
@@ -39713,7 +39713,7 @@ var runVoiceCommandProofTarget = async (target, options) => {
39713
39713
  };
39714
39714
  };
39715
39715
  var runVoiceCommandProofTargets = (targets, options) => mapVoiceProofTargetsWithConcurrency(targets, options.concurrency ?? targets.length, (target) => runVoiceCommandProofTarget(target, options));
39716
- // src/providerRouterTraces.ts
39716
+ // src/core/providerRouterTraces.ts
39717
39717
  var buildVoiceProviderRouterTraceEvent = (options) => ({
39718
39718
  at: options.at ?? options.event.at,
39719
39719
  id: options.id ?? `${options.sessionId}:${options.turnId ?? "session"}:${options.event.provider}:${options.event.status}:${String(options.at ?? options.event.at)}`,
@@ -39744,7 +39744,7 @@ var buildVoiceIOProviderRouterTraceEvent = (options) => ({
39744
39744
  type: options.type ?? "session.error"
39745
39745
  });
39746
39746
  var appendVoiceIOProviderRouterTraceEvent = async (options) => options.store.append(buildVoiceIOProviderRouterTraceEvent(options));
39747
- // src/workflowContract.ts
39747
+ // src/core/workflowContract.ts
39748
39748
  var getObject2 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
39749
39749
  var getPathValue3 = (value, path) => {
39750
39750
  let current = value;
@@ -40046,7 +40046,7 @@ var createVoiceWorkflowContractHandler = (input) => {
40046
40046
  return result;
40047
40047
  };
40048
40048
  };
40049
- // src/conversationSimulator.ts
40049
+ // src/core/conversationSimulator.ts
40050
40050
  var createStubApi = (sessionId) => ({ id: sessionId });
40051
40051
  var callerTurnText = async (caller, transcript, turnIndex) => {
40052
40052
  if (caller.kind === "script") {
@@ -40164,7 +40164,7 @@ Respond with only your spoken line. When your goal is met or you want to hang up
40164
40164
  persona: options.persona
40165
40165
  };
40166
40166
  };
40167
- // src/mcpToolset.ts
40167
+ // src/core/mcpToolset.ts
40168
40168
  var flattenContent = (result) => {
40169
40169
  const blocks = result.content ?? [];
40170
40170
  const text = blocks.filter((block) => block.type === "text" && typeof block.text === "string").map((block) => block.text).join(`
@@ -40210,7 +40210,7 @@ var createVoiceMCPToolset = async (options) => {
40210
40210
  }
40211
40211
  return tools;
40212
40212
  };
40213
- // src/aiVoiceModel.ts
40213
+ // src/core/aiVoiceModel.ts
40214
40214
  var toProviderMessages = (messages) => {
40215
40215
  const out = [];
40216
40216
  for (const message of messages) {
@@ -40316,7 +40316,7 @@ var createAIVoiceModel = (options) => ({
40316
40316
  return output;
40317
40317
  }
40318
40318
  });
40319
- // src/llmJudge.ts
40319
+ // src/core/llmJudge.ts
40320
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"}.';
40321
40321
  var buildPrompt = (rubric, input) => {
40322
40322
  const criteriaBlock = rubric.criteria.map((criterion) => `- ${criterion.id}${criterion.required ? " (required)" : ""}: ${criterion.description}`).join(`
@@ -40442,7 +40442,7 @@ var createVoiceAIJudgeCompletion = (options) => async ({ prompt, systemPrompt })
40442
40442
  }
40443
40443
  return buffered;
40444
40444
  };
40445
- // src/redaction.ts
40445
+ // src/core/redaction.ts
40446
40446
  var DEFAULT_VOICE_REDACTION_PATTERNS = [
40447
40447
  {
40448
40448
  label: "credit-card",
@@ -40482,7 +40482,7 @@ var createVoiceTranscriptRedactor = (options = {}) => {
40482
40482
  };
40483
40483
  };
40484
40484
  var redactVoiceTranscript = (transcript, patterns = DEFAULT_VOICE_REDACTION_PATTERNS) => createVoiceTranscriptRedactor({ patterns })(transcript);
40485
- // src/recordingRedaction.ts
40485
+ // src/core/recordingRedaction.ts
40486
40486
  import {
40487
40487
  applyAudioRedaction,
40488
40488
  mergeAudioRedactionRanges
@@ -40541,7 +40541,7 @@ var redactVoiceRecording = (input) => {
40541
40541
  redactedCount: ranges.length
40542
40542
  };
40543
40543
  };
40544
- // src/variableAnalytics.ts
40544
+ // src/core/variableAnalytics.ts
40545
40545
  var stringifyValue = (value) => {
40546
40546
  if (value === null || value === undefined)
40547
40547
  return "(none)";
@@ -40615,7 +40615,7 @@ var buildVoiceVariableAnalytics = (input) => {
40615
40615
  }
40616
40616
  return { byVariable, overall, totalCalls };
40617
40617
  };
40618
- // src/zeroDataRetention.ts
40618
+ // src/core/zeroDataRetention.ts
40619
40619
  var RETAIN_ALL = {
40620
40620
  assistantText: true,
40621
40621
  metadata: true,
@@ -40675,7 +40675,7 @@ var scrubVoiceTraceForZeroDataRetention = (event, policy) => {
40675
40675
  return { ...event, payload: scrubbedPayload };
40676
40676
  };
40677
40677
  var VOICE_ZERO_DATA_RETENTION_REDACTION_MARKER = REDACTED;
40678
- // src/costAccounting.ts
40678
+ // src/core/costAccounting.ts
40679
40679
  var DEFAULT_VOICE_PRICE_BOOK = {
40680
40680
  "anthropic:claude-opus-4-5": {
40681
40681
  llm: {
@@ -40818,7 +40818,7 @@ var createVoiceCostAccountant = (options = {}) => {
40818
40818
  })
40819
40819
  };
40820
40820
  };
40821
- // src/semanticTurn.ts
40821
+ // src/core/semanticTurn.ts
40822
40822
  var DEFAULT_END_PUNCTUATION = [".", "?", "!"];
40823
40823
  var DEFAULT_FILLER_WORDS = [
40824
40824
  "uh",
@@ -40888,7 +40888,7 @@ var createRegexSemanticTurnDetector = (options) => {
40888
40888
  }
40889
40889
  };
40890
40890
  };
40891
- // src/webhookVerification.ts
40891
+ // src/core/webhookVerification.ts
40892
40892
  var VOICE_WEBHOOK_SIGNATURE_HEADER = "x-absolutejs-signature";
40893
40893
  var VOICE_WEBHOOK_TIMESTAMP_HEADER = "x-absolutejs-timestamp";
40894
40894
  var toHex7 = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
@@ -40959,7 +40959,7 @@ var extractVoiceWebhookSignatureFromHeaders = (headers) => {
40959
40959
  timestamp: get(VOICE_WEBHOOK_TIMESTAMP_HEADER)
40960
40960
  };
40961
40961
  };
40962
- // src/campaignControls.ts
40962
+ // src/core/campaignControls.ts
40963
40963
  var normalizePhoneNumber = (phone) => phone.replace(/[\s()-]/g, "").trim();
40964
40964
  var createInMemoryDNCList = (phones) => {
40965
40965
  const set = new Set(phones.map(normalizePhoneNumber));
@@ -41043,7 +41043,7 @@ var summarizeVoiceCampaignDispositions = (record) => {
41043
41043
  totalRecipients: record.recipients.length
41044
41044
  };
41045
41045
  };
41046
- // src/backchannel.ts
41046
+ // src/core/backchannel.ts
41047
41047
  var DEFAULT_CUES = [
41048
41048
  { text: "mm-hmm" },
41049
41049
  { text: "I see" },
@@ -41107,7 +41107,7 @@ var createVoiceBackchannelDriver = (options) => {
41107
41107
  }
41108
41108
  };
41109
41109
  };
41110
- // src/oauth2TokenSource.ts
41110
+ // src/core/oauth2TokenSource.ts
41111
41111
  var createVoiceOAuth2TokenSource = (options) => {
41112
41112
  const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
41113
41113
  const refreshSkewMs = (options.refreshSkewSeconds ?? 60) * 1000;
@@ -41167,7 +41167,7 @@ var createVoiceOAuth2TokenSource = (options) => {
41167
41167
  }
41168
41168
  };
41169
41169
  };
41170
- // src/ivrPlan.ts
41170
+ // src/core/ivrPlan.ts
41171
41171
  var speechMatchesPattern = (pattern, speech) => {
41172
41172
  const normalized = speech.toLowerCase().trim();
41173
41173
  if (pattern instanceof RegExp) {
@@ -41251,7 +41251,7 @@ var describeVoiceIVRPlan = (plan) => {
41251
41251
  return lines.join(`
41252
41252
  `);
41253
41253
  };
41254
- // src/callerMemory.ts
41254
+ // src/core/callerMemory.ts
41255
41255
  var VOICE_CALLER_MEMORY_KEY = "caller-memory-snapshot";
41256
41256
  var normalizeIdentifier = (value) => value.trim().replace(/[^a-zA-Z0-9+@._-]/g, "-").toLowerCase();
41257
41257
  var buildVoiceCallerMemoryNamespace = (identity, prefix = "caller") => {
@@ -41342,7 +41342,7 @@ Return JSON only.`;
41342
41342
  summary: typeof record.summary === "string" ? record.summary : ""
41343
41343
  };
41344
41344
  };
41345
- // src/otelExporter.ts
41345
+ // src/core/otelExporter.ts
41346
41346
  var SCOPE_NAME = "@absolutejs/voice";
41347
41347
  var SPAN_KIND_INTERNAL = 1;
41348
41348
  var STATUS_OK = 1;
@@ -41479,7 +41479,7 @@ var createVoiceOTELHTTPExporter = (options) => {
41479
41479
  }
41480
41480
  };
41481
41481
  };
41482
- // src/amdDetector.ts
41482
+ // src/core/amdDetector.ts
41483
41483
  var createMonologueAMDDetector = (options = {}) => {
41484
41484
  const minMonologueMs = options.minMonologueMs ?? 8000;
41485
41485
  const reason = options.reason ?? "monologue-suspected-voicemail";
@@ -41509,7 +41509,7 @@ var createMonologueAMDDetector = (options = {}) => {
41509
41509
  intervalMs: options.intervalMs ?? 1000
41510
41510
  };
41511
41511
  };
41512
- // src/agentTools.ts
41512
+ // src/core/agentTools.ts
41513
41513
  var createVoiceEndCallTool = (options = {}) => createVoiceAgentTool({
41514
41514
  description: options.description ?? "End the call gracefully. Call this only when the conversation is complete or the caller asks to hang up.",
41515
41515
  execute: async ({ api, args, context, session }) => {
@@ -41732,9 +41732,9 @@ var createVoiceApiRequestTool = (options) => {
41732
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)}.`)
41733
41733
  });
41734
41734
  };
41735
- // src/voiceConfiguration.ts
41735
+ // src/core/voiceConfiguration.ts
41736
41736
  var createVoiceConfiguration = (configuration) => configuration;
41737
- // src/defineVoiceAssistant.ts
41737
+ // src/core/defineVoiceAssistant.ts
41738
41738
  var DEFAULT_SPEECH_THRESHOLD2 = 0.015;
41739
41739
  var DEFAULT_SILENCE_MS2 = 700;
41740
41740
  var DEFAULT_TRANSCRIPT_STABILITY_MS2 = 200;
@@ -41803,7 +41803,7 @@ var defineVoiceAssistant = (definition) => {
41803
41803
  }
41804
41804
  };
41805
41805
  };
41806
- // src/callQuota.ts
41806
+ // src/core/callQuota.ts
41807
41807
  var monthBucketKey = (epochMs) => {
41808
41808
  const date = new Date(epochMs);
41809
41809
  return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, "0")}`;
@@ -41901,7 +41901,7 @@ var createInMemoryVoiceCallQuota = (options) => {
41901
41901
  }
41902
41902
  };
41903
41903
  };
41904
- // src/routeAuth.ts
41904
+ // src/core/routeAuth.ts
41905
41905
  import { Elysia as Elysia71 } from "elysia";
41906
41906
  var createVoiceBearerAuthVerifier = (input) => {
41907
41907
  const headerName = (input.headerName ?? "authorization").toLowerCase();
@@ -42112,7 +42112,7 @@ var formatVoiceCallPlayerTimestamp = (ms) => {
42112
42112
  const remaining = seconds % 60;
42113
42113
  return `${String(minutes).padStart(2, "0")}:${String(remaining).padStart(2, "0")}`;
42114
42114
  };
42115
- // src/phoneProvisioning.ts
42115
+ // src/core/phoneProvisioning.ts
42116
42116
  var requireAuth = (input) => {
42117
42117
  if (!input.accountSid || !input.authToken) {
42118
42118
  throw new Error("Twilio provisioning requires accountSid + authToken");
@@ -42254,7 +42254,7 @@ var provisionTelnyxPhoneNumber = async (input) => {
42254
42254
  raw: orderResult
42255
42255
  };
42256
42256
  };
42257
- // src/webhookFanout.ts
42257
+ // src/core/webhookFanout.ts
42258
42258
  var deliverOnce = async (input) => {
42259
42259
  const startedAt = Date.now();
42260
42260
  const timeoutMs = input.sink.timeoutMs ?? 1e4;
@@ -42407,7 +42407,7 @@ var BROWSER_NOISE_SUPPRESSOR_PRESETS = {
42407
42407
  workletUrl
42408
42408
  })
42409
42409
  };
42410
- // src/retention.ts
42410
+ // src/core/retention.ts
42411
42411
  var defaultResolveAt = (event) => {
42412
42412
  if (!event || typeof event !== "object")
42413
42413
  return;
@@ -42460,7 +42460,7 @@ var createVoiceRetentionScheduler = (options) => {
42460
42460
  }
42461
42461
  };
42462
42462
  };
42463
- // src/vapiAdapter.ts
42463
+ // src/core/vapiAdapter.ts
42464
42464
  var VAPI_BUILT_IN_VARIABLES = {
42465
42465
  date: () => new Date().toISOString().slice(0, 10),
42466
42466
  now: () => new Date().toISOString(),
@@ -42734,7 +42734,7 @@ var fromVapiAssistantConfig = (config, options) => {
42734
42734
  unsupported
42735
42735
  };
42736
42736
  };
42737
- // src/agentSquadContract.ts
42737
+ // src/core/agentSquadContract.ts
42738
42738
  var normalizeIncludes = (value) => value.trim().toLowerCase();
42739
42739
  var resolveOutcome4 = (result) => {
42740
42740
  if (result.complete)
@@ -43038,7 +43038,7 @@ var evaluateVoiceAgentSquadContractEvidence = (reports, input = {}) => {
43038
43038
  var assertVoiceAgentSquadContractEvidence = (reports, input = {}) => {
43039
43039
  return assertVoiceEvidence("Voice agent squad contract evidence assertion failed", evaluateVoiceAgentSquadContractEvidence(reports, input));
43040
43040
  };
43041
- // src/phoneAgent.ts
43041
+ // src/core/phoneAgent.ts
43042
43042
  import { Elysia as Elysia72 } from "elysia";
43043
43043
  var defaultSetupPath = (provider) => `/api/voice/${provider}/setup`;
43044
43044
  var defaultSmokePath = (provider) => `/api/voice/${provider}/smoke`;
@@ -43442,7 +43442,7 @@ var createVoicePhoneAgent = (options) => {
43442
43442
  setupPath
43443
43443
  };
43444
43444
  };
43445
- // src/fileStore.ts
43445
+ // src/core/fileStore.ts
43446
43446
  import {
43447
43447
  mkdir as mkdir5,
43448
43448
  readFile as readFile2,
@@ -44071,7 +44071,7 @@ var createVoiceFileRecordingStore = (options) => {
44071
44071
  };
44072
44072
  return { get, list, put };
44073
44073
  };
44074
- // src/modelAdapters.ts
44074
+ // src/core/modelAdapters.ts
44075
44075
  var isVoiceProviderRoutingPolicyPreset = (value) => value === "balanced" || value === "cost-cap" || value === "cost-first" || value === "latency-first" || value === "quality-first";
44076
44076
  var resolveVoiceProviderRoutingPolicyPreset = (preset, options = {}) => {
44077
44077
  switch (preset) {
@@ -45026,7 +45026,7 @@ var createGeminiVoiceAssistantModel = (options) => {
45026
45026
  }
45027
45027
  };
45028
45028
  };
45029
- // src/openaiTTS.ts
45029
+ // src/core/openaiTTS.ts
45030
45030
  var OPENAI_PCM24_FORMAT = {
45031
45031
  channels: 1,
45032
45032
  container: "raw",
@@ -45160,7 +45160,7 @@ var createOpenAIVoiceTTS = (options) => {
45160
45160
  }
45161
45161
  };
45162
45162
  };
45163
- // src/providerRoutingContract.ts
45163
+ // src/core/providerRoutingContract.ts
45164
45164
  var isRoutingEvent2 = (event) => Boolean(event && typeof event === "object" && "status" in event && "kind" in event && "sessionId" in event);
45165
45165
  var normalizeEvents2 = (events) => (events.every(isRoutingEvent2) ? [...events] : listVoiceRoutingEvents(events)).sort((left, right) => left.at - right.at);
45166
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);
@@ -45299,7 +45299,7 @@ var evaluateVoiceProviderRoutingContractEvidence = (reports, input = {}) => {
45299
45299
  var assertVoiceProviderRoutingContractEvidence = (reports, input = {}) => {
45300
45300
  return assertVoiceEvidence("Voice provider routing contract evidence assertion failed", evaluateVoiceProviderRoutingContractEvidence(reports, input));
45301
45301
  };
45302
- // src/readinessProfiles.ts
45302
+ // src/core/readinessProfiles.ts
45303
45303
  var profileSurfaceLabels = {
45304
45304
  "meeting-recorder": {
45305
45305
  bargeInReports: "barge-in proof configured",
@@ -45670,7 +45670,7 @@ var recommendVoiceReadinessProfile = (options) => {
45670
45670
  scores
45671
45671
  };
45672
45672
  };
45673
- // src/providerAdapters.ts
45673
+ // src/core/providerAdapters.ts
45674
45674
  class VoiceIOProviderTimeoutError extends Error {
45675
45675
  provider;
45676
45676
  timeoutMs;
@@ -46087,7 +46087,7 @@ var createVoiceTTSProviderRouter = (options) => {
46087
46087
  }
46088
46088
  };
46089
46089
  };
46090
- // src/s3Store.ts
46090
+ // src/core/s3Store.ts
46091
46091
  var encodeStoreId2 = (id) => `${encodeURIComponent(id)}.json`;
46092
46092
  var normalizeKeyPrefix = (prefix) => prefix?.trim().replace(/^\/+|\/+$/g, "") ?? "voice/reviews";
46093
46093
  var toReviewObjectKey = (prefix, id) => `${prefix}/${encodeStoreId2(id)}`;
@@ -46201,7 +46201,7 @@ var createVoiceS3RecordingStore = (options) => {
46201
46201
  };
46202
46202
  return { get, list, put };
46203
46203
  };
46204
- // src/memoryStore.ts
46204
+ // src/core/memoryStore.ts
46205
46205
  var createVoiceMemoryStore = () => {
46206
46206
  const sessions = new Map;
46207
46207
  const get = async (id) => sessions.get(id);
@@ -46222,7 +46222,7 @@ var createVoiceMemoryStore = () => {
46222
46222
  };
46223
46223
  return { get, getOrCreate, list, remove, set };
46224
46224
  };
46225
- // src/opsRuntime.ts
46225
+ // src/core/opsRuntime.ts
46226
46226
  var resolveTaskStores = (config) => {
46227
46227
  if (!config.ops.tasks) {
46228
46228
  throw new Error("Voice ops runtime task workers require ops.tasks to be configured.");
@@ -46410,7 +46410,7 @@ var createVoiceOpsRuntime = (config) => {
46410
46410
  }
46411
46411
  };
46412
46412
  };
46413
- // src/opsPresets.ts
46413
+ // src/core/opsPresets.ts
46414
46414
  var PRESET_INPUTS2 = {
46415
46415
  "collections-default": {
46416
46416
  description: "Biases toward fast callback recovery, aggressive retry routing, and supervisor escalation for overdue debt or collections follow-up.",
@@ -46644,7 +46644,7 @@ var resolveVoiceOpsPreset = (name, overrides = {}) => {
46644
46644
  taskPolicies: mergePolicies(preset.taskPolicies, overrides.taskPolicies)
46645
46645
  };
46646
46646
  };
46647
- // src/correction.ts
46647
+ // src/core/correction.ts
46648
46648
  var escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
46649
46649
  var buildAliasMatcher = (alias) => new RegExp(`(?<![\\p{L}\\p{N}'])${escapeRegExp(alias)}(?![\\p{L}\\p{N}'])`, "giu");
46650
46650
  var WORD_PATTERN = /[\p{L}\p{N}']+/gu;
@@ -46939,7 +46939,7 @@ var createRiskyTurnCorrectionHandler = (options = {}) => {
46939
46939
  };
46940
46940
  };
46941
46941
 
46942
- // src/routing.ts
46942
+ // src/core/routing.ts
46943
46943
  var resolveVoiceSTTRoutingStrategy = (goal = "best") => {
46944
46944
  if (goal === "low-cost") {
46945
46945
  return {
@@ -47901,7 +47901,7 @@ var runSTTAdapterBenchmarkSeries = async ({
47901
47901
  });
47902
47902
  };
47903
47903
 
47904
- // src/multilingualProof.ts
47904
+ // src/core/multilingualProof.ts
47905
47905
  var average3 = (values) => {
47906
47906
  if (values.length === 0)
47907
47907
  return 0;
@@ -48113,7 +48113,7 @@ var buildVoiceMultilingualProofReadinessCheck = (report, options = {}) => {
48113
48113
  value: failedAdapters.length
48114
48114
  };
48115
48115
  };
48116
- // src/costPredictor.ts
48116
+ // src/core/costPredictor.ts
48117
48117
  var lookupRates2 = (priceBook, provider, model) => {
48118
48118
  if (!provider)
48119
48119
  return;
@@ -48197,7 +48197,7 @@ var compareVoiceCostScenarios = (input) => {
48197
48197
  })
48198
48198
  };
48199
48199
  };
48200
- // src/iceServers.ts
48200
+ // src/core/iceServers.ts
48201
48201
  var toBase643 = (bytes) => {
48202
48202
  if (typeof Buffer !== "undefined") {
48203
48203
  return Buffer.from(bytes).toString("base64");
@@ -48258,7 +48258,7 @@ var createTwilioNTSIceServers = async (input) => {
48258
48258
  username: entry.username
48259
48259
  }));
48260
48260
  };
48261
- // src/holdAudio.ts
48261
+ // src/core/holdAudio.ts
48262
48262
  var DEFAULT_CUES2 = [
48263
48263
  { text: "Let me look that up for you." },
48264
48264
  { text: "One moment while I check on that." },
@@ -48335,7 +48335,7 @@ var createVoiceHoldAudioDriver = (options) => {
48335
48335
  }
48336
48336
  };
48337
48337
  };
48338
- // src/promptInjectionGuard.ts
48338
+ // src/core/promptInjectionGuard.ts
48339
48339
  var DEFAULT_VOICE_PROMPT_INJECTION_RULES = [
48340
48340
  {
48341
48341
  label: "ignore-prior-instructions",
@@ -48399,7 +48399,7 @@ var createVoicePromptInjectionGuard = (options = {}) => {
48399
48399
  }
48400
48400
  };
48401
48401
  };
48402
- // src/postCallSurvey.ts
48402
+ // src/core/postCallSurvey.ts
48403
48403
  var DEFAULT_VOICE_POST_CALL_SURVEY_QUESTIONS = [
48404
48404
  {
48405
48405
  id: "nps",
@@ -48526,7 +48526,7 @@ var summarizeVoicePostCallSurveys = (responses) => {
48526
48526
  sampleSize: ratings.length
48527
48527
  };
48528
48528
  };
48529
- // src/dtmfCollector.ts
48529
+ // src/core/dtmfCollector.ts
48530
48530
  var VOICE_DTMF_DIGITS = [
48531
48531
  "0",
48532
48532
  "1",
@@ -48663,7 +48663,7 @@ var validateVoiceDTMFLuhn = (digits) => {
48663
48663
  }
48664
48664
  return sum % 10 === 0;
48665
48665
  };
48666
- // src/dncRegistry.ts
48666
+ // src/core/dncRegistry.ts
48667
48667
  var normalizePhone = (phone) => {
48668
48668
  const trimmed = phone.trim();
48669
48669
  if (!trimmed)
@@ -48773,7 +48773,7 @@ var importVoiceDNCFromCSV = (csv, options = {}) => {
48773
48773
  }
48774
48774
  return entries;
48775
48775
  };
48776
- // src/callingWindow.ts
48776
+ // src/core/callingWindow.ts
48777
48777
  var DAY_INDEX = {
48778
48778
  friday: 5,
48779
48779
  monday: 1,
@@ -48917,7 +48917,7 @@ var VOICE_TCPA_DEFAULT_WINDOW = {
48917
48917
  allowedDays: ["monday", "tuesday", "wednesday", "thursday", "friday"],
48918
48918
  allowedHours: { end: "21:00", start: "08:00" }
48919
48919
  };
48920
- // src/callDisposition.ts
48920
+ // src/core/callDisposition.ts
48921
48921
  var DEFAULT_VOICE_CALL_DISPOSITIONS = [
48922
48922
  {
48923
48923
  code: "sale",
@@ -49093,7 +49093,7 @@ var createVoiceCallDispositionTagger = (options = {}) => {
49093
49093
  untag
49094
49094
  };
49095
49095
  };
49096
- // src/retryPolicy.ts
49096
+ // src/core/retryPolicy.ts
49097
49097
  var DEFAULT_RULES = [
49098
49098
  {
49099
49099
  action: "retry",
@@ -49161,7 +49161,7 @@ var createVoiceRetryPolicy = (options = {}) => {
49161
49161
  }
49162
49162
  };
49163
49163
  };
49164
- // src/campaignTemplate.ts
49164
+ // src/core/campaignTemplate.ts
49165
49165
  var lookupPath = (scope, path) => {
49166
49166
  const parts2 = path.split(".");
49167
49167
  let cursor = scope;
@@ -49281,7 +49281,7 @@ var collectVoiceCampaignTemplateVariables = (template) => {
49281
49281
  }
49282
49282
  return Array.from(set);
49283
49283
  };
49284
- // src/whisperChannel.ts
49284
+ // src/core/whisperChannel.ts
49285
49285
  var createVoiceWhisperChannel = (options) => {
49286
49286
  const now = options.now ?? (() => Date.now());
49287
49287
  const defaultRoute = options.defaultRoute ?? "agent-only";
@@ -49355,7 +49355,7 @@ var createVoiceWhisperChannel = (options) => {
49355
49355
  }
49356
49356
  };
49357
49357
  };
49358
- // src/liveCoach.ts
49358
+ // src/core/liveCoach.ts
49359
49359
  var DEFAULT_TEMPLATES = {
49360
49360
  correction: "Supervisor correction (do not repeat this verbatim; weave it into your next response): {{text}}",
49361
49361
  hint: "Supervisor hint: {{text}}",
@@ -49438,7 +49438,7 @@ var createVoiceLiveCoach = (options) => {
49438
49438
  }
49439
49439
  };
49440
49440
  };
49441
- // src/transcriptAnnotator.ts
49441
+ // src/core/transcriptAnnotator.ts
49442
49442
  var DEFAULT_VOICE_ANNOTATION_KIND_SEVERITY = {
49443
49443
  "compliance-concern": "major",
49444
49444
  custom: "info",
@@ -49516,7 +49516,7 @@ var createVoiceTranscriptAnnotator = (options) => {
49516
49516
  summarize
49517
49517
  };
49518
49518
  };
49519
- // src/supervisorPresence.ts
49519
+ // src/core/supervisorPresence.ts
49520
49520
  var createVoiceSupervisorPresence = (options = {}) => {
49521
49521
  const now = options.now ?? (() => Date.now());
49522
49522
  const staleAfter = options.staleAfterMs ?? 30000;
@@ -49624,7 +49624,7 @@ var createVoiceSupervisorPresence = (options = {}) => {
49624
49624
  }
49625
49625
  };
49626
49626
  };
49627
- // src/supervisorPermissions.ts
49627
+ // src/core/supervisorPermissions.ts
49628
49628
  var TIER_CAPABILITIES = {
49629
49629
  annotate: ["monitor", "annotate"],
49630
49630
  coach: ["monitor", "annotate", "coach"],
@@ -49715,7 +49715,7 @@ var createVoiceSupervisorPermissions = (options = {}) => {
49715
49715
  };
49716
49716
  };
49717
49717
  var VOICE_SUPERVISOR_TIER_CAPABILITIES = TIER_CAPABILITIES;
49718
- // src/calendarAdapter.ts
49718
+ // src/core/calendarAdapter.ts
49719
49719
  var createVoiceInMemoryCalendarAdapter = (options) => {
49720
49720
  const now = options.now ?? (() => Date.now());
49721
49721
  const generateId = options.generateId ?? (() => `appt_${Math.random().toString(36).slice(2, 10)}`);
@@ -49800,7 +49800,7 @@ var createVoiceInMemoryCalendarAdapter = (options) => {
49800
49800
  }
49801
49801
  };
49802
49802
  };
49803
- // src/bookingFlow.ts
49803
+ // src/core/bookingFlow.ts
49804
49804
  var createVoiceBookingFlow = (options) => {
49805
49805
  const initial = {
49806
49806
  proposedSlots: [],
@@ -49898,7 +49898,7 @@ var createVoiceBookingFlow = (options) => {
49898
49898
  }
49899
49899
  };
49900
49900
  };
49901
- // src/noShowPredictor.ts
49901
+ // src/core/noShowPredictor.ts
49902
49902
  var clamp = (value, min = 0, max = 1) => Math.max(min, Math.min(max, value));
49903
49903
  var scoreVoiceNoShowRisk = (input) => {
49904
49904
  const now = input.now ?? (() => Date.now());
@@ -49967,7 +49967,7 @@ var summarizeVoiceNoShowVerdict = (verdict) => {
49967
49967
  const top = verdict.drivers.slice(0, 2).map((d) => d.kind).join(", ");
49968
49968
  return `${verdict.band} risk (${pct}%)${top ? ` \u2014 driven by ${top}` : ""}`;
49969
49969
  };
49970
- // src/reminderScheduler.ts
49970
+ // src/core/reminderScheduler.ts
49971
49971
  var DEFAULT_VOICE_REMINDER_TRIGGERS = [
49972
49972
  {
49973
49973
  channel: "sms",
@@ -50080,7 +50080,7 @@ var createVoiceReminderScheduler = (options = {}) => {
50080
50080
  }
50081
50081
  };
50082
50082
  };
50083
- // src/callScorecard.ts
50083
+ // src/core/callScorecard.ts
50084
50084
  var clampScore = (raw, max) => Math.max(0, Math.min(max, raw));
50085
50085
  var buildVoiceCallScorecard = (input) => {
50086
50086
  const now = input.now ?? (() => Date.now());
@@ -50182,7 +50182,7 @@ var DEFAULT_VOICE_SALES_RUBRIC = {
50182
50182
  passingGrade: 0.75,
50183
50183
  scaleMax: 5
50184
50184
  };
50185
- // src/aiScorecard.ts
50185
+ // src/core/aiScorecard.ts
50186
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.";
50187
50187
  var buildPrompt2 = (input) => {
50188
50188
  const { rubric } = input;
@@ -50288,7 +50288,7 @@ var createVoiceAIScorecard = (options) => {
50288
50288
  }
50289
50289
  };
50290
50290
  };
50291
- // src/agentPerformanceReport.ts
50291
+ // src/core/agentPerformanceReport.ts
50292
50292
  var bucketKeyFor = (ms, bucket) => {
50293
50293
  const date = new Date(ms);
50294
50294
  const year = date.getUTCFullYear();
@@ -50398,7 +50398,7 @@ var buildVoiceAgentPerformanceReport = (input) => {
50398
50398
  worstCriterion: ranked[0]?.criterionId ?? null
50399
50399
  };
50400
50400
  };
50401
- // src/scorecardCalibration.ts
50401
+ // src/core/scorecardCalibration.ts
50402
50402
  var normalize = (raw, scaleMax) => scaleMax === 0 ? 0 : raw / scaleMax;
50403
50403
  var correlation = (xs, ys) => {
50404
50404
  if (xs.length === 0 || xs.length !== ys.length)
@@ -50503,7 +50503,7 @@ var computeVoiceScorecardCalibration = (pairs, options = {}) => {
50503
50503
  worstDivergences: divergences.sort((a, b) => Math.abs(b.normalizedGap) - Math.abs(a.normalizedGap)).slice(0, topN)
50504
50504
  };
50505
50505
  };
50506
- // src/qualityDriftDetector.ts
50506
+ // src/core/qualityDriftDetector.ts
50507
50507
  var severityFor = (delta, watch, regression) => {
50508
50508
  if (delta <= -regression)
50509
50509
  return "regression";
@@ -50583,7 +50583,7 @@ var detectVoiceQualityDrift = (input) => {
50583
50583
  scope: { from: baselineFrom, to: cutoff }
50584
50584
  };
50585
50585
  };
50586
- // src/pathway.ts
50586
+ // src/core/pathway.ts
50587
50587
  var slotRefsInActions = (actions) => {
50588
50588
  if (!actions)
50589
50589
  return [];
@@ -50734,7 +50734,7 @@ var validateVoicePathway = (pathway) => {
50734
50734
  };
50735
50735
  var findVoicePathwayState = (pathway, id) => pathway.states.find((s) => s.id === id) ?? null;
50736
50736
  var findVoicePathwaySlot = (pathway, id) => pathway.slots.find((s) => s.id === id) ?? null;
50737
- // src/pathwayRuntime.ts
50737
+ // src/core/pathwayRuntime.ts
50738
50738
  var evaluateCondition = (condition, slots) => {
50739
50739
  switch (condition.kind) {
50740
50740
  case "always":
@@ -50925,7 +50925,7 @@ var createVoicePathwayRuntime = (options) => {
50925
50925
  tryTransition
50926
50926
  };
50927
50927
  };
50928
- // src/pathwaySlotCollector.ts
50928
+ // src/core/pathwaySlotCollector.ts
50929
50929
  var numberWords = {
50930
50930
  eight: 8,
50931
50931
  five: 5,
@@ -51132,7 +51132,7 @@ var createVoicePathwaySlotCollector = (options = {}) => {
51132
51132
  }
51133
51133
  };
51134
51134
  };
51135
- // src/pathwayCompiler.ts
51135
+ // src/core/pathwayCompiler.ts
51136
51136
  var describeAction = (action) => {
51137
51137
  switch (action.kind) {
51138
51138
  case "say":
@@ -51287,7 +51287,7 @@ ${stateBlock}`
51287
51287
  ...options.introduction !== undefined ? { initialPrompt: options.introduction } : {}
51288
51288
  };
51289
51289
  };
51290
- // src/pathwayVisualizer.ts
51290
+ // src/core/pathwayVisualizer.ts
51291
51291
  var escapeMermaidLabel = (text) => text.replace(/[<>"]/gu, "").replace(/\|/gu, "/");
51292
51292
  var conditionLabel = (condition) => {
51293
51293
  switch (condition.kind) {
@@ -51383,7 +51383,7 @@ var visualizeVoicePathway = (pathway) => ({
51383
51383
  mermaid: renderVoicePathwayMermaid(pathway),
51384
51384
  text: renderVoicePathwayText(pathway)
51385
51385
  });
51386
- // src/pathwayGenerator.ts
51386
+ // src/core/pathwayGenerator.ts
51387
51387
  var SYSTEM_PROMPT = `You design conversation pathways for voice agents as strict JSON.
51388
51388
 
51389
51389
  A pathway is a state machine. Output ONLY a JSON object with this shape:
@@ -51496,7 +51496,7 @@ Return a corrected pathway JSON that fixes every error.`;
51496
51496
  report: lastReport
51497
51497
  };
51498
51498
  };
51499
- // src/crmContract.ts
51499
+ // src/core/crmContract.ts
51500
51500
  var createVoiceCRMRegistry = (options) => {
51501
51501
  const byVendor = new Map;
51502
51502
  for (const contract of options.contracts) {
@@ -51515,7 +51515,7 @@ var createVoiceCRMRegistry = (options) => {
51515
51515
  }
51516
51516
  };
51517
51517
  };
51518
- // src/callerCRMLinker.ts
51518
+ // src/core/callerCRMLinker.ts
51519
51519
  var cacheKeyFor = (identity, vendor) => {
51520
51520
  const id = identity.externalId ?? identity.phone ?? identity.email ?? "anonymous";
51521
51521
  return `${vendor}::${id}`;
@@ -51590,7 +51590,7 @@ var createVoiceCallerCRMLinker = (options) => {
51590
51590
  resolve: resolve3
51591
51591
  };
51592
51592
  };
51593
- // src/crmCallLogger.ts
51593
+ // src/core/crmCallLogger.ts
51594
51594
  var createVoiceCRMCallLogger = (options) => {
51595
51595
  const now = options.now ?? (() => Date.now());
51596
51596
  const errorPolicy = options.errorPolicy ?? "swallow";