@absolutejs/voice 0.0.22-beta.452 → 0.0.22-beta.454

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.
@@ -0,0 +1,19 @@
1
+ import type { VoiceReconnectProfileEvidenceSummary } from "../proofTrends";
2
+ export type VoiceReconnectProfileEvidenceClientOptions = {
3
+ fetch?: typeof fetch;
4
+ intervalMs?: number;
5
+ };
6
+ export type VoiceReconnectProfileEvidenceSnapshot = {
7
+ error: string | null;
8
+ isLoading: boolean;
9
+ report?: VoiceReconnectProfileEvidenceSummary;
10
+ updatedAt?: number;
11
+ };
12
+ export declare const fetchVoiceReconnectProfileEvidence: (path?: string, options?: Pick<VoiceReconnectProfileEvidenceClientOptions, "fetch">) => Promise<VoiceReconnectProfileEvidenceSummary>;
13
+ export declare const createVoiceReconnectProfileEvidenceStore: (path?: string, options?: VoiceReconnectProfileEvidenceClientOptions) => {
14
+ close: () => void;
15
+ getServerSnapshot: () => VoiceReconnectProfileEvidenceSnapshot;
16
+ getSnapshot: () => VoiceReconnectProfileEvidenceSnapshot;
17
+ refresh: () => Promise<VoiceReconnectProfileEvidenceSummary | undefined>;
18
+ subscribe: (listener: () => void) => () => void;
19
+ };
@@ -0,0 +1,39 @@
1
+ import { type VoiceReconnectProfileEvidenceClientOptions, type VoiceReconnectProfileEvidenceSnapshot } from "./reconnectProfileEvidence";
2
+ export type VoiceReconnectProfileEvidenceMetricView = {
3
+ label: string;
4
+ value: string;
5
+ };
6
+ export type VoiceReconnectProfileEvidenceViewModel = {
7
+ description: string;
8
+ error: string | null;
9
+ isLoading: boolean;
10
+ label: string;
11
+ latest?: {
12
+ profileLabel: string;
13
+ sessionId: string;
14
+ surfaces: string;
15
+ };
16
+ links: Array<{
17
+ href: string;
18
+ label: string;
19
+ }>;
20
+ metrics: VoiceReconnectProfileEvidenceMetricView[];
21
+ status: "empty" | "error" | "loading" | "ready" | "warning";
22
+ title: string;
23
+ };
24
+ export type VoiceReconnectProfileEvidenceWidgetOptions = VoiceReconnectProfileEvidenceClientOptions & {
25
+ description?: string;
26
+ links?: Array<{
27
+ href: string;
28
+ label: string;
29
+ }>;
30
+ title?: string;
31
+ };
32
+ export declare const createVoiceReconnectProfileEvidenceViewModel: (snapshot: VoiceReconnectProfileEvidenceSnapshot, options?: VoiceReconnectProfileEvidenceWidgetOptions) => VoiceReconnectProfileEvidenceViewModel;
33
+ export declare const renderVoiceReconnectProfileEvidenceHTML: (snapshot: VoiceReconnectProfileEvidenceSnapshot, options?: VoiceReconnectProfileEvidenceWidgetOptions) => string;
34
+ export declare const getVoiceReconnectProfileEvidenceCSS: () => string;
35
+ export declare const mountVoiceReconnectProfileEvidence: (element: Element, path?: string, options?: VoiceReconnectProfileEvidenceWidgetOptions) => {
36
+ close: () => void;
37
+ refresh: () => Promise<import("..").VoiceReconnectProfileEvidenceSummary | undefined>;
38
+ };
39
+ export declare const defineVoiceReconnectProfileEvidenceElement: (tagName?: string) => void;
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@ export { assertVoicePlatformCoverage, buildVoicePlatformCoverageSummary, createV
31
31
  export { assertVoiceCompetitiveCoverage, buildVoiceCompetitiveCoverageReport, createVoiceCompetitiveCoverageRoutes, evaluateVoiceCompetitiveCoverage, renderVoiceCompetitiveCoverageHTML, renderVoiceCompetitiveCoverageMarkdown, } from "./competitiveCoverage";
32
32
  export type { VoiceCompetitiveCoverageAssertionInput, VoiceCompetitiveCoverageAssertionReport, VoiceCompetitiveCoverageIssue, VoiceCompetitiveCoverageLevel, VoiceCompetitiveCoverageReport, VoiceCompetitiveCoverageReportInput, VoiceCompetitiveCoverageRoutesOptions, VoiceCompetitiveCoverageStatus, VoiceCompetitiveCoverageSummary, VoiceCompetitiveDepthLevel, VoiceCompetitiveEvidence, VoiceCompetitiveSurface, } from "./competitiveCoverage";
33
33
  export type { VoicePlatformCoverageAssertionInput, VoicePlatformCoverageAssertionReport, VoicePlatformCoverageEvidence, VoicePlatformCoverageRoutesOptions, VoicePlatformCoverageStatus, VoicePlatformCoverageSummary, VoicePlatformCoverageSummaryInput, VoicePlatformCoverageSurface, } from "./platformCoverage";
34
- export { assertVoiceProofTrendEvidence, appendVoiceRealCallProfileRecoveryEvidence, buildEmptyVoiceProofTrendReport, buildVoiceProofTrendProfileSummaries, buildVoiceProofTrendRecommendationReport, buildVoiceProofTrendReportFromRealCallProfiles, buildVoiceProofTrendReport, buildVoiceRealCallProfileEvidenceFromTraceEvents, buildVoiceRealCallProfileEvidenceFromReconnectProofReports, buildVoiceRealCallProfileDefaults, buildVoiceRealCallProfileHistoryReport, buildVoiceRealCallProfileReadinessCheck, buildVoiceRealCallProfileRecoveryJobHistoryCheck, buildVoiceRealCallProfileRecoveryActions, createVoiceInMemoryRealCallProfileRecoveryJobStore, createVoiceRealCallProfileTraceCollector, createVoiceSQLiteRealCallProfileRecoveryJobStore, createVoiceProofTrendRecommendationRoutes, createVoiceProofTrendRoutes, createVoiceRealCallProfileHistoryRoutes, createVoiceRealCallProfileRecoveryActionRoutes, DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS, DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS, evaluateVoiceProofTrendEvidence, formatVoiceProofTrendAge, loadVoiceRealCallProfileEvidenceFromTraceStore, normalizeVoiceProofTrendReport, readVoiceProofTrendReportFile, renderVoiceProofTrendRecommendationHTML, renderVoiceProofTrendRecommendationMarkdown, renderVoiceRealCallProfileHistoryHTML, renderVoiceRealCallProfileHistoryMarkdown, runVoiceRealCallProfileRecoveryLoop, resolveVoiceRealCallProfileProviderRoute, } from "./proofTrends";
34
+ export { assertVoiceProofTrendEvidence, appendVoiceRealCallProfileRecoveryEvidence, buildEmptyVoiceProofTrendReport, buildVoiceProofTrendProfileSummaries, buildVoiceProofTrendRecommendationReport, buildVoiceProofTrendReportFromRealCallProfiles, buildVoiceProofTrendReport, buildVoiceRealCallProfileEvidenceFromTraceEvents, buildVoiceRealCallProfileEvidenceFromReconnectProofReports, buildVoiceRealCallProfileDefaults, buildVoiceRealCallProfileHistoryReport, buildVoiceRealCallProfileHistoryReportFromStore, buildVoiceRealCallProfileReadinessCheck, buildVoiceRealCallProfileRecoveryJobHistoryCheck, buildVoiceRealCallProfileRecoveryActions, buildVoiceReconnectProfileEvidenceSummary, createVoiceInMemoryRealCallProfileRecoveryJobStore, createVoiceRealCallProfileTraceCollector, createVoiceSQLiteRealCallProfileEvidenceStore, createVoiceSQLiteRealCallProfileRecoveryJobStore, createVoiceProofTrendRecommendationRoutes, createVoiceProofTrendRoutes, createVoiceRealCallProfileHistoryRoutes, createVoiceRealCallProfileRecoveryActionRoutes, DEFAULT_VOICE_PROOF_TREND_PROFILE_DEFINITIONS, DEFAULT_VOICE_PROOF_TRENDS_MAX_AGE_MS, evaluateVoiceProofTrendEvidence, formatVoiceProofTrendAge, loadVoiceRealCallProfileEvidenceFromStore, loadVoiceRealCallProfileEvidenceFromTraceStore, normalizeVoiceProofTrendReport, readVoiceProofTrendReportFile, renderVoiceProofTrendRecommendationHTML, renderVoiceProofTrendRecommendationMarkdown, renderVoiceRealCallProfileHistoryHTML, renderVoiceRealCallProfileHistoryMarkdown, runVoiceRealCallProfileRecoveryLoop, resolveVoiceRealCallProfileProviderRoute, } from "./proofTrends";
35
35
  export { createVoiceEvidenceAssertion, createVoiceProofAssertion, summarizeVoiceProofAssertions, } from "./proofAssertions";
36
36
  export { buildVoiceSessionSnapshot, buildVoiceSessionSnapshotStatus, createVoiceSessionSnapshotRoutes, parseVoiceSessionSnapshot, } from "./sessionSnapshot";
37
37
  export { buildVoiceCallDebuggerReport, createVoiceCallDebuggerRoutes, renderVoiceCallDebuggerHTML, resolveLatestVoiceCallDebuggerSessionId, } from "./callDebugger";
@@ -46,7 +46,7 @@ export { buildVoiceProviderDecisionTraceReport, createVoiceProviderDecisionTrace
46
46
  export type { VoiceProviderDecisionStatus, VoiceProviderDecisionSurfaceReport, VoiceProviderDecisionTrace, VoiceProviderDecisionTraceInput, VoiceProviderDecisionTraceIssue, VoiceProviderDecisionTraceReport, VoiceProviderDecisionTraceReportOptions, VoiceProviderDecisionTraceRoutesOptions, } from "./providerDecisionTraces";
47
47
  export { appendVoiceIOProviderRouterTraceEvent, appendVoiceProviderRouterTraceEvent, buildVoiceIOProviderRouterTraceEvent, buildVoiceProviderRouterTraceEvent, } from "./providerRouterTraces";
48
48
  export type { VoiceIOProviderRouterTraceAppendOptions, VoiceIOProviderRouterTraceEventOptions, VoiceProviderRouterTraceAppendOptions, VoiceProviderRouterTraceEventOptions, } from "./providerRouterTraces";
49
- export type { VoiceProofTrendAssertionInput, VoiceProofTrendAssertionReport, VoiceProofTrendCycle, VoiceProofTrendProfileDefinition, VoiceProofTrendProfileRecommendation, VoiceProofTrendProfileSummaryOptions, VoiceProofTrendProfileSummary, VoiceProofTrendProviderRecommendation, VoiceProofTrendProviderSummary, VoiceProofTrendReconnectSummary, VoiceProofTrendRecommendation, VoiceProofTrendRecommendationOptions, VoiceProofTrendRecommendationReport, VoiceProofTrendRecommendationRoutesOptions, VoiceProofTrendRecommendationStatus, VoiceProofTrendRecommendationSurface, VoiceProofTrendRealCallProfileEvidence, VoiceProofTrendRealCallProfileReportOptions, VoiceProofTrendReport, VoiceProofTrendReportInput, VoiceProofTrendRoutesOptions, VoiceProofTrendRuntimeChannelSummary, VoiceProofTrendStatus, VoiceProofTrendSummary, VoiceRealCallProfileDefault, VoiceRealCallProfileDefaultsOptions, VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileHistoryOptions, VoiceRealCallProfileHistoryReport, VoiceRealCallProfileHistoryRoutesOptions, VoiceRealCallProfileProviderRouteOptions, VoiceRealCallProfileReadinessCheckOptions, VoiceRealCallProfileRecoveryActionOptions, VoiceRealCallProfileRecoveryAction, VoiceRealCallProfileRecoveryActionHandler, VoiceRealCallProfileRecoveryActionHandlerInput, VoiceRealCallProfileRecoveryActionId, VoiceRealCallProfileRecoveryJobHistoryCheckOptions, VoiceRealCallProfileRecoveryActionResult, VoiceRealCallProfileRecoveryActionRoutesOptions, VoiceRealCallProfileRecoveryJob, VoiceRealCallProfileRecoveryJobCreateInput, VoiceRealCallProfileRecoveryJobListOptions, VoiceRealCallProfileRecoveryJobStatus, VoiceRealCallProfileRecoveryJobStore, VoiceRealCallProfileRecoveryJobUpdate, VoiceRealCallProfileRecoveryLoopAction, VoiceRealCallProfileRecoveryLoopJob, VoiceRealCallProfileRecoveryLoopJobResult, VoiceRealCallProfileRecoveryLoopOptions, VoiceRealCallProfileRecoveryLoopReport, VoiceRealCallProfileRecoveryLoopStartFailure, VoiceRealCallProfileRecoveryEvidenceOptions, VoiceRealCallProfileRecoveryEvidenceProvider, VoiceRealCallProfileRecoveryEvidenceProviderRole, VoiceRealCallProfileRecoveryEvidenceResult, VoiceSQLiteRealCallProfileRecoveryJobStoreOptions, VoiceRealCallProfileTraceCollector, VoiceRealCallProfileTraceCollectorEvidenceOptions, VoiceRealCallProfileTraceCollectorOptions, VoiceRealCallProfileTraceEvidenceOptions, VoiceRealCallProfileTraceStoreEvidenceOptions, VoiceReconnectRealCallProfileEvidenceOptions, } from "./proofTrends";
49
+ export type { VoiceProofTrendAssertionInput, VoiceProofTrendAssertionReport, VoiceProofTrendCycle, VoiceProofTrendProfileDefinition, VoiceProofTrendProfileRecommendation, VoiceProofTrendProfileSummaryOptions, VoiceProofTrendProfileSummary, VoiceProofTrendProviderRecommendation, VoiceProofTrendProviderSummary, VoiceProofTrendReconnectSummary, VoiceProofTrendRecommendation, VoiceProofTrendRecommendationOptions, VoiceProofTrendRecommendationReport, VoiceProofTrendRecommendationRoutesOptions, VoiceProofTrendRecommendationStatus, VoiceProofTrendRecommendationSurface, VoiceProofTrendRealCallProfileEvidence, VoiceProofTrendRealCallProfileReportOptions, VoiceProofTrendReport, VoiceProofTrendReportInput, VoiceProofTrendRoutesOptions, VoiceProofTrendRuntimeChannelSummary, VoiceProofTrendStatus, VoiceProofTrendSummary, VoiceRealCallProfileDefault, VoiceRealCallProfileDefaultsOptions, VoiceRealCallProfileDefaultsReport, VoiceRealCallProfileEvidenceCreateInput, VoiceRealCallProfileEvidenceListOptions, VoiceRealCallProfileEvidenceRecord, VoiceRealCallProfileEvidenceStore, VoiceRealCallProfileHistoryOptions, VoiceRealCallProfileHistoryReport, VoiceRealCallProfileHistoryRoutesOptions, VoiceRealCallProfileProviderRouteOptions, VoiceRealCallProfileReadinessCheckOptions, VoiceRealCallProfileRecoveryActionOptions, VoiceRealCallProfileRecoveryAction, VoiceRealCallProfileRecoveryActionHandler, VoiceRealCallProfileRecoveryActionHandlerInput, VoiceRealCallProfileRecoveryActionId, VoiceRealCallProfileRecoveryJobHistoryCheckOptions, VoiceRealCallProfileRecoveryActionResult, VoiceRealCallProfileRecoveryActionRoutesOptions, VoiceRealCallProfileRecoveryJob, VoiceRealCallProfileRecoveryJobCreateInput, VoiceRealCallProfileRecoveryJobListOptions, VoiceRealCallProfileRecoveryJobStatus, VoiceRealCallProfileRecoveryJobStore, VoiceRealCallProfileRecoveryJobUpdate, VoiceRealCallProfileRecoveryLoopAction, VoiceRealCallProfileRecoveryLoopJob, VoiceRealCallProfileRecoveryLoopJobResult, VoiceRealCallProfileRecoveryLoopOptions, VoiceRealCallProfileRecoveryLoopReport, VoiceRealCallProfileRecoveryLoopStartFailure, VoiceRealCallProfileRecoveryEvidenceOptions, VoiceRealCallProfileRecoveryEvidenceProvider, VoiceRealCallProfileRecoveryEvidenceProviderRole, VoiceRealCallProfileRecoveryEvidenceResult, VoiceSQLiteRealCallProfileRecoveryJobStoreOptions, VoiceRealCallProfileTraceCollector, VoiceRealCallProfileTraceCollectorEvidenceOptions, VoiceRealCallProfileTraceCollectorOptions, VoiceRealCallProfileTraceEvidenceOptions, VoiceRealCallProfileTraceStoreEvidenceOptions, VoiceReconnectRealCallProfileEvidenceOptions, VoiceReconnectProfileEvidenceSummary, VoiceReconnectProfileEvidenceSummaryStatus, VoiceSQLiteRealCallProfileEvidenceStoreOptions, } from "./proofTrends";
50
50
  export { assertVoiceSloCalibration, buildVoiceSloCalibrationReport, buildVoiceSloReadinessThresholdReport, createVoiceSloReadinessThresholdOptions, createVoiceSloReadinessThresholdRoutes, createVoiceSloThresholdProfile, createVoiceSloCalibrationRoutes, renderVoiceSloCalibrationMarkdown, renderVoiceSloReadinessThresholdHTML, renderVoiceSloReadinessThresholdMarkdown, } from "./sloCalibration";
51
51
  export type { VoiceSloCalibrationMetricKey, VoiceSloCalibrationOptions, VoiceSloCalibrationReport, VoiceSloCalibrationRoutesOptions, VoiceSloCalibrationSample, VoiceSloCalibrationStatus, VoiceSloCalibrationThreshold, VoiceSloCalibrationThresholds, VoiceSloReadinessThresholdReport, VoiceSloReadinessThresholdReportOptions, VoiceSloReadinessThresholdOptions, VoiceSloReadinessThresholdRoutesOptions, VoiceSloThresholdProfile, } from "./sloCalibration";
52
52
  export { assertVoiceLiveOpsControlEvidence, assertVoiceLiveOpsEvidence, buildVoiceLiveOpsControlState, createVoiceLiveOpsController, createVoiceLiveOpsRoutes, createVoiceMemoryLiveOpsControlStore, evaluateVoiceLiveOpsControlEvidence, evaluateVoiceLiveOpsEvidence, getVoiceLiveOpsControlStatus, VOICE_LIVE_OPS_ACTIONS, } from "./liveOps";
package/dist/index.js CHANGED
@@ -16509,6 +16509,33 @@ var maxNumber = (values) => {
16509
16509
  const finite = values.filter((value) => typeof value === "number" && Number.isFinite(value));
16510
16510
  return finite.length > 0 ? Math.max(...finite) : undefined;
16511
16511
  };
16512
+ var buildVoiceReconnectProfileEvidenceSummary = (evidence, options = {}) => {
16513
+ const profileId = options.profileId ?? "reconnect-resume";
16514
+ const filtered = evidence.filter((record) => record.profileId === profileId).sort((left, right) => {
16515
+ const leftAt = Date.parse(left.generatedAt ?? left.createdAt);
16516
+ const rightAt = Date.parse(right.generatedAt ?? right.createdAt);
16517
+ return (Number.isFinite(rightAt) ? rightAt : 0) - (Number.isFinite(leftAt) ? leftAt : 0);
16518
+ });
16519
+ const latest = filtered[0];
16520
+ const sampleCount = filtered.reduce((total, record) => total + (record.reconnect?.samples ?? 1), 0);
16521
+ const snapshotCount = filtered.reduce((total, record) => total + (record.reconnect?.snapshotCount ?? 0), 0);
16522
+ const resumeLatencyP95Ms = maxNumber(filtered.map((record) => record.reconnect?.resumeLatencyP95Ms));
16523
+ const failed = filtered.some((record) => record.ok === false || record.reconnect?.status === "fail");
16524
+ const passed = filtered.some((record) => record.ok === true && record.reconnect?.resumed === true && record.reconnect?.reconnected === true);
16525
+ const status = filtered.length === 0 ? "empty" : failed ? "fail" : passed ? "pass" : "warn";
16526
+ return {
16527
+ evidence: filtered,
16528
+ generatedAt: options.generatedAt ?? new Date().toISOString(),
16529
+ latest,
16530
+ ok: status === "pass",
16531
+ profileId,
16532
+ resumeLatencyP95Ms,
16533
+ sampleCount,
16534
+ snapshotCount,
16535
+ sourceHref: options.sourceHref,
16536
+ status
16537
+ };
16538
+ };
16512
16539
  var percentile2 = (values, rank) => {
16513
16540
  const finite = values.filter((value) => Number.isFinite(value)).sort((left, right) => left - right);
16514
16541
  if (finite.length === 0) {
@@ -16828,6 +16855,7 @@ var buildVoiceRealCallProfileEvidenceFromReconnectProofReports = (input, options
16828
16855
  });
16829
16856
  };
16830
16857
  var loadVoiceRealCallProfileEvidenceFromTraceStore = async (options) => buildVoiceRealCallProfileEvidenceFromTraceEvents(await options.store.list({ limit: options.limit ?? 5000 }), options);
16858
+ var loadVoiceRealCallProfileEvidenceFromStore = async (options) => options.store.list(options);
16831
16859
  var realCallProfileTraceSignalTypes = new Set([
16832
16860
  "client.barge_in",
16833
16861
  "client.browser_media",
@@ -17670,6 +17698,74 @@ var createVoiceInMemoryRealCallProfileRecoveryJobStore = (options = {}) => {
17670
17698
  }
17671
17699
  };
17672
17700
  };
17701
+ var normalizeRealCallProfileEvidenceTableName = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice_real_call_profile_evidence";
17702
+ var parseRealCallProfileEvidenceBoundary = (value) => value === undefined ? undefined : value instanceof Date ? value.getTime() : typeof value === "number" ? value : Date.parse(value);
17703
+ var readRealCallProfileEvidenceSortTime = (evidence, fallback) => Date.parse(evidence.generatedAt ?? fallback) || Date.parse(fallback);
17704
+ var createVoiceSQLiteRealCallProfileEvidenceStore = (options = {}) => {
17705
+ const { Database: SQLiteDatabase } = __require("bun:sqlite");
17706
+ const database = options.database ?? new SQLiteDatabase(options.path ?? ":memory:", {
17707
+ create: true
17708
+ });
17709
+ const tableName = normalizeRealCallProfileEvidenceTableName(options.tableName ?? "voice_real_call_profile_evidence");
17710
+ const now = () => (options.now ?? (() => new Date))().toISOString();
17711
+ const createId3 = () => `${options.idPrefix ?? "voice-profile-evidence"}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
17712
+ database.exec("PRAGMA journal_mode = WAL;");
17713
+ database.exec("PRAGMA synchronous = NORMAL;");
17714
+ database.exec("PRAGMA busy_timeout = 5000;");
17715
+ database.exec(`CREATE TABLE IF NOT EXISTS "${tableName}" (
17716
+ id TEXT PRIMARY KEY,
17717
+ sort_at INTEGER NOT NULL,
17718
+ profile_id TEXT NOT NULL,
17719
+ session_id TEXT NOT NULL,
17720
+ created_at TEXT NOT NULL,
17721
+ payload TEXT NOT NULL
17722
+ )`);
17723
+ const selectStatement = database.query(`SELECT payload FROM "${tableName}" WHERE id = ?1 LIMIT 1`);
17724
+ const listStatement = database.query(`SELECT payload FROM "${tableName}" ORDER BY sort_at DESC, id DESC`);
17725
+ const upsertStatement = database.query(`INSERT INTO "${tableName}" (id, sort_at, profile_id, session_id, created_at, payload)
17726
+ VALUES (?1, ?2, ?3, ?4, ?5, ?6)
17727
+ ON CONFLICT(id) DO UPDATE SET
17728
+ sort_at = excluded.sort_at,
17729
+ profile_id = excluded.profile_id,
17730
+ session_id = excluded.session_id,
17731
+ created_at = excluded.created_at,
17732
+ payload = excluded.payload`);
17733
+ const deleteStatement = database.query(`DELETE FROM "${tableName}" WHERE id = ?1`);
17734
+ const writeEvidence = (record) => {
17735
+ upsertStatement.run(record.id, readRealCallProfileEvidenceSortTime(record, record.createdAt), record.profileId, record.sessionId, record.createdAt, JSON.stringify(record));
17736
+ return record;
17737
+ };
17738
+ const readEvidence = (id) => {
17739
+ const row = selectStatement.get(id);
17740
+ return row ? JSON.parse(row.payload) : undefined;
17741
+ };
17742
+ const matchesListOptions = (record, input) => {
17743
+ const evidenceTime = readRealCallProfileEvidenceSortTime(record, record.createdAt);
17744
+ const since = parseRealCallProfileEvidenceBoundary(input.since);
17745
+ const until = parseRealCallProfileEvidenceBoundary(input.until);
17746
+ return (!input.profileId || record.profileId === input.profileId) && (!input.sessionId || record.sessionId === input.sessionId) && (since === undefined || Number.isNaN(since) || evidenceTime >= since) && (until === undefined || Number.isNaN(until) || evidenceTime <= until);
17747
+ };
17748
+ return {
17749
+ append(input) {
17750
+ const createdAt = input.createdAt ?? now();
17751
+ return writeEvidence({
17752
+ ...input,
17753
+ createdAt,
17754
+ id: input.id ?? createId3()
17755
+ });
17756
+ },
17757
+ get(id) {
17758
+ return readEvidence(id);
17759
+ },
17760
+ list(input = {}) {
17761
+ const limit = Number.isFinite(input.limit) && input.limit !== undefined && input.limit > 0 ? Math.floor(input.limit) : 500;
17762
+ return listStatement.all().map((row) => JSON.parse(row.payload)).filter((record) => matchesListOptions(record, input)).slice(0, limit);
17763
+ },
17764
+ remove(id) {
17765
+ deleteStatement.run(id);
17766
+ }
17767
+ };
17768
+ };
17673
17769
  var normalizeRealCallRecoveryJobTableName = (value) => value.trim().replace(/[^a-zA-Z0-9_]+/g, "_").replace(/^_+|_+$/g, "") || "voice_real_call_profile_recovery_jobs";
17674
17770
  var createVoiceSQLiteRealCallProfileRecoveryJobStore = (options = {}) => {
17675
17771
  const { Database: SQLiteDatabase } = __require("bun:sqlite");
@@ -17923,6 +18019,13 @@ var buildVoiceRealCallProfileHistoryReport = (options = {}) => {
17923
18019
  trend
17924
18020
  };
17925
18021
  };
18022
+ var buildVoiceRealCallProfileHistoryReportFromStore = async (options) => {
18023
+ const evidence = await options.store.list(options);
18024
+ return buildVoiceRealCallProfileHistoryReport({
18025
+ ...options,
18026
+ evidence
18027
+ });
18028
+ };
17926
18029
  var normalizeProviderStatus = (status) => status === "pass" ? "pass" : status === "fail" ? "fail" : "warn";
17927
18030
  var providerSortScore = (provider) => [
17928
18031
  recommendationStatusRank[provider.status],
@@ -42307,6 +42410,7 @@ export {
42307
42410
  markVoiceOpsTaskSLABreached,
42308
42411
  mapVoiceProofTargetsWithConcurrency,
42309
42412
  loadVoiceRealCallProfileEvidenceFromTraceStore,
42413
+ loadVoiceRealCallProfileEvidenceFromStore,
42310
42414
  loadVoiceObservabilityExportReplaySource,
42311
42415
  listVoiceRoutingEvents,
42312
42416
  listVoiceProviderDecisionTraces,
@@ -42454,6 +42558,7 @@ export {
42454
42558
  createVoiceSQLiteRuntimeStorage,
42455
42559
  createVoiceSQLiteReviewStore,
42456
42560
  createVoiceSQLiteRealCallProfileRecoveryJobStore,
42561
+ createVoiceSQLiteRealCallProfileEvidenceStore,
42457
42562
  createVoiceSQLitePlivoWebhookNonceStore,
42458
42563
  createVoiceSQLiteIntegrationEventStore,
42459
42564
  createVoiceSQLiteExternalObjectMapStore,
@@ -42711,12 +42816,14 @@ export {
42711
42816
  buildVoiceSessionSnapshotStatus,
42712
42817
  buildVoiceSessionSnapshot,
42713
42818
  buildVoiceReconnectProofReport,
42819
+ buildVoiceReconnectProfileEvidenceSummary,
42714
42820
  buildVoiceRealtimeProviderContractMatrix,
42715
42821
  buildVoiceRealtimeChannelRuntimeSamplesFromTrace,
42716
42822
  buildVoiceRealtimeChannelReport,
42717
42823
  buildVoiceRealCallProfileRecoveryJobHistoryCheck,
42718
42824
  buildVoiceRealCallProfileRecoveryActions,
42719
42825
  buildVoiceRealCallProfileReadinessCheck,
42826
+ buildVoiceRealCallProfileHistoryReportFromStore,
42720
42827
  buildVoiceRealCallProfileHistoryReport,
42721
42828
  buildVoiceRealCallProfileEvidenceFromTraceEvents,
42722
42829
  buildVoiceRealCallProfileEvidenceFromReconnectProofReports,
@@ -162,6 +162,47 @@ export type VoiceProofTrendRealCallProfileEvidence = {
162
162
  surfaces?: string[];
163
163
  turnP95Ms?: number;
164
164
  };
165
+ export type VoiceRealCallProfileEvidenceRecord = VoiceProofTrendRealCallProfileEvidence & {
166
+ createdAt: string;
167
+ id: string;
168
+ };
169
+ export type VoiceReconnectProfileEvidenceSummaryStatus = "empty" | "fail" | "pass" | "warn";
170
+ export type VoiceReconnectProfileEvidenceSummary = {
171
+ evidence: VoiceRealCallProfileEvidenceRecord[];
172
+ generatedAt: string;
173
+ latest?: VoiceRealCallProfileEvidenceRecord;
174
+ ok: boolean;
175
+ profileId: string;
176
+ resumeLatencyP95Ms?: number;
177
+ sampleCount: number;
178
+ snapshotCount: number;
179
+ sourceHref?: string;
180
+ status: VoiceReconnectProfileEvidenceSummaryStatus;
181
+ };
182
+ export type VoiceRealCallProfileEvidenceCreateInput = VoiceProofTrendRealCallProfileEvidence & {
183
+ createdAt?: string;
184
+ id?: string;
185
+ };
186
+ export type VoiceRealCallProfileEvidenceListOptions = {
187
+ limit?: number;
188
+ profileId?: string;
189
+ sessionId?: string;
190
+ since?: Date | number | string;
191
+ until?: Date | number | string;
192
+ };
193
+ export type VoiceRealCallProfileEvidenceStore = {
194
+ append(input: VoiceRealCallProfileEvidenceCreateInput): Promise<VoiceRealCallProfileEvidenceRecord> | VoiceRealCallProfileEvidenceRecord;
195
+ get(id: string): Promise<VoiceRealCallProfileEvidenceRecord | undefined> | VoiceRealCallProfileEvidenceRecord | undefined;
196
+ list(options?: VoiceRealCallProfileEvidenceListOptions): Promise<VoiceRealCallProfileEvidenceRecord[]> | VoiceRealCallProfileEvidenceRecord[];
197
+ remove(id: string): Promise<void> | void;
198
+ };
199
+ export type VoiceSQLiteRealCallProfileEvidenceStoreOptions = {
200
+ database?: Database;
201
+ idPrefix?: string;
202
+ now?: () => Date;
203
+ path?: string;
204
+ tableName?: string;
205
+ };
165
206
  export type VoiceReconnectRealCallProfileEvidenceOptions = {
166
207
  operationsRecordHref?: string | ((report: VoiceReconnectProofReport | VoiceReconnectContractReport, index: number) => string | undefined);
167
208
  profileDescription?: string;
@@ -604,9 +645,17 @@ export declare const normalizeVoiceProofTrendReport: (value: VoiceProofTrendRepo
604
645
  export declare const readVoiceProofTrendReportFile: (path: string, options?: {
605
646
  maxAgeMs?: number;
606
647
  }) => Promise<VoiceProofTrendReport>;
648
+ export declare const buildVoiceReconnectProfileEvidenceSummary: (evidence: readonly VoiceRealCallProfileEvidenceRecord[], options?: {
649
+ generatedAt?: string;
650
+ profileId?: string;
651
+ sourceHref?: string;
652
+ }) => VoiceReconnectProfileEvidenceSummary;
607
653
  export declare const buildVoiceRealCallProfileEvidenceFromTraceEvents: (events: readonly StoredVoiceTraceEvent[], options?: VoiceRealCallProfileTraceEvidenceOptions) => VoiceProofTrendRealCallProfileEvidence[];
608
654
  export declare const buildVoiceRealCallProfileEvidenceFromReconnectProofReports: (input: VoiceReconnectProofReport | VoiceReconnectContractReport | readonly (VoiceReconnectProofReport | VoiceReconnectContractReport)[], options?: VoiceReconnectRealCallProfileEvidenceOptions) => VoiceProofTrendRealCallProfileEvidence[];
609
655
  export declare const loadVoiceRealCallProfileEvidenceFromTraceStore: (options: VoiceRealCallProfileTraceStoreEvidenceOptions) => Promise<VoiceProofTrendRealCallProfileEvidence[]>;
656
+ export declare const loadVoiceRealCallProfileEvidenceFromStore: (options: VoiceRealCallProfileEvidenceListOptions & {
657
+ store: VoiceRealCallProfileEvidenceStore;
658
+ }) => Promise<VoiceRealCallProfileEvidenceRecord[]>;
610
659
  export declare const createVoiceRealCallProfileTraceCollector: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(options: VoiceRealCallProfileTraceCollectorOptions<TEvent>) => VoiceRealCallProfileTraceCollector<TEvent>;
611
660
  export declare const buildVoiceProofTrendProfileSummaries: (input: VoiceProofTrendReport | readonly VoiceProofTrendReport[], options?: VoiceProofTrendProfileSummaryOptions) => VoiceProofTrendProfileSummary[];
612
661
  export declare const buildVoiceProofTrendReportFromRealCallProfiles: (options: VoiceProofTrendRealCallProfileReportOptions) => VoiceProofTrendReport;
@@ -618,11 +667,15 @@ export declare const createVoiceInMemoryRealCallProfileRecoveryJobStore: (option
618
667
  idPrefix?: string;
619
668
  now?: () => Date;
620
669
  }) => VoiceRealCallProfileRecoveryJobStore;
670
+ export declare const createVoiceSQLiteRealCallProfileEvidenceStore: (options?: VoiceSQLiteRealCallProfileEvidenceStoreOptions) => VoiceRealCallProfileEvidenceStore;
621
671
  export declare const createVoiceSQLiteRealCallProfileRecoveryJobStore: (options?: VoiceSQLiteRealCallProfileRecoveryJobStoreOptions) => VoiceRealCallProfileRecoveryJobStore;
622
672
  export declare const buildVoiceRealCallProfileReadinessCheck: (report: VoiceRealCallProfileHistoryReport, options?: VoiceRealCallProfileReadinessCheckOptions) => VoiceProductionReadinessCheck;
623
673
  export declare const buildVoiceRealCallProfileRecoveryJobHistoryCheck: (store: Pick<VoiceRealCallProfileRecoveryJobStore, "list"> | undefined, options?: VoiceRealCallProfileRecoveryJobHistoryCheckOptions) => Promise<VoiceProductionReadinessCheck>;
624
674
  export declare const resolveVoiceRealCallProfileProviderRoute: <TProvider extends string = string>(options: VoiceRealCallProfileProviderRouteOptions<TProvider>) => TProvider | undefined;
625
675
  export declare const buildVoiceRealCallProfileHistoryReport: (options?: VoiceRealCallProfileHistoryOptions) => VoiceRealCallProfileHistoryReport;
676
+ export declare const buildVoiceRealCallProfileHistoryReportFromStore: (options: Omit<VoiceRealCallProfileHistoryOptions, "evidence"> & VoiceRealCallProfileEvidenceListOptions & {
677
+ store: VoiceRealCallProfileEvidenceStore;
678
+ }) => Promise<VoiceRealCallProfileHistoryReport>;
626
679
  export declare const evaluateVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
627
680
  export declare const assertVoiceProofTrendEvidence: (report: VoiceProofTrendReport, input?: VoiceProofTrendAssertionInput) => VoiceProofTrendAssertionReport;
628
681
  export declare const buildVoiceProofTrendRecommendationReport: (report: VoiceProofTrendReport, options?: VoiceProofTrendRecommendationOptions) => VoiceProofTrendRecommendationReport;
@@ -0,0 +1,6 @@
1
+ import { type VoiceReconnectProfileEvidenceWidgetOptions } from "../client/reconnectProfileEvidenceWidget";
2
+ export type VoiceReconnectProfileEvidenceProps = VoiceReconnectProfileEvidenceWidgetOptions & {
3
+ className?: string;
4
+ path?: string;
5
+ };
6
+ export declare const VoiceReconnectProfileEvidence: ({ className, path, ...options }: VoiceReconnectProfileEvidenceProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,6 +3,7 @@ export { VoiceOpsActionCenter } from "./VoiceOpsActionCenter";
3
3
  export { VoiceDeliveryRuntime } from "./VoiceDeliveryRuntime";
4
4
  export { VoicePlatformCoverage } from "./VoicePlatformCoverage";
5
5
  export { VoiceProofTrends } from "./VoiceProofTrends";
6
+ export { VoiceReconnectProfileEvidence } from "./VoiceReconnectProfileEvidence";
6
7
  export { VoiceCallDebuggerLaunch } from "./VoiceCallDebuggerLaunch";
7
8
  export { VoiceSessionSnapshot } from "./VoiceSessionSnapshot";
8
9
  export { VoiceProfileComparison } from "./VoiceProfileComparison";
@@ -20,6 +21,7 @@ export { VoiceTurnQuality } from "./VoiceTurnQuality";
20
21
  export { useVoiceOpsStatus } from "./useVoiceOpsStatus";
21
22
  export { useVoicePlatformCoverage } from "./useVoicePlatformCoverage";
22
23
  export { useVoiceProofTrends } from "./useVoiceProofTrends";
24
+ export { useVoiceReconnectProfileEvidence } from "./useVoiceReconnectProfileEvidence";
23
25
  export { useVoiceCallDebugger } from "./useVoiceCallDebugger";
24
26
  export { useVoiceSessionSnapshot } from "./useVoiceSessionSnapshot";
25
27
  export { useVoiceProfileComparison } from "./useVoiceProfileComparison";