@resolveio/server-lib 22.2.14 → 22.2.16

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.
@@ -0,0 +1,11 @@
1
+ type AiAssistantCoreTermHint = {
2
+ terms: string[];
3
+ collections: string[];
4
+ };
5
+ export declare const AI_ASSISTANT_CORE_HEURISTICS: Readonly<{
6
+ version: 2;
7
+ collection_aliases: Record<string, string>;
8
+ collection_alias_options: Record<string, string[]>;
9
+ collection_term_hints: AiAssistantCoreTermHint[];
10
+ }>;
11
+ export {};
@@ -0,0 +1,531 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.AI_ASSISTANT_CORE_HEURISTICS = void 0;
29
+ function normalizeTerm(value) {
30
+ return String(value || '')
31
+ .trim()
32
+ .toLowerCase()
33
+ .replace(/\s+/g, ' ');
34
+ }
35
+ function uniqueStrings(values) {
36
+ var seen = new Set();
37
+ var unique = [];
38
+ (values || []).forEach(function (value) {
39
+ var normalized = normalizeTerm(value);
40
+ if (!normalized || seen.has(normalized)) {
41
+ return;
42
+ }
43
+ seen.add(normalized);
44
+ unique.push(normalized);
45
+ });
46
+ return unique;
47
+ }
48
+ function uniqueCollections(values) {
49
+ var seen = new Set();
50
+ var unique = [];
51
+ (values || []).forEach(function (value) {
52
+ var normalized = normalizeTerm(value).replace(/[^a-z0-9._-]/g, '');
53
+ if (!normalized || seen.has(normalized)) {
54
+ return;
55
+ }
56
+ seen.add(normalized);
57
+ unique.push(normalized);
58
+ });
59
+ return unique;
60
+ }
61
+ function mergeCollectionLists() {
62
+ var groups = [];
63
+ for (var _i = 0; _i < arguments.length; _i++) {
64
+ groups[_i] = arguments[_i];
65
+ }
66
+ return uniqueCollections((groups || []).reduce(function (acc, group) { return acc.concat(Array.isArray(group) ? group : []); }, []));
67
+ }
68
+ function singularizeToken(token) {
69
+ var normalized = normalizeTerm(token);
70
+ if (!normalized) {
71
+ return '';
72
+ }
73
+ if (normalized.endsWith('ies') && normalized.length > 4) {
74
+ return "".concat(normalized.slice(0, -3), "y");
75
+ }
76
+ if (normalized.length > 4
77
+ && normalized.endsWith('s')
78
+ && !normalized.endsWith('ss')
79
+ && !normalized.endsWith('us')
80
+ && !normalized.endsWith('is')) {
81
+ return normalized.slice(0, -1);
82
+ }
83
+ return normalized;
84
+ }
85
+ function buildCollectionNameTerms(collection) {
86
+ var normalized = normalizeTerm(collection).replace(/[^a-z0-9._-]/g, '');
87
+ if (!normalized) {
88
+ return [];
89
+ }
90
+ var withoutReportPrefix = normalized.startsWith('report-')
91
+ ? normalized.slice('report-'.length)
92
+ : normalized;
93
+ var tokens = withoutReportPrefix.split(/[-_.]+/g).filter(Boolean);
94
+ var singularTokens = tokens.map(singularizeToken).filter(Boolean);
95
+ var terms = uniqueStrings([
96
+ normalized,
97
+ withoutReportPrefix,
98
+ withoutReportPrefix.replace(/[-_.]+/g, ' '),
99
+ withoutReportPrefix.replace(/[-_.]+/g, ''),
100
+ singularTokens.join('-'),
101
+ singularTokens.join(' '),
102
+ singularTokens.join('')
103
+ ]);
104
+ return terms;
105
+ }
106
+ function buildCollectionTermHintsFromCandidates(collections) {
107
+ return uniqueCollections(collections).map(function (collection) { return ({
108
+ terms: buildCollectionNameTerms(collection),
109
+ collections: [collection]
110
+ }); });
111
+ }
112
+ var REPORT_COLLECTION_HINT_CANDIDATES = uniqueCollections([
113
+ 'reports',
114
+ 'report-templates',
115
+ 'report-layouts',
116
+ 'report-builder-configs',
117
+ 'report-builder-layouts',
118
+ 'report-dashboards',
119
+ 'report-widgets',
120
+ 'report-favorites',
121
+ 'report-schedules',
122
+ 'report-runs',
123
+ 'saved-reports',
124
+ 'qb-reports',
125
+ 'dashboard-configs',
126
+ 'dashboard-widgets',
127
+ 'report-chemical-blends',
128
+ 'inventory-reports',
129
+ 'incident-reports',
130
+ 'field-reports',
131
+ 'fmc-daily-reports'
132
+ ]);
133
+ var SUPPORT_COLLECTION_HINT_CANDIDATES = uniqueCollections([
134
+ 'support-tickets',
135
+ 'tickets',
136
+ 'delivery-tickets',
137
+ 'field-tickets',
138
+ 'return-tickets',
139
+ 'pick-tickets',
140
+ 'service-field-tickets',
141
+ 'notes',
142
+ 'tasks'
143
+ ]);
144
+ var AUTH_COLLECTION_HINT_CANDIDATES = uniqueCollections([
145
+ 'users',
146
+ 'client-users',
147
+ 'billing-logged-in-users',
148
+ 'customer-auth-accounts',
149
+ 'customer-auth-sessions',
150
+ 'customer-portal-accounts',
151
+ 'customer-portal-sessions',
152
+ 'customer-portal-invites',
153
+ 'owners'
154
+ ]);
155
+ var PERMISSION_NAV_COLLECTION_HINT_CANDIDATES = uniqueCollections([
156
+ 'roles',
157
+ 'permissions',
158
+ 'role-permissions',
159
+ 'user-groups',
160
+ 'clients',
161
+ 'client-types',
162
+ 'systems',
163
+ 'dashboard-configs',
164
+ 'homepage-configs',
165
+ 'homepage-sections'
166
+ ]);
167
+ var UI_WIDGET_COLLECTION_HINT_CANDIDATES = uniqueCollections([
168
+ 'dashboard-widgets',
169
+ 'report-widgets',
170
+ 'report-layouts',
171
+ 'report-templates',
172
+ 'dashboard-configs',
173
+ 'homepage-configs',
174
+ 'homepage-sections',
175
+ 'homepage-announcements',
176
+ 'ai-assist-configs',
177
+ 'systems'
178
+ ]);
179
+ var SYSTEM_COLLECTION_HINT_CANDIDATES = uniqueCollections([
180
+ 'systems',
181
+ 'settings',
182
+ 'configs',
183
+ 'company-secrets',
184
+ 'distributions',
185
+ 'ai-coder-apps',
186
+ 'ai-development-jobs',
187
+ 'build-instance-logs',
188
+ 'error-autofix-logs',
189
+ 'slow-query-logs',
190
+ 'work-logs',
191
+ 'crm-usage-logs',
192
+ 'mongo-performance-metrics',
193
+ 'mongo-snapshots',
194
+ 'aws-heartbeats',
195
+ 'aws-app-versions'
196
+ ]);
197
+ var TABLE_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES, ['invoices', 'orders', 'work-order-dynamics', 'work-orders']);
198
+ var REVENUE_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(['invoices', 'orders', 'sales-orders', 'purchase-orders'], REPORT_COLLECTION_HINT_CANDIDATES);
199
+ var PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(['orders', 'purchase-orders', 'sales-orders', 'work-order-dynamics'], REPORT_COLLECTION_HINT_CANDIDATES);
200
+ var CHEMICAL_COLLECTION_HINT_CANDIDATES = mergeCollectionLists([
201
+ 'chemicals',
202
+ 'chemical-blends',
203
+ 'chemical-activities',
204
+ 'chemical-inventory-snapshots',
205
+ 'chemical-inventory-adjustments',
206
+ 'chemical-receives',
207
+ 'chemical-reconciles',
208
+ 'chemical-transactions',
209
+ 'chemical-transfers',
210
+ 'products',
211
+ 'items',
212
+ 'inventory',
213
+ 'blends'
214
+ ], REPORT_COLLECTION_HINT_CANDIDATES);
215
+ var WORK_ORDER_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(['work-order-dynamics', 'work-orders', 'maintenance-orders', 'repair-orders', 'orders', 'jobs'], REPORT_COLLECTION_HINT_CANDIDATES);
216
+ var CREDIT_MEMO_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(['qb-credit-memos', 'credit-memos', 'invoices'], REPORT_COLLECTION_HINT_CANDIDATES);
217
+ var NAV_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(PERMISSION_NAV_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES, ['modules', 'menus', 'navigation-items']);
218
+ // Permission/role language should resolve through user collections first.
219
+ var USER_PERMISSION_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(['users', 'client-users', 'billing-logged-in-users'], AUTH_COLLECTION_HINT_CANDIDATES, PERMISSION_NAV_COLLECTION_HINT_CANDIDATES);
220
+ var AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS = {
221
+ report: REPORT_COLLECTION_HINT_CANDIDATES,
222
+ reports: REPORT_COLLECTION_HINT_CANDIDATES,
223
+ reporting: REPORT_COLLECTION_HINT_CANDIDATES,
224
+ reportbuilder: REPORT_COLLECTION_HINT_CANDIDATES,
225
+ reportbuilders: REPORT_COLLECTION_HINT_CANDIDATES,
226
+ reportdesigner: REPORT_COLLECTION_HINT_CANDIDATES,
227
+ reportdesigners: REPORT_COLLECTION_HINT_CANDIDATES,
228
+ reportschema: REPORT_COLLECTION_HINT_CANDIDATES,
229
+ reportschemas: REPORT_COLLECTION_HINT_CANDIDATES,
230
+ dashboard: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),
231
+ dashboards: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),
232
+ analytics: REPORT_COLLECTION_HINT_CANDIDATES,
233
+ kpi: REPORT_COLLECTION_HINT_CANDIDATES,
234
+ kpis: REPORT_COLLECTION_HINT_CANDIDATES,
235
+ chart: REPORT_COLLECTION_HINT_CANDIDATES,
236
+ charts: REPORT_COLLECTION_HINT_CANDIDATES,
237
+ graph: REPORT_COLLECTION_HINT_CANDIDATES,
238
+ graphs: REPORT_COLLECTION_HINT_CANDIDATES,
239
+ visualization: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),
240
+ visualizations: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),
241
+ revenue: REVENUE_COLLECTION_HINT_CANDIDATES,
242
+ revenues: REVENUE_COLLECTION_HINT_CANDIDATES,
243
+ salesrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,
244
+ grossrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,
245
+ netrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,
246
+ totalrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,
247
+ invoice: REVENUE_COLLECTION_HINT_CANDIDATES,
248
+ invoices: REVENUE_COLLECTION_HINT_CANDIDATES,
249
+ billing: REVENUE_COLLECTION_HINT_CANDIDATES,
250
+ billings: REVENUE_COLLECTION_HINT_CANDIDATES,
251
+ accountsreceivable: REVENUE_COLLECTION_HINT_CANDIDATES,
252
+ accountsreceivables: REVENUE_COLLECTION_HINT_CANDIDATES,
253
+ araging: REVENUE_COLLECTION_HINT_CANDIDATES,
254
+ inv: REVENUE_COLLECTION_HINT_CANDIDATES,
255
+ invs: REVENUE_COLLECTION_HINT_CANDIDATES,
256
+ po: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
257
+ pos: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
258
+ purchaseorder: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
259
+ purchaseorders: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
260
+ poreport: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
261
+ popending: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,
262
+ chemical: CHEMICAL_COLLECTION_HINT_CANDIDATES,
263
+ chemicals: CHEMICAL_COLLECTION_HINT_CANDIDATES,
264
+ chem: CHEMICAL_COLLECTION_HINT_CANDIDATES,
265
+ chems: CHEMICAL_COLLECTION_HINT_CANDIDATES,
266
+ blend: CHEMICAL_COLLECTION_HINT_CANDIDATES,
267
+ blends: CHEMICAL_COLLECTION_HINT_CANDIDATES,
268
+ workorder: WORK_ORDER_COLLECTION_HINT_CANDIDATES,
269
+ workorders: WORK_ORDER_COLLECTION_HINT_CANDIDATES,
270
+ wo: WORK_ORDER_COLLECTION_HINT_CANDIDATES,
271
+ wos: WORK_ORDER_COLLECTION_HINT_CANDIDATES,
272
+ creditmemo: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,
273
+ creditmemos: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,
274
+ creditnote: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,
275
+ creditnotes: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,
276
+ widget: UI_WIDGET_COLLECTION_HINT_CANDIDATES,
277
+ widgets: UI_WIDGET_COLLECTION_HINT_CANDIDATES,
278
+ collapsetable: TABLE_COLLECTION_HINT_CANDIDATES,
279
+ collapsetables: TABLE_COLLECTION_HINT_CANDIDATES,
280
+ collapsibletable: TABLE_COLLECTION_HINT_CANDIDATES,
281
+ collapsibletables: TABLE_COLLECTION_HINT_CANDIDATES,
282
+ expandabletable: TABLE_COLLECTION_HINT_CANDIDATES,
283
+ expandabletables: TABLE_COLLECTION_HINT_CANDIDATES,
284
+ datatable: TABLE_COLLECTION_HINT_CANDIDATES,
285
+ datatables: TABLE_COLLECTION_HINT_CANDIDATES,
286
+ datagrid: TABLE_COLLECTION_HINT_CANDIDATES,
287
+ datagrids: TABLE_COLLECTION_HINT_CANDIDATES,
288
+ gridtable: TABLE_COLLECTION_HINT_CANDIDATES,
289
+ gridtables: TABLE_COLLECTION_HINT_CANDIDATES,
290
+ navbar: NAV_COLLECTION_HINT_CANDIDATES,
291
+ navbars: NAV_COLLECTION_HINT_CANDIDATES,
292
+ navbarmain: NAV_COLLECTION_HINT_CANDIDATES,
293
+ navbarmodule: NAV_COLLECTION_HINT_CANDIDATES,
294
+ navigation: NAV_COLLECTION_HINT_CANDIDATES,
295
+ navigations: NAV_COLLECTION_HINT_CANDIDATES,
296
+ sidebar: NAV_COLLECTION_HINT_CANDIDATES,
297
+ sidebars: NAV_COLLECTION_HINT_CANDIDATES,
298
+ menu: NAV_COLLECTION_HINT_CANDIDATES,
299
+ menus: NAV_COLLECTION_HINT_CANDIDATES,
300
+ modulemenu: NAV_COLLECTION_HINT_CANDIDATES,
301
+ modulemenus: NAV_COLLECTION_HINT_CANDIDATES,
302
+ supportticket: SUPPORT_COLLECTION_HINT_CANDIDATES,
303
+ supporttickets: SUPPORT_COLLECTION_HINT_CANDIDATES,
304
+ helpdesk: SUPPORT_COLLECTION_HINT_CANDIDATES,
305
+ servicedesk: SUPPORT_COLLECTION_HINT_CANDIDATES,
306
+ ticket: SUPPORT_COLLECTION_HINT_CANDIDATES,
307
+ tickets: SUPPORT_COLLECTION_HINT_CANDIDATES,
308
+ issue: SUPPORT_COLLECTION_HINT_CANDIDATES,
309
+ issues: SUPPORT_COLLECTION_HINT_CANDIDATES,
310
+ bug: SUPPORT_COLLECTION_HINT_CANDIDATES,
311
+ bugs: SUPPORT_COLLECTION_HINT_CANDIDATES,
312
+ login: AUTH_COLLECTION_HINT_CANDIDATES,
313
+ logins: AUTH_COLLECTION_HINT_CANDIDATES,
314
+ signin: AUTH_COLLECTION_HINT_CANDIDATES,
315
+ signins: AUTH_COLLECTION_HINT_CANDIDATES,
316
+ signinpage: AUTH_COLLECTION_HINT_CANDIDATES,
317
+ authentication: AUTH_COLLECTION_HINT_CANDIDATES,
318
+ auth: AUTH_COLLECTION_HINT_CANDIDATES,
319
+ session: AUTH_COLLECTION_HINT_CANDIDATES,
320
+ sessions: AUTH_COLLECTION_HINT_CANDIDATES,
321
+ permission: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,
322
+ permissions: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,
323
+ role: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,
324
+ roles: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,
325
+ access: mergeCollectionLists(USER_PERMISSION_COLLECTION_HINT_CANDIDATES, AUTH_COLLECTION_HINT_CANDIDATES),
326
+ authorization: mergeCollectionLists(USER_PERMISSION_COLLECTION_HINT_CANDIDATES, AUTH_COLLECTION_HINT_CANDIDATES),
327
+ system: SYSTEM_COLLECTION_HINT_CANDIDATES,
328
+ systems: SYSTEM_COLLECTION_HINT_CANDIDATES,
329
+ setting: SYSTEM_COLLECTION_HINT_CANDIDATES,
330
+ settings: SYSTEM_COLLECTION_HINT_CANDIDATES,
331
+ config: SYSTEM_COLLECTION_HINT_CANDIDATES,
332
+ configs: SYSTEM_COLLECTION_HINT_CANDIDATES,
333
+ configuration: SYSTEM_COLLECTION_HINT_CANDIDATES,
334
+ configurations: SYSTEM_COLLECTION_HINT_CANDIDATES,
335
+ audit: SYSTEM_COLLECTION_HINT_CANDIDATES,
336
+ audits: SYSTEM_COLLECTION_HINT_CANDIDATES,
337
+ log: SYSTEM_COLLECTION_HINT_CANDIDATES,
338
+ logs: SYSTEM_COLLECTION_HINT_CANDIDATES,
339
+ notification: mergeCollectionLists(SYSTEM_COLLECTION_HINT_CANDIDATES, ['user-notifications']),
340
+ notifications: mergeCollectionLists(SYSTEM_COLLECTION_HINT_CANDIDATES, ['user-notifications'])
341
+ };
342
+ var AI_ASSISTANT_CORE_COLLECTION_ALIASES = Object.keys(AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS)
343
+ .reduce(function (acc, key) {
344
+ var options = AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS[key] || [];
345
+ var best = options[0];
346
+ if (best) {
347
+ acc[key] = best;
348
+ }
349
+ return acc;
350
+ }, {});
351
+ var AI_ASSISTANT_CORE_DOMAIN_TERM_HINTS = [
352
+ {
353
+ terms: [
354
+ 'report builder',
355
+ 'report builder schema',
356
+ 'report schema',
357
+ 'report designer',
358
+ 'build report',
359
+ 'custom report',
360
+ 'report filters',
361
+ 'report columns',
362
+ 'report query'
363
+ ],
364
+ collections: REPORT_COLLECTION_HINT_CANDIDATES
365
+ },
366
+ {
367
+ terms: [
368
+ 'dashboard report',
369
+ 'dashboard widget',
370
+ 'analytics dashboard',
371
+ 'kpi dashboard',
372
+ 'chart dashboard'
373
+ ],
374
+ collections: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES)
375
+ },
376
+ {
377
+ terms: [
378
+ 'revenue',
379
+ 'total revenue',
380
+ 'gross revenue',
381
+ 'net revenue',
382
+ 'sales revenue',
383
+ 'billing revenue',
384
+ 'monthly revenue',
385
+ 'revenue by customer',
386
+ 'revenue by month',
387
+ 'invoice revenue',
388
+ 'accounts receivable',
389
+ 'ar aging',
390
+ 'open invoices',
391
+ 'outstanding invoices',
392
+ 'inv',
393
+ 'invs'
394
+ ],
395
+ collections: REVENUE_COLLECTION_HINT_CANDIDATES
396
+ },
397
+ {
398
+ terms: [
399
+ 'po',
400
+ 'pos',
401
+ 'open po',
402
+ 'open pos',
403
+ 'pending po',
404
+ 'purchase order',
405
+ 'purchase orders',
406
+ 'po list',
407
+ 'po status',
408
+ 'po approval',
409
+ 'purchase approvals',
410
+ 'procurement order'
411
+ ],
412
+ collections: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES
413
+ },
414
+ {
415
+ terms: [
416
+ 'chemical',
417
+ 'chemicals',
418
+ 'chem',
419
+ 'chems',
420
+ 'chemical inventory',
421
+ 'chemical blend',
422
+ 'blend inventory',
423
+ 'blend usage'
424
+ ],
425
+ collections: CHEMICAL_COLLECTION_HINT_CANDIDATES
426
+ },
427
+ {
428
+ terms: [
429
+ 'work order',
430
+ 'work orders',
431
+ 'workorder',
432
+ 'workorders',
433
+ 'wo',
434
+ 'wos',
435
+ 'open work orders',
436
+ 'completed work orders'
437
+ ],
438
+ collections: WORK_ORDER_COLLECTION_HINT_CANDIDATES
439
+ },
440
+ {
441
+ terms: [
442
+ 'credit memo',
443
+ 'credit memos',
444
+ 'creditmemo',
445
+ 'creditmemos',
446
+ 'credit note',
447
+ 'credit notes'
448
+ ],
449
+ collections: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES
450
+ },
451
+ {
452
+ terms: [
453
+ 'support ticket',
454
+ 'support tickets',
455
+ 'help desk',
456
+ 'service desk',
457
+ 'customer issue',
458
+ 'issue ticket',
459
+ 'bug ticket'
460
+ ],
461
+ collections: SUPPORT_COLLECTION_HINT_CANDIDATES
462
+ },
463
+ {
464
+ terms: [
465
+ 'login issue',
466
+ 'cannot login',
467
+ 'log in failed',
468
+ 'sign in failed',
469
+ 'authentication issue',
470
+ 'session issue',
471
+ 'access denied'
472
+ ],
473
+ collections: mergeCollectionLists(AUTH_COLLECTION_HINT_CANDIDATES, PERMISSION_NAV_COLLECTION_HINT_CANDIDATES)
474
+ },
475
+ {
476
+ terms: [
477
+ 'collapse table',
478
+ 'collapsible table',
479
+ 'expandable table',
480
+ 'collapse-table',
481
+ 'data table',
482
+ 'data-table',
483
+ 'datatable',
484
+ 'data grid',
485
+ 'table widget'
486
+ ],
487
+ collections: TABLE_COLLECTION_HINT_CANDIDATES
488
+ },
489
+ {
490
+ terms: [
491
+ 'navbar main',
492
+ 'main navbar',
493
+ 'navbar module',
494
+ 'module navbar',
495
+ 'navigation bar',
496
+ 'main navigation',
497
+ 'module navigation',
498
+ 'sidebar navigation',
499
+ 'menu bar'
500
+ ],
501
+ collections: NAV_COLLECTION_HINT_CANDIDATES
502
+ },
503
+ {
504
+ terms: [
505
+ 'system settings',
506
+ 'system config',
507
+ 'system configuration',
508
+ 'global settings',
509
+ 'platform settings',
510
+ 'admin settings',
511
+ 'audit log',
512
+ 'activity log'
513
+ ],
514
+ collections: SYSTEM_COLLECTION_HINT_CANDIDATES
515
+ }
516
+ ];
517
+ var AI_ASSISTANT_CORE_COLLECTION_HINT_CANDIDATES = uniqueCollections(mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, SUPPORT_COLLECTION_HINT_CANDIDATES, AUTH_COLLECTION_HINT_CANDIDATES, PERMISSION_NAV_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES, SYSTEM_COLLECTION_HINT_CANDIDATES, TABLE_COLLECTION_HINT_CANDIDATES, NAV_COLLECTION_HINT_CANDIDATES, Object.values(AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS)
518
+ .reduce(function (acc, group) { return acc.concat(group || []); }, [])));
519
+ var AI_ASSISTANT_CORE_COLLECTION_TERM_HINTS = buildCollectionTermHintsFromCandidates(AI_ASSISTANT_CORE_COLLECTION_HINT_CANDIDATES);
520
+ var AI_ASSISTANT_CORE_TERM_HINTS = __spreadArray(__spreadArray([], __read(AI_ASSISTANT_CORE_DOMAIN_TERM_HINTS), false), __read(AI_ASSISTANT_CORE_COLLECTION_TERM_HINTS), false).map(function (entry) { return ({
521
+ terms: uniqueStrings(entry.terms || []),
522
+ collections: uniqueCollections(entry.collections || [])
523
+ }); }).filter(function (entry) { return entry.terms.length && entry.collections.length; });
524
+ exports.AI_ASSISTANT_CORE_HEURISTICS = Object.freeze({
525
+ version: 2,
526
+ collection_aliases: AI_ASSISTANT_CORE_COLLECTION_ALIASES,
527
+ collection_alias_options: AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS,
528
+ collection_term_hints: AI_ASSISTANT_CORE_TERM_HINTS
529
+ });
530
+
531
+ //# sourceMappingURL=assistant-core-heuristics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ai/assistant-core-heuristics.ts"],"names":[],"mappings":"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","file":"assistant-core-heuristics.js","sourcesContent":["type AiAssistantCoreTermHint = {\n\tterms: string[];\n\tcollections: string[];\n};\n\nfunction normalizeTerm(value: string): string {\n\treturn String(value || '')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/\\s+/g, ' ');\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst unique: string[] = [];\n\t(values || []).forEach((value) => {\n\t\tconst normalized = normalizeTerm(value);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tunique.push(normalized);\n\t});\n\treturn unique;\n}\n\nfunction uniqueCollections(values: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst unique: string[] = [];\n\t(values || []).forEach((value) => {\n\t\tconst normalized = normalizeTerm(value).replace(/[^a-z0-9._-]/g, '');\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tunique.push(normalized);\n\t});\n\treturn unique;\n}\n\nfunction mergeCollectionLists(...groups: string[][]): string[] {\n\treturn uniqueCollections(\n\t\t(groups || []).reduce((acc, group) => acc.concat(Array.isArray(group) ? group : []), [] as string[])\n\t);\n}\n\nfunction singularizeToken(token: string): string {\n\tconst normalized = normalizeTerm(token);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.endsWith('ies') && normalized.length > 4) {\n\t\treturn `${normalized.slice(0, -3)}y`;\n\t}\n\tif (\n\t\tnormalized.length > 4\n\t\t&& normalized.endsWith('s')\n\t\t&& !normalized.endsWith('ss')\n\t\t&& !normalized.endsWith('us')\n\t\t&& !normalized.endsWith('is')\n\t) {\n\t\treturn normalized.slice(0, -1);\n\t}\n\treturn normalized;\n}\n\nfunction buildCollectionNameTerms(collection: string): string[] {\n\tconst normalized = normalizeTerm(collection).replace(/[^a-z0-9._-]/g, '');\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst withoutReportPrefix = normalized.startsWith('report-')\n\t\t? normalized.slice('report-'.length)\n\t\t: normalized;\n\tconst tokens = withoutReportPrefix.split(/[-_.]+/g).filter(Boolean);\n\tconst singularTokens = tokens.map(singularizeToken).filter(Boolean);\n\tconst terms = uniqueStrings([\n\t\tnormalized,\n\t\twithoutReportPrefix,\n\t\twithoutReportPrefix.replace(/[-_.]+/g, ' '),\n\t\twithoutReportPrefix.replace(/[-_.]+/g, ''),\n\t\tsingularTokens.join('-'),\n\t\tsingularTokens.join(' '),\n\t\tsingularTokens.join('')\n\t]);\n\treturn terms;\n}\n\nfunction buildCollectionTermHintsFromCandidates(collections: string[]): AiAssistantCoreTermHint[] {\n\treturn uniqueCollections(collections).map((collection) => ({\n\t\tterms: buildCollectionNameTerms(collection),\n\t\tcollections: [collection]\n\t}));\n}\n\nconst REPORT_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'reports',\n\t'report-templates',\n\t'report-layouts',\n\t'report-builder-configs',\n\t'report-builder-layouts',\n\t'report-dashboards',\n\t'report-widgets',\n\t'report-favorites',\n\t'report-schedules',\n\t'report-runs',\n\t'saved-reports',\n\t'qb-reports',\n\t'dashboard-configs',\n\t'dashboard-widgets',\n\t'report-chemical-blends',\n\t'inventory-reports',\n\t'incident-reports',\n\t'field-reports',\n\t'fmc-daily-reports'\n]);\n\nconst SUPPORT_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'support-tickets',\n\t'tickets',\n\t'delivery-tickets',\n\t'field-tickets',\n\t'return-tickets',\n\t'pick-tickets',\n\t'service-field-tickets',\n\t'notes',\n\t'tasks'\n]);\n\nconst AUTH_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'users',\n\t'client-users',\n\t'billing-logged-in-users',\n\t'customer-auth-accounts',\n\t'customer-auth-sessions',\n\t'customer-portal-accounts',\n\t'customer-portal-sessions',\n\t'customer-portal-invites',\n\t'owners'\n]);\n\nconst PERMISSION_NAV_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'roles',\n\t'permissions',\n\t'role-permissions',\n\t'user-groups',\n\t'clients',\n\t'client-types',\n\t'systems',\n\t'dashboard-configs',\n\t'homepage-configs',\n\t'homepage-sections'\n]);\n\nconst UI_WIDGET_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'dashboard-widgets',\n\t'report-widgets',\n\t'report-layouts',\n\t'report-templates',\n\t'dashboard-configs',\n\t'homepage-configs',\n\t'homepage-sections',\n\t'homepage-announcements',\n\t'ai-assist-configs',\n\t'systems'\n]);\n\nconst SYSTEM_COLLECTION_HINT_CANDIDATES = uniqueCollections([\n\t'systems',\n\t'settings',\n\t'configs',\n\t'company-secrets',\n\t'distributions',\n\t'ai-coder-apps',\n\t'ai-development-jobs',\n\t'build-instance-logs',\n\t'error-autofix-logs',\n\t'slow-query-logs',\n\t'work-logs',\n\t'crm-usage-logs',\n\t'mongo-performance-metrics',\n\t'mongo-snapshots',\n\t'aws-heartbeats',\n\t'aws-app-versions'\n]);\n\nconst TABLE_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\tREPORT_COLLECTION_HINT_CANDIDATES,\n\tUI_WIDGET_COLLECTION_HINT_CANDIDATES,\n\t['invoices', 'orders', 'work-order-dynamics', 'work-orders']\n);\n\nconst REVENUE_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t['invoices', 'orders', 'sales-orders', 'purchase-orders'],\n\tREPORT_COLLECTION_HINT_CANDIDATES\n);\n\nconst PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t['orders', 'purchase-orders', 'sales-orders', 'work-order-dynamics'],\n\tREPORT_COLLECTION_HINT_CANDIDATES\n);\n\nconst CHEMICAL_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t[\n\t\t'chemicals',\n\t\t'chemical-blends',\n\t\t'chemical-activities',\n\t\t'chemical-inventory-snapshots',\n\t\t'chemical-inventory-adjustments',\n\t\t'chemical-receives',\n\t\t'chemical-reconciles',\n\t\t'chemical-transactions',\n\t\t'chemical-transfers',\n\t\t'products',\n\t\t'items',\n\t\t'inventory',\n\t\t'blends'\n\t],\n\tREPORT_COLLECTION_HINT_CANDIDATES\n);\n\nconst WORK_ORDER_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t['work-order-dynamics', 'work-orders', 'maintenance-orders', 'repair-orders', 'orders', 'jobs'],\n\tREPORT_COLLECTION_HINT_CANDIDATES\n);\n\nconst CREDIT_MEMO_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t['qb-credit-memos', 'credit-memos', 'invoices'],\n\tREPORT_COLLECTION_HINT_CANDIDATES\n);\n\nconst NAV_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\tPERMISSION_NAV_COLLECTION_HINT_CANDIDATES,\n\tUI_WIDGET_COLLECTION_HINT_CANDIDATES,\n\t['modules', 'menus', 'navigation-items']\n);\n\n// Permission/role language should resolve through user collections first.\nconst USER_PERMISSION_COLLECTION_HINT_CANDIDATES = mergeCollectionLists(\n\t['users', 'client-users', 'billing-logged-in-users'],\n\tAUTH_COLLECTION_HINT_CANDIDATES,\n\tPERMISSION_NAV_COLLECTION_HINT_CANDIDATES\n);\n\nconst AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS: Record<string, string[]> = {\n\treport: REPORT_COLLECTION_HINT_CANDIDATES,\n\treports: REPORT_COLLECTION_HINT_CANDIDATES,\n\treporting: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportbuilder: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportbuilders: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportdesigner: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportdesigners: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportschema: REPORT_COLLECTION_HINT_CANDIDATES,\n\treportschemas: REPORT_COLLECTION_HINT_CANDIDATES,\n\tdashboard: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),\n\tdashboards: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),\n\tanalytics: REPORT_COLLECTION_HINT_CANDIDATES,\n\tkpi: REPORT_COLLECTION_HINT_CANDIDATES,\n\tkpis: REPORT_COLLECTION_HINT_CANDIDATES,\n\tchart: REPORT_COLLECTION_HINT_CANDIDATES,\n\tcharts: REPORT_COLLECTION_HINT_CANDIDATES,\n\tgraph: REPORT_COLLECTION_HINT_CANDIDATES,\n\tgraphs: REPORT_COLLECTION_HINT_CANDIDATES,\n\tvisualization: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),\n\tvisualizations: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES),\n\trevenue: REVENUE_COLLECTION_HINT_CANDIDATES,\n\trevenues: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tsalesrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tgrossrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tnetrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,\n\ttotalrevenue: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tinvoice: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tinvoices: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tbilling: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tbillings: REVENUE_COLLECTION_HINT_CANDIDATES,\n\taccountsreceivable: REVENUE_COLLECTION_HINT_CANDIDATES,\n\taccountsreceivables: REVENUE_COLLECTION_HINT_CANDIDATES,\n\taraging: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tinv: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tinvs: REVENUE_COLLECTION_HINT_CANDIDATES,\n\tpo: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tpos: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tpurchaseorder: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tpurchaseorders: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tporeport: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tpopending: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES,\n\tchemical: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tchemicals: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tchem: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tchems: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tblend: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tblends: CHEMICAL_COLLECTION_HINT_CANDIDATES,\n\tworkorder: WORK_ORDER_COLLECTION_HINT_CANDIDATES,\n\tworkorders: WORK_ORDER_COLLECTION_HINT_CANDIDATES,\n\two: WORK_ORDER_COLLECTION_HINT_CANDIDATES,\n\twos: WORK_ORDER_COLLECTION_HINT_CANDIDATES,\n\tcreditmemo: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,\n\tcreditmemos: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,\n\tcreditnote: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,\n\tcreditnotes: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES,\n\twidget: UI_WIDGET_COLLECTION_HINT_CANDIDATES,\n\twidgets: UI_WIDGET_COLLECTION_HINT_CANDIDATES,\n\tcollapsetable: TABLE_COLLECTION_HINT_CANDIDATES,\n\tcollapsetables: TABLE_COLLECTION_HINT_CANDIDATES,\n\tcollapsibletable: TABLE_COLLECTION_HINT_CANDIDATES,\n\tcollapsibletables: TABLE_COLLECTION_HINT_CANDIDATES,\n\texpandabletable: TABLE_COLLECTION_HINT_CANDIDATES,\n\texpandabletables: TABLE_COLLECTION_HINT_CANDIDATES,\n\tdatatable: TABLE_COLLECTION_HINT_CANDIDATES,\n\tdatatables: TABLE_COLLECTION_HINT_CANDIDATES,\n\tdatagrid: TABLE_COLLECTION_HINT_CANDIDATES,\n\tdatagrids: TABLE_COLLECTION_HINT_CANDIDATES,\n\tgridtable: TABLE_COLLECTION_HINT_CANDIDATES,\n\tgridtables: TABLE_COLLECTION_HINT_CANDIDATES,\n\tnavbar: NAV_COLLECTION_HINT_CANDIDATES,\n\tnavbars: NAV_COLLECTION_HINT_CANDIDATES,\n\tnavbarmain: NAV_COLLECTION_HINT_CANDIDATES,\n\tnavbarmodule: NAV_COLLECTION_HINT_CANDIDATES,\n\tnavigation: NAV_COLLECTION_HINT_CANDIDATES,\n\tnavigations: NAV_COLLECTION_HINT_CANDIDATES,\n\tsidebar: NAV_COLLECTION_HINT_CANDIDATES,\n\tsidebars: NAV_COLLECTION_HINT_CANDIDATES,\n\tmenu: NAV_COLLECTION_HINT_CANDIDATES,\n\tmenus: NAV_COLLECTION_HINT_CANDIDATES,\n\tmodulemenu: NAV_COLLECTION_HINT_CANDIDATES,\n\tmodulemenus: NAV_COLLECTION_HINT_CANDIDATES,\n\tsupportticket: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tsupporttickets: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\thelpdesk: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tservicedesk: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tticket: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\ttickets: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tissue: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tissues: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tbug: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tbugs: SUPPORT_COLLECTION_HINT_CANDIDATES,\n\tlogin: AUTH_COLLECTION_HINT_CANDIDATES,\n\tlogins: AUTH_COLLECTION_HINT_CANDIDATES,\n\tsignin: AUTH_COLLECTION_HINT_CANDIDATES,\n\tsignins: AUTH_COLLECTION_HINT_CANDIDATES,\n\tsigninpage: AUTH_COLLECTION_HINT_CANDIDATES,\n\tauthentication: AUTH_COLLECTION_HINT_CANDIDATES,\n\tauth: AUTH_COLLECTION_HINT_CANDIDATES,\n\tsession: AUTH_COLLECTION_HINT_CANDIDATES,\n\tsessions: AUTH_COLLECTION_HINT_CANDIDATES,\n\tpermission: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,\n\tpermissions: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,\n\trole: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,\n\troles: USER_PERMISSION_COLLECTION_HINT_CANDIDATES,\n\taccess: mergeCollectionLists(USER_PERMISSION_COLLECTION_HINT_CANDIDATES, AUTH_COLLECTION_HINT_CANDIDATES),\n\tauthorization: mergeCollectionLists(USER_PERMISSION_COLLECTION_HINT_CANDIDATES, AUTH_COLLECTION_HINT_CANDIDATES),\n\tsystem: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tsystems: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tsetting: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tsettings: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tconfig: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tconfigs: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tconfiguration: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tconfigurations: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\taudit: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\taudits: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tlog: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tlogs: SYSTEM_COLLECTION_HINT_CANDIDATES,\n\tnotification: mergeCollectionLists(SYSTEM_COLLECTION_HINT_CANDIDATES, ['user-notifications']),\n\tnotifications: mergeCollectionLists(SYSTEM_COLLECTION_HINT_CANDIDATES, ['user-notifications'])\n};\n\nconst AI_ASSISTANT_CORE_COLLECTION_ALIASES: Record<string, string> = Object.keys(AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS)\n\t.reduce((acc, key) => {\n\t\tconst options = AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS[key] || [];\n\t\tconst best = options[0];\n\t\tif (best) {\n\t\t\tacc[key] = best;\n\t\t}\n\t\treturn acc;\n\t}, {} as Record<string, string>);\n\nconst AI_ASSISTANT_CORE_DOMAIN_TERM_HINTS: AiAssistantCoreTermHint[] = [\n\t{\n\t\tterms: [\n\t\t\t'report builder',\n\t\t\t'report builder schema',\n\t\t\t'report schema',\n\t\t\t'report designer',\n\t\t\t'build report',\n\t\t\t'custom report',\n\t\t\t'report filters',\n\t\t\t'report columns',\n\t\t\t'report query'\n\t\t],\n\t\tcollections: REPORT_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'dashboard report',\n\t\t\t'dashboard widget',\n\t\t\t'analytics dashboard',\n\t\t\t'kpi dashboard',\n\t\t\t'chart dashboard'\n\t\t],\n\t\tcollections: mergeCollectionLists(REPORT_COLLECTION_HINT_CANDIDATES, UI_WIDGET_COLLECTION_HINT_CANDIDATES)\n\t},\n\t{\n\t\tterms: [\n\t\t\t'revenue',\n\t\t\t'total revenue',\n\t\t\t'gross revenue',\n\t\t\t'net revenue',\n\t\t\t'sales revenue',\n\t\t\t'billing revenue',\n\t\t\t'monthly revenue',\n\t\t\t'revenue by customer',\n\t\t\t'revenue by month',\n\t\t\t'invoice revenue',\n\t\t\t'accounts receivable',\n\t\t\t'ar aging',\n\t\t\t'open invoices',\n\t\t\t'outstanding invoices',\n\t\t\t'inv',\n\t\t\t'invs'\n\t\t],\n\t\tcollections: REVENUE_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'po',\n\t\t\t'pos',\n\t\t\t'open po',\n\t\t\t'open pos',\n\t\t\t'pending po',\n\t\t\t'purchase order',\n\t\t\t'purchase orders',\n\t\t\t'po list',\n\t\t\t'po status',\n\t\t\t'po approval',\n\t\t\t'purchase approvals',\n\t\t\t'procurement order'\n\t\t],\n\t\tcollections: PURCHASE_ORDER_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'chemical',\n\t\t\t'chemicals',\n\t\t\t'chem',\n\t\t\t'chems',\n\t\t\t'chemical inventory',\n\t\t\t'chemical blend',\n\t\t\t'blend inventory',\n\t\t\t'blend usage'\n\t\t],\n\t\tcollections: CHEMICAL_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'work order',\n\t\t\t'work orders',\n\t\t\t'workorder',\n\t\t\t'workorders',\n\t\t\t'wo',\n\t\t\t'wos',\n\t\t\t'open work orders',\n\t\t\t'completed work orders'\n\t\t],\n\t\tcollections: WORK_ORDER_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'credit memo',\n\t\t\t'credit memos',\n\t\t\t'creditmemo',\n\t\t\t'creditmemos',\n\t\t\t'credit note',\n\t\t\t'credit notes'\n\t\t],\n\t\tcollections: CREDIT_MEMO_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'support ticket',\n\t\t\t'support tickets',\n\t\t\t'help desk',\n\t\t\t'service desk',\n\t\t\t'customer issue',\n\t\t\t'issue ticket',\n\t\t\t'bug ticket'\n\t\t],\n\t\tcollections: SUPPORT_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'login issue',\n\t\t\t'cannot login',\n\t\t\t'log in failed',\n\t\t\t'sign in failed',\n\t\t\t'authentication issue',\n\t\t\t'session issue',\n\t\t\t'access denied'\n\t\t],\n\t\tcollections: mergeCollectionLists(AUTH_COLLECTION_HINT_CANDIDATES, PERMISSION_NAV_COLLECTION_HINT_CANDIDATES)\n\t},\n\t{\n\t\tterms: [\n\t\t\t'collapse table',\n\t\t\t'collapsible table',\n\t\t\t'expandable table',\n\t\t\t'collapse-table',\n\t\t\t'data table',\n\t\t\t'data-table',\n\t\t\t'datatable',\n\t\t\t'data grid',\n\t\t\t'table widget'\n\t\t],\n\t\tcollections: TABLE_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'navbar main',\n\t\t\t'main navbar',\n\t\t\t'navbar module',\n\t\t\t'module navbar',\n\t\t\t'navigation bar',\n\t\t\t'main navigation',\n\t\t\t'module navigation',\n\t\t\t'sidebar navigation',\n\t\t\t'menu bar'\n\t\t],\n\t\tcollections: NAV_COLLECTION_HINT_CANDIDATES\n\t},\n\t{\n\t\tterms: [\n\t\t\t'system settings',\n\t\t\t'system config',\n\t\t\t'system configuration',\n\t\t\t'global settings',\n\t\t\t'platform settings',\n\t\t\t'admin settings',\n\t\t\t'audit log',\n\t\t\t'activity log'\n\t\t],\n\t\tcollections: SYSTEM_COLLECTION_HINT_CANDIDATES\n\t}\n];\n\nconst AI_ASSISTANT_CORE_COLLECTION_HINT_CANDIDATES = uniqueCollections(\n\tmergeCollectionLists(\n\t\tREPORT_COLLECTION_HINT_CANDIDATES,\n\t\tSUPPORT_COLLECTION_HINT_CANDIDATES,\n\t\tAUTH_COLLECTION_HINT_CANDIDATES,\n\t\tPERMISSION_NAV_COLLECTION_HINT_CANDIDATES,\n\t\tUI_WIDGET_COLLECTION_HINT_CANDIDATES,\n\t\tSYSTEM_COLLECTION_HINT_CANDIDATES,\n\t\tTABLE_COLLECTION_HINT_CANDIDATES,\n\t\tNAV_COLLECTION_HINT_CANDIDATES,\n\t\tObject.values(AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS)\n\t\t\t.reduce((acc, group) => acc.concat(group || []), [] as string[])\n\t)\n);\n\nconst AI_ASSISTANT_CORE_COLLECTION_TERM_HINTS = buildCollectionTermHintsFromCandidates(\n\tAI_ASSISTANT_CORE_COLLECTION_HINT_CANDIDATES\n);\n\nconst AI_ASSISTANT_CORE_TERM_HINTS: AiAssistantCoreTermHint[] = [\n\t...AI_ASSISTANT_CORE_DOMAIN_TERM_HINTS,\n\t...AI_ASSISTANT_CORE_COLLECTION_TERM_HINTS\n].map((entry) => ({\n\tterms: uniqueStrings(entry.terms || []),\n\tcollections: uniqueCollections(entry.collections || [])\n})).filter((entry) => entry.terms.length && entry.collections.length);\n\nexport const AI_ASSISTANT_CORE_HEURISTICS = Object.freeze({\n\tversion: 2,\n\tcollection_aliases: AI_ASSISTANT_CORE_COLLECTION_ALIASES,\n\tcollection_alias_options: AI_ASSISTANT_CORE_COLLECTION_ALIAS_OPTIONS,\n\tcollection_term_hints: AI_ASSISTANT_CORE_TERM_HINTS\n});\n"]}
@@ -41,12 +41,24 @@ var cron_job_collection_1 = require("../collections/cron-job.collection");
41
41
  var common_1 = require("../util/common");
