@resolveio/server-lib 22.2.18 → 22.2.19

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,2 @@
1
+ import { MethodManager } from '../managers/method.manager';
2
+ export declare function loadDiagnosticMethods(methodManager: MethodManager): void;
@@ -0,0 +1,514 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __read = (this && this.__read) || function (o, n) {
39
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
40
+ if (!m) return o;
41
+ var i = m.call(o), r, ar = [], e;
42
+ try {
43
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
+ }
45
+ catch (error) { e = { error: error }; }
46
+ finally {
47
+ try {
48
+ if (r && !r.done && (m = i["return"])) m.call(i);
49
+ }
50
+ finally { if (e) throw e.error; }
51
+ }
52
+ return ar;
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.loadDiagnosticMethods = loadDiagnosticMethods;
56
+ var simpl_schema_1 = require("simpl-schema");
57
+ var user_collection_1 = require("../collections/user.collection");
58
+ var resolveio_server_app_1 = require("../resolveio-server-app");
59
+ var MAX_LIST_LIMIT = 250;
60
+ var DEFAULT_LIST_LIMIT = 50;
61
+ function normalizeString(value, maxLength) {
62
+ if (maxLength === void 0) { maxLength = 500; }
63
+ var normalized = String(value || '').trim();
64
+ if (!normalized) {
65
+ return '';
66
+ }
67
+ if (normalized.length <= maxLength) {
68
+ return normalized;
69
+ }
70
+ return normalized.slice(0, maxLength);
71
+ }
72
+ function normalizeBoolean(value) {
73
+ if (typeof value === 'boolean') {
74
+ return value;
75
+ }
76
+ if (typeof value === 'string') {
77
+ var normalized = value.trim().toLowerCase();
78
+ if (['true', '1', 'yes', 'y'].includes(normalized)) {
79
+ return true;
80
+ }
81
+ if (['false', '0', 'no', 'n'].includes(normalized)) {
82
+ return false;
83
+ }
84
+ }
85
+ return undefined;
86
+ }
87
+ function normalizeLimit(value) {
88
+ var parsed = Number(value);
89
+ if (!Number.isFinite(parsed) || parsed <= 0) {
90
+ return DEFAULT_LIST_LIMIT;
91
+ }
92
+ return Math.min(Math.floor(parsed), MAX_LIST_LIMIT);
93
+ }
94
+ function normalizeSkip(value) {
95
+ var parsed = Number(value);
96
+ if (!Number.isFinite(parsed) || parsed < 0) {
97
+ return 0;
98
+ }
99
+ return Math.floor(parsed);
100
+ }
101
+ function normalizeSortDirection(value) {
102
+ var normalized = normalizeString(value, 10).toLowerCase();
103
+ return normalized === 'asc' ? 1 : -1;
104
+ }
105
+ function escapeRegex(value) {
106
+ return String(value || '').replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
107
+ }
108
+ function assertSuperAdmin(context) {
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ var idUser, user;
111
+ var _a, _b, _c, _d, _e;
112
+ return __generator(this, function (_f) {
113
+ switch (_f.label) {
114
+ case 0:
115
+ if ((context === null || context === void 0 ? void 0 : context.user) === 'Internal System') {
116
+ return [2 /*return*/];
117
+ }
118
+ if ((_b = (_a = context === null || context === void 0 ? void 0 : context.user) === null || _a === void 0 ? void 0 : _a.roles) === null || _b === void 0 ? void 0 : _b.super_admin) {
119
+ return [2 /*return*/];
120
+ }
121
+ idUser = normalizeString((context === null || context === void 0 ? void 0 : context.id_user)
122
+ || (context === null || context === void 0 ? void 0 : context.idUser)
123
+ || ((_c = context === null || context === void 0 ? void 0 : context.user) === null || _c === void 0 ? void 0 : _c._id)
124
+ || ((_d = context === null || context === void 0 ? void 0 : context.user) === null || _d === void 0 ? void 0 : _d.id_user));
125
+ if (!idUser) {
126
+ throw new Error('Only super admins can access diagnostics.');
127
+ }
128
+ return [4 /*yield*/, user_collection_1.Users.findById(idUser, {
129
+ projection: {
130
+ _id: 1,
131
+ roles: 1
132
+ }
133
+ })];
134
+ case 1:
135
+ user = _f.sent();
136
+ if (!((_e = user === null || user === void 0 ? void 0 : user.roles) === null || _e === void 0 ? void 0 : _e.super_admin)) {
137
+ throw new Error('Only super admins can access diagnostics.');
138
+ }
139
+ return [2 /*return*/];
140
+ }
141
+ });
142
+ });
143
+ }
144
+ function resolveSortField(value, allowedFields, fallback) {
145
+ var normalized = normalizeString(value, 80);
146
+ if (!normalized) {
147
+ return fallback;
148
+ }
149
+ if (allowedFields.includes(normalized)) {
150
+ return normalized;
151
+ }
152
+ return fallback;
153
+ }
154
+ function buildAutoFixSearchQuery(payload) {
155
+ var query = {};
156
+ var andClauses = [];
157
+ var status = normalizeString(payload === null || payload === void 0 ? void 0 : payload.status, 40).toLowerCase();
158
+ var sourceType = normalizeString(payload === null || payload === void 0 ? void 0 : payload.sourceType, 40).toLowerCase();
159
+ var ignored = normalizeBoolean(payload === null || payload === void 0 ? void 0 : payload.ignored);
160
+ var hasPr = normalizeBoolean(payload === null || payload === void 0 ? void 0 : payload.hasPr);
161
+ if (status && status !== 'all') {
162
+ andClauses.push({ status: status });
163
+ }
164
+ if (sourceType && sourceType !== 'all') {
165
+ andClauses.push({ source_type: sourceType });
166
+ }
167
+ if (typeof ignored === 'boolean') {
168
+ andClauses.push({ ignored: ignored });
169
+ }
170
+ if (typeof hasPr === 'boolean') {
171
+ if (hasPr) {
172
+ andClauses.push({ pr_url: { $exists: true, $nin: ['', null] } });
173
+ }
174
+ else {
175
+ andClauses.push({
176
+ $or: [
177
+ { pr_url: { $exists: false } },
178
+ { pr_url: '' },
179
+ { pr_url: null }
180
+ ]
181
+ });
182
+ }
183
+ }
184
+ var search = normalizeString(payload === null || payload === void 0 ? void 0 : payload.search, 160);
185
+ if (search) {
186
+ var searchRegex = {
187
+ $regex: escapeRegex(search),
188
+ $options: 'i'
189
+ };
190
+ andClauses.push({
191
+ $or: [
192
+ { subject: searchRegex },
193
+ { status: searchRegex },
194
+ { client_name: searchRegex },
195
+ { source_type: searchRegex },
196
+ { source_app: searchRegex },
197
+ { source_environment: searchRegex },
198
+ { severity: searchRegex },
199
+ { branch_name: searchRegex },
200
+ { pr_url: searchRegex },
201
+ { openai_task_id: searchRegex },
202
+ { plan_summary: searchRegex },
203
+ { last_error: searchRegex },
204
+ { autofix_error_count_string: searchRegex }
205
+ ]
206
+ });
207
+ }
208
+ if (!andClauses.length) {
209
+ return query;
210
+ }
211
+ if (andClauses.length === 1) {
212
+ return andClauses[0];
213
+ }
214
+ query.$and = andClauses;
215
+ return query;
216
+ }
217
+ function buildSlowQuerySearchQuery(payload) {
218
+ var query = {};
219
+ var andClauses = [];
220
+ var status = normalizeString(payload === null || payload === void 0 ? void 0 : payload.status, 40).toLowerCase();
221
+ var verificationStatus = normalizeString(payload === null || payload === void 0 ? void 0 : payload.verificationStatus, 40).toLowerCase();
222
+ var ignored = normalizeBoolean(payload === null || payload === void 0 ? void 0 : payload.ignored);
223
+ var collection = normalizeString(payload === null || payload === void 0 ? void 0 : payload.collection, 120);
224
+ var environment = normalizeString(payload === null || payload === void 0 ? void 0 : payload.environment, 120);
225
+ var clientSlug = normalizeString(payload === null || payload === void 0 ? void 0 : payload.clientSlug, 120);
226
+ var minDurationMs = Number(payload === null || payload === void 0 ? void 0 : payload.minDurationMs);
227
+ if (status && status !== 'all') {
228
+ andClauses.push({ status: status });
229
+ }
230
+ if (verificationStatus && verificationStatus !== 'all') {
231
+ andClauses.push({ verification_status: verificationStatus });
232
+ }
233
+ if (typeof ignored === 'boolean') {
234
+ andClauses.push({ ignored: ignored });
235
+ }
236
+ if (collection) {
237
+ andClauses.push({ collection: collection });
238
+ }
239
+ if (environment) {
240
+ andClauses.push({ environment: environment });
241
+ }
242
+ if (clientSlug) {
243
+ andClauses.push({ client_slug: clientSlug });
244
+ }
245
+ if (Number.isFinite(minDurationMs) && minDurationMs > 0) {
246
+ andClauses.push({
247
+ duration_ms: {
248
+ $gte: Math.floor(minDurationMs)
249
+ }
250
+ });
251
+ }
252
+ var search = normalizeString(payload === null || payload === void 0 ? void 0 : payload.search, 160);
253
+ if (search) {
254
+ var searchRegex = {
255
+ $regex: escapeRegex(search),
256
+ $options: 'i'
257
+ };
258
+ andClauses.push({
259
+ $or: [
260
+ { query_hash: searchRegex },
261
+ { collection: searchRegex },
262
+ { client_slug: searchRegex },
263
+ { client_name: searchRegex },
264
+ { source_app: searchRegex },
265
+ { environment: searchRegex },
266
+ { node_hostname: searchRegex },
267
+ { verification_notes: searchRegex },
268
+ { openai_task_id: searchRegex },
269
+ { slow_query_count_string: searchRegex }
270
+ ]
271
+ });
272
+ }
273
+ if (!andClauses.length) {
274
+ return query;
275
+ }
276
+ if (andClauses.length === 1) {
277
+ return andClauses[0];
278
+ }
279
+ query.$and = andClauses;
280
+ return query;
281
+ }
282
+ function getCollection(name) {
283
+ var db = resolveio_server_app_1.ResolveIOServer.getMainDB();
284
+ if (!db) {
285
+ throw new Error('Main DB is not available.');
286
+ }
287
+ return db.collection(name);
288
+ }
289
+ function loadDiagnosticMethods(methodManager) {
290
+ methodManager.methods({
291
+ superAdminListAutoFixLogs: {
292
+ check: new simpl_schema_1.default({
293
+ payload: {
294
+ type: Object,
295
+ optional: true,
296
+ blackbox: true
297
+ }
298
+ }),
299
+ function: function () {
300
+ return __awaiter(this, arguments, void 0, function (payload) {
301
+ var query, limit, skip, sortField, sortDirection, sort, collection, _a, items, total;
302
+ var _b;
303
+ if (payload === void 0) { payload = {}; }
304
+ return __generator(this, function (_c) {
305
+ switch (_c.label) {
306
+ case 0: return [4 /*yield*/, assertSuperAdmin(this)];
307
+ case 1:
308
+ _c.sent();
309
+ query = buildAutoFixSearchQuery(payload);
310
+ limit = normalizeLimit(payload === null || payload === void 0 ? void 0 : payload.limit);
311
+ skip = normalizeSkip(payload === null || payload === void 0 ? void 0 : payload.skip);
312
+ sortField = resolveSortField(payload === null || payload === void 0 ? void 0 : payload.sortField, [
313
+ 'createdAt',
314
+ 'updatedAt',
315
+ 'status',
316
+ 'duplicate_count',
317
+ 'attempt_count',
318
+ 'last_attempt_at',
319
+ 'last_result_at',
320
+ 'last_reported_at',
321
+ 'autofix_error_count'
322
+ ], 'last_reported_at');
323
+ sortDirection = normalizeSortDirection(payload === null || payload === void 0 ? void 0 : payload.sortDirection);
324
+ sort = (_b = {},
325
+ _b[sortField] = sortDirection,
326
+ _b.updatedAt = -1,
327
+ _b);
328
+ collection = getCollection('error-autofix-logs');
329
+ return [4 /*yield*/, Promise.all([
330
+ collection.find(query).sort(sort).skip(skip).limit(limit).toArray(),
331
+ collection.countDocuments(query)
332
+ ])];
333
+ case 2:
334
+ _a = __read.apply(void 0, [_c.sent(), 2]), items = _a[0], total = _a[1];
335
+ return [2 /*return*/, {
336
+ items: items,
337
+ total: total,
338
+ limit: limit,
339
+ skip: skip
340
+ }];
341
+ }
342
+ });
343
+ });
344
+ }
345
+ },
346
+ superAdminRunAutoFixLog: {
347
+ check: new simpl_schema_1.default({
348
+ logId: {
349
+ type: String
350
+ }
351
+ }),
352
+ function: function (logId) {
353
+ return __awaiter(this, void 0, void 0, function () {
354
+ var manager, result;
355
+ var _a, _b, _c, _d;
356
+ return __generator(this, function (_e) {
357
+ switch (_e.label) {
358
+ case 0: return [4 /*yield*/, assertSuperAdmin(this)];
359
+ case 1:
360
+ _e.sent();
361
+ manager = resolveio_server_app_1.ResolveIOServer['AutoFixManager'];
362
+ if (!manager || typeof manager.runLog !== 'function') {
363
+ throw new Error('Auto-fix manager is not available.');
364
+ }
365
+ return [4 /*yield*/, manager.runLog(logId)];
366
+ case 2:
367
+ result = _e.sent();
368
+ return [2 /*return*/, {
369
+ status: (result === null || result === void 0 ? void 0 : result.status) || 'unknown',
370
+ reason: (result === null || result === void 0 ? void 0 : result.reason) || '',
371
+ error: (result === null || result === void 0 ? void 0 : result.error) || '',
372
+ logId: ((_a = result === null || result === void 0 ? void 0 : result.log) === null || _a === void 0 ? void 0 : _a._id) || logId,
373
+ branchName: (result === null || result === void 0 ? void 0 : result.branchName) || ((_b = result === null || result === void 0 ? void 0 : result.log) === null || _b === void 0 ? void 0 : _b.branch_name) || '',
374
+ prUrl: (result === null || result === void 0 ? void 0 : result.prUrl) || ((_c = result === null || result === void 0 ? void 0 : result.log) === null || _c === void 0 ? void 0 : _c.pr_url) || '',
375
+ taskId: ((_d = result === null || result === void 0 ? void 0 : result.log) === null || _d === void 0 ? void 0 : _d.openai_task_id) || ''
376
+ }];
377
+ }
378
+ });
379
+ });
380
+ }
381
+ },
382
+ superAdminListSlowQueryLogs: {
383
+ check: new simpl_schema_1.default({
384
+ payload: {
385
+ type: Object,
386
+ optional: true,
387
+ blackbox: true
388
+ }
389
+ }),
390
+ function: function () {
391
+ return __awaiter(this, arguments, void 0, function (payload) {
392
+ var query, limit, skip, sortField, sortDirection, sort, collection, _a, items, total;
393
+ var _b;
394
+ if (payload === void 0) { payload = {}; }
395
+ return __generator(this, function (_c) {
396
+ switch (_c.label) {
397
+ case 0: return [4 /*yield*/, assertSuperAdmin(this)];
398
+ case 1:
399
+ _c.sent();
400
+ query = buildSlowQuerySearchQuery(payload);
401
+ limit = normalizeLimit(payload === null || payload === void 0 ? void 0 : payload.limit);
402
+ skip = normalizeSkip(payload === null || payload === void 0 ? void 0 : payload.skip);
403
+ sortField = resolveSortField(payload === null || payload === void 0 ? void 0 : payload.sortField, [
404
+ 'createdAt',
405
+ 'updatedAt',
406
+ 'collection',
407
+ 'status',
408
+ 'verification_status',
409
+ 'duration_ms',
410
+ 'avg_duration_ms',
411
+ 'max_duration_ms',
412
+ 'occurrences',
413
+ 'last_seen_at',
414
+ 'slow_query_count'
415
+ ], 'last_seen_at');
416
+ sortDirection = normalizeSortDirection(payload === null || payload === void 0 ? void 0 : payload.sortDirection);
417
+ sort = (_b = {},
418
+ _b[sortField] = sortDirection,
419
+ _b.updatedAt = -1,
420
+ _b);
421
+ collection = getCollection('slow-query-logs');
422
+ return [4 /*yield*/, Promise.all([
423
+ collection.find(query).sort(sort).skip(skip).limit(limit).toArray(),
424
+ collection.countDocuments(query)
425
+ ])];
426
+ case 2:
427
+ _a = __read.apply(void 0, [_c.sent(), 2]), items = _a[0], total = _a[1];
428
+ return [2 /*return*/, {
429
+ items: items,
430
+ total: total,
431
+ limit: limit,
432
+ skip: skip
433
+ }];
434
+ }
435
+ });
436
+ });
437
+ }
438
+ },
439
+ superAdminRunSlowQueryLog: {
440
+ check: new simpl_schema_1.default({
441
+ logId: {
442
+ type: String
443
+ }
444
+ }),
445
+ function: function (logId) {
446
+ return __awaiter(this, void 0, void 0, function () {
447
+ var verifier, result;
448
+ var _a, _b, _c;
449
+ return __generator(this, function (_d) {
450
+ switch (_d.label) {
451
+ case 0: return [4 /*yield*/, assertSuperAdmin(this)];
452
+ case 1:
453
+ _d.sent();
454
+ verifier = resolveio_server_app_1.ResolveIOServer['SlowQueryVerifier'];
455
+ if (!verifier || typeof verifier.queueLogRun !== 'function') {
456
+ throw new Error('Slow query verifier is not available.');
457
+ }
458
+ return [4 /*yield*/, verifier.queueLogRun(logId, {
459
+ force: true
460
+ })];
461
+ case 2:
462
+ result = _d.sent();
463
+ return [2 /*return*/, {
464
+ status: (result === null || result === void 0 ? void 0 : result.status) || 'unknown',
465
+ reason: (result === null || result === void 0 ? void 0 : result.reason) || '',
466
+ logId: ((_a = result === null || result === void 0 ? void 0 : result.log) === null || _a === void 0 ? void 0 : _a._id) || logId,
467
+ taskId: ((_b = result === null || result === void 0 ? void 0 : result.log) === null || _b === void 0 ? void 0 : _b.openai_task_id) || '',
468
+ notes: ((_c = result === null || result === void 0 ? void 0 : result.log) === null || _c === void 0 ? void 0 : _c.verification_notes) || (result === null || result === void 0 ? void 0 : result.reason) || ''
469
+ }];
470
+ }
471
+ });
472
+ });
473
+ }
474
+ },
475
+ superAdminDeploySlowQueryLog: {
476
+ check: new simpl_schema_1.default({
477
+ logId: {
478
+ type: String
479
+ }
480
+ }),
481
+ function: function (logId) {
482
+ return __awaiter(this, void 0, void 0, function () {
483
+ var verifier, result;
484
+ var _a, _b, _c, _d, _e, _f, _g;
485
+ return __generator(this, function (_h) {
486
+ switch (_h.label) {
487
+ case 0: return [4 /*yield*/, assertSuperAdmin(this)];
488
+ case 1:
489
+ _h.sent();
490
+ verifier = resolveio_server_app_1.ResolveIOServer['SlowQueryVerifier'];
491
+ if (!verifier || typeof verifier.deployLog !== 'function') {
492
+ throw new Error('Slow query verifier is not available.');
493
+ }
494
+ return [4 /*yield*/, verifier.deployLog(logId)];
495
+ case 2:
496
+ result = _h.sent();
497
+ return [2 /*return*/, {
498
+ status: (result === null || result === void 0 ? void 0 : result.status) || 'unknown',
499
+ reason: (result === null || result === void 0 ? void 0 : result.reason) || '',
500
+ logId: ((_a = result === null || result === void 0 ? void 0 : result.log) === null || _a === void 0 ? void 0 : _a._id) || logId,
501
+ taskId: ((_b = result === null || result === void 0 ? void 0 : result.log) === null || _b === void 0 ? void 0 : _b.openai_task_id) || '',
502
+ notes: ((_c = result === null || result === void 0 ? void 0 : result.log) === null || _c === void 0 ? void 0 : _c.verification_notes) || (result === null || result === void 0 ? void 0 : result.reason) || '',
503
+ branchName: ((_e = (_d = result === null || result === void 0 ? void 0 : result.log) === null || _d === void 0 ? void 0 : _d.auto_fix_result) === null || _e === void 0 ? void 0 : _e.publish_branch) || '',
504
+ publishMessage: ((_g = (_f = result === null || result === void 0 ? void 0 : result.log) === null || _f === void 0 ? void 0 : _f.auto_fix_result) === null || _g === void 0 ? void 0 : _g.publish_message) || ''
505
+ }];
506
+ }
507
+ });
508
+ });
509
+ }
510
+ }
511
+ });
512
+ }
513
+
514
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/methods/diagnostics.ts"],"names":[],"mappings":"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","file":"diagnostics.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { ResolveIOServer } from '../resolveio-server-app';\n\nconst MAX_LIST_LIMIT = 250;\nconst DEFAULT_LIST_LIMIT = 50;\n\ntype SortDirection = 1 | -1;\n\nfunction normalizeString(value: any, maxLength = 500): string {\n\tconst normalized = String(value || '').trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\treturn normalized.slice(0, maxLength);\n}\n\nfunction normalizeBoolean(value: any): boolean | undefined {\n\tif (typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst normalized = value.trim().toLowerCase();\n\t\tif (['true', '1', 'yes', 'y'].includes(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n'].includes(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction normalizeLimit(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn DEFAULT_LIST_LIMIT;\n\t}\n\treturn Math.min(Math.floor(parsed), MAX_LIST_LIMIT);\n}\n\nfunction normalizeSkip(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed < 0) {\n\t\treturn 0;\n\t}\n\treturn Math.floor(parsed);\n}\n\nfunction normalizeSortDirection(value: any): SortDirection {\n\tconst normalized = normalizeString(value, 10).toLowerCase();\n\treturn normalized === 'asc' ? 1 : -1;\n}\n\nfunction escapeRegex(value: string): string {\n\treturn String(value || '').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nasync function assertSuperAdmin(context: any): Promise<void> {\n\tif (context?.user === 'Internal System') {\n\t\treturn;\n\t}\n\n\tif (context?.user?.roles?.super_admin) {\n\t\treturn;\n\t}\n\n\tconst idUser = normalizeString(\n\t\tcontext?.id_user\n\t\t\t|| context?.idUser\n\t\t\t|| context?.user?._id\n\t\t\t|| context?.user?.id_user\n\t);\n\n\tif (!idUser) {\n\t\tthrow new Error('Only super admins can access diagnostics.');\n\t}\n\n\tconst user = await Users.findById(idUser, {\n\t\tprojection: {\n\t\t\t_id: 1,\n\t\t\troles: 1\n\t\t}\n\t});\n\n\tif (!user?.roles?.super_admin) {\n\t\tthrow new Error('Only super admins can access diagnostics.');\n\t}\n}\n\nfunction resolveSortField(value: string, allowedFields: string[], fallback: string): string {\n\tconst normalized = normalizeString(value, 80);\n\tif (!normalized) {\n\t\treturn fallback;\n\t}\n\tif (allowedFields.includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn fallback;\n}\n\nfunction buildAutoFixSearchQuery(payload: Record<string, any>): Record<string, any> {\n\tconst query: Record<string, any> = {};\n\tconst andClauses: Record<string, any>[] = [];\n\tconst status = normalizeString(payload?.status, 40).toLowerCase();\n\tconst sourceType = normalizeString(payload?.sourceType, 40).toLowerCase();\n\tconst ignored = normalizeBoolean(payload?.ignored);\n\tconst hasPr = normalizeBoolean(payload?.hasPr);\n\n\tif (status && status !== 'all') {\n\t\tandClauses.push({status});\n\t}\n\n\tif (sourceType && sourceType !== 'all') {\n\t\tandClauses.push({source_type: sourceType});\n\t}\n\n\tif (typeof ignored === 'boolean') {\n\t\tandClauses.push({ignored});\n\t}\n\n\tif (typeof hasPr === 'boolean') {\n\t\tif (hasPr) {\n\t\t\tandClauses.push({pr_url: {$exists: true, $nin: ['', null]}});\n\t\t}\n\t\telse {\n\t\t\tandClauses.push({\n\t\t\t\t$or: [\n\t\t\t\t\t{pr_url: {$exists: false}},\n\t\t\t\t\t{pr_url: ''},\n\t\t\t\t\t{pr_url: null}\n\t\t\t\t]\n\t\t\t});\n\t\t}\n\t}\n\n\tconst search = normalizeString(payload?.search, 160);\n\tif (search) {\n\t\tconst searchRegex = {\n\t\t\t$regex: escapeRegex(search),\n\t\t\t$options: 'i'\n\t\t};\n\n\t\tandClauses.push({\n\t\t\t$or: [\n\t\t\t\t{subject: searchRegex},\n\t\t\t\t{status: searchRegex},\n\t\t\t\t{client_name: searchRegex},\n\t\t\t\t{source_type: searchRegex},\n\t\t\t\t{source_app: searchRegex},\n\t\t\t\t{source_environment: searchRegex},\n\t\t\t\t{severity: searchRegex},\n\t\t\t\t{branch_name: searchRegex},\n\t\t\t\t{pr_url: searchRegex},\n\t\t\t\t{openai_task_id: searchRegex},\n\t\t\t\t{plan_summary: searchRegex},\n\t\t\t\t{last_error: searchRegex},\n\t\t\t\t{autofix_error_count_string: searchRegex}\n\t\t\t]\n\t\t});\n\t}\n\n\tif (!andClauses.length) {\n\t\treturn query;\n\t}\n\n\tif (andClauses.length === 1) {\n\t\treturn andClauses[0];\n\t}\n\n\tquery.$and = andClauses;\n\treturn query;\n}\n\nfunction buildSlowQuerySearchQuery(payload: Record<string, any>): Record<string, any> {\n\tconst query: Record<string, any> = {};\n\tconst andClauses: Record<string, any>[] = [];\n\tconst status = normalizeString(payload?.status, 40).toLowerCase();\n\tconst verificationStatus = normalizeString(payload?.verificationStatus, 40).toLowerCase();\n\tconst ignored = normalizeBoolean(payload?.ignored);\n\tconst collection = normalizeString(payload?.collection, 120);\n\tconst environment = normalizeString(payload?.environment, 120);\n\tconst clientSlug = normalizeString(payload?.clientSlug, 120);\n\tconst minDurationMs = Number(payload?.minDurationMs);\n\n\tif (status && status !== 'all') {\n\t\tandClauses.push({status});\n\t}\n\n\tif (verificationStatus && verificationStatus !== 'all') {\n\t\tandClauses.push({verification_status: verificationStatus});\n\t}\n\n\tif (typeof ignored === 'boolean') {\n\t\tandClauses.push({ignored});\n\t}\n\n\tif (collection) {\n\t\tandClauses.push({collection});\n\t}\n\n\tif (environment) {\n\t\tandClauses.push({environment});\n\t}\n\n\tif (clientSlug) {\n\t\tandClauses.push({client_slug: clientSlug});\n\t}\n\n\tif (Number.isFinite(minDurationMs) && minDurationMs > 0) {\n\t\tandClauses.push({\n\t\t\tduration_ms: {\n\t\t\t\t$gte: Math.floor(minDurationMs)\n\t\t\t}\n\t\t});\n\t}\n\n\tconst search = normalizeString(payload?.search, 160);\n\tif (search) {\n\t\tconst searchRegex = {\n\t\t\t$regex: escapeRegex(search),\n\t\t\t$options: 'i'\n\t\t};\n\n\t\tandClauses.push({\n\t\t\t$or: [\n\t\t\t\t{query_hash: searchRegex},\n\t\t\t\t{collection: searchRegex},\n\t\t\t\t{client_slug: searchRegex},\n\t\t\t\t{client_name: searchRegex},\n\t\t\t\t{source_app: searchRegex},\n\t\t\t\t{environment: searchRegex},\n\t\t\t\t{node_hostname: searchRegex},\n\t\t\t\t{verification_notes: searchRegex},\n\t\t\t\t{openai_task_id: searchRegex},\n\t\t\t\t{slow_query_count_string: searchRegex}\n\t\t\t]\n\t\t});\n\t}\n\n\tif (!andClauses.length) {\n\t\treturn query;\n\t}\n\n\tif (andClauses.length === 1) {\n\t\treturn andClauses[0];\n\t}\n\n\tquery.$and = andClauses;\n\treturn query;\n}\n\nfunction getCollection(name: string) {\n\tconst db = ResolveIOServer.getMainDB();\n\tif (!db) {\n\t\tthrow new Error('Main DB is not available.');\n\t}\n\n\treturn db.collection(name);\n}\n\nexport function loadDiagnosticMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tsuperAdminListAutoFixLogs: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload: Record<string, any> = {}) {\n\t\t\t\tawait assertSuperAdmin(this);\n\n\t\t\t\tconst query = buildAutoFixSearchQuery(payload);\n\t\t\t\tconst limit = normalizeLimit(payload?.limit);\n\t\t\t\tconst skip = normalizeSkip(payload?.skip);\n\t\t\t\tconst sortField = resolveSortField(\n\t\t\t\t\tpayload?.sortField,\n\t\t\t\t\t[\n\t\t\t\t\t\t'createdAt',\n\t\t\t\t\t\t'updatedAt',\n\t\t\t\t\t\t'status',\n\t\t\t\t\t\t'duplicate_count',\n\t\t\t\t\t\t'attempt_count',\n\t\t\t\t\t\t'last_attempt_at',\n\t\t\t\t\t\t'last_result_at',\n\t\t\t\t\t\t'last_reported_at',\n\t\t\t\t\t\t'autofix_error_count'\n\t\t\t\t\t],\n\t\t\t\t\t'last_reported_at'\n\t\t\t\t);\n\t\t\t\tconst sortDirection = normalizeSortDirection(payload?.sortDirection);\n\t\t\t\tconst sort = {\n\t\t\t\t\t[sortField]: sortDirection,\n\t\t\t\t\tupdatedAt: -1\n\t\t\t\t};\n\n\t\t\t\tconst collection = getCollection('error-autofix-logs');\n\t\t\t\tconst [items, total] = await Promise.all([\n\t\t\t\t\tcollection.find(query).sort(sort as any).skip(skip).limit(limit).toArray(),\n\t\t\t\t\tcollection.countDocuments(query)\n\t\t\t\t]);\n\n\t\t\t\treturn {\n\t\t\t\t\titems,\n\t\t\t\t\ttotal,\n\t\t\t\t\tlimit,\n\t\t\t\t\tskip\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tsuperAdminRunAutoFixLog: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tlogId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(logId: string) {\n\t\t\t\tawait assertSuperAdmin(this);\n\n\t\t\t\tconst manager = ResolveIOServer['AutoFixManager'];\n\t\t\t\tif (!manager || typeof manager.runLog !== 'function') {\n\t\t\t\t\tthrow new Error('Auto-fix manager is not available.');\n\t\t\t\t}\n\n\t\t\t\tconst result = await manager.runLog(logId);\n\t\t\t\treturn {\n\t\t\t\t\tstatus: result?.status || 'unknown',\n\t\t\t\t\treason: result?.reason || '',\n\t\t\t\t\terror: result?.error || '',\n\t\t\t\t\tlogId: result?.log?._id || logId,\n\t\t\t\t\tbranchName: result?.branchName || result?.log?.branch_name || '',\n\t\t\t\t\tprUrl: result?.prUrl || result?.log?.pr_url || '',\n\t\t\t\t\ttaskId: result?.log?.openai_task_id || ''\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tsuperAdminListSlowQueryLogs: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload: Record<string, any> = {}) {\n\t\t\t\tawait assertSuperAdmin(this);\n\n\t\t\t\tconst query = buildSlowQuerySearchQuery(payload);\n\t\t\t\tconst limit = normalizeLimit(payload?.limit);\n\t\t\t\tconst skip = normalizeSkip(payload?.skip);\n\t\t\t\tconst sortField = resolveSortField(\n\t\t\t\t\tpayload?.sortField,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t'createdAt',\n\t\t\t\t\t\t\t'updatedAt',\n\t\t\t\t\t\t\t'collection',\n\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t'verification_status',\n\t\t\t\t\t\t\t'duration_ms',\n\t\t\t\t\t\t'avg_duration_ms',\n\t\t\t\t\t\t'max_duration_ms',\n\t\t\t\t\t\t'occurrences',\n\t\t\t\t\t\t'last_seen_at',\n\t\t\t\t\t\t'slow_query_count'\n\t\t\t\t\t],\n\t\t\t\t\t'last_seen_at'\n\t\t\t\t);\n\t\t\t\tconst sortDirection = normalizeSortDirection(payload?.sortDirection);\n\t\t\t\tconst sort = {\n\t\t\t\t\t[sortField]: sortDirection,\n\t\t\t\t\tupdatedAt: -1\n\t\t\t\t};\n\n\t\t\t\tconst collection = getCollection('slow-query-logs');\n\t\t\t\tconst [items, total] = await Promise.all([\n\t\t\t\t\tcollection.find(query).sort(sort as any).skip(skip).limit(limit).toArray(),\n\t\t\t\t\tcollection.countDocuments(query)\n\t\t\t\t]);\n\n\t\t\t\treturn {\n\t\t\t\t\titems,\n\t\t\t\t\ttotal,\n\t\t\t\t\tlimit,\n\t\t\t\t\tskip\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tsuperAdminRunSlowQueryLog: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tlogId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(logId: string) {\n\t\t\t\tawait assertSuperAdmin(this);\n\n\t\t\t\tconst verifier = ResolveIOServer['SlowQueryVerifier'];\n\t\t\t\tif (!verifier || typeof verifier.queueLogRun !== 'function') {\n\t\t\t\t\tthrow new Error('Slow query verifier is not available.');\n\t\t\t\t}\n\n\t\t\t\tconst result = await verifier.queueLogRun(logId, {\n\t\t\t\t\tforce: true\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tstatus: result?.status || 'unknown',\n\t\t\t\t\treason: result?.reason || '',\n\t\t\t\t\tlogId: result?.log?._id || logId,\n\t\t\t\t\ttaskId: result?.log?.openai_task_id || '',\n\t\t\t\t\tnotes: result?.log?.verification_notes || result?.reason || ''\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tsuperAdminDeploySlowQueryLog: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tlogId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(logId: string) {\n\t\t\t\tawait assertSuperAdmin(this);\n\n\t\t\t\tconst verifier = ResolveIOServer['SlowQueryVerifier'];\n\t\t\t\tif (!verifier || typeof verifier.deployLog !== 'function') {\n\t\t\t\t\tthrow new Error('Slow query verifier is not available.');\n\t\t\t\t}\n\n\t\t\t\tconst result = await verifier.deployLog(logId);\n\t\t\t\treturn {\n\t\t\t\t\tstatus: result?.status || 'unknown',\n\t\t\t\t\treason: result?.reason || '',\n\t\t\t\t\tlogId: result?.log?._id || logId,\n\t\t\t\t\ttaskId: result?.log?.openai_task_id || '',\n\t\t\t\t\tnotes: result?.log?.verification_notes || result?.reason || '',\n\t\t\t\t\tbranchName: result?.log?.auto_fix_result?.publish_branch || '',\n\t\t\t\t\tpublishMessage: result?.log?.auto_fix_result?.publish_message || ''\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
package/methods.ts CHANGED
@@ -249,6 +249,21 @@ export function SERVER_METHODS(resolveioServer) {
249
249
  stuckCronJob: (cb?: Function): Promise<any> => {
250
250
  return resolveioServer.call('stuckCronJob', cb);
251
251
  },
252
+ superAdminDeploySlowQueryLog: (logId: string, cb?: Function): Promise<any> => {
253
+ return resolveioServer.call('superAdminDeploySlowQueryLog', logId, cb);
254
+ },
255
+ superAdminListAutoFixLogs: (payload: Record<string, any> = {}, cb?: Function): Promise<any> => {
256
+ return resolveioServer.call('superAdminListAutoFixLogs', payload, any>, cb);
257
+ },
258
+ superAdminListSlowQueryLogs: (payload: Record<string, any> = {}, cb?: Function): Promise<any> => {
259
+ return resolveioServer.call('superAdminListSlowQueryLogs', payload, any>, cb);
260
+ },
261
+ superAdminRunAutoFixLog: (logId: string, cb?: Function): Promise<any> => {
262
+ return resolveioServer.call('superAdminRunAutoFixLog', logId, cb);
263
+ },
264
+ superAdminRunSlowQueryLog: (logId: string, cb?: Function): Promise<any> => {
265
+ return resolveioServer.call('superAdminRunSlowQueryLog', logId, cb);
266
+ },
252
267
  superadminAPM: (date_start: Date, date_end: Date, graphInterval, cb?: Function): Promise<any> => {
253
268
  return resolveioServer.call('superadminAPM', date_start, date_end, graphInterval, cb);
254
269
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "22.2.18",
3
+ "version": "22.2.19",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -15,9 +15,25 @@ export declare class ResolveIOServer {
15
15
  private static _sesMail;
16
16
  private static _publicProgram;
17
17
  private static _reconnecting;
18
+ private static _mongoReconnectPromise;
19
+ private static _lastMongoPoolClearedLogMs;
20
+ private static readonly MONGO_POOL_CLEARED_DEBOUNCE_MS;
18
21
  private static connectMongo;
19
- private static handleMongoDisconnect;
22
+ private static attachMongoListeners;
23
+ private static detachMongoListeners;
24
+ private static handleMongoClose;
25
+ private static handleMongoError;
26
+ private static handleMongoServerClosed;
27
+ private static handleMongoTopologyClosed;
28
+ private static handleMongoPoolCleared;
29
+ private static handleMongoDisconnectSignal;
30
+ private static isMongoConnectionHealthy;
31
+ static requestMongoReconnect(reason?: string, signal?: any): Promise<void>;
32
+ private static summarizeMongoSignal;
33
+ private static closeMongoClientQuietly;
34
+ private static notifyMongoReconnect;
20
35
  private static reconnectMongo;
36
+ private static handleMongoDisconnect;
21
37
  private static delay;
22
38
  private static resolveMongoClientOptions;
23
39
  private static pickMongoOptionValue;