@absolutejs/voice 0.0.22-beta.420 → 0.0.22-beta.422
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 +1 -1
- package/dist/index.js +41 -23
- package/dist/observabilityExport.d.ts +7 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -157,7 +157,7 @@ export type { VoiceMonitorDefinition, VoiceMonitorEvaluation, VoiceMonitorEvalua
|
|
|
157
157
|
export type { VoiceReadinessProfileName, VoiceReadinessProfileOptions, VoiceReadinessProfileRecommendation, VoiceReadinessProfileRecommendationScore, VoiceReadinessProfileRoutesOptions } from './readinessProfiles';
|
|
158
158
|
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';
|
|
159
159
|
export type { VoiceFailureReplayMediaStep, VoiceFailureReplayOptions, VoiceFailureReplayProviderStep, VoiceFailureReplayReport, VoiceFailureReplayStatus, VoiceFailureReplayTurn, VoiceOperationsRecord, VoiceOperationsRecordAgentHandoff, VoiceOperationsRecordAuditSummary, VoiceOperationsRecordGuardrailAssertionInput, VoiceOperationsRecordGuardrailAssertionReport, VoiceOperationsRecordGuardrailDecision, VoiceOperationsRecordGuardrailFinding, VoiceOperationsRecordGuardrailSummary, VoiceOperationsRecordIntegrationEventSummary, VoiceOperationsRecordOptions, VoiceOperationsRecordOutcome, VoiceOperationsRecordProviderDecision, VoiceOperationsRecordProviderDecisionRecoveryStatus, VoiceOperationsRecordProviderDecisionSummary, VoiceOperationsRecordProviderRecoveryAssertionInput, VoiceOperationsRecordProviderRecoveryAssertionReport, VoiceOperationsRecordReviewSummary, VoiceOperationsRecordRoutesOptions, VoiceOperationsRecordStatus, VoiceOperationsRecordTaskSummary, VoiceOperationsRecordTelephonyMediaEvent, VoiceOperationsRecordTelephonyMediaSummary, VoiceOperationsRecordTranscriptTurn, VoiceOperationsRecordTool } from './operationsRecord';
|
|
160
|
-
export type { VoiceObservabilityExportArtifact, VoiceObservabilityExportArtifactChecksum, VoiceObservabilityExportArtifactFreshness, VoiceObservabilityExportArtifactIndex, VoiceObservabilityExportArtifactIndexItem, VoiceObservabilityExportArtifactKind, VoiceObservabilityExportDeliveryAssertionInput, VoiceObservabilityExportDeliveryAssertionReport, VoiceObservabilityExportDeliverySummary, VoiceObservabilityExportDeliveryDestination, VoiceObservabilityExportDeliveryDestinationResult, VoiceObservabilityExportDeliveryHistory, VoiceObservabilityExportDeliveryOptions, VoiceObservabilityExportDeliveryReceipt, VoiceObservabilityExportDeliveryReceiptStore, VoiceObservabilityExportDeliveryReport, VoiceObservabilityExportEnvelope, VoiceObservabilityExportIssue, VoiceObservabilityExportIssueCode, VoiceObservabilityExportOptions, VoiceObservabilityExportIngestedRecordKind, VoiceObservabilityExportRedactionSummary, VoiceObservabilityExportRecordValidationOptions, VoiceObservabilityExportReplayIssue, VoiceObservabilityExportReplayIssueCode, VoiceObservabilityExportReplayAssertionInput, VoiceObservabilityExportReplayAssertionReport, VoiceObservabilityExportReplayRecords, VoiceObservabilityExportReplayReport, VoiceObservabilityExportReplayRoutesOptions, VoiceObservabilityExportReplaySource, VoiceObservabilityExportReport, VoiceObservabilityExportRoutesOptions, VoiceObservabilityExportSchema, VoiceObservabilityExportStatus, VoiceObservabilityExportValidationIssue, VoiceObservabilityExportValidationResult } from './observabilityExport';
|
|
160
|
+
export type { VoiceObservabilityExportArtifact, VoiceObservabilityExportArtifactChecksum, VoiceObservabilityExportArtifactFreshness, VoiceObservabilityExportArtifactIndex, VoiceObservabilityExportArtifactIndexItem, VoiceObservabilityExportArtifactKind, VoiceObservabilityExportDeliveryAssertionInput, VoiceObservabilityExportDeliveryAssertionReport, VoiceObservabilityExportDeliverySummary, VoiceObservabilityExportDeliveryDestination, VoiceObservabilityExportDeliveryDestinationResult, VoiceObservabilityExportDeliveryHistory, VoiceObservabilityExportDeliveryOptions, VoiceObservabilityExportDeliveryReceipt, VoiceObservabilityExportDeliveryReceiptStore, VoiceObservabilityExportDeliveryReport, VoiceObservabilityExportEnvelope, VoiceObservabilityExportIssue, VoiceObservabilityExportIssueCode, VoiceObservabilityExportOptions, VoiceObservabilityExportIngestedRecordKind, VoiceObservabilityExportRedactionSummary, VoiceObservabilityExportRecordValidationOptions, VoiceObservabilityExportReplayIssue, VoiceObservabilityExportReplayIssueCode, VoiceObservabilityExportReplayAssertionInput, VoiceObservabilityExportReplayAssertionReport, VoiceObservabilityExportReplayRecords, VoiceObservabilityExportReplayReport, VoiceObservabilityExportReplayRoutesOptions, VoiceObservabilityExportReplaySource, VoiceObservabilityExportReport, VoiceObservabilityExportRoutesOptions, VoiceObservabilityExportSchema, VoiceObservabilityExportStatus, VoiceObservabilityExportTiming, VoiceObservabilityExportValidationIssue, VoiceObservabilityExportValidationResult } from './observabilityExport';
|
|
161
161
|
export type { VoiceOpsRecoveryFailedSession, VoiceOpsRecoveryInterventionSummary, VoiceOpsRecoveryIssue, VoiceOpsRecoveryIssueCode, VoiceOpsRecoveryLinks, VoiceOpsRecoveryProviderSummary, VoiceOpsRecoveryReport, VoiceOpsRecoveryReportOptions, VoiceOpsRecoveryRoutesOptions, VoiceOpsRecoveryStatus } from './opsRecovery';
|
|
162
162
|
export type { StoredVoiceIncidentBundleArtifact, VoiceIncidentBundle, VoiceIncidentBundleArtifactOptions, VoiceIncidentBundleFormat, VoiceIncidentBundleOptions, VoiceIncidentBundleRetentionOptions, VoiceIncidentBundleRetentionReport, VoiceIncidentBundleRoutesOptions, VoiceIncidentBundleStore, VoiceIncidentBundleStoreFilter, VoiceIncidentBundleSummary } from './incidentBundle';
|
|
163
163
|
export type { VoiceQualityLink, VoiceQualityMetric, VoiceQualityReport, VoiceQualityRoutesOptions, VoiceQualityStatus, VoiceQualityThresholds } from './qualityRoutes';
|
package/dist/index.js
CHANGED
|
@@ -33102,10 +33102,10 @@ var verifyArtifact = async (artifact, options) => {
|
|
|
33102
33102
|
const generatedAtMs = toEpochMs(generatedAt);
|
|
33103
33103
|
const ageMs = generatedAtMs === undefined ? undefined : now - generatedAtMs;
|
|
33104
33104
|
const isStale = maxAgeMs !== undefined && ageMs !== undefined && ageMs > maxAgeMs;
|
|
33105
|
-
const checksum = options.checksum ===
|
|
33105
|
+
const checksum = options.checksum === "sha256" ? {
|
|
33106
33106
|
algorithm: "sha256",
|
|
33107
33107
|
value: await checksumFile(filePath)
|
|
33108
|
-
};
|
|
33108
|
+
} : artifact.checksum;
|
|
33109
33109
|
return {
|
|
33110
33110
|
...artifact,
|
|
33111
33111
|
bytes: artifact.bytes ?? file.size,
|
|
@@ -33248,60 +33248,78 @@ var buildAuditEnvelope = (event, operationsRecordHref) => ({
|
|
|
33248
33248
|
});
|
|
33249
33249
|
var resolveObservabilityExportList = async (value) => typeof value === "function" ? await value() : value ?? [];
|
|
33250
33250
|
var buildVoiceObservabilityExport = async (options = {}) => {
|
|
33251
|
-
const
|
|
33252
|
-
|
|
33251
|
+
const time = async (label, run) => {
|
|
33252
|
+
const startedAt = Date.now();
|
|
33253
|
+
try {
|
|
33254
|
+
return await run();
|
|
33255
|
+
} finally {
|
|
33256
|
+
const endedAt = Date.now();
|
|
33257
|
+
options.onTiming?.({
|
|
33258
|
+
durationMs: Math.max(0, endedAt - startedAt),
|
|
33259
|
+
endedAt,
|
|
33260
|
+
label,
|
|
33261
|
+
startedAt
|
|
33262
|
+
});
|
|
33263
|
+
}
|
|
33264
|
+
};
|
|
33265
|
+
const events = await time("events", async () => options.events ?? await options.store?.list() ?? []);
|
|
33266
|
+
const auditEvents = await time("auditEvents", async () => options.audit ? await options.audit.list() : []);
|
|
33253
33267
|
const baseOperationsRecords = options.operationsRecords ?? [];
|
|
33254
|
-
const [sessionSnapshots, callDebuggerReports] = await Promise.all([
|
|
33268
|
+
const [sessionSnapshots, callDebuggerReports] = await time("supportArtifacts", () => Promise.all([
|
|
33255
33269
|
resolveObservabilityExportList(options.sessionSnapshots),
|
|
33256
33270
|
resolveObservabilityExportList(options.callDebuggerReports)
|
|
33257
|
-
]);
|
|
33258
|
-
const sessionIds = collectSessionIds({
|
|
33271
|
+
]));
|
|
33272
|
+
const sessionIds = await time("sessionIds", () => collectSessionIds({
|
|
33259
33273
|
auditEvents,
|
|
33260
33274
|
callDebuggerReports,
|
|
33261
33275
|
events,
|
|
33262
33276
|
operationsRecords: baseOperationsRecords,
|
|
33263
33277
|
sessionIds: options.sessionIds,
|
|
33264
33278
|
sessionSnapshots
|
|
33265
|
-
});
|
|
33279
|
+
}));
|
|
33266
33280
|
const shouldBuildOperationsRecords = options.includeOperationsRecords === true && options.store;
|
|
33267
|
-
const builtOperationsRecords = shouldBuildOperationsRecords ?
|
|
33281
|
+
const builtOperationsRecords = await time("operationsRecords", () => shouldBuildOperationsRecords ? Promise.all(sessionIds.map((sessionId) => buildVoiceOperationsRecord({
|
|
33268
33282
|
audit: options.audit,
|
|
33269
33283
|
redact: options.redact,
|
|
33270
33284
|
sessionId,
|
|
33271
33285
|
store: options.store
|
|
33272
|
-
}))) : [];
|
|
33286
|
+
}))) : []);
|
|
33273
33287
|
const operationsRecords = [
|
|
33274
33288
|
...baseOperationsRecords,
|
|
33275
33289
|
...builtOperationsRecords.filter((record) => !baseOperationsRecords.some((existing) => existing.sessionId === record.sessionId))
|
|
33276
33290
|
];
|
|
33277
|
-
const traceDeliveries =
|
|
33278
|
-
|
|
33279
|
-
|
|
33280
|
-
|
|
33281
|
-
const
|
|
33282
|
-
|
|
33283
|
-
|
|
33284
|
-
|
|
33291
|
+
const [traceDeliveries, auditDeliveries] = await time("deliveries", () => Promise.all([
|
|
33292
|
+
options.traceDeliveries ? isDeliveryStore(options.traceDeliveries) ? options.traceDeliveries.list() : options.traceDeliveries : undefined,
|
|
33293
|
+
options.auditDeliveries ? isDeliveryStore(options.auditDeliveries) ? options.auditDeliveries.list() : options.auditDeliveries : undefined
|
|
33294
|
+
]));
|
|
33295
|
+
const [traceDeliverySummary, auditDeliverySummary] = await time("deliverySummaries", () => Promise.all([
|
|
33296
|
+
traceDeliveries ? summarizeVoiceTraceSinkDeliveries(traceDeliveries) : undefined,
|
|
33297
|
+
auditDeliveries ? summarizeVoiceAuditSinkDeliveries(auditDeliveries) : undefined
|
|
33298
|
+
]));
|
|
33299
|
+
const operationArtifacts = await time("operationArtifacts", () => operationsRecords.map((record) => createOperationArtifact(record, options.links?.operationsRecord?.(record.sessionId))));
|
|
33300
|
+
const sessionSnapshotArtifacts = await time("sessionSnapshotArtifacts", () => sessionSnapshots.map((snapshot) => createSessionSnapshotArtifact(snapshot, options.links?.sessionSnapshot?.(snapshot.sessionId))));
|
|
33301
|
+
const callDebuggerArtifacts = await time("callDebuggerArtifacts", () => callDebuggerReports.map((report) => createCallDebuggerArtifact(report, options.links?.callDebugger?.(report.sessionId))));
|
|
33302
|
+
const artifacts = await time("artifacts", async () => addArtifactDownloadHrefs(await verifyArtifacts([
|
|
33285
33303
|
...operationArtifacts,
|
|
33286
33304
|
...sessionSnapshotArtifacts,
|
|
33287
33305
|
...callDebuggerArtifacts,
|
|
33288
33306
|
...options.artifacts ?? []
|
|
33289
|
-
], options.artifactIntegrity), options.links);
|
|
33307
|
+
], options.artifactIntegrity), options.links));
|
|
33290
33308
|
const operationHrefBySessionId = new Map(sessionIds.map((sessionId) => [
|
|
33291
33309
|
sessionId,
|
|
33292
33310
|
options.links?.operationsRecord?.(sessionId)
|
|
33293
33311
|
]));
|
|
33294
|
-
const envelopes = [
|
|
33312
|
+
const envelopes = await time("envelopes", () => [
|
|
33295
33313
|
...events.map((event) => buildTraceEnvelope(event, operationHrefBySessionId.get(event.sessionId))),
|
|
33296
33314
|
...auditEvents.map((event) => buildAuditEnvelope(event, event.sessionId ? operationHrefBySessionId.get(event.sessionId) : undefined))
|
|
33297
|
-
].sort((left, right) => left.at - right.at);
|
|
33298
|
-
const issues = collectIssues({
|
|
33315
|
+
].sort((left, right) => left.at - right.at));
|
|
33316
|
+
const issues = await time("issues", () => collectIssues({
|
|
33299
33317
|
artifacts,
|
|
33300
33318
|
auditDeliveries: auditDeliverySummary,
|
|
33301
33319
|
operationsRecords,
|
|
33302
33320
|
totalEvidence: events.length + auditEvents.length + operationsRecords.length + artifacts.length,
|
|
33303
33321
|
traceDeliveries: traceDeliverySummary
|
|
33304
|
-
});
|
|
33322
|
+
}));
|
|
33305
33323
|
const status = issues.some((issue) => issue.severity === "fail") ? "fail" : issues.some((issue) => issue.severity === "warn") ? "warn" : "pass";
|
|
33306
33324
|
return {
|
|
33307
33325
|
artifacts,
|
|
@@ -390,12 +390,19 @@ export type VoiceObservabilityExportOptions = {
|
|
|
390
390
|
};
|
|
391
391
|
callDebuggerReports?: VoiceCallDebuggerReport[] | (() => VoiceCallDebuggerReport[] | Promise<VoiceCallDebuggerReport[]>);
|
|
392
392
|
operationsRecords?: VoiceOperationsRecord[];
|
|
393
|
+
onTiming?: (timing: VoiceObservabilityExportTiming) => void;
|
|
393
394
|
redact?: VoiceTraceRedactionConfig;
|
|
394
395
|
sessionIds?: string[];
|
|
395
396
|
sessionSnapshots?: VoiceSessionSnapshot[] | (() => VoiceSessionSnapshot[] | Promise<VoiceSessionSnapshot[]>);
|
|
396
397
|
store?: VoiceTraceEventStore;
|
|
397
398
|
traceDeliveries?: VoiceTraceSinkDeliveryRecord[] | VoiceTraceSinkDeliveryStore;
|
|
398
399
|
};
|
|
400
|
+
export type VoiceObservabilityExportTiming = {
|
|
401
|
+
durationMs: number;
|
|
402
|
+
endedAt: number;
|
|
403
|
+
label: string;
|
|
404
|
+
startedAt: number;
|
|
405
|
+
};
|
|
399
406
|
export type VoiceObservabilityExportRoutesOptions = VoiceObservabilityExportOptions & {
|
|
400
407
|
headers?: HeadersInit;
|
|
401
408
|
artifactDownloadPath?: false | string;
|