@absolutejs/voice 0.0.22-beta.292 → 0.0.22-beta.294
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 +78 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +10954 -10447
- package/dist/productionReadiness.d.ts +15 -0
- package/dist/providerDecisionTraces.d.ts +122 -0
- package/dist/providerOrchestration.d.ts +109 -0
- package/dist/trace.d.ts +1 -1
- package/dist/vue/useVoiceReadinessFailures.d.ts +20 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3941,6 +3941,55 @@ const summaryModel = createVoiceProviderRouter({
|
|
|
3941
3941
|
});
|
|
3942
3942
|
```
|
|
3943
3943
|
|
|
3944
|
+
Mount `createVoiceProviderOrchestrationRoutes(...)` and pass the report into production readiness when provider policy should be deploy-gated. This proves that required surfaces have enough providers, explicit fallback order, circuit-breaker settings, timeout budgets, and cost/latency/quality bounds.
|
|
3945
|
+
|
|
3946
|
+
```ts
|
|
3947
|
+
import {
|
|
3948
|
+
buildVoiceProviderOrchestrationReport,
|
|
3949
|
+
createVoiceProviderOrchestrationRoutes,
|
|
3950
|
+
createVoiceProductionReadinessRoutes
|
|
3951
|
+
} from '@absolutejs/voice';
|
|
3952
|
+
|
|
3953
|
+
const providerOrchestration = () =>
|
|
3954
|
+
buildVoiceProviderOrchestrationReport({
|
|
3955
|
+
profile: providerProfile,
|
|
3956
|
+
requirements: {
|
|
3957
|
+
'live-call': {
|
|
3958
|
+
minProviders: 2,
|
|
3959
|
+
requireBudgetPolicy: true,
|
|
3960
|
+
requireCircuitBreaker: true,
|
|
3961
|
+
requireFallback: true,
|
|
3962
|
+
requireTimeoutBudget: true
|
|
3963
|
+
}
|
|
3964
|
+
}
|
|
3965
|
+
});
|
|
3966
|
+
|
|
3967
|
+
app
|
|
3968
|
+
.use(
|
|
3969
|
+
createVoiceProviderOrchestrationRoutes({
|
|
3970
|
+
profile: providerProfile,
|
|
3971
|
+
requirements: {
|
|
3972
|
+
'live-call': {
|
|
3973
|
+
minProviders: 2,
|
|
3974
|
+
requireBudgetPolicy: true,
|
|
3975
|
+
requireCircuitBreaker: true,
|
|
3976
|
+
requireFallback: true,
|
|
3977
|
+
requireTimeoutBudget: true
|
|
3978
|
+
}
|
|
3979
|
+
}
|
|
3980
|
+
})
|
|
3981
|
+
)
|
|
3982
|
+
.use(
|
|
3983
|
+
createVoiceProductionReadinessRoutes({
|
|
3984
|
+
store: runtime.traces,
|
|
3985
|
+
providerOrchestration,
|
|
3986
|
+
links: {
|
|
3987
|
+
providerOrchestration: '/voice/provider-orchestration'
|
|
3988
|
+
}
|
|
3989
|
+
})
|
|
3990
|
+
);
|
|
3991
|
+
```
|
|
3992
|
+
|
|
3944
3993
|
Budget filters are strict. If you pass `maxCost`, `maxLatencyMs`, or `minQuality`, providers outside those limits are removed before ranking, even if they were selected by the request.
|
|
3945
3994
|
|
|
3946
3995
|
```ts
|
|
@@ -4040,6 +4089,35 @@ assertVoiceProviderSloEvidence(providerReport, {
|
|
|
4040
4089
|
});
|
|
4041
4090
|
```
|
|
4042
4091
|
|
|
4092
|
+
Use `createVoiceProviderDecisionTraceEvent(...)` and `createVoiceProviderDecisionTraceRoutes(...)` when you need runtime proof for why a provider won, failed, was skipped, or recovered by fallback. This is the per-call decision trail behind provider orchestration: it can read explicit `provider.decision` trace events or normalize existing provider routing events.
|
|
4093
|
+
|
|
4094
|
+
```ts
|
|
4095
|
+
import {
|
|
4096
|
+
createVoiceProviderDecisionTraceEvent,
|
|
4097
|
+
createVoiceProviderDecisionTraceRoutes
|
|
4098
|
+
} from '@absolutejs/voice';
|
|
4099
|
+
|
|
4100
|
+
await traces.append(
|
|
4101
|
+
createVoiceProviderDecisionTraceEvent({
|
|
4102
|
+
provider: 'deepgram',
|
|
4103
|
+
selectedProvider: 'assemblyai',
|
|
4104
|
+
fallbackProvider: 'assemblyai',
|
|
4105
|
+
status: 'fallback',
|
|
4106
|
+
surface: 'live-stt',
|
|
4107
|
+
reason: 'Deepgram timed out, AssemblyAI recovered the live STT turn.'
|
|
4108
|
+
})
|
|
4109
|
+
);
|
|
4110
|
+
|
|
4111
|
+
app.use(
|
|
4112
|
+
createVoiceProviderDecisionTraceRoutes({
|
|
4113
|
+
store: traces,
|
|
4114
|
+
requiredSurfaces: ['live-call', 'live-stt', 'telephony-tts']
|
|
4115
|
+
})
|
|
4116
|
+
);
|
|
4117
|
+
```
|
|
4118
|
+
|
|
4119
|
+
The routes expose JSON at `/api/voice/provider-decisions`, HTML at `/voice/provider-decisions`, and Markdown at `/voice/provider-decisions.md`. Use this next to provider SLOs when a customer asks not just "is fallback working?" but "why did the system choose this provider for this call?".
|
|
4120
|
+
|
|
4043
4121
|
Use `createVoiceProviderContractMatrixPreset(...)` when you want readiness proof for the whole provider stack without hand-writing every LLM, STT, and TTS contract row. The preset stays primitive: you still own provider lists, selected providers, latency budgets, env, capabilities, and route mounting.
|
|
4044
4122
|
|
|
4045
4123
|
```ts
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export { buildVoiceOpsActionHistoryReport, createVoiceOpsActionAuditRoutes, reco
|
|
|
17
17
|
export { assertVoicePlatformCoverage, buildVoicePlatformCoverageSummary, createVoicePlatformCoverageRoutes, evaluateVoicePlatformCoverage } from './platformCoverage';
|
|
18
18
|
export type { VoicePlatformCoverageAssertionInput, VoicePlatformCoverageAssertionReport, VoicePlatformCoverageEvidence, VoicePlatformCoverageRoutesOptions, VoicePlatformCoverageStatus, VoicePlatformCoverageSummary, VoicePlatformCoverageSummaryInput, VoicePlatformCoverageSurface } from './platformCoverage';
|
|
19
19
|
export { assertVoiceProofTrendEvidence, buildEmptyVoiceProofTrendReport, buildVoiceProofTrendReport, createVoiceProofTrendRoutes, DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS, evaluateVoiceProofTrendEvidence, formatVoiceProofTrendAge, normalizeVoiceProofTrendReport, readVoiceProofTrendReportFile } from './proofTrends';
|
|
20
|
+
export { buildVoiceProviderDecisionTraceReport, createVoiceProviderDecisionTraceEvent, createVoiceProviderDecisionTraceRoutes, listVoiceProviderDecisionTraces, renderVoiceProviderDecisionTraceHTML, renderVoiceProviderDecisionTraceMarkdown } from './providerDecisionTraces';
|
|
21
|
+
export type { VoiceProviderDecisionStatus, VoiceProviderDecisionSurfaceReport, VoiceProviderDecisionTrace, VoiceProviderDecisionTraceInput, VoiceProviderDecisionTraceIssue, VoiceProviderDecisionTraceReport, VoiceProviderDecisionTraceReportOptions, VoiceProviderDecisionTraceRoutesOptions } from './providerDecisionTraces';
|
|
20
22
|
export type { VoiceProofTrendAssertionInput, VoiceProofTrendAssertionReport, VoiceProofTrendCycle, VoiceProofTrendReport, VoiceProofTrendReportInput, VoiceProofTrendRoutesOptions, VoiceProofTrendStatus, VoiceProofTrendSummary } from './proofTrends';
|
|
21
23
|
export { assertVoiceSloCalibration, buildVoiceSloCalibrationReport, buildVoiceSloReadinessThresholdReport, createVoiceSloReadinessThresholdOptions, createVoiceSloReadinessThresholdRoutes, createVoiceSloThresholdProfile, createVoiceSloCalibrationRoutes, renderVoiceSloCalibrationMarkdown, renderVoiceSloReadinessThresholdHTML, renderVoiceSloReadinessThresholdMarkdown } from './sloCalibration';
|
|
22
24
|
export type { VoiceSloCalibrationMetricKey, VoiceSloCalibrationOptions, VoiceSloCalibrationReport, VoiceSloCalibrationRoutesOptions, VoiceSloCalibrationSample, VoiceSloCalibrationStatus, VoiceSloCalibrationThreshold, VoiceSloCalibrationThresholds, VoiceSloReadinessThresholdReport, VoiceSloReadinessThresholdReportOptions, VoiceSloReadinessThresholdOptions, VoiceSloReadinessThresholdRoutesOptions, VoiceSloThresholdProfile } from './sloCalibration';
|
|
@@ -51,6 +53,7 @@ export { createOpenAIRealtimeAdapter } from './openaiRealtime';
|
|
|
51
53
|
export { createOpenAIVoiceTTS } from './openaiTTS';
|
|
52
54
|
export { createVoiceProviderHealthHTMLHandler, createVoiceProviderHealthJSONHandler, createVoiceProviderHealthRoutes, renderVoiceProviderHealthHTML, summarizeVoiceProviderHealth } from './providerHealth';
|
|
53
55
|
export { createVoiceProviderCapabilityHTMLHandler, createVoiceProviderCapabilityJSONHandler, createVoiceProviderCapabilityRoutes, renderVoiceProviderCapabilityHTML, summarizeVoiceProviderCapabilities } from './providerCapabilities';
|
|
56
|
+
export { buildVoiceProviderOrchestrationReport, createVoiceProviderOrchestrationRoutes, renderVoiceProviderOrchestrationHTML, renderVoiceProviderOrchestrationMarkdown } from './providerOrchestration';
|
|
54
57
|
export { assertVoiceProviderRoutingContractEvidence, assertVoiceProviderRoutingContract, evaluateVoiceProviderRoutingContractEvidence, runVoiceProviderRoutingContract } from './providerRoutingContract';
|
|
55
58
|
export { assertVoiceProviderSloEvidence, buildVoiceProviderSloReport, createVoiceProviderSloRoutes, evaluateVoiceProviderSloEvidence, renderVoiceProviderSloHTML, renderVoiceProviderSloMarkdown } from './providerSlo';
|
|
56
59
|
export { createVoicePhoneAgentProductionSmokeHTMLHandler, createVoicePhoneAgentProductionSmokeJSONHandler, createVoicePhoneAgentProductionSmokeRoutes, renderVoicePhoneAgentProductionSmokeHTML, runVoicePhoneAgentProductionSmokeContract } from './phoneAgentProductionSmoke';
|
|
@@ -111,6 +114,7 @@ export type { OpenAIVoiceTTSOptions, OpenAIVoiceTTSVoice } from './openaiTTS';
|
|
|
111
114
|
export type { OpenAIRealtimeAdapterOptions, OpenAIRealtimeModel, OpenAIRealtimeNoiseReduction, OpenAIRealtimeResponseMode, OpenAIRealtimeTranscriptionModel, OpenAIRealtimeVoice } from './openaiRealtime';
|
|
112
115
|
export type { VoiceProviderHealthStatus, VoiceProviderHealthSummary, VoiceProviderHealthSummaryOptions } from './providerHealth';
|
|
113
116
|
export type { VoiceProviderCapabilityDefinition, VoiceProviderCapabilityHandlerOptions, VoiceProviderCapabilityHTMLHandlerOptions, VoiceProviderCapabilityKind, VoiceProviderCapabilityOptions, VoiceProviderCapabilityReport, VoiceProviderCapabilityRoutesOptions, VoiceProviderCapabilitySummary } from './providerCapabilities';
|
|
117
|
+
export type { VoiceProviderOrchestrationIssue, VoiceProviderOrchestrationReport, VoiceProviderOrchestrationReportOptions, VoiceProviderOrchestrationRequirement, VoiceProviderOrchestrationRoutesOptions, VoiceProviderOrchestrationStatus, VoiceProviderOrchestrationSurfaceReport } from './providerOrchestration';
|
|
114
118
|
export type { VoiceProviderRoutingContractAssertionInput, VoiceProviderRoutingContractAssertionReport, VoiceProviderRoutingContractDefinition, VoiceProviderRoutingContractIssue, VoiceProviderRoutingContractReport, VoiceProviderRoutingContractRunOptions, VoiceProviderRoutingExpectation, VoiceProviderRoutingStatus } from './providerRoutingContract';
|
|
115
119
|
export type { VoiceProviderSloAssertionInput, VoiceProviderSloAssertionReport, VoiceProviderSloIssue, VoiceProviderSloKindReport, VoiceProviderSloMetric, VoiceProviderSloReport, VoiceProviderSloReportOptions, VoiceProviderSloRoutesOptions, VoiceProviderSloSessionReport, VoiceProviderSloStatus, VoiceProviderSloThresholdConfig, VoiceProviderSloThresholds } from './providerSlo';
|
|
116
120
|
export type { VoiceTurnLatencyHTMLHandlerOptions, VoiceTurnLatencyItem, VoiceTurnLatencyOptions, VoiceTurnLatencyReport, VoiceTurnLatencyRoutesOptions, VoiceTurnLatencyStage, VoiceTurnLatencyStatus } from './turnLatency';
|