@xapp/stentor-service-jobber 1.82.0 → 1.86.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.
@@ -1,5 +1,5 @@
1
1
  import { FetchService } from "stentor-service-fetch";
2
- import { AvailabilityClass, BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceAvailabilitySettings, CrmServiceJobType, DateTimeRange, ExternalLead } from "stentor-models";
2
+ import { AvailabilityClass, BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceAvailabilitySettings, CrmServiceJobType, DateTimeRange, ExternalLead, JobTypeAvailabilityClass } from "stentor-models";
3
3
  import { Product } from "./graphql";
4
4
  export type JobberServiceRequest = <I, T>(query: string, variables?: I) => Promise<T>;
5
5
  export interface JobberServiceProps extends BaseService, CrmServiceAvailabilitySettings {
@@ -35,6 +35,26 @@ export interface JobberServiceProps extends BaseService, CrmServiceAvailabilityS
35
35
  * The default availability class to use when the AI can't determine the availability class.
36
36
  */
37
37
  defaultAvailabilityClass?: string;
38
+ /**
39
+ * Deterministic job type id -> availability class id map. Beats the LLM's guess (jobType.class)
40
+ * when both resolve for the same job type.
41
+ */
42
+ jobTypeClasses?: JobTypeAvailabilityClass[];
43
+ /**
44
+ * Forces every booking through this service (e.g. a campaign widget) into a single
45
+ * availability class, bypassing the job-type map and the AI guess entirely.
46
+ */
47
+ forceAvailabilityClass?: string;
48
+ /**
49
+ * Same-day cutoff hour (0-23, military time, e.g. 15 = 3pm). Used when no per-class
50
+ * `currentDayAvailableUntil` or `defaultBusyDays.currentDayAvailableUntil` is configured.
51
+ */
52
+ endOfWorkDayHour?: number;
53
+ /**
54
+ * IANA timezone (e.g. "America/New_York") used to evaluate "today" and the same-day cutoff.
55
+ * Defaults to America/New_York.
56
+ */
57
+ timezone?: string;
38
58
  /**
39
59
  * Ability to modify the endpoint away from the default.
40
60
  */
@@ -170,7 +190,17 @@ export declare class JobberService extends FetchService implements CrmService {
170
190
  * Returns cached result if the message matches the previous call.
171
191
  */
172
192
  private getCachedJobTypeGuess;
173
- getJobType(message: string, externalLead?: ExternalLead): Promise<CrmServiceJobType>;
193
+ getJobType(message: string, externalLead?: ExternalLead, options?: CrmServiceAvailabilitySettings): Promise<CrmServiceJobType>;
194
+ /**
195
+ * Lists the tenant's job types (thin wrapper over Jobber's products), for Studio's
196
+ * job-type -> class mapping UI.
197
+ */
198
+ listJobTypes(): Promise<CrmServiceJobType[]>;
199
+ /**
200
+ * Asks the AI to suggest a job type -> availability class map for Studio to review, in a
201
+ * single GPT-4o call. Never throws - returns `[]` on failure.
202
+ */
203
+ suggestJobTypeClasses(classes?: AvailabilityClass[]): Promise<JobTypeAvailabilityClass[]>;
174
204
  /**
175
205
  * Send the lead
176
206
  *
@@ -40,11 +40,13 @@ class JobberService extends stentor_service_fetch_1.FetchService {
40
40
  }
41
41
  getAvailability(range, options) {
42
42
  return __awaiter(this, void 0, void 0, function* () {
43
- var _a, _b;
43
+ var _a, _b, _c, _d, _e;
44
44
  const availability = {
45
45
  range,
46
46
  unavailabilities: []
47
47
  };
48
+ const timezone = this.props.timezone || util_1.DEFAULT_TIMEZONE;
49
+ const settings = Object.assign(Object.assign({}, this.props), options);
48
50
  // if no start use "now"
49
51
  const startsOnOrAfter = range.start ? (0, stentor_utils_1.dateTimeToString)(range.start) : new Date().toISOString();
50
52
  const startsBefore = range.end ? (0, stentor_utils_1.dateTimeToString)(range.end) : undefined;
@@ -68,16 +70,14 @@ class JobberService extends stentor_service_fetch_1.FetchService {
68
70
  }
69
71
  appointmentCount[date]++;
70
72
  });
71
- // Find avail class
72
- const availabilityClassId = ((_a = options === null || options === void 0 ? void 0 : options.jobType) === null || _a === void 0 ? void 0 : _a.class) || this.props.defaultAvailabilityClass;
73
- const availabilityClasses = this.props.availabilityClasses || availability_1.defaultAvailabilityClasses;
74
- const availabilityClass = availabilityClasses.find((ac) => ac && availabilityClassId === ac.id);
75
- (0, stentor_logger_1.log)().info(`Jobber: Using availability class: ${JSON.stringify(availabilityClass)}`);
76
- const daysToSkip = (availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.numberOfDaysOut) || 0;
77
- const threshold = (availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.appointmentsPerDay) ||
78
- (options === null || options === void 0 ? void 0 : options.maxTotalDailyAppointments) ||
79
- this.props.maxTotalDailyAppointments ||
80
- availability_1.DEFAULT_MAX_APPOINTMENTS_PER_DAY;
73
+ // Find avail class: force > jobTypeClasses map > jobType.class (legacy LLM guess) > default > none.
74
+ // An unmatched classId never silently means same-day - resolveAvailabilityClass falls back to
75
+ // a conservative class instead.
76
+ const resolution = (0, availability_1.resolveAvailabilityClass)(settings, options === null || options === void 0 ? void 0 : options.jobType, availability_1.defaultAvailabilityClasses);
77
+ const availabilityClass = resolution.availabilityClass;
78
+ (0, stentor_logger_1.log)().info(`Jobber: Using availability class: ${JSON.stringify(availabilityClass)} (source: ${resolution.source})`);
79
+ const daysToSkip = (_a = availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.numberOfDaysOut) !== null && _a !== void 0 ? _a : 0;
80
+ const threshold = (_d = (_c = (_b = availabilityClass === null || availabilityClass === void 0 ? void 0 : availabilityClass.appointmentsPerDay) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.maxTotalDailyAppointments) !== null && _c !== void 0 ? _c : this.props.maxTotalDailyAppointments) !== null && _d !== void 0 ? _d : availability_1.DEFAULT_MAX_APPOINTMENTS_PER_DAY;
81
81
  // Filter days with more than threshold appointments
82
82
  const busyDays = Object.keys(appointmentCount).filter((date) => appointmentCount[date] >= threshold);
83
83
  (0, stentor_logger_1.log)().info(`Jobber: Got ${busyDays === null || busyDays === void 0 ? void 0 : busyDays.length} busy day(s) for threshold ${threshold}: ${busyDays}`);
@@ -85,10 +85,10 @@ class JobberService extends stentor_service_fetch_1.FetchService {
85
85
  availability.unavailabilities = busyDays.map((day) => ({ date: { date: day }, available: false }));
86
86
  // Add locked days for job type (usually skip next N). This needs a map (jobType: skippedDays) in the CRM constructor
87
87
  if ((options === null || options === void 0 ? void 0 : options.jobType) && this.props.delayedJobTypes) {
88
- if (this.props.delayedJobTypes.indexOf((_b = options === null || options === void 0 ? void 0 : options.jobType) === null || _b === void 0 ? void 0 : _b.id) !== -1) {
88
+ if (this.props.delayedJobTypes.indexOf((_e = options === null || options === void 0 ? void 0 : options.jobType) === null || _e === void 0 ? void 0 : _e.id) !== -1) {
89
89
  // Block today always when they request N days
90
- availability.unavailabilities.push({ date: (0, util_1.today)(), available: false });
91
- const nextDays = (0, util_1.getNextDays)(3);
90
+ availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
91
+ const nextDays = (0, util_1.getNextDays)(3, timezone);
92
92
  const skippedDays = nextDays.map((date) => ({
93
93
  date,
94
94
  available: false
@@ -96,12 +96,12 @@ class JobberService extends stentor_service_fetch_1.FetchService {
96
96
  availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
97
97
  }
98
98
  }
99
- // Add class specific blocked days
99
+ // Jobber has no capacity planning - class rules always apply.
100
100
  if (daysToSkip > 0) {
101
101
  // Block today always when they request N days
102
- availability.unavailabilities.push({ date: (0, util_1.today)(), available: false });
102
+ availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
103
103
  // Skip the requested
104
- const nextDays = (0, util_1.getNextDays)(daysToSkip);
104
+ const nextDays = (0, util_1.getNextDays)(daysToSkip, timezone);
105
105
  const skippedDays = nextDays.map((date) => ({
106
106
  date,
107
107
  available: false
@@ -109,10 +109,11 @@ class JobberService extends stentor_service_fetch_1.FetchService {
109
109
  availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
110
110
  }
111
111
  else {
112
- // 0 means no wait was requested. Today is blocked after the end of day (6pm).
113
- if ((0, util_1.isAfterHour)(availability_1.DEFAULT_END_OF_WORK_DAY_HOUR)) {
114
- (0, stentor_logger_1.log)().info(`Jobber: blocking today because of after hours request (${availability_1.DEFAULT_END_OF_WORK_DAY_HOUR}:00)`);
115
- availability.unavailabilities.push({ date: (0, util_1.today)(), available: false });
112
+ const cutoffMinutes = (0, availability_1.resolveCutoffMinutes)(availabilityClass, settings, this.props.endOfWorkDayHour, availability_1.DEFAULT_END_OF_WORK_DAY_HOUR);
113
+ // 0 days-to-skip means no lead time was requested. Today is blocked at/after the cutoff.
114
+ if ((0, util_1.isAfterMinutes)(cutoffMinutes, timezone)) {
115
+ (0, stentor_logger_1.log)().info(`Jobber: blocking today because of after hours request (cutoff minutes: ${cutoffMinutes}, tz: ${timezone})`);
116
+ availability.unavailabilities.push({ date: (0, util_1.today)(timezone), available: false });
116
117
  }
117
118
  }
118
119
  // Add explicitly specified blocked days (holidays)
@@ -142,7 +143,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
142
143
  * Cached wrapper for guessJobTypes to avoid duplicate OpenAI API calls.
143
144
  * Returns cached result if the message matches the previous call.
144
145
  */
145
- getCachedJobTypeGuess(message, jobTypes) {
146
+ getCachedJobTypeGuess(message, jobTypes, settings) {
146
147
  return __awaiter(this, void 0, void 0, function* () {
147
148
  var _a;
148
149
  // Return cached result if available for the same message
@@ -150,8 +151,8 @@ class JobberService extends stentor_service_fetch_1.FetchService {
150
151
  (0, stentor_logger_1.log)().debug("Jobber: Using cached job type guess");
151
152
  return this.jobTypeCache.result;
152
153
  }
153
- const availabilityClasses = this.props.availabilityClasses || availability_1.defaultAvailabilityClasses;
154
- const defaultAvailabilityClassId = this.props.defaultAvailabilityClass || availabilityClasses[0].id;
154
+ const availabilityClasses = settings.availabilityClasses || availability_1.defaultAvailabilityClasses;
155
+ const defaultAvailabilityClassId = settings.defaultAvailabilityClass || availabilityClasses[0].id;
155
156
  let result;
156
157
  try {
157
158
  result = yield (0, ai_1.guessJobTypes)({
@@ -174,20 +175,24 @@ class JobberService extends stentor_service_fetch_1.FetchService {
174
175
  return result;
175
176
  });
176
177
  }
177
- getJobType(message, externalLead) {
178
+ getJobType(message, externalLead, options) {
178
179
  return __awaiter(this, void 0, void 0, function* () {
179
- var _a;
180
+ var _a, _b, _c, _d, _e;
181
+ const settings = Object.assign(Object.assign({}, this.props), options);
180
182
  const jobTypes = yield this.fetchJobTypes();
181
183
  let jobType;
182
184
  if (jobTypes && jobTypes.length > 0) {
183
185
  (0, stentor_logger_1.log)().info("Jobber: Asking AI about job type");
184
- const suggestedJobTypes = yield this.getCachedJobTypeGuess(message, jobTypes);
186
+ const suggestedJobTypes = yield this.getCachedJobTypeGuess(message, jobTypes, settings);
185
187
  const suggestedJobType = (_a = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _a === void 0 ? void 0 : _a[0];
186
188
  if (suggestedJobType) {
187
189
  (0, stentor_logger_1.log)().info(`Jobber: AI selected job type: ${JSON.stringify(suggestedJobType)}`);
190
+ // A deterministic map hit beats the LLM's own guess; a forced class beats both.
191
+ const mappedClassId = (_c = (_b = settings.jobTypeClasses) === null || _b === void 0 ? void 0 : _b.find((m) => m && String(m.jobTypeId) === String(suggestedJobType.id))) === null || _c === void 0 ? void 0 : _c.classId;
192
+ const resolvedClassId = (_e = (_d = settings.forceAvailabilityClass) !== null && _d !== void 0 ? _d : mappedClassId) !== null && _e !== void 0 ? _e : String(suggestedJobType.classId);
188
193
  jobType = {
189
194
  id: suggestedJobType.id + "",
190
- class: suggestedJobType.classId + "",
195
+ class: resolvedClassId,
191
196
  name: suggestedJobType.name
192
197
  };
193
198
  }
@@ -198,9 +203,43 @@ class JobberService extends stentor_service_fetch_1.FetchService {
198
203
  else {
199
204
  (0, stentor_logger_1.log)().info("Jobber: NOT Asking AI about job type (no job types)");
200
205
  }
206
+ // Even when the AI failed or there were no job types, a forced class still needs to
207
+ // reach getAvailability (and the lead) - it's a widget-level policy, not an AI guess.
208
+ if (!jobType && settings.forceAvailabilityClass) {
209
+ jobType = { id: undefined, class: settings.forceAvailabilityClass };
210
+ }
201
211
  return jobType;
202
212
  });
203
213
  }
214
+ /**
215
+ * Lists the tenant's job types (thin wrapper over Jobber's products), for Studio's
216
+ * job-type -> class mapping UI.
217
+ */
218
+ listJobTypes() {
219
+ return __awaiter(this, void 0, void 0, function* () {
220
+ const jobTypes = yield this.fetchJobTypes();
221
+ return (jobTypes || []).map((jt) => ({ id: String(jt.id), name: jt.name }));
222
+ });
223
+ }
224
+ /**
225
+ * Asks the AI to suggest a job type -> availability class map for Studio to review, in a
226
+ * single GPT-4o call. Never throws - returns `[]` on failure.
227
+ */
228
+ suggestJobTypeClasses(classes) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ var _a;
231
+ const jobTypes = yield this.fetchJobTypes();
232
+ if (!jobTypes || jobTypes.length === 0) {
233
+ return [];
234
+ }
235
+ const availabilityClasses = (classes === null || classes === void 0 ? void 0 : classes.length) ? classes : this.props.availabilityClasses || availability_1.defaultAvailabilityClasses;
236
+ return (0, ai_1.suggestJobTypeClassMap)({
237
+ jobTypes,
238
+ availabilityClasses,
239
+ apiKey: (_a = this.props.openAI) === null || _a === void 0 ? void 0 : _a.apiKey
240
+ });
241
+ });
242
+ }
204
243
  // Called by CRM Service to send the lead
205
244
  /**
206
245
  * Send the lead
@@ -326,7 +365,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
326
365
  appointmentTime = (0, date_fns_1.addHours)(appointmentTime, offsetHours);
327
366
  const requestTime = appointmentTime ? appointmentTime.toISOString() : undefined;
328
367
  const jobTypes = yield this.fetchJobTypes();
329
- const suggestedJobTypes = yield this.getCachedJobTypeGuess(contact.message, jobTypes);
368
+ const suggestedJobTypes = yield this.getCachedJobTypeGuess(contact.message, jobTypes, this.props);
330
369
  const suggestedJobType = (_b = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _b === void 0 ? void 0 : _b[0];
331
370
  const jobRequest = {
332
371
  job: {
@@ -1 +1 @@
1
- {"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kCAAkC;AAClC,kDAA6C;AAC7C,iEAAqD;AAcrD,mDAAqC;AACrC,uCAAoC;AACpC,0DAAkC;AAElC,uCA8BmB;AACnB,iCAAkH;AAClH,6BAAwD;AACxD,iDAAiD;AACjD,iDAIwB;AA+JxB,MAAa,aAAc,SAAQ,oCAAY;IAS3C,YAAY,KAAyB;QACjC,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,KAAK,CAAC,CAAC;QAPjB,kEAAkE;QAC1D,iBAAY,GAAkF,IAAI,CAAC;QAOvG,IAAI,CAAC,KAAK,qBAAQ,KAAK,CAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC;QAElD,IAAI,CAAC,cAAc;YACf,OAAO,KAAK,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACvG,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,uCAAuC,CAAC;IACnD,CAAC;IAEY,eAAe,CACxB,KAAoB,EACpB,OAAuC;;;YAEvC,MAAM,YAAY,GAA2B;gBACzC,KAAK;gBACL,gBAAgB,EAAE,EAAE;aACvB,CAAC;YAEF,wBAAwB;YACxB,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,gCAAgB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/F,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,gCAAgB,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;gBAC5C,eAAe;gBACf,YAAY;gBACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;aACzC,CAAC,CAAC;YAEH,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B;YACrE,CAAC;YAED,IAAA,oBAAG,GAAE,CAAC,IAAI,CACN,eAAe,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,yBAAyB,eAAe,QAAQ,YAAY,IAAI,SAAS,EAAE,CACjH,CAAC;YAEF,6BAA6B;YAC7B,MAAM,gBAAgB,GAA8B,EAAE,CAAC;YAEvD,+EAA+E;YAC/E,iDAAiD;YAEjD,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;gBACD,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,mBAAmB;YACnB,MAAM,mBAAmB,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;YAC3F,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,yCAA0B,CAAC;YACzF,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,mBAAmB,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhG,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAErF,MAAM,UAAU,GAAW,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,eAAe,KAAI,CAAC,CAAC;YAEnE,MAAM,SAAS,GACX,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,kBAAkB;iBACrC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,yBAAyB,CAAA;gBAClC,IAAI,CAAC,KAAK,CAAC,yBAAyB;gBACpC,+CAAgC,CAAC;YAErC,oDAAoD;YACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;YAErG,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,eAAe,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,8BAA8B,SAAS,KAAK,QAAQ,EAAE,CAAC,CAAC;YAElG,qCAAqC;YACrC,YAAY,CAAC,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAEnG,qHAAqH;YACrH,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACjD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClE,8CAA8C;oBAC9C,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,YAAK,GAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;oBAExE,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,WAAW,GAAiC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACtE,IAAI;wBACJ,SAAS,EAAE,KAAK;qBACnB,CAAC,CAAC,CAAC;oBACJ,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtF,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,8CAA8C;gBAC9C,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,YAAK,GAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAExE,qBAAqB;gBACrB,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,UAAU,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAiC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtE,IAAI;oBACJ,SAAS,EAAE,KAAK;iBACnB,CAAC,CAAC,CAAC;gBAEJ,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACJ,8EAA8E;gBAC9E,IAAI,IAAA,kBAAW,EAAC,2CAA4B,CAAC,EAAE,CAAC;oBAC5C,IAAA,oBAAG,GAAE,CAAC,IAAI,CACN,0DAA0D,2CAA4B,MAAM,CAC/F,CAAC;oBACF,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,YAAK,GAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,MAAM,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACnE,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAiC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtE,IAAI;oBACJ,SAAS,EAAE,KAAK;iBACnB,CAAC,CAAC,CAAC;gBAEJ,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnF,CAAC;YAED,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;KAAA;IAEa,aAAa;;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC;YAED,MAAM,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3D,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAED;;;OAGG;IACW,qBAAqB,CAAC,OAAe,EAAE,QAA6B;;;YAC9E,yDAAyD;YACzD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC7D,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACpC,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,yCAA0B,CAAC;YACzF,MAAM,0BAA0B,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpG,IAAI,MAAiD,CAAC;YACtD,IAAI,CAAC;gBACD,MAAM,GAAG,MAAM,IAAA,kBAAa,EAAC;oBACzB,QAAQ,EAAE,OAAO;oBACjB,QAAQ;oBACR,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBAC7C,0BAA0B;oBAC1B,MAAM,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,MAAM;oBACjC,mBAAmB;iBACtB,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAA,oBAAG,GAAE,CAAC,IAAI,CACN,oEAAoE,EACpE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC5D,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAEzB,mBAAmB;YACnB,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAExC,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IAEY,UAAU,CAAC,OAAe,EAAE,YAA2B;;;YAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE5C,IAAI,OAA0B,CAAC;YAE/B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAE/C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAE9E,MAAM,gBAAgB,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,0CAAG,CAAC,CAAC,CAAC;gBAE1D,IAAI,gBAAgB,EAAE,CAAC;oBACnB,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;oBAChF,OAAO,GAAG;wBACN,EAAE,EAAE,gBAAgB,CAAC,EAAE,GAAG,EAAE;wBAC5B,KAAK,EAAE,gBAAgB,CAAC,OAAO,GAAG,EAAE;wBACpC,IAAI,EAAE,gBAAgB,CAAC,IAAI;qBAC9B,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACtE,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAED,yCAAyC;IAEzC;;;;;;;;OAQG;IACU,IAAI,CAAC,YAA0B;;;YACxC,MAAM,WAAW,GAAgB;gBAC7B,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,EAAE;aACd,CAAC;YAEF,IAAI,CAAC;gBACD,MAAM,aAAa,GAAG,IAAA,0BAAmB,EAAC,YAAY,CAAC,CAAC;gBAExD,6BAA6B;gBAC7B,6CAA6C;gBAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBAEtE,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;gBAE/B,WAAW,CAAC,KAAK,GAAG,MAAA,OAAO,CAAC,IAAI,0CAAE,KAAK,CAAC;YAC5C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;gBAChD,WAAW,CAAC,OAAO,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,CAAC;YACrC,CAAC;YAED,OAAO,WAAW,CAAC;QACvB,CAAC;KAAA;IAED;;;;;;;;;;OAUG;IACW,aAAa,CAAC,OAAsB,EAAE,cAA4B;;YAC5E,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAE1D,cAAc;YACd,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE1C,MAAM,SAAS,GAAmB;oBAC9B,MAAM,EAAE;wBACJ,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;wBAC5B,QAAQ,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;qBACrD;iBACJ,CAAC;gBAEF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChB,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpG,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CACrC,6BAAmB,EACnB,SAAS,CACZ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC3F,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA6B,CAAC;gBAC/E,CAAC,CAAC,CAAC;gBAEH,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBAC9D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;YACrE,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAE5E,wCAAwC;YACxC,IAAA,6BAAsB,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAEhD,yBAAyB;YACzB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;QAC7D,CAAC;KAAA;IAEa,qBAAqB,CAAC,OAAsB,EAAE,UAAkB,EAAE,SAAiB;;;YAC7F,MAAM,SAAS,GAAG,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC;YAE5F,gBAAgB;YAChB,mDAAmD;YACnD,qDAAqD;YACrD,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnD,2EAA2E;gBAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1C,gCAAgC;gBAChC,IAAI,eAAe,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;gBACnD,uDAAuD;gBACvD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,mCAAI,CAAC,CAAC;gBAEvD,IAAI,WAAW,CAAC;gBAEhB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBACxB,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC5C,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC;oBACjC,CAAC;yBAAM,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACrD,WAAW,GAAG,EAAE,GAAG,UAAU,CAAC;oBAClC,CAAC;yBAAM,CAAC;wBACJ,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,4BAA4B;oBAC9D,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,CAAC,CAAC,CAAC,eAAe;gBACpC,CAAC;gBAED,eAAe,GAAG,IAAA,mBAAQ,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;gBAEzD,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEhF,MAAM,QAAQ,GAAwB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAEjE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAEtF,MAAM,gBAAgB,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,0CAAG,CAAC,CAAC,CAAC;gBAE1D,MAAM,UAAU,GAAgB;oBAC5B,GAAG,EAAE;wBACD,UAAU;wBACV,SAAS;wBACT,KAAK,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,KAAI,SAAS;wBAC1C,UAAU,EAAE;4BACR,YAAY,EAAE,IAAI;4BAClB,UAAU,EAAE,KAAK;4BACjB,SAAS,EAAE,WAAW;4BACtB,UAAU,EAAE,IAAI;yBACnB;wBACD,SAAS,EAAE;4BACP,OAAO,EAAE,WAAW;yBACvB;wBACD,aAAa,EAAE;4BACX,iBAAiB,EAAE,GAAG;yBACzB;wBACD,SAAS,EAAE;4BACP,aAAa,EAAE,aAAa;4BAC5B,iBAAiB,EAAE,eAAe;yBACrC;qBACJ;iBACJ,CAAC;gBAEF,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACJ,MAAM,aAAa,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACpB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC5C,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;gBAED,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,sCAAsC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;KAAA;IAED;;;;;;OAMG;IACU,cAAc,CAAC,SAAiB,EAAE,OAAsB;;YACjE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oDAAoD,EAAE,SAAS,CAAC,CAAC;gBAC5E,OAAO;YACX,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE9D,2BAA2B;YAC3B,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,IAAI,OAAO,GAAW,OAAO,CAAC,MAAM,CAAC;YACrC,IAAI,IAAI,GAAW,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,QAAQ,GAAW,OAAO,CAAC,KAAK,CAAC;YACrC,IAAI,UAAU,GAAW,OAAO,CAAC,GAAG,CAAC;YAErC,mEAAmE;YAEnE,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC;oBACD,MAAM,aAAa,GAAG,mBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9D,sCAAsC;oBACtC,OAAO,GAAG,OAAO,IAAI,aAAa,CAAC,YAAY,CAAC;oBAChD,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC;oBACvC,QAAQ,GAAG,QAAQ,IAAI,aAAa,CAAC,iBAAiB,IAAI,aAAa,CAAC,SAAS,CAAC;oBAClF,UAAU,GAAG,UAAU,IAAI,aAAa,CAAC,OAAO,CAAC;gBACrD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,0CAA0C,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/G,CAAC;YAED,MAAM,KAAK,GAAqB;gBAC5B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE;oBACN,OAAO,EAAE;wBACL,OAAO;wBACP,IAAI;wBACJ,QAAQ;wBACR,UAAU;qBACb;iBACJ;aACJ,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBACzE,OAAO;YACX,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;gBACjF,OAAO;YACX,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;gBACvE,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAsC,+BAAqB,EAAE,KAAK,CAAC,CAAC;YAE5G,OAAO,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;KAAA;IAED,4CAA4C;IAE5C;;;;;;;OAOG;IACW,aAAa,CAAC,QAAgB,EAAE,KAAc,EAAE,UAAmB;;YAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAoB;gBAC7B,KAAK,EAAE;oBACH,QAAQ;oBACR,KAAK,EAAE,KAAK,IAAI,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;oBACpD,UAAU;iBACb;aACJ,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAC7B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAoC,8BAAoB,EAAE,OAAO,CAAC,CAAC;YAE3G,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,CAAC;KAAA;IACD;;;;;;OAMG;IACW,UAAU,CAAC,SAAiB,EAAE,YAA0B;;YAClE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;gBAC/C,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,YAAY,CAAC,CAAC;YAEzC,MAAM,SAAS,GAAiB;gBAC5B,SAAS;gBACT,KAAK,EAAE;oBACH,OAAO;iBACV;aACJ,CAAC;YAEF,MAAM,IAAI,CAAC,cAAc,CAA8B,2BAAiB,EAAE,SAAS,CAAC,CAAC;QACzF,CAAC;KAAA;IAED;;;;;OAKG;IACW,SAAS,CAAC,GAAgB;;YACpC,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAA4B,0BAAgB,EAAE,GAAG,CAAC,CAAC;YAE5F,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAED,6BAA6B;IACf,sBAAsB,CAAC,OAAsB;;YACvD,MAAM,KAAK,GAAuB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAEtG,IAAA,oBAAG,GAAE,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CACrC,8BAAoB,EACpB,KAAK,CACR,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5F,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAA0B,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAA,oBAAG,GAAE,CAAC,KAAK,CACP,yBAAyB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,UAAU,sBAAsB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CACnI,CAAC;gBACF,sBAAsB;gBACtB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACU,WAAW,CAAC,QAAgB,EAAE,OAAsB;;YAC7D,IAAI,UAAU,GAAG,EAAE,CAAC;YAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAuC,8BAAoB,EAAE;gBACjG,QAAQ;aACX,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC;oBACD,MAAM,aAAa,GAAG,mBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAE9D,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;;wBAC9C,IACI,MAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW,GAAG,UAAU,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,0CAAE,WAAW,EAAE,CAAC,EAChG,CAAC;4BACC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACrE,uCAAuC;gBAC3C,CAAC;gBAED,iFAAiF;gBAEjF,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;;wBAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW,EAAE,CAAC,EAAE,CAAC;4BACpF,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAED,OAAO,UAAU,CAAC;QACtB,CAAC;KAAA;IAED,6BAA6B;IACf,eAAe,CAAC,KAI7B;;;YACG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CACvC,2BAAiB,EACjB;gBACI,SAAS,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,eAAe;iBAC/B;aACJ,CACJ,CAAC;YAEF,MAAM,UAAU,GAAG,MAAA,SAAS,CAAC,MAAM,0CAAE,KAAK,CAAC;YAE3C,oBAAoB;YACpB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,oBAAoB;YACpB,MAAM,MAAM,GAAY,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5D,gBAAgB;YAChB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;OAEG;IACU,WAAW;;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAA0B,4BAAkB,CAAC,CAAC;YAEtF,YAAY;YACZ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjC,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;;;OAIG;IACW,aAAa;;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY,CAAC;YAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClD,OAAO;gBACH,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;gBAClC,0BAA0B,EAAE,OAAO;aACtC,CAAC;QACN,CAAC;KAAA;IAEa,sBAAsB;;YAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC7D,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,WAAW,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;KAAA;IAED;;;;;;OAMG;IACW,qBAAqB,CAAO,KAAa,EAAE,SAAa;;;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC;YAExG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3C,MAAM,aAAa,GAAW,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,mCAAI,KAAK,CAAC;YAOjE,IAAI,aAAkD,CAAC;YACvD,IAAI,CAAC;gBACD,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAuB,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;oBAC9E,OAAO;oBACP,OAAO,EAAE,aAAa;iBACzB,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,IAAI,eAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;YAEhC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,qBAAqB;gBACrB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;oBAC1D,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC,OAAO,GAAG,CAAC;gBAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;KAAA;CACJ;AAxuBD,sCAwuBC"}
1
+ {"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":"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"}
package/lib/ai.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*! Copyright (c) 2022, XAPPmedia */
2
- import { AvailabilityClass } from "stentor-models";
2
+ import { AvailabilityClass, JobTypeAvailabilityClass } from "stentor-models";
3
3
  export interface JobTypeAiQuery {
4
4
  question: string;
5
5
  jobTypes: JobTypeDescriptor[];
@@ -24,3 +24,15 @@ export interface AiResponse {
24
24
  jobTypes: JobTypeAiResponse[];
25
25
  }
26
26
  export declare function guessJobTypes(query: JobTypeAiQuery): Promise<AiResponse>;
27
+ export interface SuggestJobTypeClassMapQuery {
28
+ jobTypes: JobTypeDescriptor[];
29
+ availabilityClasses: AvailabilityClass[];
30
+ apiKey?: string;
31
+ }
32
+ /**
33
+ * Asks GPT-4o to map every job type to the best-fit availability class in a single call.
34
+ *
35
+ * Never throws - returns `[]` on any parse/network failure. The output is filtered against
36
+ * both the real job-type ids and the real class ids; unmatched job types are omitted.
37
+ */
38
+ export declare function suggestJobTypeClassMap(query: SuggestJobTypeClassMapQuery): Promise<JobTypeAvailabilityClass[]>;
package/lib/ai.js CHANGED
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.guessJobTypes = guessJobTypes;
17
+ exports.suggestJobTypeClassMap = suggestJobTypeClassMap;
17
18
  const openai_1 = __importDefault(require("openai"));
18
19
  require("dotenv").config();
19
20
  const stentor_logger_1 = require("stentor-logger");
@@ -129,6 +130,15 @@ function guessJobTypes(query) {
129
130
  }
130
131
  }
131
132
  if (filteredJobTypes.length > 0) {
133
+ // AI can also make up bogus availability class ids - never let one through unvalidated,
134
+ // an unmatched classId falling through to "no class" is the silent-same-day bug.
135
+ filteredJobTypes.forEach((jobType) => {
136
+ const validClass = availabilityClasses.find((ac) => ac && String(ac.id) === String(jobType.classId));
137
+ if (!validClass) {
138
+ (0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus availability class id: ${jobType.classId}`);
139
+ jobType.classId = query.defaultAvailabilityClassId;
140
+ }
141
+ });
132
142
  choices.jobTypes = filteredJobTypes;
133
143
  }
134
144
  else {
@@ -153,4 +163,96 @@ function guessJobTypes(query) {
153
163
  return choices;
154
164
  });
155
165
  }
166
+ /**
167
+ * Asks GPT-4o to map every job type to the best-fit availability class in a single call.
168
+ *
169
+ * Never throws - returns `[]` on any parse/network failure. The output is filtered against
170
+ * both the real job-type ids and the real class ids; unmatched job types are omitted.
171
+ */
172
+ function suggestJobTypeClassMap(query) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ var _a, _b, _c;
175
+ const { jobTypes, availabilityClasses, apiKey } = query;
176
+ if (!jobTypes || jobTypes.length === 0 || !availabilityClasses || availabilityClasses.length === 0) {
177
+ return [];
178
+ }
179
+ try {
180
+ const openai = new openai_1.default({ apiKey });
181
+ const response = yield openai.chat.completions.create({
182
+ model: "gpt-4o",
183
+ response_format: { type: "json_object" },
184
+ messages: [
185
+ {
186
+ role: "system",
187
+ content: `You are a helpful assistant for a home services company.
188
+ Your task is to map every job type in the provided list to the single best-fit
189
+ availability class from the provided list of availability classes.
190
+
191
+ Output your response as JSON as it will be parsed programmatically. Use the following keys:
192
+
193
+ * jobTypeClasses: required - an array of objects with the following keys:
194
+ "jobTypeId": required - The id of the job type, copied exactly from the provided job types,
195
+ "jobTypeName": optional - The name of the job type,
196
+ "classId": required - The id of the best-fit availability class, copied exactly from the provided availability classes.
197
+
198
+ Every job type in the input list must have exactly one entry in the output.
199
+
200
+ Here are the job types: ${JSON.stringify(jobTypes)}
201
+ Here are the availability classes: ${JSON.stringify(availabilityClasses)}`
202
+ },
203
+ {
204
+ role: "user",
205
+ content: "Map every job type to its best-fit availability class."
206
+ }
207
+ ],
208
+ temperature: 0,
209
+ max_tokens: 4096,
210
+ top_p: 1,
211
+ frequency_penalty: 0,
212
+ presence_penalty: 0
213
+ });
214
+ const rawContent = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.content;
215
+ let parsed;
216
+ try {
217
+ parsed = JSON.parse(rawContent);
218
+ }
219
+ catch (err) {
220
+ (0, stentor_logger_1.log)().error(`OpenAI: Cannot parse job type class map response. ${err}`);
221
+ (0, stentor_logger_1.log)().error(`OpenAI: RESPONSE: "${rawContent}"`);
222
+ return [];
223
+ }
224
+ const suggestions = parsed === null || parsed === void 0 ? void 0 : parsed.jobTypeClasses;
225
+ if (!suggestions || suggestions.length === 0) {
226
+ return [];
227
+ }
228
+ const validated = [];
229
+ for (const suggestion of suggestions) {
230
+ if (!suggestion) {
231
+ continue;
232
+ }
233
+ const jobType = jobTypes.find((jt) => jt && String(jt.id) === String(suggestion.jobTypeId));
234
+ const availabilityClass = availabilityClasses.find((ac) => ac && String(ac.id) === String(suggestion.classId));
235
+ if (!jobType) {
236
+ (0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus job type id from suggested class map: ${suggestion.jobTypeId}`);
237
+ continue;
238
+ }
239
+ if (!availabilityClass) {
240
+ (0, stentor_logger_1.log)().error(`OpenAI: Deleted bogus class id from suggested class map: ${suggestion.classId}`);
241
+ continue;
242
+ }
243
+ validated.push({
244
+ jobTypeId: String(jobType.id),
245
+ classId: String(availabilityClass.id),
246
+ jobTypeName: jobType.name,
247
+ source: "AI"
248
+ });
249
+ }
250
+ return validated;
251
+ }
252
+ catch (err) {
253
+ (0, stentor_logger_1.log)().error(`OpenAI: suggestJobTypeClassMap failed. ${err}`);
254
+ return [];
255
+ }
256
+ });
257
+ }
156
258
  //# sourceMappingURL=ai.js.map
package/lib/ai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,51 @@
1
1
  /*! Copyright (c) 2024, XAPPmedia */
2
- import { AvailabilityClass } from "stentor-models";
2
+ import { AvailabilityClass, CrmServiceAvailabilitySettings, CrmServiceJobType } from "stentor-models";
3
3
  export declare const DEFAULT_MIN_DAYS_OUT = 5;
4
4
  export declare const DEFAULT_MAX_APPOINTMENTS_PER_DAY = 4;
5
5
  export declare const DEFAULT_END_OF_WORK_DAY_HOUR = 18;
6
+ /**
7
+ * Parses a "HH:MM" (24h) string into minutes since midnight.
8
+ *
9
+ * Never throws. Anything that isn't a strict "HH:MM" match (out of range hours,
10
+ * single digit hours, garbage, undefined) returns `undefined` and logs a warning.
11
+ */
12
+ export declare function parseHHMM(value?: string): number | undefined;
13
+ export type AvailabilityClassSource = "force" | "map" | "jobType" | "default" | "none";
14
+ export interface AvailabilityClassResolution {
15
+ availabilityClass?: AvailabilityClass;
16
+ classId?: string;
17
+ source: AvailabilityClassSource;
18
+ /**
19
+ * Set when the resolved classId didn't match any known class - the caller fell back
20
+ * to the tenant default / most-conservative class instead of silently allowing same-day.
21
+ */
22
+ unmatchedClassId?: string;
23
+ fallback?: boolean;
24
+ }
25
+ /**
26
+ * Resolves which availability class applies, in priority order:
27
+ *
28
+ * 1. settings.forceAvailabilityClass (campaign widget forces a class)
29
+ * 2. settings.jobTypeClasses[jobType.id].classId (deterministic map)
30
+ * 3. jobType.class (legacy LLM guess)
31
+ * 4. settings.defaultAvailabilityClass
32
+ * 5. none
33
+ *
34
+ * An unmatched classId (defined, but not found in the class list) never resolves to
35
+ * "no class" - that would silently re-open same-day booking. It instead falls back to
36
+ * the tenant's default class, else the most conservative (largest numberOfDaysOut) class.
37
+ */
38
+ export declare function resolveAvailabilityClass(settings: CrmServiceAvailabilitySettings | undefined, jobType?: CrmServiceJobType, fallbackClasses?: AvailabilityClass[]): AvailabilityClassResolution;
39
+ /**
40
+ * Resolves the same-day cutoff, in minutes since midnight, in priority order:
41
+ *
42
+ * 1. cls.currentDayAvailableUntil (per-class cutoff)
43
+ * 2. settings.defaultBusyDays.currentDayAvailableUntil
44
+ * 3. legacyEndOfWorkDayHour (hours) - via `??`, never `|`, so 0 is honored
45
+ * 4. defaultHour (hours) - the service default (ST 15, Jobber 18)
46
+ *
47
+ * Never throws, never returns NaN. An invalid HH:MM string at any rung falls through
48
+ * to the next rung rather than blowing up the whole resolution.
49
+ */
50
+ export declare function resolveCutoffMinutes(cls: AvailabilityClass | undefined, settings: CrmServiceAvailabilitySettings | undefined, legacyEndOfWorkDayHour: number | undefined, defaultHour: number): number;
6
51
  export declare const defaultAvailabilityClasses: AvailabilityClass[];
@@ -2,9 +2,124 @@
2
2
  /*! Copyright (c) 2024, XAPPmedia */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.defaultAvailabilityClasses = exports.DEFAULT_END_OF_WORK_DAY_HOUR = exports.DEFAULT_MAX_APPOINTMENTS_PER_DAY = exports.DEFAULT_MIN_DAYS_OUT = void 0;
5
+ exports.parseHHMM = parseHHMM;
6
+ exports.resolveAvailabilityClass = resolveAvailabilityClass;
7
+ exports.resolveCutoffMinutes = resolveCutoffMinutes;
8
+ const stentor_logger_1 = require("stentor-logger");
5
9
  exports.DEFAULT_MIN_DAYS_OUT = 5;
6
10
  exports.DEFAULT_MAX_APPOINTMENTS_PER_DAY = 4;
7
11
  exports.DEFAULT_END_OF_WORK_DAY_HOUR = 18;
12
+ const HH_MM_PATTERN = /^([01]\d|2[0-3]):[0-5]\d$/;
13
+ /**
14
+ * Parses a "HH:MM" (24h) string into minutes since midnight.
15
+ *
16
+ * Never throws. Anything that isn't a strict "HH:MM" match (out of range hours,
17
+ * single digit hours, garbage, undefined) returns `undefined` and logs a warning.
18
+ */
19
+ function parseHHMM(value) {
20
+ if (typeof value !== "string" || !HH_MM_PATTERN.test(value)) {
21
+ if (value !== undefined) {
22
+ (0, stentor_logger_1.log)().warn(`Jobber: invalid HH:MM cutoff value: "${value}"`);
23
+ }
24
+ return undefined;
25
+ }
26
+ const [hoursStr, minutesStr] = value.split(":");
27
+ return parseInt(hoursStr, 10) * 60 + parseInt(minutesStr, 10);
28
+ }
29
+ /**
30
+ * Resolves which availability class applies, in priority order:
31
+ *
32
+ * 1. settings.forceAvailabilityClass (campaign widget forces a class)
33
+ * 2. settings.jobTypeClasses[jobType.id].classId (deterministic map)
34
+ * 3. jobType.class (legacy LLM guess)
35
+ * 4. settings.defaultAvailabilityClass
36
+ * 5. none
37
+ *
38
+ * An unmatched classId (defined, but not found in the class list) never resolves to
39
+ * "no class" - that would silently re-open same-day booking. It instead falls back to
40
+ * the tenant's default class, else the most conservative (largest numberOfDaysOut) class.
41
+ */
42
+ function resolveAvailabilityClass(settings, jobType, fallbackClasses) {
43
+ var _a, _b, _c;
44
+ let classId;
45
+ let source = "none";
46
+ if (settings === null || settings === void 0 ? void 0 : settings.forceAvailabilityClass) {
47
+ classId = settings.forceAvailabilityClass;
48
+ source = "force";
49
+ }
50
+ else {
51
+ const jobTypeId = (jobType === null || jobType === void 0 ? void 0 : jobType.id) !== undefined && (jobType === null || jobType === void 0 ? void 0 : jobType.id) !== null ? String(jobType.id) : undefined;
52
+ const mapped = jobTypeId
53
+ ? (_a = settings === null || settings === void 0 ? void 0 : settings.jobTypeClasses) === null || _a === void 0 ? void 0 : _a.find((m) => m && String(m.jobTypeId) === jobTypeId)
54
+ : undefined;
55
+ if (mapped === null || mapped === void 0 ? void 0 : mapped.classId) {
56
+ classId = mapped.classId;
57
+ source = "map";
58
+ }
59
+ else if (jobType === null || jobType === void 0 ? void 0 : jobType.class) {
60
+ classId = jobType.class;
61
+ source = "jobType";
62
+ }
63
+ else if (settings === null || settings === void 0 ? void 0 : settings.defaultAvailabilityClass) {
64
+ classId = settings.defaultAvailabilityClass;
65
+ source = "default";
66
+ }
67
+ }
68
+ const classes = (_c = (_b = settings === null || settings === void 0 ? void 0 : settings.availabilityClasses) !== null && _b !== void 0 ? _b : fallbackClasses) !== null && _c !== void 0 ? _c : [];
69
+ if (classId === undefined || classes.length === 0) {
70
+ return { classId: undefined, source: "none" };
71
+ }
72
+ const matched = classes.find((c) => c && c.id === classId);
73
+ if (matched) {
74
+ return { availabilityClass: matched, classId, source };
75
+ }
76
+ // classId is defined but not found - never silently fall through to "no class" (= same-day).
77
+ (0, stentor_logger_1.log)().error(`Jobber: Unmatched availability classId "${classId}" (source: "${source}"). Falling back to a conservative class.`);
78
+ const defaultClass = (settings === null || settings === void 0 ? void 0 : settings.defaultAvailabilityClass)
79
+ ? classes.find((c) => c && c.id === settings.defaultAvailabilityClass)
80
+ : undefined;
81
+ const mostConservative = classes.reduce((max, c) => {
82
+ var _a, _b;
83
+ if (!c)
84
+ return max;
85
+ if (!max || ((_a = c.numberOfDaysOut) !== null && _a !== void 0 ? _a : 0) > ((_b = max.numberOfDaysOut) !== null && _b !== void 0 ? _b : 0))
86
+ return c;
87
+ return max;
88
+ }, undefined);
89
+ return {
90
+ availabilityClass: defaultClass !== null && defaultClass !== void 0 ? defaultClass : mostConservative,
91
+ classId,
92
+ source,
93
+ unmatchedClassId: classId,
94
+ fallback: true
95
+ };
96
+ }
97
+ /**
98
+ * Resolves the same-day cutoff, in minutes since midnight, in priority order:
99
+ *
100
+ * 1. cls.currentDayAvailableUntil (per-class cutoff)
101
+ * 2. settings.defaultBusyDays.currentDayAvailableUntil
102
+ * 3. legacyEndOfWorkDayHour (hours) - via `??`, never `|`, so 0 is honored
103
+ * 4. defaultHour (hours) - the service default (ST 15, Jobber 18)
104
+ *
105
+ * Never throws, never returns NaN. An invalid HH:MM string at any rung falls through
106
+ * to the next rung rather than blowing up the whole resolution.
107
+ */
108
+ function resolveCutoffMinutes(cls, settings, legacyEndOfWorkDayHour, defaultHour) {
109
+ var _a;
110
+ const classCutoff = parseHHMM(cls === null || cls === void 0 ? void 0 : cls.currentDayAvailableUntil);
111
+ if (classCutoff !== undefined) {
112
+ return classCutoff;
113
+ }
114
+ const defaultBusyDaysCutoff = parseHHMM((_a = settings === null || settings === void 0 ? void 0 : settings.defaultBusyDays) === null || _a === void 0 ? void 0 : _a.currentDayAvailableUntil);
115
+ if (defaultBusyDaysCutoff !== undefined) {
116
+ return defaultBusyDaysCutoff;
117
+ }
118
+ if (typeof legacyEndOfWorkDayHour === "number" && !Number.isNaN(legacyEndOfWorkDayHour)) {
119
+ return legacyEndOfWorkDayHour * 60;
120
+ }
121
+ return defaultHour * 60;
122
+ }
8
123
  exports.defaultAvailabilityClasses = [
9
124
  {
10
125
  id: "avail-class-repair",
@@ -1 +1 @@
1
- {"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAIvB,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,gCAAgC,GAAG,CAAC,CAAC;AACrC,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAElC,QAAA,0BAA0B,GAAwB;IAC3D;QACI,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iDAAiD;QAC1D,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,wCAAgC;QACpD,QAAQ,EAAE,KAAK;KAClB;IACD;QACI,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,qCAAqC;QAC9C,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,wCAAgC;QACpD,QAAQ,EAAE,KAAK;KAClB;IACD;QACI,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,sCAAsC;QAC/C,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,wCAAgC;QACpD,QAAQ,EAAE,KAAK;KAClB;IACD;QACI,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,mCAAmC;QAC5C,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,wCAAgC;QACpD,QAAQ,EAAE,KAAK;KAClB;CACJ,CAAC"}
1
+ {"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":"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"}
package/lib/util.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { DateTime, ExternalLead } from "stentor-models";
2
2
  import { JobberContact } from "./JobberService";
3
+ export declare const DEFAULT_TIMEZONE = "America/New_York";
3
4
  export declare function getName(lead: ExternalLead): string;
4
5
  /**
5
6
  * Converts an ExternalLead to a JobberContact
@@ -13,22 +14,34 @@ export declare function addMessageToTranscript(contact: JobberContact, transcrip
13
14
  export declare function getUTCOffset(dateString: string): number;
14
15
  export declare function moveBackByMinutes(d: Date, minutes: number): Date;
15
16
  /**
16
- * Array of DateTime objects for the next n days from today
17
+ * Array of DateTime objects for the next n days from today, in the given IANA timezone.
17
18
  *
18
19
  * @param n
20
+ * @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
19
21
  * @returns
20
22
  */
21
- export declare function getNextDays(n: number): DateTime[];
23
+ export declare function getNextDays(n: number, timezone?: string): DateTime[];
22
24
  /**
23
- * Today's date
25
+ * Today's date in the given IANA timezone.
24
26
  *
27
+ * @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
25
28
  * @returns
26
29
  */
27
- export declare function today(): DateTime;
30
+ export declare function today(timezone?: string): DateTime;
28
31
  /**
32
+ * Are we at or after the given number of minutes since midnight, today, in the given timezone?
29
33
  *
30
- * @param hour Are we after n hour today (15 for 3pm)
34
+ * Boundary is inclusive: `now >= cutoff` blocks today (a 16:00 cutoff blocks starting exactly at 16:00:00).
31
35
  *
32
- * @returns
36
+ * @param minutesOfDay minutes since midnight (0-1440). Out of range/non-numeric input is clamped and a warning logged.
37
+ * @param timezone IANA timezone. Defaults to America/New_York.
38
+ */
39
+ export declare function isAfterMinutes(minutesOfDay: number, timezone?: string): boolean;
40
+ /**
41
+ * @deprecated use {@link resolveCutoffMinutes} + {@link isAfterMinutes} instead. Kept as a thin
42
+ * wrapper for backwards compatibility (existing tests exercise it directly).
43
+ *
44
+ * @param hour Are we after n hour today (15 for 3pm)
45
+ * @param timezone IANA timezone. Defaults to America/New_York.
33
46
  */
34
- export declare function isAfterHour(hour: number): boolean;
47
+ export declare function isAfterHour(hour: number, timezone?: string): boolean;
package/lib/util.js CHANGED
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_TIMEZONE = void 0;
6
7
  exports.getName = getName;
7
8
  exports.leadToJobberContact = leadToJobberContact;
8
9
  exports.leadToNote = leadToNote;
@@ -11,11 +12,15 @@ exports.getUTCOffset = getUTCOffset;
11
12
  exports.moveBackByMinutes = moveBackByMinutes;
12
13
  exports.getNextDays = getNextDays;
13
14
  exports.today = today;
15
+ exports.isAfterMinutes = isAfterMinutes;
14
16
  exports.isAfterHour = isAfterHour;
15
17
  /*! Copyright (c) 2024, XAPP AI */
16
18
  const addresser_1 = __importDefault(require("addresser"));
17
19
  const stentor_logger_1 = require("stentor-logger");
18
20
  const stentor_utils_1 = require("stentor-utils");
21
+ const date_fns_tz_1 = require("date-fns-tz");
22
+ exports.DEFAULT_TIMEZONE = "America/New_York";
23
+ const MINUTES_PER_DAY = 24 * 60;
19
24
  function getName(lead) {
20
25
  // Try to find a field with the name "FULL_NAME" in the lead.fields array
21
26
  const fullNameField = lead.fields.find((field) => field.name === "FULL_NAME");
@@ -203,19 +208,18 @@ function moveBackByMinutes(d, minutes) {
203
208
  return d;
204
209
  }
205
210
  /**
206
- * Array of DateTime objects for the next n days from today
211
+ * Array of DateTime objects for the next n days from today, in the given IANA timezone.
207
212
  *
208
213
  * @param n
214
+ * @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
209
215
  * @returns
210
216
  */
211
- function getNextDays(n) {
217
+ function getNextDays(n, timezone = exports.DEFAULT_TIMEZONE) {
212
218
  const dates = [];
213
- let today = new Date();
214
- const serverOffset = today.getTimezoneOffset();
215
- today = moveBackByMinutes(today, 240 - serverOffset); // TODO: visitor (browser) or service location address
219
+ const zonedToday = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
216
220
  for (let i = 1; i <= n; i++) {
217
- const nextDay = new Date(today);
218
- nextDay.setDate(today.getDate() + i);
221
+ const nextDay = new Date(zonedToday);
222
+ nextDay.setDate(zonedToday.getDate() + i);
219
223
  const year = nextDay.getFullYear();
220
224
  const month = (nextDay.getMonth() + 1).toString().padStart(2, "0");
221
225
  const day = nextDay.getDate().toString().padStart(2, "0");
@@ -224,36 +228,48 @@ function getNextDays(n) {
224
228
  return dates;
225
229
  }
226
230
  /**
227
- * Today's date
231
+ * Today's date in the given IANA timezone.
228
232
  *
233
+ * @param timezone IANA timezone (e.g. "America/New_York"). Defaults to America/New_York.
229
234
  * @returns
230
235
  */
231
- function today() {
232
- let today = new Date();
233
- const serverOffset = today.getTimezoneOffset();
234
- today = moveBackByMinutes(today, 240 - serverOffset);
235
- const year = today.getFullYear();
236
- const month = (today.getMonth() + 1).toString().padStart(2, "0");
237
- const day = today.getDate().toString().padStart(2, "0");
236
+ function today(timezone = exports.DEFAULT_TIMEZONE) {
237
+ const zonedToday = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
238
+ const year = zonedToday.getFullYear();
239
+ const month = (zonedToday.getMonth() + 1).toString().padStart(2, "0");
240
+ const day = zonedToday.getDate().toString().padStart(2, "0");
238
241
  return { date: `${year}-${month}-${day}` };
239
242
  }
240
243
  /**
244
+ * Are we at or after the given number of minutes since midnight, today, in the given timezone?
241
245
  *
242
- * @param hour Are we after n hour today (15 for 3pm)
246
+ * Boundary is inclusive: `now >= cutoff` blocks today (a 16:00 cutoff blocks starting exactly at 16:00:00).
243
247
  *
244
- * @returns
248
+ * @param minutesOfDay minutes since midnight (0-1440). Out of range/non-numeric input is clamped and a warning logged.
249
+ * @param timezone IANA timezone. Defaults to America/New_York.
245
250
  */
246
- function isAfterHour(hour) {
247
- // Don't blow up
248
- if (hour < 0 || hour > 23) {
249
- (0, stentor_logger_1.log)().warn(`Jobber: invalid hour: ${hour}`);
250
- hour = hour % 24;
251
+ function isAfterMinutes(minutesOfDay, timezone = exports.DEFAULT_TIMEZONE) {
252
+ let cutoff = minutesOfDay;
253
+ if (typeof cutoff !== "number" || Number.isNaN(cutoff) || cutoff < 0 || cutoff > MINUTES_PER_DAY) {
254
+ (0, stentor_logger_1.log)().warn(`Jobber: invalid cutoff minutes: ${minutesOfDay}`);
255
+ cutoff = ((cutoff % MINUTES_PER_DAY) + MINUTES_PER_DAY) % MINUTES_PER_DAY;
256
+ if (!Number.isFinite(cutoff)) {
257
+ cutoff = 0;
258
+ }
251
259
  }
252
- let now = new Date();
253
- const serverOffset = now.getTimezoneOffset();
254
- now = moveBackByMinutes(now, 240 - serverOffset);
255
- const hourNow = now.getHours();
256
- (0, stentor_logger_1.log)().info(`Jobber: isAfterHour: comparing ${hourNow} to ${hour}`);
257
- return hourNow >= hour;
260
+ const zonedNow = (0, date_fns_tz_1.toZonedTime)(new Date(), timezone);
261
+ const nowMinutes = zonedNow.getHours() * 60 + zonedNow.getMinutes();
262
+ (0, stentor_logger_1.log)().info(`Jobber: isAfterMinutes: comparing ${nowMinutes} to ${cutoff} (${timezone})`);
263
+ return nowMinutes >= cutoff;
264
+ }
265
+ /**
266
+ * @deprecated use {@link resolveCutoffMinutes} + {@link isAfterMinutes} instead. Kept as a thin
267
+ * wrapper for backwards compatibility (existing tests exercise it directly).
268
+ *
269
+ * @param hour Are we after n hour today (15 for 3pm)
270
+ * @param timezone IANA timezone. Defaults to America/New_York.
271
+ */
272
+ function isAfterHour(hour, timezone = exports.DEFAULT_TIMEZONE) {
273
+ return isAfterMinutes(hour * 60, timezone);
258
274
  }
259
275
  //# sourceMappingURL=util.js.map
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.82.0",
7
+ "version": "1.86.0",
8
8
  "description": "Service to integrate with Jobber",
9
9
  "types": "lib/index",
10
10
  "main": "lib/index",
@@ -20,9 +20,9 @@
20
20
  "dotenv": "17.4.2",
21
21
  "mocha": "11.7.5",
22
22
  "sinon": "21.0.0",
23
- "stentor-logger": "1.72.3",
24
- "stentor-models": "1.72.3",
25
- "stentor-service-fetch": "1.72.3",
23
+ "stentor-logger": "1.74.0",
24
+ "stentor-models": "1.74.0",
25
+ "stentor-service-fetch": "1.74.0",
26
26
  "ts-node": "10.9.2",
27
27
  "typescript": "5.9.3"
28
28
  },
@@ -32,16 +32,18 @@
32
32
  "stentor-service-fetch": "1.x"
33
33
  },
34
34
  "scripts": {
35
+ "prepack": "yarn build",
35
36
  "build": "tsc -d true -p .",
36
37
  "clean": "rm -rf ./lib/*",
37
38
  "test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\"",
38
39
  "test:f": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\"",
39
40
  "local": "mocha --recursive -r ts-node/register \"./src/**/*.ftest.ts\""
40
41
  },
41
- "gitHead": "d4ad419e6b72c016edeb41c56210b2a70c1e94a9",
42
+ "gitHead": "3a345719866a5c39329b605545f04c465e6baf48",
42
43
  "dependencies": {
43
44
  "addresser": "1.1.20",
44
- "axios": "1.16.1",
45
- "date-fns": "4.1.0"
45
+ "axios": "1.18.1",
46
+ "date-fns": "4.1.0",
47
+ "date-fns-tz": "3.2.0"
46
48
  }
47
49
  }