@trii/types 2.10.656 → 2.10.657
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/Collections/Api.d.ts +41 -0
- package/dist/Collections/Api.js +2 -0
- package/dist/Collections/Commission.d.ts +52 -0
- package/dist/Collections/Commission.js +10 -0
- package/dist/Collections/Common.d.ts +78 -0
- package/dist/Collections/Common.js +39 -0
- package/dist/Collections/Dashboard.d.ts +27 -0
- package/dist/Collections/Dashboard.js +2 -0
- package/dist/Collections/Debt.d.ts +97 -0
- package/dist/Collections/Debt.js +12 -0
- package/dist/Collections/Interest.d.ts +38 -0
- package/dist/Collections/Interest.js +25 -0
- package/dist/Collections/Payment.d.ts +87 -0
- package/dist/Collections/Payment.js +21 -0
- package/dist/Collections/PaymentPlan.d.ts +87 -0
- package/dist/Collections/PaymentPlan.js +21 -0
- package/dist/Collections/PaymentPlanConfiguration.d.ts +100 -0
- package/dist/Collections/PaymentPlanConfiguration.js +34 -0
- package/dist/Collections/Portfolio.d.ts +52 -0
- package/dist/Collections/Portfolio.js +12 -0
- package/dist/Collections/Promise.d.ts +49 -0
- package/dist/Collections/Promise.js +25 -0
- package/dist/Collections/index.d.ts +11 -0
- package/dist/Collections/index.js +27 -0
- package/dist/Common/Channels/Channel.d.ts +6 -1
- package/dist/Common/Channels/Channel.js +6 -1
- package/dist/Common/Channels/WhatsApp.d.ts +22 -0
- package/dist/Common/Channels/WhatsApp.js +7 -1
- package/dist/Common/Messages/Message.d.ts +9 -0
- package/dist/Common/Messages/Message.js +6 -1
- package/dist/Conversations/Conversation.d.ts +15 -0
- package/dist/Conversations/Conversation.js +8 -1
- package/dist/Sales/Api.d.ts +40 -0
- package/dist/Sales/Api.js +2 -0
- package/dist/Sales/Common.d.ts +72 -0
- package/dist/Sales/Common.js +31 -0
- package/dist/Sales/Dashboard.d.ts +25 -0
- package/dist/Sales/Dashboard.js +2 -0
- package/dist/Sales/Lead.d.ts +99 -0
- package/dist/Sales/Lead.js +8 -0
- package/dist/Sales/index.d.ts +4 -0
- package/dist/Sales/index.js +20 -0
- package/dist/Spaces/spaces.d.ts +1 -0
- package/dist/Tickets/AI.d.ts +400 -0
- package/dist/Tickets/AI.js +113 -0
- package/dist/Tickets/AdvancedApi.d.ts +486 -0
- package/dist/Tickets/AdvancedApi.js +108 -0
- package/dist/Tickets/Api.d.ts +62 -0
- package/dist/Tickets/Api.js +8 -0
- package/dist/Tickets/Approval.d.ts +139 -0
- package/dist/Tickets/Approval.js +30 -0
- package/dist/Tickets/Automation.d.ts +237 -0
- package/dist/Tickets/Automation.js +74 -0
- package/dist/Tickets/Category.d.ts +25 -0
- package/dist/Tickets/Category.js +2 -0
- package/dist/Tickets/Common.d.ts +90 -0
- package/dist/Tickets/Common.js +38 -0
- package/dist/Tickets/Conversation.d.ts +68 -0
- package/dist/Tickets/Conversation.js +30 -0
- package/dist/Tickets/Dashboard.d.ts +408 -0
- package/dist/Tickets/Dashboard.js +206 -0
- package/dist/Tickets/Fields.d.ts +133 -0
- package/dist/Tickets/Fields.js +44 -0
- package/dist/Tickets/Layouts.d.ts +63 -0
- package/dist/Tickets/Layouts.js +22 -0
- package/dist/Tickets/Routing.d.ts +290 -0
- package/dist/Tickets/Routing.js +87 -0
- package/dist/Tickets/Satisfaction.d.ts +31 -0
- package/dist/Tickets/Satisfaction.js +9 -0
- package/dist/Tickets/Security.d.ts +302 -0
- package/dist/Tickets/Security.js +107 -0
- package/dist/Tickets/SelfService.d.ts +255 -0
- package/dist/Tickets/SelfService.js +56 -0
- package/dist/Tickets/Sla.d.ts +253 -0
- package/dist/Tickets/Sla.js +73 -0
- package/dist/Tickets/Task.d.ts +122 -0
- package/dist/Tickets/Task.js +17 -0
- package/dist/Tickets/Ticket.d.ts +133 -0
- package/dist/Tickets/Ticket.js +2 -0
- package/dist/Tickets/Views.d.ts +77 -0
- package/dist/Tickets/Views.js +23 -0
- package/dist/Tickets/Workflow.d.ts +109 -0
- package/dist/Tickets/Workflow.js +44 -0
- package/dist/Tickets/index.d.ts +20 -1
- package/dist/Tickets/index.js +20 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { ILeadContactProjection, ILeadProperty, ISalesAuditedEntity, ISalesMoney, LeadOrigin, LeadPriority, LeadStage } from './Common';
|
|
2
|
+
export declare enum LeadProbabilitySource {
|
|
3
|
+
STATUS_DEFAULT = "STATUS_DEFAULT",
|
|
4
|
+
MANUAL = "MANUAL"
|
|
5
|
+
}
|
|
6
|
+
export interface ILeadLineItem {
|
|
7
|
+
id: string;
|
|
8
|
+
productId?: string;
|
|
9
|
+
sku?: string;
|
|
10
|
+
description: string;
|
|
11
|
+
quantity: string;
|
|
12
|
+
unitPrice: ISalesMoney;
|
|
13
|
+
discount?: ISalesMoney;
|
|
14
|
+
tax?: ISalesMoney;
|
|
15
|
+
total: ISalesMoney;
|
|
16
|
+
}
|
|
17
|
+
export interface ILead {
|
|
18
|
+
id: string;
|
|
19
|
+
spaceId: string;
|
|
20
|
+
number: number;
|
|
21
|
+
title: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
contactId: string;
|
|
24
|
+
contact?: ILeadContactProjection;
|
|
25
|
+
statusId: string;
|
|
26
|
+
stage: LeadStage;
|
|
27
|
+
priority: LeadPriority;
|
|
28
|
+
origin: LeadOrigin;
|
|
29
|
+
assigneeId?: string;
|
|
30
|
+
assignedGroupId?: string;
|
|
31
|
+
properties: ILeadProperty[];
|
|
32
|
+
version: number;
|
|
33
|
+
value?: ISalesMoney;
|
|
34
|
+
probability: number;
|
|
35
|
+
probabilitySource: LeadProbabilitySource;
|
|
36
|
+
expectedCloseAt?: Date;
|
|
37
|
+
wonAt?: Date;
|
|
38
|
+
lostAt?: Date;
|
|
39
|
+
lossReasonId?: string;
|
|
40
|
+
lossReasonDetail?: string;
|
|
41
|
+
campaignId?: string;
|
|
42
|
+
items?: ILeadLineItem[];
|
|
43
|
+
createdAt: Date;
|
|
44
|
+
createdBy: string;
|
|
45
|
+
updatedAt?: Date;
|
|
46
|
+
updatedBy?: string;
|
|
47
|
+
deletedAt?: Date;
|
|
48
|
+
deletedBy?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ILeadLossReason extends ISalesAuditedEntity {
|
|
51
|
+
name: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
order: number;
|
|
54
|
+
enabled: boolean;
|
|
55
|
+
detailRequired?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface ICreateLeadDto {
|
|
58
|
+
title: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
contactId: string;
|
|
61
|
+
statusId?: string;
|
|
62
|
+
priority: LeadPriority;
|
|
63
|
+
origin: LeadOrigin;
|
|
64
|
+
assigneeId?: string;
|
|
65
|
+
assignedGroupId?: string;
|
|
66
|
+
properties?: ILeadProperty[];
|
|
67
|
+
source?: string;
|
|
68
|
+
idempotencyKey?: string;
|
|
69
|
+
value?: ISalesMoney;
|
|
70
|
+
probability?: number;
|
|
71
|
+
expectedCloseAt?: Date;
|
|
72
|
+
campaignId?: string;
|
|
73
|
+
items?: ILeadLineItem[];
|
|
74
|
+
}
|
|
75
|
+
export interface IUpdateLeadDto {
|
|
76
|
+
expectedVersion: number;
|
|
77
|
+
title?: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
priority?: LeadPriority;
|
|
80
|
+
assigneeId?: string;
|
|
81
|
+
assignedGroupId?: string;
|
|
82
|
+
properties?: ILeadProperty[];
|
|
83
|
+
value?: ISalesMoney;
|
|
84
|
+
probability?: number;
|
|
85
|
+
expectedCloseAt?: Date;
|
|
86
|
+
campaignId?: string;
|
|
87
|
+
items?: ILeadLineItem[];
|
|
88
|
+
}
|
|
89
|
+
export interface IMarkLeadLostDto {
|
|
90
|
+
expectedVersion: number;
|
|
91
|
+
toStatusId: string;
|
|
92
|
+
lossReasonId: string;
|
|
93
|
+
lossReasonDetail?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface IMarkLeadWonDto {
|
|
96
|
+
expectedVersion: number;
|
|
97
|
+
toStatusId: string;
|
|
98
|
+
finalValue?: ISalesMoney;
|
|
99
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeadProbabilitySource = void 0;
|
|
4
|
+
var LeadProbabilitySource;
|
|
5
|
+
(function (LeadProbabilitySource) {
|
|
6
|
+
LeadProbabilitySource["STATUS_DEFAULT"] = "STATUS_DEFAULT";
|
|
7
|
+
LeadProbabilitySource["MANUAL"] = "MANUAL";
|
|
8
|
+
})(LeadProbabilitySource || (exports.LeadProbabilitySource = LeadProbabilitySource = {}));
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./Common"), exports);
|
|
18
|
+
__exportStar(require("./Lead"), exports);
|
|
19
|
+
__exportStar(require("./Api"), exports);
|
|
20
|
+
__exportStar(require("./Dashboard"), exports);
|
package/dist/Spaces/spaces.d.ts
CHANGED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import { ITicketProperty, TicketPropertyValue } from "./Common";
|
|
2
|
+
import { TicketMetricCode } from "./Dashboard";
|
|
3
|
+
import { TicketSecurityOperation } from "./Security";
|
|
4
|
+
/** Identifies the native AI experiences that Tickets can request from the central AI module. */
|
|
5
|
+
export declare enum TicketAICapability {
|
|
6
|
+
SUMMARIZE = "SUMMARIZE",
|
|
7
|
+
SUMMARIZE_SINCE_LAST_READ = "SUMMARIZE_SINCE_LAST_READ",
|
|
8
|
+
SUGGEST_REPLY = "SUGGEST_REPLY",
|
|
9
|
+
REWRITE = "REWRITE",
|
|
10
|
+
TRANSLATE = "TRANSLATE",
|
|
11
|
+
SUGGEST_NEXT_ACTION = "SUGGEST_NEXT_ACTION",
|
|
12
|
+
SUGGEST_KNOWLEDGE = "SUGGEST_KNOWLEDGE",
|
|
13
|
+
FIND_SIMILAR_TICKETS = "FIND_SIMILAR_TICKETS",
|
|
14
|
+
DETECT_MISSING_INFORMATION = "DETECT_MISSING_INFORMATION",
|
|
15
|
+
CLASSIFY = "CLASSIFY",
|
|
16
|
+
EXTRACT_FIELDS = "EXTRACT_FIELDS",
|
|
17
|
+
ANALYZE_SENTIMENT = "ANALYZE_SENTIMENT",
|
|
18
|
+
PREDICT_RISK = "PREDICT_RISK"
|
|
19
|
+
}
|
|
20
|
+
/** Classifies machine-generated observations persisted against a ticket. */
|
|
21
|
+
export declare enum TicketAIInsightType {
|
|
22
|
+
INTENT = "INTENT",
|
|
23
|
+
TOPIC = "TOPIC",
|
|
24
|
+
SENTIMENT = "SENTIMENT",
|
|
25
|
+
URGENCY = "URGENCY",
|
|
26
|
+
COMPLEXITY = "COMPLEXITY",
|
|
27
|
+
ESCALATION_RISK = "ESCALATION_RISK",
|
|
28
|
+
SLA_BREACH_RISK = "SLA_BREACH_RISK",
|
|
29
|
+
LANGUAGE = "LANGUAGE",
|
|
30
|
+
SPAM = "SPAM",
|
|
31
|
+
SUGGESTED_CATEGORY = "SUGGESTED_CATEGORY",
|
|
32
|
+
SUGGESTED_PRIORITY = "SUGGESTED_PRIORITY",
|
|
33
|
+
SUGGESTED_SKILLS = "SUGGESTED_SKILLS",
|
|
34
|
+
SUGGESTED_ASSIGNEE = "SUGGESTED_ASSIGNEE",
|
|
35
|
+
RESOLUTION_PROBABILITY = "RESOLUTION_PROBABILITY",
|
|
36
|
+
MISSING_INFORMATION = "MISSING_INFORMATION"
|
|
37
|
+
}
|
|
38
|
+
/** Describes whether an AI output is only proposed, accepted, rejected or superseded. */
|
|
39
|
+
export declare enum TicketAIOutputStatus {
|
|
40
|
+
GENERATED = "GENERATED",
|
|
41
|
+
ACCEPTED = "ACCEPTED",
|
|
42
|
+
EDITED = "EDITED",
|
|
43
|
+
REJECTED = "REJECTED",
|
|
44
|
+
APPLIED = "APPLIED",
|
|
45
|
+
SUPERSEDED = "SUPERSEDED",
|
|
46
|
+
EXPIRED = "EXPIRED",
|
|
47
|
+
FAILED = "FAILED"
|
|
48
|
+
}
|
|
49
|
+
/** Records explicit and implicit feedback used to evaluate model usefulness. */
|
|
50
|
+
export declare enum TicketAIFeedbackType {
|
|
51
|
+
ACCEPTED = "ACCEPTED",
|
|
52
|
+
EDITED = "EDITED",
|
|
53
|
+
REJECTED = "REJECTED",
|
|
54
|
+
HELPFUL = "HELPFUL",
|
|
55
|
+
NOT_HELPFUL = "NOT_HELPFUL",
|
|
56
|
+
INCORRECT = "INCORRECT",
|
|
57
|
+
UNSAFE = "UNSAFE"
|
|
58
|
+
}
|
|
59
|
+
/** Severity used by supervisor insights to prioritize anomalies and recommendations. */
|
|
60
|
+
export declare enum TicketAIInsightSeverity {
|
|
61
|
+
INFO = "INFO",
|
|
62
|
+
LOW = "LOW",
|
|
63
|
+
MEDIUM = "MEDIUM",
|
|
64
|
+
HIGH = "HIGH",
|
|
65
|
+
CRITICAL = "CRITICAL"
|
|
66
|
+
}
|
|
67
|
+
/** Types of cross-ticket analysis surfaced in dashboards and supervisor workspaces. */
|
|
68
|
+
export declare enum TicketAIAnalyticsInsightType {
|
|
69
|
+
ANOMALY = "ANOMALY",
|
|
70
|
+
TREND = "TREND",
|
|
71
|
+
FORECAST = "FORECAST",
|
|
72
|
+
EMERGING_TOPIC = "EMERGING_TOPIC",
|
|
73
|
+
ROOT_CAUSE = "ROOT_CAUSE",
|
|
74
|
+
SLA_RISK = "SLA_RISK",
|
|
75
|
+
STAFFING_RISK = "STAFFING_RISK",
|
|
76
|
+
QUALITY_RISK = "QUALITY_RISK",
|
|
77
|
+
RECOMMENDATION = "RECOMMENDATION",
|
|
78
|
+
EXECUTIVE_SUMMARY = "EXECUTIVE_SUMMARY"
|
|
79
|
+
}
|
|
80
|
+
/** Declares why an autonomous or assisted AI session handed work to a human. */
|
|
81
|
+
export declare enum TicketAIHandoffReason {
|
|
82
|
+
CUSTOMER_REQUESTED = "CUSTOMER_REQUESTED",
|
|
83
|
+
LOW_CONFIDENCE = "LOW_CONFIDENCE",
|
|
84
|
+
POLICY_REQUIRED = "POLICY_REQUIRED",
|
|
85
|
+
UNSUPPORTED_INTENT = "UNSUPPORTED_INTENT",
|
|
86
|
+
NEGATIVE_SENTIMENT = "NEGATIVE_SENTIMENT",
|
|
87
|
+
SECURITY_RISK = "SECURITY_RISK",
|
|
88
|
+
TOOL_FAILURE = "TOOL_FAILURE",
|
|
89
|
+
SLA_RISK = "SLA_RISK",
|
|
90
|
+
OTHER = "OTHER"
|
|
91
|
+
}
|
|
92
|
+
/** Controls how much ticket context may be sent to AI after authorization and PII filtering. */
|
|
93
|
+
export declare enum TicketAIContextScope {
|
|
94
|
+
TICKET_FIELDS = "TICKET_FIELDS",
|
|
95
|
+
PUBLIC_MESSAGES = "PUBLIC_MESSAGES",
|
|
96
|
+
INTERNAL_NOTES = "INTERNAL_NOTES",
|
|
97
|
+
ATTACHMENT_TEXT = "ATTACHMENT_TEXT",
|
|
98
|
+
CONTACT_PROFILE = "CONTACT_PROFILE",
|
|
99
|
+
ORGANIZATION_PROFILE = "ORGANIZATION_PROFILE",
|
|
100
|
+
KNOWLEDGE = "KNOWLEDGE",
|
|
101
|
+
RELATED_TICKETS = "RELATED_TICKETS",
|
|
102
|
+
SLA = "SLA",
|
|
103
|
+
TASKS = "TASKS",
|
|
104
|
+
APPROVALS = "APPROVALS"
|
|
105
|
+
}
|
|
106
|
+
/** Configuration exposed by Tickets so UI and Flow know which AI experiences are available and permitted. */
|
|
107
|
+
export interface ITicketAICapabilityDefinition {
|
|
108
|
+
code: TicketAICapability;
|
|
109
|
+
name: string;
|
|
110
|
+
description: string;
|
|
111
|
+
enabled: boolean;
|
|
112
|
+
allowedRoleIds?: string[];
|
|
113
|
+
requiredOperations?: TicketSecurityOperation[];
|
|
114
|
+
contextScopes: TicketAIContextScope[];
|
|
115
|
+
providerId?: string;
|
|
116
|
+
modelId?: string;
|
|
117
|
+
promptTemplateId?: string;
|
|
118
|
+
minimumConfidence?: number;
|
|
119
|
+
requireHumanApproval: boolean;
|
|
120
|
+
}
|
|
121
|
+
/** Per-tenant policy enforced before any ticket context is sent to a model. */
|
|
122
|
+
export interface ITicketAIPolicy {
|
|
123
|
+
id: string;
|
|
124
|
+
spaceId: string;
|
|
125
|
+
name: string;
|
|
126
|
+
enabled: boolean;
|
|
127
|
+
allowedCapabilities: TicketAICapability[];
|
|
128
|
+
allowedContextScopes: TicketAIContextScope[];
|
|
129
|
+
excludedFieldNameKeys?: string[];
|
|
130
|
+
allowPii: boolean;
|
|
131
|
+
allowSensitivePii: boolean;
|
|
132
|
+
redactBeforeInference: boolean;
|
|
133
|
+
retainInputs: boolean;
|
|
134
|
+
retainOutputs: boolean;
|
|
135
|
+
retentionDays?: number;
|
|
136
|
+
maximumTokensPerRequest?: number;
|
|
137
|
+
maximumCostPerRequest?: number;
|
|
138
|
+
requireSourceCitations?: boolean;
|
|
139
|
+
createdAt: Date;
|
|
140
|
+
createdBy: string;
|
|
141
|
+
updatedAt?: Date;
|
|
142
|
+
updatedBy?: string;
|
|
143
|
+
}
|
|
144
|
+
/** Request issued by an agent-facing UI for summaries, replies, rewrites or recommendations. */
|
|
145
|
+
export interface ICreateTicketAIAssistanceDto {
|
|
146
|
+
ticketId: string;
|
|
147
|
+
capability: TicketAICapability;
|
|
148
|
+
instruction?: string;
|
|
149
|
+
locale?: string;
|
|
150
|
+
tone?: string;
|
|
151
|
+
conversationId?: string;
|
|
152
|
+
sinceMessageId?: string;
|
|
153
|
+
selectedMessageIds?: string[];
|
|
154
|
+
selectedFieldNameKeys?: string[];
|
|
155
|
+
contextScopes?: TicketAIContextScope[];
|
|
156
|
+
idempotencyKey: string;
|
|
157
|
+
}
|
|
158
|
+
/** Immutable reference to a source used by an AI response; content remains authoritative in its owning module. */
|
|
159
|
+
export interface ITicketAISourceReference {
|
|
160
|
+
sourceType: "TICKET" | "MESSAGE" | "DOCUMENT" | "ATTACHMENT" | "CONTACT" | "ORGANIZATION" | "SLA" | "TASK" | "APPROVAL";
|
|
161
|
+
sourceId: string;
|
|
162
|
+
title?: string;
|
|
163
|
+
excerpt?: string;
|
|
164
|
+
relevanceScore?: number;
|
|
165
|
+
}
|
|
166
|
+
/** Result returned to the agent UI; generated text is a suggestion until explicitly accepted or applied. */
|
|
167
|
+
export interface ITicketAIAssistanceResult {
|
|
168
|
+
id: string;
|
|
169
|
+
spaceId: string;
|
|
170
|
+
ticketId: string;
|
|
171
|
+
capability: TicketAICapability;
|
|
172
|
+
status: TicketAIOutputStatus;
|
|
173
|
+
text?: string;
|
|
174
|
+
structuredOutput?: {
|
|
175
|
+
[key: string]: TicketPropertyValue;
|
|
176
|
+
};
|
|
177
|
+
suggestedProperties?: ITicketProperty[];
|
|
178
|
+
suggestedKnowledgeDocumentIds?: string[];
|
|
179
|
+
similarTicketIds?: string[];
|
|
180
|
+
confidence?: number;
|
|
181
|
+
sources?: ITicketAISourceReference[];
|
|
182
|
+
traceId: string;
|
|
183
|
+
generatedAt: Date;
|
|
184
|
+
expiresAt?: Date;
|
|
185
|
+
}
|
|
186
|
+
/** Persisted prediction or classification used by routing, prioritization and agent context. */
|
|
187
|
+
export interface ITicketAIInsight {
|
|
188
|
+
id: string;
|
|
189
|
+
spaceId: string;
|
|
190
|
+
ticketId: string;
|
|
191
|
+
type: TicketAIInsightType;
|
|
192
|
+
value: TicketPropertyValue;
|
|
193
|
+
confidence: number;
|
|
194
|
+
status: TicketAIOutputStatus;
|
|
195
|
+
modelId: string;
|
|
196
|
+
modelVersion?: string;
|
|
197
|
+
promptTemplateId?: string;
|
|
198
|
+
sourceEventId?: string;
|
|
199
|
+
generatedAt: Date;
|
|
200
|
+
expiresAt?: Date;
|
|
201
|
+
acceptedAt?: Date;
|
|
202
|
+
acceptedBy?: string;
|
|
203
|
+
rejectedAt?: Date;
|
|
204
|
+
rejectedBy?: string;
|
|
205
|
+
rejectionReason?: string;
|
|
206
|
+
}
|
|
207
|
+
/** Lightweight projection embedded in ITicket lists; full insights are queried separately. */
|
|
208
|
+
export interface ITicketAISummary {
|
|
209
|
+
sentiment?: string;
|
|
210
|
+
intent?: string;
|
|
211
|
+
language?: string;
|
|
212
|
+
escalationRisk?: number;
|
|
213
|
+
slaBreachRisk?: number;
|
|
214
|
+
suggestedPriority?: string;
|
|
215
|
+
activeInsightIds?: string[];
|
|
216
|
+
updatedAt: Date;
|
|
217
|
+
}
|
|
218
|
+
/** Request for refreshing selected insights after a ticket or conversation changes. */
|
|
219
|
+
export interface IGenerateTicketAIInsightsDto {
|
|
220
|
+
ticketId: string;
|
|
221
|
+
insightTypes: TicketAIInsightType[];
|
|
222
|
+
sourceEventId?: string;
|
|
223
|
+
contextScopes?: TicketAIContextScope[];
|
|
224
|
+
idempotencyKey: string;
|
|
225
|
+
}
|
|
226
|
+
/** Applies an accepted AI recommendation through normal ticket APIs, preserving validation and audit. */
|
|
227
|
+
export interface IApplyTicketAIRecommendationDto {
|
|
228
|
+
expectedVersion: number;
|
|
229
|
+
assistanceResultId?: string;
|
|
230
|
+
insightId?: string;
|
|
231
|
+
fieldValues?: ITicketProperty[];
|
|
232
|
+
actionCode?: string;
|
|
233
|
+
actionParameters?: {
|
|
234
|
+
[key: string]: TicketPropertyValue;
|
|
235
|
+
};
|
|
236
|
+
idempotencyKey: string;
|
|
237
|
+
}
|
|
238
|
+
/** Records whether an agent used, edited or rejected an output; required for quality and adoption metrics. */
|
|
239
|
+
export interface ICreateTicketAIFeedbackDto {
|
|
240
|
+
outputId: string;
|
|
241
|
+
feedbackType: TicketAIFeedbackType;
|
|
242
|
+
editedText?: string;
|
|
243
|
+
correctedValue?: TicketPropertyValue;
|
|
244
|
+
comment?: string;
|
|
245
|
+
}
|
|
246
|
+
/** Stored feedback event consumed by analytics and model evaluation pipelines. */
|
|
247
|
+
export interface ITicketAIFeedback {
|
|
248
|
+
id: string;
|
|
249
|
+
spaceId: string;
|
|
250
|
+
ticketId: string;
|
|
251
|
+
outputId: string;
|
|
252
|
+
userId: string;
|
|
253
|
+
type: TicketAIFeedbackType;
|
|
254
|
+
editDistancePercentage?: number;
|
|
255
|
+
correctedValue?: TicketPropertyValue;
|
|
256
|
+
comment?: string;
|
|
257
|
+
createdAt: Date;
|
|
258
|
+
}
|
|
259
|
+
/** Evidence supporting a supervisor insight; enables drill-down instead of presenting an opaque conclusion. */
|
|
260
|
+
export interface ITicketAIAnalyticsEvidence {
|
|
261
|
+
metricCode?: TicketMetricCode;
|
|
262
|
+
ticketIds?: string[];
|
|
263
|
+
groupIds?: string[];
|
|
264
|
+
categoryIds?: string[];
|
|
265
|
+
currentValue?: number;
|
|
266
|
+
baselineValue?: number;
|
|
267
|
+
changePercentage?: number;
|
|
268
|
+
description?: string;
|
|
269
|
+
}
|
|
270
|
+
/** Cross-ticket insight shown in dashboards to explain trends, anomalies and operational risks. */
|
|
271
|
+
export interface ITicketAIAnalyticsInsight {
|
|
272
|
+
id: string;
|
|
273
|
+
spaceId: string;
|
|
274
|
+
dashboardId?: string;
|
|
275
|
+
type: TicketAIAnalyticsInsightType;
|
|
276
|
+
title: string;
|
|
277
|
+
summary: string;
|
|
278
|
+
severity: TicketAIInsightSeverity;
|
|
279
|
+
confidence: number;
|
|
280
|
+
metricCodes?: TicketMetricCode[];
|
|
281
|
+
evidence: ITicketAIAnalyticsEvidence[];
|
|
282
|
+
recommendedActions?: ITicketAIRecommendedAction[];
|
|
283
|
+
modelId: string;
|
|
284
|
+
modelVersion?: string;
|
|
285
|
+
generatedAt: Date;
|
|
286
|
+
expiresAt?: Date;
|
|
287
|
+
dismissedAt?: Date;
|
|
288
|
+
dismissedBy?: string;
|
|
289
|
+
}
|
|
290
|
+
/** Suggested supervisor response; execution must go through Flow or a normal Tickets API after approval. */
|
|
291
|
+
export interface ITicketAIRecommendedAction {
|
|
292
|
+
code: string;
|
|
293
|
+
label: string;
|
|
294
|
+
description?: string;
|
|
295
|
+
parameters?: {
|
|
296
|
+
[key: string]: TicketPropertyValue;
|
|
297
|
+
};
|
|
298
|
+
requiresApproval: boolean;
|
|
299
|
+
}
|
|
300
|
+
/** Query used by supervisor dashboards to request anomaly, forecast or explanation generation. */
|
|
301
|
+
export interface IGenerateTicketAIAnalyticsDto {
|
|
302
|
+
dashboardId?: string;
|
|
303
|
+
insightTypes: TicketAIAnalyticsInsightType[];
|
|
304
|
+
metricCodes?: TicketMetricCode[];
|
|
305
|
+
from: Date;
|
|
306
|
+
to: Date;
|
|
307
|
+
comparisonFrom?: Date;
|
|
308
|
+
comparisonTo?: Date;
|
|
309
|
+
groupIds?: string[];
|
|
310
|
+
categoryIds?: string[];
|
|
311
|
+
idempotencyKey: string;
|
|
312
|
+
}
|
|
313
|
+
/** Context transferred from a virtual agent or AI-driven Flow when a human ticket is created or resumed. */
|
|
314
|
+
export interface ITicketAIVirtualAgentHandoff {
|
|
315
|
+
id: string;
|
|
316
|
+
spaceId: string;
|
|
317
|
+
sessionId: string;
|
|
318
|
+
ticketId?: string;
|
|
319
|
+
flowId?: string;
|
|
320
|
+
conversationId?: string;
|
|
321
|
+
summary: string;
|
|
322
|
+
detectedIntent?: string;
|
|
323
|
+
detectedLanguage?: string;
|
|
324
|
+
confidence?: number;
|
|
325
|
+
collectedProperties: ITicketProperty[];
|
|
326
|
+
attemptedKnowledgeDocumentIds?: string[];
|
|
327
|
+
toolResults?: {
|
|
328
|
+
toolCode: string;
|
|
329
|
+
success: boolean;
|
|
330
|
+
summary?: string;
|
|
331
|
+
}[];
|
|
332
|
+
reason: TicketAIHandoffReason;
|
|
333
|
+
customerRequestedHuman?: boolean;
|
|
334
|
+
handedOffAt: Date;
|
|
335
|
+
}
|
|
336
|
+
/** DTO used by Flow or a virtual agent to attach its structured handoff to an existing or newly created ticket. */
|
|
337
|
+
export interface IAttachTicketAIHandoffDto {
|
|
338
|
+
ticketId: string;
|
|
339
|
+
handoffId: string;
|
|
340
|
+
expectedVersion: number;
|
|
341
|
+
}
|
|
342
|
+
/** Trace metadata retained for governance without requiring storage of raw prompts containing PII. */
|
|
343
|
+
export interface ITicketAITrace {
|
|
344
|
+
id: string;
|
|
345
|
+
spaceId: string;
|
|
346
|
+
ticketId?: string;
|
|
347
|
+
capability: TicketAICapability;
|
|
348
|
+
providerId: string;
|
|
349
|
+
modelId: string;
|
|
350
|
+
modelVersion?: string;
|
|
351
|
+
promptTemplateId?: string;
|
|
352
|
+
promptTemplateVersion?: number;
|
|
353
|
+
promptHash?: string;
|
|
354
|
+
inputRetained: boolean;
|
|
355
|
+
outputRetained: boolean;
|
|
356
|
+
sourceReferences?: ITicketAISourceReference[];
|
|
357
|
+
requestedBy?: string;
|
|
358
|
+
flowId?: string;
|
|
359
|
+
flowExecutionId?: string;
|
|
360
|
+
startedAt: Date;
|
|
361
|
+
completedAt?: Date;
|
|
362
|
+
latencyMs?: number;
|
|
363
|
+
inputTokens?: number;
|
|
364
|
+
outputTokens?: number;
|
|
365
|
+
totalCost?: number;
|
|
366
|
+
success: boolean;
|
|
367
|
+
errorCode?: string;
|
|
368
|
+
errorMessage?: string;
|
|
369
|
+
}
|
|
370
|
+
/** Aggregated measurements used to compare AI quality, adoption, savings and cost over time. */
|
|
371
|
+
export interface ITicketAIMetrics {
|
|
372
|
+
from: Date;
|
|
373
|
+
to: Date;
|
|
374
|
+
capability?: TicketAICapability;
|
|
375
|
+
requests: number;
|
|
376
|
+
successes: number;
|
|
377
|
+
failures: number;
|
|
378
|
+
accepted: number;
|
|
379
|
+
edited: number;
|
|
380
|
+
rejected: number;
|
|
381
|
+
acceptanceRate: number;
|
|
382
|
+
averageConfidence?: number;
|
|
383
|
+
averageLatencyMs?: number;
|
|
384
|
+
inputTokens: number;
|
|
385
|
+
outputTokens: number;
|
|
386
|
+
totalCost: number;
|
|
387
|
+
estimatedMinutesSaved?: number;
|
|
388
|
+
automatedResolutions?: number;
|
|
389
|
+
humanHandoffs?: number;
|
|
390
|
+
}
|
|
391
|
+
/** Query used by administrators and supervisors to retrieve AI operational and adoption metrics. */
|
|
392
|
+
export interface ITicketAIMetricsQuery {
|
|
393
|
+
from: Date;
|
|
394
|
+
to: Date;
|
|
395
|
+
capabilities?: TicketAICapability[];
|
|
396
|
+
modelIds?: string[];
|
|
397
|
+
userIds?: string[];
|
|
398
|
+
groupIds?: string[];
|
|
399
|
+
categoryIds?: string[];
|
|
400
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TicketAIContextScope = exports.TicketAIHandoffReason = exports.TicketAIAnalyticsInsightType = exports.TicketAIInsightSeverity = exports.TicketAIFeedbackType = exports.TicketAIOutputStatus = exports.TicketAIInsightType = exports.TicketAICapability = void 0;
|
|
4
|
+
/** Identifies the native AI experiences that Tickets can request from the central AI module. */
|
|
5
|
+
var TicketAICapability;
|
|
6
|
+
(function (TicketAICapability) {
|
|
7
|
+
TicketAICapability["SUMMARIZE"] = "SUMMARIZE";
|
|
8
|
+
TicketAICapability["SUMMARIZE_SINCE_LAST_READ"] = "SUMMARIZE_SINCE_LAST_READ";
|
|
9
|
+
TicketAICapability["SUGGEST_REPLY"] = "SUGGEST_REPLY";
|
|
10
|
+
TicketAICapability["REWRITE"] = "REWRITE";
|
|
11
|
+
TicketAICapability["TRANSLATE"] = "TRANSLATE";
|
|
12
|
+
TicketAICapability["SUGGEST_NEXT_ACTION"] = "SUGGEST_NEXT_ACTION";
|
|
13
|
+
TicketAICapability["SUGGEST_KNOWLEDGE"] = "SUGGEST_KNOWLEDGE";
|
|
14
|
+
TicketAICapability["FIND_SIMILAR_TICKETS"] = "FIND_SIMILAR_TICKETS";
|
|
15
|
+
TicketAICapability["DETECT_MISSING_INFORMATION"] = "DETECT_MISSING_INFORMATION";
|
|
16
|
+
TicketAICapability["CLASSIFY"] = "CLASSIFY";
|
|
17
|
+
TicketAICapability["EXTRACT_FIELDS"] = "EXTRACT_FIELDS";
|
|
18
|
+
TicketAICapability["ANALYZE_SENTIMENT"] = "ANALYZE_SENTIMENT";
|
|
19
|
+
TicketAICapability["PREDICT_RISK"] = "PREDICT_RISK";
|
|
20
|
+
})(TicketAICapability || (exports.TicketAICapability = TicketAICapability = {}));
|
|
21
|
+
/** Classifies machine-generated observations persisted against a ticket. */
|
|
22
|
+
var TicketAIInsightType;
|
|
23
|
+
(function (TicketAIInsightType) {
|
|
24
|
+
TicketAIInsightType["INTENT"] = "INTENT";
|
|
25
|
+
TicketAIInsightType["TOPIC"] = "TOPIC";
|
|
26
|
+
TicketAIInsightType["SENTIMENT"] = "SENTIMENT";
|
|
27
|
+
TicketAIInsightType["URGENCY"] = "URGENCY";
|
|
28
|
+
TicketAIInsightType["COMPLEXITY"] = "COMPLEXITY";
|
|
29
|
+
TicketAIInsightType["ESCALATION_RISK"] = "ESCALATION_RISK";
|
|
30
|
+
TicketAIInsightType["SLA_BREACH_RISK"] = "SLA_BREACH_RISK";
|
|
31
|
+
TicketAIInsightType["LANGUAGE"] = "LANGUAGE";
|
|
32
|
+
TicketAIInsightType["SPAM"] = "SPAM";
|
|
33
|
+
TicketAIInsightType["SUGGESTED_CATEGORY"] = "SUGGESTED_CATEGORY";
|
|
34
|
+
TicketAIInsightType["SUGGESTED_PRIORITY"] = "SUGGESTED_PRIORITY";
|
|
35
|
+
TicketAIInsightType["SUGGESTED_SKILLS"] = "SUGGESTED_SKILLS";
|
|
36
|
+
TicketAIInsightType["SUGGESTED_ASSIGNEE"] = "SUGGESTED_ASSIGNEE";
|
|
37
|
+
TicketAIInsightType["RESOLUTION_PROBABILITY"] = "RESOLUTION_PROBABILITY";
|
|
38
|
+
TicketAIInsightType["MISSING_INFORMATION"] = "MISSING_INFORMATION";
|
|
39
|
+
})(TicketAIInsightType || (exports.TicketAIInsightType = TicketAIInsightType = {}));
|
|
40
|
+
/** Describes whether an AI output is only proposed, accepted, rejected or superseded. */
|
|
41
|
+
var TicketAIOutputStatus;
|
|
42
|
+
(function (TicketAIOutputStatus) {
|
|
43
|
+
TicketAIOutputStatus["GENERATED"] = "GENERATED";
|
|
44
|
+
TicketAIOutputStatus["ACCEPTED"] = "ACCEPTED";
|
|
45
|
+
TicketAIOutputStatus["EDITED"] = "EDITED";
|
|
46
|
+
TicketAIOutputStatus["REJECTED"] = "REJECTED";
|
|
47
|
+
TicketAIOutputStatus["APPLIED"] = "APPLIED";
|
|
48
|
+
TicketAIOutputStatus["SUPERSEDED"] = "SUPERSEDED";
|
|
49
|
+
TicketAIOutputStatus["EXPIRED"] = "EXPIRED";
|
|
50
|
+
TicketAIOutputStatus["FAILED"] = "FAILED";
|
|
51
|
+
})(TicketAIOutputStatus || (exports.TicketAIOutputStatus = TicketAIOutputStatus = {}));
|
|
52
|
+
/** Records explicit and implicit feedback used to evaluate model usefulness. */
|
|
53
|
+
var TicketAIFeedbackType;
|
|
54
|
+
(function (TicketAIFeedbackType) {
|
|
55
|
+
TicketAIFeedbackType["ACCEPTED"] = "ACCEPTED";
|
|
56
|
+
TicketAIFeedbackType["EDITED"] = "EDITED";
|
|
57
|
+
TicketAIFeedbackType["REJECTED"] = "REJECTED";
|
|
58
|
+
TicketAIFeedbackType["HELPFUL"] = "HELPFUL";
|
|
59
|
+
TicketAIFeedbackType["NOT_HELPFUL"] = "NOT_HELPFUL";
|
|
60
|
+
TicketAIFeedbackType["INCORRECT"] = "INCORRECT";
|
|
61
|
+
TicketAIFeedbackType["UNSAFE"] = "UNSAFE";
|
|
62
|
+
})(TicketAIFeedbackType || (exports.TicketAIFeedbackType = TicketAIFeedbackType = {}));
|
|
63
|
+
/** Severity used by supervisor insights to prioritize anomalies and recommendations. */
|
|
64
|
+
var TicketAIInsightSeverity;
|
|
65
|
+
(function (TicketAIInsightSeverity) {
|
|
66
|
+
TicketAIInsightSeverity["INFO"] = "INFO";
|
|
67
|
+
TicketAIInsightSeverity["LOW"] = "LOW";
|
|
68
|
+
TicketAIInsightSeverity["MEDIUM"] = "MEDIUM";
|
|
69
|
+
TicketAIInsightSeverity["HIGH"] = "HIGH";
|
|
70
|
+
TicketAIInsightSeverity["CRITICAL"] = "CRITICAL";
|
|
71
|
+
})(TicketAIInsightSeverity || (exports.TicketAIInsightSeverity = TicketAIInsightSeverity = {}));
|
|
72
|
+
/** Types of cross-ticket analysis surfaced in dashboards and supervisor workspaces. */
|
|
73
|
+
var TicketAIAnalyticsInsightType;
|
|
74
|
+
(function (TicketAIAnalyticsInsightType) {
|
|
75
|
+
TicketAIAnalyticsInsightType["ANOMALY"] = "ANOMALY";
|
|
76
|
+
TicketAIAnalyticsInsightType["TREND"] = "TREND";
|
|
77
|
+
TicketAIAnalyticsInsightType["FORECAST"] = "FORECAST";
|
|
78
|
+
TicketAIAnalyticsInsightType["EMERGING_TOPIC"] = "EMERGING_TOPIC";
|
|
79
|
+
TicketAIAnalyticsInsightType["ROOT_CAUSE"] = "ROOT_CAUSE";
|
|
80
|
+
TicketAIAnalyticsInsightType["SLA_RISK"] = "SLA_RISK";
|
|
81
|
+
TicketAIAnalyticsInsightType["STAFFING_RISK"] = "STAFFING_RISK";
|
|
82
|
+
TicketAIAnalyticsInsightType["QUALITY_RISK"] = "QUALITY_RISK";
|
|
83
|
+
TicketAIAnalyticsInsightType["RECOMMENDATION"] = "RECOMMENDATION";
|
|
84
|
+
TicketAIAnalyticsInsightType["EXECUTIVE_SUMMARY"] = "EXECUTIVE_SUMMARY";
|
|
85
|
+
})(TicketAIAnalyticsInsightType || (exports.TicketAIAnalyticsInsightType = TicketAIAnalyticsInsightType = {}));
|
|
86
|
+
/** Declares why an autonomous or assisted AI session handed work to a human. */
|
|
87
|
+
var TicketAIHandoffReason;
|
|
88
|
+
(function (TicketAIHandoffReason) {
|
|
89
|
+
TicketAIHandoffReason["CUSTOMER_REQUESTED"] = "CUSTOMER_REQUESTED";
|
|
90
|
+
TicketAIHandoffReason["LOW_CONFIDENCE"] = "LOW_CONFIDENCE";
|
|
91
|
+
TicketAIHandoffReason["POLICY_REQUIRED"] = "POLICY_REQUIRED";
|
|
92
|
+
TicketAIHandoffReason["UNSUPPORTED_INTENT"] = "UNSUPPORTED_INTENT";
|
|
93
|
+
TicketAIHandoffReason["NEGATIVE_SENTIMENT"] = "NEGATIVE_SENTIMENT";
|
|
94
|
+
TicketAIHandoffReason["SECURITY_RISK"] = "SECURITY_RISK";
|
|
95
|
+
TicketAIHandoffReason["TOOL_FAILURE"] = "TOOL_FAILURE";
|
|
96
|
+
TicketAIHandoffReason["SLA_RISK"] = "SLA_RISK";
|
|
97
|
+
TicketAIHandoffReason["OTHER"] = "OTHER";
|
|
98
|
+
})(TicketAIHandoffReason || (exports.TicketAIHandoffReason = TicketAIHandoffReason = {}));
|
|
99
|
+
/** Controls how much ticket context may be sent to AI after authorization and PII filtering. */
|
|
100
|
+
var TicketAIContextScope;
|
|
101
|
+
(function (TicketAIContextScope) {
|
|
102
|
+
TicketAIContextScope["TICKET_FIELDS"] = "TICKET_FIELDS";
|
|
103
|
+
TicketAIContextScope["PUBLIC_MESSAGES"] = "PUBLIC_MESSAGES";
|
|
104
|
+
TicketAIContextScope["INTERNAL_NOTES"] = "INTERNAL_NOTES";
|
|
105
|
+
TicketAIContextScope["ATTACHMENT_TEXT"] = "ATTACHMENT_TEXT";
|
|
106
|
+
TicketAIContextScope["CONTACT_PROFILE"] = "CONTACT_PROFILE";
|
|
107
|
+
TicketAIContextScope["ORGANIZATION_PROFILE"] = "ORGANIZATION_PROFILE";
|
|
108
|
+
TicketAIContextScope["KNOWLEDGE"] = "KNOWLEDGE";
|
|
109
|
+
TicketAIContextScope["RELATED_TICKETS"] = "RELATED_TICKETS";
|
|
110
|
+
TicketAIContextScope["SLA"] = "SLA";
|
|
111
|
+
TicketAIContextScope["TASKS"] = "TASKS";
|
|
112
|
+
TicketAIContextScope["APPROVALS"] = "APPROVALS";
|
|
113
|
+
})(TicketAIContextScope || (exports.TicketAIContextScope = TicketAIContextScope = {}));
|