orbitx-core-models 11.178.0 → 11.180.0

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 (59) hide show
  1. package/dist/activity/recorder.d.ts +2 -2
  2. package/dist/activity/recorder.d.ts.map +1 -1
  3. package/dist/activity/recorder.js +4 -7
  4. package/dist/constants/ticketCategories.d.ts +41 -20
  5. package/dist/constants/ticketCategories.d.ts.map +1 -1
  6. package/dist/constants/ticketCategories.js +212 -53
  7. package/dist/helpers/chatAttachments.d.ts +4 -3
  8. package/dist/helpers/chatAttachments.d.ts.map +1 -1
  9. package/dist/helpers/chatAttachments.js +7 -7
  10. package/dist/helpers/emailTemplates.d.ts.map +1 -1
  11. package/dist/helpers/emailTemplates.js +4 -5
  12. package/dist/helpers/ownTickets.d.ts +3 -1
  13. package/dist/helpers/ownTickets.d.ts.map +1 -1
  14. package/dist/helpers/ownTickets.js +30 -11
  15. package/dist/helpers/privateFiles.d.ts +14 -0
  16. package/dist/helpers/privateFiles.d.ts.map +1 -0
  17. package/dist/helpers/privateFiles.js +45 -0
  18. package/dist/helpers/requestInfo.d.ts +47 -0
  19. package/dist/helpers/requestInfo.d.ts.map +1 -0
  20. package/dist/helpers/requestInfo.js +156 -0
  21. package/dist/helpers/s3Storage.d.ts +24 -2
  22. package/dist/helpers/s3Storage.d.ts.map +1 -1
  23. package/dist/helpers/s3Storage.js +73 -5
  24. package/dist/helpers/sessions.d.ts +51 -3
  25. package/dist/helpers/sessions.d.ts.map +1 -1
  26. package/dist/helpers/sessions.js +144 -11
  27. package/dist/index.d.ts +8 -5
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +16 -2
  30. package/dist/interfaces/company.interface.d.ts +2 -0
  31. package/dist/interfaces/company.interface.d.ts.map +1 -1
  32. package/dist/interfaces/session.interface.d.ts +2 -0
  33. package/dist/interfaces/session.interface.d.ts.map +1 -1
  34. package/dist/interfaces/subscription.interface.d.ts +2 -0
  35. package/dist/interfaces/subscription.interface.d.ts.map +1 -1
  36. package/dist/interfaces/ticket.interface.d.ts +30 -26
  37. package/dist/interfaces/ticket.interface.d.ts.map +1 -1
  38. package/dist/interfaces/ticket.interface.js +28 -4
  39. package/dist/interfaces/user.interface.d.ts +4 -0
  40. package/dist/interfaces/user.interface.d.ts.map +1 -1
  41. package/dist/interfaces/vertical.interface.d.ts +1 -1
  42. package/dist/interfaces/vertical.interface.d.ts.map +1 -1
  43. package/dist/models/company.model.d.ts.map +1 -1
  44. package/dist/models/company.model.js +3 -0
  45. package/dist/models/session.model.d.ts.map +1 -1
  46. package/dist/models/session.model.js +4 -0
  47. package/dist/models/subscription.model.d.ts.map +1 -1
  48. package/dist/models/subscription.model.js +4 -0
  49. package/dist/models/ticket.model.d.ts.map +1 -1
  50. package/dist/models/ticket.model.js +24 -38
  51. package/dist/models/user.model.d.ts.map +1 -1
  52. package/dist/models/user.model.js +7 -0
  53. package/dist/models/vertical.model.js +1 -1
  54. package/dist/routing/ticketRouting.d.ts +11 -1
  55. package/dist/routing/ticketRouting.d.ts.map +1 -1
  56. package/dist/routing/ticketRouting.js +82 -33
  57. package/dist/utils/ticketSanitize.d.ts.map +1 -1
  58. package/dist/utils/ticketSanitize.js +4 -0
  59. package/package.json +1 -1
@@ -1,19 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateBackupCodes = generateBackupCodes;
4
+ exports.isNewSignInDevice = isNewSignInDevice;
4
5
  exports.createLoginSession = createLoginSession;
6
+ exports.touchSession = touchSession;
7
+ exports.sessionView = sessionView;
8
+ exports.listSessionViews = listSessionViews;
9
+ exports.renameSessionDevice = renameSessionDevice;
5
10
  exports.createSessionHandlers = createSessionHandlers;
6
11
  /**
7
12
  * Sign-in sessions and 2FA backup codes shared by the Client and Partner backends. Each backend keeps its own
8
13
  * login and 2FA flow (they find the account differently); these are the identical pieces:
9
14
  * generateBackupCodes() 8 single-use codes, plain for the user and SHA-256 for the database
10
- * createLoginSession(user, device) stores a 30-day session and returns its id (the JWT carries it)
11
- * createSessionHandlers() GET my sessions / revoke one of my sessions
15
+ * createLoginSession(user, device, req) stores a 30-day session and returns its id (the JWT carries it)
16
+ * isNewSignInDevice(userId, fingerprintId) a sign-in from a browser this account has never used (for the alert email)
17
+ * touchSession(sessionId) marks a session as just used (the Sessions screen's Active / Idle)
18
+ * sessionView(session, currentSessionId) one session as the Sessions screens show it (Ops uses it too)
19
+ * createSessionHandlers() GET my sessions / rename a device / revoke one of my sessions
12
20
  */
13
21
  const crypto_1 = require("crypto");
22
+ const mongoose_1 = require("mongoose");
14
23
  const session_model_1 = require("../models/session.model");
15
24
  const errors_1 = require("./errors");
16
25
  const _http_1 = require("./_http");
26
+ const requestInfo_1 = require("./requestInfo");
17
27
  /** 8 single-use backup codes, e.g. "A3F9B2C1D4". Stored as SHA-256 hashes so the server never holds the plain codes. */
18
28
  function generateBackupCodes() {
19
29
  const plain = [];
@@ -25,31 +35,154 @@ function generateBackupCodes() {
25
35
  }
26
36
  return { plain, hashed };
27
37
  }
