@absolutejs/voice 0.0.22-beta.29 → 0.0.22-beta.290
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 +3234 -228
- package/dist/agent.d.ts +62 -0
- package/dist/agentSquadContract.d.ts +98 -0
- package/dist/angular/index.d.ts +15 -0
- package/dist/angular/index.js +3401 -1153
- 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-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/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/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 +703 -13
- package/dist/client/index.d.ts +66 -0
- package/dist/client/index.js +5073 -19
- 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/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/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/handoff.d.ts +15 -1
- package/dist/handoffHealth.d.ts +94 -0
- package/dist/incidentBundle.d.ts +116 -0
- package/dist/index.d.ts +138 -15
- package/dist/index.js +26946 -4957
- package/dist/latencySlo.d.ts +56 -0
- package/dist/liveLatency.d.ts +78 -0
- package/dist/liveOps.d.ts +190 -0
- package/dist/modelAdapters.d.ts +23 -2
- package/dist/observabilityExport.d.ts +481 -0
- package/dist/openaiRealtime.d.ts +27 -0
- package/dist/openaiTTS.d.ts +18 -0
- package/dist/operationsRecord.d.ts +210 -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 +544 -0
- package/dist/proofTrends.d.ts +133 -0
- package/dist/providerAdapters.d.ts +48 -0
- package/dist/providerCapabilities.d.ts +92 -0
- package/dist/providerHealth.d.ts +1 -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 +61 -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/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 +30 -0
- package/dist/react/index.js +4769 -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/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/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/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 +16 -0
- package/dist/svelte/index.js +4838 -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 +135 -2
- package/dist/telephonyOutcome.d.ts +273 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +1778 -36
- package/dist/testing/ioProviderSimulator.d.ts +41 -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 +127 -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/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 +28 -0
- package/dist/vue/index.js +4550 -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/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 +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { STTAdapter, STTAdapterOpenOptions, TTSAdapter, TTSAdapterOpenOptions } from './types';
|
|
2
|
+
import type { VoiceProviderRouterHealthOptions, VoiceProviderRouterProviderHealth, VoiceProviderRouterProviderProfile, VoiceProviderRouterPolicyPreset, VoiceProviderRouterPolicyWeights, VoiceProviderRouterStrategy } from './modelAdapters';
|
|
3
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
4
|
+
type VoiceIOProviderKind = 'stt' | 'tts';
|
|
5
|
+
type VoiceIOProviderStatus = 'error' | 'fallback' | 'success';
|
|
6
|
+
export type VoiceIOProviderRouterEvent<TProvider extends string = string> = {
|
|
7
|
+
at: number;
|
|
8
|
+
attempt: number;
|
|
9
|
+
elapsedMs: number;
|
|
10
|
+
error?: string;
|
|
11
|
+
fallbackProvider?: TProvider;
|
|
12
|
+
kind: VoiceIOProviderKind;
|
|
13
|
+
latencyBudgetMs?: number;
|
|
14
|
+
operation: 'open' | 'send';
|
|
15
|
+
provider: TProvider;
|
|
16
|
+
providerHealth?: VoiceProviderRouterProviderHealth<TProvider>;
|
|
17
|
+
selectedProvider: TProvider;
|
|
18
|
+
status: VoiceIOProviderStatus;
|
|
19
|
+
suppressionRemainingMs?: number;
|
|
20
|
+
suppressedUntil?: number;
|
|
21
|
+
timedOut?: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type VoiceIOProviderRouterPolicyConfig<TOpenOptions = unknown, TProvider extends string = string> = {
|
|
24
|
+
allowProviders?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
|
|
25
|
+
maxCost?: number;
|
|
26
|
+
maxLatencyMs?: number;
|
|
27
|
+
minQuality?: number;
|
|
28
|
+
scoreProvider?: (provider: TProvider, profile: VoiceProviderRouterProviderProfile | undefined) => number;
|
|
29
|
+
strategy?: VoiceProviderRouterStrategy;
|
|
30
|
+
weights?: VoiceProviderRouterPolicyWeights;
|
|
31
|
+
};
|
|
32
|
+
export type VoiceIOProviderRouterPolicy<TOpenOptions = unknown, TProvider extends string = string> = VoiceProviderRouterStrategy | VoiceProviderRouterPolicyPreset | VoiceIOProviderRouterPolicyConfig<TOpenOptions, TProvider>;
|
|
33
|
+
export type VoiceIOProviderRouterOptions<TProvider extends string, TAdapter, TOpenOptions> = {
|
|
34
|
+
adapters: Partial<Record<TProvider, TAdapter>>;
|
|
35
|
+
fallback?: readonly TProvider[] | ((input: TOpenOptions) => MaybePromise<readonly TProvider[]>);
|
|
36
|
+
isProviderError?: (error: unknown, provider: TProvider) => boolean;
|
|
37
|
+
onProviderEvent?: (event: VoiceIOProviderRouterEvent<TProvider>, input: TOpenOptions) => Promise<void> | void;
|
|
38
|
+
policy?: VoiceIOProviderRouterPolicy<TOpenOptions, TProvider>;
|
|
39
|
+
providerHealth?: boolean | VoiceProviderRouterHealthOptions;
|
|
40
|
+
providerProfiles?: Partial<Record<TProvider, VoiceProviderRouterProviderProfile>>;
|
|
41
|
+
selectProvider?: (input: TOpenOptions) => MaybePromise<TProvider | undefined>;
|
|
42
|
+
timeoutMs?: number;
|
|
43
|
+
};
|
|
44
|
+
export type VoiceSTTProviderRouterOptions<TProvider extends string = string, TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions> = VoiceIOProviderRouterOptions<TProvider, STTAdapter<TOptions>, TOptions>;
|
|
45
|
+
export type VoiceTTSProviderRouterOptions<TProvider extends string = string, TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions> = VoiceIOProviderRouterOptions<TProvider, TTSAdapter<TOptions>, TOptions>;
|
|
46
|
+
export declare const createVoiceSTTProviderRouter: <TProvider extends string = string, TOptions extends STTAdapterOpenOptions = STTAdapterOpenOptions>(options: VoiceSTTProviderRouterOptions<TProvider, TOptions>) => STTAdapter<TOptions>;
|
|
47
|
+
export declare const createVoiceTTSProviderRouter: <TProvider extends string = string, TOptions extends TTSAdapterOpenOptions = TTSAdapterOpenOptions>(options: VoiceTTSProviderRouterOptions<TProvider, TOptions>) => TTSAdapter<TOptions>;
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Elysia } from 'elysia';
|
|
2
|
+
import { type VoiceProviderHealthStatus, type VoiceProviderHealthSummary, type VoiceProviderHealthSummaryOptions } from './providerHealth';
|
|
3
|
+
export type VoiceProviderCapabilityKind = 'llm' | 'stt' | 'tts' | 'custom';
|
|
4
|
+
export type VoiceProviderCapabilityDefinition<TProvider extends string = string> = {
|
|
5
|
+
configured?: boolean;
|
|
6
|
+
description?: string;
|
|
7
|
+
features?: string[];
|
|
8
|
+
kind: VoiceProviderCapabilityKind;
|
|
9
|
+
label?: string;
|
|
10
|
+
model?: string;
|
|
11
|
+
provider: TProvider;
|
|
12
|
+
selected?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type VoiceProviderCapabilitySummary<TProvider extends string = string> = VoiceProviderCapabilityDefinition<TProvider> & {
|
|
15
|
+
configured: boolean;
|
|
16
|
+
health?: VoiceProviderHealthSummary<TProvider>;
|
|
17
|
+
status: VoiceProviderHealthStatus | 'selected' | 'unconfigured';
|
|
18
|
+
};
|
|
19
|
+
export type VoiceProviderCapabilityReport<TProvider extends string = string> = {
|
|
20
|
+
capabilities: VoiceProviderCapabilitySummary<TProvider>[];
|
|
21
|
+
checkedAt: number;
|
|
22
|
+
configured: number;
|
|
23
|
+
selected: number;
|
|
24
|
+
total: number;
|
|
25
|
+
unconfigured: number;
|
|
26
|
+
};
|
|
27
|
+
export type VoiceProviderCapabilityOptions<TProvider extends string = string> = VoiceProviderHealthSummaryOptions<TProvider> & {
|
|
28
|
+
features?: Partial<Record<TProvider, string[]>>;
|
|
29
|
+
llmProviders?: readonly TProvider[];
|
|
30
|
+
models?: Partial<Record<TProvider, string>>;
|
|
31
|
+
providers?: readonly VoiceProviderCapabilityDefinition<TProvider>[];
|
|
32
|
+
selected?: Partial<Record<VoiceProviderCapabilityKind, TProvider>>;
|
|
33
|
+
sttProviders?: readonly TProvider[];
|
|
34
|
+
ttsProviders?: readonly TProvider[];
|
|
35
|
+
};
|
|
36
|
+
export type VoiceProviderCapabilityHandlerOptions<TProvider extends string = string> = VoiceProviderCapabilityOptions<TProvider>;
|
|
37
|
+
export type VoiceProviderCapabilityHTMLHandlerOptions<TProvider extends string = string> = VoiceProviderCapabilityHandlerOptions<TProvider> & {
|
|
38
|
+
headers?: HeadersInit;
|
|
39
|
+
render?: (report: VoiceProviderCapabilityReport<TProvider>) => string | Promise<string>;
|
|
40
|
+
title?: string;
|
|
41
|
+
};
|
|
42
|
+
export type VoiceProviderCapabilityRoutesOptions<TProvider extends string = string> = VoiceProviderCapabilityHTMLHandlerOptions<TProvider> & {
|
|
43
|
+
htmlPath?: false | string;
|
|
44
|
+
name?: string;
|
|
45
|
+
path?: string;
|
|
46
|
+
};
|
|
47
|
+
export declare const summarizeVoiceProviderCapabilities: <TProvider extends string = string>(options: VoiceProviderCapabilityOptions<TProvider>) => Promise<VoiceProviderCapabilityReport<TProvider>>;
|
|
48
|
+
export declare const renderVoiceProviderCapabilityHTML: <TProvider extends string = string>(report: VoiceProviderCapabilityReport<TProvider>, options?: {
|
|
49
|
+
title?: string;
|
|
50
|
+
}) => string;
|
|
51
|
+
export declare const createVoiceProviderCapabilityJSONHandler: <TProvider extends string = string>(options: VoiceProviderCapabilityHandlerOptions<TProvider>) => () => Promise<VoiceProviderCapabilityReport<TProvider>>;
|
|
52
|
+
export declare const createVoiceProviderCapabilityHTMLHandler: <TProvider extends string = string>(options: VoiceProviderCapabilityHTMLHandlerOptions<TProvider>) => () => Promise<Response>;
|
|
53
|
+
export declare const createVoiceProviderCapabilityRoutes: <TProvider extends string = string>(options: VoiceProviderCapabilityRoutesOptions<TProvider>) => Elysia<"", {
|
|
54
|
+
decorator: {};
|
|
55
|
+
store: {};
|
|
56
|
+
derive: {};
|
|
57
|
+
resolve: {};
|
|
58
|
+
}, {
|
|
59
|
+
typebox: {};
|
|
60
|
+
error: {};
|
|
61
|
+
}, {
|
|
62
|
+
schema: {};
|
|
63
|
+
standaloneSchema: {};
|
|
64
|
+
macro: {};
|
|
65
|
+
macroFn: {};
|
|
66
|
+
parser: {};
|
|
67
|
+
response: {};
|
|
68
|
+
}, {
|
|
69
|
+
[x: string]: {
|
|
70
|
+
get: {
|
|
71
|
+
body: unknown;
|
|
72
|
+
params: {};
|
|
73
|
+
query: unknown;
|
|
74
|
+
headers: unknown;
|
|
75
|
+
response: {
|
|
76
|
+
200: VoiceProviderCapabilityReport<TProvider>;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
}, {
|
|
81
|
+
derive: {};
|
|
82
|
+
resolve: {};
|
|
83
|
+
schema: {};
|
|
84
|
+
standaloneSchema: {};
|
|
85
|
+
response: {};
|
|
86
|
+
}, {
|
|
87
|
+
derive: {};
|
|
88
|
+
resolve: {};
|
|
89
|
+
schema: {};
|
|
90
|
+
standaloneSchema: {};
|
|
91
|
+
response: {};
|
|
92
|
+
}>;
|
package/dist/providerHealth.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type VoiceProviderHealthSummary<TProvider extends string = string> = {
|
|
|
15
15
|
status: VoiceProviderHealthStatus;
|
|
16
16
|
suppressionRemainingMs?: number;
|
|
17
17
|
suppressedUntil?: number;
|
|
18
|
+
timeoutCount: number;
|
|
18
19
|
};
|
|
19
20
|
export type VoiceProviderHealthSummaryOptions<TProvider extends string = string> = {
|
|
20
21
|
events?: StoredVoiceTraceEvent[];
|
|
@@ -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>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Elysia } from 'elysia';
|
|
2
|
+
import { type StoredVoiceTraceEvent, type VoiceTraceEventStore } from './trace';
|
|
3
|
+
export type VoiceQualityStatus = 'pass' | 'fail';
|
|
4
|
+
export type VoiceQualityThresholds = {
|
|
5
|
+
maxDuplicateTurnRate?: number;
|
|
6
|
+
maxEmptyTurnRate?: number;
|
|
7
|
+
maxHandoffFailureRate?: number;
|
|
8
|
+
maxMissingAssistantReplyRate?: number;
|
|
9
|
+
maxProviderAverageLatencyMs?: number;
|
|
10
|
+
maxProviderErrorRate?: number;
|
|
11
|
+
maxProviderFallbackRate?: number;
|
|
12
|
+
maxProviderTimeoutRate?: number;
|
|
13
|
+
};
|
|
14
|
+
export type VoiceQualityMetric = {
|
|
15
|
+
actual: number;
|
|
16
|
+
label: string;
|
|
17
|
+
pass: boolean;
|
|
18
|
+
threshold: number;
|
|
19
|
+
unit: 'count' | 'ms' | 'rate';
|
|
20
|
+
};
|
|
21
|
+
export type VoiceQualityReport = {
|
|
22
|
+
checkedAt: number;
|
|
23
|
+
eventCount: number;
|
|
24
|
+
metrics: Record<string, VoiceQualityMetric>;
|
|
25
|
+
status: VoiceQualityStatus;
|
|
26
|
+
thresholds: Required<VoiceQualityThresholds>;
|
|
27
|
+
};
|
|
28
|
+
export type VoiceQualityLink = {
|
|
29
|
+
href: string;
|
|
30
|
+
label: string;
|
|
31
|
+
};
|
|
32
|
+
export type VoiceQualityRoutesOptions = {
|
|
33
|
+
events?: StoredVoiceTraceEvent[];
|
|
34
|
+
headers?: HeadersInit;
|
|
35
|
+
links?: VoiceQualityLink[];
|
|
36
|
+
name?: string;
|
|
37
|
+
path?: string;
|
|
38
|
+
store?: VoiceTraceEventStore;
|
|
39
|
+
thresholds?: VoiceQualityThresholds;
|
|
40
|
+
};
|
|
41
|
+
export declare const evaluateVoiceQuality: (input: {
|
|
42
|
+
events?: StoredVoiceTraceEvent[];
|
|
43
|
+
store?: VoiceTraceEventStore;
|
|
44
|
+
thresholds?: VoiceQualityThresholds;
|
|
45
|
+
}) => Promise<VoiceQualityReport>;
|
|
46
|
+
export declare const renderVoiceQualityHTML: (report: VoiceQualityReport, options?: {
|
|
47
|
+
links?: VoiceQualityLink[];
|
|
48
|
+
}) => string;
|
|
49
|
+
export declare const createVoiceQualityRoutes: (options: VoiceQualityRoutesOptions) => Elysia<"", {
|
|
50
|
+
decorator: {};
|
|
51
|
+
store: {};
|
|
52
|
+
derive: {};
|
|
53
|
+
resolve: {};
|
|
54
|
+
}, {
|
|
55
|
+
typebox: {};
|
|
56
|
+
error: {};
|
|
57
|
+
}, {
|
|
58
|
+
schema: {};
|
|
59
|
+
standaloneSchema: {};
|
|
60
|
+
macro: {};
|
|
61
|
+
macroFn: {};
|
|
62
|
+
parser: {};
|
|
63
|
+
response: {};
|
|
64
|
+
}, {}, {
|
|
65
|
+
derive: {};
|
|
66
|
+
resolve: {};
|
|
67
|
+
schema: {};
|
|
68
|
+
standaloneSchema: {};
|
|
69
|
+
response: {};
|
|
70
|
+
}, {
|
|
71
|
+
derive: {};
|
|
72
|
+
resolve: {};
|
|
73
|
+
schema: {};
|
|
74
|
+
standaloneSchema: {};
|
|
75
|
+
response: {};
|
|
76
|
+
}>;
|