@absolutejs/voice 0.0.22-beta.33 → 0.0.22-beta.331

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/browserMediaRoutes.d.ts +62 -0
  33. package/dist/campaign.d.ts +768 -0
  34. package/dist/campaignDialers.d.ts +111 -0
  35. package/dist/client/actions.d.ts +83 -0
  36. package/dist/client/agentSquadStatus.d.ts +37 -0
  37. package/dist/client/agentSquadStatusWidget.d.ts +24 -0
  38. package/dist/client/bargeInMonitor.d.ts +7 -0
  39. package/dist/client/browserMedia.d.ts +8 -0
  40. package/dist/client/campaignDialerProof.d.ts +23 -0
  41. package/dist/client/deliveryRuntime.d.ts +34 -0
  42. package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
  43. package/dist/client/duplex.d.ts +1 -1
  44. package/dist/client/htmxBootstrap.js +937 -14
  45. package/dist/client/index.d.ts +72 -0
  46. package/dist/client/index.js +6031 -50
  47. package/dist/client/liveOps.d.ts +22 -0
  48. package/dist/client/liveOpsWidget.d.ts +23 -0
  49. package/dist/client/liveTurnLatency.d.ts +41 -0
  50. package/dist/client/opsActionCenter.d.ts +54 -0
  51. package/dist/client/opsActionCenterWidget.d.ts +29 -0
  52. package/dist/client/opsActionHistory.d.ts +19 -0
  53. package/dist/client/opsActionHistoryWidget.d.ts +11 -0
  54. package/dist/client/opsStatus.d.ts +19 -0
  55. package/dist/client/opsStatusWidget.d.ts +40 -0
  56. package/dist/client/platformCoverage.d.ts +19 -0
  57. package/dist/client/platformCoverageWidget.d.ts +37 -0
  58. package/dist/client/proofTrends.d.ts +19 -0
  59. package/dist/client/proofTrendsWidget.d.ts +37 -0
  60. package/dist/client/providerCapabilities.d.ts +19 -0
  61. package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
  62. package/dist/client/providerContracts.d.ts +19 -0
  63. package/dist/client/providerContractsWidget.d.ts +37 -0
  64. package/dist/client/providerSimulationControls.d.ts +33 -0
  65. package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
  66. package/dist/client/providerStatusWidget.d.ts +32 -0
  67. package/dist/client/readinessFailures.d.ts +19 -0
  68. package/dist/client/readinessFailuresWidget.d.ts +42 -0
  69. package/dist/client/routingStatus.d.ts +19 -0
  70. package/dist/client/routingStatusWidget.d.ts +28 -0
  71. package/dist/client/traceTimeline.d.ts +19 -0
  72. package/dist/client/traceTimelineWidget.d.ts +36 -0
  73. package/dist/client/turnLatency.d.ts +22 -0
  74. package/dist/client/turnLatencyWidget.d.ts +33 -0
  75. package/dist/client/turnQuality.d.ts +19 -0
  76. package/dist/client/turnQualityWidget.d.ts +32 -0
  77. package/dist/client/workflowStatus.d.ts +19 -0
  78. package/dist/competitiveCoverage.d.ts +141 -0
  79. package/dist/dataControl.d.ts +180 -0
  80. package/dist/deliveryRuntime.d.ts +158 -0
  81. package/dist/deliverySinkRoutes.d.ts +117 -0
  82. package/dist/demoReadyRoutes.d.ts +98 -0
  83. package/dist/diagnosticsRoutes.d.ts +44 -0
  84. package/dist/evalRoutes.d.ts +219 -0
  85. package/dist/fileStore.d.ts +14 -2
  86. package/dist/guardrails.d.ts +128 -0
  87. package/dist/incidentBundle.d.ts +116 -0
  88. package/dist/index.d.ts +149 -14
  89. package/dist/index.js +30017 -5590
  90. package/dist/latencySlo.d.ts +56 -0
  91. package/dist/liveLatency.d.ts +78 -0
  92. package/dist/liveOps.d.ts +190 -0
  93. package/dist/mediaPipelineRoutes.d.ts +117 -0
  94. package/dist/modelAdapters.d.ts +54 -2
  95. package/dist/observabilityExport.d.ts +481 -0
  96. package/dist/openaiTTS.d.ts +18 -0
  97. package/dist/operationsRecord.d.ts +351 -0
  98. package/dist/opsActionAuditRoutes.d.ts +99 -0
  99. package/dist/opsConsoleRoutes.d.ts +80 -0
  100. package/dist/opsRecovery.d.ts +137 -0
  101. package/dist/opsStatus.d.ts +76 -0
  102. package/dist/opsStatusRoutes.d.ts +33 -0
  103. package/dist/outcomeContract.d.ts +146 -0
  104. package/dist/phoneAgent.d.ts +139 -0
  105. package/dist/phoneAgentProductionSmoke.d.ts +115 -0
  106. package/dist/platformCoverage.d.ts +91 -0
  107. package/dist/postCallAnalysis.d.ts +98 -0
  108. package/dist/postgresStore.d.ts +13 -2
  109. package/dist/productionReadiness.d.ts +611 -0
  110. package/dist/proofTrends.d.ts +133 -0
  111. package/dist/providerAdapters.d.ts +16 -1
  112. package/dist/providerCapabilities.d.ts +92 -0
  113. package/dist/providerDecisionTraces.d.ts +130 -0
  114. package/dist/providerOrchestration.d.ts +109 -0
  115. package/dist/providerRoutingContract.d.ts +71 -0
  116. package/dist/providerSlo.d.ts +142 -0
  117. package/dist/providerStackRecommendations.d.ts +187 -0
  118. package/dist/qualityRoutes.d.ts +76 -0
  119. package/dist/queue.d.ts +9 -0
  120. package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
  121. package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
  122. package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
  123. package/dist/react/VoiceOpsStatus.d.ts +6 -0
  124. package/dist/react/VoicePlatformCoverage.d.ts +6 -0
  125. package/dist/react/VoiceProofTrends.d.ts +6 -0
  126. package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
  127. package/dist/react/VoiceProviderContracts.d.ts +6 -0
  128. package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
  129. package/dist/react/VoiceProviderStatus.d.ts +6 -0
  130. package/dist/react/VoiceReadinessFailures.d.ts +6 -0
  131. package/dist/react/VoiceRoutingStatus.d.ts +6 -0
  132. package/dist/react/VoiceTraceTimeline.d.ts +6 -0
  133. package/dist/react/VoiceTurnLatency.d.ts +6 -0
  134. package/dist/react/VoiceTurnQuality.d.ts +6 -0
  135. package/dist/react/index.d.ts +32 -0
  136. package/dist/react/index.js +5801 -31
  137. package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
  138. package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
  139. package/dist/react/useVoiceController.d.ts +1 -0
  140. package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
  141. package/dist/react/useVoiceLiveOps.d.ts +9 -0
  142. package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
  143. package/dist/react/useVoiceOpsStatus.d.ts +8 -0
  144. package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
  145. package/dist/react/useVoiceProofTrends.d.ts +8 -0
  146. package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
  147. package/dist/react/useVoiceProviderContracts.d.ts +8 -0
  148. package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
  149. package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
  150. package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
  151. package/dist/react/useVoiceStream.d.ts +1 -0
  152. package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
  153. package/dist/react/useVoiceTurnLatency.d.ts +9 -0
  154. package/dist/react/useVoiceTurnQuality.d.ts +8 -0
  155. package/dist/react/useVoiceWorkflowStatus.d.ts +8 -0
  156. package/dist/readinessProfiles.d.ts +38 -0
  157. package/dist/realtimeChannel.d.ts +136 -0
  158. package/dist/realtimeProviderContracts.d.ts +133 -0
  159. package/dist/reconnectContract.d.ts +88 -0
  160. package/dist/resilienceRoutes.d.ts +143 -0
  161. package/dist/sessionReplay.d.ts +12 -0
  162. package/dist/simulationSuite.d.ts +143 -0
  163. package/dist/sloCalibration.d.ts +185 -0
  164. package/dist/sqliteStore.d.ts +13 -2
  165. package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
  166. package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
  167. package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
  168. package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
  169. package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
  170. package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
  171. package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
  172. package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
  173. package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
  174. package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
  175. package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
  176. package/dist/svelte/createVoiceProviderStatus.d.ts +4 -2
  177. package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
  178. package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
  179. package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
  180. package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
  181. package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
  182. package/dist/svelte/createVoiceWorkflowStatus.d.ts +8 -0
  183. package/dist/svelte/index.d.ts +17 -0
  184. package/dist/svelte/index.js +5666 -420
  185. package/dist/telephony/contract.d.ts +61 -0
  186. package/dist/telephony/matrix.d.ts +97 -0
  187. package/dist/telephony/plivo.d.ts +303 -0
  188. package/dist/telephony/security.d.ts +182 -0
  189. package/dist/telephony/telnyx.d.ts +291 -0
  190. package/dist/telephony/twilio.d.ts +136 -2
  191. package/dist/telephonyMediaRoutes.d.ts +72 -0
  192. package/dist/telephonyOutcome.d.ts +273 -0
  193. package/dist/testing/index.d.ts +1 -0
  194. package/dist/testing/index.js +5321 -153
  195. package/dist/testing/ioProviderSimulator.d.ts +41 -0
  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 +5570 -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,133 @@
