@absolutejs/voice 0.0.22-beta.421 → 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 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
@@ -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 events = options.events ?? await options.store?.list() ?? [];
33252
- const auditEvents = options.audit ? await options.audit.list() : [];
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 ? await Promise.all(sessionIds.map((sessionId) => buildVoiceOperationsRecord({
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 = options.traceDeliveries ? isDeliveryStore(options.traceDeliveries) ? await options.traceDeliveries.list() : options.traceDeliveries : undefined;
33278
- const auditDeliveries = options.auditDeliveries ? isDeliveryStore(options.auditDeliveries) ? await options.auditDeliveries.list() : options.auditDeliveries : undefined;
33279
- const traceDeliverySummary = traceDeliveries ? await summarizeVoiceTraceSinkDeliveries(traceDeliveries) : undefined;
33280
- const auditDeliverySummary = auditDeliveries ? await summarizeVoiceAuditSinkDeliveries(auditDeliveries) : undefined;
33281
- const operationArtifacts = operationsRecords.map((record) => createOperationArtifact(record, options.links?.operationsRecord?.(record.sessionId)));
33282
- const sessionSnapshotArtifacts = sessionSnapshots.map((snapshot) => createSessionSnapshotArtifact(snapshot, options.links?.sessionSnapshot?.(snapshot.sessionId)));
33283
- const callDebuggerArtifacts = callDebuggerReports.map((report) => createCallDebuggerArtifact(report, options.links?.callDebugger?.(report.sessionId)));
33284
- const artifacts = addArtifactDownloadHrefs(await verifyArtifacts([
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.421",
3
+ "version": "0.0.22-beta.422",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",