@absolutejs/voice 0.0.22-beta.34 → 0.0.22-beta.341
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.
- package/README.md +3361 -55
- package/dist/agent.d.ts +62 -0
- package/dist/agentSquadContract.d.ts +98 -0
- package/dist/angular/index.d.ts +16 -0
- package/dist/angular/index.js +4240 -1128
- package/dist/angular/voice-agent-squad-status.service.d.ts +12 -0
- package/dist/angular/voice-campaign-dialer-proof.service.d.ts +14 -0
- package/dist/angular/voice-controller.service.d.ts +1 -0
- package/dist/angular/voice-delivery-runtime.component.d.ts +17 -0
- package/dist/angular/voice-delivery-runtime.service.d.ts +16 -0
- package/dist/angular/voice-live-ops.service.d.ts +11 -0
- package/dist/angular/voice-ops-action-center.service.d.ts +13 -0
- package/dist/angular/voice-ops-status.component.d.ts +15 -0
- package/dist/angular/voice-ops-status.service.d.ts +12 -0
- package/dist/angular/voice-platform-coverage.service.d.ts +12 -0
- package/dist/angular/voice-proof-trends.service.d.ts +12 -0
- package/dist/angular/voice-provider-capabilities.service.d.ts +12 -0
- package/dist/angular/voice-provider-contracts.service.d.ts +12 -0
- package/dist/angular/voice-readiness-failures.service.d.ts +13 -0
- package/dist/angular/voice-routing-status.service.d.ts +11 -0
- package/dist/angular/voice-stream.service.d.ts +1 -0
- package/dist/angular/voice-trace-timeline.service.d.ts +12 -0
- package/dist/angular/voice-turn-latency.service.d.ts +13 -0
- package/dist/angular/voice-turn-quality.service.d.ts +12 -0
- package/dist/angular/voice-workflow-status.service.d.ts +12 -0
- package/dist/audit.d.ts +128 -0
- package/dist/auditDeliveryRoutes.d.ts +85 -0
- package/dist/auditExport.d.ts +34 -0
- package/dist/auditRoutes.d.ts +66 -0
- package/dist/auditSinks.d.ts +151 -0
- package/dist/bargeInRoutes.d.ts +56 -0
- package/dist/browserMediaRoutes.d.ts +62 -0
- package/dist/campaign.d.ts +768 -0
- package/dist/campaignDialers.d.ts +111 -0
- package/dist/client/actions.d.ts +83 -0
- package/dist/client/agentSquadStatus.d.ts +37 -0
- package/dist/client/agentSquadStatusWidget.d.ts +24 -0
- package/dist/client/bargeInMonitor.d.ts +7 -0
- package/dist/client/browserMedia.d.ts +8 -0
- package/dist/client/campaignDialerProof.d.ts +23 -0
- package/dist/client/deliveryRuntime.d.ts +34 -0
- package/dist/client/deliveryRuntimeWidget.d.ts +37 -0
- package/dist/client/duplex.d.ts +1 -1
- package/dist/client/htmxBootstrap.js +937 -14
- package/dist/client/index.d.ts +72 -0
- package/dist/client/index.js +6554 -50
- package/dist/client/liveOps.d.ts +22 -0
- package/dist/client/liveOpsWidget.d.ts +23 -0
- package/dist/client/liveTurnLatency.d.ts +41 -0
- package/dist/client/opsActionCenter.d.ts +54 -0
- package/dist/client/opsActionCenterWidget.d.ts +29 -0
- package/dist/client/opsActionHistory.d.ts +19 -0
- package/dist/client/opsActionHistoryWidget.d.ts +11 -0
- package/dist/client/opsStatus.d.ts +19 -0
- package/dist/client/opsStatusWidget.d.ts +40 -0
- package/dist/client/platformCoverage.d.ts +19 -0
- package/dist/client/platformCoverageWidget.d.ts +37 -0
- package/dist/client/proofTrends.d.ts +19 -0
- package/dist/client/proofTrendsWidget.d.ts +37 -0
- package/dist/client/providerCapabilities.d.ts +19 -0
- package/dist/client/providerCapabilitiesWidget.d.ts +32 -0
- package/dist/client/providerContracts.d.ts +19 -0
- package/dist/client/providerContractsWidget.d.ts +37 -0
- package/dist/client/providerSimulationControls.d.ts +33 -0
- package/dist/client/providerSimulationControlsWidget.d.ts +20 -0
- package/dist/client/providerStatusWidget.d.ts +32 -0
- package/dist/client/readinessFailures.d.ts +19 -0
- package/dist/client/readinessFailuresWidget.d.ts +42 -0
- package/dist/client/routingStatus.d.ts +19 -0
- package/dist/client/routingStatusWidget.d.ts +28 -0
- package/dist/client/traceTimeline.d.ts +19 -0
- package/dist/client/traceTimelineWidget.d.ts +36 -0
- package/dist/client/turnLatency.d.ts +22 -0
- package/dist/client/turnLatencyWidget.d.ts +33 -0
- package/dist/client/turnQuality.d.ts +19 -0
- package/dist/client/turnQualityWidget.d.ts +32 -0
- package/dist/client/workflowStatus.d.ts +19 -0
- package/dist/competitiveCoverage.d.ts +141 -0
- package/dist/dataControl.d.ts +180 -0
- package/dist/deliveryRuntime.d.ts +158 -0
- package/dist/deliverySinkRoutes.d.ts +117 -0
- package/dist/demoReadyRoutes.d.ts +98 -0
- package/dist/diagnosticsRoutes.d.ts +44 -0
- package/dist/evalRoutes.d.ts +219 -0
- package/dist/fileStore.d.ts +14 -2
- package/dist/guardrails.d.ts +128 -0
- package/dist/incidentBundle.d.ts +116 -0
- package/dist/index.d.ts +149 -14
- package/dist/index.js +30488 -5611
- package/dist/latencySlo.d.ts +56 -0
- package/dist/liveLatency.d.ts +78 -0
- package/dist/liveOps.d.ts +190 -0
- package/dist/mediaPipelineRoutes.d.ts +117 -0
- package/dist/modelAdapters.d.ts +54 -2
- package/dist/observabilityExport.d.ts +481 -0
- package/dist/openaiTTS.d.ts +18 -0
- package/dist/operationsRecord.d.ts +351 -0
- package/dist/opsActionAuditRoutes.d.ts +99 -0
- package/dist/opsConsoleRoutes.d.ts +80 -0
- package/dist/opsRecovery.d.ts +137 -0
- package/dist/opsStatus.d.ts +76 -0
- package/dist/opsStatusRoutes.d.ts +33 -0
- package/dist/outcomeContract.d.ts +146 -0
- package/dist/phoneAgent.d.ts +139 -0
- package/dist/phoneAgentProductionSmoke.d.ts +115 -0
- package/dist/platformCoverage.d.ts +91 -0
- package/dist/postCallAnalysis.d.ts +98 -0
- package/dist/postgresStore.d.ts +13 -2
- package/dist/productionReadiness.d.ts +611 -0
- package/dist/proofTrends.d.ts +325 -0
- package/dist/providerAdapters.d.ts +12 -1
- package/dist/providerCapabilities.d.ts +92 -0
- package/dist/providerDecisionTraces.d.ts +130 -0
- package/dist/providerOrchestration.d.ts +109 -0
- package/dist/providerRoutingContract.d.ts +71 -0
- package/dist/providerSlo.d.ts +142 -0
- package/dist/providerStackRecommendations.d.ts +187 -0
- package/dist/qualityRoutes.d.ts +76 -0
- package/dist/queue.d.ts +9 -0
- package/dist/react/VoiceAgentSquadStatus.d.ts +5 -0
- package/dist/react/VoiceDeliveryRuntime.d.ts +7 -0
- package/dist/react/VoiceOpsActionCenter.d.ts +5 -0
- package/dist/react/VoiceOpsStatus.d.ts +6 -0
- package/dist/react/VoicePlatformCoverage.d.ts +6 -0
- package/dist/react/VoiceProofTrends.d.ts +6 -0
- package/dist/react/VoiceProviderCapabilities.d.ts +6 -0
- package/dist/react/VoiceProviderContracts.d.ts +6 -0
- package/dist/react/VoiceProviderSimulationControls.d.ts +5 -0
- package/dist/react/VoiceProviderStatus.d.ts +6 -0
- package/dist/react/VoiceReadinessFailures.d.ts +6 -0
- package/dist/react/VoiceRoutingStatus.d.ts +6 -0
- package/dist/react/VoiceTraceTimeline.d.ts +6 -0
- package/dist/react/VoiceTurnLatency.d.ts +6 -0
- package/dist/react/VoiceTurnQuality.d.ts +6 -0
- package/dist/react/index.d.ts +32 -0
- package/dist/react/index.js +6324 -31
- package/dist/react/useVoiceAgentSquadStatus.d.ts +8 -0
- package/dist/react/useVoiceCampaignDialerProof.d.ts +10 -0
- package/dist/react/useVoiceController.d.ts +1 -0
- package/dist/react/useVoiceDeliveryRuntime.d.ts +13 -0
- package/dist/react/useVoiceLiveOps.d.ts +9 -0
- package/dist/react/useVoiceOpsActionCenter.d.ts +11 -0
- package/dist/react/useVoiceOpsStatus.d.ts +8 -0
- package/dist/react/useVoicePlatformCoverage.d.ts +8 -0
- package/dist/react/useVoiceProofTrends.d.ts +8 -0
- package/dist/react/useVoiceProviderCapabilities.d.ts +8 -0
- package/dist/react/useVoiceProviderContracts.d.ts +8 -0
- package/dist/react/useVoiceProviderSimulationControls.d.ts +10 -0
- package/dist/react/useVoiceReadinessFailures.d.ts +8 -0
- package/dist/react/useVoiceRoutingStatus.d.ts +8 -0
- package/dist/react/useVoiceStream.d.ts +1 -0
- package/dist/react/useVoiceTraceTimeline.d.ts +8 -0
- package/dist/react/useVoiceTurnLatency.d.ts +9 -0
- package/dist/react/useVoiceTurnQuality.d.ts +8 -0
- package/dist/react/useVoiceWorkflowStatus.d.ts +8 -0
- package/dist/readinessProfiles.d.ts +38 -0
- package/dist/realtimeChannel.d.ts +136 -0
- package/dist/realtimeProviderContracts.d.ts +133 -0
- package/dist/reconnectContract.d.ts +88 -0
- package/dist/resilienceRoutes.d.ts +143 -0
- package/dist/sessionReplay.d.ts +12 -0
- package/dist/simulationSuite.d.ts +143 -0
- package/dist/sloCalibration.d.ts +185 -0
- package/dist/sqliteStore.d.ts +13 -2
- package/dist/svelte/createVoiceAgentSquadStatus.d.ts +9 -0
- package/dist/svelte/createVoiceCampaignDialerProof.d.ts +9 -0
- package/dist/svelte/createVoiceDeliveryRuntime.d.ts +11 -0
- package/dist/svelte/createVoiceLiveOps.d.ts +13 -0
- package/dist/svelte/createVoiceOpsActionCenter.d.ts +10 -0
- package/dist/svelte/createVoiceOpsStatus.d.ts +9 -0
- package/dist/svelte/createVoicePlatformCoverage.d.ts +7 -0
- package/dist/svelte/createVoiceProofTrends.d.ts +7 -0
- package/dist/svelte/createVoiceProviderCapabilities.d.ts +10 -0
- package/dist/svelte/createVoiceProviderContracts.d.ts +10 -0
- package/dist/svelte/createVoiceProviderSimulationControls.d.ts +11 -0
- package/dist/svelte/createVoiceProviderStatus.d.ts +4 -2
- package/dist/svelte/createVoiceReadinessFailures.d.ts +7 -0
- package/dist/svelte/createVoiceRoutingStatus.d.ts +10 -0
- package/dist/svelte/createVoiceTraceTimeline.d.ts +10 -0
- package/dist/svelte/createVoiceTurnLatency.d.ts +11 -0
- package/dist/svelte/createVoiceTurnQuality.d.ts +10 -0
- package/dist/svelte/createVoiceWorkflowStatus.d.ts +8 -0
- package/dist/svelte/index.d.ts +17 -0
- package/dist/svelte/index.js +5666 -420
- package/dist/telephony/contract.d.ts +61 -0
- package/dist/telephony/matrix.d.ts +97 -0
- package/dist/telephony/plivo.d.ts +303 -0
- package/dist/telephony/security.d.ts +182 -0
- package/dist/telephony/telnyx.d.ts +291 -0
- package/dist/telephony/twilio.d.ts +136 -2
- package/dist/telephonyMediaRoutes.d.ts +72 -0
- package/dist/telephonyOutcome.d.ts +273 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +5321 -153
- package/dist/testing/ioProviderSimulator.d.ts +41 -0
- package/dist/testing/telephony.d.ts +25 -0
- package/dist/toolContract.d.ts +161 -0
- package/dist/toolRuntime.d.ts +50 -0
- package/dist/trace.d.ts +19 -1
- package/dist/traceDeliveryRoutes.d.ts +86 -0
- package/dist/traceTimeline.d.ts +97 -0
- package/dist/turnLatency.d.ts +95 -0
- package/dist/turnQuality.d.ts +94 -0
- package/dist/types.d.ts +118 -3
- package/dist/voiceMonitoring.d.ts +444 -0
- package/dist/vue/VoiceDeliveryRuntime.d.ts +30 -0
- package/dist/vue/VoiceOpsActionCenter.d.ts +13 -0
- package/dist/vue/VoiceOpsStatus.d.ts +30 -0
- package/dist/vue/VoicePlatformCoverage.d.ts +23 -0
- package/dist/vue/VoiceProofTrends.d.ts +21 -0
- package/dist/vue/VoiceProviderCapabilities.d.ts +51 -0
- package/dist/vue/VoiceProviderContracts.d.ts +21 -0
- package/dist/vue/VoiceProviderSimulationControls.d.ts +88 -0
- package/dist/vue/VoiceProviderStatus.d.ts +51 -0
- package/dist/vue/VoiceReadinessFailures.d.ts +21 -0
- package/dist/vue/VoiceRoutingStatus.d.ts +51 -0
- package/dist/vue/VoiceTurnLatency.d.ts +69 -0
- package/dist/vue/VoiceTurnQuality.d.ts +51 -0
- package/dist/vue/index.d.ts +30 -0
- package/dist/vue/index.js +6093 -56
- package/dist/vue/useVoiceAgentSquadStatus.d.ts +9 -0
- package/dist/vue/useVoiceCampaignDialerProof.d.ts +11 -0
- package/dist/vue/useVoiceController.d.ts +2 -1
- package/dist/vue/useVoiceDeliveryRuntime.d.ts +13 -0
- package/dist/vue/useVoiceLiveOps.d.ts +9 -0
- package/dist/vue/useVoiceOpsActionCenter.d.ts +11 -0
- package/dist/vue/useVoiceOpsStatus.d.ts +9 -0
- package/dist/vue/useVoicePlatformCoverage.d.ts +9 -0
- package/dist/vue/useVoiceProofTrends.d.ts +9 -0
- package/dist/vue/useVoiceProviderCapabilities.d.ts +9 -0
- package/dist/vue/useVoiceProviderContracts.d.ts +9 -0
- package/dist/vue/useVoiceProviderSimulationControls.d.ts +24 -0
- package/dist/vue/useVoiceProviderStatus.d.ts +1 -1
- package/dist/vue/useVoiceReadinessFailures.d.ts +873 -0
- package/dist/vue/useVoiceRoutingStatus.d.ts +8 -0
- package/dist/vue/useVoiceStream.d.ts +2 -1
- package/dist/vue/useVoiceTraceTimeline.d.ts +9 -0
- package/dist/vue/useVoiceTurnLatency.d.ts +10 -0
- package/dist/vue/useVoiceTurnQuality.d.ts +9 -0
- package/dist/vue/useVoiceWorkflowStatus.d.ts +9 -0
- package/dist/workflowContract.d.ts +91 -0
- package/package.json +4 -1
|
@@ -0,0 +1,325 @@
|
|
|
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
|
+
profiles?: VoiceProofTrendProfileSummary[];
|
|
8
|
+
providers?: VoiceProofTrendProviderSummary[];
|
|
9
|
+
runtimeChannel?: VoiceProofTrendRuntimeChannelSummary;
|
|
10
|
+
maxTurnP95Ms?: number;
|
|
11
|
+
};
|
|
12
|
+
export type VoiceProofTrendProfileSummary = {
|
|
13
|
+
description?: string;
|
|
14
|
+
id: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
maxLiveP95Ms?: number;
|
|
17
|
+
maxProviderP95Ms?: number;
|
|
18
|
+
maxTurnP95Ms?: number;
|
|
19
|
+
providers?: VoiceProofTrendProviderSummary[];
|
|
20
|
+
runtimeChannel?: VoiceProofTrendRuntimeChannelSummary;
|
|
21
|
+
status?: string;
|
|
22
|
+
};
|
|
23
|
+
export type VoiceProofTrendProfileDefinition = {
|
|
24
|
+
description?: string;
|
|
25
|
+
id: string;
|
|
26
|
+
label?: string;
|
|
27
|
+
liveOffsetMs?: number;
|
|
28
|
+
maxLiveP95Ms?: number;
|
|
29
|
+
maxProviderP95Ms?: number;
|
|
30
|
+
maxRuntimeFirstAudioLatencyMs?: number;
|
|
31
|
+
maxRuntimeInterruptionP95Ms?: number;
|
|
32
|
+
maxRuntimeJitterMs?: number;
|
|
33
|
+
maxRuntimeTimestampDriftMs?: number;
|
|
34
|
+
maxTurnP95Ms?: number;
|
|
35
|
+
providerOffsetMs?: number;
|
|
36
|
+
runtimeOffsetMs?: number;
|
|
37
|
+
turnOffsetMs?: number;
|
|
38
|
+
};
|
|
39
|
+
export type VoiceProofTrendProviderSummary = {
|
|
40
|
+
averageMs?: number;
|
|
41
|
+
id: string;
|
|
42
|
+
label?: string;
|
|
43
|
+
p50Ms?: number;
|
|
44
|
+
p95Ms?: number;
|
|
45
|
+
role?: string;
|
|
46
|
+
samples?: number;
|
|
47
|
+
status?: string;
|
|
48
|
+
};
|
|
49
|
+
export type VoiceProofTrendRuntimeChannelSummary = {
|
|
50
|
+
maxBackpressureEvents?: number;
|
|
51
|
+
maxFirstAudioLatencyMs?: number;
|
|
52
|
+
maxInterruptionP95Ms?: number;
|
|
53
|
+
maxJitterMs?: number;
|
|
54
|
+
maxTimestampDriftMs?: number;
|
|
55
|
+
samples?: number;
|
|
56
|
+
status?: string;
|
|
57
|
+
};
|
|
58
|
+
export type VoiceProofTrendCycle = {
|
|
59
|
+
at?: string;
|
|
60
|
+
cycle?: number;
|
|
61
|
+
liveLatency?: {
|
|
62
|
+
p95Ms?: number;
|
|
63
|
+
samples?: number;
|
|
64
|
+
};
|
|
65
|
+
ok?: boolean;
|
|
66
|
+
opsRecovery?: {
|
|
67
|
+
issues?: number;
|
|
68
|
+
status?: string;
|
|
69
|
+
};
|
|
70
|
+
productionReadiness?: {
|
|
71
|
+
status?: string;
|
|
72
|
+
};
|
|
73
|
+
providerSlo?: {
|
|
74
|
+
events?: number;
|
|
75
|
+
eventsWithLatency?: number;
|
|
76
|
+
status?: string;
|
|
77
|
+
};
|
|
78
|
+
providers?: VoiceProofTrendProviderSummary[];
|
|
79
|
+
runtimeChannel?: VoiceProofTrendRuntimeChannelSummary;
|
|
80
|
+
turnLatency?: {
|
|
81
|
+
p95Ms?: number;
|
|
82
|
+
samples?: number;
|
|
83
|
+
status?: string;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
export type VoiceProofTrendReportInput = {
|
|
87
|
+
baseUrl?: string;
|
|
88
|
+
cycles?: VoiceProofTrendCycle[];
|
|
89
|
+
generatedAt?: string;
|
|
90
|
+
maxAgeMs?: number;
|
|
91
|
+
now?: Date | number | string;
|
|
92
|
+
ok?: boolean;
|
|
93
|
+
outputDir?: string;
|
|
94
|
+
runId?: string;
|
|
95
|
+
source?: string;
|
|
96
|
+
status?: VoiceProofTrendStatus;
|
|
97
|
+
summary?: VoiceProofTrendSummary;
|
|
98
|
+
};
|
|
99
|
+
export type VoiceProofTrendReport = {
|
|
100
|
+
ageMs?: number;
|
|
101
|
+
baseUrl?: string;
|
|
102
|
+
cycles: VoiceProofTrendCycle[];
|
|
103
|
+
freshUntil?: string;
|
|
104
|
+
generatedAt?: string;
|
|
105
|
+
maxAgeMs: number;
|
|
106
|
+
ok: boolean;
|
|
107
|
+
outputDir?: string;
|
|
108
|
+
runId?: string;
|
|
109
|
+
source: string;
|
|
110
|
+
status: VoiceProofTrendStatus;
|
|
111
|
+
summary: VoiceProofTrendSummary;
|
|
112
|
+
};
|
|
113
|
+
export type VoiceProofTrendProfileSummaryOptions = {
|
|
114
|
+
maxLiveP95Ms?: number;
|
|
115
|
+
maxProviderP95Ms?: number;
|
|
116
|
+
maxRuntimeFirstAudioLatencyMs?: number;
|
|
117
|
+
maxRuntimeInterruptionP95Ms?: number;
|
|
118
|
+
maxRuntimeJitterMs?: number;
|
|
119
|
+
maxRuntimeTimestampDriftMs?: number;
|
|
120
|
+
maxTurnP95Ms?: number;
|
|
121
|
+
profiles?: readonly VoiceProofTrendProfileDefinition[];
|
|
122
|
+
};
|
|
123
|
+
export type VoiceProofTrendAssertionInput = {
|
|
124
|
+
maxAgeMs?: number;
|
|
125
|
+
maxRuntimeBackpressureEvents?: number;
|
|
126
|
+
maxRuntimeFirstAudioLatencyMs?: number;
|
|
127
|
+
maxRuntimeInterruptionP95Ms?: number;
|
|
128
|
+
maxRuntimeJitterMs?: number;
|
|
129
|
+
maxRuntimeTimestampDriftMs?: number;
|
|
130
|
+
maxLiveP95Ms?: number;
|
|
131
|
+
maxProviderP95Ms?: number;
|
|
132
|
+
maxTurnP95Ms?: number;
|
|
133
|
+
minCycles?: number;
|
|
134
|
+
minLiveLatencySamples?: number;
|
|
135
|
+
minProviderSloEventsWithLatency?: number;
|
|
136
|
+
minRuntimeChannelSamples?: number;
|
|
137
|
+
minTurnLatencySamples?: number;
|
|
138
|
+
requireAllCyclesOk?: boolean;
|
|
139
|
+
requireStatus?: VoiceProofTrendStatus;
|
|
140
|
+
};
|
|
141
|
+
export type VoiceProofTrendAssertionReport = {
|
|
142
|
+
ageMs?: number;
|
|
143
|
+
cycles: number;
|
|
144
|
+
failedCycles: number;
|
|
145
|
+
issues: string[];
|
|
146
|
+
maxLiveP95Ms?: number;
|
|
147
|
+
maxProviderP95Ms?: number;
|
|
148
|
+
runtimeChannel?: VoiceProofTrendRuntimeChannelSummary;
|
|
149
|
+
maxTurnP95Ms?: number;
|
|
150
|
+
ok: boolean;
|
|
151
|
+
status: VoiceProofTrendStatus;
|
|
152
|
+
};
|
|
153
|
+
export type VoiceProofTrendRoutesOptions = {
|
|
154
|
+
headers?: HeadersInit;
|
|
155
|
+
jsonPath?: string;
|
|
156
|
+
maxAgeMs?: number;
|
|
157
|
+
name?: string;
|
|
158
|
+
path?: string;
|
|
159
|
+
source?: (() => Promise<VoiceProofTrendReport | VoiceProofTrendReportInput> | VoiceProofTrendReport | VoiceProofTrendReportInput) | VoiceProofTrendReport | VoiceProofTrendReportInput;
|
|
160
|
+
};
|
|
161
|
+
export type VoiceProofTrendRecommendationStatus = 'fail' | 'pass' | 'warn';
|
|
162
|
+
export type VoiceProofTrendRecommendationSurface = 'live-latency' | 'provider-path' | 'runtime-channel' | 'turn-latency';
|
|
163
|
+
export type VoiceProofTrendRecommendation = {
|
|
164
|
+
evidence: Record<string, number | string | undefined>;
|
|
165
|
+
nextMove: string;
|
|
166
|
+
providerId?: string;
|
|
167
|
+
role?: string;
|
|
168
|
+
recommendation: string;
|
|
169
|
+
status: VoiceProofTrendRecommendationStatus;
|
|
170
|
+
surface: VoiceProofTrendRecommendationSurface;
|
|
171
|
+
};
|
|
172
|
+
export type VoiceProofTrendProviderRecommendation = {
|
|
173
|
+
averageMs?: number;
|
|
174
|
+
id: string;
|
|
175
|
+
label?: string;
|
|
176
|
+
nextMove: string;
|
|
177
|
+
p50Ms?: number;
|
|
178
|
+
p95Ms?: number;
|
|
179
|
+
rank: number;
|
|
180
|
+
role?: string;
|
|
181
|
+
samples?: number;
|
|
182
|
+
status: VoiceProofTrendRecommendationStatus;
|
|
183
|
+
};
|
|
184
|
+
export type VoiceProofTrendRecommendationReport = {
|
|
185
|
+
bestProvider?: VoiceProofTrendProviderRecommendation;
|
|
186
|
+
bestProviders: VoiceProofTrendProviderRecommendation[];
|
|
187
|
+
generatedAt: string;
|
|
188
|
+
issues: string[];
|
|
189
|
+
ok: boolean;
|
|
190
|
+
profiles: VoiceProofTrendProfileRecommendation[];
|
|
191
|
+
providers: VoiceProofTrendProviderRecommendation[];
|
|
192
|
+
recommendations: VoiceProofTrendRecommendation[];
|
|
193
|
+
source: string;
|
|
194
|
+
status: VoiceProofTrendRecommendationStatus;
|
|
195
|
+
summary: {
|
|
196
|
+
keepCurrentProviderPath: boolean;
|
|
197
|
+
keepCurrentRuntimeChannel: boolean;
|
|
198
|
+
providerComparisonCount: number;
|
|
199
|
+
recommendedActions: number;
|
|
200
|
+
switchRecommended: boolean;
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
export type VoiceProofTrendProfileRecommendation = {
|
|
204
|
+
bestProviders: VoiceProofTrendProviderRecommendation[];
|
|
205
|
+
id: string;
|
|
206
|
+
label?: string;
|
|
207
|
+
nextMove: string;
|
|
208
|
+
providerComparisonCount: number;
|
|
209
|
+
recommendation: string;
|
|
210
|
+
status: VoiceProofTrendRecommendationStatus;
|
|
211
|
+
};
|
|
212
|
+
export type VoiceProofTrendRecommendationOptions = {
|
|
213
|
+
currentProviderId?: string;
|
|
214
|
+
maxLiveP95Ms?: number;
|
|
215
|
+
maxProviderP95Ms?: number;
|
|
216
|
+
maxRuntimeBackpressureEvents?: number;
|
|
217
|
+
maxRuntimeFirstAudioLatencyMs?: number;
|
|
218
|
+
maxRuntimeInterruptionP95Ms?: number;
|
|
219
|
+
maxRuntimeJitterMs?: number;
|
|
220
|
+
maxRuntimeTimestampDriftMs?: number;
|
|
221
|
+
maxTurnP95Ms?: number;
|
|
222
|
+
providerSwitchMinImprovementMs?: number;
|
|
223
|
+
providerSwitchMinImprovementRatio?: number;
|
|
224
|
+
};
|
|
225
|
+
export type VoiceProofTrendRecommendationRoutesOptions = VoiceProofTrendRecommendationOptions & {
|
|
226
|
+
headers?: HeadersInit;
|
|
227
|
+
htmlPath?: false | string;
|
|
228
|
+
jsonPath?: string;
|
|
229
|
+
maxAgeMs?: number;
|
|
230
|
+
markdownPath?: false | string;
|
|
231
|
+
name?: string;
|
|
232
|
+
path?: string;
|
|
233
|
+
source?: (() => Promise<VoiceProofTrendReport | VoiceProofTrendReportInput> | VoiceProofTrendReport | VoiceProofTrendReportInput) | VoiceProofTrendReport | VoiceProofTrendReportInput;
|
|
234
|
+
title?: string;
|
|
235
|
+
};
|
|
236
|
+
export declare const DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS: number;
|
|
237
|
+
export declare const DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS: ({
|
|
238
|
+
description: string;
|
|
239
|
+
id: string;
|
|
240
|
+
label: string;
|
|
241
|
+
liveOffsetMs?: undefined;
|
|
242
|
+
providerOffsetMs?: undefined;
|
|
243
|
+
runtimeOffsetMs?: undefined;
|
|
244
|
+
turnOffsetMs?: undefined;
|
|
245
|
+
} | {
|
|
246
|
+
description: string;
|
|
247
|
+
id: string;
|
|
248
|
+
label: string;
|
|
249
|
+
liveOffsetMs: number;
|
|
250
|
+
providerOffsetMs: number;
|
|
251
|
+
runtimeOffsetMs: number;
|
|
252
|
+
turnOffsetMs: number;
|
|
253
|
+
})[];
|
|
254
|
+
export declare const buildVoiceProofTrendReport: (input?: VoiceProofTrendReportInput) => VoiceProofTrendReport;
|
|
255
|
+
export declare const buildEmptyVoiceProofTrendReport: (source?: string, maxAgeMs?: number) => VoiceProofTrendReport;
|
|
256
|
+
export declare const normalizeVoiceProofTrendReport: (value: VoiceProofTrendReport | VoiceProofTrendReportInput, options?: {
|
|
257
|
+
maxAgeMs?: number;
|
|
258
|
+
source?: string;
|
|
259
|
+
}) => VoiceProofTrendReport;
|
|
260
|
+
export declare const readVoiceProofTrendReportFile: (path: string, options?: {
|
|
261
|
+
maxAgeMs?: number;
|
|
262
|
+
}) => Promise<VoiceProofTrendReport>;
|
|
263
|
+
export declare const buildVoiceProofTrendProfileSummaries: (input: VoiceProofTrendReport | readonly VoiceProofTrendReport[], options?: VoiceProofTrendProfileSummaryOptions) => VoiceProofTrendProfileSummary[];
|
|
264
|
+
export declare const evaluateVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
|
|
265
|
+
export declare const assertVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
|
|
266
|
+
export declare const buildVoiceProofTrendRecommendationReport: (report: VoiceProofTrendReport, options?: VoiceProofTrendRecommendationOptions) => VoiceProofTrendRecommendationReport;
|
|
267
|
+
export declare const renderVoiceProofTrendRecommendationMarkdown: (report: VoiceProofTrendRecommendationReport, title?: string) => string;
|
|
268
|
+
export declare const renderVoiceProofTrendRecommendationHTML: (report: VoiceProofTrendRecommendationReport, title?: string) => string;
|
|
269
|
+
export declare const createVoiceProofTrendRecommendationRoutes: (options: VoiceProofTrendRecommendationRoutesOptions) => Elysia<"", {
|
|
270
|
+
decorator: {};
|
|
271
|
+
store: {};
|
|
272
|
+
derive: {};
|
|
273
|
+
resolve: {};
|
|
274
|
+
}, {
|
|
275
|
+
typebox: {};
|
|
276
|
+
error: {};
|
|
277
|
+
}, {
|
|
278
|
+
schema: {};
|
|
279
|
+
standaloneSchema: {};
|
|
280
|
+
macro: {};
|
|
281
|
+
macroFn: {};
|
|
282
|
+
parser: {};
|
|
283
|
+
response: {};
|
|
284
|
+
}, {}, {
|
|
285
|
+
derive: {};
|
|
286
|
+
resolve: {};
|
|
287
|
+
schema: {};
|
|
288
|
+
standaloneSchema: {};
|
|
289
|
+
response: {};
|
|
290
|
+
}, {
|
|
291
|
+
derive: {};
|
|
292
|
+
resolve: {};
|
|
293
|
+
schema: {};
|
|
294
|
+
standaloneSchema: {};
|
|
295
|
+
response: {};
|
|
296
|
+
}>;
|
|
297
|
+
export declare const createVoiceProofTrendRoutes: (options: VoiceProofTrendRoutesOptions) => Elysia<"", {
|
|
298
|
+
decorator: {};
|
|
299
|
+
store: {};
|
|
300
|
+
derive: {};
|
|
301
|
+
resolve: {};
|
|
302
|
+
}, {
|
|
303
|
+
typebox: {};
|
|
304
|
+
error: {};
|
|
305
|
+
}, {
|
|
306
|
+
schema: {};
|
|
307
|
+
standaloneSchema: {};
|
|
308
|
+
macro: {};
|
|
309
|
+
macroFn: {};
|
|
310
|
+
parser: {};
|
|
311
|
+
response: {};
|
|
312
|
+
}, {}, {
|
|
313
|
+
derive: {};
|
|
314
|
+
resolve: {};
|
|
315
|
+
schema: {};
|
|
316
|
+
standaloneSchema: {};
|
|
317
|
+
response: {};
|
|
318
|
+
}, {
|
|
319
|
+
derive: {};
|
|
320
|
+
resolve: {};
|
|
321
|
+
schema: {};
|
|
322
|
+
standaloneSchema: {};
|
|
323
|
+
response: {};
|
|
324
|
+
}>;
|
|
325
|
+
export declare const formatVoiceProofTrendAge: (ageMs: unknown) => string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { STTAdapter, STTAdapterOpenOptions, TTSAdapter, TTSAdapterOpenOptions } from './types';
|
|
2
|
-
import type { VoiceProviderRouterHealthOptions, VoiceProviderRouterProviderHealth, 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';
|
|
@@ -20,11 +20,22 @@ export type VoiceIOProviderRouterEvent<TProvider extends string = string> = {
|
|
|
20
20
|
suppressedUntil?: number;
|
|
21
21
|
timedOut?: boolean;
|
|
22
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>;
|
|
23
33
|
export type VoiceIOProviderRouterOptions<TProvider extends string, TAdapter, TOpenOptions> = {
|
|
24
34
|
adapters: Partial<Record<TProvider, TAdapter>>;
|
|
25
35
|
fallback?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
|
|
26
36
|
isProviderError?: (error: unknown, provider: TProvider) => boolean;
|
|
27
37
|
onProviderEvent?: (event: VoiceIOProviderRouterEvent<TProvider>, input: TOpenOptions) => Promise<void> | void;
|
|
38
|
+
policy?: VoiceIOProviderRouterPolicy<TOpenOptions, TProvider>;
|
|
28
39
|
providerHealth?: boolean | VoiceProviderRouterHealthOptions;
|
|
29
40
|
providerProfiles?: Partial<Record<TProvider, VoiceProviderRouterProviderProfile>>;
|
|
30
41
|
selectProvider?: (input: TOpenOptions) => MaybePromise<TProvider | undefined>;
|
|
@@ -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
|
+
}>;
|