1
+ import { Elysia } from 'elysia';
2
+ export type VoiceProofTrendStatus = 'empty' | 'fail' | 'pass' | 'stale';
3
+ export type VoiceProofTrendSummary = {
4
+ cycles?: number;
5
+ maxLiveP95Ms?: number;
6
+ maxProviderP95Ms?: number;
7
+ maxTurnP95Ms?: number;
8
+ };
9
+ export type VoiceProofTrendCycle = {
10
+ at?: string;
11
+ cycle?: number;
12
+ liveLatency?: {
13
+ p95Ms?: number;
14
+ samples?: number;
15
+ };
16
+ ok?: boolean;
17
+ opsRecovery?: {
18
+ issues?: number;
19
+ status?: string;
20
+ };
21
+ productionReadiness?: {
22
+ status?: string;
23
+ };
24
+ providerSlo?: {
25
+ events?: number;
26
+ eventsWithLatency?: number;
27
+ status?: string;
28
+ };
29
+ turnLatency?: {
30
+ p95Ms?: number;
31
+ samples?: number;
32
+ status?: string;
33
+ };
34
+ };
35
+ export type VoiceProofTrendReportInput = {
36
+ baseUrl?: string;
37
+ cycles?: VoiceProofTrendCycle[];
38
+ generatedAt?: string;
39
+ maxAgeMs?: number;
40
+ now?: Date | number | string;
41
+ ok?: boolean;
42
+ outputDir?: string;
43
+ runId?: string;
44
+ source?: string;
45
+ status?: VoiceProofTrendStatus;
46
+ summary?: VoiceProofTrendSummary;
47
+ };
48
+ export type VoiceProofTrendReport = {
49
+ ageMs?: number;
50
+ baseUrl?: string;
51
+ cycles: VoiceProofTrendCycle[];
52
+ freshUntil?: string;
53
+ generatedAt?: string;
54
+ maxAgeMs: number;
55
+ ok: boolean;
56
+ outputDir?: string;
57
+ runId?: string;
58
+ source: string;
59
+ status: VoiceProofTrendStatus;
60
+ summary: VoiceProofTrendSummary;
61
+ };
62
+ export type VoiceProofTrendAssertionInput = {
63
+ maxAgeMs?: number;
64
+ maxLiveP95Ms?: number;
65
+ maxProviderP95Ms?: number;
66
+ maxTurnP95Ms?: number;
67
+ minCycles?: number;
68
+ minLiveLatencySamples?: number;
69
+ minProviderSloEventsWithLatency?: number;
70
+ minTurnLatencySamples?: number;
71
+ requireAllCyclesOk?: boolean;
72
+ requireStatus?: VoiceProofTrendStatus;
73
+ };
74
+ export type VoiceProofTrendAssertionReport = {
75
+ ageMs?: number;
76
+ cycles: number;
77
+ failedCycles: number;
78
+ issues: string[];
79
+ maxLiveP95Ms?: number;
80
+ maxProviderP95Ms?: number;
81
+ maxTurnP95Ms?: number;
82
+ ok: boolean;
83
+ status: VoiceProofTrendStatus;
84
+ };
85
+ export type VoiceProofTrendRoutesOptions = {
86
+ headers?: HeadersInit;
87
+ jsonPath?: string;
88
+ maxAgeMs?: number;
89
+ name?: string;
90
+ path?: string;
91
+ source?: (() => Promise<VoiceProofTrendReport | VoiceProofTrendReportInput> | VoiceProofTrendReport | VoiceProofTrendReportInput) | VoiceProofTrendReport | VoiceProofTrendReportInput;
92
+ };
93
+ export declare const DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS: number;
94
+ export declare const buildVoiceProofTrendReport: (input?: VoiceProofTrendReportInput) => VoiceProofTrendReport;
95
+ export declare const buildEmptyVoiceProofTrendReport: (source?: string, maxAgeMs?: number) => VoiceProofTrendReport;
96
+ export declare const normalizeVoiceProofTrendReport: (value: VoiceProofTrendReport | VoiceProofTrendReportInput, options?: {
97
+ maxAgeMs?: number;
98
+ source?: string;
99
+ }) => VoiceProofTrendReport;
100
+ export declare const readVoiceProofTrendReportFile: (path: string, options?: {
101
+ maxAgeMs?: number;
102
+ }) => Promise<VoiceProofTrendReport>;
103
+ export declare const evaluateVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
104
+ export declare const assertVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
105
+ export declare const createVoiceProofTrendRoutes: (options: VoiceProofTrendRoutesOptions) => Elysia<"", {
106
+ decorator: {};
107
+ store: {};
108
+ derive: {};
109
+ resolve: {};
110
+ }, {
111
+ typebox: {};
112
+ error: {};
113
+ }, {
114
+ schema: {};
115
+ standaloneSchema: {};
116
+ macro: {};
117
+ macroFn: {};
118
+ parser: {};
119
+ response: {};
120
+ }, {}, {
121
+ derive: {};
122
+ resolve: {};
123
+ schema: {};
124
+ standaloneSchema: {};
125
+ response: {};
126
+ }, {
127
+ derive: {};
128
+ resolve: {};
129
+ schema: {};
130
+ standaloneSchema: {};
131
+ response: {};
132
+ }>;
133
+ export declare const formatVoiceProofTrendAge: (ageMs: unknown) => string;
@@ -1,5 +1,5 @@
1
1
  import type { STTAdapter, STTAdapterOpenOptions, TTSAdapter, TTSAdapterOpenOptions } from './types';
