@absolutejs/voice 0.0.22-beta.365 → 0.0.22-beta.367
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.d.ts +2 -2
- package/dist/index.js +172 -2
- package/dist/productionReadiness.d.ts +41 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ export { buildVoiceProviderOrchestrationReport, createVoiceProviderOrchestration
|
|
|
72
72
|
export { assertVoiceProviderRoutingContractEvidence, assertVoiceProviderRoutingContract, evaluateVoiceProviderRoutingContractEvidence, runVoiceProviderRoutingContract } from './providerRoutingContract';
|
|
73
73
|
export { assertVoiceProviderSloEvidence, buildVoiceProviderSloReport, createVoiceProviderSloRoutes, evaluateVoiceProviderSloEvidence, renderVoiceProviderSloHTML, renderVoiceProviderSloMarkdown } from './providerSlo';
|
|
74
74
|
export { createVoicePhoneAgentProductionSmokeHTMLHandler, createVoicePhoneAgentProductionSmokeJSONHandler, createVoicePhoneAgentProductionSmokeRoutes, renderVoicePhoneAgentProductionSmokeHTML, runVoicePhoneAgentProductionSmokeContract } from './phoneAgentProductionSmoke';
|
|
75
|
-
export { assertVoiceProductionReadinessEvidence, buildVoiceProductionReadinessGate, buildVoiceProductionReadinessReport, createVoiceProductionReadinessRoutes, evaluateVoiceProductionReadinessEvidence, renderVoiceProductionReadinessHTML, summarizeVoiceProductionReadinessGate } from './productionReadiness';
|
|
75
|
+
export { assertVoiceProductionReadinessEvidence, buildVoiceProductionReadinessGate, buildVoiceProductionReadinessReport, createVoiceProductionReadinessProofRuntime, createVoiceProductionReadinessRoutes, evaluateVoiceProductionReadinessEvidence, renderVoiceProductionReadinessHTML, summarizeVoiceProductionReadinessGate } from './productionReadiness';
|
|
76
76
|
export { acknowledgeVoiceMonitorIssue, buildVoiceMonitorRunReport, createVoiceMemoryMonitorIssueStore, createVoiceMemoryMonitorNotifierDeliveryReceiptStore, createVoiceMonitorRoutes, createVoiceMonitorRunner, createVoiceMonitorRunnerRoutes, createVoiceMonitorWebhookNotifier, deliverVoiceMonitorIssueNotifications, muteVoiceMonitorIssue, renderVoiceMonitorHTML, renderVoiceMonitorMarkdown, resolveVoiceMonitorIssue } from './voiceMonitoring';
|
|
77
77
|
export { createVoiceReadinessProfile, recommendVoiceReadinessProfile } from './readinessProfiles';
|
|
78
78
|
export { assertVoiceProviderContractMatrixEvidence, assertVoiceProviderStackEvidence, buildVoiceProviderContractMatrix, createVoiceProviderContractMatrixHTMLHandler, createVoiceProviderContractMatrixJSONHandler, createVoiceProviderContractMatrixPreset, createVoiceProviderContractMatrixRoutes, evaluateVoiceProviderContractMatrixEvidence, evaluateVoiceProviderStackEvidence, evaluateVoiceProviderStackGaps, renderVoiceProviderContractMatrixHTML, recommendVoiceProviderStack } from './providerStackRecommendations';
|
|
@@ -142,7 +142,7 @@ export type { VoicePhoneAgentCarrier, VoicePhoneAgentCarrierSummary, VoicePhoneA
|
|
|
142
142
|
export type { VoicePhoneAgentProductionSmokeIssue, VoicePhoneAgentProductionSmokeHandlerOptions, VoicePhoneAgentProductionSmokeHTMLHandlerOptions, VoicePhoneAgentProductionSmokeOptions, VoicePhoneAgentProductionSmokeReport, VoicePhoneAgentProductionSmokeRoutesOptions, VoicePhoneAgentProductionSmokeRequirement } from './phoneAgentProductionSmoke';
|
|
143
143
|
export type { VoiceOpsConsoleLink, VoiceOpsConsoleReport, VoiceOpsConsoleRoutesOptions } from './opsConsoleRoutes';
|
|
144
144
|
export type { VoiceOpsStatus, VoiceOpsStatusLink, VoiceOpsStatusOptions, VoiceOpsStatusReport, VoiceOpsStatusRoutesOptions } from './opsStatus';
|
|
145
|
-
export type { VoiceProductionReadinessAction, VoiceProductionReadinessAuditOptions, VoiceProductionReadinessAuditRequirement, VoiceProductionReadinessAuditSummary, VoiceProductionReadinessAssertionInput, VoiceProductionReadinessAssertionReport, VoiceProductionReadinessCheck, VoiceProductionReadinessGateExplanation, VoiceProductionReadinessGateIssue, VoiceProductionReadinessGateOptions, VoiceProductionReadinessGateProfile, VoiceProductionReadinessGateProfileSurface, VoiceProductionReadinessGateReport, VoiceProductionReadinessOpsActionHistoryOptions, VoiceProductionReadinessOpsActionHistorySummary, VoiceProductionReadinessOperationsRecordLink, VoiceProductionReadinessOperationsRecordLinks, VoiceProductionReadinessProfileExplanation, VoiceProductionReadinessProfileSurface, VoiceProductionReadinessProofSource, VoiceProductionReadinessReport, VoiceProductionReadinessRouteInput, VoiceProductionReadinessRoutesOptions, VoiceProductionReadinessTraceDeliverySummary, VoiceProductionReadinessAuditDeliveryOptions, VoiceProductionReadinessAuditDeliverySummary, VoiceProductionReadinessTraceDeliveryOptions, VoiceProductionReadinessStatus } from './productionReadiness';
|
|
145
|
+
export type { VoiceProductionReadinessAction, VoiceProductionReadinessAuditOptions, VoiceProductionReadinessAuditRequirement, VoiceProductionReadinessAuditSummary, VoiceProductionReadinessAssertionInput, VoiceProductionReadinessAssertionReport, VoiceProductionReadinessCheck, VoiceProductionReadinessGateExplanation, VoiceProductionReadinessGateIssue, VoiceProductionReadinessGateOptions, VoiceProductionReadinessGateProfile, VoiceProductionReadinessGateProfileSurface, VoiceProductionReadinessGateReport, VoiceProductionReadinessOpsActionHistoryOptions, VoiceProductionReadinessOpsActionHistorySummary, VoiceProductionReadinessOperationsRecordLink, VoiceProductionReadinessOperationsRecordLinks, VoiceProductionReadinessProfileExplanation, VoiceProductionReadinessProfileSurface, VoiceProductionReadinessProofMetadata, VoiceProductionReadinessProofRuntime, VoiceProductionReadinessProofRuntimeOptions, VoiceProductionReadinessProofRuntimeSeedOptions, VoiceProductionReadinessProofSource, VoiceProductionReadinessReport, VoiceProductionReadinessRouteInput, VoiceProductionReadinessRoutesOptions, VoiceProductionReadinessTraceDeliverySummary, VoiceProductionReadinessAuditDeliveryOptions, VoiceProductionReadinessAuditDeliverySummary, VoiceProductionReadinessTraceDeliveryOptions, VoiceProductionReadinessStatus } from './productionReadiness';
|
|
146
146
|
export type { VoiceMonitorDefinition, VoiceMonitorEvaluation, VoiceMonitorEvaluationInput, VoiceMonitorIssue, VoiceMonitorIssueStatus, VoiceMonitorIssueStore, VoiceMonitorNotifier, VoiceMonitorNotifierDeliveryInput, VoiceMonitorNotifierDeliveryOptions, VoiceMonitorNotifierDeliveryReceipt, VoiceMonitorNotifierDeliveryReceiptStore, VoiceMonitorNotifierDeliveryReport, VoiceMonitorNotifierDeliveryResult, VoiceMonitorRoutesOptions, VoiceMonitorRun, VoiceMonitorRunOptions, VoiceMonitorRunReport, VoiceMonitorRunner, VoiceMonitorRunnerOptions, VoiceMonitorRunnerRoutesOptions, VoiceMonitorRunnerTickResult, VoiceMonitorSeverity, VoiceMonitorStatus, VoiceMonitorWebhookNotifierOptions } from './voiceMonitoring';
|
|
147
147
|
export type { VoiceReadinessProfileName, VoiceReadinessProfileOptions, VoiceReadinessProfileRecommendation, VoiceReadinessProfileRecommendationScore, VoiceReadinessProfileRoutesOptions } from './readinessProfiles';
|
|
148
148
|
export type { VoiceProviderStackChoice, VoiceProviderStackCapabilities, VoiceProviderStackCapabilityGap, VoiceProviderStackCapabilityGapInput, VoiceProviderStackCapabilityGapReport, VoiceProviderContractCheck, VoiceProviderContractCheckStatus, VoiceProviderContractDefinition, VoiceProviderContractMatrixAssertionInput, VoiceProviderContractMatrixAssertionReport, VoiceProviderContractMatrixHandlerOptions, VoiceProviderContractMatrixHTMLHandlerOptions, VoiceProviderContractMatrixInput, VoiceProviderContractMatrixPresetOptions, VoiceProviderContractMatrixReport, VoiceProviderContractMatrixRoutesOptions, VoiceProviderContractMatrixRow, VoiceProviderStackAssertionInput, VoiceProviderStackAssertionReport, VoiceProviderStackInput, VoiceProviderStackKind, VoiceProviderStackRecommendation } from './providerStackRecommendations';
|
package/dist/index.js
CHANGED
|
@@ -31830,6 +31830,176 @@ var createVoiceObservabilityExportRoutes = (options = {}) => {
|
|
|
31830
31830
|
|
|
31831
31831
|
// src/productionReadiness.ts
|
|
31832
31832
|
var escapeHtml52 = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
31833
|
+
var formatVoiceProofFreshnessDuration = (valueMs) => {
|
|
31834
|
+
if (valueMs < 1000) {
|
|
31835
|
+
return `${Math.max(0, Math.round(valueMs))}ms`;
|
|
31836
|
+
}
|
|
31837
|
+
if (valueMs < 60000) {
|
|
31838
|
+
return `${Math.round(valueMs / 1000)}s`;
|
|
31839
|
+
}
|
|
31840
|
+
return `${Math.round(valueMs / 60000)}m`;
|
|
31841
|
+
};
|
|
31842
|
+
var createVoiceProductionReadinessProofRuntime = (options = {}) => {
|
|
31843
|
+
const store = createVoiceMemoryTraceEventStore();
|
|
31844
|
+
const cacheMs = options.cacheMs ?? 1e4;
|
|
31845
|
+
const traceMaxAgeMs = options.traceMaxAgeMs ?? 30 * 60 * 1000;
|
|
31846
|
+
const freshnessMaxAgeMs = options.freshnessMaxAgeMs ?? traceMaxAgeMs;
|
|
31847
|
+
const proofSource = options.proofSource ?? "production-readiness";
|
|
31848
|
+
const readinessHref = options.readinessHref ?? "/api/production-readiness";
|
|
31849
|
+
const trendsHref = options.trendsHref ?? "/voice/proof-trends";
|
|
31850
|
+
const runId = options.runId ?? (() => `production-readiness-${Date.now()}-${crypto.randomUUID()}`);
|
|
31851
|
+
let metadata;
|
|
31852
|
+
let refreshPromise;
|
|
31853
|
+
let refreshedAt = 0;
|
|
31854
|
+
const cachedValues = new Map;
|
|
31855
|
+
const resetTraceProof = async () => {
|
|
31856
|
+
await Promise.all((await store.list()).map((event) => store.remove(event.id)));
|
|
31857
|
+
};
|
|
31858
|
+
const seedTraceProof = async (seed = {}) => {
|
|
31859
|
+
await resetTraceProof();
|
|
31860
|
+
const now = Date.now();
|
|
31861
|
+
const sessionId = seed.sessionId ?? `production-readiness-trace-${now}`;
|
|
31862
|
+
const scenarioId = seed.scenarioId ?? "production-readiness-proof";
|
|
31863
|
+
const events = [
|
|
31864
|
+
createVoiceTraceEvent({
|
|
31865
|
+
at: now,
|
|
31866
|
+
payload: {
|
|
31867
|
+
elapsedMs: seed.llmElapsedMs ?? 320,
|
|
31868
|
+
kind: "llm",
|
|
31869
|
+
provider: seed.llmProvider ?? "llm",
|
|
31870
|
+
providerStatus: "success",
|
|
31871
|
+
selectedProvider: seed.llmProvider ?? "llm",
|
|
31872
|
+
status: "success"
|
|
31873
|
+
},
|
|
31874
|
+
scenarioId,
|
|
31875
|
+
sessionId,
|
|
31876
|
+
type: "session.error"
|
|
31877
|
+
}),
|
|
31878
|
+
createVoiceTraceEvent({
|
|
31879
|
+
at: now + 1,
|
|
31880
|
+
payload: {
|
|
31881
|
+
elapsedMs: seed.sttElapsedMs ?? 82,
|
|
31882
|
+
kind: "stt",
|
|
31883
|
+
provider: seed.sttProvider ?? "stt",
|
|
31884
|
+
providerStatus: "success",
|
|
31885
|
+
selectedProvider: seed.sttProvider ?? "stt",
|
|
31886
|
+
status: "success"
|
|
31887
|
+
},
|
|
31888
|
+
scenarioId,
|
|
31889
|
+
sessionId,
|
|
31890
|
+
type: "session.error"
|
|
31891
|
+
}),
|
|
31892
|
+
createVoiceTraceEvent({
|
|
31893
|
+
at: now + 2,
|
|
31894
|
+
payload: {
|
|
31895
|
+
elapsedMs: seed.ttsElapsedMs ?? 45,
|
|
31896
|
+
kind: "tts",
|
|
31897
|
+
provider: seed.ttsProvider ?? "tts",
|
|
31898
|
+
providerStatus: "success",
|
|
31899
|
+
selectedProvider: seed.ttsProvider ?? "tts",
|
|
31900
|
+
status: "success"
|
|
31901
|
+
},
|
|
31902
|
+
scenarioId,
|
|
31903
|
+
sessionId,
|
|
31904
|
+
type: "session.error"
|
|
31905
|
+
}),
|
|
31906
|
+
createVoiceTraceEvent({
|
|
31907
|
+
at: now + 3,
|
|
31908
|
+
metadata: {
|
|
31909
|
+
source: "browser",
|
|
31910
|
+
surface: "live-latency-proof"
|
|
31911
|
+
},
|
|
31912
|
+
payload: {
|
|
31913
|
+
completedAt: now + 3,
|
|
31914
|
+
elapsedMs: seed.liveLatencyMs ?? 420,
|
|
31915
|
+
latencyMs: seed.liveLatencyMs ?? 420,
|
|
31916
|
+
startedAt: now + 3 - (seed.liveLatencyMs ?? 420),
|
|
31917
|
+
status: "assistant_audio_started",
|
|
31918
|
+
thresholdMs: 1800
|
|
31919
|
+
},
|
|
31920
|
+
scenarioId,
|
|
31921
|
+
sessionId,
|
|
31922
|
+
traceId: `production-readiness-live-latency-${now}`,
|
|
31923
|
+
type: "client.live_latency"
|
|
31924
|
+
})
|
|
31925
|
+
];
|
|
31926
|
+
return Promise.all(events.map((event) => store.append(event)));
|
|
31927
|
+
};
|
|
31928
|
+
const refresh = (onRefresh) => {
|
|
31929
|
+
if (refreshPromise && Date.now() - refreshedAt < cacheMs) {
|
|
31930
|
+
return refreshPromise;
|
|
31931
|
+
}
|
|
31932
|
+
refreshPromise = (async () => {
|
|
31933
|
+
const generatedAt = new Date().toISOString();
|
|
31934
|
+
const nextMetadata = {
|
|
31935
|
+
generatedAt,
|
|
31936
|
+
refreshedAt: Date.now(),
|
|
31937
|
+
runId: runId(),
|
|
31938
|
+
source: proofSource
|
|
31939
|
+
};
|
|
31940
|
+
metadata = nextMetadata;
|
|
31941
|
+
await onRefresh?.(nextMetadata);
|
|
31942
|
+
return nextMetadata;
|
|
31943
|
+
})().finally(() => {
|
|
31944
|
+
refreshedAt = Date.now();
|
|
31945
|
+
});
|
|
31946
|
+
return refreshPromise;
|
|
31947
|
+
};
|
|
31948
|
+
const cache = async (key, loader, valueCacheMs = cacheMs) => {
|
|
31949
|
+
const cached = cachedValues.get(key);
|
|
31950
|
+
if (cached && Date.now() - cached.loadedAt < valueCacheMs) {
|
|
31951
|
+
return cached.value;
|
|
31952
|
+
}
|
|
31953
|
+
const value = Promise.resolve(loader());
|
|
31954
|
+
cachedValues.set(key, {
|
|
31955
|
+
loadedAt: Date.now(),
|
|
31956
|
+
value
|
|
31957
|
+
});
|
|
31958
|
+
return value;
|
|
31959
|
+
};
|
|
31960
|
+
const buildFreshnessCheck = async () => {
|
|
31961
|
+
await refresh();
|
|
31962
|
+
const now = Date.now();
|
|
31963
|
+
const proofAgeMs = metadata ? now - metadata.refreshedAt : undefined;
|
|
31964
|
+
const cacheAgeMs = refreshedAt ? now - refreshedAt : undefined;
|
|
31965
|
+
const status = metadata && (proofAgeMs ?? Infinity) <= freshnessMaxAgeMs ? "pass" : "fail";
|
|
31966
|
+
return {
|
|
31967
|
+
detail: metadata ? `Proof ${metadata.runId} refreshed ${formatVoiceProofFreshnessDuration(proofAgeMs ?? 0)} ago; route cache age is ${formatVoiceProofFreshnessDuration(cacheAgeMs ?? 0)}.` : "Production readiness proof has not been refreshed yet.",
|
|
31968
|
+
gateExplanation: {
|
|
31969
|
+
evidenceHref: readinessHref,
|
|
31970
|
+
observed: proofAgeMs ?? 0,
|
|
31971
|
+
remediation: "Reload production readiness to refresh provider SLO, live latency, proof-pack, trend, and observability export proof.",
|
|
31972
|
+
sourceHref: trendsHref,
|
|
31973
|
+
threshold: freshnessMaxAgeMs,
|
|
31974
|
+
thresholdLabel: "Maximum proof age",
|
|
31975
|
+
unit: "ms"
|
|
31976
|
+
},
|
|
31977
|
+
href: options.freshnessHref ?? trendsHref,
|
|
31978
|
+
label: options.freshnessLabel ?? "Proof freshness",
|
|
31979
|
+
proofSource: {
|
|
31980
|
+
detail: "Generated by the production readiness refresh path before the deploy gate evaluates cached route results.",
|
|
31981
|
+
href: readinessHref,
|
|
31982
|
+
source: metadata?.source ?? proofSource,
|
|
31983
|
+
sourceLabel: options.proofSourceLabel ?? "Production readiness proof refresh"
|
|
31984
|
+
},
|
|
31985
|
+
status,
|
|
31986
|
+
value: metadata ? `${formatVoiceProofFreshnessDuration(proofAgeMs ?? 0)} old` : "missing"
|
|
31987
|
+
};
|
|
31988
|
+
};
|
|
31989
|
+
return {
|
|
31990
|
+
buildFreshnessCheck,
|
|
31991
|
+
cache,
|
|
31992
|
+
getMetadata: () => metadata,
|
|
31993
|
+
options: {
|
|
31994
|
+
cacheMs,
|
|
31995
|
+
traceMaxAgeMs
|
|
31996
|
+
},
|
|
31997
|
+
refresh,
|
|
31998
|
+
resetTraceProof,
|
|
31999
|
+
seedTraceProof,
|
|
32000
|
+
store
|
|
32001
|
+
};
|
|
32002
|
+
};
|
|
31833
32003
|
var rollupStatus4 = (checks) => checks.some((check) => check.status === "fail") ? "fail" : checks.some((check) => check.status === "warn") ? "warn" : "pass";
|
|
31834
32004
|
var readinessGateCodes = {
|
|
31835
32005
|
"Agent squad contracts": "voice.readiness.agent_squad_contracts",
|
|
@@ -33576,9 +33746,8 @@ var createVoiceProductionReadinessRoutes = (options) => {
|
|
|
33576
33746
|
};
|
|
33577
33747
|
};
|
|
33578
33748
|
const reportCacheKey = (query, request) => {
|
|
33579
|
-
const url = new URL(request.url);
|
|
33580
33749
|
const queryKey = Object.entries(query).map(([key, value]) => [key, String(value)]).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}=${value}`).join("&");
|
|
33581
|
-
return
|
|
33750
|
+
return queryKey;
|
|
33582
33751
|
};
|
|
33583
33752
|
const getReport = async (query, request) => {
|
|
33584
33753
|
const cacheMs = typeof options.cacheMs === "number" && Number.isFinite(options.cacheMs) && options.cacheMs > 0 ? options.cacheMs : 0;
|
|
@@ -38274,6 +38443,7 @@ export {
|
|
|
38274
38443
|
createVoiceProfileSwitchPolicyProofRoutes,
|
|
38275
38444
|
createVoiceProfileSwitchLiveDecisionRoutes,
|
|
38276
38445
|
createVoiceProductionReadinessRoutes,
|
|
38446
|
+
createVoiceProductionReadinessProofRuntime,
|
|
38277
38447
|
createVoicePostgresTraceSinkDeliveryStore,
|
|
38278
38448
|
createVoicePostgresTraceEventStore,
|
|
38279
38449
|
createVoicePostgresTelnyxWebhookEventStore,
|
|
@@ -3,7 +3,7 @@ import { type VoiceProviderFallbackRecoverySummary } from './sessionReplay';
|
|
|
3
3
|
import { type VoiceTelephonyCarrierMatrixInput } from './telephony/matrix';
|
|
4
4
|
import { type VoiceTelephonyWebhookSecurityOptions, type VoiceTelephonyWebhookSecurityReport } from './telephony/security';
|
|
5
5
|
import type { VoiceMonitorNotifierDeliveryReport, VoiceMonitorRunReport } from './voiceMonitoring';
|
|
6
|
-
import type
|
|
6
|
+
import { type StoredVoiceTraceEvent, type VoiceTraceEventStore } from './trace';
|
|
7
7
|
import type { VoiceTraceSinkDeliveryStore } from './trace';
|
|
8
8
|
import type { VoiceAgentSquadContractReport } from './agentSquadContract';
|
|
9
9
|
import type { VoiceBargeInReport } from './bargeInRoutes';
|
|
@@ -110,6 +110,45 @@ export type VoiceProductionReadinessProfileExplanation = {
|
|
|
110
110
|
purpose: string;
|
|
111
111
|
surfaces: VoiceProductionReadinessProfileSurface[];
|
|
112
112
|
};
|
|
113
|
+
export type VoiceProductionReadinessProofMetadata = {
|
|
114
|
+
generatedAt: string;
|
|
115
|
+
refreshedAt: number;
|
|
116
|
+
runId: string;
|
|
117
|
+
source: string;
|
|
118
|
+
};
|
|
119
|
+
export type VoiceProductionReadinessProofRuntimeSeedOptions = {
|
|
120
|
+
liveLatencyMs?: number;
|
|
121
|
+
llmElapsedMs?: number;
|
|
122
|
+
llmProvider?: string;
|
|
123
|
+
scenarioId?: string;
|
|
124
|
+
sessionId?: string;
|
|
125
|
+
sttElapsedMs?: number;
|
|
126
|
+
sttProvider?: string;
|
|
127
|
+
ttsElapsedMs?: number;
|
|
128
|
+
ttsProvider?: string;
|
|
129
|
+
};
|
|
130
|
+
export type VoiceProductionReadinessProofRuntimeOptions = {
|
|
131
|
+
cacheMs?: number;
|
|
132
|
+
freshnessHref?: string;
|
|
133
|
+
freshnessLabel?: string;
|
|
134
|
+
freshnessMaxAgeMs?: number;
|
|
135
|
+
proofSource?: string;
|
|
136
|
+
proofSourceLabel?: string;
|
|
137
|
+
readinessHref?: string;
|
|
138
|
+
runId?: () => string;
|
|
139
|
+
traceMaxAgeMs?: number;
|
|
140
|
+
trendsHref?: string;
|
|
141
|
+
};
|
|
142
|
+
export type VoiceProductionReadinessProofRuntime = {
|
|
143
|
+
buildFreshnessCheck: () => Promise<VoiceProductionReadinessCheck>;
|
|
144
|
+
cache: <TValue>(key: string, loader: () => Promise<TValue> | TValue, cacheMs?: number) => Promise<TValue>;
|
|
145
|
+
getMetadata: () => VoiceProductionReadinessProofMetadata | undefined;
|
|
146
|
+
options: Pick<VoiceProductionReadinessRoutesOptions, 'cacheMs' | 'traceMaxAgeMs'>;
|
|
147
|
+
refresh: (onRefresh?: (metadata: VoiceProductionReadinessProofMetadata) => Promise<void> | void) => Promise<VoiceProductionReadinessProofMetadata>;
|
|
148
|
+
resetTraceProof: () => Promise<void>;
|
|
149
|
+
seedTraceProof: (options?: VoiceProductionReadinessProofRuntimeSeedOptions) => Promise<StoredVoiceTraceEvent[]>;
|
|
150
|
+
store: VoiceTraceEventStore;
|
|
151
|
+
};
|
|
113
152
|
export type VoiceProductionReadinessGateProfileSurface = VoiceProductionReadinessProfileSurface & {
|
|
114
153
|
issues: VoiceProductionReadinessGateIssue[];
|
|
115
154
|
status: VoiceProductionReadinessStatus;
|
|
@@ -590,6 +629,7 @@ export type VoiceProductionReadinessRoutesOptions = {
|
|
|
590
629
|
monitoringNotifierDeliveryFailAfterMs?: number;
|
|
591
630
|
reconnectResumeFailAfterMs?: number;
|
|
592
631
|
};
|
|
632
|
+
export declare const createVoiceProductionReadinessProofRuntime: (options?: VoiceProductionReadinessProofRuntimeOptions) => VoiceProductionReadinessProofRuntime;
|
|
593
633
|
export declare const summarizeVoiceProductionReadinessGate: (report: VoiceProductionReadinessReport, options?: VoiceProductionReadinessGateOptions) => VoiceProductionReadinessGateReport;
|
|
594
634
|
export declare const evaluateVoiceProductionReadinessEvidence: (report: VoiceProductionReadinessReport, input?: VoiceProductionReadinessAssertionInput) => VoiceProductionReadinessAssertionReport;
|
|
595
635
|
export declare const assertVoiceProductionReadinessEvidence: (report: VoiceProductionReadinessReport, input?: VoiceProductionReadinessAssertionInput) => VoiceProductionReadinessAssertionReport;
|