42
42
  var AI_USAGE_SYNC_JOB_NAME = 'AI Usage Billing Sync';
43
43
  var LEGACY_AI_USAGE_SYNC_JOB_NAME = 'OpenAI Usage Billing Sync';
44
+ function shouldSkipServerFixtureWrites() {
45
+ var readonlyFlag = String(process.env.AI_ASSISTANT_READONLY_MONGO || '').trim().toLowerCase();
46
+ if (readonlyFlag === 'true' || readonlyFlag === '1' || readonlyFlag === 'yes') {
47
+ return true;
48
+ }
49
+ var mongoUrl = String(process.env.MONGO_URL || '').trim().toLowerCase();
50
+ return mongoUrl.includes('mongodb://readonly:');
51
+ }
44
52
  function loadServerCronJobs() {
45
53
  return __awaiter(this, void 0, void 0, function () {
46
54
  var cronJobs, aiUsageSyncJob;
47
55
  return __generator(this, function (_a) {
48
56
  switch (_a.label) {
49
- case 0: return [4 /*yield*/, cron_job_collection_1.CronJobs.find({})];
57
+ case 0:
58
+ if (shouldSkipServerFixtureWrites()) {
59
+ return [2 /*return*/];
60
+ }
61
+ return [4 /*yield*/, cron_job_collection_1.CronJobs.find({})];
50
62
  case 1:
51
63
  cronJobs = _a.sent();
52
64
  if (!!cronJobs.some(function (a) { return a.name === 'Email Merged Docs Cleanup'; })) return [3 /*break*/, 3];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fixtures/cron-jobs.ts"],"names":[],"mappings":"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","file":"cron-jobs.js","sourcesContent":["import { CronJobs } from '../collections/cron-job.collection';\nimport { objectIdHexString } from '../util/common';\n\nconst AI_USAGE_SYNC_JOB_NAME = 'AI Usage Billing Sync';\nconst LEGACY_AI_USAGE_SYNC_JOB_NAME = 'OpenAI Usage Billing Sync';\n\nexport async function loadServerCronJobs() {\n\t\n\tlet cronJobs = await CronJobs.find({});\n\n\tif (!cronJobs.some(a => a.name === 'Email Merged Docs Cleanup')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Email Merged Docs Cleanup', \n\t\t\trepeat : true, \n\t\t\ttime_to_run : '0 0 * * *', \n\t\t\tmethod_run : 'cronEmailMergedDocsCleanUp', \n\t\t\tmethod_run_data : null, \n\t\t\tnext_run : new Date(), \n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tif (!cronJobs.some(a => a.name === 'Stuck Cron Job')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Stuck Cron Job', \n\t\t\trepeat : true, \n\t\t\ttime_to_run : '*/5 * * * *', \n\t\t\tmethod_run : 'stuckCronJob', \n\t\t\tmethod_run_data : null, \n\t\t\tnext_run : new Date(), \n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tconst aiUsageSyncJob = cronJobs.find(\n\t\ta => a.name === AI_USAGE_SYNC_JOB_NAME || a.name === LEGACY_AI_USAGE_SYNC_JOB_NAME\n\t);\n\tif (!aiUsageSyncJob) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : AI_USAGE_SYNC_JOB_NAME,\n\t\t\trepeat : true,\n\t\t\ttime_to_run : '0 * * * *',\n\t\t\tmethod_run : 'cronOpenAIUsageBillingSync',\n\t\t\tmethod_run_data : {},\n\t\t\tnext_run : new Date(),\n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\telse if (aiUsageSyncJob.name === LEGACY_AI_USAGE_SYNC_JOB_NAME) {\n\t\tawait CronJobs.updateOne(\n\t\t\t{ _id: aiUsageSyncJob._id },\n\t\t\t{ $set: { name: AI_USAGE_SYNC_JOB_NAME } }\n\t\t);\n\t}\n\n\tif (!cronJobs.some(a => a.name === 'Communication Metrics Sync')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Communication Metrics Sync',\n\t\t\trepeat : true,\n\t\t\ttime_to_run : '15 * * * *',\n\t\t\tmethod_run : 'cronCommunicationMetricsSync',\n\t\t\tmethod_run_data : {},\n\t\t\tnext_run : new Date(),\n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tif (cronJobs.some(a => a.running)) {\n\t\tawait CronJobs.updateMany({running: true}, {$set: {running: false}});\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/fixtures/cron-jobs.ts"],"names":[],"mappings":"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","file":"cron-jobs.js","sourcesContent":["import { CronJobs } from '../collections/cron-job.collection';\nimport { objectIdHexString } from '../util/common';\n\nconst AI_USAGE_SYNC_JOB_NAME = 'AI Usage Billing Sync';\nconst LEGACY_AI_USAGE_SYNC_JOB_NAME = 'OpenAI Usage Billing Sync';\n\nfunction shouldSkipServerFixtureWrites(): boolean {\n\tconst readonlyFlag = String(process.env.AI_ASSISTANT_READONLY_MONGO || '').trim().toLowerCase();\n\tif (readonlyFlag === 'true' || readonlyFlag === '1' || readonlyFlag === 'yes') {\n\t\treturn true;\n\t}\n\tconst mongoUrl = String(process.env.MONGO_URL || '').trim().toLowerCase();\n\treturn mongoUrl.includes('mongodb://readonly:');\n}\n\nexport async function loadServerCronJobs() {\n\tif (shouldSkipServerFixtureWrites()) {\n\t\treturn;\n\t}\n\t\n\tlet cronJobs = await CronJobs.find({});\n\n\tif (!cronJobs.some(a => a.name === 'Email Merged Docs Cleanup')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Email Merged Docs Cleanup', \n\t\t\trepeat : true, \n\t\t\ttime_to_run : '0 0 * * *', \n\t\t\tmethod_run : 'cronEmailMergedDocsCleanUp', \n\t\t\tmethod_run_data : null, \n\t\t\tnext_run : new Date(), \n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tif (!cronJobs.some(a => a.name === 'Stuck Cron Job')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Stuck Cron Job', \n\t\t\trepeat : true, \n\t\t\ttime_to_run : '*/5 * * * *', \n\t\t\tmethod_run : 'stuckCronJob', \n\t\t\tmethod_run_data : null, \n\t\t\tnext_run : new Date(), \n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tconst aiUsageSyncJob = cronJobs.find(\n\t\ta => a.name === AI_USAGE_SYNC_JOB_NAME || a.name === LEGACY_AI_USAGE_SYNC_JOB_NAME\n\t);\n\tif (!aiUsageSyncJob) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : AI_USAGE_SYNC_JOB_NAME,\n\t\t\trepeat : true,\n\t\t\ttime_to_run : '0 * * * *',\n\t\t\tmethod_run : 'cronOpenAIUsageBillingSync',\n\t\t\tmethod_run_data : {},\n\t\t\tnext_run : new Date(),\n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\telse if (aiUsageSyncJob.name === LEGACY_AI_USAGE_SYNC_JOB_NAME) {\n\t\tawait CronJobs.updateOne(\n\t\t\t{ _id: aiUsageSyncJob._id },\n\t\t\t{ $set: { name: AI_USAGE_SYNC_JOB_NAME } }\n\t\t);\n\t}\n\n\tif (!cronJobs.some(a => a.name === 'Communication Metrics Sync')) {\n\t\tawait CronJobs.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tname : 'Communication Metrics Sync',\n\t\t\trepeat : true,\n\t\t\ttime_to_run : '15 * * * *',\n\t\t\tmethod_run : 'cronCommunicationMetricsSync',\n\t\t\tmethod_run_data : {},\n\t\t\tnext_run : new Date(),\n\t\t\trunning : false,\n\t\t\ttimezone: process.env.TZ_CLIENT || 'America/Chicago'\n\t\t});\n\t}\n\n\tif (cronJobs.some(a => a.running)) {\n\t\tawait CronJobs.updateMany({running: true}, {$set: {running: false}});\n\t}\n}\n"]}