@absolutejs/voice 0.0.22-beta.35 → 0.0.22-beta.350

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 (242) hide show
  1. package/README.md +3361 -55
  2. package/dist/agent.d.ts +62 -0
  3. package/dist/agentSquadContract.d.ts +98 -0
  4. package/dist/angular/index.d.ts +16 -0
  5. package/dist/angular/index.js +4240 -1128
  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-proof-trends.service.d.ts +12 -0
  17. package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
  18. package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
  19. package/dist/angular/voice-readiness-failures.service.d.ts +13 -0
  20. package/dist/angular/voice-routing-status.service.d.ts +11 -0
  21. package/dist/angular/voice-stream.service.d.ts +1 -0
  22. package/dist/angular/voice-trace-timeline.service.d.ts +12 -0
  23. package/dist/angular/voice-turn-latency.service.d.ts +13 -0
  24. package/dist/angular/voice-turn-quality.service.d.ts +12 -0
  25. package/dist/angular/voice-workflow-status.service.d.ts +12 -0
  26. package/dist/audit.d.ts +128 -0
  27. package/dist/auditDeliveryRoutes.d.ts +85 -0
  28. package/dist/auditExport.d.ts +34 -0
  29. package/dist/auditRoutes.d.ts +66 -0
  30. package/dist/auditSinks.d.ts +151 -0
  31. package/dist/bargeInRoutes.d.ts +56 -0
  32. package/dist/browserCallProfiles.d.ts +120 -0
  33. package/dist/browserMediaRoutes.d.ts +62 -0
  34. package/dist/campaign.d.ts +768 -0
  35. package/dist/campaignDialers.d.ts +111 -0
  36. package/dist/client/actions.d.ts +83 -0
  37. package/dist/client/agentSquadStatus.d.ts +37 -0
  38. package/dist/client/agentSquadStatusWidget.d.ts +24 -0
  39. package/dist/client/bargeInMonitor.d.ts +7 -0
  40. package/dist/client/browserMedia.d.ts +8 -0
  41. package/dist/client/campaignDialerProof.d.ts +23 -0
  42. package/dist/client/deliveryRuntime.d.ts +34 -0
  43. package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
  44. package/dist/client/duplex.d.ts +1 -1
  45. package/dist/client/htmxBootstrap.js +937 -14
  46. package/dist/client/index.d.ts +72 -0
  47. package/dist/client/index.js +6895 -50
  48. package/dist/client/liveOps.d.ts +22 -0
  49. package/dist/client/liveOpsWidget.d.ts +23 -0
  50. package/dist/client/liveTurnLatency.d.ts +41 -0
  51. package/dist/client/opsActionCenter.d.ts +54 -0
  52. package/dist/client/opsActionCenterWidget.d.ts +29 -0
  53. package/dist/client/opsActionHistory.d.ts +19 -0
  54. package/dist/client/opsActionHistoryWidget.d.ts +11 -0
  55. package/dist/client/opsStatus.d.ts +19 -0
  56. package/dist/client/opsStatusWidget.d.ts +40 -0
  57. package/dist/client/platformCoverage.d.ts +19 -0
  58. package/dist/client/platformCoverageWidget.d.ts +37 -0
  59. package/dist/client/proofTrends.d.ts +19 -0
  60. package/dist/client/proofTrendsWidget.d.ts +37 -0
  61. package/dist/client/providerCapabilities.d.ts +19 -0
  62. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  63. package/dist/client/providerContracts.d.ts +19 -0
  64. package/dist/client/providerContractsWidget.d.ts +37 -0
  65. package/dist/client/providerSimulationControls.d.ts +33 -0
  66. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  67. package/dist/client/providerStatusWidget.d.ts +32 -0
  68. package/dist/client/readinessFailures.d.ts +19 -0
  69. package/dist/client/readinessFailuresWidget.d.ts +42 -0
  70. package/dist/client/routingStatus.d.ts +19 -0
  71. package/dist/client/routingStatusWidget.d.ts +28 -0
  72. package/dist/client/traceTimeline.d.ts +19 -0
  73. package/dist/client/traceTimelineWidget.d.ts +36 -0
  74. package/dist/client/turnLatency.d.ts +22 -0
  75. package/dist/client/turnLatencyWidget.d.ts +33 -0
  76. package/dist/client/turnQuality.d.ts +19 -0
  77. package/dist/client/turnQualityWidget.d.ts +32 -0
  78. package/dist/client/workflowStatus.d.ts +19 -0
  79. package/dist/competitiveCoverage.d.ts +141 -0
  80. package/dist/dataControl.d.ts +180 -0
  81. package/dist/deliveryRuntime.d.ts +158 -0
  82. package/dist/deliverySinkRoutes.d.ts +117 -0
  83. package/dist/demoReadyRoutes.d.ts +98 -0
  84. package/dist/diagnosticsRoutes.d.ts +44 -0
  85. package/dist/evalRoutes.d.ts +219 -0
  86. package/dist/fileStore.d.ts +14 -2
  87. package/dist/guardrails.d.ts +128 -0
  88. package/dist/incidentBundle.d.ts +116 -0
  89. package/dist/index.d.ts +151 -14
  90. package/dist/index.js +31035 -5610
  91. package/dist/latencySlo.d.ts +56 -0
  92. package/dist/liveLatency.d.ts +78 -0
  93. package/dist/liveOps.d.ts +190 -0
  94. package/dist/mediaPipelineRoutes.d.ts +117 -0
  95. package/dist/modelAdapters.d.ts +54 -2
  96. package/dist/observabilityExport.d.ts +481 -0
  97. package/dist/openaiTTS.d.ts +18 -0
  98. package/dist/operationsRecord.d.ts +351 -0
  99. package/dist/opsActionAuditRoutes.d.ts +99 -0
  100. package/dist/opsConsoleRoutes.d.ts +80 -0
  101. package/dist/opsRecovery.d.ts +137 -0
  102. package/dist/opsStatus.d.ts +76 -0
  103. package/dist/opsStatusRoutes.d.ts +33 -0
  104. package/dist/outcomeContract.d.ts +146 -0
  105. package/dist/phoneAgent.d.ts +139 -0
  106. package/dist/phoneAgentProductionSmoke.d.ts +115 -0
  107. package/dist/platformCoverage.d.ts +91 -0
  108. package/dist/postCallAnalysis.d.ts +98 -0
  109. package/dist/postgresStore.d.ts +13 -2
  110. package/dist/productionReadiness.d.ts +615 -0
  111. package/dist/proofTrends.d.ts +469 -0
  112. package/dist/providerAdapters.d.ts +12 -1
  113. package/dist/providerCapabilities.d.ts +92 -0
  114. package/dist/providerDecisionTraces.d.ts +130 -0
  115. package/dist/providerOrchestration.d.ts +109 -0
  116. package/dist/providerRoutingContract.d.ts +71 -0
  117. package/dist/providerSlo.d.ts +142 -0
  118. package/dist/providerStackRecommendations.d.ts +187 -0
  119. package/dist/qualityRoutes.d.ts +76 -0
  120. package/dist/queue.d.ts +9 -0
  121. package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
  122. package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
  123. package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
  124. package/dist/react/VoiceOpsStatus.d.ts +6 -0
  125. package/dist/react/VoicePlatformCoverage.d.ts +6 -0
  126. package/dist/react/VoiceProofTrends.d.ts +6 -0
  127. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  128. package/dist/react/VoiceProviderContracts.d.ts +6 -0
  129. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  130. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  131. package/dist/react/VoiceReadinessFailures.d.ts +6 -0
  132. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  133. package/dist/react/VoiceTraceTimeline.d.ts +6 -0
  134. package/dist/react/VoiceTurnLatency.d.ts +6 -0
  135. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  136. package/dist/react/index.d.ts +32 -0
  137. package/dist/react/index.js +6665 -31
  138. package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
  139. package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
  140. package/dist/react/useVoiceController.d.ts +1 -0
  141. package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
  142. package/dist/react/useVoiceLiveOps.d.ts +9 -0
  143. package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
  144. package/dist/react/useVoiceOpsStatus.d.ts +8 -0
  145. package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
  146. package/dist/react/useVoiceProofTrends.d.ts +8 -0
  147. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  148. package/dist/react/useVoiceProviderContracts.d.ts +8 -0
  149. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  150. package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
  151. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  152. package/dist/react/useVoiceStream.d.ts +1 -0
  153. package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
  154. package/dist/react/useVoiceTurnLatency.d.ts +9 -0
  155. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  156. package/dist/react/useVoiceWorkflowStatus.d.ts +8 -0
  157. package/dist/readinessProfiles.d.ts +38 -0
  158. package/dist/realtimeChannel.d.ts +136 -0
  159. package/dist/realtimeProviderContracts.d.ts +133 -0
  160. package/dist/reconnectContract.d.ts +88 -0
  161. package/dist/resilienceRoutes.d.ts +143 -0
  162. package/dist/sessionReplay.d.ts +12 -0
  163. package/dist/simulationSuite.d.ts +143 -0
  164. package/dist/sloCalibration.d.ts +185 -0
  165. package/dist/sqliteStore.d.ts +13 -2
  166. package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
  167. package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
  168. package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
  169. package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
  170. package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
  171. package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
  172. package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
  173. package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
  174. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  175. package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
  176. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  177. package/dist/svelte/createVoiceProviderStatus.d.ts +4 -2
  178. package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
  179. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  180. package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
  181. package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
  182. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  183. package/dist/svelte/createVoiceWorkflowStatus.d.ts +8 -0
  184. package/dist/svelte/index.d.ts +17 -0
  185. package/dist/svelte/index.js +5666 -420
  186. package/dist/telephony/contract.d.ts +61 -0
  187. package/dist/telephony/matrix.d.ts +97 -0
  188. package/dist/telephony/plivo.d.ts +303 -0
  189. package/dist/telephony/security.d.ts +182 -0
  190. package/dist/telephony/telnyx.d.ts +291 -0
  191. package/dist/telephony/twilio.d.ts +136 -2
  192. package/dist/telephonyMediaRoutes.d.ts +72 -0
  193. package/dist/telephonyOutcome.d.ts +273 -0
  194. package/dist/testing/index.js +5242 -192
  195. package/dist/testing/ioProviderSimulator.d.ts +5 -1
  196. package/dist/testing/telephony.d.ts +25 -0
  197. package/dist/toolContract.d.ts +161 -0
  198. package/dist/toolRuntime.d.ts +50 -0
  199. package/dist/trace.d.ts +19 -1
  200. package/dist/traceDeliveryRoutes.d.ts +86 -0
  201. package/dist/traceTimeline.d.ts +97 -0
  202. package/dist/turnLatency.d.ts +95 -0
  203. package/dist/turnQuality.d.ts +94 -0
  204. package/dist/types.d.ts +118 -3
  205. package/dist/voiceMonitoring.d.ts +444 -0
  206. package/dist/vue/VoiceDeliveryRuntime.d.ts +30 -0
  207. package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
  208. package/dist/vue/VoiceOpsStatus.d.ts +30 -0
  209. package/dist/vue/VoicePlatformCoverage.d.ts +23 -0
  210. package/dist/vue/VoiceProofTrends.d.ts +21 -0
  211. package/dist/vue/VoiceProviderCapabilities.d.ts +51 -0
  212. package/dist/vue/VoiceProviderContracts.d.ts +21 -0
  213. package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
  214. package/dist/vue/VoiceProviderStatus.d.ts +51 -0
  215. package/dist/vue/VoiceReadinessFailures.d.ts +21 -0
  216. package/dist/vue/VoiceRoutingStatus.d.ts +51 -0
  217. package/dist/vue/VoiceTurnLatency.d.ts +69 -0
  218. package/dist/vue/VoiceTurnQuality.d.ts +51 -0
  219. package/dist/vue/index.d.ts +30 -0
  220. package/dist/vue/index.js +6434 -56
  221. package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
  222. package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
  223. package/dist/vue/useVoiceController.d.ts +2 -1
  224. package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
  225. package/dist/vue/useVoiceLiveOps.d.ts +9 -0
  226. package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
  227. package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
  228. package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
  229. package/dist/vue/useVoiceProofTrends.d.ts +9 -0
  230. package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
  231. package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
  232. package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
  233. package/dist/vue/useVoiceProviderStatus.d.ts +1 -1
  234. package/dist/vue/useVoiceReadinessFailures.d.ts +873 -0
  235. package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
  236. package/dist/vue/useVoiceStream.d.ts +2 -1
  237. package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
  238. package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
  239. package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
  240. package/dist/vue/useVoiceWorkflowStatus.d.ts +9 -0
  241. package/dist/workflowContract.d.ts +91 -0
  242. package/package.json +4 -1
