@absolutejs/voice 0.0.22-beta.316 → 0.0.22-beta.318
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/dist/index.js
CHANGED
|
@@ -11914,6 +11914,9 @@ var buildVoiceMediaPipelineReport = (options = {}) => {
|
|
|
11914
11914
|
processorGraph: options.processorGraph,
|
|
11915
11915
|
quality,
|
|
11916
11916
|
resampling,
|
|
11917
|
+
sessionIds: [
|
|
11918
|
+
...new Set(frames.map((frame) => frame.sessionId).filter((sessionId) => typeof sessionId === "string"))
|
|
11919
|
+
].sort(),
|
|
11917
11920
|
status,
|
|
11918
11921
|
surface: options.surface ?? "voice-media-pipeline",
|
|
11919
11922
|
transport: options.transport,
|
|
@@ -29033,11 +29036,13 @@ var readinessGateCodes = {
|
|
|
29033
29036
|
"Audit evidence": "voice.readiness.audit_evidence",
|
|
29034
29037
|
"Audit sink delivery": "voice.readiness.audit_sink_delivery",
|
|
29035
29038
|
"Barge-in interruption proof": "voice.readiness.barge_in_interruption",
|
|
29039
|
+
"Browser media transport": "voice.readiness.browser_media_transport",
|
|
29036
29040
|
"Campaign readiness proof": "voice.readiness.campaign_readiness",
|
|
29037
29041
|
"Carrier readiness": "voice.readiness.carrier_readiness",
|
|
29038
29042
|
"Delivery runtime": "voice.readiness.delivery_runtime",
|
|
29039
29043
|
"Handoff delivery": "voice.readiness.handoff_delivery",
|
|
29040
29044
|
"Live latency proof": "voice.readiness.live_latency",
|
|
29045
|
+
"Media pipeline quality": "voice.readiness.media_pipeline_quality",
|
|
29041
29046
|
"Operations records": "voice.readiness.operations_records",
|
|
29042
29047
|
"Operator action history": "voice.readiness.operator_action_history",
|
|
29043
29048
|
"Ops recovery": "voice.readiness.ops_recovery",
|
|
@@ -29211,6 +29216,18 @@ var resolveMonitoringNotifierDelivery = async (options, input) => {
|
|
|
29211
29216
|
}
|
|
29212
29217
|
return typeof options.monitoringNotifierDelivery === "function" ? await options.monitoringNotifierDelivery(input) : options.monitoringNotifierDelivery;
|
|
29213
29218
|
};
|
|
29219
|
+
var resolveMediaPipeline = async (options, input) => {
|
|
29220
|
+
if (options.mediaPipeline === false || options.mediaPipeline === undefined) {
|
|
29221
|
+
return;
|
|
29222
|
+
}
|
|
29223
|
+
return typeof options.mediaPipeline === "function" ? await options.mediaPipeline(input) : options.mediaPipeline;
|
|
29224
|
+
};
|
|
29225
|
+
var resolveBrowserMedia = async (options, input) => {
|
|
29226
|
+
if (options.browserMedia === false || options.browserMedia === undefined) {
|
|
29227
|
+
return;
|
|
29228
|
+
}
|
|
29229
|
+
return typeof options.browserMedia === "function" ? await options.browserMedia(input) : options.browserMedia;
|
|
29230
|
+
};
|
|
29214
29231
|
var isVoiceTelephonyWebhookSecurityReport = (value) => typeof value.generatedAt === "number" && Array.isArray(value.providers) && typeof value.status === "string";
|
|
29215
29232
|
var resolveTelephonyWebhookSecurity = async (options, input) => {
|
|
29216
29233
|
if (options.telephonyWebhookSecurity === false || options.telephonyWebhookSecurity === undefined) {
|
|
@@ -29546,6 +29563,13 @@ var buildOperationsRecordLinks = (input) => {
|
|
|
29546
29563
|
sessionId: event.sessionId,
|
|
29547
29564
|
status: latencyMs > input.liveLatencyFailAfterMs ? "fail" : "warn"
|
|
29548
29565
|
}));
|
|
29566
|
+
const mediaQuality = input.mediaPipeline && input.mediaPipeline.status !== "pass" ? input.mediaPipeline.sessionIds.map((sessionId) => ({
|
|
29567
|
+
detail: `${input.mediaPipeline?.quality.issues.length ?? 0} media quality issue(s)`,
|
|
29568
|
+
href: voiceOperationsRecordHref(input.base, sessionId),
|
|
29569
|
+
label: "Open media quality operations record",
|
|
29570
|
+
sessionId,
|
|
29571
|
+
status: "fail"
|
|
29572
|
+
})) : [];
|
|
29549
29573
|
return {
|
|
29550
29574
|
failedSessions: input.failedSessionIds.map((sessionId) => ({
|
|
29551
29575
|
href: voiceOperationsRecordHref(input.base, sessionId),
|
|
@@ -29554,6 +29578,7 @@ var buildOperationsRecordLinks = (input) => {
|
|
|
29554
29578
|
status: failedSessionSet.has(sessionId) ? "fail" : "warn"
|
|
29555
29579
|
})),
|
|
29556
29580
|
failingLatency,
|
|
29581
|
+
mediaQuality,
|
|
29557
29582
|
providerErrors
|
|
29558
29583
|
};
|
|
29559
29584
|
};
|
|
@@ -29586,6 +29611,8 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
29586
29611
|
phoneAgentSmokes,
|
|
29587
29612
|
monitoring,
|
|
29588
29613
|
monitoringNotifierDelivery,
|
|
29614
|
+
mediaPipeline,
|
|
29615
|
+
browserMedia,
|
|
29589
29616
|
telephonyWebhookSecurity,
|
|
29590
29617
|
reconnectContracts,
|
|
29591
29618
|
bargeInReports,
|
|
@@ -29628,6 +29655,8 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
29628
29655
|
resolvePhoneAgentSmokes(options, { query, request }),
|
|
29629
29656
|
resolveMonitoring(options, { query, request }),
|
|
29630
29657
|
resolveMonitoringNotifierDelivery(options, { query, request }),
|
|
29658
|
+
resolveMediaPipeline(options, { query, request }),
|
|
29659
|
+
resolveBrowserMedia(options, { query, request }),
|
|
29631
29660
|
resolveTelephonyWebhookSecurity(options, { query, request }),
|
|
29632
29661
|
resolveReconnectContracts(options, { query, request }),
|
|
29633
29662
|
resolveBargeInReports(options, { query, request }),
|
|
@@ -29648,7 +29677,8 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
29648
29677
|
failedSessionIds: failedSessionItems.map((session) => session.sessionId),
|
|
29649
29678
|
liveLatencyFailAfterMs: options.liveLatencyFailAfterMs ?? 3200,
|
|
29650
29679
|
liveLatencyMaxAgeMs: options.liveLatencyMaxAgeMs,
|
|
29651
|
-
liveLatencyWarnAfterMs: options.liveLatencyWarnAfterMs ?? 1800
|
|
29680
|
+
liveLatencyWarnAfterMs: options.liveLatencyWarnAfterMs ?? 1800,
|
|
29681
|
+
mediaPipeline
|
|
29652
29682
|
});
|
|
29653
29683
|
const checks = [
|
|
29654
29684
|
{
|
|
@@ -29803,6 +29833,28 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
29803
29833
|
const metrics = providerSlo?.kinds[issue.kind]?.metrics;
|
|
29804
29834
|
return Object.values(metrics ?? {}).find((metric) => metric.label === issue.label || issue.code.endsWith(metric.label.toLowerCase().replace(/[^a-z0-9]+/g, "_")));
|
|
29805
29835
|
};
|
|
29836
|
+
const mediaPipelineSummary = mediaPipeline ? {
|
|
29837
|
+
assistantAudioFrames: mediaPipeline.quality.assistantAudioFrames,
|
|
29838
|
+
backpressureEvents: mediaPipeline.quality.backpressureEvents,
|
|
29839
|
+
gapCount: mediaPipeline.quality.gapCount,
|
|
29840
|
+
inputAudioFrames: mediaPipeline.quality.inputAudioFrames,
|
|
29841
|
+
issues: mediaPipeline.calibration.issues.length + mediaPipeline.interruption.issues.length + mediaPipeline.quality.issues.length,
|
|
29842
|
+
jitterMs: mediaPipeline.quality.jitterMs,
|
|
29843
|
+
speechRatio: mediaPipeline.quality.speechRatio,
|
|
29844
|
+
status: mediaPipeline.status === "pass" ? "pass" : "fail",
|
|
29845
|
+
timestampDriftMs: mediaPipeline.quality.timestampDriftMs
|
|
29846
|
+
} : undefined;
|
|
29847
|
+
const browserMediaSummary = browserMedia ? {
|
|
29848
|
+
activeCandidatePairs: browserMedia.activeCandidatePairs,
|
|
29849
|
+
bytesReceived: browserMedia.bytesReceived,
|
|
29850
|
+
bytesSent: browserMedia.bytesSent,
|
|
29851
|
+
issues: browserMedia.issues.length,
|
|
29852
|
+
jitterMs: browserMedia.jitterMs,
|
|
29853
|
+
liveAudioTracks: browserMedia.liveAudioTracks,
|
|
29854
|
+
packetLossRatio: browserMedia.packetLossRatio,
|
|
29855
|
+
roundTripTimeMs: browserMedia.roundTripTimeMs,
|
|
29856
|
+
status: browserMedia.status === "pass" ? "pass" : "fail"
|
|
29857
|
+
} : undefined;
|
|
29806
29858
|
checks.push({
|
|
29807
29859
|
detail: liveLatency.total === 0 ? "No browser live-latency measurements are recorded yet." : liveLatency.status === "pass" ? `Live browser turn latency averages ${liveLatency.averageLatencyMs}ms.` : `${liveLatency.failed} failed and ${liveLatency.warnings} warned live-latency measurement(s).`,
|
|
29808
29860
|
href: firstOperationsRecordHref(operationsRecords.failingLatency) ?? options.links?.liveLatency ?? "/traces",
|
|
@@ -29834,6 +29886,67 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
29834
29886
|
...calibratedThresholdActions()
|
|
29835
29887
|
]
|
|
29836
29888
|
});
|
|
29889
|
+
if (mediaPipeline && mediaPipelineSummary) {
|
|
29890
|
+
const firstIssue = [
|
|
29891
|
+
...mediaPipeline.quality.issues,
|
|
29892
|
+
...mediaPipeline.calibration.issues,
|
|
29893
|
+
...mediaPipeline.interruption.issues
|
|
29894
|
+
][0];
|
|
29895
|
+
checks.push({
|
|
29896
|
+
detail: mediaPipelineSummary.status === "pass" ? `Media pipeline quality is passing with ${mediaPipelineSummary.inputAudioFrames} input frame(s), ${mediaPipelineSummary.assistantAudioFrames} assistant frame(s), ${mediaPipelineSummary.gapCount} gap(s), ${String(mediaPipelineSummary.jitterMs ?? "n/a")}ms jitter, and ${mediaPipelineSummary.speechRatio} speech ratio.` : firstIssue?.message ?? `${mediaPipelineSummary.issues} media pipeline issue(s) need review.`,
|
|
29897
|
+
href: firstOperationsRecordHref(operationsRecords.mediaQuality) ?? options.links?.mediaPipeline ?? "/voice/media-pipeline",
|
|
29898
|
+
label: "Media pipeline quality",
|
|
29899
|
+
proofSource: proofSource("mediaPipeline", "mediaQuality"),
|
|
29900
|
+
gateExplanation: mediaPipelineSummary.status === "pass" ? undefined : {
|
|
29901
|
+
evidenceHref: firstOperationsRecordHref(operationsRecords.mediaQuality) ?? options.links?.mediaPipeline ?? "/voice/media-pipeline",
|
|
29902
|
+
observed: firstIssue?.code ?? `${mediaPipelineSummary.issues} issue(s)`,
|
|
29903
|
+
remediation: "Inspect media pipeline quality, fix excessive gaps, jitter, drift, speech-ratio, or backpressure issues, then rerun readiness proof.",
|
|
29904
|
+
thresholdLabel: "Media quality report status",
|
|
29905
|
+
unit: "status"
|
|
29906
|
+
},
|
|
29907
|
+
status: mediaPipelineSummary.status,
|
|
29908
|
+
value: mediaPipelineSummary.status === "pass" ? `${mediaPipelineSummary.gapCount} gaps` : `${mediaPipelineSummary.issues} issue(s)`,
|
|
29909
|
+
actions: mediaPipelineSummary.status === "pass" ? [] : [
|
|
29910
|
+
...firstOperationsRecordHref(operationsRecords.mediaQuality) ? [
|
|
29911
|
+
{
|
|
29912
|
+
description: "Open the exact call/session operations record for the first media quality issue.",
|
|
29913
|
+
href: firstOperationsRecordHref(operationsRecords.mediaQuality),
|
|
29914
|
+
label: "Open media operations record"
|
|
29915
|
+
}
|
|
29916
|
+
] : [],
|
|
29917
|
+
{
|
|
29918
|
+
description: "Open media pipeline proof and inspect quality, calibration, VAD, interruption, transport, and processor-graph evidence.",
|
|
29919
|
+
href: options.links?.mediaPipeline ?? "/voice/media-pipeline",
|
|
29920
|
+
label: "Open media pipeline proof"
|
|
29921
|
+
}
|
|
29922
|
+
]
|
|
29923
|
+
});
|
|
29924
|
+
}
|
|
29925
|
+
if (browserMedia && browserMediaSummary) {
|
|
29926
|
+
const firstIssue = browserMedia.issues[0];
|
|
29927
|
+
checks.push({
|
|
29928
|
+
detail: browserMediaSummary.status === "pass" ? `Browser media transport is passing with ${browserMediaSummary.activeCandidatePairs} active candidate pair(s), ${browserMediaSummary.liveAudioTracks} live audio track(s), ${String(browserMediaSummary.roundTripTimeMs ?? "n/a")}ms RTT, ${String(browserMediaSummary.jitterMs ?? "n/a")}ms jitter, and ${browserMediaSummary.packetLossRatio} packet loss ratio.` : firstIssue?.message ?? `${browserMediaSummary.issues} browser media transport issue(s) need review.`,
|
|
29929
|
+
href: options.links?.browserMedia ?? "/voice/browser-media",
|
|
29930
|
+
label: "Browser media transport",
|
|
29931
|
+
proofSource: proofSource("browserMedia", "webrtcStats"),
|
|
29932
|
+
gateExplanation: browserMediaSummary.status === "pass" ? undefined : {
|
|
29933
|
+
evidenceHref: options.links?.browserMedia ?? "/voice/browser-media",
|
|
29934
|
+
observed: firstIssue?.code ?? `${browserMediaSummary.issues} issue(s)`,
|
|
29935
|
+
remediation: "Inspect browser WebRTC media stats, fix packet loss, RTT, jitter, candidate-pair, or audio-track issues, then rerun readiness proof.",
|
|
29936
|
+
thresholdLabel: "Browser media transport status",
|
|
29937
|
+
unit: "status"
|
|
29938
|
+
},
|
|
29939
|
+
status: browserMediaSummary.status,
|
|
29940
|
+
value: browserMediaSummary.status === "pass" ? `${browserMediaSummary.packetLossRatio} loss` : `${browserMediaSummary.issues} issue(s)`,
|
|
29941
|
+
actions: browserMediaSummary.status === "pass" ? [] : [
|
|
29942
|
+
{
|
|
29943
|
+
description: "Open browser media transport proof and inspect WebRTC packet loss, RTT, jitter, bytes, candidate-pair, and audio-track evidence.",
|
|
29944
|
+
href: options.links?.browserMedia ?? "/voice/browser-media",
|
|
29945
|
+
label: "Open browser media proof"
|
|
29946
|
+
}
|
|
29947
|
+
]
|
|
29948
|
+
});
|
|
29949
|
+
}
|
|
29837
29950
|
const carrierSummary = carriers ? {
|
|
29838
29951
|
failing: carriers.summary.failing,
|
|
29839
29952
|
providers: carriers.summary.providers,
|
|
@@ -30394,6 +30507,7 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
30394
30507
|
audit: "/audit",
|
|
30395
30508
|
auditDeliveries: "/audit",
|
|
30396
30509
|
bargeIn: "/barge-in",
|
|
30510
|
+
browserMedia: "/voice/browser-media",
|
|
30397
30511
|
campaignReadiness: "/api/voice/campaigns/readiness-proof",
|
|
30398
30512
|
carriers: "/carriers",
|
|
30399
30513
|
deliveryRuntime: "/delivery-runtime",
|
|
@@ -30405,6 +30519,7 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
30405
30519
|
observabilityExportDeliveries: "/api/voice/observability-export/deliveries",
|
|
30406
30520
|
monitoring: "/voice/monitors",
|
|
30407
30521
|
monitoringNotifierDelivery: "/api/voice/monitor-issues/notifications",
|
|
30522
|
+
mediaPipeline: "/voice/media-pipeline",
|
|
30408
30523
|
opsActions: "/voice/ops-actions",
|
|
30409
30524
|
opsRecovery: "/ops-recovery",
|
|
30410
30525
|
phoneAgentSmoke: "/sessions",
|
|
@@ -30430,6 +30545,7 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
30430
30545
|
audit,
|
|
30431
30546
|
auditDeliveries,
|
|
30432
30547
|
bargeIn: bargeInSummary,
|
|
30548
|
+
browserMedia: browserMediaSummary,
|
|
30433
30549
|
campaignReadiness: campaignReadinessSummary,
|
|
30434
30550
|
carriers: carrierSummary,
|
|
30435
30551
|
deliveryRuntime,
|
|
@@ -30438,6 +30554,7 @@ var buildVoiceProductionReadinessReport = async (options, input = {}) => {
|
|
|
30438
30554
|
total: handoffs.total
|
|
30439
30555
|
},
|
|
30440
30556
|
liveLatency,
|
|
30557
|
+
mediaPipeline: mediaPipelineSummary,
|
|
30441
30558
|
monitoring: monitoringSummary,
|
|
30442
30559
|
monitoringNotifierDelivery: monitoringNotifierDeliverySummary,
|
|
30443
30560
|
opsActionHistory,
|
|
@@ -24,6 +24,7 @@ export type VoiceMediaPipelineReport = {
|
|
|
24
24
|
quality: MediaQualityReport;
|
|
25
25
|
resampling?: MediaResamplingPlan;
|
|
26
26
|
processorGraph?: MediaProcessorGraphReport;
|
|
27
|
+
sessionIds: string[];
|
|
27
28
|
status: MediaPipelineStatus;
|
|
28
29
|
surface: string;
|
|
29
30
|
transport?: MediaTransportReport;
|
|
@@ -19,6 +19,8 @@ import type { VoiceProviderOrchestrationReport } from './providerOrchestration';
|
|
|
19
19
|
import type { VoiceCampaignReadinessProofReport } from './campaign';
|
|
20
20
|
import { type VoiceOpsRecoveryReport } from './opsRecovery';
|
|
21
21
|
import { type VoiceObservabilityExportDeliveryHistory, type VoiceObservabilityExportDeliveryReceiptStore, type VoiceObservabilityExportReplayReport, type VoiceObservabilityExportReplaySource, type VoiceObservabilityExportReport } from './observabilityExport';
|
|
22
|
+
import type { VoiceMediaPipelineReport } from './mediaPipelineRoutes';
|
|
23
|
+
import type { MediaWebRTCStatsReport } from '@absolutejs/media';
|
|
22
24
|
export type VoiceProductionReadinessObservabilityExportDeliveryHistoryOptions = {
|
|
23
25
|
failOnMissing?: boolean;
|
|
24
26
|
failOnStale?: boolean;
|
|
@@ -132,6 +134,8 @@ export type VoiceProductionReadinessReport = {
|
|
|
132
134
|
observabilityExportDeliveries?: string;
|
|
133
135
|
monitoring?: string;
|
|
134
136
|
monitoringNotifierDelivery?: string;
|
|
137
|
+
browserMedia?: string;
|
|
138
|
+
mediaPipeline?: string;
|
|
135
139
|
opsActions?: string;
|
|
136
140
|
opsRecovery?: string;
|
|
137
141
|
phoneAgentSmoke?: string;
|
|
@@ -207,6 +211,28 @@ export type VoiceProductionReadinessReport = {
|
|
|
207
211
|
status: VoiceProductionReadinessStatus;
|
|
208
212
|
total: number;
|
|
209
213
|
};
|
|
214
|
+
mediaPipeline?: {
|
|
215
|
+
assistantAudioFrames: number;
|
|
216
|
+
backpressureEvents: number;
|
|
217
|
+
gapCount: number;
|
|
218
|
+
inputAudioFrames: number;
|
|
219
|
+
issues: number;
|
|
220
|
+
jitterMs?: number;
|
|
221
|
+
speechRatio: number;
|
|
222
|
+
status: VoiceProductionReadinessStatus;
|
|
223
|
+
timestampDriftMs?: number;
|
|
224
|
+
};
|
|
225
|
+
browserMedia?: {
|
|
226
|
+
activeCandidatePairs: number;
|
|
227
|
+
bytesReceived: number;
|
|
228
|
+
bytesSent: number;
|
|
229
|
+
issues: number;
|
|
230
|
+
jitterMs?: number;
|
|
231
|
+
liveAudioTracks: number;
|
|
232
|
+
packetLossRatio: number;
|
|
233
|
+
roundTripTimeMs?: number;
|
|
234
|
+
status: VoiceProductionReadinessStatus;
|
|
235
|
+
};
|
|
210
236
|
opsActionHistory?: VoiceProductionReadinessOpsActionHistorySummary;
|
|
211
237
|
opsRecovery?: {
|
|
212
238
|
issues: number;
|
|
@@ -311,6 +337,7 @@ export type VoiceProductionReadinessOperationsRecordLink = {
|
|
|
311
337
|
export type VoiceProductionReadinessOperationsRecordLinks = {
|
|
312
338
|
failedSessions: VoiceProductionReadinessOperationsRecordLink[];
|
|
313
339
|
failingLatency: VoiceProductionReadinessOperationsRecordLink[];
|
|
340
|
+
mediaQuality: VoiceProductionReadinessOperationsRecordLink[];
|
|
314
341
|
providerErrors: VoiceProductionReadinessOperationsRecordLink[];
|
|
315
342
|
};
|
|
316
343
|
export type VoiceProductionReadinessAuditRequirement = {
|
|
@@ -446,6 +473,14 @@ export type VoiceProductionReadinessRoutesOptions = {
|
|
|
446
473
|
query: Record<string, unknown>;
|
|
447
474
|
request: Request;
|
|
448
475
|
}) => Promise<VoiceMonitorNotifierDeliveryReport> | VoiceMonitorNotifierDeliveryReport);
|
|
476
|
+
mediaPipeline?: false | VoiceMediaPipelineReport | ((input: {
|
|
477
|
+
query: Record<string, unknown>;
|
|
478
|
+
request: Request;
|
|
479
|
+
}) => Promise<VoiceMediaPipelineReport> | VoiceMediaPipelineReport);
|
|
480
|
+
browserMedia?: false | MediaWebRTCStatsReport | ((input: {
|
|
481
|
+
query: Record<string, unknown>;
|
|
482
|
+
request: Request;
|
|
483
|
+
}) => Promise<MediaWebRTCStatsReport> | MediaWebRTCStatsReport);
|
|
449
484
|
opsActionHistory?: false | VoiceProductionReadinessOpsActionHistoryOptions;
|
|
450
485
|
opsRecovery?: false | VoiceOpsRecoveryReport | ((input: {
|
|
451
486
|
query: Record<string, unknown>;
|
|
@@ -51,6 +51,8 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
51
51
|
readonly observabilityExportDeliveries?: string | undefined;
|
|
52
52
|
readonly monitoring?: string | undefined;
|
|
53
53
|
readonly monitoringNotifierDelivery?: string | undefined;
|
|
54
|
+
readonly browserMedia?: string | undefined;
|
|
55
|
+
readonly mediaPipeline?: string | undefined;
|
|
54
56
|
readonly opsActions?: string | undefined;
|
|
55
57
|
readonly opsRecovery?: string | undefined;
|
|
56
58
|
readonly phoneAgentSmoke?: string | undefined;
|
|
@@ -101,6 +103,13 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
101
103
|
readonly sessionId: string;
|
|
102
104
|
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
103
105
|
}[];
|
|
106
|
+
readonly mediaQuality: readonly {
|
|
107
|
+
readonly detail?: string | undefined;
|
|
108
|
+
readonly href: string;
|
|
109
|
+
readonly label: string;
|
|
110
|
+
readonly sessionId: string;
|
|
111
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
112
|
+
}[];
|
|
104
113
|
readonly providerErrors: readonly {
|
|
105
114
|
readonly detail?: string | undefined;
|
|
106
115
|
readonly href: string;
|
|
@@ -230,6 +239,28 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
230
239
|
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
231
240
|
readonly total: number;
|
|
232
241
|
} | undefined;
|
|
242
|
+
readonly mediaPipeline?: {
|
|
243
|
+
readonly assistantAudioFrames: number;
|
|
244
|
+
readonly backpressureEvents: number;
|
|
245
|
+
readonly gapCount: number;
|
|
246
|
+
readonly inputAudioFrames: number;
|
|
247
|
+
readonly issues: number;
|
|
248
|
+
readonly jitterMs?: number | undefined;
|
|
249
|
+
readonly speechRatio: number;
|
|
250
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
251
|
+
readonly timestampDriftMs?: number | undefined;
|
|
252
|
+
} | undefined;
|
|
253
|
+
readonly browserMedia?: {
|
|
254
|
+
readonly activeCandidatePairs: number;
|
|
255
|
+
readonly bytesReceived: number;
|
|
256
|
+
readonly bytesSent: number;
|
|
257
|
+
readonly issues: number;
|
|
258
|
+
readonly jitterMs?: number | undefined;
|
|
259
|
+
readonly liveAudioTracks: number;
|
|
260
|
+
readonly packetLossRatio: number;
|
|
261
|
+
readonly roundTripTimeMs?: number | undefined;
|
|
262
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
263
|
+
} | undefined;
|
|
233
264
|
readonly opsActionHistory?: {
|
|
234
265
|
readonly failed: number;
|
|
235
266
|
readonly passed: number;
|
|
@@ -434,6 +465,8 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
434
465
|
readonly observabilityExportDeliveries?: string | undefined;
|
|
435
466
|
readonly monitoring?: string | undefined;
|
|
436
467
|
readonly monitoringNotifierDelivery?: string | undefined;
|
|
468
|
+
readonly browserMedia?: string | undefined;
|
|
469
|
+
readonly mediaPipeline?: string | undefined;
|
|
437
470
|
readonly opsActions?: string | undefined;
|
|
438
471
|
readonly opsRecovery?: string | undefined;
|
|
439
472
|
readonly phoneAgentSmoke?: string | undefined;
|
|
@@ -484,6 +517,13 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
484
517
|
readonly sessionId: string;
|
|
485
518
|
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
486
519
|
}[];
|
|
520
|
+
readonly mediaQuality: readonly {
|
|
521
|
+
readonly detail?: string | undefined;
|
|
522
|
+
readonly href: string;
|
|
523
|
+
readonly label: string;
|
|
524
|
+
readonly sessionId: string;
|
|
525
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
526
|
+
}[];
|
|
487
527
|
readonly providerErrors: readonly {
|
|
488
528
|
readonly detail?: string | undefined;
|
|
489
529
|
readonly href: string;
|
|
@@ -613,6 +653,28 @@ export declare const useVoiceReadinessFailures: (path?: string, options?: VoiceR
|
|
|
613
653
|
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
614
654
|
readonly total: number;
|
|
615
655
|
} | undefined;
|
|
656
|
+
readonly mediaPipeline?: {
|
|
657
|
+
readonly assistantAudioFrames: number;
|
|
658
|
+
readonly backpressureEvents: number;
|
|
659
|
+
readonly gapCount: number;
|
|
660
|
+
readonly inputAudioFrames: number;
|
|
661
|
+
readonly issues: number;
|
|
662
|
+
readonly jitterMs?: number | undefined;
|
|
663
|
+
readonly speechRatio: number;
|
|
664
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
665
|
+
readonly timestampDriftMs?: number | undefined;
|
|
666
|
+
} | undefined;
|
|
667
|
+
readonly browserMedia?: {
|
|
668
|
+
readonly activeCandidatePairs: number;
|
|
669
|
+
readonly bytesReceived: number;
|
|
670
|
+
readonly bytesSent: number;
|
|
671
|
+
readonly issues: number;
|
|
672
|
+
readonly jitterMs?: number | undefined;
|
|
673
|
+
readonly liveAudioTracks: number;
|
|
674
|
+
readonly packetLossRatio: number;
|
|
675
|
+
readonly roundTripTimeMs?: number | undefined;
|
|
676
|
+
readonly status: import("..").VoiceProductionReadinessStatus;
|
|
677
|
+
} | undefined;
|
|
616
678
|
readonly opsActionHistory?: {
|
|
617
679
|
readonly failed: number;
|
|
618
680
|
readonly passed: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/voice",
|
|
3
|
-
"version": "0.0.22-beta.
|
|
3
|
+
"version": "0.0.22-beta.318",
|
|
4
4
|
"description": "Voice primitives and Elysia plugin for AbsoluteJS",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
}
|
|
247
247
|
},
|
|
248
248
|
"dependencies": {
|
|
249
|
-
"@absolutejs/media": "0.0.1-beta.
|
|
249
|
+
"@absolutejs/media": "0.0.1-beta.3"
|
|
250
250
|
},
|
|
251
251
|
"devDependencies": {
|
|
252
252
|
"@absolutejs/absolute": "0.19.0-beta.646",
|