@absolutejs/voice 0.0.22-beta.24 → 0.0.22-beta.241

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 (217) hide show
  1. package/README.md +3112 -236
  2. package/dist/agent.d.ts +62 -0
  3. package/dist/agentSquadContract.d.ts +69 -0
  4. package/dist/angular/index.d.ts +14 -0
  5. package/dist/angular/index.js +3266 -1097
  6. package/dist/angular/voice-agent-squad-status.service.d.ts +12 -0
  7. package/dist/angular/voice-campaign-dialer-proof.service.d.ts +14 -0
  8. package/dist/angular/voice-controller.service.d.ts +1 -0
  9. package/dist/angular/voice-delivery-runtime.component.d.ts +17 -0
  10. package/dist/angular/voice-delivery-runtime.service.d.ts +16 -0
  11. package/dist/angular/voice-live-ops.service.d.ts +11 -0
  12. package/dist/angular/voice-ops-action-center.service.d.ts +13 -0
  13. package/dist/angular/voice-ops-status.component.d.ts +15 -0
  14. package/dist/angular/voice-ops-status.service.d.ts +12 -0
  15. package/dist/angular/voice-platform-coverage.service.d.ts +12 -0
  16. package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
  17. package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
  18. package/dist/angular/voice-routing-status.service.d.ts +11 -0
  19. package/dist/angular/voice-stream.service.d.ts +3 -0
  20. package/dist/angular/voice-trace-timeline.service.d.ts +12 -0
  21. package/dist/angular/voice-turn-latency.service.d.ts +13 -0
  22. package/dist/angular/voice-turn-quality.service.d.ts +12 -0
  23. package/dist/angular/voice-workflow-status.service.d.ts +12 -0
  24. package/dist/audit.d.ts +128 -0
  25. package/dist/auditDeliveryRoutes.d.ts +85 -0
  26. package/dist/auditExport.d.ts +34 -0
  27. package/dist/auditRoutes.d.ts +66 -0
  28. package/dist/auditSinks.d.ts +151 -0
  29. package/dist/bargeInRoutes.d.ts +56 -0
  30. package/dist/campaign.d.ts +746 -0
  31. package/dist/campaignDialers.d.ts +90 -0
  32. package/dist/client/actions.d.ts +105 -0
  33. package/dist/client/agentSquadStatus.d.ts +37 -0
  34. package/dist/client/agentSquadStatusWidget.d.ts +24 -0
  35. package/dist/client/bargeInMonitor.d.ts +7 -0
  36. package/dist/client/campaignDialerProof.d.ts +23 -0
  37. package/dist/client/connection.d.ts +3 -0
  38. package/dist/client/deliveryRuntime.d.ts +34 -0
  39. package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
  40. package/dist/client/duplex.d.ts +1 -1
  41. package/dist/client/htmxBootstrap.js +747 -15
  42. package/dist/client/index.d.ts +64 -0
  43. package/dist/client/index.js +4594 -21
  44. package/dist/client/liveOps.d.ts +22 -0
  45. package/dist/client/liveOpsWidget.d.ts +23 -0
  46. package/dist/client/liveTurnLatency.d.ts +41 -0
  47. package/dist/client/opsActionCenter.d.ts +54 -0
  48. package/dist/client/opsActionCenterWidget.d.ts +29 -0
  49. package/dist/client/opsActionHistory.d.ts +19 -0
  50. package/dist/client/opsActionHistoryWidget.d.ts +11 -0
  51. package/dist/client/opsStatus.d.ts +19 -0
  52. package/dist/client/opsStatusWidget.d.ts +40 -0
  53. package/dist/client/platformCoverage.d.ts +19 -0
  54. package/dist/client/platformCoverageWidget.d.ts +37 -0
  55. package/dist/client/providerCapabilities.d.ts +19 -0
  56. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  57. package/dist/client/providerContracts.d.ts +19 -0
  58. package/dist/client/providerContractsWidget.d.ts +37 -0
  59. package/dist/client/providerSimulationControls.d.ts +33 -0
  60. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  61. package/dist/client/providerStatusWidget.d.ts +32 -0
  62. package/dist/client/routingStatus.d.ts +19 -0
  63. package/dist/client/routingStatusWidget.d.ts +28 -0
  64. package/dist/client/traceTimeline.d.ts +19 -0
  65. package/dist/client/traceTimelineWidget.d.ts +36 -0
  66. package/dist/client/turnLatency.d.ts +22 -0
  67. package/dist/client/turnLatencyWidget.d.ts +33 -0
  68. package/dist/client/turnQuality.d.ts +19 -0
  69. package/dist/client/turnQualityWidget.d.ts +32 -0
  70. package/dist/client/workflowStatus.d.ts +19 -0
  71. package/dist/dataControl.d.ts +140 -0
  72. package/dist/deliveryRuntime.d.ts +158 -0
  73. package/dist/deliverySinkRoutes.d.ts +117 -0
  74. package/dist/demoReadyRoutes.d.ts +98 -0
  75. package/dist/diagnosticsRoutes.d.ts +44 -0
  76. package/dist/evalRoutes.d.ts +219 -0
  77. package/dist/fileStore.d.ts +14 -2
  78. package/dist/handoff.d.ts +54 -0
  79. package/dist/handoffHealth.d.ts +94 -0
  80. package/dist/incidentBundle.d.ts +116 -0
  81. package/dist/index.d.ts +130 -13
  82. package/dist/index.js +23751 -5201
  83. package/dist/latencySlo.d.ts +56 -0
  84. package/dist/liveLatency.d.ts +78 -0
  85. package/dist/liveOps.d.ts +122 -0
  86. package/dist/modelAdapters.d.ts +23 -2
  87. package/dist/observabilityExport.d.ts +428 -0
  88. package/dist/openaiRealtime.d.ts +27 -0
  89. package/dist/openaiTTS.d.ts +18 -0
  90. package/dist/operationsRecord.d.ts +158 -0
  91. package/dist/opsActionAuditRoutes.d.ts +99 -0
  92. package/dist/opsConsoleRoutes.d.ts +80 -0
  93. package/dist/opsRecovery.d.ts +137 -0
  94. package/dist/opsStatus.d.ts +76 -0
  95. package/dist/opsStatusRoutes.d.ts +33 -0
  96. package/dist/opsWebhook.d.ts +126 -0
  97. package/dist/outcomeContract.d.ts +115 -0
  98. package/dist/phoneAgent.d.ts +76 -0
  99. package/dist/phoneAgentProductionSmoke.d.ts +115 -0
  100. package/dist/platformCoverage.d.ts +73 -0
  101. package/dist/postgresStore.d.ts +13 -2
  102. package/dist/productionReadiness.d.ts +466 -0
  103. package/dist/proofTrends.d.ts +64 -0
  104. package/dist/providerAdapters.d.ts +48 -0
  105. package/dist/providerCapabilities.d.ts +92 -0
  106. package/dist/providerHealth.d.ts +1 -0
  107. package/dist/providerRoutingContract.d.ts +38 -0
  108. package/dist/providerSlo.d.ts +114 -0
  109. package/dist/providerStackRecommendations.d.ts +145 -0
  110. package/dist/qualityRoutes.d.ts +76 -0
  111. package/dist/queue.d.ts +61 -0
  112. package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
  113. package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
  114. package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
  115. package/dist/react/VoiceOpsStatus.d.ts +6 -0
  116. package/dist/react/VoicePlatformCoverage.d.ts +6 -0
  117. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  118. package/dist/react/VoiceProviderContracts.d.ts +6 -0
  119. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  120. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  121. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  122. package/dist/react/VoiceTraceTimeline.d.ts +6 -0
  123. package/dist/react/VoiceTurnLatency.d.ts +6 -0
  124. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  125. package/dist/react/index.d.ts +28 -0
  126. package/dist/react/index.js +4359 -33
  127. package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
  128. package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
  129. package/dist/react/useVoiceController.d.ts +3 -0
  130. package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
  131. package/dist/react/useVoiceLiveOps.d.ts +9 -0
  132. package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
  133. package/dist/react/useVoiceOpsStatus.d.ts +8 -0
  134. package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
  135. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  136. package/dist/react/useVoiceProviderContracts.d.ts +8 -0
  137. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  138. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  139. package/dist/react/useVoiceStream.d.ts +3 -0
  140. package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
  141. package/dist/react/useVoiceTurnLatency.d.ts +9 -0
  142. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  143. package/dist/react/useVoiceWorkflowStatus.d.ts +8 -0
  144. package/dist/readinessProfiles.d.ts +37 -0
  145. package/dist/reconnectContract.d.ts +87 -0
  146. package/dist/resilienceRoutes.d.ts +143 -0
  147. package/dist/sessionReplay.d.ts +12 -0
  148. package/dist/simulationSuite.d.ts +121 -0
  149. package/dist/sqliteStore.d.ts +13 -2
  150. package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
  151. package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
  152. package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
  153. package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
  154. package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
  155. package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
  156. package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
  157. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  158. package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
  159. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  160. package/dist/svelte/createVoiceProviderStatus.d.ts +4 -2
  161. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  162. package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
  163. package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
  164. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  165. package/dist/svelte/createVoiceWorkflowStatus.d.ts +8 -0
  166. package/dist/svelte/index.d.ts +15 -0
  167. package/dist/svelte/index.js +4664 -439
  168. package/dist/telephony/contract.d.ts +61 -0
  169. package/dist/telephony/matrix.d.ts +97 -0
  170. package/dist/telephony/plivo.d.ts +254 -0
  171. package/dist/telephony/telnyx.d.ts +247 -0
  172. package/dist/telephony/twilio.d.ts +135 -2
  173. package/dist/telephonyOutcome.d.ts +201 -0
  174. package/dist/testing/index.d.ts +1 -0
  175. package/dist/testing/index.js +2024 -69
  176. package/dist/testing/ioProviderSimulator.d.ts +41 -0
  177. package/dist/toolContract.d.ts +133 -0
  178. package/dist/toolRuntime.d.ts +50 -0
  179. package/dist/trace.d.ts +19 -1
  180. package/dist/traceDeliveryRoutes.d.ts +86 -0
  181. package/dist/traceTimeline.d.ts +97 -0
  182. package/dist/turnLatency.d.ts +95 -0
  183. package/dist/turnQuality.d.ts +94 -0
  184. package/dist/types.d.ts +180 -4
  185. package/dist/vue/VoiceDeliveryRuntime.d.ts +30 -0
  186. package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
  187. package/dist/vue/VoiceOpsStatus.d.ts +30 -0
  188. package/dist/vue/VoicePlatformCoverage.d.ts +23 -0
  189. package/dist/vue/VoiceProviderCapabilities.d.ts +51 -0
  190. package/dist/vue/VoiceProviderContracts.d.ts +21 -0
  191. package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
  192. package/dist/vue/VoiceProviderStatus.d.ts +51 -0
  193. package/dist/vue/VoiceRoutingStatus.d.ts +51 -0
  194. package/dist/vue/VoiceTurnLatency.d.ts +69 -0
  195. package/dist/vue/VoiceTurnQuality.d.ts +51 -0
  196. package/dist/vue/index.d.ts +26 -0
  197. package/dist/vue/index.js +4136 -57
  198. package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
  199. package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
  200. package/dist/vue/useVoiceController.d.ts +2 -1
  201. package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
  202. package/dist/vue/useVoiceLiveOps.d.ts +9 -0
  203. package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
  204. package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
  205. package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
  206. package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
  207. package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
  208. package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
  209. package/dist/vue/useVoiceProviderStatus.d.ts +1 -1
  210. package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
  211. package/dist/vue/useVoiceStream.d.ts +4 -1
  212. package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
  213. package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
  214. package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
  215. package/dist/vue/useVoiceWorkflowStatus.d.ts +9 -0
  216. package/dist/workflowContract.d.ts +91 -0
  217. package/package.json +1 -1