@@ -0,0 +1,130 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type VoiceRoutingEventKind } from './resilienceRoutes';
3
+ import type { StoredVoiceTraceEvent, VoiceTraceEvent, VoiceTraceEventStore } from './trace';
4
+ export type VoiceProviderDecisionStatus = 'degraded' | 'error' | 'fallback' | 'selected' | 'skipped' | 'success';
5
+ export type VoiceProviderDecisionTrace = {
6
+ at: number;
7
+ elapsedMs?: number;
8
+ error?: string;
9
+ fallbackProvider?: string;
10
+ kind?: VoiceRoutingEventKind;
11
+ latencyBudgetMs?: number;
12
+ provider: string;
13
+ reason: string;
14
+ scenarioId?: string;
15
+ selectedProvider?: string;
16
+ sessionId: string;
17
+ status: VoiceProviderDecisionStatus;
18
+ surface: string;
19
+ turnId?: string;
20
+ };
21
+ export type VoiceProviderDecisionTraceInput = Omit<VoiceProviderDecisionTrace, 'at' | 'reason' | 'sessionId' | 'surface'> & {
22
+ at?: number;
23
+ reason?: string;
24
+ sessionId?: string;
25
+ surface?: string;
26
+ };
27
+ export type VoiceProviderDecisionTraceIssue = {
28
+ code: string;
29
+ message: string;
30
+ status: 'fail' | 'warn';
31
+ surface?: string;
32
+ };
33
+ export type VoiceProviderDecisionSurfaceReport = {
34
+ degraded: number;
35
+ decisions: number;
36
+ errors: number;
37
+ fallbacks: number;
38
+ issues: VoiceProviderDecisionTraceIssue[];
39
+ latestAt?: number;
40
+ providers: string[];
41
+ reasons: string[];
42
+ selected: number;
43
+ status: 'fail' | 'pass' | 'warn';
44
+ surface: string;
45
+ };
46
+ export type VoiceProviderDecisionTraceReport = {
47
+ checkedAt: number;
48
+ decisions: VoiceProviderDecisionTrace[];
49
+ issues: VoiceProviderDecisionTraceIssue[];
50
+ status: 'fail' | 'pass' | 'warn';
51
+ summary: {
52
+ degraded: number;
53
+ decisions: number;
54
+ errors: number;
55
+ fallbacks: number;
56
+ providers: number;
57
+ selected: number;
58
+ surfaces: number;
59
+ };
60
+ surfaces: VoiceProviderDecisionSurfaceReport[];
61
+ };
62
+ export type VoiceProviderDecisionTraceReportOptions = {
63
+ events?: StoredVoiceTraceEvent[] | VoiceProviderDecisionTrace[];
64
+ maxAgeMs?: number;
65
+ minDegraded?: number;
66
+ minDecisions?: number;
67
+ minFallbacks?: number;
68
+ now?: number;
69
+ requiredFallbackProviders?: readonly string[];
70
+ requiredProviders?: readonly string[];
71
+ requiredReasonIncludes?: readonly string[];
72
+ requiredSurfaces?: readonly string[];
73
+ requiredStatuses?: readonly VoiceProviderDecisionStatus[];
74
+ sessionId?: string;
75
+ store?: VoiceTraceEventStore;
76
+ };
77
+ export type VoiceProviderDecisionTraceRoutesOptions = VoiceProviderDecisionTraceReportOptions & {
78
+ headers?: HeadersInit;
79
+ htmlPath?: false | string;
80
+ markdownPath?: false | string;
81
+ name?: string;
82
+ path?: string;
83
+ render?: (report: VoiceProviderDecisionTraceReport) => string | Promise<string>;
84
+ title?: string;
85
+ };
86
+ export declare const createVoiceProviderDecisionTraceEvent: (input: VoiceProviderDecisionTraceInput) => VoiceTraceEvent;
87
+ export declare const listVoiceProviderDecisionTraces: (events: StoredVoiceTraceEvent[] | VoiceProviderDecisionTrace[]) => VoiceProviderDecisionTrace[];
88
+ export declare const buildVoiceProviderDecisionTraceReport: (options: VoiceProviderDecisionTraceReportOptions) => Promise<VoiceProviderDecisionTraceReport>;
89
+ export declare const renderVoiceProviderDecisionTraceMarkdown: (report: VoiceProviderDecisionTraceReport) => string;
90
+ export declare const renderVoiceProviderDecisionTraceHTML: (report: VoiceProviderDecisionTraceReport, title?: string) => string;
91
+ export declare const createVoiceProviderDecisionTraceRoutes: (options: VoiceProviderDecisionTraceRoutesOptions) => Elysia<"", {
92
+ decorator: {};
93
+ store: {};
94
+ derive: {};
95
+ resolve: {};
96
+ }, {
97
+ typebox: {};
98
+ error: {};
99
+ }, {
100
+ schema: {};
101
+ standaloneSchema: {};
102
+ macro: {};
103
+ macroFn: {};
104
+ parser: {};
105
+ response: {};
106
+ }, {
107
+ [x: string]: {
108
+ get: {
109
+ body: unknown;
110
+ params: {};
111
+ query: unknown;
112
+ headers: unknown;
113
+ response: {
114
+ 200: Response;
115
+ };
116
+ };
117
+ };
118
+ }, {
119
+ derive: {};
120
+ resolve: {};
121
+ schema: {};
122
+ standaloneSchema: {};
123
+ response: {};
124
+ }, {
125
+ derive: {};
126
+ resolve: {};
127
+ schema: {};
128
+ standaloneSchema: {};
129
+ response: {};
130
+ }>;
@@ -0,0 +1,109 @@
1
+ import { Elysia } from 'elysia';
2
+ import type { VoiceProviderOrchestrationProfile, VoiceProviderRouterProviderProfile } from './modelAdapters';
3
+ import type { VoiceSessionRecord } from './types';
4
+ export type VoiceProviderOrchestrationStatus = 'fail' | 'pass' | 'warn';
5
+ export type VoiceProviderOrchestrationRequirement = {
6
+ minProviders?: number;
7
+ requireBudgetPolicy?: boolean;
8
+ requireCircuitBreaker?: boolean;
9
+ requireFallback?: boolean;
10
+ requireTimeoutBudget?: boolean;
11
+ };
12
+ export type VoiceProviderOrchestrationIssue = {
13
+ code: string;
14
+ message: string;
15
+ status: Exclude<VoiceProviderOrchestrationStatus, 'pass'>;
16
+ surface?: string;
17
+ };
18
+ export type VoiceProviderOrchestrationSurfaceReport = {
19
+ allowProviders: string[];
20
+ budgetPolicy: {
21
+ maxCost?: number;
22
+ maxLatencyMs?: number;
23
+ minQuality?: number;
24
+ };
25
+ circuitBreaker: boolean;
26
+ fallbackMode?: string;
27
+ fallbackProviders: string[];
28
+ issues: VoiceProviderOrchestrationIssue[];
29
+ providerProfiles: Record<string, VoiceProviderRouterProviderProfile>;
30
+ providers: string[];
31
+ status: VoiceProviderOrchestrationStatus;
32
+ strategy?: string;
33
+ surface: string;
34
+ timeoutBudget: boolean;
35
+ timeoutMs?: number;
36
+ };
37
+ export type VoiceProviderOrchestrationReport = {
38
+ checkedAt: number;
39
+ issues: VoiceProviderOrchestrationIssue[];
40
+ profileId: string;
41
+ status: VoiceProviderOrchestrationStatus;
42
+ summary: {
43
+ failed: number;
44
+ passed: number;
45
+ providers: number;
46
+ surfaces: number;
47
+ warned: number;
48
+ };
49
+ surfaces: VoiceProviderOrchestrationSurfaceReport[];
50
+ };
51
+ export type VoiceProviderOrchestrationReportOptions<TProvider extends string = string, TSurface extends string = string> = {
52
+ defaultRequirement?: VoiceProviderOrchestrationRequirement;
53
+ profile: VoiceProviderOrchestrationProfile<unknown, VoiceSessionRecord, TProvider, TSurface>;
54
+ requirements?: Partial<Record<TSurface, VoiceProviderOrchestrationRequirement>>;
55
+ };
56
+ export type VoiceProviderOrchestrationRoutesOptions<TProvider extends string = string, TSurface extends string = string> = VoiceProviderOrchestrationReportOptions<TProvider, TSurface> & {
57
+ headers?: HeadersInit;
58
+ htmlPath?: false | string;
59
+ markdownPath?: false | string;
60
+ name?: string;
61
+ path?: string;
62
+ render?: (report: VoiceProviderOrchestrationReport) => string | Promise<string>;
63
+ title?: string;
64
+ };
65
+ export declare const buildVoiceProviderOrchestrationReport: <TProvider extends string = string, TSurface extends string = string>(options: VoiceProviderOrchestrationReportOptions<TProvider, TSurface>) => VoiceProviderOrchestrationReport;
66
+ export declare const renderVoiceProviderOrchestrationMarkdown: (report: VoiceProviderOrchestrationReport) => string;
67
+ export declare const renderVoiceProviderOrchestrationHTML: (report: VoiceProviderOrchestrationReport, options?: {
68
+ title?: string;
69
+ }) => string;
70
+ export declare const createVoiceProviderOrchestrationRoutes: <TProvider extends string = string, TSurface extends string = string>(options: VoiceProviderOrchestrationRoutesOptions<TProvider, TSurface>) => Elysia<"", {
71
+ decorator: {};
72
+ store: {};
73
+ derive: {};
74
+ resolve: {};
75
+ }, {
76
+ typebox: {};
77
+ error: {};
78
+ }, {
79
+ schema: {};
80
+ standaloneSchema: {};
81
+ macro: {};
82
+ macroFn: {};
83
+ parser: {};
84
+ response: {};
85
+ }, {
86
+ [x: string]: {
87
+ get: {
88
+ body: unknown;
89
+ params: {};
90
+ query: unknown;
91
+ headers: unknown;
92
+ response: {
93
+ 200: VoiceProviderOrchestrationReport;
94
+ };
95
+ };
96
+ };
97
+ }, {
98
+ derive: {};
99
+ resolve: {};
100
+ schema: {};
101
+ standaloneSchema: {};
102
+ response: {};
103
+ }, {
104
+ derive: {};
105
+ resolve: {};
106
+ schema: {};
107
+ standaloneSchema: {};
108
+ response: {};
109
+ }>;
@@ -0,0 +1,71 @@
1
+ import { type VoiceRoutingEvent, type VoiceRoutingEventKind } from './resilienceRoutes';
2
+ import type { StoredVoiceTraceEvent, VoiceTraceEventStore } from './trace';
3
+ export type VoiceProviderRoutingStatus = 'error' | 'fallback' | 'success';
4
+ export type VoiceProviderRoutingExpectation = {
5
+ fallbackProvider?: string;
6
+ kind?: VoiceRoutingEventKind;
7
+ operation?: string;
8
+ provider?: string;
9
+ selectedProvider?: string;
10
+ status?: VoiceProviderRoutingStatus;
11
+ };
12
+ export type VoiceProviderRoutingContractDefinition = {
13
+ description?: string;
14
+ expect: VoiceProviderRoutingExpectation[];
15
+ id: string;
16
+ label?: string;
17
+ scenarioId?: string;
18
+ sessionId?: string;
19
+ };
20
+ export type VoiceProviderRoutingContractIssue = {
21
+ code: string;
22
+ message: string;
23
+ };
24
+ export type VoiceProviderRoutingContractReport = {
25
+ contractId: string;
26
+ events: VoiceRoutingEvent[];
27
+ issues: VoiceProviderRoutingContractIssue[];
28
+ pass: boolean;
29
+ scenarioId?: string;
30
+ sessionId?: string;
31
+ };
32
+ export type VoiceProviderRoutingContractRunOptions = {
33
+ contract: VoiceProviderRoutingContractDefinition;
34
+ events?: StoredVoiceTraceEvent[] | VoiceRoutingEvent[];
35
+ store?: VoiceTraceEventStore;
36
+ };
37
+ export type VoiceProviderRoutingContractAssertionInput = {
38
+ maxFailed?: number;
39
+ maxIssues?: number;
40
+ minContracts?: number;
41
+ minEvents?: number;
42
+ requiredContractIds?: string[];
43
+ requiredFallbackProviders?: string[];
44
+ requiredKinds?: VoiceRoutingEventKind[];
45
+ requiredOperations?: string[];
46
+ requiredProviders?: string[];
47
+ requiredScenarioIds?: string[];
48
+ requiredSelectedProviders?: string[];
49
+ requiredStatuses?: VoiceProviderRoutingStatus[];
50
+ };
51
+ export type VoiceProviderRoutingContractAssertionReport = {
52
+ contractIds: string[];
53
+ events: number;
54
+ failed: number;
55
+ fallbackProviders: string[];
56
+ issues: string[];
57
+ issueCount: number;
58
+ kinds: VoiceRoutingEventKind[];
59
+ ok: boolean;
60
+ operations: string[];
61
+ passed: number;
62
+ providers: string[];
63
+ scenarioIds: string[];
64
+ selectedProviders: string[];
65
+ statuses: VoiceProviderRoutingStatus[];
66
+ total: number;
67
+ };
68
+ export declare const runVoiceProviderRoutingContract: (options: VoiceProviderRoutingContractRunOptions) => Promise<VoiceProviderRoutingContractReport>;
69
+ export declare const assertVoiceProviderRoutingContract: (options: VoiceProviderRoutingContractRunOptions) => Promise<VoiceProviderRoutingContractReport>;
70
+ export declare const evaluateVoiceProviderRoutingContractEvidence: (reports: readonly VoiceProviderRoutingContractReport[], input?: VoiceProviderRoutingContractAssertionInput) => VoiceProviderRoutingContractAssertionReport;
71
+ export declare const assertVoiceProviderRoutingContractEvidence: (reports: readonly VoiceProviderRoutingContractReport[], input?: VoiceProviderRoutingContractAssertionInput) => VoiceProviderRoutingContractAssertionReport;
@@ -0,0 +1,142 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type VoiceRoutingEvent, type VoiceRoutingEventKind } from './resilienceRoutes';
3
+ import type { StoredVoiceTraceEvent, VoiceTraceEventStore } from './trace';
4
+ export type VoiceProviderSloStatus = 'fail' | 'pass' | 'warn';
5
+ export type VoiceProviderSloThresholds = {
6
+ maxAverageElapsedMs?: number;
7
+ maxErrorRate?: number;
8
+ maxFallbackRate?: number;
9
+ maxP95ElapsedMs?: number;
10
+ maxTimeoutRate?: number;
11
+ minSamples?: number;
12
+ };
13
+ export type VoiceProviderSloThresholdConfig = Partial<Record<VoiceRoutingEventKind, VoiceProviderSloThresholds>>;
14
+ export type VoiceProviderSloMetric = {
15
+ actual: number;
16
+ label: string;
17
+ pass: boolean;
18
+ threshold: number;
19
+ unit: 'count' | 'ms' | 'rate';
20
+ };
21
+ export type VoiceProviderSloIssue = {
22
+ code: string;
23
+ detail?: string;
24
+ kind?: VoiceRoutingEventKind;
25
+ label: string;
26
+ sessionId?: string;
27
+ status: Exclude<VoiceProviderSloStatus, 'pass'>;
28
+ value?: number | string;
29
+ };
30
+ export type VoiceProviderSloKindReport = {
31
+ events: number;
32
+ eventsWithLatency: number;
33
+ fallbacks: number;
34
+ issues: VoiceProviderSloIssue[];
35
+ kind: VoiceRoutingEventKind;
36
+ metrics: Record<string, VoiceProviderSloMetric>;
37
+ providers: string[];
38
+ status: VoiceProviderSloStatus;
39
+ thresholds: Required<VoiceProviderSloThresholds>;
40
+ timeouts: number;
41
+ unresolvedErrors: number;
42
+ };
43
+ export type VoiceProviderSloSessionReport = {
44
+ errorCount: number;
45
+ fallbackCount: number;
46
+ kinds: VoiceRoutingEventKind[];
47
+ lastEventAt: number;
48
+ maxElapsedMs?: number;
49
+ sessionId: string;
50
+ status: VoiceProviderSloStatus;
51
+ timeoutCount: number;
52
+ };
53
+ export type VoiceProviderSloReport = {
54
+ checkedAt: number;
55
+ events: number;
56
+ eventsWithLatency: number;
57
+ issues: VoiceProviderSloIssue[];
58
+ kinds: Record<VoiceRoutingEventKind, VoiceProviderSloKindReport>;
59
+ sessions: VoiceProviderSloSessionReport[];
60
+ status: VoiceProviderSloStatus;
61
+ thresholds: Record<VoiceRoutingEventKind, Required<VoiceProviderSloThresholds>>;
62
+ };
63
+ export type VoiceProviderSloReportOptions = {
64
+ events?: StoredVoiceTraceEvent[] | VoiceRoutingEvent[];
65
+ maxAgeMs?: number;
66
+ now?: number;
67
+ requiredKinds?: readonly VoiceRoutingEventKind[];
68
+ scenarioId?: string;
69
+ sessionId?: string;
70
+ store?: VoiceTraceEventStore;
71
+ thresholds?: VoiceProviderSloThresholdConfig;
72
+ };
73
+ export type VoiceProviderSloRoutesOptions = VoiceProviderSloReportOptions & {
74
+ headers?: HeadersInit;
75
+ htmlPath?: false | string;
76
+ markdownPath?: false | string;
77
+ name?: string;
78
+ path?: string;
79
+ render?: (report: VoiceProviderSloReport) => string | Promise<string>;
80
+ title?: string;
81
+ };
82
+ export type VoiceProviderSloAssertionInput = {
83
+ fallbackKinds?: VoiceRoutingEventKind[];
84
+ maxAverageElapsedMs?: Partial<Record<VoiceRoutingEventKind, number>>;
85
+ maxIssues?: number;
86
+ maxP95ElapsedMs?: Partial<Record<VoiceRoutingEventKind, number>>;
87
+ maxStatus?: VoiceProviderSloStatus;
88
+ maxTimeouts?: number;
89
+ maxUnresolvedErrors?: number;
90
+ minEvents?: number;
91
+ minFallbacks?: number;
92
+ minLatencySamples?: number;
93
+ requiredKinds?: VoiceRoutingEventKind[];
94
+ requiredProviders?: string[];
95
+ };
96
+ export type VoiceProviderSloAssertionReport = {
97
+ events: number;
98
+ eventsWithLatency: number;
99
+ fallbacks: number;
100
+ issues: string[];
101
+ kinds: VoiceRoutingEventKind[];
102
+ ok: boolean;
103
+ providers: string[];
104
+ status: VoiceProviderSloStatus;
105
+ timeouts: number;
106
+ unresolvedErrors: number;
107
+ };
108
+ export declare const buildVoiceProviderSloReport: (options?: VoiceProviderSloReportOptions) => Promise<VoiceProviderSloReport>;
109
+ export declare const evaluateVoiceProviderSloEvidence: (report: VoiceProviderSloReport, input?: VoiceProviderSloAssertionInput) => VoiceProviderSloAssertionReport;
110
+ export declare const assertVoiceProviderSloEvidence: (report: VoiceProviderSloReport, input?: VoiceProviderSloAssertionInput) => VoiceProviderSloAssertionReport;
111
+ export declare const renderVoiceProviderSloMarkdown: (report: VoiceProviderSloReport) => string;
112
+ export declare const renderVoiceProviderSloHTML: (report: VoiceProviderSloReport, options?: {
113
+ title?: string;
114
+ }) => string;
115
+ export declare const createVoiceProviderSloRoutes: (options: VoiceProviderSloRoutesOptions) => Elysia<"", {
116
+ decorator: {};
117
+ store: {};
118
+ derive: {};
119
+ resolve: {};
120
+ }, {
121
+ typebox: {};
122
+ error: {};
123
+ }, {
124
+ schema: {};
125
+ standaloneSchema: {};
126
+ macro: {};
127
+ macroFn: {};
128
+ parser: {};
129
+ response: {};
130
+ }, {}, {
131
+ derive: {};
132
+ resolve: {};
133
+ schema: {};
134
+ standaloneSchema: {};
135
+ response: {};
136
+ }, {
137
+ derive: {};
138
+ resolve: {};
139
+ schema: {};
140
+ standaloneSchema: {};
141
+ response: {};
142
+ }>;
@@ -0,0 +1,187 @@
1
+ import { Elysia } from 'elysia';
2
+ import type { VoiceReadinessProfileName } from './readinessProfiles';
3
+ export type VoiceProviderStackKind = 'llm' | 'stt' | 'tts';
4
+ export type VoiceProviderStackInput<TProvider extends string = string> = {
5
+ profile: VoiceReadinessProfileName;
6
+ providers: Partial<Record<VoiceProviderStackKind, readonly TProvider[]>>;
7
+ };
8
+ export type VoiceProviderStackChoice<TProvider extends string = string> = {
9
+ alternatives: TProvider[];
10
+ provider?: TProvider;
11
+ reasons: string[];
12
+ };
13
+ export type VoiceProviderStackRecommendation<TProvider extends string = string> = {
14
+ profile: VoiceReadinessProfileName;
15
+ reasons: string[];
16
+ recommended: Partial<Record<VoiceProviderStackKind, TProvider>>;
17
+ stacks: Partial<Record<VoiceProviderStackKind, VoiceProviderStackChoice<TProvider>>>;
18
+ };
19
+ export type VoiceProviderStackCapabilities<TProvider extends string = string> = Partial<Record<VoiceProviderStackKind, Partial<Record<TProvider, readonly string[]>>>>;
20
+ export type VoiceProviderStackCapabilityGap<TProvider extends string = string> = {
21
+ kind: VoiceProviderStackKind;
22
+ missing: string[];
23
+ present: string[];
24
+ provider?: TProvider;
25
+ required: string[];
26
+ status: 'fail' | 'pass' | 'warn';
27
+ };
28
+ export type VoiceProviderStackCapabilityGapReport<TProvider extends string = string> = {
29
+ gaps: VoiceProviderStackCapabilityGap<TProvider>[];
30
+ missing: number;
31
+ profile: VoiceReadinessProfileName;
32
+ status: 'fail' | 'pass' | 'warn';
33
+ };
34
+ export type VoiceProviderStackAssertionInput<TProvider extends string = string> = {
35
+ maxMissing?: number;
36
+ maxStatus?: VoiceProviderContractCheckStatus;
37
+ requireProviders?: boolean;
38
+ requiredKinds?: VoiceProviderStackKind[];
39
+ requiredProviders?: TProvider[];
40
+ requiredCapabilities?: Partial<Record<VoiceProviderStackKind, readonly string[]>>;
41
+ };
42
+ export type VoiceProviderStackAssertionReport<TProvider extends string = string> = {
43
+ issues: string[];
44
+ kinds: VoiceProviderStackKind[];
45
+ missing: number;
46
+ ok: boolean;
47
+ providers: TProvider[];
48
+ status: VoiceProviderContractCheckStatus;
49
+ };
50
+ export type VoiceProviderStackCapabilityGapInput<TProvider extends string = string> = VoiceProviderStackInput<TProvider> & {
51
+ capabilities?: VoiceProviderStackCapabilities<TProvider>;
52
+ recommendation?: VoiceProviderStackRecommendation<TProvider>;
53
+ required?: Partial<Record<VoiceProviderStackKind, readonly string[]>>;
54
+ };
55
+ export type VoiceProviderContractCheckStatus = 'fail' | 'pass' | 'warn';
56
+ export type VoiceProviderContractRemediation = {
57
+ code: string;
58
+ detail: string;
59
+ href?: string;
60
+ label: string;
61
+ };
62
+ export type VoiceProviderContractCheck = {
63
+ detail?: string;
64
+ key: string;
65
+ label: string;
66
+ remediation?: VoiceProviderContractRemediation;
67
+ status: VoiceProviderContractCheckStatus;
68
+ };
69
+ export type VoiceProviderContractDefinition<TProvider extends string = string> = {
70
+ capabilities?: readonly string[];
71
+ configured?: boolean;
72
+ env?: Record<string, string | undefined>;
73
+ fallbackProviders?: readonly TProvider[];
74
+ kind: VoiceProviderStackKind;
75
+ latencyBudgetMs?: number;
76
+ provider: TProvider;
77
+ requiredCapabilities?: readonly string[];
78
+ requiredEnv?: readonly string[];
79
+ remediationHref?: string;
80
+ selected?: boolean;
81
+ streaming?: boolean;
82
+ };
83
+ export type VoiceProviderContractMatrixInput<TProvider extends string = string> = {
84
+ contracts: readonly VoiceProviderContractDefinition<TProvider>[];
85
+ };
86
+ export type VoiceProviderContractMatrixPresetOptions<TProvider extends string = string> = {
87
+ capabilities?: VoiceProviderStackCapabilities<TProvider>;
88
+ configured?: Partial<Record<TProvider, boolean>>;
89
+ env?: Record<string, string | undefined>;
90
+ fallbackProviders?: Partial<Record<VoiceProviderStackKind, readonly TProvider[]>>;
91
+ latencyBudgets?: Partial<Record<TProvider, number>>;
92
+ providers: Partial<Record<VoiceProviderStackKind, readonly TProvider[]>>;
93
+ remediationHref?: string;
94
+ selected?: Partial<Record<VoiceProviderStackKind, TProvider>>;
95
+ streaming?: Partial<Record<TProvider, boolean>>;
96
+ };
97
+ export type VoiceProviderContractMatrixHandlerOptions<TProvider extends string = string> = VoiceProviderContractMatrixInput<TProvider> | (() => Promise<VoiceProviderContractMatrixInput<TProvider>> | VoiceProviderContractMatrixInput<TProvider>);
98
+ export type VoiceProviderContractMatrixHTMLHandlerOptions<TProvider extends string = string> = {
99
+ matrix: VoiceProviderContractMatrixHandlerOptions<TProvider>;
100
+ render?: (report: VoiceProviderContractMatrixReport<TProvider>) => string | Promise<string>;
101
+ title?: string;
102
+ };
103
+ export type VoiceProviderContractMatrixRoutesOptions<TProvider extends string = string> = VoiceProviderContractMatrixHTMLHandlerOptions<TProvider> & {
104
+ headers?: HeadersInit;
105
+ htmlPath?: false | string;
106
+ name?: string;
107
+ path?: string;
108
+ };
109
+ export type VoiceProviderContractMatrixRow<TProvider extends string = string> = {
110
+ checks: VoiceProviderContractCheck[];
111
+ configured: boolean;
112
+ kind: VoiceProviderStackKind;
113
+ provider: TProvider;
114
+ selected: boolean;
115
+ status: VoiceProviderContractCheckStatus;
116
+ };
117
+ export type VoiceProviderContractMatrixReport<TProvider extends string = string> = {
118
+ failed: number;
119
+ passed: number;
120
+ rows: VoiceProviderContractMatrixRow<TProvider>[];
121
+ status: VoiceProviderContractCheckStatus;
122
+ total: number;
123
+ warned: number;
124
+ };
125
+ export type VoiceProviderContractMatrixAssertionInput<TProvider extends string = string> = {
126
+ maxFailed?: number;
127
+ maxStatus?: VoiceProviderContractCheckStatus;
128
+ maxWarned?: number;
129
+ minRows?: number;
130
+ requireAllSelected?: boolean;
131
+ requiredCheckKeys?: string[];
132
+ requiredKinds?: VoiceProviderStackKind[];
133
+ requiredProviders?: TProvider[];
134
+ selectedKinds?: VoiceProviderStackKind[];
135
+ };
136
+ export type VoiceProviderContractMatrixAssertionReport<TProvider extends string = string> = {
137
+ failed: number;
138
+ issues: string[];
139
+ kinds: VoiceProviderStackKind[];
140
+ ok: boolean;
141
+ providers: TProvider[];
142
+ selectedKinds: VoiceProviderStackKind[];
143
+ status: VoiceProviderContractCheckStatus;
144
+ total: number;
145
+ warned: number;
146
+ };
147
+ export declare const recommendVoiceProviderStack: <TProvider extends string = string>(input: VoiceProviderStackInput<TProvider>) => VoiceProviderStackRecommendation<TProvider>;
148
+ export declare const buildVoiceProviderContractMatrix: <TProvider extends string = string>(input: VoiceProviderContractMatrixInput<TProvider>) => VoiceProviderContractMatrixReport<TProvider>;
149
+ export declare const evaluateVoiceProviderContractMatrixEvidence: <TProvider extends string = string>(report: VoiceProviderContractMatrixReport<TProvider>, input?: VoiceProviderContractMatrixAssertionInput<TProvider>) => VoiceProviderContractMatrixAssertionReport<TProvider>;
150
+ export declare const assertVoiceProviderContractMatrixEvidence: <TProvider extends string = string>(report: VoiceProviderContractMatrixReport<TProvider>, input?: VoiceProviderContractMatrixAssertionInput<TProvider>) => VoiceProviderContractMatrixAssertionReport<TProvider>;
151
+ export declare const createVoiceProviderContractMatrixPreset: <TProvider extends string = string>(profile: VoiceReadinessProfileName, options: VoiceProviderContractMatrixPresetOptions<TProvider>) => VoiceProviderContractMatrixInput<TProvider>;
152
+ export declare const renderVoiceProviderContractMatrixHTML: <TProvider extends string = string>(report: VoiceProviderContractMatrixReport<TProvider>, options?: {
153
+ title?: string;
154
+ }) => string;
155
+ export declare const createVoiceProviderContractMatrixJSONHandler: <TProvider extends string = string>(matrix: VoiceProviderContractMatrixHandlerOptions<TProvider>) => () => Promise<VoiceProviderContractMatrixReport<TProvider>>;
156
+ export declare const createVoiceProviderContractMatrixHTMLHandler: <TProvider extends string = string>(options: VoiceProviderContractMatrixHTMLHandlerOptions<TProvider>) => () => Promise<Response>;
157
+ export declare const createVoiceProviderContractMatrixRoutes: <TProvider extends string = string>(options: VoiceProviderContractMatrixRoutesOptions<TProvider>) => Elysia<"", {
158
+ decorator: {};
159
+ store: {};
160
+ derive: {};
161
+ resolve: {};
162
+ }, {
163
+ typebox: {};
164
+ error: {};
165
+ }, {
166
+ schema: {};
167
+ standaloneSchema: {};
168
+ macro: {};
169
+ macroFn: {};
170
+ parser: {};
171
+ response: {};
172
+ }, {}, {
173
+ derive: {};
174
+ resolve: {};
175
+ schema: {};
176
+ standaloneSchema: {};
177
+ response: {};
178
+ }, {
179
+ derive: {};
180
+ resolve: {};
181
+ schema: {};
182
+ standaloneSchema: {};
183
+ response: {};
184
+ }>;
185
+ export declare const evaluateVoiceProviderStackGaps: <TProvider extends string = string>(input: VoiceProviderStackCapabilityGapInput<TProvider>) => VoiceProviderStackCapabilityGapReport<TProvider>;
186
+ export declare const evaluateVoiceProviderStackEvidence: <TProvider extends string = string>(report: VoiceProviderStackCapabilityGapReport<TProvider>, input?: VoiceProviderStackAssertionInput<TProvider>) => VoiceProviderStackAssertionReport<TProvider>;
187
+ export declare const assertVoiceProviderStackEvidence: <TProvider extends string = string>(report: VoiceProviderStackCapabilityGapReport<TProvider>, input?: VoiceProviderStackAssertionInput<TProvider>) => VoiceProviderStackAssertionReport<TProvider>;