28
- /** Stores a new 30-day session for the user and returns its id. */
29
- async function createLoginSession(user, { fingerprintId, browser, os, userAgent, ip }) {
38
+ /** The name the person gave this device on an earlier sign-in (renaming applies to all of a device's sessions). */
39
+ async function savedDeviceName(SessionModel, userId, fingerprintId) {
40
+ if (!fingerprintId)
41
+ return undefined;
42
+ const last = await SessionModel.findOne({ userId, fingerprintId, customName: { $nin: [null, ""] } })
43
+ .sort("-createdAt")
44
+ .select("customName")
45
+ .lean();
46
+ return (last === null || last === void 0 ? void 0 : last.customName) || undefined;
47
+ }
48
+ /**
49
+ * True when this sign-in comes from a browser the account has never signed in from before, so the person gets a
50
+ * "new sign-in" email. Call it BEFORE createLoginSession (which records the browser). The very first sign-in of an
51
+ * account isn't "new" (there's nothing to compare with), and without a browser id there's nothing to go on.
52
+ * Sessions are never deleted (revoked and expired ones stay), so this sees every browser ever used.
53
+ */
54
+ async function isNewSignInDevice(userId, fingerprintId) {
55
+ if (!userId || !fingerprintId)
56
+ return false;
57
+ const SessionModel = session_model_1.Session;
58
+ const [seenHere, anyBefore] = await Promise.all([
59
+ SessionModel.exists({ userId, fingerprintId }),
60
+ SessionModel.exists({ userId }),
61
+ ]);
62
+ return !seenHere && !!anyBefore;
63
+ }
64
+ /**
65
+ * Stores a new 30-day session for the user and returns its id. Pass the request so the session gets the visitor's
66
+ * real IP address and location (read from the Cloudflare / nginx headers) and the real user agent.
67
+ */
68
+ async function createLoginSession(user, device, req) {
69
+ var _a;
30
70
  const sessionId = (0, crypto_1.randomBytes)(32).toString("hex");
71
+ const userAgent = String(((_a = req === null || req === void 0 ? void 0 : req.headers) === null || _a === void 0 ? void 0 : _a["user-agent"]) || device.userAgent || "").slice(0, 500) || undefined;
72
+ const detected = (0, requestInfo_1.describeDevice)(userAgent, { model: device.deviceModel, platformVersion: device.platformVersion });
31
73
  await session_model_1.Session.create({
32
74
  userId: user._id,
33
75
  sessionId,
34
- fingerprintId,
35
- browser,
36
- os,
37
- ipAddress: ip,
76
+ fingerprintId: device.fingerprintId,
77
+ deviceName: userAgent ? detected.deviceName : undefined,
78
+ browser: userAgent ? detected.browser : device.browser,
79
+ os: userAgent ? detected.os : device.os,
80
+ ipAddress: req ? (0, requestInfo_1.clientIp)(req) : (0, requestInfo_1.normalizeIp)(device.ip),
81
+ location: req ? (0, requestInfo_1.requestLocation)(req) : undefined,
38
82
  userAgent,
83
+ customName: await savedDeviceName(session_model_1.Session, user._id, device.fingerprintId),
39
84
  isRevoked: false,
40
85
  lastActiveAt: new Date(),
41
86
  expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
42
87
  });
43
88
  return sessionId;
44
89
  }
45
- /** The signed-in user's open sessions, and revoking one of them. */
90
+ const TOUCH_EVERY_MS = 5 * 60 * 1000;
91
+ const lastTouched = new Map();
92
+ /**
93
+ * Marks the session as used just now, so the Sessions screen can tell Active from Idle. At most one small write per
94
+ * session every 5 minutes, never awaited and never failing the request. Ops passes its own session model.
95
+ */
96
+ function touchSession(sessionId, SessionModel = session_model_1.Session) {
97
+ if (!sessionId)
98
+ return;
99
+ const now = Date.now();
100
+ const last = lastTouched.get(sessionId);
101
+ if (last && now - last < TOUCH_EVERY_MS)
102
+ return;
103
+ lastTouched.set(sessionId, now);
104
+ if (lastTouched.size > 10000) {
105
+ for (const [id, at] of lastTouched)
106
+ if (now - at >= TOUCH_EVERY_MS)
107
+ lastTouched.delete(id);
108
+ }
109
+ Promise.resolve(SessionModel.updateOne({ sessionId }, { $set: { lastActiveAt: new Date(now) } })).catch(() => lastTouched.delete(sessionId));
110
+ }
111
+ /** Used within this long = "Active", otherwise "Idle". touchSession writes every 5 minutes, so this leaves room. */
112
+ const ACTIVE_WINDOW_MS = 30 * 60 * 1000;
113
+ /** One session as the Sessions screens show it. Sessions from before Oct 2026 stored no device name (Client /
114
+ * Partner) or an old "Chrome 129 on Windows 10/11" label (Ops); those are read again from their user agent. */
115
+ function sessionView(session, currentSessionId) {
116
+ const s = (session === null || session === void 0 ? void 0 : session.toObject) ? session.toObject() : session;
117
+ const current = Boolean(currentSessionId) && s.sessionId === currentSessionId;
118
+ const stored = s.deviceName && !/ on /.test(s.deviceName);
119
+ const detected = stored
120
+ ? { deviceName: s.deviceName, browser: s.browser, os: s.os }
121
+ : s.userAgent
122
+ ? (0, requestInfo_1.describeDevice)(s.userAgent)
123
+ : { deviceName: "Unknown device", browser: s.browser, os: s.os };
124
+ const ip = (0, requestInfo_1.normalizeIp)(s.ipAddress);
125
+ const realIp = ip && !(0, requestInfo_1.isPrivateIp)(ip) ? ip : undefined;
126
+ const lastActive = s.lastActiveAt ? new Date(s.lastActiveAt).getTime() : 0;
127
+ return {
128
+ _id: String(s._id),
129
+ sessionId: s.sessionId,
130
+ deviceName: s.customName || detected.deviceName,
131
+ detectedName: detected.deviceName,
132
+ customName: s.customName || undefined,
133
+ browser: detected.browser || undefined,
134
+ os: detected.os || undefined,
135
+ ipAddress: realIp,
136
+ location: realIp ? s.location || undefined : undefined,
137
+ isCurrent: current,
138
+ status: current || Date.now() - lastActive < ACTIVE_WINDOW_MS ? "active" : "idle",
139
+ lastActiveAt: s.lastActiveAt,
140
+ createdAt: s.createdAt,
141
+ expiresAt: s.expiresAt,
142
+ };
143
+ }
144
+ /** The signed-in user's sessions as the Sessions screen shows them: this device first, then most recently used. */
145
+ async function listSessionViews(SessionModel, userId, currentSessionId) {
146
+ const sessions = await SessionModel.find({ userId, isRevoked: false, expiresAt: { $gt: new Date() } })
147
+ .sort("-lastActiveAt")
148
+ .lean();
149
+ const views = sessions.map((s) => sessionView(s, currentSessionId));
150
+ return views.sort((a, b) => Number(b.isCurrent) - Number(a.isCurrent));
151
+ }
152
+ /** Names one of the user's devices (all of that device's sessions, so later sign-ins keep it); "" clears it. */
153
+ async function renameSessionDevice(SessionModel, userId, id, rawName) {
154
+ if (!mongoose_1.Types.ObjectId.isValid(id))
155
+ return null;
156
+ const session = await SessionModel.findOne({ _id: id, userId, isRevoked: false });
157
+ if (!session)
158
+ return null;
159
+ const name = (0, requestInfo_1.cleanDeviceName)(rawName);
160
+ const filter = session.fingerprintId ? { userId, fingerprintId: session.fingerprintId } : { _id: session._id };
161
+ await SessionModel.updateMany(filter, name ? { $set: { customName: name } } : { $unset: { customName: 1 } });
162
+ return { name };
163
+ }
164
+ /** The signed-in user's open sessions, naming a device, and revoking a session. The backend's protect middleware
165
+ * sets req.sessionId (the JWT's session) so "This device" is marked here, not guessed in the browser. */
46
166
  function createSessionHandlers() {
47
167
  const SessionModel = session_model_1.Session;
48
168
  const getSessions = (0, _http_1.catchAsync)(async (req, res) => {
49
- const sessions = await SessionModel.find({ userId: req.user._id, isRevoked: false }).sort("-lastActiveAt");
169
+ const sessions = await listSessionViews(SessionModel, req.user._id, req.sessionId);
50
170
  res.status(_http_1.HTTP.OK).json({ success: true, sessions });
51
171
  });
172
+ const renameSession = (0, _http_1.catchAsync)(async (req, res, next) => {
173
+ var _a;
174
+ const result = await renameSessionDevice(SessionModel, req.user._id, req.params.sessionId, (_a = req.body) === null || _a === void 0 ? void 0 : _a.name);
175
+ if (!result)
176
+ return next(new errors_1.AppError("Session not found", _http_1.HTTP.NOT_FOUND));
177
+ res.status(_http_1.HTTP.OK).json({
178
+ success: true,
179
+ message: result.name ? "Device renamed" : "Device name removed",
180
+ name: result.name,
181
+ });
182
+ });
52
183
  const revokeSession = (0, _http_1.catchAsync)(async (req, res, next) => {
184
+ if (!mongoose_1.Types.ObjectId.isValid(req.params.sessionId))
185
+ return next(new errors_1.AppError("Session not found", _http_1.HTTP.NOT_FOUND));
53
186
  const session = await SessionModel.findOne({ _id: req.params.sessionId, userId: req.user._id });
54
187
  if (!session)
55
188
  return next(new errors_1.AppError("Session not found", _http_1.HTTP.NOT_FOUND));
@@ -57,5 +190,5 @@ function createSessionHandlers() {
57
190
  await session.save();
58
191
  res.status(_http_1.HTTP.OK).json({ success: true, message: "Session revoked" });
59
192
  });
60
- return { getSessions, revokeSession };
193
+ return { getSessions, renameSession, revokeSession };
61
194
  }
package/dist/index.d.ts CHANGED
@@ -47,7 +47,7 @@ import { ActivityLog } from "./models/activityLog.model";
47
47
  import { recordActivity, activityRecorder, clientIp } from "./activity/recorder";
48
48
  import type { ActivityEntry, ActivityRule, ActivityActor, ActivityContext, ActivityRecorderOptions } from "./activity/recorder";
49
49
  import { Update } from "./models/update.model";
50
- import { resolveTicketRouting, pickFromGroup, OPEN_TICKET_STATUSES } from "./routing/ticketRouting";
50
+ import { resolveTicketRouting, pickFromGroup, pickFromTicketTeam, ticketTeamMembers, OPEN_TICKET_STATUSES } from "./routing/ticketRouting";
51
51
  import { IChat } from "./interfaces/chat.interface";
52
52
  import { IMacro, SCRIPT_ANSWER_FIELDS, ScriptAnswerField } from "./interfaces/macro.interface";
53
53
  import { IVertical } from "./interfaces/vertical.interface";
@@ -81,8 +81,8 @@ import { ILoginOtp } from "./interfaces/loginOtp.interface";
81
81
  import { IEmployee } from "./interfaces/employee.interface";
82
82
  import { ICallSession, CallSessionStatus, CallSessionDirection } from "./interfaces/callSession.interface";
83
83
  import { IRequest, IRequestAttachment, IRequestMessage, IRequestActivityEntry, IRequestField, RequestCategory, RequestStatus, REQUEST_CATEGORIES, REQUEST_SUBCATEGORIES_BY_CATEGORY } from "./interfaces/request.interface";
84
- import { ITicket, ITicketAttachment, ITicketActivityEntry, ITicketMessage, TicketCategory, ClientTicketCategory, ClientTicketCategoryLegacy, PartnerTicketCategory, PartnerTicketCategoryLegacy, TicketOwnerType, TicketSource, TicketStatus, TicketPriority, TICKET_STATUS_CLIENT_VIEW, CLIENT_TICKET_CATEGORIES, CLIENT_TICKET_CATEGORIES_LEGACY, PARTNER_TICKET_CATEGORIES, PARTNER_TICKET_CATEGORIES_LEGACY } from "./interfaces/ticket.interface";
85
- import { TicketCategoryOption, TicketSubCategoryOption, CLIENT_TICKET_CATEGORY_OPTIONS, PARTNER_TICKET_CATEGORY_OPTIONS, CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY, PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY, ALL_TICKET_CATEGORY_OPTIONS, findTicketCategoryOption, EDITABLE_SUBCATEGORY_KEYS, applySubCategoryOverrides } from "./constants/ticketCategories";
84
+ import { ITicket, ITicketAttachment, ITicketActivityEntry, ITicketMessage, TicketCategory, ClientTicketCategory, ClientTicketCategoryLegacy, PartnerTicketCategory, PartnerTicketCategoryLegacy, TicketOwnerType, TicketSource, TicketStatus, TicketPriority, TICKET_STATUS_CLIENT_VIEW, CLIENT_TICKET_CATEGORIES, CLIENT_TICKET_CATEGORIES_LEGACY, PARTNER_TICKET_CATEGORIES, PARTNER_TICKET_CATEGORIES_LEGACY, TicketTeam, TicketTeamMembership, TICKET_TEAMS, TICKET_TEAM_LABELS } from "./interfaces/ticket.interface";
85
+ import { TicketCategoryOption, TicketSubCategoryOption, CLIENT_TICKET_CATEGORY_OPTIONS, PARTNER_TICKET_CATEGORY_OPTIONS, CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY, PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY, ALL_TICKET_CATEGORY_OPTIONS, findTicketCategoryOption, findTicketCategoryOptionFor, ticketCategoryOptionsFor, ticketTeamFor, EDITABLE_SUBCATEGORY_KEYS, applySubCategoryOverrides } from "./constants/ticketCategories";
86
86
  import { ITicketSubCategoryOverride } from "./interfaces/ticketCategoryOverride.interface";
87
87
  import { TicketSubCategoryOverride } from "./models/ticketCategoryOverride.model";
88
88
  import { IRole } from "./interfaces/role.interface";
@@ -103,8 +103,8 @@ import { clientTree } from "./permissions/trees/client.tree";
103
103
  import { getTree, getAllKeys, getParentKey, getAncestorKeys } from "./permissions/treeUtils";
104
104
  import { resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, PermissionSource, ValidationResult } from "./permissions/resolve";
105
105
  import { roleSeeds, RoleSeed } from "./permissions/seeds/roles.seed";
106
- export { Chat, Message, User, Vertical, Macro, Partner, Company, CompanySettings, Review, Wallet, StripeLog, Transaction, Lead, TierConfig, TierProgress, MonthlyTierSnapshot, Product, Plan, PlanOption, Addon, Subscription, Coupon, Visitor, Group, Agent, LeadLedger, Invoice, LeadDispute, Session, LoginOtp, Counter, Employee, CallSession, Request, REQUEST_CATEGORIES, REQUEST_SUBCATEGORIES_BY_CATEGORY, Ticket, EmailSenderMap, CLIENT_TICKET_CATEGORIES, CLIENT_TICKET_CATEGORIES_LEGACY, PARTNER_TICKET_CATEGORIES, PARTNER_TICKET_CATEGORIES_LEGACY, CLIENT_TICKET_CATEGORY_OPTIONS, PARTNER_TICKET_CATEGORY_OPTIONS, CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY, PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY, ALL_TICKET_CATEGORY_OPTIONS, findTicketCategoryOption, EDITABLE_SUBCATEGORY_KEYS, applySubCategoryOverrides, TicketSubCategoryOverride, TICKET_STATUS_CLIENT_VIEW, sanitizeTicketForRequester, Role, AiSummarySettings, AiSummaryUsage, RetainerContract, Retainer, AppointmentCalendar, Appointment, ActivityLog, recordActivity, activityRecorder, clientIp, AuditTask, Update, updateEvents, resolveTicketRouting, pickFromGroup, OPEN_TICKET_STATUSES, SCRIPT_ANSWER_FIELDS, opsTree, employeeTree, partnerTree, clientTree, DASHBOARDS, getTree, getAllKeys, getParentKey, getAncestorKeys, resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, roleSeeds, };
107
- export type { IChat, ScriptAnswerField, IMessage, IUser, IVertical, IMacro, IPartner, ICompany, IOnboardingStep, ITwilioConfig, ICompanySettings, ICallConnectSettings, ILeadConfig, ILeadFields, IRetainerConfig, IDashboardTheme, IReview, IReviewStatusHistoryEntry, IWallet, IStripeLog, ITransaction, ILead, ITierConfig, ITierProgress, IMonthlyTierSnapshot, IProduct, IPlan, IPlanOption, IAddon, ISubscription, ICoupon, CouponDiscountType, IVisitor, IGroup, IAgent, ILeadLedger, IInvoice, ILeadDispute, ISession, ILoginOtp, IEmployee, ICallSession, CallSessionStatus, CallSessionDirection, IRequest, IRequestAttachment, IRequestMessage, IRequestActivityEntry, IRequestField, RequestCategory, RequestStatus, ITicket, ITicketAttachment, ITicketActivityEntry, ITicketMessage, IEmailSenderMap, TicketCategory, ClientTicketCategory, ClientTicketCategoryLegacy, PartnerTicketCategory, PartnerTicketCategoryLegacy, TicketCategoryOption, TicketSubCategoryOption, TicketOwnerType, TicketSource, TicketStatus, TicketPriority, ITicketSubCategoryOverride, IRole, IAiSummarySettings, IAiSummaryExample, IAiSummaryUsage, IRetainerContract, IRetainerContractField, IRetainer, IRetainerFieldValue, RetainerProvider, RetainerContractStatus, RetainerStatus, RetainerDeliveryMode, IAppointmentCalendar, IAppointment, AppointmentCalendarStatus, AppointmentStatus, IActivityLog, IActivityChange, ActivityActorKind, ActivityDashboard, ActivityOutcome, ActivityEntry, ActivityRule, ActivityActor, ActivityContext, ActivityRecorderOptions, AiSummaryLength, IAuditTask, AuditTaskType, AuditTaskStatus, ILeadAudit, LeadAuditDecision, LeadAuditReviewStatus, IUpdate, UpdateDashboard, UpdateAudience, UpdateType, TicketRoutingInput, TicketRoutingResult, Dashboard, PermissionNode, PermissionSource, ValidationResult, RoleSeed, };
106
+ export { Chat, Message, User, Vertical, Macro, Partner, Company, CompanySettings, Review, Wallet, StripeLog, Transaction, Lead, TierConfig, TierProgress, MonthlyTierSnapshot, Product, Plan, PlanOption, Addon, Subscription, Coupon, Visitor, Group, Agent, LeadLedger, Invoice, LeadDispute, Session, LoginOtp, Counter, Employee, CallSession, Request, REQUEST_CATEGORIES, REQUEST_SUBCATEGORIES_BY_CATEGORY, Ticket, EmailSenderMap, CLIENT_TICKET_CATEGORIES, CLIENT_TICKET_CATEGORIES_LEGACY, PARTNER_TICKET_CATEGORIES, PARTNER_TICKET_CATEGORIES_LEGACY, CLIENT_TICKET_CATEGORY_OPTIONS, PARTNER_TICKET_CATEGORY_OPTIONS, CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY, PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY, ALL_TICKET_CATEGORY_OPTIONS, findTicketCategoryOption, findTicketCategoryOptionFor, ticketCategoryOptionsFor, ticketTeamFor, TICKET_TEAMS, TICKET_TEAM_LABELS, EDITABLE_SUBCATEGORY_KEYS, applySubCategoryOverrides, TicketSubCategoryOverride, TICKET_STATUS_CLIENT_VIEW, sanitizeTicketForRequester, Role, AiSummarySettings, AiSummaryUsage, RetainerContract, Retainer, AppointmentCalendar, Appointment, ActivityLog, recordActivity, activityRecorder, clientIp, AuditTask, Update, updateEvents, resolveTicketRouting, pickFromGroup, pickFromTicketTeam, ticketTeamMembers, OPEN_TICKET_STATUSES, SCRIPT_ANSWER_FIELDS, opsTree, employeeTree, partnerTree, clientTree, DASHBOARDS, getTree, getAllKeys, getParentKey, getAncestorKeys, resolveEffectivePermissions, hasPermission, validateGrantedKeys, validateExtraKeys, getFullAccessKeys, roleSeeds, };
107
+ export type { IChat, ScriptAnswerField, IMessage, IUser, IVertical, IMacro, IPartner, ICompany, IOnboardingStep, ITwilioConfig, ICompanySettings, ICallConnectSettings, ILeadConfig, ILeadFields, IRetainerConfig, IDashboardTheme, IReview, IReviewStatusHistoryEntry, IWallet, IStripeLog, ITransaction, ILead, ITierConfig, ITierProgress, IMonthlyTierSnapshot, IProduct, IPlan, IPlanOption, IAddon, ISubscription, ICoupon, CouponDiscountType, IVisitor, IGroup, IAgent, ILeadLedger, IInvoice, ILeadDispute, ISession, ILoginOtp, IEmployee, ICallSession, CallSessionStatus, CallSessionDirection, IRequest, IRequestAttachment, IRequestMessage, IRequestActivityEntry, IRequestField, RequestCategory, RequestStatus, ITicket, ITicketAttachment, ITicketActivityEntry, ITicketMessage, IEmailSenderMap, TicketCategory, ClientTicketCategory, ClientTicketCategoryLegacy, PartnerTicketCategory, PartnerTicketCategoryLegacy, TicketTeam, TicketTeamMembership, TicketCategoryOption, TicketSubCategoryOption, TicketOwnerType, TicketSource, TicketStatus, TicketPriority, ITicketSubCategoryOverride, IRole, IAiSummarySettings, IAiSummaryExample, IAiSummaryUsage, IRetainerContract, IRetainerContractField, IRetainer, IRetainerFieldValue, RetainerProvider, RetainerContractStatus, RetainerStatus, RetainerDeliveryMode, IAppointmentCalendar, IAppointment, AppointmentCalendarStatus, AppointmentStatus, IActivityLog, IActivityChange, ActivityActorKind, ActivityDashboard, ActivityOutcome, ActivityEntry, ActivityRule, ActivityActor, ActivityContext, ActivityRecorderOptions, AiSummaryLength, IAuditTask, AuditTaskType, AuditTaskStatus, ILeadAudit, LeadAuditDecision, LeadAuditReviewStatus, IUpdate, UpdateDashboard, UpdateAudience, UpdateType, TicketRoutingInput, TicketRoutingResult, Dashboard, PermissionNode, PermissionSource, ValidationResult, RoleSeed, };
108
108
  export * from "./helpers/errors";
109
109
  export * from "./helpers/listQuery";
110
110
  export * from "./helpers/chatAttachments";
@@ -112,11 +112,14 @@ export * from "./helpers/addonState";
112
112
  export * from "./helpers/analyticsBuckets";
113
113
  export * from "./helpers/contactDecrypt";
114
114
  export * from "./helpers/s3Storage";
115
+ export * from "./helpers/privateFiles";
115
116
  export * from "./helpers/emailTemplates";
116
117
  export * from "./helpers/avatars";
117
118
  export * from "./helpers/myUpdates";
118
119
  export * from "./helpers/ownActivity";
119
120
  export * from "./helpers/sessions";
121
+ export { normalizeIp, isPrivateIp, requestLocation, describeDevice, cleanDeviceName } from "./helpers/requestInfo";
122
+ export type { DeviceHints, DeviceDescription } from "./helpers/requestInfo";
120
123
  export * from "./helpers/invoiceDocument";
121
124
  export * from "./helpers/ownTickets";
122
125
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.applySubCategoryOverrides = exports.EDITABLE_SUBCATEGORY_KEYS = exports.findTicketCategoryOption = exports.ALL_TICKET_CATEGORY_OPTIONS = exports.PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY = exports.CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY = exports.PARTNER_TICKET_CATEGORY_OPTIONS = exports.CLIENT_TICKET_CATEGORY_OPTIONS = exports.PARTNER_TICKET_CATEGORIES_LEGACY = exports.PARTNER_TICKET_CATEGORIES = exports.CLIENT_TICKET_CATEGORIES_LEGACY = exports.CLIENT_TICKET_CATEGORIES = exports.EmailSenderMap = exports.Ticket = exports.REQUEST_SUBCATEGORIES_BY_CATEGORY = exports.REQUEST_CATEGORIES = exports.Request = exports.CallSession = exports.Employee = exports.Counter = exports.LoginOtp = exports.Session = exports.LeadDispute = exports.Invoice = exports.LeadLedger = exports.Agent = exports.Group = exports.Visitor = exports.Coupon = exports.Subscription = exports.Addon = exports.PlanOption = exports.Plan = exports.Product = exports.MonthlyTierSnapshot = exports.TierProgress = exports.TierConfig = exports.Lead = exports.Transaction = exports.StripeLog = exports.Wallet = exports.Review = exports.CompanySettings = exports.Company = exports.Partner = exports.Macro = exports.Vertical = exports.User = exports.Message = exports.Chat = void 0;
18
- exports.roleSeeds = exports.getFullAccessKeys = exports.validateExtraKeys = exports.validateGrantedKeys = exports.hasPermission = exports.resolveEffectivePermissions = exports.getAncestorKeys = exports.getParentKey = exports.getAllKeys = exports.getTree = exports.DASHBOARDS = exports.clientTree = exports.partnerTree = exports.employeeTree = exports.opsTree = exports.SCRIPT_ANSWER_FIELDS = exports.OPEN_TICKET_STATUSES = exports.pickFromGroup = exports.resolveTicketRouting = exports.updateEvents = exports.Update = exports.AuditTask = exports.clientIp = exports.activityRecorder = exports.recordActivity = exports.ActivityLog = exports.Appointment = exports.AppointmentCalendar = exports.Retainer = exports.RetainerContract = exports.AiSummaryUsage = exports.AiSummarySettings = exports.Role = exports.sanitizeTicketForRequester = exports.TICKET_STATUS_CLIENT_VIEW = exports.TicketSubCategoryOverride = void 0;
17
+ exports.ticketCategoryOptionsFor = exports.findTicketCategoryOptionFor = exports.findTicketCategoryOption = exports.ALL_TICKET_CATEGORY_OPTIONS = exports.PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY = exports.CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY = exports.PARTNER_TICKET_CATEGORY_OPTIONS = exports.CLIENT_TICKET_CATEGORY_OPTIONS = exports.PARTNER_TICKET_CATEGORIES_LEGACY = exports.PARTNER_TICKET_CATEGORIES = exports.CLIENT_TICKET_CATEGORIES_LEGACY = exports.CLIENT_TICKET_CATEGORIES = exports.EmailSenderMap = exports.Ticket = exports.REQUEST_SUBCATEGORIES_BY_CATEGORY = exports.REQUEST_CATEGORIES = exports.Request = exports.CallSession = exports.Employee = exports.Counter = exports.LoginOtp = exports.Session = exports.LeadDispute = exports.Invoice = exports.LeadLedger = exports.Agent = exports.Group = exports.Visitor = exports.Coupon = exports.Subscription = exports.Addon = exports.PlanOption = exports.Plan = exports.Product = exports.MonthlyTierSnapshot = exports.TierProgress = exports.TierConfig = exports.Lead = exports.Transaction = exports.StripeLog = exports.Wallet = exports.Review = exports.CompanySettings = exports.Company = exports.Partner = exports.Macro = exports.Vertical = exports.User = exports.Message = exports.Chat = void 0;
18
+ exports.cleanDeviceName = exports.describeDevice = exports.requestLocation = exports.isPrivateIp = exports.normalizeIp = exports.roleSeeds = exports.getFullAccessKeys = exports.validateExtraKeys = exports.validateGrantedKeys = exports.hasPermission = exports.resolveEffectivePermissions = exports.getAncestorKeys = exports.getParentKey = exports.getAllKeys = exports.getTree = exports.DASHBOARDS = exports.clientTree = exports.partnerTree = exports.employeeTree = exports.opsTree = exports.SCRIPT_ANSWER_FIELDS = exports.OPEN_TICKET_STATUSES = exports.ticketTeamMembers = exports.pickFromTicketTeam = exports.pickFromGroup = exports.resolveTicketRouting = exports.updateEvents = exports.Update = exports.AuditTask = exports.clientIp = exports.activityRecorder = exports.recordActivity = exports.ActivityLog = exports.Appointment = exports.AppointmentCalendar = exports.Retainer = exports.RetainerContract = exports.AiSummaryUsage = exports.AiSummarySettings = exports.Role = exports.sanitizeTicketForRequester = exports.TICKET_STATUS_CLIENT_VIEW = exports.TicketSubCategoryOverride = exports.applySubCategoryOverrides = exports.EDITABLE_SUBCATEGORY_KEYS = exports.TICKET_TEAM_LABELS = exports.TICKET_TEAMS = exports.ticketTeamFor = void 0;
19
19
  // MODELS
20
20
  const chat_model_1 = require("./models/chat.model");
21
21
  Object.defineProperty(exports, "Chat", { enumerable: true, get: function () { return chat_model_1.Chat; } });
@@ -116,6 +116,8 @@ Object.defineProperty(exports, "Update", { enumerable: true, get: function () {
116
116
  const ticketRouting_1 = require("./routing/ticketRouting");
117
117
  Object.defineProperty(exports, "resolveTicketRouting", { enumerable: true, get: function () { return ticketRouting_1.resolveTicketRouting; } });
118
118
  Object.defineProperty(exports, "pickFromGroup", { enumerable: true, get: function () { return ticketRouting_1.pickFromGroup; } });
119
+ Object.defineProperty(exports, "pickFromTicketTeam", { enumerable: true, get: function () { return ticketRouting_1.pickFromTicketTeam; } });
120
+ Object.defineProperty(exports, "ticketTeamMembers", { enumerable: true, get: function () { return ticketRouting_1.ticketTeamMembers; } });
119
121
  Object.defineProperty(exports, "OPEN_TICKET_STATUSES", { enumerable: true, get: function () { return ticketRouting_1.OPEN_TICKET_STATUSES; } });
120
122
  const macro_interface_1 = require("./interfaces/macro.interface");
121
123
  Object.defineProperty(exports, "SCRIPT_ANSWER_FIELDS", { enumerable: true, get: function () { return macro_interface_1.SCRIPT_ANSWER_FIELDS; } });
@@ -128,6 +130,8 @@ Object.defineProperty(exports, "CLIENT_TICKET_CATEGORIES", { enumerable: true, g
128
130
  Object.defineProperty(exports, "CLIENT_TICKET_CATEGORIES_LEGACY", { enumerable: true, get: function () { return ticket_interface_1.CLIENT_TICKET_CATEGORIES_LEGACY; } });
129
131
  Object.defineProperty(exports, "PARTNER_TICKET_CATEGORIES", { enumerable: true, get: function () { return ticket_interface_1.PARTNER_TICKET_CATEGORIES; } });
130
132
  Object.defineProperty(exports, "PARTNER_TICKET_CATEGORIES_LEGACY", { enumerable: true, get: function () { return ticket_interface_1.PARTNER_TICKET_CATEGORIES_LEGACY; } });
133
+ Object.defineProperty(exports, "TICKET_TEAMS", { enumerable: true, get: function () { return ticket_interface_1.TICKET_TEAMS; } });
134
+ Object.defineProperty(exports, "TICKET_TEAM_LABELS", { enumerable: true, get: function () { return ticket_interface_1.TICKET_TEAM_LABELS; } });
131
135
  const ticketCategories_1 = require("./constants/ticketCategories");
132
136
  Object.defineProperty(exports, "CLIENT_TICKET_CATEGORY_OPTIONS", { enumerable: true, get: function () { return ticketCategories_1.CLIENT_TICKET_CATEGORY_OPTIONS; } });
133
137
  Object.defineProperty(exports, "PARTNER_TICKET_CATEGORY_OPTIONS", { enumerable: true, get: function () { return ticketCategories_1.PARTNER_TICKET_CATEGORY_OPTIONS; } });
@@ -135,6 +139,9 @@ Object.defineProperty(exports, "CLIENT_TICKET_CATEGORY_OPTIONS_LEGACY", { enumer
135
139
  Object.defineProperty(exports, "PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY", { enumerable: true, get: function () { return ticketCategories_1.PARTNER_TICKET_CATEGORY_OPTIONS_LEGACY; } });
136
140
  Object.defineProperty(exports, "ALL_TICKET_CATEGORY_OPTIONS", { enumerable: true, get: function () { return ticketCategories_1.ALL_TICKET_CATEGORY_OPTIONS; } });
137
141
  Object.defineProperty(exports, "findTicketCategoryOption", { enumerable: true, get: function () { return ticketCategories_1.findTicketCategoryOption; } });
142
+ Object.defineProperty(exports, "findTicketCategoryOptionFor", { enumerable: true, get: function () { return ticketCategories_1.findTicketCategoryOptionFor; } });
143
+ Object.defineProperty(exports, "ticketCategoryOptionsFor", { enumerable: true, get: function () { return ticketCategories_1.ticketCategoryOptionsFor; } });
144
+ Object.defineProperty(exports, "ticketTeamFor", { enumerable: true, get: function () { return ticketCategories_1.ticketTeamFor; } });
138
145
  Object.defineProperty(exports, "EDITABLE_SUBCATEGORY_KEYS", { enumerable: true, get: function () { return ticketCategories_1.EDITABLE_SUBCATEGORY_KEYS; } });
139
146
  Object.defineProperty(exports, "applySubCategoryOverrides", { enumerable: true, get: function () { return ticketCategories_1.applySubCategoryOverrides; } });
140
147
  const ticketCategoryOverride_model_1 = require("./models/ticketCategoryOverride.model");
@@ -175,10 +182,17 @@ __exportStar(require("./helpers/addonState"), exports);
175
182
  __exportStar(require("./helpers/analyticsBuckets"), exports);
176
183
  __exportStar(require("./helpers/contactDecrypt"), exports);
177
184
  __exportStar(require("./helpers/s3Storage"), exports);
185
+ __exportStar(require("./helpers/privateFiles"), exports);
178
186
  __exportStar(require("./helpers/emailTemplates"), exports);
179
187
  __exportStar(require("./helpers/avatars"), exports);
180
188
  __exportStar(require("./helpers/myUpdates"), exports);
181
189
  __exportStar(require("./helpers/ownActivity"), exports);
182
190
  __exportStar(require("./helpers/sessions"), exports);
191
+ var requestInfo_1 = require("./helpers/requestInfo");
192
+ Object.defineProperty(exports, "normalizeIp", { enumerable: true, get: function () { return requestInfo_1.normalizeIp; } });
193
+ Object.defineProperty(exports, "isPrivateIp", { enumerable: true, get: function () { return requestInfo_1.isPrivateIp; } });
194
+ Object.defineProperty(exports, "requestLocation", { enumerable: true, get: function () { return requestInfo_1.requestLocation; } });
195
+ Object.defineProperty(exports, "describeDevice", { enumerable: true, get: function () { return requestInfo_1.describeDevice; } });
196
+ Object.defineProperty(exports, "cleanDeviceName", { enumerable: true, get: function () { return requestInfo_1.cleanDeviceName; } });
183
197
  __exportStar(require("./helpers/invoiceDocument"), exports);
184
198
  __exportStar(require("./helpers/ownTickets"), exports);
@@ -88,6 +88,8 @@ export interface ICompany extends mongoose.Document {
88
88
  clientInstructionEnabled?: boolean;
89
89
  /** Ops granted this client access to its own Activity log. */
90
90
  activityLogAccess?: boolean;
91
+ /** Month ("YYYY-MM") of the last monthly summary email sent to the main contact. */
92
+ monthlySummarySentFor?: string;
91
93
  /** Ordered script folders (Vertical ids) Ops chose for this company. */
92
94
  scriptVerticals?: Types.ObjectId[];
93
95
  scriptBot?: {
@@ -1 +1 @@
1
- {"version":3,"file":"company.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/company.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"company.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/company.interface.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export interface ISession extends mongoose.Document {
7
7
  browser?: string;
8
8
  os?: string;
9
9
  ipAddress?: string;
10
+ location?: string;
11
+ customName?: string;
10
12
  userAgent?: string;
11
13
  isRevoked: boolean;
12
14
  lastActiveAt: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"session.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/session.interface.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,QAAQ;IACjD,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"session.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/session.interface.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,QAAQ;IACjD,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
@@ -14,6 +14,8 @@ export interface ISubscription {
14
14
  stripeSubscriptionItemId?: string;
15
15
  stripePriceId?: string;
16
16
  quantity: number;
17
+ /** Paid plan, add-on removed: stays on until this date (end of the paid period), then comes off. */
18
+ removeAt?: Date;
17
19
  }[];
18
20
  disabledAddons?: Types.ObjectId[];
19
21
  stripePlan?: {
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/subscription.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/subscription.interface.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,34 @@
1
1
  import { Document, Types } from "mongoose";
2
2
  /**
3
- * Client Dashboard's categories -- these are billing/lead-dispute reports
4
- * about a company's own account. "dispute-billable-lead" deliberately does
5
- * NOT auto-link to the existing LeadDispute/Stripe refund-credit system --
6
- * that's a separate, more specialized pipeline (see leadDispute.interface.ts).
7
- * A ticket in this category just gives Ops a place to see the report and
8
- * manually open the real Dispute tool once they've identified the invoice
9
- * line item. Revisit auto-linking as a later phase.
3
+ * Ticket categories, named by topic in the requester's own words (Oct 2 2026 redesign -- the
4
+ * team-named "Technical Support"/"Account Support" of the Phase 28 pass made people guess which
5
+ * team their problem belonged to). Each category (or one of its sub-categories) is handled by one
6
+ * team -- see TicketTeam and the `team` on each option in constants/ticketCategories.ts.
10
7
  *
11
- * 2026-09-22 Phase 28 taxonomy pass: "chat-dispute" is retired from the
12
- * creation form (folded into "dispute-billable-lead", which now carries its
13
- * own sub-category) and "technical-support"/"account-support" are new. Old
14
- * tickets already filed under "chat-dispute" or any legacy value are left
15
- * alone and shown as Legacy -- see CLIENT_TICKET_CATEGORIES_LEGACY below --
16
- * per the "no remapping" decision.
8
+ * Old tickets keep whatever category they were filed under; those values stay valid as Legacy
9
+ * (shown with "(Legacy)", never offered on a new ticket) per the "no remapping" decision.
10
+ * "dispute-billable-lead" opens the real LeadDispute behind it (see helpers/ownTickets.ts).
17
11
  */
18
- export type ClientTicketCategory = "dispute-billable-lead" | "invoice-dispute" | "technical-support" | "account-support";
19
- export type ClientTicketCategoryLegacy = "chat-dispute";
20
- /**
21
- * Partner Dashboard's categories -- a partner has no leads/invoices of their
22
- * own to dispute (that's the Client side); their issues are about a failed
23
- * payout, a failed transfer, the dashboard itself, or their own account.
24
- *
25
- * 2026-09-22 Phase 28 taxonomy pass: replaces the old
26
- * dashboard-technical-issue/payout-issue/referral-issue/review-submission-issue/other
27
- * list (kept below as PARTNER_TICKET_CATEGORIES_LEGACY, same "no remapping" decision).
28
- */
29
- export type PartnerTicketCategory = "failed-withdrawal" | "failed-transfer" | "technical-support" | "account-support";
30
- export type PartnerTicketCategoryLegacy = "dashboard-technical-issue" | "payout-issue" | "referral-issue" | "review-submission-issue" | "other";
12
+ export type ClientTicketCategory = "leads" | "dispute-billable-lead" | "billing" | "invoice-dispute" | "scripts" | "widget" | "call-connect" | "integrations" | "dashboard" | "account" | "something-else";
13
+ export type ClientTicketCategoryLegacy = "chat-dispute" | "technical-support" | "account-support";
14
+ /** Partner Dashboard's categories -- commissions, payouts, referrals and reviews instead of leads. */
15
+ export type PartnerTicketCategory = "commissions" | "failed-withdrawal" | "failed-transfer" | "referrals" | "reviews" | "dashboard" | "account" | "something-else";
16
+ export type PartnerTicketCategoryLegacy = "dashboard-technical-issue" | "payout-issue" | "referral-issue" | "review-submission-issue" | "other" | "technical-support" | "account-support";
31
17
  export type TicketCategory = ClientTicketCategory | ClientTicketCategoryLegacy | PartnerTicketCategory | PartnerTicketCategoryLegacy;
32
18
  export declare const CLIENT_TICKET_CATEGORIES: ClientTicketCategory[];
33
19
  export declare const CLIENT_TICKET_CATEGORIES_LEGACY: ClientTicketCategoryLegacy[];
34
20
  export declare const PARTNER_TICKET_CATEGORIES: PartnerTicketCategory[];
35
21
  export declare const PARTNER_TICKET_CATEGORIES_LEGACY: PartnerTicketCategoryLegacy[];
22
+ /**
23
+ * Who handles a ticket: "billing" / "scripting" / "general" are teams of Ops logins (a profile's
24
+ * Ticket Team, User.ticketTeams); "account-manager" is the ticket owner's own Account Manager
25
+ * (Company.basicInfo.accountManager / Partner.accountInfo.accountManager).
26
+ */
27
+ export type TicketTeam = "billing" | "scripting" | "account-manager" | "general";
28
+ export declare const TICKET_TEAMS: TicketTeam[];
29
+ /** The teams a person can be put on from their Ops profile (Account Manager comes from the account). */
30
+ export type TicketTeamMembership = Exclude<TicketTeam, "account-manager">;
31
+ export declare const TICKET_TEAM_LABELS: Record<TicketTeam, string>;
36
32
  /** Who this ticket belongs to -- Company (Client Dashboard) or Partner. */
37
33
  export type TicketOwnerType = "Company" | "Partner";
38
34
  /**
@@ -129,6 +125,10 @@ export interface ITicket extends Document {
129
125
  requesterEmail?: string;
130
126
  status: TicketStatus;
131
127
  priority: TicketPriority;
128
+ /** The team this ticket's category/sub-category belongs to (see ticketTeamFor in
129
+ * constants/ticketCategories.ts). Set when the ticket is routed and whenever its category
130
+ * changes; unset on an email ticket nobody has categorised yet. */
131
+ team?: TicketTeam;
132
132
  /** The Ops User (Support Agent/Manager, or any Ops role with tickets.updateTicket) currently
133
133
  * responsible for this ticket. Unset means it's sitting in an unassigned pool. */
134
134
  assigneeId?: Types.ObjectId;
@@ -145,6 +145,10 @@ export interface ITicket extends Document {
145
145
  * without deleting it or inventing a fake status; a merged/closed ticket still uses `status` +
146
146
  * `remarks` (see mergeTicket in ops-dashboard's ticket.controller.js), this is spam alone. */
147
147
  isSpam?: boolean;
148
+ /** When the Ops team's new-ticket alert email went out (once per ticket). */
149
+ teamAlertSentAt?: Date;
150
+ /** When the 24-hour no-reply escalation email went out (once per ticket). */
151
+ slaEscalatedAt?: Date;
148
152
  createdAt?: Date;
149
153
  updatedAt?: Date;
150
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/ticket.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticket.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/ticket.interface.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TICKET_STATUS_CLIENT_VIEW = exports.PARTNER_TICKET_CATEGORIES_LEGACY = exports.PARTNER_TICKET_CATEGORIES = exports.CLIENT_TICKET_CATEGORIES_LEGACY = exports.CLIENT_TICKET_CATEGORIES = void 0;
3
+ exports.TICKET_STATUS_CLIENT_VIEW = exports.TICKET_TEAM_LABELS = exports.TICKET_TEAMS = exports.PARTNER_TICKET_CATEGORIES_LEGACY = exports.PARTNER_TICKET_CATEGORIES = exports.CLIENT_TICKET_CATEGORIES_LEGACY = exports.CLIENT_TICKET_CATEGORIES = void 0;
4
4
  exports.CLIENT_TICKET_CATEGORIES = [
5
+ "leads",
5
6
  "dispute-billable-lead",
7
+ "billing",
6
8
  "invoice-dispute",
9
+ "scripts",
10
+ "widget",
11
+ "call-connect",
12
+ "integrations",
13
+ "dashboard",
14
+ "account",
15
+ "something-else",
16
+ ];
17
+ exports.CLIENT_TICKET_CATEGORIES_LEGACY = [
18
+ "chat-dispute",
7
19
  "technical-support",
8
20
  "account-support",
9
21
  ];
10
- exports.CLIENT_TICKET_CATEGORIES_LEGACY = ["chat-dispute"];
11
22
  exports.PARTNER_TICKET_CATEGORIES = [
23
+ "commissions",
12
24
  "failed-withdrawal",
13
25
  "failed-transfer",
14
- "technical-support",
15
- "account-support",
26
+ "referrals",
27
+ "reviews",
28
+ "dashboard",
29
+ "account",
30
+ "something-else",
16
31
  ];
17
32
  exports.PARTNER_TICKET_CATEGORIES_LEGACY = [
18
33
  "dashboard-technical-issue",
@@ -20,7 +35,16 @@ exports.PARTNER_TICKET_CATEGORIES_LEGACY = [
20
35
  "referral-issue",
21
36
  "review-submission-issue",
22
37
  "other",
38
+ "technical-support",
39
+ "account-support",
23
40
  ];
41
+ exports.TICKET_TEAMS = ["billing", "scripting", "account-manager", "general"];
42
+ exports.TICKET_TEAM_LABELS = {
43
+ billing: "Billing Team",
44
+ scripting: "Scripting Team",
45
+ "account-manager": "Account Manager",
46
+ general: "General Support",
47
+ };
24
48
  /** How a TicketStatus should read to the ticket's own requester (Client/Partner Dashboard). */
25
49
  exports.TICKET_STATUS_CLIENT_VIEW = {
26
50
  open: "open",