@absolutejs/voice 0.0.22-beta.266 → 0.0.22-beta.267

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
@@ -17404,6 +17404,8 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
17404
17404
  const duplicateDecisions = decisions.filter((decision) => decision.duplicate === true);
17405
17405
  const duplicateProviders = uniqueSorted3(duplicateDecisions.map((decision) => decision.provider ?? decision.event?.provider).filter(isTelephonyWebhookProvider));
17406
17406
  const duplicateIdempotencyKeys = new Set(duplicateDecisions.map((decision) => decision.idempotencyKey).filter((key) => typeof key === "string" && key.length > 0)).size;
17407
+ const duplicateCampaignOutcomesApplied = duplicateDecisions.filter((decision) => isRecord(decision.campaignOutcome) && decision.campaignOutcome.applied === true).length;
17408
+ const duplicateOutcomeReasons = uniqueSorted3(duplicateDecisions.map((decision) => isRecord(decision.campaignOutcome) ? decision.campaignOutcome.reason : undefined).filter((reason) => typeof reason === "string"));
17407
17409
  const routeResults = decisions.filter((decision) => isRecord(decision.routeResult)).length;
17408
17410
  const missingSessionIds = decisions.filter((decision) => !decision.sessionId).length;
17409
17411
  if (input.minDecisions !== undefined && decisions.length < input.minDecisions) {
@@ -17418,6 +17420,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
17418
17420
  if (input.minDuplicateIdempotencyKeys !== undefined && duplicateIdempotencyKeys < input.minDuplicateIdempotencyKeys) {
17419
17421
  issues.push(`Expected at least ${String(input.minDuplicateIdempotencyKeys)} duplicate telephony webhook idempotency key(s), found ${String(duplicateIdempotencyKeys)}.`);
17420
17422
  }
17423
+ if (input.maxDuplicateCampaignOutcomesApplied !== undefined && duplicateCampaignOutcomesApplied > input.maxDuplicateCampaignOutcomesApplied) {
17424
+ issues.push(`Expected at most ${String(input.maxDuplicateCampaignOutcomesApplied)} duplicate telephony webhook campaign outcome application(s), found ${String(duplicateCampaignOutcomesApplied)}.`);
17425
+ }
17421
17426
  if (input.maxMissingSessionIds !== undefined && missingSessionIds > input.maxMissingSessionIds) {
17422
17427
  issues.push(`Expected at most ${String(input.maxMissingSessionIds)} telephony webhook decision(s) without sessionId, found ${String(missingSessionIds)}.`);
17423
17428
  }
@@ -17441,7 +17446,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
17441
17446
  applied,
17442
17447
  decisions: decisions.length,
17443
17448
  dispositions,
17449
+ duplicateCampaignOutcomesApplied,
17444
17450
  duplicateIdempotencyKeys,
17451
+ duplicateOutcomeReasons,
17445
17452
  duplicateProviders,
17446
17453
  duplicates: duplicateDecisions.length,
17447
17454
  issues,
@@ -75,6 +75,7 @@ export type VoiceTelephonyWebhookNormalizationEvidenceDecision = {
75
75
  };
76
76
  disposition?: VoiceCallDisposition | string;
77
77
  duplicate?: boolean;
78
+ campaignOutcome?: unknown;
78
79
  event?: VoiceTelephonyOutcomeProviderEvent;
79
80
  idempotencyKey?: string;
80
81
  provider?: VoiceTelephonyWebhookProvider | string;
@@ -89,6 +90,7 @@ export type VoiceTelephonyWebhookNormalizationEvidenceInput = {
89
90
  minDecisions?: number;
90
91
  minDuplicateIdempotencyKeys?: number;
91
92
  minDuplicates?: number;
93
+ maxDuplicateCampaignOutcomesApplied?: number;
92
94
  requiredActions?: VoiceTelephonyOutcomeAction[];
93
95
  requiredDispositions?: VoiceCallDisposition[];
94
96
  requiredDuplicateProviders?: VoiceTelephonyWebhookProvider[];
@@ -100,7 +102,9 @@ export type VoiceTelephonyWebhookNormalizationEvidenceReport = {
100
102
  applied: number;
101
103
  decisions: number;
102
104
  dispositions: VoiceCallDisposition[];
105
+ duplicateCampaignOutcomesApplied: number;
103
106
  duplicateIdempotencyKeys: number;
107
+ duplicateOutcomeReasons: string[];
104
108
  duplicateProviders: VoiceTelephonyWebhookProvider[];
105
109
  duplicates: number;
106
110
  issues: string[];
@@ -8259,6 +8259,8 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
8259
8259
  const duplicateDecisions = decisions.filter((decision) => decision.duplicate === true);
8260
8260
  const duplicateProviders = uniqueSorted(duplicateDecisions.map((decision) => decision.provider ?? decision.event?.provider).filter(isTelephonyWebhookProvider));
8261
8261
  const duplicateIdempotencyKeys = new Set(duplicateDecisions.map((decision) => decision.idempotencyKey).filter((key) => typeof key === "string" && key.length > 0)).size;
8262
+ const duplicateCampaignOutcomesApplied = duplicateDecisions.filter((decision) => isRecord(decision.campaignOutcome) && decision.campaignOutcome.applied === true).length;
8263
+ const duplicateOutcomeReasons = uniqueSorted(duplicateDecisions.map((decision) => isRecord(decision.campaignOutcome) ? decision.campaignOutcome.reason : undefined).filter((reason) => typeof reason === "string"));
8262
8264
  const routeResults = decisions.filter((decision) => isRecord(decision.routeResult)).length;
8263
8265
  const missingSessionIds = decisions.filter((decision) => !decision.sessionId).length;
8264
8266
  if (input.minDecisions !== undefined && decisions.length < input.minDecisions) {
@@ -8273,6 +8275,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
8273
8275
  if (input.minDuplicateIdempotencyKeys !== undefined && duplicateIdempotencyKeys < input.minDuplicateIdempotencyKeys) {
8274
8276
  issues.push(`Expected at least ${String(input.minDuplicateIdempotencyKeys)} duplicate telephony webhook idempotency key(s), found ${String(duplicateIdempotencyKeys)}.`);
8275
8277
  }
8278
+ if (input.maxDuplicateCampaignOutcomesApplied !== undefined && duplicateCampaignOutcomesApplied > input.maxDuplicateCampaignOutcomesApplied) {
8279
+ issues.push(`Expected at most ${String(input.maxDuplicateCampaignOutcomesApplied)} duplicate telephony webhook campaign outcome application(s), found ${String(duplicateCampaignOutcomesApplied)}.`);
8280
+ }
8276
8281
  if (input.maxMissingSessionIds !== undefined && missingSessionIds > input.maxMissingSessionIds) {
8277
8282
  issues.push(`Expected at most ${String(input.maxMissingSessionIds)} telephony webhook decision(s) without sessionId, found ${String(missingSessionIds)}.`);
8278
8283
  }
@@ -8296,7 +8301,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
8296
8301
  applied,
8297
8302
  decisions: decisions.length,
8298
8303
  dispositions,
8304
+ duplicateCampaignOutcomesApplied,
8299
8305
  duplicateIdempotencyKeys,
8306
+ duplicateOutcomeReasons,
8300
8307
  duplicateProviders,
8301
8308
  duplicates: duplicateDecisions.length,
8302
8309
  issues,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.266",
3
+ "version": "0.0.22-beta.267",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",