2
- import type { VoiceProviderRouterProviderProfile } from './modelAdapters';
2
+ import type { VoiceProviderRouterHealthOptions, VoiceProviderRouterProviderHealth, VoiceProviderRouterProviderProfile, VoiceProviderRouterPolicyPreset, VoiceProviderRouterPolicyWeights, VoiceProviderRouterStrategy } from './modelAdapters';
3
3
  type MaybePromise<T> = T | Promise<T>;
4
4
  type VoiceIOProviderKind = 'stt' | 'tts';
5
5
  type VoiceIOProviderStatus = 'error' | 'fallback' | 'success';
@@ -13,15 +13,30 @@ export type VoiceIOProviderRouterEvent<TProvider extends string = string> = {
13
13
  latencyBudgetMs?: number;
14
14
  operation: 'open' | 'send';
15
15
  provider: TProvider;
16
+ providerHealth?: VoiceProviderRouterProviderHealth<TProvider>;
16
17
  selectedProvider: TProvider;
17
18
  status: VoiceIOProviderStatus;
19
+ suppressionRemainingMs?: number;
20
+ suppressedUntil?: number;
18
21
  timedOut?: boolean;
19
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>;
20
33
  export type VoiceIOProviderRouterOptions<TProvider extends string, TAdapter, TOpenOptions> = {
21
34
  adapters: Partial<Record<TProvider, TAdapter>>;
22
35
  fallback?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
23
36
  isProviderError?: (error: unknown, provider: TProvider) => boolean;
24
37
  onProviderEvent?: (event: VoiceIOProviderRouterEvent<TProvider>, input: TOpenOptions) => Promise<void> | void;
38
+ policy?: VoiceIOProviderRouterPolicy<TOpenOptions, TProvider>;
39
+ providerHealth?: boolean | VoiceProviderRouterHealthOptions;
25
40
  providerProfiles?: Partial<Record<TProvider, VoiceProviderRouterProviderProfile>>;
26
41
  selectProvider?: (input: TOpenOptions) => MaybePromise<TProvider | undefined>;
27
42
  timeoutMs?: number;
@@ -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
+ }>;
@@ -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;