@@ -0,0 +1,466 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type VoiceProviderFallbackRecoverySummary } from './sessionReplay';
3
+ import { type VoiceTelephonyCarrierMatrixInput } from './telephony/matrix';
4
+ import type { VoiceTraceEventStore } from './trace';
5
+ import type { VoiceTraceSinkDeliveryStore } from './trace';
6
+ import type { VoiceAgentSquadContractReport } from './agentSquadContract';
7
+ import type { VoiceBargeInReport } from './bargeInRoutes';
8
+ import type { VoiceDeliveryRuntime, VoiceDeliveryRuntimeSummary } from './deliveryRuntime';
9
+ import type { VoiceProviderRoutingContractReport } from './providerRoutingContract';
10
+ import type { VoicePhoneAgentProductionSmokeReport } from './phoneAgentProductionSmoke';
11
+ import type { VoiceReconnectContractReport } from './reconnectContract';
12
+ import type { VoiceAuditEventStore, VoiceAuditEventType, VoiceAuditOutcome } from './audit';
13
+ import { type VoiceAuditSinkDeliveryStore } from './auditSinks';
14
+ import type { VoiceProviderContractMatrixReport, VoiceProviderStackCapabilityGapReport } from './providerStackRecommendations';
15
+ import { type VoiceProviderSloReport, type VoiceProviderSloReportOptions } from './providerSlo';
16
+ import type { VoiceCampaignReadinessProofReport } from './campaign';
17
+ import { type VoiceOpsRecoveryReport } from './opsRecovery';
18
+ import { type VoiceObservabilityExportDeliveryHistory, type VoiceObservabilityExportDeliveryReceiptStore, type VoiceObservabilityExportReplayReport, type VoiceObservabilityExportReplaySource, type VoiceObservabilityExportReport } from './observabilityExport';
19
+ export type VoiceProductionReadinessObservabilityExportDeliveryHistoryOptions = {
20
+ failOnMissing?: boolean;
21
+ failOnStale?: boolean;
22
+ history?: VoiceObservabilityExportDeliveryHistory;
23
+ maxAgeMs?: number;
24
+ store?: VoiceObservabilityExportDeliveryReceiptStore;
25
+ };
26
+ export type VoiceProductionReadinessStatus = 'fail' | 'pass' | 'warn';
27
+ export type VoiceProductionReadinessAction = {
28
+ description?: string;
29
+ href: string;
30
+ label: string;
31
+ method?: 'GET' | 'POST';
32
+ };
33
+ export type VoiceProductionReadinessCheck = {
34
+ actions?: VoiceProductionReadinessAction[];
35
+ detail?: string;
36
+ href?: string;
37
+ label: string;
38
+ proofSource?: VoiceProductionReadinessProofSource;
39
+ status: VoiceProductionReadinessStatus;
40
+ value?: number | string;
41
+ };
42
+ export type VoiceProductionReadinessGateIssue = {
43
+ code: string;
44
+ detail?: string;
45
+ href?: string;
46
+ label: string;
47
+ status: Exclude<VoiceProductionReadinessStatus, 'pass'>;
48
+ value?: number | string;
49
+ };
50
+ export type VoiceProductionReadinessGateOptions = {
51
+ failOnWarnings?: boolean;
52
+ };
53
+ export type VoiceProductionReadinessGateReport = {
54
+ checkedAt: number;
55
+ failures: VoiceProductionReadinessGateIssue[];
56
+ ok: boolean;
57
+ profile?: VoiceProductionReadinessGateProfile;
58
+ status: VoiceProductionReadinessStatus;
59
+ warnings: VoiceProductionReadinessGateIssue[];
60
+ };
61
+ export type VoiceProductionReadinessProofSource = {
62
+ detail?: string;
63
+ href?: string;
64
+ label?: string;
65
+ source: string;
66
+ sourceLabel: string;
67
+ };
68
+ export type VoiceProductionReadinessProfileSurface = {
69
+ configured: boolean;
70
+ href?: string;
71
+ key: string;
72
+ label: string;
73
+ };
74
+ export type VoiceProductionReadinessProfileExplanation = {
75
+ description: string;
76
+ name: string;
77
+ purpose: string;
78
+ surfaces: VoiceProductionReadinessProfileSurface[];
79
+ };
80
+ export type VoiceProductionReadinessGateProfileSurface = VoiceProductionReadinessProfileSurface & {
81
+ issues: VoiceProductionReadinessGateIssue[];
82
+ status: VoiceProductionReadinessStatus;
83
+ };
84
+ export type VoiceProductionReadinessGateProfile = Omit<VoiceProductionReadinessProfileExplanation, 'surfaces'> & {
85
+ surfaces: VoiceProductionReadinessGateProfileSurface[];
86
+ };
87
+ export type VoiceProductionReadinessReport = {
88
+ checkedAt: number;
89
+ checks: VoiceProductionReadinessCheck[];
90
+ links: {
91
+ agentSquadContracts?: string;
92
+ audit?: string;
93
+ auditDeliveries?: string;
94
+ bargeIn?: string;
95
+ campaignReadiness?: string;
96
+ carriers?: string;
97
+ deliveryRuntime?: string;
98
+ handoffs?: string;
99
+ handoffRetry?: string;
100
+ liveLatency?: string;
101
+ operationsRecords?: string;
102
+ observabilityExport?: string;
103
+ observabilityExportDeliveries?: string;
104
+ opsActions?: string;
105
+ opsRecovery?: string;
106
+ phoneAgentSmoke?: string;
107
+ providerContracts?: string;
108
+ providerRoutingContracts?: string;
109
+ providerSlo?: string;
110
+ quality?: string;
111
+ reconnectContracts?: string;
112
+ resilience?: string;
113
+ sessions?: string;
114
+ traceDeliveries?: string;
115
+ };
116
+ profile?: VoiceProductionReadinessProfileExplanation;
117
+ proofSources?: Record<string, VoiceProductionReadinessProofSource>;
118
+ operationsRecords?: VoiceProductionReadinessOperationsRecordLinks;
119
+ status: VoiceProductionReadinessStatus;
120
+ summary: {
121
+ agentSquadContracts?: {
122
+ failed: number;
123
+ passed: number;
124
+ status: VoiceProductionReadinessStatus;
125
+ total: number;
126
+ };
127
+ audit?: VoiceProductionReadinessAuditSummary;
128
+ auditDeliveries?: VoiceProductionReadinessAuditDeliverySummary;
129
+ bargeIn?: {
130
+ failed: number;
131
+ passed: number;
132
+ status: VoiceProductionReadinessStatus;
133
+ total: number;
134
+ warnings: number;
135
+ };
136
+ campaignReadiness?: {
137
+ failed: number;
138
+ passed: number;
139
+ status: VoiceProductionReadinessStatus;
140
+ total: number;
141
+ };
142
+ carriers?: {
143
+ failing: number;
144
+ providers: number;
145
+ ready: number;
146
+ status: VoiceProductionReadinessStatus;
147
+ warnings: number;
148
+ };
149
+ deliveryRuntime?: VoiceProductionReadinessDeliveryRuntimeSummary;
150
+ handoffs: {
151
+ failed: number;
152
+ total: number;
153
+ };
154
+ liveLatency: {
155
+ averageLatencyMs?: number;
156
+ failed: number;
157
+ status: VoiceProductionReadinessStatus;
158
+ total: number;
159
+ warnings: number;
160
+ };
161
+ opsActionHistory?: VoiceProductionReadinessOpsActionHistorySummary;
162
+ opsRecovery?: {
163
+ issues: number;
164
+ recoveredFallbacks: number;
165
+ status: VoiceProductionReadinessStatus;
166
+ unresolvedProviderFailures: number;
167
+ };
168
+ observabilityExport?: {
169
+ artifacts: number;
170
+ auditEvents: number;
171
+ envelopes: number;
172
+ issues: number;
173
+ status: VoiceProductionReadinessStatus;
174
+ traceEvents: number;
175
+ };
176
+ observabilityExportDeliveryHistory?: {
177
+ delivered: number;
178
+ failed: number;
179
+ latestSuccessAgeMs?: number;
180
+ receipts: number;
181
+ status: VoiceProductionReadinessStatus;
182
+ totalDestinations: number;
183
+ };
184
+ observabilityExportReplay?: {
185
+ artifacts: number;
186
+ deliveryDestinations: number;
187
+ failedArtifacts: number;
188
+ failedDeliveryDestinations: number;
189
+ issues: number;
190
+ status: VoiceProductionReadinessStatus;
191
+ validationIssues: number;
192
+ };
193
+ providers: {
194
+ degraded: number;
195
+ total: number;
196
+ };
197
+ providerStack?: VoiceProviderStackCapabilityGapReport;
198
+ providerContractMatrix?: VoiceProviderContractMatrixReport;
199
+ providerRecovery: VoiceProviderFallbackRecoverySummary;
200
+ phoneAgentSmokes?: {
201
+ failed: number;
202
+ passed: number;
203
+ status: VoiceProductionReadinessStatus;
204
+ total: number;
205
+ };
206
+ providerRoutingContracts?: {
207
+ failed: number;
208
+ passed: number;
209
+ status: VoiceProductionReadinessStatus;
210
+ total: number;
211
+ };
212
+ providerSlo?: {
213
+ events: number;
214
+ eventsWithLatency: number;
215
+ issues: number;
216
+ status: VoiceProductionReadinessStatus;
217
+ };
218
+ reconnectContracts?: {
219
+ failed: number;
220
+ passed: number;
221
+ status: VoiceProductionReadinessStatus;
222
+ total: number;
223
+ };
224
+ quality: {
225
+ status: 'fail' | 'pass';
226
+ };
227
+ routing: {
228
+ events: number;
229
+ sessions: number;
230
+ };
231
+ sessions: {
232
+ failed: number;
233
+ total: number;
234
+ };
235
+ traceDeliveries?: VoiceProductionReadinessTraceDeliverySummary;
236
+ };
237
+ };
238
+ export type VoiceProductionReadinessOperationsRecordLink = {
239
+ detail?: string;
240
+ href: string;
241
+ label: string;
242
+ sessionId: string;
243
+ status: VoiceProductionReadinessStatus;
244
+ };
245
+ export type VoiceProductionReadinessOperationsRecordLinks = {
246
+ failedSessions: VoiceProductionReadinessOperationsRecordLink[];
247
+ failingLatency: VoiceProductionReadinessOperationsRecordLink[];
248
+ providerErrors: VoiceProductionReadinessOperationsRecordLink[];
249
+ };
250
+ export type VoiceProductionReadinessAuditRequirement = {
251
+ label?: string;
252
+ maxAgeMs?: number;
253
+ outcomes?: VoiceAuditOutcome[];
254
+ status?: VoiceProductionReadinessStatus;
255
+ type: VoiceAuditEventType;
256
+ };
257
+ export type VoiceProductionReadinessAuditSummary = {
258
+ events: number;
259
+ missing: VoiceProductionReadinessAuditRequirement[];
260
+ present: Record<VoiceAuditEventType, number>;
261
+ required: VoiceProductionReadinessAuditRequirement[];
262
+ status: VoiceProductionReadinessStatus;
263
+ };
264
+ export type VoiceProductionReadinessAuditDeliverySummary = {
265
+ deadLettered: number;
266
+ delivered: number;
267
+ failed: number;
268
+ failPendingAfterMs: number;
269
+ pending: number;
270
+ retryEligible: number;
271
+ skipped: number;
272
+ staleFailing: number;
273
+ staleWarning: number;
274
+ status: VoiceProductionReadinessStatus;
275
+ total: number;
276
+ warnPendingAfterMs: number;
277
+ };
278
+ export type VoiceProductionReadinessTraceDeliverySummary = {
279
+ deadLettered: number;
280
+ delivered: number;
281
+ failed: number;
282
+ failPendingAfterMs: number;
283
+ pending: number;
284
+ retryEligible: number;
285
+ skipped: number;
286
+ staleFailing: number;
287
+ staleWarning: number;
288
+ status: VoiceProductionReadinessStatus;
289
+ total: number;
290
+ warnPendingAfterMs: number;
291
+ };
292
+ export type VoiceProductionReadinessOpsActionHistorySummary = {
293
+ failed: number;
294
+ passed: number;
295
+ status: VoiceProductionReadinessStatus;
296
+ total: number;
297
+ warnWhenEmpty: boolean;
298
+ };
299
+ export type VoiceProductionReadinessDeliveryRuntimeSummary = {
300
+ audit?: VoiceProductionReadinessDeliveryRuntimeQueueSummary;
301
+ deadLettered: number;
302
+ delivered: number;
303
+ failed: number;
304
+ pending: number;
305
+ retryEligible: number;
306
+ skipped: number;
307
+ status: VoiceProductionReadinessStatus;
308
+ total: number;
309
+ trace?: VoiceProductionReadinessDeliveryRuntimeQueueSummary;
310
+ };
311
+ export type VoiceProductionReadinessDeliveryRuntimeQueueSummary = {
312
+ deadLettered: number;
313
+ delivered: number;
314
+ failed: number;
315
+ pending: number;
316
+ retryEligible: number;
317
+ skipped: number;
318
+ total: number;
319
+ };
320
+ export type VoiceProductionReadinessAuditOptions = VoiceAuditEventStore | {
321
+ require?: readonly (VoiceAuditEventType | VoiceProductionReadinessAuditRequirement)[];
322
+ store: VoiceAuditEventStore;
323
+ };
324
+ export type VoiceProductionReadinessAuditDeliveryOptions = VoiceAuditSinkDeliveryStore | {
325
+ deadLetters?: VoiceAuditSinkDeliveryStore;
326
+ failPendingAfterMs?: number;
327
+ store: VoiceAuditSinkDeliveryStore;
328
+ warnPendingAfterMs?: number;
329
+ };
330
+ export type VoiceProductionReadinessTraceDeliveryOptions = VoiceTraceSinkDeliveryStore | {
331
+ deadLetters?: VoiceTraceSinkDeliveryStore;
332
+ failPendingAfterMs?: number;
333
+ store: VoiceTraceSinkDeliveryStore;
334
+ warnPendingAfterMs?: number;
335
+ };
336
+ export type VoiceProductionReadinessOpsActionHistoryOptions = VoiceAuditEventStore | {
337
+ failOnFailedActions?: boolean;
338
+ store: VoiceAuditEventStore;
339
+ warnWhenEmpty?: boolean;
340
+ };
341
+ export type VoiceProductionReadinessRoutesOptions = {
342
+ agentSquadContracts?: false | readonly VoiceAgentSquadContractReport[] | ((input: {
343
+ query: Record<string, unknown>;
344
+ request: Request;
345
+ }) => Promise<readonly VoiceAgentSquadContractReport[]> | readonly VoiceAgentSquadContractReport[]);
346
+ audit?: false | VoiceProductionReadinessAuditOptions;
347
+ auditDeliveries?: false | VoiceProductionReadinessAuditDeliveryOptions;
348
+ bargeInReports?: false | readonly VoiceBargeInReport[] | ((input: {
349
+ query: Record<string, unknown>;
350
+ request: Request;
351
+ }) => Promise<readonly VoiceBargeInReport[]> | readonly VoiceBargeInReport[]);
352
+ carriers?: false | readonly VoiceTelephonyCarrierMatrixInput[] | ((input: {
353
+ query: Record<string, unknown>;
354
+ request: Request;
355
+ }) => Promise<readonly VoiceTelephonyCarrierMatrixInput[]> | readonly VoiceTelephonyCarrierMatrixInput[]);
356
+ campaignReadiness?: false | VoiceCampaignReadinessProofReport | ((input: {
357
+ query: Record<string, unknown>;
358
+ request: Request;
359
+ }) => Promise<VoiceCampaignReadinessProofReport> | VoiceCampaignReadinessProofReport);
360
+ deliveryRuntime?: false | VoiceDeliveryRuntime | VoiceDeliveryRuntimeSummary | ((input: {
361
+ query: Record<string, unknown>;
362
+ request: Request;
363
+ }) => Promise<VoiceDeliveryRuntime | VoiceDeliveryRuntimeSummary> | VoiceDeliveryRuntime | VoiceDeliveryRuntimeSummary);
364
+ headers?: HeadersInit;
365
+ gate?: false | VoiceProductionReadinessGateOptions;
366
+ gatePath?: false | string;
367
+ htmlPath?: false | string;
368
+ links?: VoiceProductionReadinessReport['links'];
369
+ llmProviders?: readonly string[];
370
+ name?: string;
371
+ opsActionHistory?: false | VoiceProductionReadinessOpsActionHistoryOptions;
372
+ opsRecovery?: false | VoiceOpsRecoveryReport | ((input: {
373
+ query: Record<string, unknown>;
374
+ request: Request;
375
+ }) => Promise<VoiceOpsRecoveryReport> | VoiceOpsRecoveryReport);
376
+ observabilityExport?: false | VoiceObservabilityExportReport | ((input: {
377
+ query: Record<string, unknown>;
378
+ request: Request;
379
+ }) => Promise<VoiceObservabilityExportReport> | VoiceObservabilityExportReport);
380
+ observabilityExportDeliveryHistory?: false | VoiceObservabilityExportDeliveryHistory | VoiceObservabilityExportDeliveryReceiptStore | VoiceProductionReadinessObservabilityExportDeliveryHistoryOptions | ((input: {
381
+ query: Record<string, unknown>;
382
+ request: Request;
383
+ }) => Promise<VoiceObservabilityExportDeliveryHistory | VoiceObservabilityExportDeliveryReceiptStore | VoiceProductionReadinessObservabilityExportDeliveryHistoryOptions> | VoiceObservabilityExportDeliveryHistory | VoiceObservabilityExportDeliveryReceiptStore | VoiceProductionReadinessObservabilityExportDeliveryHistoryOptions);
384
+ observabilityExportReplay?: false | VoiceObservabilityExportReplayReport | VoiceObservabilityExportReplaySource | ((input: {
385
+ query: Record<string, unknown>;
386
+ request: Request;
387
+ }) => Promise<VoiceObservabilityExportReplayReport | VoiceObservabilityExportReplaySource> | VoiceObservabilityExportReplayReport | VoiceObservabilityExportReplaySource);
388
+ path?: string;
389
+ phoneAgentSmokes?: false | readonly VoicePhoneAgentProductionSmokeReport[] | ((input: {
390
+ query: Record<string, unknown>;
391
+ request: Request;
392
+ }) => Promise<readonly VoicePhoneAgentProductionSmokeReport[]> | readonly VoicePhoneAgentProductionSmokeReport[]);
393
+ providerRoutingContracts?: false | readonly VoiceProviderRoutingContractReport[] | ((input: {
394
+ query: Record<string, unknown>;
395
+ request: Request;
396
+ }) => Promise<readonly VoiceProviderRoutingContractReport[]> | readonly VoiceProviderRoutingContractReport[]);
397
+ providerSlo?: false | VoiceProviderSloReport | VoiceProviderSloReportOptions | ((input: {
398
+ query: Record<string, unknown>;
399
+ request: Request;
400
+ }) => Promise<VoiceProviderSloReport | VoiceProviderSloReportOptions> | VoiceProviderSloReport | VoiceProviderSloReportOptions);
401
+ providerStack?: false | VoiceProviderStackCapabilityGapReport | ((input: {
402
+ query: Record<string, unknown>;
403
+ request: Request;
404
+ }) => Promise<VoiceProviderStackCapabilityGapReport> | VoiceProviderStackCapabilityGapReport);
405
+ providerContractMatrix?: false | VoiceProviderContractMatrixReport | ((input: {
406
+ query: Record<string, unknown>;
407
+ request: Request;
408
+ }) => Promise<VoiceProviderContractMatrixReport> | VoiceProviderContractMatrixReport);
409
+ reconnectContracts?: false | readonly VoiceReconnectContractReport[] | ((input: {
410
+ query: Record<string, unknown>;
411
+ request: Request;
412
+ }) => Promise<readonly VoiceReconnectContractReport[]> | readonly VoiceReconnectContractReport[]);
413
+ proofSources?: false | Record<string, VoiceProductionReadinessProofSource> | ((input: {
414
+ query: Record<string, unknown>;
415
+ request: Request;
416
+ }) => Promise<Record<string, VoiceProductionReadinessProofSource>> | Record<string, VoiceProductionReadinessProofSource>);
417
+ profile?: false | VoiceProductionReadinessProfileExplanation;
418
+ render?: (report: VoiceProductionReadinessReport) => string | Promise<string>;
419
+ store: VoiceTraceEventStore;
420
+ sttProviders?: readonly string[];
421
+ title?: string;
422
+ traceDeliveries?: false | VoiceProductionReadinessTraceDeliveryOptions;
423
+ ttsProviders?: readonly string[];
424
+ liveLatencyWarnAfterMs?: number;
425
+ liveLatencyFailAfterMs?: number;
426
+ };
427
+ export declare const summarizeVoiceProductionReadinessGate: (report: VoiceProductionReadinessReport, options?: VoiceProductionReadinessGateOptions) => VoiceProductionReadinessGateReport;
428
+ export declare const buildVoiceProductionReadinessReport: (options: VoiceProductionReadinessRoutesOptions, input?: {
429
+ query?: Record<string, unknown>;
430
+ request?: Request;
431
+ }) => Promise<VoiceProductionReadinessReport>;
432
+ export declare const buildVoiceProductionReadinessGate: (options: VoiceProductionReadinessRoutesOptions, input?: {
433
+ query?: Record<string, unknown>;
434
+ request?: Request;
435
+ }) => Promise<VoiceProductionReadinessGateReport>;
436
+ export declare const renderVoiceProductionReadinessHTML: (report: VoiceProductionReadinessReport, options?: {
437
+ title?: string;
438
+ }) => string;
439
+ export declare const createVoiceProductionReadinessRoutes: (options: VoiceProductionReadinessRoutesOptions) => Elysia<"", {
440
+ decorator: {};
441
+ store: {};
442
+ derive: {};
443
+ resolve: {};
444
+ }, {
445
+ typebox: {};
446
+ error: {};
447
+ }, {
448
+ schema: {};
449
+ standaloneSchema: {};
450
+ macro: {};
451
+ macroFn: {};
452
+ parser: {};
453
+ response: {};
454
+ }, {}, {
455
+ derive: {};
456
+ resolve: {};
457
+ schema: {};
458
+ standaloneSchema: {};
459
+ response: {};
460
+ }, {
461
+ derive: {};
462
+ resolve: {};
463
+ schema: {};
464
+ standaloneSchema: {};
465
+ response: {};
466
+ }>;
@@ -0,0 +1,64 @@
1
+ export type VoiceProofTrendStatus = 'empty' | 'fail' | 'pass' | 'stale';
2
+ export type VoiceProofTrendSummary = {
3
+ cycles?: number;
4
+ maxLiveP95Ms?: number;
5
+ maxProviderP95Ms?: number;
6
+ maxTurnP95Ms?: number;
7
+ };
8
+ export type VoiceProofTrendCycle = {
9
+ at?: string;
10
+ cycle?: number;
11
+ liveLatency?: {
12
+ p95Ms?: number;
13
+ samples?: number;
14
+ };
15
+ ok?: boolean;
16
+ opsRecovery?: {
17
+ issues?: number;
18
+ status?: string;
19
+ };
20
+ productionReadiness?: {
21
+ status?: string;
22
+ };
23
+ providerSlo?: {
24
+ events?: number;
25
+ eventsWithLatency?: number;
26
+ status?: string;
27
+ };
28
+ turnLatency?: {
29
+ p95Ms?: number;
30
+ samples?: number;
31
+ status?: string;
32
+ };
33
+ };
34
+ export type VoiceProofTrendReportInput = {
35
+ baseUrl?: string;
36
+ cycles?: VoiceProofTrendCycle[];
37
+ generatedAt?: string;
38
+ maxAgeMs?: number;
39
+ now?: Date | number | string;
40
+ ok?: boolean;
41
+ outputDir?: string;
42
+ runId?: string;
43
+ source?: string;
44
+ status?: VoiceProofTrendStatus;
45
+ summary?: VoiceProofTrendSummary;
46
+ };
47
+ export type VoiceProofTrendReport = {
48
+ ageMs?: number;
49
+ baseUrl?: string;
50
+ cycles: VoiceProofTrendCycle[];
51
+ freshUntil?: string;
52
+ generatedAt?: string;
53
+ maxAgeMs: number;
54
+ ok: boolean;
55
+ outputDir?: string;
56
+ runId?: string;
57
+ source: string;
58
+ status: VoiceProofTrendStatus;
59
+ summary: VoiceProofTrendSummary;
60
+ };
61
+ export declare const DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS: number;
62
+ export declare const buildVoiceProofTrendReport: (input?: VoiceProofTrendReportInput) => VoiceProofTrendReport;
63
+ export declare const buildEmptyVoiceProofTrendReport: (source?: string, maxAgeMs?: number) => VoiceProofTrendReport;
64
+ export declare const formatVoiceProofTrendAge: (ageMs: unknown) => string;
@@ -0,0 +1,48 @@
1
+ import type { STTAdapter, STTAdapterOpenOptions, TTSAdapter, TTSAdapterOpenOptions } from './types';
2
+ import type { VoiceProviderRouterHealthOptions, VoiceProviderRouterProviderHealth, VoiceProviderRouterProviderProfile, VoiceProviderRouterPolicyPreset, VoiceProviderRouterPolicyWeights, VoiceProviderRouterStrategy } from './modelAdapters';
3
+ type MaybePromise<T> = T | Promise<T>;
4
+ type VoiceIOProviderKind = 'stt' | 'tts';
5
+ type VoiceIOProviderStatus = 'error' | 'fallback' | 'success';
6
+ export type VoiceIOProviderRouterEvent<TProvider extends string = string> = {
7
+ at: number;
8
+ attempt: number;
9
+ elapsedMs: number;
10
+ error?: string;
11
+ fallbackProvider?: TProvider;
12
+ kind: VoiceIOProviderKind;
13
+ latencyBudgetMs?: number;
14
+ operation: 'open' | 'send';
15
+ provider: TProvider;
16
+ providerHealth?: VoiceProviderRouterProviderHealth<TProvider>;
17
+ selectedProvider: TProvider;
18
+ status: VoiceIOProviderStatus;
19
+ suppressionRemainingMs?: number;
20
+ suppressedUntil?: number;
21
+ timedOut?: boolean;
22
+ };
23
+ export type VoiceIOProviderRouterPolicyConfig<TOpenOptions = unknown, TProvider extends string = string> = {
24
+ allowProviders?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
25
+ maxCost?: number;
26
+ maxLatencyMs?: number;
27
+ minQuality?: number;
28
+ scoreProvider?: (provider: TProvider, profile: VoiceProviderRouterProviderProfile | undefined) => number;
29
+ strategy?: VoiceProviderRouterStrategy;
30
+ weights?: VoiceProviderRouterPolicyWeights;
31
+ };
32
+ export type VoiceIOProviderRouterPolicy<TOpenOptions = unknown, TProvider extends string = string> = VoiceProviderRouterStrategy | VoiceProviderRouterPolicyPreset | VoiceIOProviderRouterPolicyConfig<TOpenOptions, TProvider>;
33
+ export type VoiceIOProviderRouterOptions<TProvider extends string, TAdapter, TOpenOptions> = {
34
+ adapters: Partial<Record<TProvider, TAdapter>>;
35
+ fallback?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
36
+ isProviderError?: (error: unknown, provider: TProvider) => boolean;
37
+ onProviderEvent?: (event: VoiceIOProviderRouterEvent<TProvider>, input: TOpenOptions) => Promise<void> | void;
38
+ policy?: VoiceIOProviderRouterPolicy<TOpenOptions, TProvider>;
39
+ providerHealth?: boolean | VoiceProviderRouterHealthOptions;
40
+ providerProfiles?: Partial<Record<TProvider, VoiceProviderRouterProviderProfile>>;
41
+ selectProvider?: (input: TOpenOptions) => MaybePromise<TProvider | undefined>;
42
+ timeoutMs?: number;
43
+ };
44
+ export type VoiceSTTProviderRouterOptions<TProvider extends string = string, TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions> = VoiceIOProviderRouterOptions<TProvider, STTAdapter<TOptions>, TOptions>;
45
+ export type VoiceTTSProviderRouterOptions<TProvider extends string = string, TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions> = VoiceIOProviderRouterOptions<TProvider, TTSAdapter<TOptions>, TOptions>;
46
+ export declare const createVoiceSTTProviderRouter: <TProvider extends string = string, TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions>(options: VoiceSTTProviderRouterOptions<TProvider, TOptions>) => STTAdapter<TOptions>;
47
+ export declare const createVoiceTTSProviderRouter: <TProvider extends string = string, TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions>(options: VoiceTTSProviderRouterOptions<TProvider, TOptions>) => TTSAdapter<TOptions>;
48
+ export {};
@@ -0,0 +1,92 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type VoiceProviderHealthStatus, type VoiceProviderHealthSummary, type VoiceProviderHealthSummaryOptions } from './providerHealth';
3
+ export type VoiceProviderCapabilityKind = 'llm' | 'stt' | 'tts' | 'custom';
4
+ export type VoiceProviderCapabilityDefinition<TProvider extends string = string> = {
5
+ configured?: boolean;
6
+ description?: string;
7
+ features?: string[];
8
+ kind: VoiceProviderCapabilityKind;
9
+ label?: string;
10
+ model?: string;
11
+ provider: TProvider;
12
+ selected?: boolean;
13
+ };
14
+ export type VoiceProviderCapabilitySummary<TProvider extends string = string> = VoiceProviderCapabilityDefinition<TProvider> & {
15
+ configured: boolean;
16
+ health?: VoiceProviderHealthSummary<TProvider>;
17
+ status: VoiceProviderHealthStatus | 'selected' | 'unconfigured';
18
+ };
19
+ export type VoiceProviderCapabilityReport<TProvider extends string = string> = {
20
+ capabilities: VoiceProviderCapabilitySummary<TProvider>[];
21
+ checkedAt: number;
22
+ configured: number;
23
+ selected: number;
24
+ total: number;
25
+ unconfigured: number;
26
+ };
27
+ export type VoiceProviderCapabilityOptions<TProvider extends string = string> = VoiceProviderHealthSummaryOptions<TProvider> & {
28
+ features?: Partial<Record<TProvider, string[]>>;
29
+ llmProviders?: readonly TProvider[];
30
+ models?: Partial<Record<TProvider, string>>;
31
+ providers?: readonly VoiceProviderCapabilityDefinition<TProvider>[];
32
+ selected?: Partial<Record<VoiceProviderCapabilityKind, TProvider>>;
33
+ sttProviders?: readonly TProvider[];
34
+ ttsProviders?: readonly TProvider[];
35
+ };
36
+ export type VoiceProviderCapabilityHandlerOptions<TProvider extends string = string> = VoiceProviderCapabilityOptions<TProvider>;
37
+ export type VoiceProviderCapabilityHTMLHandlerOptions<TProvider extends string = string> = VoiceProviderCapabilityHandlerOptions<TProvider> & {
38
+ headers?: HeadersInit;
39
+ render?: (report: VoiceProviderCapabilityReport<TProvider>) => string | Promise<string>;
40
+ title?: string;
41
+ };
42
+ export type VoiceProviderCapabilityRoutesOptions<TProvider extends string = string> = VoiceProviderCapabilityHTMLHandlerOptions<TProvider> & {
43
+ htmlPath?: false | string;
44
+ name?: string;
45
+ path?: string;
46
+ };
47
+ export declare const summarizeVoiceProviderCapabilities: <TProvider extends string = string>(options: VoiceProviderCapabilityOptions<TProvider>) => Promise<VoiceProviderCapabilityReport<TProvider>>;
48
+ export declare const renderVoiceProviderCapabilityHTML: <TProvider extends string = string>(report: VoiceProviderCapabilityReport<TProvider>, options?: {
49
+ title?: string;
50
+ }) => string;
51
+ export declare const createVoiceProviderCapabilityJSONHandler: <TProvider extends string = string>(options: VoiceProviderCapabilityHandlerOptions<TProvider>) => () => Promise<VoiceProviderCapabilityReport<TProvider>>;
52
+ export declare const createVoiceProviderCapabilityHTMLHandler: <TProvider extends string = string>(options: VoiceProviderCapabilityHTMLHandlerOptions<TProvider>) => () => Promise<Response>;
53
+ export declare const createVoiceProviderCapabilityRoutes: <TProvider extends string = string>(options: VoiceProviderCapabilityRoutesOptions<TProvider>) => Elysia<"", {
54
+ decorator: {};
55
+ store: {};
56
+ derive: {};
57
+ resolve: {};
58
+ }, {
59
+ typebox: {};
60
+ error: {};
61
+ }, {
62
+ schema: {};
63
+ standaloneSchema: {};
64
+ macro: {};
65
+ macroFn: {};
66
+ parser: {};
67
+ response: {};
68
+ }, {
69
+ [x: string]: {
70
+ get: {
71
+ body: unknown;
72
+ params: {};
73
+ query: unknown;
74
+ headers: unknown;
75
+ response: {
76
+ 200: VoiceProviderCapabilityReport<TProvider>;
77
+ };
78
+ };
79
+ };
80
+ }, {
81
+ derive: {};
82
+ resolve: {};
83
+ schema: {};
84
+ standaloneSchema: {};
85
+ response: {};
86
+ }, {
87
+ derive: {};
88
+ resolve: {};
89
+ schema: {};
90
+ standaloneSchema: {};
91
+ response: {};
92
+ }>;
@@ -15,6 +15,7 @@ export type VoiceProviderHealthSummary<TProvider extends string = string> = {
15
15
  status: VoiceProviderHealthStatus;
16
16
  suppressionRemainingMs?: number;
17
17
  suppressedUntil?: number;
18
+ timeoutCount: number;
18
19
  };
19
20
  export type VoiceProviderHealthSummaryOptions<TProvider extends string = string> = {
20
21
  events?: StoredVoiceTraceEvent[];