@trii/types 2.10.730 → 2.10.732

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.
Files changed (111) hide show
  1. package/dist/Automations/Events/Event.d.ts +3 -3
  2. package/dist/Common/index.js +7 -17
  3. package/dist/Contacts/CommunicationEndpoint.d.ts +8 -8
  4. package/dist/Conversations/Classifications/ClassificationTaxonomy.d.ts +67 -0
  5. package/dist/Conversations/Classifications/ClassificationTaxonomy.js +5 -0
  6. package/dist/Conversations/Classifications/ConversationClassificationEvaluation.d.ts +67 -0
  7. package/dist/Conversations/Classifications/ConversationClassificationEvents.d.ts +29 -0
  8. package/dist/Conversations/Classifications/ConversationClassificationEvents.js +8 -0
  9. package/dist/Conversations/Classifications/index.d.ts +3 -0
  10. package/dist/Conversations/Classifications/index.js +19 -0
  11. package/dist/Conversations/Conversation.d.ts +27 -12
  12. package/dist/Conversations/InboxMongo.d.ts +12 -12
  13. package/dist/Conversations/Routing.d.ts +10 -10
  14. package/dist/Conversations/index.d.ts +1 -0
  15. package/dist/Conversations/index.js +8 -17
  16. package/dist/Events/DomainEventTypes.d.ts +23 -23
  17. package/dist/index.js +7 -17
  18. package/dist/src/Automations/Capabilities/Capability.d.ts +81 -0
  19. package/dist/src/Automations/Capabilities/Capability.js +23 -0
  20. package/dist/src/Automations/Capabilities/index.d.ts +1 -0
  21. package/dist/src/Automations/Capabilities/index.js +17 -0
  22. package/dist/src/Automations/Common.d.ts +94 -0
  23. package/dist/src/Automations/Common.js +40 -0
  24. package/dist/src/Automations/Events/Event.d.ts +69 -0
  25. package/dist/src/Automations/Events/Event.js +14 -0
  26. package/dist/src/Automations/Events/index.d.ts +1 -0
  27. package/dist/src/Automations/Events/index.js +17 -0
  28. package/dist/src/Automations/Executions/Execution.d.ts +254 -0
  29. package/dist/src/Automations/Executions/Execution.js +62 -0
  30. package/dist/src/Automations/Executions/Testing.d.ts +166 -0
  31. package/dist/src/Automations/Executions/Testing.js +54 -0
  32. package/dist/src/Automations/Executions/index.d.ts +2 -0
  33. package/dist/src/Automations/Executions/index.js +18 -0
  34. package/dist/src/Automations/Flows/Canvas.d.ts +103 -0
  35. package/dist/src/Automations/Flows/Canvas.js +38 -0
  36. package/dist/src/Automations/Flows/Flow.d.ts +147 -0
  37. package/dist/src/Automations/Flows/Flow.js +58 -0
  38. package/dist/src/Automations/Flows/Requests.d.ts +71 -0
  39. package/dist/src/Automations/Flows/Requests.js +2 -0
  40. package/dist/src/Automations/Flows/Validation.d.ts +28 -0
  41. package/dist/src/Automations/Flows/Validation.js +9 -0
  42. package/dist/src/Automations/Flows/index.d.ts +4 -0
  43. package/dist/src/Automations/Flows/index.js +20 -0
  44. package/dist/src/Automations/Nodes/Node.d.ts +113 -0
  45. package/dist/src/Automations/Nodes/Node.js +27 -0
  46. package/dist/src/Automations/Nodes/index.d.ts +1 -0
  47. package/dist/src/Automations/Nodes/index.js +17 -0
  48. package/dist/src/Automations/index.d.ts +6 -0
  49. package/dist/src/Automations/index.js +22 -0
  50. package/dist/src/Chats/Chat.d.ts +61 -0
  51. package/dist/src/Chats/Chat.js +28 -0
  52. package/dist/src/Common/Channels/Channel.d.ts +28 -1
  53. package/dist/src/Contacts/contacts.d.ts +2 -2
  54. package/dist/src/Conversations/Assignment.d.ts +81 -0
  55. package/dist/src/Conversations/Assignment.js +4 -0
  56. package/dist/src/Conversations/Conversation.d.ts +331 -48
  57. package/dist/src/Conversations/Conversation.js +14 -34
  58. package/dist/src/Conversations/DashBoard/dashboard.d.ts +2 -2
  59. package/dist/src/Conversations/Flows/Workflows/Workflow.d.ts +280 -123
  60. package/dist/src/Conversations/Flows/Workflows/Workflow.js +85 -35
  61. package/dist/src/Conversations/Groups/Group.d.ts +2 -8
  62. package/dist/src/Conversations/Groups/Group.js +0 -6
  63. package/dist/src/Conversations/InboxMongo.d.ts +154 -0
  64. package/dist/src/Conversations/InboxMongo.js +128 -0
  65. package/dist/src/Conversations/InboxProjection.d.ts +162 -0
  66. package/dist/src/Conversations/InboxProjection.js +2 -0
  67. package/dist/src/Conversations/Label.d.ts +1 -1
  68. package/dist/src/Conversations/Outbox.d.ts +24 -0
  69. package/dist/src/Conversations/Outbox.js +4 -0
  70. package/dist/src/Conversations/Queue.d.ts +107 -0
  71. package/dist/src/Conversations/Queue.js +4 -0
  72. package/dist/src/Conversations/Routing.d.ts +164 -0
  73. package/dist/src/Conversations/Routing.js +2 -0
  74. package/dist/src/Conversations/Sla.d.ts +227 -0
  75. package/dist/src/Conversations/Sla.js +6 -0
  76. package/dist/src/Conversations/Transfer.d.ts +73 -0
  77. package/dist/src/Conversations/Transfer.js +2 -0
  78. package/dist/src/Conversations/WebHook.d.ts +1 -1
  79. package/dist/src/Conversations/index.d.ts +9 -1
  80. package/dist/src/Conversations/index.js +9 -1
  81. package/dist/src/Forms/API.d.ts +53 -0
  82. package/dist/src/Forms/API.js +2 -0
  83. package/dist/src/Forms/SubmittedForm.d.ts +56 -0
  84. package/dist/src/Forms/SubmittedForm.js +9 -0
  85. package/dist/src/Forms/index.d.ts +2 -0
  86. package/dist/src/Forms/index.js +18 -0
  87. package/dist/src/Presence/AgentPause.d.ts +24 -0
  88. package/dist/src/Presence/AgentPause.js +19 -0
  89. package/dist/src/Presence/QueueParticipation.d.ts +17 -0
  90. package/dist/src/Presence/QueueParticipation.js +2 -0
  91. package/dist/src/Presence/QueueRoutingState.d.ts +27 -0
  92. package/dist/src/Presence/QueueRoutingState.js +9 -0
  93. package/dist/src/Presence/index.d.ts +3 -0
  94. package/dist/src/Presence/index.js +19 -0
  95. package/dist/src/Tickets/Category.d.ts +18 -0
  96. package/dist/src/Tickets/Dashboard.d.ts +78 -0
  97. package/dist/src/Tickets/Dashboard.js +13 -1
  98. package/dist/src/Tickets/Fields.d.ts +1 -0
  99. package/dist/src/Tickets/Layouts.d.ts +3 -1
  100. package/dist/src/Tickets/Workflow.d.ts +20 -0
  101. package/dist/src/Users/UserTrii.d.ts +10 -0
  102. package/dist/src/Users/UserTrii.js +8 -1
  103. package/dist/src/index.d.ts +3 -0
  104. package/dist/src/index.js +4 -1
  105. package/package.json +5 -2
  106. package/dist/Conversations/DashBoard/dashboardForms.d.ts +0 -44
  107. package/dist/Conversations/DashBoard/dashboardForms.js +0 -24
  108. package/dist/Conversations/InboxCounters.d.ts +0 -18
  109. package/dist/src/Conversations/DashBoard/dashboardForms.d.ts +0 -44
  110. package/dist/src/Conversations/DashBoard/dashboardForms.js +0 -24
  111. /package/dist/Conversations/{InboxCounters.js → Classifications/ConversationClassificationEvaluation.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { AutomationCustomer, AutomationJsonObject, AutomationJsonSchema, AutomationResourceReference, AutomationSourceApplication } from '../Common';
2
2
  export declare const AUTOMATION_MESSAGE_SCHEMAS: {
3
- readonly DOMAIN_EVENT_V1: 'automations.domain-event/v1';
4
- readonly START_REQUEST_V1: 'automations.start-request/v1';
5
- readonly EXECUTION_WORK_ITEM_V1: 'automations.execution.work-item/v1';
3
+ readonly DOMAIN_EVENT_V1: "automations.domain-event/v1";
4
+ readonly START_REQUEST_V1: "automations.start-request/v1";
5
+ readonly EXECUTION_WORK_ITEM_V1: "automations.execution.work-item/v1";
6
6
  };
7
7
  export interface AutomationEventDefinition {
8
8
  eventType: string;
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  Object.defineProperty(exports, "__esModule", { value: true });
36
26
  exports.QueueEvent = exports.Schedules = exports.Notifications = exports.Messages = exports.Channels = exports.API = void 0;
37
27
  exports.API = __importStar(require("./API/index"));
@@ -9,22 +9,22 @@ export declare enum CommunicationEndpointKind {
9
9
  */
10
10
  export declare const providerIdentityNamespaces: {
11
11
  readonly meta: {
12
- readonly instagramUser: 'instagram_user';
13
- readonly messengerUser: 'messenger_user';
14
- readonly whatsappUser: 'whatsapp_user';
12
+ readonly instagramUser: "instagram_user";
13
+ readonly messengerUser: "messenger_user";
14
+ readonly whatsappUser: "whatsapp_user";
15
15
  };
16
16
  readonly telegram: {
17
- readonly user: 'user';
18
- readonly chat: 'chat';
17
+ readonly user: "user";
18
+ readonly chat: "chat";
19
19
  };
20
20
  readonly trii: {
21
- readonly webchatVisitor: 'webchat_visitor';
21
+ readonly webchatVisitor: "webchat_visitor";
22
22
  };
23
23
  readonly mercadolibre: {
24
- readonly buyer: 'buyer';
24
+ readonly buyer: "buyer";
25
25
  };
26
26
  readonly google: {
27
- readonly businessMessagesUser: 'business_messages_user';
27
+ readonly businessMessagesUser: "business_messages_user";
28
28
  };
29
29
  };
30
30
  export type KnownIdentityProvider = keyof typeof providerIdentityNamespaces;
@@ -0,0 +1,67 @@
1
+ import type { ClassificationSeverity } from './ConversationClassificationEvaluation';
2
+ export declare const CLASSIFICATION_TAXONOMY_VERSIONS_COLLECTION = "classification_taxonomy_versions";
3
+ export declare const CONVERSATION_EVALUATIONS_COLLECTION = "conversation_evaluations";
4
+ export type ConversationClassificationDimension = 'contact_reason' | 'incident' | 'outcome' | 'recovery';
5
+ export type ClassificationTaxonomyStatus = 'draft' | 'published' | 'archived';
6
+ /**
7
+ * Versioned classification configuration for a space. Draft changes increment
8
+ * revision; publishing assigns version and only applies to future evaluations.
9
+ */
10
+ export interface ClassificationTaxonomy {
11
+ id?: string;
12
+ spaceId: string;
13
+ status: ClassificationTaxonomyStatus;
14
+ version?: number;
15
+ revision: number;
16
+ basedOnVersion?: number;
17
+ effectiveFrom?: Date;
18
+ dimensions: ClassificationDimensionConfiguration[];
19
+ createdByUserId: string;
20
+ createdAt: Date;
21
+ updatedByUserId?: string;
22
+ updatedAt: Date;
23
+ publishedByUserId?: string;
24
+ publishedAt?: Date;
25
+ archivedAt?: Date;
26
+ }
27
+ export interface ClassificationDimensionConfiguration {
28
+ dimension: ConversationClassificationDimension;
29
+ enabled: boolean;
30
+ categories: ClassificationCategory[];
31
+ }
32
+ export interface ClassificationCategory {
33
+ id: string;
34
+ name: string;
35
+ description?: string;
36
+ inclusionCriteria: string[];
37
+ exclusionCriteria: string[];
38
+ positiveExamples: string[];
39
+ negativeExamples: string[];
40
+ allowMultiple: boolean;
41
+ defaultSeverity?: ClassificationSeverity;
42
+ sortOrder: number;
43
+ active: boolean;
44
+ subcategories: ClassificationSubcategory[];
45
+ }
46
+ export interface ClassificationSubcategory {
47
+ id: string;
48
+ name: string;
49
+ description?: string;
50
+ inclusionCriteria: string[];
51
+ exclusionCriteria: string[];
52
+ positiveExamples: string[];
53
+ negativeExamples: string[];
54
+ sortOrder: number;
55
+ active: boolean;
56
+ }
57
+ /**
58
+ * Creates or replaces the editable draft. expectedRevision provides optimistic concurrency.
59
+ */
60
+ export interface SaveClassificationTaxonomyDraftRequest {
61
+ expectedRevision?: number;
62
+ dimensions: ClassificationDimensionConfiguration[];
63
+ }
64
+ /** Publishes the current draft as the next immutable version. */
65
+ export interface PublishClassificationTaxonomyRequest {
66
+ expectedRevision: number;
67
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONVERSATION_EVALUATIONS_COLLECTION = exports.CLASSIFICATION_TAXONOMY_VERSIONS_COLLECTION = void 0;
4
+ exports.CLASSIFICATION_TAXONOMY_VERSIONS_COLLECTION = 'classification_taxonomy_versions';
5
+ exports.CONVERSATION_EVALUATIONS_COLLECTION = 'conversation_evaluations';
@@ -0,0 +1,67 @@
1
+ import type { ConversationClassificationDimension } from './ClassificationTaxonomy';
2
+ export type ConversationRelationshipType = 'new_contact' | 'acknowledgement' | 'continuation' | 'recontact_same_issue' | 'uncertain';
3
+ export type ConversationClassificationEvaluationStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
4
+ export type ClassificationSeverity = 'low' | 'medium' | 'high' | 'critical';
5
+ export type ClassificationFindingSource = 'ai' | 'system_rule' | 'manual_override';
6
+ /**
7
+ * Result of evaluating one resolved conversation against one published taxonomy version.
8
+ * The unique business key is spaceId + conversationId + conversationVersion + taxonomyVersion.
9
+ */
10
+ export interface ConversationClassificationEvaluation {
11
+ id?: string;
12
+ spaceId: string;
13
+ conversationId: string;
14
+ analyticalCaseId: string;
15
+ conversationVersion: number;
16
+ contactId?: string;
17
+ resolvedAt: Date;
18
+ taxonomyId: string;
19
+ taxonomyVersion: number;
20
+ status: ConversationClassificationEvaluationStatus;
21
+ relationship: ConversationAnalyticalRelationship;
22
+ findings: ConversationClassificationFinding[];
23
+ processor?: ConversationClassificationProcessor;
24
+ idempotencyKey: string;
25
+ errorCode?: string;
26
+ errorMessage?: string;
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ startedAt?: Date;
30
+ completedAt?: Date;
31
+ }
32
+ /**
33
+ * Groups operational conversations into an analytical case without modifying Conversation.
34
+ * For a new contact analyticalCaseId is normally the current conversationId.
35
+ */
36
+ export interface ConversationAnalyticalRelationship {
37
+ analyticalCaseId: string;
38
+ parentConversationId?: string;
39
+ type: ConversationRelationshipType;
40
+ isNewContact: boolean;
41
+ confidence: number;
42
+ summary?: string;
43
+ evidenceMessageIds: string[];
44
+ }
45
+ export interface ConversationClassificationFinding {
46
+ id: string;
47
+ dimension: ConversationClassificationDimension;
48
+ categoryId: string;
49
+ categoryName: string;
50
+ subcategoryId?: string;
51
+ subcategoryName?: string;
52
+ primary: boolean;
53
+ severity?: ClassificationSeverity;
54
+ confidence: number;
55
+ summary?: string;
56
+ evidenceMessageIds: string[];
57
+ source: ClassificationFindingSource;
58
+ }
59
+ export interface ConversationClassificationProcessor {
60
+ provider: string;
61
+ model: string;
62
+ promptVersion: string;
63
+ runId?: string;
64
+ durationMs?: number;
65
+ inputTokens?: number;
66
+ outputTokens?: number;
67
+ }
@@ -0,0 +1,29 @@
1
+ import type { ConversationClassificationEvaluationStatus } from './ConversationClassificationEvaluation';
2
+ export declare const CONVERSATION_CLASSIFICATION_EVENT_TYPES: {
3
+ readonly CONVERSATION_RESOLVED_FOR_EVALUATION: "conversation.resolved-for-classification";
4
+ readonly EVALUATION_FINISHED: "conversation.classification-evaluation-finished";
5
+ };
6
+ export declare const CONVERSATION_CLASSIFICATION_EVENT_SCHEMA_VERSION: 1;
7
+ /**
8
+ * Payload emitted transactionally with conversation resolution through OutboxEvent.
9
+ * The evaluator resolves the taxonomy version effective at resolvedAt.
10
+ */
11
+ export interface ConversationResolvedForClassificationEvent {
12
+ spaceId: string;
13
+ conversationId: string;
14
+ conversationVersion: number;
15
+ contactId?: string;
16
+ resolvedAt: Date;
17
+ correlationId: string;
18
+ }
19
+ /** Payload emitted when evaluation reaches completed, failed or skipped. */
20
+ export interface ConversationClassificationEvaluationFinishedEvent {
21
+ spaceId: string;
22
+ conversationId: string;
23
+ conversationVersion: number;
24
+ evaluationId: string;
25
+ taxonomyVersion: number;
26
+ status: ConversationClassificationEvaluationStatus;
27
+ finishedAt: Date;
28
+ correlationId: string;
29
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONVERSATION_CLASSIFICATION_EVENT_SCHEMA_VERSION = exports.CONVERSATION_CLASSIFICATION_EVENT_TYPES = void 0;
4
+ exports.CONVERSATION_CLASSIFICATION_EVENT_TYPES = {
5
+ CONVERSATION_RESOLVED_FOR_EVALUATION: 'conversation.resolved-for-classification',
6
+ EVALUATION_FINISHED: 'conversation.classification-evaluation-finished',
7
+ };
8
+ exports.CONVERSATION_CLASSIFICATION_EVENT_SCHEMA_VERSION = 1;
@@ -0,0 +1,3 @@
1
+ export * from './ClassificationTaxonomy';
2
+ export * from './ConversationClassificationEvaluation';
3
+ export * from './ConversationClassificationEvents';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ClassificationTaxonomy"), exports);
18
+ __exportStar(require("./ConversationClassificationEvaluation"), exports);
19
+ __exportStar(require("./ConversationClassificationEvents"), exports);
@@ -164,7 +164,7 @@ export declare enum ConversationStatus {
164
164
  FINALIZED = 3,// Alias for RESOLVED
165
165
  WAITING = 10
166
166
  }
167
- export type InboxViewId = 'pending' | 'following' | 'sla_warning' | 'sla_breached' | 'team_sla_breached' | 'resolved';
167
+ export type InboxViewId = 'pending' | 'following' | 'sla_warning' | 'sla_breached' | 'team_sla_breached' | 'resolved' | 'label';
168
168
  export type OwnerType = 'user' | 'bot' | 'flow' | 'none';
169
169
  export interface NoConversationOwner {
170
170
  type: 'none';
@@ -212,35 +212,35 @@ export type ConversationAssignmentSnapshot = {
212
212
  offerExpiresAt?: never;
213
213
  assignedAt?: never;
214
214
  acceptedAt?: never;
215
- } | (QueuedConversationAssignmentBase & {
215
+ } | QueuedConversationAssignmentBase & {
216
216
  status: 'queued' | 'routing';
217
217
  owner: NoConversationOwner;
218
218
  offeredAt?: never;
219
219
  offerExpiresAt?: never;
220
220
  assignedAt?: never;
221
221
  acceptedAt?: never;
222
- }) | (QueuedConversationAssignmentBase & {
222
+ } | QueuedConversationAssignmentBase & {
223
223
  status: 'offered';
224
224
  owner: UserConversationOwner;
225
225
  offeredAt: Date;
226
226
  offerExpiresAt?: Date;
227
227
  assignedAt?: never;
228
228
  acceptedAt?: never;
229
- }) | (QueuedConversationAssignmentBase & {
229
+ } | QueuedConversationAssignmentBase & {
230
230
  status: 'assigned';
231
231
  owner: UserConversationOwner;
232
232
  offeredAt?: Date;
233
233
  offerExpiresAt?: Date;
234
234
  assignedAt: Date;
235
235
  acceptedAt?: never;
236
- }) | (QueuedConversationAssignmentBase & {
236
+ } | QueuedConversationAssignmentBase & {
237
237
  status: 'accepted';
238
238
  owner: UserConversationOwner;
239
239
  offeredAt?: Date;
240
240
  offerExpiresAt?: Date;
241
241
  assignedAt: Date;
242
242
  acceptedAt: Date;
243
- });
243
+ };
244
244
  export type ActorType = 'user' | 'contact' | 'bot' | 'flow' | 'system';
245
245
  export type ParticipantRole = 'owner' | 'collaborator' | 'follower' | 'mentioned' | 'supervisor' | 'bot' | 'flow' | 'historical';
246
246
  export type ConversationEventType = 'conversation_created' | 'queued' | 'assigned' | 'accepted' | 'transferred' | 'consult_requested' | 'collaborator_added' | 'participant_added' | 'participant_removed' | 'participation_abandoned' | 'follow_started' | 'follow_stopped' | 'message_sent' | 'message_received' | 'internal_note_added' | 'bot_started' | 'bot_finished' | 'flow_started' | 'flow_finished' | 'status_changed' | 'resolved' | 'reopened' | 'sla_warning' | 'sla_breached' | 'sla_started' | 'sla_paused' | 'sla_resumed' | 'sla_met' | 'sla_overridden';
@@ -274,15 +274,15 @@ interface ConversationSubscriptionBase {
274
274
  * A subscription is persistent product intent. Assignment or participation
275
275
  * visibility must not create it unless an explicit auto-follow policy applies.
276
276
  */
277
- export type ConversationSubscription = (ConversationSubscriptionBase & {
277
+ export type ConversationSubscription = ConversationSubscriptionBase & {
278
278
  status: 'following';
279
279
  followedAt: Date;
280
280
  unfollowedAt?: never;
281
- }) | (ConversationSubscriptionBase & {
281
+ } | ConversationSubscriptionBase & {
282
282
  status: 'unfollowed';
283
283
  followedAt: Date;
284
284
  unfollowedAt: Date;
285
- });
285
+ };
286
286
  export interface PutConversationSubscriptionRequest {
287
287
  expectedVersion?: number;
288
288
  notifications: ConversationSubscriptionNotifications;
@@ -308,7 +308,7 @@ export interface PutConversationReadStateRequest {
308
308
  export interface PutConversationPinRequest {
309
309
  pinned: boolean;
310
310
  }
311
- export type InboxVisibilityReason = 'manual_follow' | 'assigned_to_user' | 'shared_queue_member' | 'queue_claimable' | 'active_participant' | 'sla_warning_owner' | 'sla_breached_owner' | 'supervised_queue_sla' | 'supervisor_escalation' | 'resolved_visible';
311
+ export type InboxVisibilityReason = 'manual_follow' | 'assigned_to_user' | 'shared_queue_member' | 'queue_claimable' | 'active_participant' | 'sla_warning_owner' | 'sla_breached_owner' | 'supervised_queue_sla' | 'supervisor_escalation' | 'resolved_visible' | 'labeled';
312
312
  export interface ConversationInboxSnapshot {
313
313
  interactionKind: 'private' | 'wall_post' | 'comment' | 'mention';
314
314
  channelType: string;
@@ -331,12 +331,21 @@ export interface ConversationInboxSnapshot {
331
331
  deadlineAt?: Date;
332
332
  };
333
333
  lastActivityAt: Date;
334
+ labels: {
335
+ id: ID;
336
+ name: string;
337
+ color?: string;
338
+ }[];
334
339
  }
335
340
  /**
336
341
  * Membership of one materialized conversation in one logical inbox view.
337
342
  *
338
343
  * visibilityReasons has set semantics: values must be unique and non-empty.
339
344
  * Removing one reason preserves the view while at least one reason remains.
345
+ *
346
+ * labelId is only populated when viewId is 'label' - identifies which of the
347
+ * space's labels this particular view entry represents (InboxViewId is a
348
+ * fixed enum, but labels are dynamic per space).
340
349
  */
341
350
  export interface UserInboxItemView {
342
351
  viewId: InboxViewId;
@@ -345,12 +354,16 @@ export interface UserInboxItemView {
345
354
  ...InboxVisibilityReason[]
346
355
  ];
347
356
  requiresAction: boolean;
357
+ labelId?: ID;
348
358
  }
349
359
  /**
350
360
  * Materialized read model. There is exactly one document for each
351
361
  * spaceId + userId + conversationId tuple.
352
362
  *
353
- * views must contain unique viewId values. Delete the document when the last
363
+ * views must contain unique viewId values, EXCEPT for viewId='label': a
364
+ * conversation can carry multiple labels, so multiple entries with
365
+ * viewId='label' are allowed as long as their labelId differs (unique
366
+ * (viewId, labelId) pairs for that case). Delete the document when the last
354
367
  * view is removed.
355
368
  */
356
369
  export interface UserInboxItemDocument {
@@ -370,7 +383,8 @@ export interface UserInboxItemDocument {
370
383
  projectedAt: Date;
371
384
  }
372
385
  /**
373
- * Materialized counters for exactly one user/view pair.
386
+ * Materialized counters for exactly one user/view pair (user/view/label when
387
+ * viewId is 'label' - labelId becomes part of the logical key in that case).
374
388
  *
375
389
  * total and requiresAction count conversations, never visibility reasons.
376
390
  * unread counts conversations whose snapshot.unreadCount is greater than zero,
@@ -381,6 +395,7 @@ export interface UserInboxCounterDocument {
381
395
  spaceId: ID;
382
396
  userId: ID;
383
397
  viewId: InboxViewId;
398
+ labelId?: ID;
384
399
  total: number;
385
400
  requiresAction: number;
386
401
  unread: number;
@@ -11,7 +11,7 @@ export declare const INBOX_PROCESSOR_RECEIPTS_COLLECTION = "inbox_processor_rece
11
11
  * InboxAudienceResolver receives as input.
12
12
  */
13
13
  export declare const CONVERSATION_SUBSCRIPTION_INDEXES: readonly [{
14
- readonly name: 'uq_subscription_user_conversation';
14
+ readonly name: "uq_subscription_user_conversation";
15
15
  readonly key: {
16
16
  readonly spaceId: 1;
17
17
  readonly userId: 1;
@@ -19,7 +19,7 @@ export declare const CONVERSATION_SUBSCRIPTION_INDEXES: readonly [{
19
19
  };
20
20
  readonly unique: true;
21
21
  }, {
22
- readonly name: 'ix_subscription_conversation_followers';
22
+ readonly name: "ix_subscription_conversation_followers";
23
23
  readonly key: {
24
24
  readonly spaceId: 1;
25
25
  readonly conversationId: 1;
@@ -35,7 +35,7 @@ export declare const CONVERSATION_SUBSCRIPTION_INDEXES: readonly [{
35
35
  * must not combine multiple array paths.
36
36
  */
37
37
  export declare const USER_INBOX_ITEM_INDEXES: readonly [{
38
- readonly name: 'uq_inbox_item_user_conversation';
38
+ readonly name: "uq_inbox_item_user_conversation";
39
39
  readonly key: {
40
40
  readonly spaceId: 1;
41
41
  readonly userId: 1;
@@ -43,7 +43,7 @@ export declare const USER_INBOX_ITEM_INDEXES: readonly [{
43
43
  };
44
44
  readonly unique: true;
45
45
  }, {
46
- readonly name: 'ix_inbox_view_activity';
46
+ readonly name: "ix_inbox_view_activity";
47
47
  readonly key: {
48
48
  readonly spaceId: 1;
49
49
  readonly userId: 1;
@@ -53,7 +53,7 @@ export declare const USER_INBOX_ITEM_INDEXES: readonly [{
53
53
  readonly id: -1;
54
54
  };
55
55
  }, {
56
- readonly name: 'ix_inbox_view_priority';
56
+ readonly name: "ix_inbox_view_priority";
57
57
  readonly key: {
58
58
  readonly spaceId: 1;
59
59
  readonly userId: 1;
@@ -64,7 +64,7 @@ export declare const USER_INBOX_ITEM_INDEXES: readonly [{
64
64
  readonly id: -1;
65
65
  };
66
66
  }, {
67
- readonly name: 'ix_inbox_view_status_activity';
67
+ readonly name: "ix_inbox_view_status_activity";
68
68
  readonly key: {
69
69
  readonly spaceId: 1;
70
70
  readonly userId: 1;
@@ -74,7 +74,7 @@ export declare const USER_INBOX_ITEM_INDEXES: readonly [{
74
74
  readonly id: -1;
75
75
  };
76
76
  }, {
77
- readonly name: 'ix_inbox_view_queue_activity';
77
+ readonly name: "ix_inbox_view_queue_activity";
78
78
  readonly key: {
79
79
  readonly spaceId: 1;
80
80
  readonly userId: 1;
@@ -91,7 +91,7 @@ export declare const USER_INBOX_ITEM_INDEXES: readonly [{
91
91
  * spaceId + userId prefix.
92
92
  */
93
93
  export declare const USER_INBOX_COUNTER_INDEXES: readonly [{
94
- readonly name: 'uq_inbox_counter_user_view';
94
+ readonly name: "uq_inbox_counter_user_view";
95
95
  readonly key: {
96
96
  readonly spaceId: 1;
97
97
  readonly userId: 1;
@@ -103,7 +103,7 @@ export declare const USER_INBOX_COUNTER_INDEXES: readonly [{
103
103
  * MongoDB indexes for durable processor idempotency receipts.
104
104
  */
105
105
  export declare const INBOX_PROCESSOR_RECEIPT_INDEXES: readonly [{
106
- readonly name: 'uq_inbox_processor_source_scope';
106
+ readonly name: "uq_inbox_processor_source_scope";
107
107
  readonly key: {
108
108
  readonly processor: 1;
109
109
  readonly sourceEventId: 1;
@@ -144,11 +144,11 @@ interface InboxPageQueryBase {
144
144
  viewId: InboxViewId;
145
145
  limit: number;
146
146
  }
147
- export type InboxPageQuery = (InboxPageQueryBase & {
147
+ export type InboxPageQuery = InboxPageQueryBase & {
148
148
  sort: 'activity';
149
149
  cursor?: InboxActivityCursor;
150
- }) | (InboxPageQueryBase & {
150
+ } | InboxPageQueryBase & {
151
151
  sort: 'priority';
152
152
  cursor?: InboxPriorityCursor;
153
- });
153
+ };
154
154
  export {};
@@ -26,27 +26,27 @@ export interface PartyOwnerAssigneeResolver {
26
26
  mode: 'prefer' | 'required';
27
27
  }
28
28
  export type QueueOwnerAssigneeResolver = PartyOwnerAssigneeResolver;
29
- export type QueueRoutingPolicy = (QueueRoutingPolicyBase & {
29
+ export type QueueRoutingPolicy = QueueRoutingPolicyBase & {
30
30
  distributionMode: 'shared';
31
31
  strategy?: never;
32
32
  ownerResolver?: never;
33
- }) | (QueueRoutingPolicyBase & {
33
+ } | QueueRoutingPolicyBase & {
34
34
  distributionMode: 'manual_pull';
35
35
  strategy?: never;
36
36
  ownerResolver?: never;
37
- }) | (QueueRoutingPolicyBase & {
37
+ } | QueueRoutingPolicyBase & {
38
38
  distributionMode: 'exclusive';
39
39
  strategy: QueueRoutingStrategy;
40
- ownerResolver?: undefined | (PartyOwnerAssigneeResolver & {
40
+ ownerResolver?: undefined | PartyOwnerAssigneeResolver & {
41
41
  mode: 'prefer';
42
- });
43
- }) | (QueueRoutingPolicyBase & {
42
+ };
43
+ } | QueueRoutingPolicyBase & {
44
44
  distributionMode: 'exclusive';
45
45
  strategy?: never;
46
46
  ownerResolver: PartyOwnerAssigneeResolver & {
47
47
  mode: 'required';
48
48
  };
49
- });
49
+ };
50
50
  export type QueueRoutingConfig = QueueRoutingPolicy & {
51
51
  queueId: string;
52
52
  spaceId: string;
@@ -133,15 +133,15 @@ export type PartyOwnerAssigneeEvaluation = {
133
133
  }>;
134
134
  outcome: 'selected';
135
135
  nextStep?: never;
136
- } | (FailedPartyOwnerEvaluation & {
136
+ } | FailedPartyOwnerEvaluation & {
137
137
  type: 'party_owner';
138
138
  mode: 'prefer';
139
139
  nextStep: 'strategy';
140
- }) | (FailedPartyOwnerEvaluation & {
140
+ } | FailedPartyOwnerEvaluation & {
141
141
  type: 'party_owner';
142
142
  mode: 'required';
143
143
  nextStep: 'fallback';
144
- });
144
+ };
145
145
  export interface RoutingDecision {
146
146
  decisionId: string;
147
147
  spaceId: string;
@@ -19,3 +19,4 @@ export * from './Queue';
19
19
  export * from './Routing';
20
20
  export * from './Sla';
21
21
  export * from './Transfer';
22
+ export * from './Classifications';
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
27
  };
@@ -58,3 +48,4 @@ __exportStar(require("./Queue"), exports);
58
48
  __exportStar(require("./Routing"), exports);
59
49
  __exportStar(require("./Sla"), exports);
60
50
  __exportStar(require("./Transfer"), exports);
51
+ __exportStar(require("./Classifications"), exports);