@resolveio/server-lib 22.3.221 → 22.3.223

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. package/ai/assistant-core-heuristics.d.ts +11 -0
  2. package/ai/assistant-core-heuristics.js +356 -0
  3. package/ai/assistant-core-heuristics.js.map +1 -0
  4. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
  5. package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
  6. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
  7. package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
  8. package/ai/resolveio-platform-intelligence-memory.js +341 -0
  9. package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
  10. package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
  11. package/ai/resolveio-platform-intelligence-types.js +4 -0
  12. package/ai/resolveio-platform-intelligence-types.js.map +1 -0
  13. package/ai/resolveio-platform-intelligence.d.ts +6 -0
  14. package/ai/resolveio-platform-intelligence.js +463 -0
  15. package/ai/resolveio-platform-intelligence.js.map +1 -0
  16. package/client-server-app.d.ts +1 -0
  17. package/client-server-app.js +68 -0
  18. package/client-server-app.js.map +1 -0
  19. package/collections/ai-run.collection.d.ts +3 -0
  20. package/collections/ai-run.collection.js +170 -0
  21. package/collections/ai-run.collection.js.map +1 -0
  22. package/collections/ai-terminal-conversation.collection.d.ts +2 -0
  23. package/collections/ai-terminal-conversation.collection.js +140 -0
  24. package/collections/ai-terminal-conversation.collection.js.map +1 -0
  25. package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
  26. package/collections/ai-terminal-issue-report.collection.js +148 -0
  27. package/collections/ai-terminal-issue-report.collection.js.map +1 -0
  28. package/collections/ai-terminal-message.collection.d.ts +2 -0
  29. package/collections/ai-terminal-message.collection.js +121 -0
  30. package/collections/ai-terminal-message.collection.js.map +1 -0
  31. package/collections/app-setting.collection.d.ts +3 -0
  32. package/collections/app-setting.collection.js +103 -0
  33. package/collections/app-setting.collection.js.map +1 -0
  34. package/collections/app-status.collection.d.ts +3 -0
  35. package/collections/app-status.collection.js +57 -0
  36. package/collections/app-status.collection.js.map +1 -0
  37. package/collections/communication-metric.collection.d.ts +2 -0
  38. package/collections/communication-metric.collection.js +133 -0
  39. package/collections/communication-metric.collection.js.map +1 -0
  40. package/collections/counter.collection.d.ts +3 -0
  41. package/collections/counter.collection.js +56 -0
  42. package/collections/counter.collection.js.map +1 -0
  43. package/collections/cron-job-history.collection.d.ts +3 -0
  44. package/collections/cron-job-history.collection.js +137 -0
  45. package/collections/cron-job-history.collection.js.map +1 -0
  46. package/collections/cron-job.collection.d.ts +3 -0
  47. package/collections/cron-job.collection.js +92 -0
  48. package/collections/cron-job.collection.js.map +1 -0
  49. package/collections/customer-notification.collection.d.ts +3 -0
  50. package/collections/customer-notification.collection.js +130 -0
  51. package/collections/customer-notification.collection.js.map +1 -0
  52. package/collections/customer-portal-password.collection.d.ts +3 -0
  53. package/collections/customer-portal-password.collection.js +75 -0
  54. package/collections/customer-portal-password.collection.js.map +1 -0
  55. package/collections/email-history.collection.d.ts +3 -0
  56. package/collections/email-history.collection.js +134 -0
  57. package/collections/email-history.collection.js.map +1 -0
  58. package/collections/email-verified.collection.d.ts +3 -0
  59. package/collections/email-verified.collection.js +62 -0
  60. package/collections/email-verified.collection.js.map +1 -0
  61. package/collections/file.collection.d.ts +3 -0
  62. package/collections/file.collection.js +74 -0
  63. package/collections/file.collection.js.map +1 -0
  64. package/collections/flag-update.collection.d.ts +3 -0
  65. package/collections/flag-update.collection.js +57 -0
  66. package/collections/flag-update.collection.js.map +1 -0
  67. package/collections/flag.collection.d.ts +3 -0
  68. package/collections/flag.collection.js +57 -0
  69. package/collections/flag.collection.js.map +1 -0
  70. package/collections/log-method-latency.collection.d.ts +3 -0
  71. package/collections/log-method-latency.collection.js +77 -0
  72. package/collections/log-method-latency.collection.js.map +1 -0
  73. package/collections/log-subscription.collection.d.ts +3 -0
  74. package/collections/log-subscription.collection.js +80 -0
  75. package/collections/log-subscription.collection.js.map +1 -0
  76. package/collections/log.collection.d.ts +3 -0
  77. package/collections/log.collection.js +93 -0
  78. package/collections/log.collection.js.map +1 -0
  79. package/collections/logged-in-users.collection.d.ts +3 -0
  80. package/collections/logged-in-users.collection.js +67 -0
  81. package/collections/logged-in-users.collection.js.map +1 -0
  82. package/collections/monitor-cpu.collection.d.ts +3 -0
  83. package/collections/monitor-cpu.collection.js +65 -0
  84. package/collections/monitor-cpu.collection.js.map +1 -0
  85. package/collections/monitor-function.collection.d.ts +3 -0
  86. package/collections/monitor-function.collection.js +74 -0
  87. package/collections/monitor-function.collection.js.map +1 -0
  88. package/collections/monitor-memory.collection.d.ts +3 -0
  89. package/collections/monitor-memory.collection.js +77 -0
  90. package/collections/monitor-memory.collection.js.map +1 -0
  91. package/collections/monitor-mongo.collection.d.ts +3 -0
  92. package/collections/monitor-mongo.collection.js +71 -0
  93. package/collections/monitor-mongo.collection.js.map +1 -0
  94. package/collections/notification.collection.d.ts +3 -0
  95. package/collections/notification.collection.js +57 -0
  96. package/collections/notification.collection.js.map +1 -0
  97. package/collections/openai-usage-ledger.collection.d.ts +2 -0
  98. package/collections/openai-usage-ledger.collection.js +188 -0
  99. package/collections/openai-usage-ledger.collection.js.map +1 -0
  100. package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
  101. package/collections/report-builder-dashboard-builder.collection.js +109 -0
  102. package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
  103. package/collections/report-builder-library.collection.d.ts +3 -0
  104. package/collections/report-builder-library.collection.js +87 -0
  105. package/collections/report-builder-library.collection.js.map +1 -0
  106. package/collections/report-builder-report.collection.d.ts +4 -0
  107. package/collections/report-builder-report.collection.js +184 -0
  108. package/collections/report-builder-report.collection.js.map +1 -0
  109. package/collections/user-group.collection.d.ts +4 -0
  110. package/collections/user-group.collection.js +89 -0
  111. package/collections/user-group.collection.js.map +1 -0
  112. package/collections/user-guide.collection.d.ts +3 -0
  113. package/collections/user-guide.collection.js +57 -0
  114. package/collections/user-guide.collection.js.map +1 -0
  115. package/collections/user.collection.d.ts +4 -0
  116. package/collections/user.collection.js +180 -0
  117. package/collections/user.collection.js.map +1 -0
  118. package/cron/cron.d.ts +14 -0
  119. package/cron/cron.js +216 -0
  120. package/cron/cron.js.map +1 -0
  121. package/fixtures/cron-jobs.d.ts +1 -0
  122. package/fixtures/cron-jobs.js +150 -0
  123. package/fixtures/cron-jobs.js.map +1 -0
  124. package/fixtures/init.d.ts +1 -0
  125. package/fixtures/init.js +91 -0
  126. package/fixtures/init.js.map +1 -0
  127. package/http/auth.d.ts +2 -0
  128. package/http/auth.js +951 -0
  129. package/http/auth.js.map +1 -0
  130. package/http/health.d.ts +1 -0
  131. package/http/health.js +11 -0
  132. package/http/health.js.map +1 -0
  133. package/http/home.d.ts +1 -0
  134. package/http/home.js +134 -0
  135. package/http/home.js.map +1 -0
  136. package/http/slow-query-publication.d.ts +2 -0
  137. package/http/slow-query-publication.js +99 -0
  138. package/http/slow-query-publication.js.map +1 -0
  139. package/index.d.ts +1 -0
  140. package/index.js +19 -0
  141. package/index.js.map +1 -0
  142. package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
  143. package/managers/ai-assistant-codex-manager.manager.js +1113 -0
  144. package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
  145. package/managers/ai-run-evidence.manager.d.ts +36 -0
  146. package/managers/ai-run-evidence.manager.js +377 -0
  147. package/managers/ai-run-evidence.manager.js.map +1 -0
  148. package/managers/communication-metric.manager.d.ts +16 -0
  149. package/managers/communication-metric.manager.js +134 -0
  150. package/managers/communication-metric.manager.js.map +1 -0
  151. package/managers/cron.manager.d.ts +20 -0
  152. package/managers/cron.manager.js +534 -0
  153. package/managers/cron.manager.js.map +1 -0
  154. package/managers/customer-notification-content.manager.d.ts +55 -0
  155. package/managers/customer-notification-content.manager.js +158 -0
  156. package/managers/customer-notification-content.manager.js.map +1 -0
  157. package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
  158. package/managers/diagnostic-manager-bootstrap.js +260 -0
  159. package/managers/diagnostic-manager-bootstrap.js.map +1 -0
  160. package/managers/error-auto-fix.manager.d.ts +149 -0
  161. package/managers/error-auto-fix.manager.js +3064 -0
  162. package/managers/error-auto-fix.manager.js.map +1 -0
  163. package/managers/local-log.manager.d.ts +18 -0
  164. package/managers/local-log.manager.js +88 -0
  165. package/managers/local-log.manager.js.map +1 -0
  166. package/managers/method.manager.d.ts +84 -0
  167. package/managers/method.manager.js +1964 -0
  168. package/managers/method.manager.js.map +1 -0
  169. package/managers/mongo.manager.d.ts +224 -0
  170. package/managers/mongo.manager.js +5000 -0
  171. package/managers/mongo.manager.js.map +1 -0
  172. package/managers/monitor.manager.d.ts +70 -0
  173. package/managers/monitor.manager.js +550 -0
  174. package/managers/monitor.manager.js.map +1 -0
  175. package/managers/openai-usage-ledger.manager.d.ts +30 -0
  176. package/managers/openai-usage-ledger.manager.js +142 -0
  177. package/managers/openai-usage-ledger.manager.js.map +1 -0
  178. package/managers/slow-query-verifier.manager.d.ts +144 -0
  179. package/managers/slow-query-verifier.manager.js +3857 -0
  180. package/managers/slow-query-verifier.manager.js.map +1 -0
  181. package/managers/slow-query.manager.d.ts +28 -0
  182. package/managers/slow-query.manager.js +468 -0
  183. package/managers/slow-query.manager.js.map +1 -0
  184. package/managers/subscription.manager.d.ts +169 -0
  185. package/managers/subscription.manager.js +3434 -0
  186. package/managers/subscription.manager.js.map +1 -0
  187. package/managers/websocket.manager.d.ts +73 -0
  188. package/managers/websocket.manager.js +673 -0
  189. package/managers/websocket.manager.js.map +1 -0
  190. package/managers/worker-dispatcher.manager.d.ts +120 -0
  191. package/managers/worker-dispatcher.manager.js +1266 -0
  192. package/managers/worker-dispatcher.manager.js.map +1 -0
  193. package/managers/worker-server.manager.d.ts +35 -0
  194. package/managers/worker-server.manager.js +582 -0
  195. package/managers/worker-server.manager.js.map +1 -0
  196. package/methods/accounts.d.ts +2 -0
  197. package/methods/accounts.js +624 -0
  198. package/methods/accounts.js.map +1 -0
  199. package/methods/ai-terminal.d.ts +458 -0
  200. package/methods/ai-terminal.js +27991 -0
  201. package/methods/ai-terminal.js.map +1 -0
  202. package/methods/app-settings.d.ts +2 -0
  203. package/methods/app-settings.js +169 -0
  204. package/methods/app-settings.js.map +1 -0
  205. package/methods/aws.d.ts +2 -0
  206. package/methods/aws.js +877 -0
  207. package/methods/aws.js.map +1 -0
  208. package/methods/collections.d.ts +2 -0
  209. package/methods/collections.js +719 -0
  210. package/methods/collections.js.map +1 -0
  211. package/methods/counters.d.ts +2 -0
  212. package/methods/counters.js +113 -0
  213. package/methods/counters.js.map +1 -0
  214. package/methods/cron-jobs.d.ts +2 -0
  215. package/methods/cron-jobs.js +2475 -0
  216. package/methods/cron-jobs.js.map +1 -0
  217. package/methods/customer-notifications.d.ts +2 -0
  218. package/methods/customer-notifications.js +528 -0
  219. package/methods/customer-notifications.js.map +1 -0
  220. package/methods/diagnostics.d.ts +2 -0
  221. package/methods/diagnostics.js +703 -0
  222. package/methods/diagnostics.js.map +1 -0
  223. package/methods/flag-updates.d.ts +2 -0
  224. package/methods/flag-updates.js +8 -0
  225. package/methods/flag-updates.js.map +1 -0
  226. package/methods/flags.d.ts +2 -0
  227. package/methods/flags.js +8 -0
  228. package/methods/flags.js.map +1 -0
  229. package/methods/logs.d.ts +2 -0
  230. package/methods/logs.js +751 -0
  231. package/methods/logs.js.map +1 -0
  232. package/methods/mongo-explorer.d.ts +2 -0
  233. package/methods/mongo-explorer.js +1808 -0
  234. package/methods/mongo-explorer.js.map +1 -0
  235. package/methods/monitor.d.ts +2 -0
  236. package/methods/monitor.js +543 -0
  237. package/methods/monitor.js.map +1 -0
  238. package/methods/pdf.d.ts +2 -0
  239. package/methods/pdf.js +1216 -0
  240. package/methods/pdf.js.map +1 -0
  241. package/methods/publications.d.ts +1 -0
  242. package/methods/publications.js +183 -0
  243. package/methods/publications.js.map +1 -0
  244. package/methods/report-builder.d.ts +2 -0
  245. package/methods/report-builder.js +3094 -0
  246. package/methods/report-builder.js.map +1 -0
  247. package/methods/support.d.ts +2 -0
  248. package/methods/support.js +430 -0
  249. package/methods/support.js.map +1 -0
  250. package/models/ai-run.model.d.ts +19 -0
  251. package/models/ai-run.model.js +4 -0
  252. package/models/ai-run.model.js.map +1 -0
  253. package/models/ai-terminal-conversation.model.d.ts +17 -0
  254. package/models/ai-terminal-conversation.model.js +4 -0
  255. package/models/ai-terminal-conversation.model.js.map +1 -0
  256. package/models/ai-terminal-issue-report.model.d.ts +19 -0
  257. package/models/ai-terminal-issue-report.model.js +4 -0
  258. package/models/ai-terminal-issue-report.model.js.map +1 -0
  259. package/models/ai-terminal-message.model.d.ts +22 -0
  260. package/models/ai-terminal-message.model.js +4 -0
  261. package/models/ai-terminal-message.model.js.map +1 -0
  262. package/models/app-setting.model.d.ts +16 -0
  263. package/models/app-setting.model.js +4 -0
  264. package/models/app-setting.model.js.map +1 -0
  265. package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
  266. package/models/app-status.model.js +4 -0
  267. package/models/app-status.model.js.map +1 -0
  268. package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
  269. package/models/billing-logged-in-users.model.js +4 -0
  270. package/models/billing-logged-in-users.model.js.map +1 -0
  271. package/models/collection-document.model.d.ts +21 -0
  272. package/models/collection-document.model.js +4 -0
  273. package/models/collection-document.model.js.map +1 -0
  274. package/models/communication-metric.model.d.ts +20 -0
  275. package/models/communication-metric.model.js +4 -0
  276. package/models/communication-metric.model.js.map +1 -0
  277. package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
  278. package/models/counter.model.js +4 -0
  279. package/models/counter.model.js.map +1 -0
  280. package/models/cron-job-history.model.d.ts +15 -0
  281. package/models/cron-job-history.model.js +4 -0
  282. package/models/cron-job-history.model.js.map +1 -0
  283. package/models/cron-job.model.d.ts +14 -0
  284. package/models/cron-job.model.js +4 -0
  285. package/models/cron-job.model.js.map +1 -0
  286. package/models/customer-notification.model.d.ts +26 -0
  287. package/models/customer-notification.model.js +4 -0
  288. package/models/customer-notification.model.js.map +1 -0
  289. package/models/customer-portal-password.model.d.ts +11 -0
  290. package/models/customer-portal-password.model.js +4 -0
  291. package/models/customer-portal-password.model.js.map +1 -0
  292. package/models/dialog.model.d.ts +23 -0
  293. package/models/dialog.model.js +4 -0
  294. package/models/dialog.model.js.map +1 -0
  295. package/models/email-history.model.d.ts +32 -0
  296. package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
  297. package/models/email-history.model.js.map +1 -0
  298. package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
  299. package/models/email-verified.model.js +4 -0
  300. package/models/email-verified.model.js.map +1 -0
  301. package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
  302. package/models/file.model.js +4 -0
  303. package/models/file.model.js.map +1 -0
  304. package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
  305. package/models/flag-update.model.js +4 -0
  306. package/models/flag-update.model.js.map +1 -0
  307. package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
  308. package/models/flag.model.js +4 -0
  309. package/models/flag.model.js.map +1 -0
  310. package/models/log-method-latency.model.d.ts +10 -0
  311. package/models/log-method-latency.model.js +4 -0
  312. package/models/log-method-latency.model.js.map +1 -0
  313. package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
  314. package/models/log-subscription.model.js +4 -0
  315. package/models/log-subscription.model.js.map +1 -0
  316. package/models/log.model.d.ts +17 -0
  317. package/models/log.model.js +4 -0
  318. package/models/log.model.js.map +1 -0
  319. package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
  320. package/models/logged-in-users.model.js +4 -0
  321. package/models/logged-in-users.model.js.map +1 -0
  322. package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
  323. package/models/method-response.model.js +4 -0
  324. package/models/method-response.model.js.map +1 -0
  325. package/models/method.model.d.ts +26 -0
  326. package/models/method.model.js +4 -0
  327. package/models/method.model.js.map +1 -0
  328. package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
  329. package/models/monitor-cpu.model.js +4 -0
  330. package/models/monitor-cpu.model.js.map +1 -0
  331. package/models/monitor-function.model.d.ts +14 -0
  332. package/models/monitor-function.model.js +4 -0
  333. package/models/monitor-function.model.js.map +1 -0
  334. package/models/monitor-memory.model.d.ts +15 -0
  335. package/models/monitor-memory.model.js +4 -0
  336. package/models/monitor-memory.model.js.map +1 -0
  337. package/models/monitor-mongo.model.d.ts +13 -0
  338. package/models/monitor-mongo.model.js +4 -0
  339. package/models/monitor-mongo.model.js.map +1 -0
  340. package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
  341. package/models/notification.model.js +4 -0
  342. package/models/notification.model.js.map +1 -0
  343. package/models/openai-usage-ledger.model.d.ts +30 -0
  344. package/models/openai-usage-ledger.model.js +4 -0
  345. package/models/openai-usage-ledger.model.js.map +1 -0
  346. package/models/pagination.model.d.ts +11 -0
  347. package/models/pagination.model.js +28 -0
  348. package/models/pagination.model.js.map +1 -0
  349. package/models/permission.model.d.ts +12 -0
  350. package/models/permission.model.js +4 -0
  351. package/models/permission.model.js.map +1 -0
  352. package/models/report-builder-dashboard-builder.model.d.ts +25 -0
  353. package/models/report-builder-dashboard-builder.model.js +4 -0
  354. package/models/report-builder-dashboard-builder.model.js.map +1 -0
  355. package/models/report-builder-library.model.d.ts +17 -0
  356. package/models/report-builder-library.model.js +4 -0
  357. package/models/report-builder-library.model.js.map +1 -0
  358. package/models/report-builder-report.model.d.ts +121 -0
  359. package/models/report-builder-report.model.js +4 -0
  360. package/models/report-builder-report.model.js.map +1 -0
  361. package/models/report-builder.model.d.ts +61 -0
  362. package/models/report-builder.model.js +4 -0
  363. package/models/report-builder.model.js.map +1 -0
  364. package/models/select-data-label.model.d.ts +9 -0
  365. package/models/select-data-label.model.js +4 -0
  366. package/models/select-data-label.model.js.map +1 -0
  367. package/models/server-message.model.d.ts +32 -0
  368. package/models/server-message.model.js +4 -0
  369. package/models/server-message.model.js.map +1 -0
  370. package/models/slow-query-report.model.d.ts +23 -0
  371. package/models/slow-query-report.model.js +4 -0
  372. package/models/slow-query-report.model.js.map +1 -0
  373. package/models/subscription.model.d.ts +31 -0
  374. package/models/subscription.model.js +4 -0
  375. package/models/subscription.model.js.map +1 -0
  376. package/models/support-ticket.model.d.ts +87 -0
  377. package/models/support-ticket.model.js +4 -0
  378. package/models/support-ticket.model.js.map +1 -0
  379. package/models/user-group.model.d.ts +20 -0
  380. package/models/user-group.model.js +4 -0
  381. package/models/user-group.model.js.map +1 -0
  382. package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
  383. package/models/user-guide.model.js +4 -0
  384. package/models/user-guide.model.js.map +1 -0
  385. package/models/user.model.d.ts +84 -0
  386. package/models/user.model.js +4 -0
  387. package/models/user.model.js.map +1 -0
  388. package/package.json +1 -1
  389. package/private/images/ResolveIO.png +0 -0
  390. package/public_api.js +127 -0
  391. package/public_api.js.map +1 -0
  392. package/publications/ai-terminal.d.ts +1 -0
  393. package/publications/ai-terminal.js +122 -0
  394. package/publications/ai-terminal.js.map +1 -0
  395. package/publications/app-settings.d.ts +2 -0
  396. package/publications/app-settings.js +28 -0
  397. package/publications/app-settings.js.map +1 -0
  398. package/publications/app-status.d.ts +2 -0
  399. package/publications/app-status.js +16 -0
  400. package/publications/app-status.js.map +1 -0
  401. package/publications/cron-jobs.d.ts +2 -0
  402. package/publications/cron-jobs.js +88 -0
  403. package/publications/cron-jobs.js.map +1 -0
  404. package/publications/customer-notifications.d.ts +2 -0
  405. package/publications/customer-notifications.js +161 -0
  406. package/publications/customer-notifications.js.map +1 -0
  407. package/publications/files.d.ts +2 -0
  408. package/publications/files.js +36 -0
  409. package/publications/files.js.map +1 -0
  410. package/publications/flags-update.d.ts +2 -0
  411. package/publications/flags-update.js +22 -0
  412. package/publications/flags-update.js.map +1 -0
  413. package/publications/flags.d.ts +2 -0
  414. package/publications/flags.js +22 -0
  415. package/publications/flags.js.map +1 -0
  416. package/publications/logs.d.ts +2 -0
  417. package/publications/logs.js +164 -0
  418. package/publications/logs.js.map +1 -0
  419. package/publications/notifications.d.ts +2 -0
  420. package/publications/notifications.js +16 -0
  421. package/publications/notifications.js.map +1 -0
  422. package/publications/report-builder-dashboard-builders.d.ts +2 -0
  423. package/publications/report-builder-dashboard-builders.js +42 -0
  424. package/publications/report-builder-dashboard-builders.js.map +1 -0
  425. package/publications/report-builder-libraries.d.ts +2 -0
  426. package/publications/report-builder-libraries.js +90 -0
  427. package/publications/report-builder-libraries.js.map +1 -0
  428. package/publications/report-builder-reports.d.ts +2 -0
  429. package/publications/report-builder-reports.js +50 -0
  430. package/publications/report-builder-reports.js.map +1 -0
  431. package/publications/super-admin.d.ts +2 -0
  432. package/publications/super-admin.js +16 -0
  433. package/publications/super-admin.js.map +1 -0
  434. package/publications/user-groups.d.ts +1 -0
  435. package/publications/user-groups.js +16 -0
  436. package/publications/user-groups.js.map +1 -0
  437. package/publications/user-guides.d.ts +1 -0
  438. package/publications/user-guides.js +16 -0
  439. package/publications/user-guides.js.map +1 -0
  440. package/resolveio-server-app.d.ts +70 -0
  441. package/resolveio-server-app.js +801 -0
  442. package/resolveio-server-app.js.map +1 -0
  443. package/server-app.d.ts +228 -0
  444. package/server-app.js +3566 -0
  445. package/server-app.js.map +1 -0
  446. package/services/codex-client.d.ts +128 -0
  447. package/services/codex-client.js +1629 -0
  448. package/services/codex-client.js.map +1 -0
  449. package/services/openai-client.d.ts +46 -0
  450. package/services/openai-client.js +318 -0
  451. package/services/openai-client.js.map +1 -0
  452. package/types/error-report.d.ts +25 -0
  453. package/types/error-report.js +4 -0
  454. package/types/error-report.js.map +1 -0
  455. package/types/slow-query-report.d.ts +27 -0
  456. package/types/slow-query-report.js +6 -0
  457. package/types/slow-query-report.js.map +1 -0
  458. package/util/ai-qa-policy.d.ts +124 -0
  459. package/util/ai-qa-policy.js +736 -0
  460. package/util/ai-qa-policy.js.map +1 -0
  461. package/util/ai-run-evidence-adapters.d.ts +109 -0
  462. package/util/ai-run-evidence-adapters.js +7234 -0
  463. package/util/ai-run-evidence-adapters.js.map +1 -0
  464. package/util/ai-run-evidence-dashboard.d.ts +88 -0
  465. package/util/ai-run-evidence-dashboard.js +343 -0
  466. package/util/ai-run-evidence-dashboard.js.map +1 -0
  467. package/util/ai-run-evidence-eval.d.ts +86 -0
  468. package/util/ai-run-evidence-eval.js +1018 -0
  469. package/util/ai-run-evidence-eval.js.map +1 -0
  470. package/util/ai-run-evidence.d.ts +244 -0
  471. package/util/ai-run-evidence.js +1096 -0
  472. package/util/ai-run-evidence.js.map +1 -0
  473. package/util/ai-runner-artifacts.d.ts +82 -0
  474. package/util/ai-runner-artifacts.js +713 -0
  475. package/util/ai-runner-artifacts.js.map +1 -0
  476. package/util/ai-runner-manager-autopilot.d.ts +210 -0
  477. package/util/ai-runner-manager-autopilot.js +642 -0
  478. package/util/ai-runner-manager-autopilot.js.map +1 -0
  479. package/util/ai-runner-manager-policy.d.ts +807 -0
  480. package/util/ai-runner-manager-policy.js +3501 -0
  481. package/util/ai-runner-manager-policy.js.map +1 -0
  482. package/util/ai-runner-qa-auth.d.ts +5 -0
  483. package/util/ai-runner-qa-auth.js +839 -0
  484. package/util/ai-runner-qa-auth.js.map +1 -0
  485. package/util/ai-runner-qa-tools.d.ts +26 -0
  486. package/util/ai-runner-qa-tools.js +3520 -0
  487. package/util/ai-runner-qa-tools.js.map +1 -0
  488. package/util/aicoder-runner-v6.d.ts +426 -0
  489. package/util/aicoder-runner-v6.js +2464 -0
  490. package/util/aicoder-runner-v6.js.map +1 -0
  491. package/util/common.d.ts +31 -0
  492. package/util/common.js +683 -0
  493. package/util/common.js.map +1 -0
  494. package/util/customer-portal-password.d.ts +13 -0
  495. package/util/customer-portal-password.js +209 -0
  496. package/util/customer-portal-password.js.map +1 -0
  497. package/util/error-reporter.d.ts +52 -0
  498. package/util/error-reporter.js +326 -0
  499. package/util/error-reporter.js.map +1 -0
  500. package/util/error-tracking.d.ts +13 -0
  501. package/util/error-tracking.js +120 -0
  502. package/util/error-tracking.js.map +1 -0
  503. package/util/openai-usage-cost.d.ts +6 -0
  504. package/util/openai-usage-cost.js +103 -0
  505. package/util/openai-usage-cost.js.map +1 -0
  506. package/util/report-builder-unwinds.d.ts +15 -0
  507. package/util/report-builder-unwinds.js +156 -0
  508. package/util/report-builder-unwinds.js.map +1 -0
  509. package/util/runner-process-janitor.d.ts +27 -0
  510. package/util/runner-process-janitor.js +208 -0
  511. package/util/runner-process-janitor.js.map +1 -0
  512. package/util/schema-report-builder.d.ts +6 -0
  513. package/util/schema-report-builder.js +481 -0
  514. package/util/schema-report-builder.js.map +1 -0
  515. package/util/slow-query-reporter.d.ts +28 -0
  516. package/util/slow-query-reporter.js +226 -0
  517. package/util/slow-query-reporter.js.map +1 -0
  518. package/util/subscription-dependency-context.d.ts +34 -0
  519. package/util/subscription-dependency-context.js +1283 -0
  520. package/util/subscription-dependency-context.js.map +1 -0
  521. package/util/support-runner-v5.d.ts +1426 -0
  522. package/util/support-runner-v5.js +7647 -0
  523. package/util/support-runner-v5.js.map +1 -0
  524. package/util/tokenizer.d.ts +5 -0
  525. package/util/tokenizer.js +41 -0
  526. package/util/tokenizer.js.map +1 -0
  527. package/workers/codex-runner.worker.d.ts +1 -0
  528. package/workers/codex-runner.worker.js +192 -0
  529. package/workers/codex-runner.worker.js.map +1 -0
  530. package/.nodemon.json +0 -5
  531. package/.vscode/settings.json +0 -21
  532. package/AGENTS.md +0 -195
  533. package/README.md +0 -22
  534. package/build_package.sh +0 -5
  535. package/compileDTS.pl +0 -64
  536. package/docs/ai-assistant-nightly-eval.md +0 -65
  537. package/docs/ai-assistant-preflight-checklist.md +0 -23
  538. package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
  539. package/eslint-plugin-custom/index.js +0 -7
  540. package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
  541. package/eslint.config.js +0 -103
  542. package/gulpfile.js +0 -216
  543. package/methodAndPublicationListGenerator.py +0 -375
  544. package/mongodbensurers.js +0 -2
  545. package/mongostop.js +0 -3
  546. package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
  547. package/settings.development.json +0 -25
  548. package/settings.development.redacted.json +0 -25
  549. package/src/.env +0 -12
  550. package/src/ai/assistant-core-heuristics.ts +0 -379
  551. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
  552. package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
  553. package/src/ai/resolveio-platform-intelligence.ts +0 -462
  554. package/src/client-server-app.ts +0 -12
  555. package/src/collections/ai-run.collection.ts +0 -117
  556. package/src/collections/ai-terminal-conversation.collection.ts +0 -91
  557. package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
  558. package/src/collections/ai-terminal-message.collection.ts +0 -77
  559. package/src/collections/app-setting.collection.ts +0 -104
  560. package/src/collections/app-status.collection.ts +0 -58
  561. package/src/collections/communication-metric.collection.ts +0 -84
  562. package/src/collections/counter.collection.ts +0 -56
  563. package/src/collections/cron-job-history.collection.ts +0 -94
  564. package/src/collections/cron-job.collection.ts +0 -92
  565. package/src/collections/customer-notification.collection.ts +0 -131
  566. package/src/collections/customer-portal-password.collection.ts +0 -76
  567. package/src/collections/email-history.collection.ts +0 -134
  568. package/src/collections/email-verified.collection.ts +0 -62
  569. package/src/collections/file.collection.ts +0 -74
  570. package/src/collections/flag-update.collection.ts +0 -57
  571. package/src/collections/flag.collection.ts +0 -57
  572. package/src/collections/log-method-latency.collection.ts +0 -77
  573. package/src/collections/log-subscription.collection.ts +0 -80
  574. package/src/collections/log.collection.ts +0 -93
  575. package/src/collections/logged-in-users.collection.ts +0 -67
  576. package/src/collections/monitor-cpu.collection.ts +0 -65
  577. package/src/collections/monitor-function.collection.ts +0 -74
  578. package/src/collections/monitor-memory.collection.ts +0 -77
  579. package/src/collections/monitor-mongo.collection.ts +0 -71
  580. package/src/collections/notification.collection.ts +0 -57
  581. package/src/collections/openai-usage-ledger.collection.ts +0 -131
  582. package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
  583. package/src/collections/report-builder-library.collection.ts +0 -89
  584. package/src/collections/report-builder-report.collection.ts +0 -184
  585. package/src/collections/user-group.collection.ts +0 -89
  586. package/src/collections/user-guide.collection.ts +0 -57
  587. package/src/collections/user.collection.ts +0 -181
  588. package/src/cron/cron.ts +0 -117
  589. package/src/fixtures/cron-jobs.ts +0 -95
  590. package/src/fixtures/init.ts +0 -35
  591. package/src/http/auth.ts +0 -818
  592. package/src/http/health.ts +0 -7
  593. package/src/http/home.ts +0 -90
  594. package/src/http/slow-query-publication.ts +0 -49
  595. package/src/index.ts +0 -1
  596. package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
  597. package/src/managers/ai-run-evidence.manager.ts +0 -264
  598. package/src/managers/communication-metric.manager.ts +0 -82
  599. package/src/managers/cron.manager.ts +0 -333
  600. package/src/managers/customer-notification-content.manager.ts +0 -236
  601. package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
  602. package/src/managers/error-auto-fix.manager.ts +0 -2767
  603. package/src/managers/local-log.manager.ts +0 -113
  604. package/src/managers/method.manager.ts +0 -1857
  605. package/src/managers/mongo.manager.ts +0 -4575
  606. package/src/managers/monitor.manager.ts +0 -507
  607. package/src/managers/openai-usage-ledger.manager.ts +0 -112
  608. package/src/managers/slow-query-verifier.manager.ts +0 -3590
  609. package/src/managers/slow-query.manager.ts +0 -519
  610. package/src/managers/subscription.manager.ts +0 -3128
  611. package/src/managers/websocket.manager.ts +0 -746
  612. package/src/managers/worker-dispatcher.manager.ts +0 -1360
  613. package/src/managers/worker-server.manager.ts +0 -536
  614. package/src/methods/accounts.ts +0 -532
  615. package/src/methods/ai-terminal.ts +0 -29070
  616. package/src/methods/app-settings.ts +0 -114
  617. package/src/methods/aws.ts +0 -649
  618. package/src/methods/collections.ts +0 -641
  619. package/src/methods/counters.ts +0 -69
  620. package/src/methods/cron-jobs.ts +0 -2614
  621. package/src/methods/customer-notifications.ts +0 -458
  622. package/src/methods/diagnostics.ts +0 -616
  623. package/src/methods/flag-updates.ts +0 -7
  624. package/src/methods/flags.ts +0 -7
  625. package/src/methods/logs.ts +0 -657
  626. package/src/methods/mongo-explorer.ts +0 -1880
  627. package/src/methods/monitor.ts +0 -540
  628. package/src/methods/pdf.ts +0 -1236
  629. package/src/methods/publications.ts +0 -129
  630. package/src/methods/report-builder.ts +0 -3300
  631. package/src/methods/support.ts +0 -335
  632. package/src/models/ai-run.model.ts +0 -27
  633. package/src/models/ai-terminal-conversation.model.ts +0 -19
  634. package/src/models/ai-terminal-issue-report.model.ts +0 -21
  635. package/src/models/ai-terminal-message.model.ts +0 -24
  636. package/src/models/app-setting.model.ts +0 -17
  637. package/src/models/collection-document.model.ts +0 -24
  638. package/src/models/communication-metric.model.ts +0 -23
  639. package/src/models/cron-job-history.model.ts +0 -16
  640. package/src/models/cron-job.model.ts +0 -15
  641. package/src/models/customer-notification.model.ts +0 -28
  642. package/src/models/customer-portal-password.model.ts +0 -12
  643. package/src/models/dialog.model.ts +0 -25
  644. package/src/models/log-method-latency.model.ts +0 -11
  645. package/src/models/log.model.ts +0 -19
  646. package/src/models/method.model.ts +0 -25
  647. package/src/models/monitor-function.model.ts +0 -16
  648. package/src/models/monitor-memory.model.ts +0 -17
  649. package/src/models/monitor-mongo.model.ts +0 -15
  650. package/src/models/openai-usage-ledger.model.ts +0 -56
  651. package/src/models/pagination.model.ts +0 -35
  652. package/src/models/permission.model.ts +0 -14
  653. package/src/models/report-builder-dashboard-builder.model.ts +0 -29
  654. package/src/models/report-builder-library.model.ts +0 -20
  655. package/src/models/report-builder-report.model.ts +0 -136
  656. package/src/models/report-builder.model.ts +0 -68
  657. package/src/models/select-data-label.model.ts +0 -9
  658. package/src/models/server-message.model.ts +0 -31
  659. package/src/models/slow-query-report.model.ts +0 -23
  660. package/src/models/subscription.model.ts +0 -73
  661. package/src/models/support-ticket.model.ts +0 -104
  662. package/src/models/user-group.model.ts +0 -24
  663. package/src/models/user.model.ts +0 -96
  664. package/src/private/images/ResolveIO.png +0 -0
  665. package/src/publications/ai-terminal.ts +0 -73
  666. package/src/publications/app-settings.ts +0 -25
  667. package/src/publications/app-status.ts +0 -13
  668. package/src/publications/cron-jobs.ts +0 -40
  669. package/src/publications/customer-notifications.ts +0 -101
  670. package/src/publications/files.ts +0 -33
  671. package/src/publications/flags-update.ts +0 -19
  672. package/src/publications/flags.ts +0 -19
  673. package/src/publications/logs.ts +0 -163
  674. package/src/publications/notifications.ts +0 -13
  675. package/src/publications/report-builder-dashboard-builders.ts +0 -39
  676. package/src/publications/report-builder-libraries.ts +0 -41
  677. package/src/publications/report-builder-reports.ts +0 -47
  678. package/src/publications/super-admin.ts +0 -13
  679. package/src/publications/user-groups.ts +0 -12
  680. package/src/publications/user-guides.ts +0 -12
  681. package/src/resolveio-server-app.ts +0 -617
  682. package/src/server-app.ts +0 -3354
  683. package/src/services/codex-client.ts +0 -1231
  684. package/src/services/openai-client.ts +0 -265
  685. package/src/types/error-report.ts +0 -26
  686. package/src/types/js-tiktoken.d.ts +0 -11
  687. package/src/types/slow-query-report.ts +0 -28
  688. package/src/util/ai-qa-policy.ts +0 -925
  689. package/src/util/ai-run-evidence-adapters.ts +0 -8347
  690. package/src/util/ai-run-evidence-dashboard.ts +0 -323
  691. package/src/util/ai-run-evidence-eval.ts +0 -1057
  692. package/src/util/ai-run-evidence.ts +0 -1430
  693. package/src/util/ai-runner-artifacts.ts +0 -586
  694. package/src/util/ai-runner-manager-autopilot.ts +0 -961
  695. package/src/util/ai-runner-manager-policy.ts +0 -5011
  696. package/src/util/ai-runner-qa-auth.ts +0 -838
  697. package/src/util/ai-runner-qa-tools.ts +0 -3536
  698. package/src/util/aicoder-runner-v6.ts +0 -3121
  699. package/src/util/common.ts +0 -649
  700. package/src/util/customer-portal-password.ts +0 -183
  701. package/src/util/error-reporter.ts +0 -332
  702. package/src/util/error-tracking.ts +0 -79
  703. package/src/util/openai-usage-cost.ts +0 -114
  704. package/src/util/report-builder-unwinds.ts +0 -180
  705. package/src/util/runner-process-janitor.ts +0 -219
  706. package/src/util/schema-report-builder.ts +0 -448
  707. package/src/util/slow-query-reporter.ts +0 -216
  708. package/src/util/subscription-dependency-context.ts +0 -1096
  709. package/src/util/support-runner-v5.ts +0 -10040
  710. package/src/util/tokenizer.ts +0 -38
  711. package/src/workers/codex-runner.worker.ts +0 -142
  712. package/start_server.sh +0 -5
  713. package/tests/ai-assistant-corpus-build.ts +0 -484
  714. package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
  715. package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
  716. package/tests/ai-assistant-eval-triage.ts +0 -831
  717. package/tests/ai-assistant-openai-e2e.ts +0 -1061
  718. package/tests/ai-assistant-openai-git-e2e.ts +0 -155
  719. package/tests/ai-assistant-preflight-matrix.ts +0 -215
  720. package/tests/ai-assistant-routing-eval.test.ts +0 -585
  721. package/tests/ai-assistant-snf-live-eval.ts +0 -975
  722. package/tests/ai-assistant-utils.test.ts +0 -4834
  723. package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
  724. package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1383
  725. package/tests/ai-run-eval.test.ts +0 -132
  726. package/tests/ai-run-evidence.test.ts +0 -3773
  727. package/tests/ai-runner-contract.test.ts +0 -515
  728. package/tests/aicoder-runner-v6.test.ts +0 -822
  729. package/tests/error-reporter.test.ts +0 -145
  730. package/tests/method-publication-generator.test.ts +0 -46
  731. package/tests/report-builder-linking.test.ts +0 -79
  732. package/tests/resolveio-platform-intelligence.test.ts +0 -352
  733. package/tests/server-app-cron-owner.test.ts +0 -127
  734. package/tests/subscription-connect-race.test.ts +0 -158
  735. package/tests/subscription-dependency-context.test.ts +0 -324
  736. package/tests/subscription-manager-collection-tracking.test.ts +0 -86
  737. package/tests/subscription-manager-invalidation.test.ts +0 -86
  738. package/tests/support-runner-v5.test.ts +0 -3201
  739. package/tsconfig.json +0 -34
  740. /package/{src/private → private}/email-templates/enrollment.html +0 -0
  741. /package/{src/private → private}/email-templates/forgot-password.html +0 -0
  742. /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
  743. /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
  744. /package/{src/private → private}/email-templates/support-ticket.html +0 -0
  745. /package/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/managers/slow-query-verifier.manager.ts"],"names":[],"mappings":"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","file":"slow-query-verifier.manager.js","sourcesContent":["import { createHash } from 'crypto';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { pad, round } from '../util/common';\nimport { MongoClient } from 'mongodb';\nimport { Users } from '../collections/user.collection';\nimport { AppSettings } from '../collections/app-setting.collection';\nimport { buildGeneratedSlowQuerySummary, buildResolveIOProjectSlowQueryDetails } from './customer-notification-content.manager';\n\ntype AIDashboardJob = Record<string, any>;\ntype AICoderAppModel = Record<string, any>;\ntype ClientDBModel = Record<string, any>;\ntype SlowQueryExecutionOverride = Record<string, any>;\ntype SlowQueryVerificationStatus = 'pending' | 'passed' | 'failed';\ntype SlowQueryVerificationRun = Record<string, any>;\ntype SlowQueryLogModel = Record<string, any>;\n\nexport interface TokenEligibilityResult {\n\teligible: boolean;\n\treason?: string;\n}\n\nexport type CheckAICoderTokenEligibilityFn = Function;\n\nexport interface SlowQueryVerifierDependencies {\n\tClientDBs?: any;\n\tClients?: any;\n\tSlowQueryLogs: any;\n\tAICoderApps?: any;\n\tAIDashboardJobs?: any;\n\tcheckAICoderTokenEligibility?: CheckAICoderTokenEligibilityFn;\n}\n\nconst OPTIONAL_COLLECTION = {\n\tfindOne: () => Promise.resolve(null),\n\tfind: () => Promise.resolve([])\n};\n\nlet AICoderApps: any = OPTIONAL_COLLECTION;\nlet AIDashboardJobs: any = OPTIONAL_COLLECTION;\nlet ClientDBs: any = OPTIONAL_COLLECTION;\nlet Clients: any = OPTIONAL_COLLECTION;\nlet SlowQueryLogs: any = null;\nconst DEFAULT_CHECK_AICODER_TOKEN_ELIGIBILITY: CheckAICoderTokenEligibilityFn = () => {\n\treturn Promise.resolve({\n\t\teligible: true\n\t});\n};\nlet checkAICoderTokenEligibility: CheckAICoderTokenEligibilityFn = DEFAULT_CHECK_AICODER_TOKEN_ELIGIBILITY;\nlet configuredSlowQueryVerifierDependencies: SlowQueryVerifierDependencies | null = null;\n\nfunction resolveSlowQueryVerifierDependencies(\n\toverrides?: Partial<SlowQueryVerifierDependencies>\n): SlowQueryVerifierDependencies {\n\tconst resolved: SlowQueryVerifierDependencies = {\n\t\t...(configuredSlowQueryVerifierDependencies || {} as SlowQueryVerifierDependencies),\n\t\t...(overrides || {})\n\t};\n\n\tif (!resolved.SlowQueryLogs) {\n\t\tthrow new Error('SlowQueryVerifier dependencies are not configured.');\n\t}\n\n\treturn resolved;\n}\n\nfunction applySlowQueryVerifierDependencies(dependencies: SlowQueryVerifierDependencies): void {\n\tconfiguredSlowQueryVerifierDependencies = dependencies;\n\tClientDBs = dependencies.ClientDBs || OPTIONAL_COLLECTION;\n\tClients = dependencies.Clients || OPTIONAL_COLLECTION;\n\tSlowQueryLogs = dependencies.SlowQueryLogs;\n\tAICoderApps = dependencies.AICoderApps || OPTIONAL_COLLECTION;\n\tAIDashboardJobs = dependencies.AIDashboardJobs || OPTIONAL_COLLECTION;\n\tcheckAICoderTokenEligibility = dependencies.checkAICoderTokenEligibility || DEFAULT_CHECK_AICODER_TOKEN_ELIGIBILITY;\n}\n\nexport function registerSlowQueryVerifierDependencies(dependencies: SlowQueryVerifierDependencies): void {\n\tapplySlowQueryVerifierDependencies(dependencies);\n\tensureSlowQueryVerifier();\n}\n\nconst VERIFICATION_CHECK_INTERVAL_MS = 60 * 1000;\nconst VERIFICATION_INTERVAL_MS = 5 * 60 * 1000;\nconst VERIFICATION_ATTEMPTS = 3;\nconst VERIFICATION_THRESHOLD_MS = 2000;\nconst AUTO_OPTIMIZE_DEFAULT_IMPROVEMENT_RATIO = 0.7;\nconst AUTO_OPTIMIZE_DEFAULT_RETURNED_DOC_TOLERANCE = 0.15;\nconst AUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_QUERY = 3;\nconst AUTO_OPTIMIZE_DEFAULT_COOLDOWN_MINUTES = 120;\nconst AUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_FINGERPRINT = 4;\nconst AUTO_OPTIMIZE_DEFAULT_FINGERPRINT_WINDOW_HOURS = 24;\nconst AUTO_OPTIMIZE_DEFAULT_OUTPUT_COMPARE_MAX_DOCS = 10000;\nconst DEFAULT_ERROR_ALERT_EMAIL = 'dev@resolveio.com';\nconst MAX_LOCAL_NOTIFICATION_USERS = 5000;\n\ninterface ExplainStageSummary {\n\tstage: string;\n\tpath: string;\n\texecutionTimeMs?: number;\n\tdocsExamined?: number;\n\tkeysExamined?: number;\n\tnReturned?: number;\n}\n\nexport function ensureSlowQueryVerifier(serverConfig?: any): SlowQueryVerifier | null {\n\tconst existing = ResolveIOServer['SlowQueryVerifier'] as SlowQueryVerifier | null;\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tif (!configuredSlowQueryVerifierDependencies) {\n\t\treturn null;\n\t}\n\n\tconst resolvedServerConfig = serverConfig || ResolveIOServer.getServerConfig();\n\tif (!resolvedServerConfig) {\n\t\treturn null;\n\t}\n\n\tconst verifier = new SlowQueryVerifier(resolvedServerConfig);\n\tResolveIOServer['SlowQueryVerifier'] = verifier;\n\treturn verifier;\n}\n\ninterface ExecutionMetrics {\n\tdurationMs?: number;\n\tdocsExamined?: number;\n\tnReturned?: number;\n\ttopStages: ExplainStageSummary[];\n}\n\ninterface OutputFingerprint {\n\texplicitSort: boolean;\n\tdocsCompared: number;\n\ttruncated: boolean;\n\torderedDigest: string;\n\tunorderedDigest: string;\n\tfirstDocDigest: string;\n\tlastDocDigest: string;\n\tdurationMs: number;\n\tmaxDocs: number;\n}\n\ninterface OutputEquivalenceResult {\n\tpassed: boolean;\n\treason: string;\n\tmode: 'ordered' | 'unordered' | 'unknown';\n\tbaseline?: OutputFingerprint;\n\tafter?: OutputFingerprint;\n}\n\ninterface ExplainResult {\n\tdurationMs: number;\n\texplainPlan: Record<string, any>;\n\texplainStats: Record<string, any>;\n\tstageSummaries: ExplainStageSummary[];\n}\n\ntype SlowQueryVerifierErrorCode =\n\t'client_db_not_found' |\n\t'client_db_missing_uri' |\n\t'client_db_missing_database' |\n\t'main_db_unavailable' |\n\t'aggregate_write_stage' |\n\t'bson_too_large' |\n\t'collection_missing';\n\nclass SlowQueryVerifierError extends Error {\n\tpublic readonly code: SlowQueryVerifierErrorCode;\n\n\tconstructor(code: SlowQueryVerifierErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n}\n\ninterface SlowQueryVerifierConfig {\n\tenabled: boolean;\n\tfallbackToMainDB: boolean;\n\tdebugLogging: boolean;\n\tconfigSource: string;\n\tautofixRepoRoot: string;\n\tautofixGithubOwner: string;\n\tautofixGithubRepo: string;\n\tautoOptimizeEnabled: boolean;\n\tautoOptimizeWaitTimeoutMs: number;\n\tautoOptimizeDurationRatioTarget: number;\n\tautoOptimizeDocsRatioTarget: number;\n\tautoOptimizeReturnedDocsTolerance: number;\n\tautoOptimizeMaxAttemptsPerQuery: number;\n\tautoOptimizeCooldownMinutes: number;\n\tautoOptimizeMaxAttemptsPerFingerprint: number;\n\tautoOptimizeFingerprintWindowHours: number;\n\tautoOptimizeRequiredTokens: number;\n\tautoOptimizeOutputCompareEnabled: boolean;\n\tautoOptimizeRequireExactOutput: boolean;\n\tautoOptimizeOutputMismatchRetryCount: number;\n\tautoOptimizeOutputCompareMaxDocs: number;\n\tescalationEmails: string[];\n}\n\ninterface ExplainTarget {\n\ttype: 'client' | 'main';\n\tdbName: string;\n\turi?: string;\n}\n\ntype ExplainVerbosity = 'queryPlanner' | 'executionStats';\n\nexport class SlowQueryVerifier {\n\tprivate readonly _timer?: NodeJS.Timeout;\n\tprivate readonly config: SlowQueryVerifierConfig;\n\tprivate readonly autoOptimizeInFlight = new Set<string>();\n\tprivate readonly autoOptimizeDependenciesAvailable: boolean;\n\tprivate static readonly APP_SETTINGS_CACHE_TTL_MS = 10000;\n\tprivate appSettingsAutoOptimizeCacheExpiresAt = 0;\n\tprivate appSettingsAutoOptimizeCacheValue: boolean | null = null;\n\n\tconstructor(serverConfig?: any, dependencies?: Partial<SlowQueryVerifierDependencies>) {\n\t\tconst resolvedDependencies = resolveSlowQueryVerifierDependencies(dependencies);\n\t\tapplySlowQueryVerifierDependencies(resolvedDependencies);\n\n\t\tthis.config = SlowQueryVerifier.resolveConfig(serverConfig);\n\t\tthis.autoOptimizeDependenciesAvailable = !!(resolvedDependencies.AICoderApps && resolvedDependencies.AIDashboardJobs);\n\n\t\tif (this.config.enabled) {\n\t\t\tthis._timer = setInterval(() => {\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tthis.poll().catch(err => {\n\t\t\t\t\tconsole.error('Slow query verifier poll failed', err);\n\t\t\t\t});\n\t\t\t}, VERIFICATION_CHECK_INTERVAL_MS);\n\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tthis.poll().catch(err => {\n\t\t\t\tconsole.error('Slow query verifier failed to start', err);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate static resolveConfig(serverConfig?: any): SlowQueryVerifierConfig {\n\t\tconst slowQueryConfig = (serverConfig && (serverConfig.slowQuery || serverConfig.SLOW_QUERY)) || {};\n\t\tconst verifierConfig = (slowQueryConfig && (slowQueryConfig.verifier || slowQueryConfig.slowQueryVerifier)) || {};\n\t\tconst autofixConfig = (serverConfig && (serverConfig.autofix || serverConfig.AUTOFIX)) || {};\n\n\t\tconst getBoolean = (envKey: string, configKey: string, fallback = true) => {\n\t\t\tif (typeof process.env[envKey] !== 'undefined') {\n\t\t\t\treturn process.env[envKey] === 'true';\n\t\t\t}\n\t\t\tif (typeof verifierConfig[configKey] !== 'undefined') {\n\t\t\t\treturn !!verifierConfig[configKey];\n\t\t\t}\n\t\t\treturn fallback;\n\t\t};\n\n\t\tconst getNumber = (envKey: string, configKey: string, fallback: number): number => {\n\t\t\tif (typeof process.env[envKey] !== 'undefined') {\n\t\t\t\tconst parsedEnv = Number(process.env[envKey]);\n\t\t\t\tif (Number.isFinite(parsedEnv)) {\n\t\t\t\t\treturn parsedEnv;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof verifierConfig[configKey] !== 'undefined') {\n\t\t\t\tconst parsedConfig = Number(verifierConfig[configKey]);\n\t\t\t\tif (Number.isFinite(parsedConfig)) {\n\t\t\t\t\treturn parsedConfig;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn fallback;\n\t\t};\n\n\t\tconst getString = (envKey: string, configKey: string, fallback = ''): string => {\n\t\t\tif (typeof process.env[envKey] !== 'undefined') {\n\t\t\t\treturn String(process.env[envKey] || '').trim();\n\t\t\t}\n\t\t\tif (typeof verifierConfig[configKey] !== 'undefined') {\n\t\t\t\treturn String(verifierConfig[configKey] || '').trim();\n\t\t\t}\n\t\t\tif (typeof slowQueryConfig[configKey] !== 'undefined') {\n\t\t\t\treturn String(slowQueryConfig[configKey] || '').trim();\n\t\t\t}\n\t\t\tif (typeof autofixConfig[configKey] !== 'undefined') {\n\t\t\t\treturn String(autofixConfig[configKey] || '').trim();\n\t\t\t}\n\t\t\treturn fallback;\n\t\t};\n\n\t\tconst parseEmails = (value: any): string[] => {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(item => `${item || ''}`.trim().toLowerCase()).filter(Boolean);\n\t\t\t}\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn value.split(',').map(item => item.trim().toLowerCase()).filter(Boolean);\n\t\t\t}\n\t\t\treturn [];\n\t\t};\n\n\t\tconst clampRatio = (value: number, fallback: number): number => {\n\t\t\tif (!Number.isFinite(value)) {\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\tif (value <= 0 || value >= 1) {\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\n\t\tconst normalizePositiveInt = (value: number, fallback: number): number => {\n\t\t\tif (!Number.isFinite(value) || value <= 0) {\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\treturn Math.floor(value);\n\t\t};\n\n\t\tconst normalizeNonNegativeInt = (value: number, fallback = 0): number => {\n\t\t\tif (!Number.isFinite(value) || value < 0) {\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\treturn Math.floor(value);\n\t\t};\n\n\t\tconst escalationEmails = parseEmails(\n\t\t\tprocess.env.SLOW_QUERY_ESCALATION_EMAILS\n\t\t\t\t|| verifierConfig.escalationEmails\n\t\t\t\t|| slowQueryConfig.escalationEmails\n\t\t\t\t|| slowQueryConfig.notifyEmails\n\t\t);\n\n\t\treturn {\n\t\t\tenabled: true,\n\t\t\tfallbackToMainDB: getBoolean('SLOW_QUERY_VERIFIER_FALLBACK_MAIN_DB', 'fallbackToMainDB', true),\n\t\t\tdebugLogging: getBoolean('SLOW_QUERY_VERIFIER_DEBUG_LOGS', 'debugLogging', false),\n\t\t\tconfigSource: Object.keys(verifierConfig).length ? 'serverConfig' : 'defaults',\n\t\t\tautofixRepoRoot: getString('AUTOFIX_REPO_ROOT', 'repoRoot', '/var/app/current'),\n\t\t\tautofixGithubOwner: getString('AUTOFIX_GITHUB_OWNER', 'githubOwner', 'resolveio'),\n\t\t\tautofixGithubRepo: getString('AUTOFIX_GITHUB_REPO', 'githubRepo', ''),\n\t\t\tautoOptimizeEnabled: getBoolean('SLOW_QUERY_AUTO_OPTIMIZE_ENABLED', 'autoOptimizeEnabled', false),\n\t\t\tautoOptimizeWaitTimeoutMs: getNumber('SLOW_QUERY_AUTO_OPTIMIZE_WAIT_TIMEOUT_MS', 'autoOptimizeWaitTimeoutMs', 45 * 60 * 1000),\n\t\t\tautoOptimizeDurationRatioTarget: clampRatio(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_DURATION_RATIO', 'autoOptimizeDurationRatioTarget', AUTO_OPTIMIZE_DEFAULT_IMPROVEMENT_RATIO),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_IMPROVEMENT_RATIO\n\t\t\t),\n\t\t\tautoOptimizeDocsRatioTarget: clampRatio(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_DOCS_RATIO', 'autoOptimizeDocsRatioTarget', AUTO_OPTIMIZE_DEFAULT_IMPROVEMENT_RATIO),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_IMPROVEMENT_RATIO\n\t\t\t),\n\t\t\tautoOptimizeReturnedDocsTolerance: clampRatio(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_RETURNED_DOCS_TOLERANCE', 'autoOptimizeReturnedDocsTolerance', AUTO_OPTIMIZE_DEFAULT_RETURNED_DOC_TOLERANCE),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_RETURNED_DOC_TOLERANCE\n\t\t\t),\n\t\t\tautoOptimizeMaxAttemptsPerQuery: normalizePositiveInt(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_MAX_ATTEMPTS_PER_QUERY', 'autoOptimizeMaxAttemptsPerQuery', AUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_QUERY),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_QUERY\n\t\t\t),\n\t\t\tautoOptimizeCooldownMinutes: normalizeNonNegativeInt(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_COOLDOWN_MINUTES', 'autoOptimizeCooldownMinutes', AUTO_OPTIMIZE_DEFAULT_COOLDOWN_MINUTES),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_COOLDOWN_MINUTES\n\t\t\t),\n\t\t\tautoOptimizeMaxAttemptsPerFingerprint: normalizePositiveInt(\n\t\t\t\tgetNumber(\n\t\t\t\t\t'SLOW_QUERY_AUTO_OPTIMIZE_MAX_ATTEMPTS_PER_FINGERPRINT',\n\t\t\t\t\t'autoOptimizeMaxAttemptsPerFingerprint',\n\t\t\t\t\tAUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_FINGERPRINT\n\t\t\t\t),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_MAX_ATTEMPTS_PER_FINGERPRINT\n\t\t\t),\n\t\t\tautoOptimizeFingerprintWindowHours: normalizePositiveInt(\n\t\t\t\tgetNumber(\n\t\t\t\t\t'SLOW_QUERY_AUTO_OPTIMIZE_FINGERPRINT_WINDOW_HOURS',\n\t\t\t\t\t'autoOptimizeFingerprintWindowHours',\n\t\t\t\t\tAUTO_OPTIMIZE_DEFAULT_FINGERPRINT_WINDOW_HOURS\n\t\t\t\t),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_FINGERPRINT_WINDOW_HOURS\n\t\t\t),\n\t\t\tautoOptimizeRequiredTokens: normalizeNonNegativeInt(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_REQUIRED_TOKENS', 'autoOptimizeRequiredTokens', 0),\n\t\t\t\t0\n\t\t\t),\n\t\t\tautoOptimizeOutputCompareEnabled: getBoolean('SLOW_QUERY_AUTO_OPTIMIZE_OUTPUT_COMPARE_ENABLED', 'autoOptimizeOutputCompareEnabled', true),\n\t\t\tautoOptimizeRequireExactOutput: getBoolean('SLOW_QUERY_AUTO_OPTIMIZE_REQUIRE_EXACT_OUTPUT', 'autoOptimizeRequireExactOutput', true),\n\t\t\tautoOptimizeOutputMismatchRetryCount: normalizeNonNegativeInt(\n\t\t\t\tgetNumber('SLOW_QUERY_AUTO_OPTIMIZE_OUTPUT_MISMATCH_RETRY_COUNT', 'autoOptimizeOutputMismatchRetryCount', 2),\n\t\t\t\t2\n\t\t\t),\n\t\t\tautoOptimizeOutputCompareMaxDocs: normalizePositiveInt(\n\t\t\t\tgetNumber(\n\t\t\t\t\t'SLOW_QUERY_AUTO_OPTIMIZE_OUTPUT_COMPARE_MAX_DOCS',\n\t\t\t\t\t'autoOptimizeOutputCompareMaxDocs',\n\t\t\t\t\tAUTO_OPTIMIZE_DEFAULT_OUTPUT_COMPARE_MAX_DOCS\n\t\t\t\t),\n\t\t\t\tAUTO_OPTIMIZE_DEFAULT_OUTPUT_COMPARE_MAX_DOCS\n\t\t\t),\n\t\t\tescalationEmails\n\t\t};\n\t}\n\n\tprivate parseBooleanEnv(envKey: string): boolean | null {\n\t\tif (typeof process.env[envKey] === 'undefined') {\n\t\t\treturn null;\n\t\t}\n\t\treturn process.env[envKey] === 'true';\n\t}\n\n\tprivate async resolveAutoOptimizeEnabled(): Promise<boolean> {\n\t\tif (!this.autoOptimizeDependenciesAvailable) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst now = Date.now();\n\t\tif (this.appSettingsAutoOptimizeCacheValue !== null && now < this.appSettingsAutoOptimizeCacheExpiresAt) {\n\t\t\treturn this.appSettingsAutoOptimizeCacheValue;\n\t\t}\n\n\t\tconst envValue = this.parseBooleanEnv('SLOW_QUERY_AUTO_OPTIMIZE_ENABLED');\n\t\tlet enabled = envValue !== null ? envValue : !!this.config.autoOptimizeEnabled;\n\t\ttry {\n\t\t\tif (AppSettings && typeof AppSettings.findOne === 'function') {\n\t\t\t\tconst activeSetting = await AppSettings.findOne({\n\t\t\t\t\tis_active: {\n\t\t\t\t\t\t$ne: false\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tupdatedAt: -1,\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t}\n\t\t\t\t}) || await AppSettings.findOne({}, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tupdatedAt: -1,\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (activeSetting && typeof activeSetting.enable_slow_query_optimizer === 'boolean') {\n\t\t\t\t\tenabled = !!activeSetting.enable_slow_query_optimizer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (this.config?.debugLogging) {\n\t\t\t\tconsole.warn('SlowQueryVerifier failed to read app settings slow-query optimizer toggle', error);\n\t\t\t}\n\t\t}\n\n\t\tthis.appSettingsAutoOptimizeCacheValue = enabled;\n\t\tthis.appSettingsAutoOptimizeCacheExpiresAt = now + SlowQueryVerifier.APP_SETTINGS_CACHE_TTL_MS;\n\t\treturn enabled;\n\t}\n\n\tprivate async poll() {\n\t\tconst autoOptimizeEnabled = await this.resolveAutoOptimizeEnabled();\n\t\tif (!autoOptimizeEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst candidates = await SlowQueryLogs.find({\n\t\t\tignored: {\n\t\t\t\t$ne: true\n\t\t\t},\n\t\t\tverification_status: {\n\t\t\t\t$in: [null, 'pending']\n\t\t\t},\n\t\t\t$or: [\n\t\t\t\t{\n\t\t\t\t\tverification_next_run_at: {\n\t\t\t\t\t\t$exists: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tverification_next_run_at: {\n\t\t\t\t\t\t$lte: now\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}, {\n\t\t\tsort: {\n\t\t\t\tverification_next_run_at: 1,\n\t\t\t\tlast_seen_at: -1\n\t\t\t},\n\t\t\tlimit: 5\n\t\t});\n\n\t\tfor (const candidate of candidates) {\n\t\t\tawait this.processCandidate(candidate);\n\t\t}\n\t}\n\n\tprivate async processCandidate(candidate: SlowQueryLogModel) {\n\t\tif (!candidate || !candidate._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst claimAt = new Date(Date.now() + VERIFICATION_INTERVAL_MS);\n\t\tawait SlowQueryLogs.updateOne({_id: candidate._id}, {\n\t\t\t$set: {\n\t\t\t\tverification_next_run_at: claimAt\n\t\t\t}\n\t\t});\n\n\t\ttry {\n\t\t\tconst result = await this.runExplain(candidate);\n\t\t\tawait this.handleExplainResult(candidate, result);\n\t\t}\n\t\tcatch (err) {\n\t\t\tawait this.handleExplainError(candidate, err);\n\t\t}\n\t}\n\n\tpublic async generateExplainForLog(logId: string): Promise<void> {\n\t\tif (!logId) {\n\t\t\tthrow new Error('Slow query log ID is required.');\n\t\t}\n\n\t\tconst log = await SlowQueryLogs.findOne({_id: logId});\n\n\t\tif (!log) {\n\t\t\tthrow new Error('Slow query log not found.');\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.runExplain(log);\n\t\t\tawait this.handleExplainResult(log, result);\n\t\t}\n\t\tcatch (err) {\n\t\t\tawait this.handleExplainError(log, err);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tpublic async runLog(logId: string, options?: { force?: boolean }): Promise<{\n\t\tstatus: 'in_progress' | 'success' | 'failed' | 'updated' | 'not_found';\n\t\treason?: string;\n\t\tlog?: SlowQueryLogModel;\n\t}> {\n\t\tif (!logId) {\n\t\t\tthrow new Error('Slow query log ID is required.');\n\t\t}\n\n\t\tconst existing = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!existing) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Slow query log not found.'\n\t\t\t};\n\t\t}\n\n\t\tif (existing.ignored) {\n\t\t\tthrow new Error('Slow query log is ignored.');\n\t\t}\n\n\t\tif (this.autoOptimizeInFlight.has(logId) || existing.auto_fix_status === 'running' || existing.status === 'queued') {\n\t\t\treturn {\n\t\t\t\tstatus: 'in_progress',\n\t\t\t\treason: 'Slow query optimization is already running.',\n\t\t\t\tlog: existing\n\t\t\t};\n\t\t}\n\n\t\tthis.autoOptimizeInFlight.add(logId);\n\t\ttry {\n\t\t\tawait this.runLogWithRetries(logId, {\n\t\t\t\tforce: !!options?.force,\n\t\t\t\tretryOutputMismatch: true\n\t\t\t});\n\t\t}\n\t\tfinally {\n\t\t\tthis.autoOptimizeInFlight.delete(logId);\n\t\t}\n\n\t\tconst updated = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!updated) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Slow query log no longer exists.'\n\t\t\t};\n\t\t}\n\n\t\tif (updated.auto_fix_status === 'running' || updated.status === 'queued') {\n\t\t\treturn {\n\t\t\t\tstatus: 'in_progress',\n\t\t\t\treason: 'Slow query optimization queued.',\n\t\t\t\tlog: updated\n\t\t\t};\n\t\t}\n\n\t\tif (updated.auto_fix_status === 'completed' || updated.status === 'optimized') {\n\t\t\treturn {\n\t\t\t\tstatus: 'success',\n\t\t\t\treason: 'Slow query optimization completed.',\n\t\t\t\tlog: updated\n\t\t\t};\n\t\t}\n\n\t\tif (updated.auto_fix_status === 'failed') {\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason: updated.verification_notes || updated.auto_fix_disabled_reason || 'Slow query optimization failed.',\n\t\t\t\tlog: updated\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstatus: 'updated',\n\t\t\treason: updated.verification_notes || '',\n\t\t\tlog: updated\n\t\t};\n\t}\n\n\tpublic async queueLogRun(logId: string, options?: { force?: boolean }): Promise<{\n\t\tstatus: 'in_progress' | 'not_found' | 'failed';\n\t\treason?: string;\n\t\tlog?: SlowQueryLogModel;\n\t}> {\n\t\tif (!logId) {\n\t\t\tthrow new Error('Slow query log ID is required.');\n\t\t}\n\n\t\tconst existing = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!existing) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Slow query log not found.'\n\t\t\t};\n\t\t}\n\n\t\tif (existing.ignored) {\n\t\t\tthrow new Error('Slow query log is ignored.');\n\t\t}\n\n\t\tif (this.autoOptimizeInFlight.has(logId) || existing.auto_fix_status === 'running' || existing.status === 'queued') {\n\t\t\treturn {\n\t\t\t\tstatus: 'in_progress',\n\t\t\t\treason: 'Slow query optimization is already running.',\n\t\t\t\tlog: existing\n\t\t\t};\n\t\t}\n\n\t\tconst queuedAt = new Date();\n\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t$set: {\n\t\t\t\tstatus: 'queued',\n\t\t\t\tauto_fix_status: 'queued',\n\t\t\t\tverification_notes: 'Slow query optimization queued from super-admin.',\n\t\t\t\tlast_triaged_by: 'super-admin',\n\t\t\t\tlast_triaged_at: queuedAt\n\t\t\t}\n\t\t});\n\t\tconst queuedLog = (await SlowQueryLogs.findOne({_id: logId})) || existing;\n\n\t\tthis.autoOptimizeInFlight.add(logId);\n\t\tsetImmediate(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.runLogWithRetries(logId, {\n\t\t\t\t\tforce: !!options?.force,\n\t\t\t\t\tretryOutputMismatch: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error('Slow query queued run failed', {logId, error: (error as Error)?.message || error});\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis.autoOptimizeInFlight.delete(logId);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tstatus: 'in_progress',\n\t\t\treason: 'Slow query optimization queued.',\n\t\t\tlog: queuedLog\n\t\t};\n\t}\n\n\tpublic async deployLog(logId: string): Promise<{\n\t\tstatus: 'success' | 'failed' | 'not_found';\n\t\treason?: string;\n\t\tlog?: SlowQueryLogModel;\n\t}> {\n\t\tif (!logId) {\n\t\t\tthrow new Error('Slow query log ID is required.');\n\t\t}\n\n\t\tconst log = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!log) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Slow query log not found.'\n\t\t\t};\n\t\t}\n\n\t\tconst jobId = String(log.openai_task_id || '').trim();\n\t\tif (!jobId) {\n\t\t\tthrow new Error('Slow query log does not have a dashboard job id to deploy.');\n\t\t}\n\n\t\ttry {\n\t\t\tconst job = await this.publishDashboardJob(jobId);\n\t\t\tconst publishOutcome = this.evaluateDashboardPublishOutcome(job);\n\t\t\tconst now = new Date();\n\t\t\tconst existingResult = (log.auto_fix_result && typeof log.auto_fix_result === 'object')\n\t\t\t\t? {...log.auto_fix_result}\n\t\t\t\t: {};\n\t\t\texistingResult.manual_deploy = {\n\t\t\t\tjob_id: jobId,\n\t\t\t\trequested_at: now,\n\t\t\t\tsuccess: publishOutcome.success,\n\t\t\t\tmessage: publishOutcome.message,\n\t\t\t\tbranch_name: publishOutcome.branchName || existingResult.publish_branch || ''\n\t\t\t};\n\t\t\tif (publishOutcome.branchName) {\n\t\t\t\texistingResult.publish_branch = publishOutcome.branchName;\n\t\t\t}\n\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tauto_fix_result: existingResult,\n\t\t\t\t\tverification_notes: publishOutcome.success\n\t\t\t\t\t\t? `Manual deploy completed: ${publishOutcome.message}`\n\t\t\t\t\t\t: `Manual deploy failed: ${publishOutcome.message}`,\n\t\t\t\t\tlast_triaged_by: 'super-admin',\n\t\t\t\t\tlast_triaged_at: now\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst refreshed = (await SlowQueryLogs.findOne({_id: logId})) || log;\n\t\t\treturn {\n\t\t\t\tstatus: publishOutcome.success ? 'success' : 'failed',\n\t\t\t\treason: publishOutcome.message,\n\t\t\t\tlog: refreshed\n\t\t\t};\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = (error as Error)?.message || 'Manual deploy failed.';\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tverification_notes: `Manual deploy failed: ${message}`,\n\t\t\t\t\tlast_triaged_by: 'super-admin',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst refreshed = await SlowQueryLogs.findOne({_id: logId});\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason: message,\n\t\t\t\tlog: refreshed || log\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate async runLogWithRetries(\n\t\tlogId: string,\n\t\toptions: { force: boolean; retryOutputMismatch: boolean }\n\t): Promise<SlowQueryLogModel | null> {\n\t\tconst retryBudget = options.retryOutputMismatch\n\t\t\t? (Number.isFinite(Number(this.config.autoOptimizeOutputMismatchRetryCount))\n\t\t\t\t? Number(this.config.autoOptimizeOutputMismatchRetryCount)\n\t\t\t\t: 0)\n\t\t\t: 0;\n\t\tlet retriesUsed = 0;\n\n\t\twhile (true) {\n\t\t\tawait this.runAutoOptimization(logId, options.force);\n\t\t\tconst latest = await SlowQueryLogs.findOne({_id: logId});\n\t\t\tif (!latest) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.retryOutputMismatch\n\t\t\t\t|| !this.shouldRetryForOutputMismatch(latest)\n\t\t\t\t|| retriesUsed >= retryBudget\n\t\t\t) {\n\t\t\t\treturn latest;\n\t\t\t}\n\n\t\t\tconst maxAttempts = Number.isFinite(Number(this.config.autoOptimizeMaxAttemptsPerQuery))\n\t\t\t\t? Number(this.config.autoOptimizeMaxAttemptsPerQuery)\n\t\t\t\t: 0;\n\t\t\tconst attemptsUsed = Number.isFinite(Number(latest.auto_fix_attempt_count))\n\t\t\t\t? Number(latest.auto_fix_attempt_count)\n\t\t\t\t: 0;\n\t\t\tif (maxAttempts > 0 && attemptsUsed >= maxAttempts) {\n\t\t\t\treturn latest;\n\t\t\t}\n\n\t\t\tretriesUsed += 1;\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tverification_notes: `Output equivalence mismatch detected. Retrying (${retriesUsed}/${retryBudget}).`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate shouldRetryForOutputMismatch(log: SlowQueryLogModel): boolean {\n\t\tif (!log || log.ignored || log.auto_fix_status !== 'failed') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst result = (log.auto_fix_result && typeof log.auto_fix_result === 'object')\n\t\t\t? log.auto_fix_result\n\t\t\t: {};\n\t\tconst validation = (result.validation && typeof result.validation === 'object')\n\t\t\t? result.validation\n\t\t\t: {};\n\t\tconst outputEquivalence = result.output_equivalence;\n\t\tconst validationReason = String(validation.reason || '').toLowerCase();\n\t\tconst notes = String(log.verification_notes || '').toLowerCase();\n\n\t\tif (outputEquivalence && outputEquivalence.passed === false) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn validationReason.includes('output equivalence')\n\t\t\t|| notes.includes('output equivalence');\n\t}\n\n\tprivate async runExplain(log: SlowQueryLogModel, overrides?: SlowQueryExecutionOverride): Promise<ExplainResult> {\n\t\tconst collectionName = log.collection;\n\n\t\tif (!collectionName) {\n\t\t\tthrow new Error('Slow query missing collection name.');\n\t\t}\n\n\t\tconst target = await this.resolveExplainTarget(log);\n\t\tlet client: MongoClient | undefined;\n\t\tlet db: any;\n\n\t\ttry {\n\t\t\tif (target.type === 'client') {\n\t\t\t\tif (!target.uri) {\n\t\t\t\t\tthrow new SlowQueryVerifierError('client_db_missing_uri', 'Client DB missing uri.');\n\t\t\t\t}\n\n\t\t\t\tclient = await MongoClient.connect(target.uri, {\n\t\t\t\t\tconnectTimeoutMS: 10000,\n\t\t\t\t\tserverSelectionTimeoutMS: 10000,\n\t\t\t\t\treadPreference: 'secondaryPreferred'\n\t\t\t\t});\n\t\t\t\tdb = client.db(target.dbName);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdb = ResolveIOServer.getMainDB();\n\t\t\t}\n\n\t\t\tif (!db) {\n\t\t\t\tthrow new SlowQueryVerifierError('main_db_unavailable', 'Main server DB is not available.');\n\t\t\t}\n\n\t\t\tconst effectiveLog = SlowQueryVerifier.applyQueryOverrides(log, overrides);\n\t\t\tconst pipeline = SlowQueryVerifier.extractPipelineFromLog(effectiveLog);\n\t\t\tconst filter = effectiveLog.filter ?? {};\n\t\t\tconst findOptions = SlowQueryVerifier.extractFindOptions(effectiveLog.options);\n\t\t\tconst aggregateOptions = SlowQueryVerifier.extractAggregateOptions(effectiveLog.options);\n\t\t\tlet explainResponse: Record<string, any>;\n\t\t\tlet usedVerbosity: ExplainVerbosity = 'executionStats';\n\n\t\t\tconst explainAggregate = async (verbosity: ExplainVerbosity): Promise<Record<string, any>> => {\n\t\t\t\tif (SlowQueryVerifier.pipelineHasWriteStage(pipeline as any[])) {\n\t\t\t\t\tthrow new SlowQueryVerifierError('aggregate_write_stage', 'Aggregate pipeline includes a write stage; verification skipped.');\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\treturn await db.collection(collectionName)\n\t\t\t\t\t\t.aggregate(pipeline, {\n\t\t\t\t\t\t\t...(aggregateOptions || {}),\n\t\t\t\t\t\t\treadPreference: 'secondaryPreferred'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.explain(verbosity);\n\t\t\t\t}\n\t\t\t\tcatch (err: any) {\n\t\t\t\t\tif (SlowQueryVerifier.isAggregateExplainWriteConcernError(err)) {\n\t\t\t\t\t\treturn await db.command(\n\t\t\t\t\t\t\tSlowQueryVerifier.buildAggregateExplainCommand(collectionName, pipeline as any[], aggregateOptions, verbosity),\n\t\t\t\t\t\t\t{readPreference: 'secondaryPreferred'}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tif (pipeline) {\n\t\t\t\t\texplainResponse = await explainAggregate('executionStats');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst cursor = SlowQueryVerifier.buildFindCursor(db.collection(collectionName), filter, findOptions);\n\t\t\t\t\texplainResponse = await cursor.explain('executionStats');\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err: any) {\n\t\t\t\tconst code = err?.code;\n\t\t\t\tconst codeName = `${err?.codeName || ''}`.trim();\n\t\t\t\tconst message = `${err?.message || ''}`.toLowerCase();\n\n\t\t\t\tif (code === 26 || codeName === 'NamespaceNotFound' || message.includes('ns does not exist')) {\n\t\t\t\t\tthrow new SlowQueryVerifierError('collection_missing', `Collection '${collectionName}' not found in ${target.type} DB.`);\n\t\t\t\t}\n\n\t\t\t\tif (pipeline) {\n\t\t\t\t\tif (SlowQueryVerifier.isBsonObjectTooLargeError(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\texplainResponse = await explainAggregate('queryPlanner');\n\t\t\t\t\t\t\tusedVerbosity = 'queryPlanner';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (fallbackErr: any) {\n\t\t\t\t\t\t\t\tif (SlowQueryVerifier.isBsonObjectTooLargeError(fallbackErr)) {\n\t\t\t\t\t\t\t\t\tconst durationMs = await SlowQueryVerifier.measureExecution(db, collectionName, pipeline, filter, findOptions, aggregateOptions);\n\t\t\t\t\t\t\t\t\tif (!SlowQueryVerifier.isValidDuration(durationMs)) {\n\t\t\t\t\t\t\t\t\t\tthrow new SlowQueryVerifierError('bson_too_large', 'Explain/query payload too large to verify.');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tdurationMs,\n\t\t\t\t\t\t\t\t\t\texplainPlan: {},\n\t\t\t\t\t\t\t\t\t\texplainStats: {},\n\t\t\t\t\t\t\t\t\t\tstageSummaries: []\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthrow fallbackErr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (SlowQueryVerifier.isBsonObjectTooLargeError(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst cursor = SlowQueryVerifier.buildFindCursor(db.collection(collectionName), filter, findOptions);\n\t\t\t\t\t\t\texplainResponse = await cursor.explain('queryPlanner');\n\t\t\t\t\t\t\tusedVerbosity = 'queryPlanner';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\tconst durationMs = await SlowQueryVerifier.measureExecution(db, collectionName, pipeline, filter, findOptions, aggregateOptions);\n\t\t\t\t\t\t\t\tif (!SlowQueryVerifier.isValidDuration(durationMs)) {\n\t\t\t\t\t\t\t\t\tthrow new SlowQueryVerifierError('bson_too_large', 'Explain/query payload too large to verify.');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tdurationMs,\n\t\t\t\t\t\t\t\t\texplainPlan: {},\n\t\t\t\t\t\t\t\t\texplainStats: {},\n\t\t\t\t\t\t\t\t\tstageSummaries: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet durationMs = SlowQueryVerifier.resolveDurationMs(explainResponse);\n\n\t\t\tif (!SlowQueryVerifier.isValidDuration(durationMs)) {\n\t\t\t\tdurationMs = await SlowQueryVerifier.measureExecution(db, collectionName, pipeline, filter, findOptions, aggregateOptions);\n\t\t\t}\n\n\t\t\tconst explainPlanRaw = explainResponse?.queryPlanner ?? explainResponse ?? {};\n\t\t\tconst explainStatsRaw = usedVerbosity === 'queryPlanner' ? {} : (explainResponse?.executionStats ?? {});\n\t\t\tconst stageSummaries = SlowQueryVerifier.extractStageSummaries(explainResponse, explainStatsRaw);\n\n\t\t\tconst explainPlan = SlowQueryVerifier.sanitizeExplainPayload(SlowQueryVerifier.normalizeExplainPayload(explainPlanRaw));\n\t\t\tconst explainStats = SlowQueryVerifier.sanitizeExplainPayload(SlowQueryVerifier.normalizeExplainPayload(explainStatsRaw));\n\n\t\t\treturn {\n\t\t\t\tdurationMs,\n\t\t\t\texplainPlan,\n\t\t\t\texplainStats,\n\t\t\t\tstageSummaries\n\t\t\t};\n\t\t}\n\t\tfinally {\n\t\t\tif (client) {\n\t\t\t\tawait client.close();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async measureQuery(log: SlowQueryLogModel, overrides?: SlowQueryExecutionOverride): Promise<ExplainResult> {\n\t\treturn this.runExplain(log, overrides);\n\t}\n\n\tprivate async handleExplainResult(log: SlowQueryLogModel, result: ExplainResult) {\n\t\tif (!log._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingRuns = (Array.isArray(log.verification_runs) ? log.verification_runs : [])\n\t\t\t.filter(run => SlowQueryVerifier.isValidDuration(run.duration_ms));\n\t\tconst durationValid = SlowQueryVerifier.isValidDuration(result.durationMs);\n\n\t\tif (!durationValid) {\n\t\t\tif (this.config.debugLogging) {\n\t\t\t\tconsole.warn('Slow query verification reported invalid duration; keeping log pending.', log.collection, result.durationMs);\n\t\t\t}\n\n\t\t\tconst previousInvalidAttempts = typeof log.verification_invalid_attempts === 'number'\n\t\t\t\t? log.verification_invalid_attempts\n\t\t\t\t: 0;\n\t\t\tconst invalidAttempts = previousInvalidAttempts + 1;\n\t\t\tconst shouldFail = invalidAttempts >= VERIFICATION_ATTEMPTS;\n\n\t\t\tconst nextRunAt = new Date(Date.now() + VERIFICATION_INTERVAL_MS);\n\t\t\tconst updateOps: Record<string, any> = {\n\t\t\t\t$set: {\n\t\t\t\t\tverification_runs: existingRuns,\n\t\t\t\t\tverification_status: shouldFail ? 'failed' : 'pending',\n\t\t\t\t\tverification_invalid_attempts: invalidAttempts,\n\t\t\t\t\texplain_plan: result.explainPlan,\n\t\t\t\t\texplain_execution_stats: result.explainStats,\n\t\t\t\t\texplain_generated_at: new Date(),\n\t\t\t\t\tverification_notes: shouldFail ? 'Verification failed: invalid duration' : 'Explain returned invalid duration'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (shouldFail) {\n\t\t\t\tupdateOps.$unset = {\n\t\t\t\t\tverification_next_run_at: ''\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdateOps.$set.verification_next_run_at = nextRunAt;\n\t\t\t}\n\n\t\t\tawait SlowQueryLogs.updateOne({_id: log._id}, updateOps);\n\t\t\treturn;\n\t\t}\n\n\t\tconst runs: SlowQueryVerificationRun[] = existingRuns\n\t\t\t.concat([\n\t\t\t\t{\n\t\t\t\t\ttimestamp: new Date(),\n\t\t\t\t\tduration_ms: result.durationMs\n\t\t\t\t}\n\t\t\t])\n\t\t\t.slice(-VERIFICATION_ATTEMPTS);\n\n\t\tconst hasFastRun = runs.some(run => run.duration_ms < VERIFICATION_THRESHOLD_MS);\n\n\t\tif (hasFastRun) {\n\t\t\t// const durations = runs.map(run => `${run.duration_ms}ms`).join(', ');\n\t\t\t// console.info('Removing slow query log; not consistently slow.', log.collection, durations);\n\t\t\tawait SlowQueryLogs.deleteOne({_id: log._id});\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasEnoughRuns = runs.length >= VERIFICATION_ATTEMPTS;\n\t\tlet status: SlowQueryVerificationStatus = hasEnoughRuns ? 'passed' : 'pending';\n\t\tlet nextRunAt: Date | undefined;\n\n\t\tif (!hasEnoughRuns) {\n\t\t\tnextRunAt = new Date(Date.now() + VERIFICATION_INTERVAL_MS);\n\t\t}\n\t\tconst updateOps: Record<string, any> = {\n\t\t\t$set: {\n\t\t\t\tverification_runs: runs,\n\t\t\t\tverification_status: status,\n\t\t\t\tverification_invalid_attempts: 0,\n\t\t\t\texplain_plan: result.explainPlan,\n\t\t\t\texplain_execution_stats: result.explainStats,\n\t\t\t\texplain_generated_at: new Date()\n\t\t\t}\n\t\t};\n\n\t\tif (nextRunAt) {\n\t\t\tupdateOps.$set.verification_next_run_at = nextRunAt;\n\t\t}\n\t\telse {\n\t\t\tupdateOps.$unset = updateOps.$unset || {};\n\t\t\tupdateOps.$unset.verification_next_run_at = '';\n\t\t}\n\n\t\tawait SlowQueryLogs.updateOne({_id: log._id}, updateOps);\n\n\t\tif (status === 'passed') {\n\t\t\tawait this.assignSlowQueryCounter(log._id);\n\t\t\tthis.scheduleAutoOptimization(log._id);\n\t\t}\n\t}\n\n\tprivate async handleExplainError(log: SlowQueryLogModel, err: any) {\n\t\tif (!log._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = typeof err === 'string' ? err : err?.message || 'Unknown error';\n\t\tconst code = err instanceof SlowQueryVerifierError ? err.code : null;\n\t\tconst permanentFailure = !!code && ['client_db_not_found', 'client_db_missing_uri', 'client_db_missing_database', 'main_db_unavailable', 'aggregate_write_stage', 'bson_too_large', 'collection_missing'].includes(code);\n\n\t\tif (this.config.debugLogging) {\n\t\t\tconsole.error('Slow query verification error for', log.collection, message);\n\t\t}\n\t\telse if (!permanentFailure) {\n\t\t\tconsole.warn('Slow query verification error for', log.collection, message);\n\t\t}\n\n\t\tif (permanentFailure) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: log._id}, {\n\t\t\t\t$set: {\n\t\t\t\t\tverification_status: 'failed',\n\t\t\t\t\tverification_notes: `Verification failed: ${message}`\n\t\t\t\t},\n\t\t\t\t$unset: {\n\t\t\t\t\tverification_next_run_at: ''\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextRunAt = new Date(Date.now() + VERIFICATION_INTERVAL_MS);\n\t\tawait SlowQueryLogs.updateOne({_id: log._id}, {\n\t\t\t$set: {\n\t\t\t\tverification_next_run_at: nextRunAt,\n\t\t\t\tverification_notes: `Verification error: ${message}`\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async assignSlowQueryCounter(logId: string) {\n\t\tif (!logId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst latest = await SlowQueryLogs.findOne({_id: logId});\n\n\t\tif (!latest) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasNumber = typeof latest.slow_query_count === 'number' && latest.slow_query_count > 0;\n\n\t\tif (hasNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst counterValue = await ResolveIOServer.getMainServer().getMethodManager().callMethod('incCounter', 'slow_query');\n\t\tconst counterString = pad(counterValue, 6);\n\n\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t$set: {\n\t\t\t\tslow_query_count: counterValue,\n\t\t\t\tslow_query_count_string: counterString\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate scheduleAutoOptimization(logId: string): void {\n\t\tif (!logId) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.autoOptimizeInFlight.has(logId)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.autoOptimizeInFlight.add(logId);\n\t\tthis.runAutoOptimizationInBackground(logId);\n\t}\n\n\tprivate runAutoOptimizationInBackground(logId: string): void {\n\t\tsetImmediate(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.runAutoOptimization(logId);\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error('Slow query auto optimization failed', {logId, error: (error as Error)?.message || error});\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis.autoOptimizeInFlight.delete(logId);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate escapeRegex(value: string): string {\n\t\treturn String(value || '').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t}\n\n\tprivate getEscalationRecipients(): string[] {\n\t\tconst unique = new Set<string>();\n\t\t(this.config.escalationEmails || []).forEach((entry) => {\n\t\t\tconst normalized = String(entry || '').trim().toLowerCase();\n\t\t\tif (normalized) {\n\t\t\t\tunique.add(normalized);\n\t\t\t}\n\t\t});\n\t\tif (!unique.size) {\n\t\t\tunique.add(DEFAULT_ERROR_ALERT_EMAIL);\n\t\t}\n\t\treturn Array.from(unique);\n\t}\n\n\tprivate async sendSlowQueryEscalationNotice(log: SlowQueryLogModel, reason: string): Promise<void> {\n\t\tconst recipients = this.getEscalationRecipients();\n\t\tif (!recipients.length || !log?._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst subject = `ResolveIO Slow Query Escalation: ${log.slow_query_count_string || log._id}`;\n\t\tconst body = [\n\t\t\t'Slow-query auto optimization budget was exhausted and additional autonomous attempts were stopped.',\n\t\t\t'',\n\t\t\t`Reason: ${reason}`,\n\t\t\t`Slow Query Log ID: ${log._id}`,\n\t\t\t`Slow Query Counter: ${log.slow_query_count_string || 'n/a'}`,\n\t\t\t`Collection: ${log.collection || 'unknown'}`,\n\t\t\t`Query Hash: ${log.query_hash || 'n/a'}`,\n\t\t\t`Client: ${log.client_name || log.client_slug || 'unknown'}`,\n\t\t\t`Environment: ${log.environment || 'unknown'}`,\n\t\t\t`Attempts: ${log.auto_fix_attempt_count || 0}/${this.config.autoOptimizeMaxAttemptsPerQuery}`,\n\t\t\t'',\n\t\t\t'The query has been marked ignored to protect customer AI credits. Manual tuning or explicit allow-list override is required.'\n\t\t].join('\\n');\n\n\t\tconst methodManager = ResolveIOServer.getMainServer().getMethodManager();\n\t\tfor (const recipient of recipients) {\n\t\t\ttry {\n\t\t\t\tawait methodManager.sendEmail(recipient, subject, body);\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error('Failed sending slow-query escalation email', {recipient, logId: log._id, error});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async resolveSlowQueryClientTarget(log: SlowQueryLogModel): Promise<{ idClient: string; clientName: string }> {\n\t\tconst directId = String((log as any)?.id_client || '').trim();\n\t\tif (directId) {\n\t\t\treturn {\n\t\t\t\tidClient: directId,\n\t\t\t\tclientName: String(log?.client_name || '').trim()\n\t\t\t};\n\t\t}\n\n\t\tconst candidates = [\n\t\t\tString(log?.client_slug || '').trim(),\n\t\t\tString(log?.client_name || '').trim(),\n\t\t\tString(log?.source_app || '').trim()\n\t\t].filter(Boolean);\n\t\tfor (const candidate of candidates) {\n\t\t\tconst escaped = this.escapeRegex(candidate);\n\t\t\tconst match = await Clients.findOne({\n\t\t\t\t$or: [\n\t\t\t\t\t{name: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{demo_name: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{project: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{repo: {$regex: `^${escaped}$`, $options: 'i'}}\n\t\t\t\t]\n\t\t\t}, {\n\t\t\t\tprojection: {\n\t\t\t\t\t_id: 1,\n\t\t\t\t\tname: 1\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (match?._id) {\n\t\t\t\treturn {\n\t\t\t\t\tidClient: String(match._id || '').trim(),\n\t\t\t\t\tclientName: String(match.name || log?.client_name || candidate || '').trim()\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tidClient: '',\n\t\t\tclientName: String(log?.client_name || '').trim()\n\t\t};\n\t}\n\n\tprivate buildLocalInternalUserCriteria(): Record<string, any> {\n\t\treturn {\n\t\t\t$and: [\n\t\t\t\t{\n\t\t\t\t\tis_customer: {\n\t\t\t\t\t\t$ne: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$nor: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'other.id_customer': {\n\t\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid_customer: {\n\t\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\tprivate buildLocalAdminUserCriteria(): Record<string, any> {\n\t\treturn {\n\t\t\t$or: [\n\t\t\t\t{\n\t\t\t\t\t'roles.super_admin': true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'roles.groups.name': {\n\t\t\t\t\t\t$regex: 'admin',\n\t\t\t\t\t\t$options: 'i'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'roles.groups.views': {\n\t\t\t\t\t\t$regex: '^/manage'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'roles.groups.views': '/manage'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\tprivate async resolveLocalNotificationUserIds(isGeneratedApp: boolean): Promise<string[]> {\n\t\tconst andClauses: Record<string, any>[] = [\n\t\t\t{\n\t\t\t\tactive: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tusername: {\n\t\t\t\t\t$exists: true\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\tif (isGeneratedApp) {\n\t\t\tandClauses.push(this.buildLocalInternalUserCriteria());\n\t\t}\n\t\telse {\n\t\t\tandClauses.push(this.buildLocalAdminUserCriteria());\n\t\t}\n\n\t\tconst users = await Users.find({\n\t\t\t$and: andClauses\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t},\n\t\t\tlimit: MAX_LOCAL_NOTIFICATION_USERS\n\t\t});\n\n\t\tif (!Array.isArray(users) || !users.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst unique = new Set<string>();\n\t\tfor (const user of users) {\n\t\t\tconst idUser = String(user?._id || '').trim();\n\t\t\tif (idUser) {\n\t\t\t\tunique.add(idUser);\n\t\t\t}\n\t\t\tif (unique.size >= MAX_LOCAL_NOTIFICATION_USERS) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn Array.from(unique);\n\t}\n\n\tprivate async isGeneratedAICoderClient(idClient: string): Promise<boolean> {\n\t\tconst normalizedClientId = String(idClient || '').trim();\n\t\tif (!normalizedClientId) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst match = await AICoderApps.findOne({\n\t\t\tclient_id: normalizedClientId\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t}\n\t\t});\n\n\t\treturn !!match?._id;\n\t}\n\n\tprivate buildAICoderSlowQuerySummary(\n\t\tstage: 'detected_auto_optimize_enabled' | 'completed_success' | 'completed_failed',\n\t\tlog: SlowQueryLogModel,\n\t\textra?: { reason?: string; notes?: string }\n\t): string {\n\t\treturn buildGeneratedSlowQuerySummary(stage, {\n\t\t\tcollection: String(log?.collection || '').trim(),\n\t\t\tsource_app: String(log?.source_app || '').trim(),\n\t\t\tenvironment: String(log?.environment || '').trim(),\n\t\t\tbaseline_duration_ms: Number((log as any)?.auto_fix_result?.baseline?.durationMs),\n\t\t\tafter_duration_ms: Number((log as any)?.auto_fix_result?.after?.durationMs),\n\t\t\treason: extra?.reason,\n\t\t\tnotes: extra?.notes\n\t\t}, extra);\n\t}\n\n\tprivate buildResolveIOProjectSlowQueryDetails(log: SlowQueryLogModel, extra?: { reason?: string; notes?: string }): string {\n\t\tconst runDurations = Array.isArray(log?.verification_runs)\n\t\t\t? log.verification_runs\n\t\t\t\t.map(run => Number(run?.duration_ms))\n\t\t\t\t.filter(duration => Number.isFinite(duration) && duration >= 0)\n\t\t\t: [];\n\n\t\treturn buildResolveIOProjectSlowQueryDetails({\n\t\t\tcollection: log.collection || '',\n\t\t\tclient_name: log.client_name || log.client_slug || '',\n\t\t\tsource_app: log.source_app || '',\n\t\t\tenvironment: log.environment || '',\n\t\t\tquery_hash: log.query_hash || '',\n\t\t\tbaseline_duration_ms: Number((log as any)?.auto_fix_result?.baseline?.durationMs),\n\t\t\tafter_duration_ms: Number((log as any)?.auto_fix_result?.after?.durationMs),\n\t\t\tverification_run_durations_ms: runDurations,\n\t\t\tlog_id: log._id || '',\n\t\t\treason: extra?.reason,\n\t\t\tnotes: extra?.notes\n\t\t});\n\t}\n\n\tprivate async notifyCustomerSlowQueryStatus(\n\t\tstage: 'detected_auto_optimize_enabled' | 'completed_success' | 'completed_failed',\n\t\tlog: SlowQueryLogModel,\n\t\textra?: { reason?: string; notes?: string }\n\t): Promise<void> {\n\t\tif (!log?._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = await this.resolveSlowQueryClientTarget(log);\n\t\tlet isGeneratedApp = false;\n\t\tif (target.idClient) {\n\t\t\tisGeneratedApp = await this.isGeneratedAICoderClient(target.idClient);\n\t\t}\n\t\telse {\n\t\t\tconst generatedApp = await this.resolveAutoOptimizeApp(log);\n\t\t\tisGeneratedApp = !!generatedApp;\n\t\t}\n\n\t\tif (!isGeneratedApp && stage !== 'completed_success') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst issueKey = String(log.query_hash || log._id || '').trim();\n\t\tconst dedupeKey = `slow-query:${issueKey}:${stage}`;\n\t\tconst metadata = {\n\t\t\tlog_id: log._id,\n\t\t\tquery_hash: log.query_hash || '',\n\t\t\tcollection: log.collection || '',\n\t\t\tenvironment: log.environment || '',\n\t\t\tsource_app: log.source_app || '',\n\t\t\treason: extra?.reason || '',\n\t\t\tnotes: extra?.notes || ''\n\t\t};\n\t\tconst targetPayload: Record<string, any> = {};\n\t\tif (target.idClient) {\n\t\t\ttargetPayload.target_type = isGeneratedApp ? 'client_internal' : 'client_admins';\n\t\t\ttargetPayload.id_client = target.idClient;\n\t\t\ttargetPayload.client_name = target.clientName || undefined;\n\t\t}\n\t\telse {\n\t\t\tconst idUsers = await this.resolveLocalNotificationUserIds(isGeneratedApp);\n\t\t\tif (!idUsers.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttargetPayload.target_type = 'users';\n\t\t\ttargetPayload.id_users = idUsers;\n\t\t\ttargetPayload.client_name = target.clientName || undefined;\n\t\t}\n\n\t\tlet payload: Record<string, any> = {};\n\t\tif (isGeneratedApp) {\n\t\t\tif (stage === 'detected_auto_optimize_enabled') {\n\t\t\t\tpayload = {\n\t\t\t\t\ttitle: 'Slow query detected. Auto-optimization is running.',\n\t\t\t\t\tmessage: 'We detected a slow query and started an automatic optimization workflow. We will notify you when it is complete.',\n\t\t\t\t\tseverity: 'info',\n\t\t\t\t\tdetails: this.buildAICoderSlowQuerySummary(stage, log, extra)\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if (stage === 'completed_success') {\n\t\t\t\tpayload = {\n\t\t\t\t\ttitle: 'Slow query optimization completed.',\n\t\t\t\t\tmessage: `We optimized slow performance for ${log.collection || 'a collection'} and published the improvement.`,\n\t\t\t\t\tseverity: 'success',\n\t\t\t\t\tdetails: this.buildAICoderSlowQuerySummary(stage, log, extra)\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpayload = {\n\t\t\t\t\ttitle: 'Slow query needs manual review.',\n\t\t\t\t\tmessage: 'We could not complete automatic optimization for a slow query. Manual tuning is required.',\n\t\t\t\t\tseverity: 'warning',\n\t\t\t\t\tdetails: this.buildAICoderSlowQuerySummary(stage, log, extra)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tpayload = {\n\t\t\t\ttitle: 'ResolveIO project slow query optimized',\n\t\t\t\tmessage: `Slow-query optimization completed for ${log.collection || 'a collection'}.`,\n\t\t\t\tseverity: 'success',\n\t\t\t\tdetails: this.buildResolveIOProjectSlowQueryDetails(log, extra)\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod('createCustomerNotification', {\n\t\t\t\t...targetPayload,\n\t\t\t\tcategory: 'slow-query',\n\t\t\t\tsource: 'slow-query-auto-optimize',\n\t\t\t\tsource_id: String(log._id || '').trim() || undefined,\n\t\t\t\tdedupe_key: dedupeKey,\n\t\t\t\tmetadata,\n\t\t\t\t...payload\n\t\t\t});\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (this.config.debugLogging) {\n\t\t\t\tconsole.warn('Slow query customer notification failed', {\n\t\t\t\t\tlogId: log._id,\n\t\t\t\t\tstage,\n\t\t\t\t\terror: error?.message || error\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseDate(value: any): Date | null {\n\t\tif (!value) {\n\t\t\treturn null;\n\t\t}\n\t\tif (value instanceof Date && !Number.isNaN(value.getTime())) {\n\t\t\treturn value;\n\t\t}\n\t\tconst parsed = new Date(value);\n\t\treturn Number.isNaN(parsed.getTime()) ? null : parsed;\n\t}\n\n\tprivate resolveFingerprintScopeKey(log: SlowQueryLogModel): string {\n\t\tconst explicit = String((log as any)?.fingerprint_scope_key || '').trim();\n\t\tif (explicit) {\n\t\t\treturn explicit;\n\t\t}\n\n\t\tconst normalize = (value: any): string => {\n\t\t\tconst normalized = String(value || '')\n\t\t\t\t.trim()\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/\\s+/g, ' ');\n\t\t\treturn normalized || '_';\n\t\t};\n\n\t\tconst clientKey = normalize(log?.client_slug || log?.client_name || '');\n\t\tconst sourceApp = normalize(log?.source_app || '');\n\t\tconst environment = normalize(log?.environment || '');\n\t\tconst publication = normalize(log?.publication || '');\n\t\tconst serverUrl = normalize((log as any)?.server_url || '');\n\t\treturn [clientKey, sourceApp, environment, publication, serverUrl].join('|');\n\t}\n\n\tprivate buildFingerprintMatchQuery(log: SlowQueryLogModel): Record<string, any> {\n\t\tconst conditions: Record<string, any>[] = [];\n\t\tconst collection = String(log?.collection || '').trim();\n\t\tif (collection) {\n\t\t\tconditions.push({collection});\n\t\t}\n\n\t\tconst explicitScopeKey = String((log as any)?.fingerprint_scope_key || '').trim();\n\t\tconst scopeKey = this.resolveFingerprintScopeKey(log);\n\t\tif (scopeKey) {\n\t\t\tconst legacyScopeQuery: Record<string, any> = {};\n\t\t\tif (String(log?.client_slug || '').trim()) {\n\t\t\t\tlegacyScopeQuery.client_slug = log.client_slug;\n\t\t\t}\n\t\t\tif (String(log?.environment || '').trim()) {\n\t\t\t\tlegacyScopeQuery.environment = log.environment;\n\t\t\t}\n\t\t\tif (String(log?.source_app || '').trim()) {\n\t\t\t\tlegacyScopeQuery.source_app = log.source_app;\n\t\t\t}\n\t\t\tif (String(log?.publication || '').trim()) {\n\t\t\t\tlegacyScopeQuery.publication = log.publication;\n\t\t\t}\n\t\t\tif (String((log as any)?.server_url || '').trim()) {\n\t\t\t\tlegacyScopeQuery.server_url = (log as any).server_url;\n\t\t\t}\n\t\t\tif (explicitScopeKey) {\n\t\t\t\tconditions.push({fingerprint_scope_key: scopeKey});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst scopeCandidates: Record<string, any>[] = [{_id: log?._id || ''}, {fingerprint_scope_key: scopeKey}];\n\t\t\t\tif (Object.keys(legacyScopeQuery).length) {\n\t\t\t\t\tscopeCandidates.push(legacyScopeQuery);\n\t\t\t\t}\n\t\t\t\tconditions.push({$or: scopeCandidates});\n\t\t\t}\n\t\t}\n\n\t\tconst canonicalHash = String((log as any)?.canonical_fingerprint_hash || '').trim();\n\t\tconst queryHash = String(log?.query_hash || '').trim();\n\t\tif (canonicalHash && queryHash && canonicalHash !== queryHash) {\n\t\t\tconditions.push({\n\t\t\t\t$or: [\n\t\t\t\t\t{canonical_fingerprint_hash: canonicalHash},\n\t\t\t\t\t{\n\t\t\t\t\t\tcanonical_fingerprint_hash: {$exists: false},\n\t\t\t\t\t\tquery_hash: queryHash\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t});\n\t\t}\n\t\telse if (canonicalHash) {\n\t\t\tconditions.push({canonical_fingerprint_hash: canonicalHash});\n\t\t}\n\t\telse if (queryHash) {\n\t\t\tconditions.push({query_hash: queryHash});\n\t\t}\n\t\telse if (log?._id) {\n\t\t\tconditions.push({_id: log._id});\n\t\t}\n\n\t\tif (!conditions.length) {\n\t\t\treturn {_id: log?._id || ''};\n\t\t}\n\t\tif (conditions.length === 1) {\n\t\t\treturn conditions[0];\n\t\t}\n\t\treturn {$and: conditions};\n\t}\n\n\tprivate countAttemptsWithinWindow(log: SlowQueryLogModel, windowStart: Date): number {\n\t\tconst history = Array.isArray((log as any)?.auto_fix_attempt_history)\n\t\t\t? ((log as any).auto_fix_attempt_history as any[])\n\t\t\t: [];\n\t\tlet attemptsInWindow = 0;\n\t\thistory.forEach((entry) => {\n\t\t\tconst attemptAt = this.parseDate(entry);\n\t\t\tif (attemptAt && attemptAt.getTime() >= windowStart.getTime()) {\n\t\t\t\tattemptsInWindow += 1;\n\t\t\t}\n\t\t});\n\t\tif (attemptsInWindow > 0) {\n\t\t\treturn attemptsInWindow;\n\t\t}\n\n\t\tconst lastAttemptAt = this.parseDate((log as any)?.auto_fix_last_attempt_at);\n\t\tconst attemptsUsed = Number.isFinite(Number((log as any)?.auto_fix_attempt_count))\n\t\t\t? Number((log as any).auto_fix_attempt_count)\n\t\t\t: 0;\n\t\tif (lastAttemptAt && lastAttemptAt.getTime() >= windowStart.getTime() && attemptsUsed > 0) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate async resolveFingerprintAttemptsInWindow(log: SlowQueryLogModel, windowStart: Date): Promise<number> {\n\t\tconst matchQuery = this.buildFingerprintMatchQuery(log);\n\t\tconst matches = await SlowQueryLogs.find(matchQuery, {\n\t\t\tlimit: 200,\n\t\t\tprojection: {\n\t\t\t\t_id: 1,\n\t\t\t\tauto_fix_attempt_history: 1,\n\t\t\t\tauto_fix_attempt_count: 1,\n\t\t\t\tauto_fix_last_attempt_at: 1\n\t\t\t}\n\t\t}) as SlowQueryLogModel[];\n\n\t\tlet attempts = 0;\n\t\tmatches.forEach((entry) => {\n\t\t\tattempts += this.countAttemptsWithinWindow(entry, windowStart);\n\t\t});\n\t\treturn attempts;\n\t}\n\n\tprivate resolveCooldownDeadline(log: SlowQueryLogModel): Date | null {\n\t\tconst cooldownMinutes = Number.isFinite(Number(this.config.autoOptimizeCooldownMinutes))\n\t\t\t? Number(this.config.autoOptimizeCooldownMinutes)\n\t\t\t: 0;\n\t\tif (cooldownMinutes <= 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst lastAttemptAt = this.parseDate(log?.auto_fix_last_attempt_at);\n\t\tif (!lastAttemptAt) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Date(lastAttemptAt.getTime() + (cooldownMinutes * 60 * 1000));\n\t}\n\n\tprivate async markAutoOptimizeCooldownActive(log: SlowQueryLogModel, cooldownUntil: Date): Promise<void> {\n\t\tif (!log?._id) {\n\t\t\treturn;\n\t\t}\n\t\tconst reason = `Auto optimize cooldown is active until ${cooldownUntil.toISOString()}.`;\n\t\tawait SlowQueryLogs.updateOne({_id: log._id}, {\n\t\t\t$set: {\n\t\t\t\tstatus: 'investigating',\n\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\tauto_fix_disabled_reason: reason,\n\t\t\t\tverification_notes: reason,\n\t\t\t\tverification_status: 'pending',\n\t\t\t\tverification_next_run_at: cooldownUntil,\n\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\tlast_triaged_at: new Date()\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async markAutoOptimizeTokenIneligible(log: SlowQueryLogModel, reason: string): Promise<void> {\n\t\tif (!log?._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = `Auto optimize blocked by AI credit preflight: ${reason}`;\n\t\tawait SlowQueryLogs.updateOne({_id: log._id}, {\n\t\t\t$set: {\n\t\t\t\tstatus: 'ignored',\n\t\t\t\tignored: true,\n\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\tauto_fix_disabled_reason: message,\n\t\t\t\tverification_notes: message,\n\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\tlast_triaged_at: new Date()\n\t\t\t},\n\t\t\t$unset: {\n\t\t\t\tverification_next_run_at: ''\n\t\t\t}\n\t\t});\n\n\t\tconst refreshed = (await SlowQueryLogs.findOne({_id: log._id})) || log;\n\t\tawait this.sendSlowQueryEscalationNotice(refreshed, message);\n\t\tawait this.notifyCustomerSlowQueryStatus('completed_failed', refreshed, {reason: message});\n\t}\n\n\tprivate async markAutoOptimizeBudgetExceeded(log: SlowQueryLogModel, reason: string): Promise<void> {\n\t\tif (!log?._id) {\n\t\t\treturn;\n\t\t}\n\t\tconst attemptsUsed = Number.isFinite(Number(log.auto_fix_attempt_count))\n\t\t\t? Number(log.auto_fix_attempt_count)\n\t\t\t: 0;\n\t\tconst maxAttempts = Number.isFinite(Number(this.config.autoOptimizeMaxAttemptsPerQuery))\n\t\t\t? Number(this.config.autoOptimizeMaxAttemptsPerQuery)\n\t\t\t: 0;\n\t\tconst attemptSummary = maxAttempts > 0\n\t\t\t? `Attempts on this log: ${attemptsUsed}/${maxAttempts}.`\n\t\t\t: `Attempts on this log: ${attemptsUsed}.`;\n\t\tconst message = `${reason} Query marked ignored pending manual intervention. ${attemptSummary}`;\n\t\tconst matchQuery = this.buildFingerprintMatchQuery(log);\n\n\t\tawait SlowQueryLogs.updateMany(matchQuery, {\n\t\t\t$set: {\n\t\t\t\tstatus: 'ignored',\n\t\t\t\tignored: true,\n\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\tauto_fix_disabled_reason: message,\n\t\t\t\tverification_notes: message,\n\t\t\t\tverification_status: 'failed',\n\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\tlast_triaged_at: new Date()\n\t\t\t},\n\t\t\t$unset: {\n\t\t\t\tverification_next_run_at: ''\n\t\t\t}\n\t\t});\n\n\t\tconst refreshed = (await SlowQueryLogs.findOne({_id: log._id})) || log;\n\t\tawait this.sendSlowQueryEscalationNotice(refreshed, reason);\n\t\tawait this.notifyCustomerSlowQueryStatus('completed_failed', refreshed, {reason});\n\t}\n\n\tprivate async maybeStopAutoOptimizeAfterFailure(logId: string, reason: string): Promise<void> {\n\t\tif (!logId) {\n\t\t\treturn;\n\t\t}\n\t\tconst maxAttempts = Number.isFinite(Number(this.config.autoOptimizeMaxAttemptsPerQuery))\n\t\t\t? Number(this.config.autoOptimizeMaxAttemptsPerQuery)\n\t\t\t: 0;\n\t\tif (maxAttempts <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst latest = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!latest || latest.ignored) {\n\t\t\treturn;\n\t\t}\n\t\tconst attemptsUsed = Number.isFinite(Number(latest.auto_fix_attempt_count))\n\t\t\t? Number(latest.auto_fix_attempt_count)\n\t\t\t: 0;\n\t\tif (attemptsUsed < maxAttempts) {\n\t\t\treturn;\n\t\t}\n\t\tawait this.markAutoOptimizeBudgetExceeded(latest, reason);\n\t}\n\n\tprivate shouldFallbackDashboardMethod(error: any): boolean {\n\t\tconst message = `${error?.message || ''}`.toLowerCase();\n\t\treturn message.includes('not found')\n\t\t\t|| message.includes('worker dispatch unavailable')\n\t\t\t|| message.includes('no worker')\n\t\t\t|| message.includes('unavailable for aidashboard');\n\t}\n\n\tprivate async createDashboardJob(payload: Record<string, any>): Promise<AIDashboardJob> {\n\t\tconst methodManager = ResolveIOServer.getMainServer().getMethodManager();\n\t\ttry {\n\t\t\treturn await methodManager.callMethod('aiDashboardCreateJob', payload);\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (!this.shouldFallbackDashboardMethod(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tconst manager: any = ResolveIOServer['AIDashboardManager'];\n\t\tif (manager && manager.isEnabled && manager.isEnabled()) {\n\t\t\treturn await manager.createJob(payload);\n\t\t}\n\n\t\tthrow new Error('AI Dashboard manager is not available.');\n\t}\n\n\tprivate async waitForDashboardJobStop(jobId: string, timeoutMs: number): Promise<void> {\n\t\tconst methodManager = ResolveIOServer.getMainServer().getMethodManager();\n\t\ttry {\n\t\t\tawait methodManager.callMethod('aiDashboardWaitForJobStop', jobId, timeoutMs);\n\t\t\treturn;\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (!this.shouldFallbackDashboardMethod(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tconst manager: any = ResolveIOServer['AIDashboardManager'];\n\t\tif (manager && manager.isEnabled && manager.isEnabled()) {\n\t\t\tawait manager.waitForJobStop(jobId, timeoutMs);\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error('AI Dashboard manager is not available.');\n\t}\n\n\tprivate async isDashboardJobRunning(jobId: string): Promise<boolean> {\n\t\tconst methodManager = ResolveIOServer.getMainServer().getMethodManager();\n\t\ttry {\n\t\t\tconst running = await methodManager.callMethod('aiDashboardIsJobRunning', jobId);\n\t\t\treturn !!running;\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (!this.shouldFallbackDashboardMethod(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tconst manager: any = ResolveIOServer['AIDashboardManager'];\n\t\tif (manager && manager.isEnabled && manager.isEnabled()) {\n\t\t\treturn !!manager.isJobRunning(jobId);\n\t\t}\n\n\t\tthrow new Error('AI Dashboard manager is not available.');\n\t}\n\n\tprivate async publishDashboardJob(jobId: string): Promise<AIDashboardJob> {\n\t\tconst methodManager = ResolveIOServer.getMainServer().getMethodManager();\n\t\ttry {\n\t\t\treturn await methodManager.callMethod('aiDashboardPublishJob', jobId);\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (!this.shouldFallbackDashboardMethod(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tconst manager: any = ResolveIOServer['AIDashboardManager'];\n\t\tif (manager && manager.isEnabled && manager.isEnabled() && typeof manager.publishJob === 'function') {\n\t\t\treturn await manager.publishJob(jobId);\n\t\t}\n\n\t\tthrow new Error('AI Dashboard manager is not available.');\n\t}\n\n\tprivate evaluateDashboardPublishOutcome(job: AIDashboardJob): {success: boolean; message: string; branchName?: string} {\n\t\tconst logEntries = Array.isArray(job?.log) ? job.log : [];\n\t\tconst lastMatch = (predicate): string => {\n\t\t\tfor (let i = logEntries.length - 1; i >= 0; i -= 1) {\n\t\t\t\tif (predicate(logEntries[i] || '')) {\n\t\t\t\t\treturn logEntries[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\n\t\tconst failureEntry = lastMatch(entry => /publish failed|artifact publish failed|deploy failed/i.test(entry || ''));\n\t\tif (failureEntry) {\n\t\t\treturn {success: false, message: failureEntry};\n\t\t}\n\n\t\tconst publishEntry = lastMatch(entry => /Published build to /i.test(entry || ''));\n\t\tif (publishEntry) {\n\t\t\tconst branchMatch = publishEntry.match(/\\(([^()]+)\\)\\.?$/);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tmessage: publishEntry,\n\t\t\t\tbranchName: (branchMatch && branchMatch[1]) ? branchMatch[1].trim() : undefined\n\t\t\t};\n\t\t}\n\n\t\tconst skippedEntry = lastMatch(entry => /Publish skipped/i.test(entry || ''));\n\t\tif (skippedEntry) {\n\t\t\treturn {success: false, message: skippedEntry};\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\tmessage: 'Dashboard job completed without a publish confirmation log entry.'\n\t\t};\n\t}\n\n\tprivate resolveBaselineDurationMs(log: SlowQueryLogModel): number | undefined {\n\t\tconst runs = Array.isArray(log.verification_runs) ? log.verification_runs : [];\n\t\tfor (let i = runs.length - 1; i >= 0; i -= 1) {\n\t\t\tconst duration = runs[i]?.duration_ms;\n\t\t\tif (SlowQueryVerifier.isValidDuration(duration)) {\n\t\t\t\treturn duration;\n\t\t\t}\n\t\t}\n\t\tif (SlowQueryVerifier.isValidDuration(log.duration_ms)) {\n\t\t\treturn log.duration_ms;\n\t\t}\n\t\tif (SlowQueryVerifier.isValidDuration(log.avg_duration_ms)) {\n\t\t\treturn log.avg_duration_ms;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate static collectMetricValues(node: any, keySet: Set<string>, output: number[]): void {\n\t\tif (!node || typeof node !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(node)) {\n\t\t\tnode.forEach((entry) => SlowQueryVerifier.collectMetricValues(entry, keySet, output));\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(node).forEach((key) => {\n\t\t\tconst value = (node as any)[key];\n\t\t\tif (keySet.has(key) && typeof value === 'number' && Number.isFinite(value) && value >= 0) {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t\tSlowQueryVerifier.collectMetricValues(value, keySet, output);\n\t\t});\n\t}\n\n\tprivate static asNonNegativeNumber(value: any): number | undefined {\n\t\treturn typeof value === 'number' && Number.isFinite(value) && value >= 0\n\t\t\t? value\n\t\t\t: undefined;\n\t}\n\n\tprivate static maxNumber(values: Array<number | undefined>): number | undefined {\n\t\tconst candidates = values.filter((value): value is number => typeof value === 'number');\n\t\treturn candidates.length ? Math.max(...candidates) : undefined;\n\t}\n\n\tprivate static sortStageSummaries(input: ExplainStageSummary[]): ExplainStageSummary[] {\n\t\treturn input.slice().sort((left, right) => {\n\t\t\tconst timeDiff = (right.executionTimeMs ?? -1) - (left.executionTimeMs ?? -1);\n\t\t\tif (timeDiff !== 0) {\n\t\t\t\treturn timeDiff;\n\t\t\t}\n\n\t\t\tconst docsDiff = (right.docsExamined ?? -1) - (left.docsExamined ?? -1);\n\t\t\tif (docsDiff !== 0) {\n\t\t\t\treturn docsDiff;\n\t\t\t}\n\n\t\t\tconst keysDiff = (right.keysExamined ?? -1) - (left.keysExamined ?? -1);\n\t\t\tif (keysDiff !== 0) {\n\t\t\t\treturn keysDiff;\n\t\t\t}\n\n\t\t\treturn `${left.path}|${left.stage}`.localeCompare(`${right.path}|${right.stage}`);\n\t\t});\n\t}\n\n\tprivate static collectExecutionTreeStages(node: any, path: string, output: ExplainStageSummary[]): void {\n\t\tif (!node || typeof node !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stageName = typeof node.stage === 'string' ? node.stage : 'execution-stage';\n\t\tconst executionTimeMs = SlowQueryVerifier.maxNumber([\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.executionTimeMillis),\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.executionTimeMillisEstimate)\n\t\t]);\n\t\tconst docsExamined = SlowQueryVerifier.maxNumber([\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.totalDocsExamined),\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.docsExamined)\n\t\t]);\n\t\tconst keysExamined = SlowQueryVerifier.maxNumber([\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.totalKeysExamined),\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.keysExamined)\n\t\t]);\n\t\tconst nReturned = SlowQueryVerifier.maxNumber([\n\t\t\tSlowQueryVerifier.asNonNegativeNumber(node.nReturned)\n\t\t]);\n\n\t\tif (\n\t\t\ttypeof executionTimeMs === 'number'\n\t\t\t|| typeof docsExamined === 'number'\n\t\t\t|| typeof keysExamined === 'number'\n\t\t\t|| typeof nReturned === 'number'\n\t\t) {\n\t\t\toutput.push({\n\t\t\t\tstage: stageName,\n\t\t\t\tpath: path || 'executionStats.executionStages',\n\t\t\t\texecutionTimeMs,\n\t\t\t\tdocsExamined,\n\t\t\t\tkeysExamined,\n\t\t\t\tnReturned\n\t\t\t});\n\t\t}\n\n\t\tconst recurse = (child: any, childPath: string) => {\n\t\t\tif (!child) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(child)) {\n\t\t\t\tchild.forEach((entry, index) => {\n\t\t\t\t\tSlowQueryVerifier.collectExecutionTreeStages(entry, `${childPath}[${index}]`, output);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSlowQueryVerifier.collectExecutionTreeStages(child, childPath, output);\n\t\t};\n\n\t\trecurse(node.inputStage, `${path}.inputStage`);\n\t\trecurse(node.inputStages, `${path}.inputStages`);\n\t\trecurse(node.executionStages, `${path}.executionStages`);\n\t\trecurse(node.outerStage, `${path}.outerStage`);\n\t\trecurse(node.innerStage, `${path}.innerStage`);\n\t\trecurse(node.leftChild, `${path}.leftChild`);\n\t\trecurse(node.rightChild, `${path}.rightChild`);\n\t\trecurse(node.thenStage, `${path}.thenStage`);\n\t\trecurse(node.elseStage, `${path}.elseStage`);\n\t\trecurse(node.shards, `${path}.shards`);\n\t}\n\n\tprivate static extractStageSummaries(explainResponse?: Record<string, any>, explainStats?: Record<string, any>): ExplainStageSummary[] {\n\t\tconst summaries: ExplainStageSummary[] = [];\n\t\tconst stages = explainResponse?.stages;\n\n\t\tif (Array.isArray(stages)) {\n\t\t\tstages.forEach((stageEntry, index) => {\n\t\t\t\tif (!stageEntry || typeof stageEntry !== 'object') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst stageKey = Object.keys(stageEntry).find(key => key.startsWith('$')) || `stage_${index}`;\n\t\t\t\tconst stagePayload = (stageEntry as any)[stageKey];\n\t\t\t\tconst metricsSource = stageKey === '$cursor' && stagePayload?.executionStats\n\t\t\t\t\t? stagePayload.executionStats\n\t\t\t\t\t: stagePayload;\n\t\t\t\tconst executionStages = metricsSource?.executionStages || stagePayload?.executionStats?.executionStages;\n\t\t\t\tconst executionTimeMs = SlowQueryVerifier.maxNumber([\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.executionTimeMillis),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.executionTimeMillisEstimate),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.executionTimeMillis),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.executionTimeMillisEstimate)\n\t\t\t\t]);\n\t\t\t\tconst docsExamined = SlowQueryVerifier.maxNumber([\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.totalDocsExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.docsExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.totalDocsExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.docsExamined)\n\t\t\t\t]);\n\t\t\t\tconst keysExamined = SlowQueryVerifier.maxNumber([\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.totalKeysExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.keysExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.totalKeysExamined),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.keysExamined)\n\t\t\t\t]);\n\t\t\t\tconst nReturned = SlowQueryVerifier.maxNumber([\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(metricsSource?.nReturned),\n\t\t\t\t\tSlowQueryVerifier.asNonNegativeNumber(executionStages?.nReturned)\n\t\t\t\t]);\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof executionTimeMs === 'number'\n\t\t\t\t\t|| typeof docsExamined === 'number'\n\t\t\t\t\t|| typeof keysExamined === 'number'\n\t\t\t\t\t|| typeof nReturned === 'number'\n\t\t\t\t) {\n\t\t\t\t\tsummaries.push({\n\t\t\t\t\t\tstage: stageKey,\n\t\t\t\t\t\tpath: `stages[${index}]`,\n\t\t\t\t\t\texecutionTimeMs,\n\t\t\t\t\t\tdocsExamined,\n\t\t\t\t\t\tkeysExamined,\n\t\t\t\t\t\tnReturned\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (executionStages) {\n\t\t\t\t\tSlowQueryVerifier.collectExecutionTreeStages(\n\t\t\t\t\t\texecutionStages,\n\t\t\t\t\t\t`stages[${index}].${stageKey}.executionStages`,\n\t\t\t\t\t\tsummaries\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst executionRoot = explainStats?.executionStages\n\t\t\t|| explainResponse?.executionStats?.executionStages\n\t\t\t|| explainResponse?.executionStats;\n\t\tif (executionRoot) {\n\t\t\tSlowQueryVerifier.collectExecutionTreeStages(executionRoot, 'executionStats.executionStages', summaries);\n\t\t}\n\n\t\tconst deduped = new Map<string, ExplainStageSummary>();\n\t\tsummaries.forEach((summary) => {\n\t\t\tconst key = [\n\t\t\t\tsummary.path,\n\t\t\t\tsummary.stage,\n\t\t\t\ttypeof summary.executionTimeMs === 'number' ? summary.executionTimeMs : '',\n\t\t\t\ttypeof summary.docsExamined === 'number' ? summary.docsExamined : '',\n\t\t\t\ttypeof summary.keysExamined === 'number' ? summary.keysExamined : '',\n\t\t\t\ttypeof summary.nReturned === 'number' ? summary.nReturned : ''\n\t\t\t].join('|');\n\t\t\tif (!deduped.has(key)) {\n\t\t\t\tdeduped.set(key, summary);\n\t\t\t}\n\t\t});\n\n\t\treturn SlowQueryVerifier.sortStageSummaries(Array.from(deduped.values()));\n\t}\n\n\tprivate resolveExecutionMetrics(\n\t\texplainStats: Record<string, any>,\n\t\tfallbackDuration?: number,\n\t\tstageSummaries: ExplainStageSummary[] = []\n\t): ExecutionMetrics {\n\t\tconst docsCandidates: number[] = [];\n\t\tconst returnedCandidates: number[] = [];\n\t\tSlowQueryVerifier.collectMetricValues(explainStats || {}, new Set(['totalDocsExamined', 'docsExamined']), docsCandidates);\n\t\tSlowQueryVerifier.collectMetricValues(explainStats || {}, new Set(['nReturned']), returnedCandidates);\n\n\t\tconst stageDocsCandidates = stageSummaries\n\t\t\t.map(stage => stage.docsExamined)\n\t\t\t.filter((value): value is number => typeof value === 'number');\n\t\tconst stageReturnedCandidates = stageSummaries\n\t\t\t.map(stage => stage.nReturned)\n\t\t\t.filter((value): value is number => typeof value === 'number');\n\n\t\tconst docsExamined = docsCandidates.length\n\t\t\t? Math.max(...docsCandidates)\n\t\t\t: (stageDocsCandidates.length ? Math.max(...stageDocsCandidates) : undefined);\n\t\tconst nReturned = returnedCandidates.length\n\t\t\t? Math.max(...returnedCandidates)\n\t\t\t: (stageReturnedCandidates.length ? Math.max(...stageReturnedCandidates) : undefined);\n\t\tconst durationMs = SlowQueryVerifier.isValidDuration(fallbackDuration)\n\t\t\t? fallbackDuration\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tdurationMs,\n\t\t\tdocsExamined,\n\t\t\tnReturned,\n\t\t\ttopStages: stageSummaries.slice(0, 5)\n\t\t};\n\t}\n\n\tprivate evaluateOptimizationOutcome(\n\t\tbaseline: ExecutionMetrics,\n\t\tafter: ExecutionMetrics,\n\t\toutputEquivalence?: OutputEquivalenceResult\n\t): {\n\t\tpassed: boolean;\n\t\treason: string;\n\t\tdurationRatio?: number;\n\t\tdocsRatio?: number;\n\t\tnReturnedDeltaRatio?: number;\n\t\toutputEquivalence?: OutputEquivalenceResult;\n\t} {\n\t\tif (this.config.autoOptimizeRequireExactOutput) {\n\t\t\tif (!this.config.autoOptimizeOutputCompareEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tpassed: false,\n\t\t\t\t\treason: 'Exact output equivalence is required but output comparison is disabled.',\n\t\t\t\t\toutputEquivalence\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!outputEquivalence) {\n\t\t\t\treturn {\n\t\t\t\t\tpassed: false,\n\t\t\t\t\treason: 'Output equivalence proof is required but was not generated.',\n\t\t\t\t\toutputEquivalence\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (outputEquivalence && !outputEquivalence.passed) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: `Output equivalence failed: ${outputEquivalence.reason}`,\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\tif (!SlowQueryVerifier.isValidDuration(baseline.durationMs) || !SlowQueryVerifier.isValidDuration(after.durationMs)) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: 'Unable to compare baseline and post-fix duration.',\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\tconst durationRatio = baseline.durationMs > 0 ? (after.durationMs / baseline.durationMs) : 1;\n\t\tif (durationRatio > this.config.autoOptimizeDurationRatioTarget) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: `Duration did not improve enough (${round(durationRatio * 100, 0)}% of baseline).`,\n\t\t\t\tdurationRatio,\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\tif (typeof baseline.docsExamined !== 'number' || typeof after.docsExamined !== 'number' || baseline.docsExamined <= 0) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: 'Docs examined metrics are missing for baseline or post-fix explain.',\n\t\t\t\tdurationRatio,\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\tconst docsRatio = after.docsExamined / baseline.docsExamined;\n\t\tif (docsRatio > this.config.autoOptimizeDocsRatioTarget) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: `Docs examined did not improve enough (${round(docsRatio * 100, 0)}% of baseline).`,\n\t\t\t\tdurationRatio,\n\t\t\t\tdocsRatio,\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\tif (typeof baseline.nReturned === 'number' && typeof after.nReturned === 'number') {\n\t\t\tconst denominator = Math.max(baseline.nReturned, 1);\n\t\t\tconst nReturnedDeltaRatio = Math.abs(after.nReturned - baseline.nReturned) / denominator;\n\t\t\tif (nReturnedDeltaRatio > this.config.autoOptimizeReturnedDocsTolerance) {\n\t\t\t\treturn {\n\t\t\t\t\tpassed: false,\n\t\t\t\t\treason: `Returned document count changed too much (${round(nReturnedDeltaRatio * 100, 0)}% delta).`,\n\t\t\t\t\tdurationRatio,\n\t\t\t\t\tdocsRatio,\n\t\t\t\t\tnReturnedDeltaRatio,\n\t\t\t\t\toutputEquivalence\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tpassed: true,\n\t\t\t\treason: 'Query performance improved while keeping returned document count stable.',\n\t\t\t\tdurationRatio,\n\t\t\t\tdocsRatio,\n\t\t\t\tnReturnedDeltaRatio,\n\t\t\t\toutputEquivalence\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tpassed: false,\n\t\t\treason: 'Returned document metrics are missing for baseline or post-fix explain.',\n\t\t\tdurationRatio,\n\t\t\tdocsRatio,\n\t\t\toutputEquivalence\n\t\t};\n\t}\n\n\tprivate formatStageSummaryForPrompt(stage: ExplainStageSummary, index: number): string {\n\t\tconst metrics: string[] = [];\n\t\tif (typeof stage.executionTimeMs === 'number') {\n\t\t\tmetrics.push(`time=${stage.executionTimeMs}ms`);\n\t\t}\n\t\tif (typeof stage.docsExamined === 'number') {\n\t\t\tmetrics.push(`docs=${stage.docsExamined}`);\n\t\t}\n\t\tif (typeof stage.keysExamined === 'number') {\n\t\t\tmetrics.push(`keys=${stage.keysExamined}`);\n\t\t}\n\t\tif (typeof stage.nReturned === 'number') {\n\t\t\tmetrics.push(`returned=${stage.nReturned}`);\n\t\t}\n\t\treturn `${index + 1}. ${stage.stage} @ ${stage.path}${metrics.length ? ` (${metrics.join(', ')})` : ''}`;\n\t}\n\n\tprivate buildSlowQueryAutoOptimizeDescription(\n\t\tlog: SlowQueryLogModel,\n\t\tapp: AICoderAppModel,\n\t\tbaseline: ExecutionMetrics,\n\t\trepoSlug: string\n\t): string {\n\t\tconst topStages = Array.isArray(baseline.topStages) ? baseline.topStages : [];\n\t\tconst lookupExprInCount = SlowQueryVerifier.countLookupExprInPattern(Array.isArray(log.pipeline) ? log.pipeline : []);\n\t\tconst lines: string[] = [\n\t\t\t'Autonomous slow-query optimization request.',\n\t\t\t'',\n\t\t\t'Hard requirements:',\n\t\t\t'1. Before changing code, query the project MongoDB diagnostics logs for the latest slow-query context.',\n\t\t\t'2. Query `slow-query-logs` using `_id` and `query_hash` from this task, then use the newest matching records.',\n\t\t\t'3. If a previous dashboard job id is provided, query `ai-development-jobs` by that `_id` and review recent failure logs before retrying.',\n\t\t\t'4. Treat `.dashboard-output/build-*.log` as primary build evidence, and `.build-output/build-*.log` as retained history when diagnosing failures.',\n\t\t\t'5. Locate the source query in app code and optimize it safely (query shape contract must remain compatible).',\n\t\t\t'6. Add or adjust indexes/code paths so docs examined and processing time drop significantly.',\n\t\t\t'7. Measure before/after `explain(\\\"executionStats\\\")` and identify the slowest stages by execution time/docs examined.',\n\t\t\t'8. Returned data must be exactly equivalent before and after optimization. Any output difference is a failed run.',\n\t\t\t'9. In `$lookup`, avoid `$expr` + `$in` when equivalent `localField` / `foreignField` joins are possible and index-friendly.',\n\t\t\t'10. Run build/lint checks and iterate until green.',\n\t\t\t'11. Use workspace context `/var/ai-workspace/<id_slow_query>` and inspect transpiled runtime references under `/var/app/current`.',\n\t\t\t'12. Publish to default branch and deploy artifacts automatically after build success.',\n\t\t\t'',\n\t\t\t`App: ${app.name || app._id}`,\n\t\t\t`Repo: ${repoSlug || app.repo || 'unknown'}`,\n\t\t\t`Slow Query #: ${log.slow_query_count_string || log._id || ''}`,\n\t\t\t`Workspace Context Id: ${String(log?._id || '').trim() || 'n/a'}`,\n\t\t\t`Workspace Path: /var/ai-workspace/${String(log?._id || '').trim() || '<id_slow_query>'}`,\n\t\t\t`Collection: ${log.collection}`,\n\t\t\t`Query Hash: ${log.query_hash}`,\n\t\t\t`Slow Query Log Id: ${String(log?._id || '').trim() || 'n/a'}`,\n\t\t\t`Previous Dashboard Job Id: ${String((log as any)?.openai_task_id || '').trim() || 'n/a'}`,\n\t\t\t`Source App: ${log.source_app || 'n/a'}`,\n\t\t\t`Environment: ${log.environment || 'n/a'}`,\n\t\t\t`Baseline Duration (ms): ${typeof baseline.durationMs === 'number' ? baseline.durationMs : 'unknown'}`,\n\t\t\t`Baseline Docs Examined: ${typeof baseline.docsExamined === 'number' ? baseline.docsExamined : 'unknown'}`,\n\t\t\t`Baseline Returned Docs: ${typeof baseline.nReturned === 'number' ? baseline.nReturned : 'unknown'}`,\n\t\t\t`Detected $lookup with $expr+$in: ${lookupExprInCount}`,\n\t\t\t'',\n\t\t\t'Baseline Hot Stages:',\n\t\t\t...(topStages.length\n\t\t\t\t? topStages.map((stage, index) => this.formatStageSummaryForPrompt(stage, index))\n\t\t\t\t: ['No stage-level metrics were captured.']),\n\t\t\t'',\n\t\t\t'Filter:',\n\t\t\t'```json',\n\t\t\tJSON.stringify(log.filter || {}, null, 2),\n\t\t\t'```',\n\t\t\t'',\n\t\t\t'Pipeline:',\n\t\t\t'```json',\n\t\t\tJSON.stringify(Array.isArray(log.pipeline) ? log.pipeline : [], null, 2),\n\t\t\t'```',\n\t\t\t'',\n\t\t\t'Options:',\n\t\t\t'```json',\n\t\t\tJSON.stringify(log.options || {}, null, 2),\n\t\t\t'```'\n\t\t];\n\t\treturn lines.join('\\n');\n\t}\n\n\tprivate resolveAutoOptimizeRepoSlug(app: AICoderAppModel | null): string {\n\t\tconst configuredRepo = String(this.config?.autofixGithubRepo || '').trim();\n\t\tconst configuredOwner = String(this.config?.autofixGithubOwner || 'resolveio').trim() || 'resolveio';\n\t\tif (configuredRepo) {\n\t\t\treturn `${configuredOwner}/${configuredRepo}`;\n\t\t}\n\t\treturn String(app?.repo || '').trim();\n\t}\n\n\tprivate resolveAutoOptimizeRepoPath(app: AICoderAppModel | null): string {\n\t\tconst configuredPath = String(this.config?.autofixRepoRoot || '').trim();\n\t\tif (configuredPath) {\n\t\t\treturn configuredPath;\n\t\t}\n\t\treturn String(app?.git_local_path || '').trim();\n\t}\n\n\tprivate static queryHasExplicitSort(pipeline?: any[], findOptions?: Record<string, any>): boolean {\n\t\tconst hasFindSort = !!(findOptions?.sort && typeof findOptions.sort === 'object' && Object.keys(findOptions.sort).length);\n\t\tif (hasFindSort) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!Array.isArray(pipeline)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn pipeline.some((stage) => {\n\t\t\tif (!stage || typeof stage !== 'object') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst sort = (stage as any).$sort;\n\t\t\treturn !!(sort && typeof sort === 'object' && Object.keys(sort).length);\n\t\t});\n\t}\n\n\tprivate static countLookupExprInPattern(pipeline?: any[]): number {\n\t\tif (!Array.isArray(pipeline)) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet count = 0;\n\t\tpipeline.forEach((stage) => {\n\t\t\tconst lookup = stage && typeof stage === 'object' ? (stage as any).$lookup : undefined;\n\t\t\tif (!lookup || typeof lookup !== 'object' || !Array.isArray(lookup.pipeline)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst lookupPipelineJson = JSON.stringify(lookup.pipeline);\n\t\t\tif (lookupPipelineJson.includes('\"$expr\"') && lookupPipelineJson.includes('\"$in\"')) {\n\t\t\t\tcount += 1;\n\t\t\t}\n\t\t});\n\t\treturn count;\n\t}\n\n\tprivate static buildBoundedPipelineForOutputCompare(pipeline: any[], maxDocs: number): any[] {\n\t\tconst cloned = SlowQueryVerifier.deepClone(pipeline);\n\t\tif (!Number.isFinite(maxDocs) || maxDocs <= 0) {\n\t\t\treturn cloned;\n\t\t}\n\n\t\tcloned.push({\n\t\t\t$limit: maxDocs + 1\n\t\t});\n\t\treturn cloned;\n\t}\n\n\tprivate static buildBoundedFindOptionsForOutputCompare(findOptions: Record<string, any> | undefined, maxDocs: number): Record<string, any> | undefined {\n\t\tconst bounded = findOptions ? SlowQueryVerifier.deepClone(findOptions) : {};\n\t\tif (!Number.isFinite(maxDocs) || maxDocs <= 0) {\n\t\t\treturn Object.keys(bounded).length ? bounded : undefined;\n\t\t}\n\n\t\tconst compareLimit = maxDocs + 1;\n\t\tif (typeof bounded.limit === 'number' && bounded.limit > 0) {\n\t\t\tbounded.limit = Math.min(bounded.limit, compareLimit);\n\t\t}\n\t\telse {\n\t\t\tbounded.limit = compareLimit;\n\t\t}\n\n\t\treturn Object.keys(bounded).length ? bounded : undefined;\n\t}\n\n\tprivate static normalizeOutputValue(value: any): any {\n\t\tif (value === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof value === 'undefined') {\n\t\t\treturn null;\n\t\t}\n\t\tif (value instanceof Date) {\n\t\t\treturn {$date: value.toISOString()};\n\t\t}\n\t\tif (Buffer.isBuffer(value)) {\n\t\t\treturn {$binary: value.toString('base64')};\n\t\t}\n\n\t\tconst valueType = typeof value;\n\t\tif (valueType === 'string' || valueType === 'boolean') {\n\t\t\treturn value;\n\t\t}\n\t\tif (valueType === 'number') {\n\t\t\tif (!Number.isFinite(value)) {\n\t\t\t\treturn '__non_finite_number__';\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (valueType === 'bigint') {\n\t\t\treturn value.toString();\n\t\t}\n\t\tif (valueType === 'function') {\n\t\t\treturn '__function__';\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => SlowQueryVerifier.normalizeOutputValue(entry));\n\t\t}\n\n\t\tif (valueType === 'object') {\n\t\t\tif (typeof (value as any).toHexString === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\treturn {$oid: (value as any).toHexString()};\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\t// continue into generic object handling\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof (value as any).toJSON === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\treturn SlowQueryVerifier.normalizeOutputValue((value as any).toJSON());\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\t// continue into generic object handling\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst normalized: Record<string, any> = {};\n\t\t\tObject.keys(value).sort().forEach((key) => {\n\t\t\t\tnormalized[key] = SlowQueryVerifier.normalizeOutputValue(value[key]);\n\t\t\t});\n\t\t\treturn normalized;\n\t\t}\n\n\t\treturn `${value}`;\n\t}\n\n\tprivate static digestOutputDocument(doc: any): string {\n\t\tconst normalized = SlowQueryVerifier.normalizeOutputValue(doc);\n\t\tconst serialized = JSON.stringify(normalized);\n\t\treturn createHash('sha256').update(serialized, 'utf8').digest('hex');\n\t}\n\n\tprivate async captureOutputFingerprint(log: SlowQueryLogModel, overrides?: SlowQueryExecutionOverride): Promise<OutputFingerprint> {\n\t\tconst collectionName = log.collection;\n\t\tif (!collectionName) {\n\t\t\tthrow new Error('Slow query missing collection name.');\n\t\t}\n\n\t\tconst target = await this.resolveExplainTarget(log);\n\t\tlet client: MongoClient | undefined;\n\t\tlet db: any;\n\n\t\ttry {\n\t\t\tif (target.type === 'client') {\n\t\t\t\tif (!target.uri) {\n\t\t\t\t\tthrow new SlowQueryVerifierError('client_db_missing_uri', 'Client DB missing uri.');\n\t\t\t\t}\n\n\t\t\t\tclient = await MongoClient.connect(target.uri, {\n\t\t\t\t\tconnectTimeoutMS: 10000,\n\t\t\t\t\tserverSelectionTimeoutMS: 10000,\n\t\t\t\t\treadPreference: 'secondaryPreferred'\n\t\t\t\t});\n\t\t\t\tdb = client.db(target.dbName);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdb = ResolveIOServer.getMainDB();\n\t\t\t}\n\n\t\t\tif (!db) {\n\t\t\t\tthrow new SlowQueryVerifierError('main_db_unavailable', 'Main server DB is not available.');\n\t\t\t}\n\n\t\t\tconst maxDocs = Number.isFinite(Number(this.config.autoOptimizeOutputCompareMaxDocs))\n\t\t\t\t? Number(this.config.autoOptimizeOutputCompareMaxDocs)\n\t\t\t\t: AUTO_OPTIMIZE_DEFAULT_OUTPUT_COMPARE_MAX_DOCS;\n\t\t\tconst effectiveMaxDocs = maxDocs > 0 ? Math.floor(maxDocs) : AUTO_OPTIMIZE_DEFAULT_OUTPUT_COMPARE_MAX_DOCS;\n\t\t\tconst effectiveLog = SlowQueryVerifier.applyQueryOverrides(log, overrides);\n\t\t\tconst pipeline = SlowQueryVerifier.extractPipelineFromLog(effectiveLog);\n\t\t\tconst filter = effectiveLog.filter ?? {};\n\t\t\tconst findOptions = SlowQueryVerifier.extractFindOptions(effectiveLog.options);\n\t\t\tconst aggregateOptions = SlowQueryVerifier.extractAggregateOptions(effectiveLog.options);\n\t\t\tconst explicitSort = SlowQueryVerifier.queryHasExplicitSort(pipeline, findOptions);\n\n\t\t\tlet cursor: any;\n\t\t\tif (pipeline) {\n\t\t\t\tif (SlowQueryVerifier.pipelineHasWriteStage(pipeline as any[])) {\n\t\t\t\t\tthrow new SlowQueryVerifierError('aggregate_write_stage', 'Aggregate pipeline includes a write stage; output comparison skipped.');\n\t\t\t\t}\n\n\t\t\t\tconst boundedPipeline = SlowQueryVerifier.buildBoundedPipelineForOutputCompare(\n\t\t\t\t\tpipeline,\n\t\t\t\t\teffectiveMaxDocs\n\t\t\t\t);\n\t\t\t\tcursor = db.collection(collectionName)\n\t\t\t\t\t.aggregate(boundedPipeline, {\n\t\t\t\t\t\t...(aggregateOptions || {}),\n\t\t\t\t\t\treadPreference: 'secondaryPreferred'\n\t\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst boundedFindOptions = SlowQueryVerifier.buildBoundedFindOptionsForOutputCompare(\n\t\t\t\t\tfindOptions,\n\t\t\t\t\teffectiveMaxDocs\n\t\t\t\t);\n\t\t\t\tcursor = SlowQueryVerifier.buildFindCursor(\n\t\t\t\t\tdb.collection(collectionName),\n\t\t\t\t\tfilter,\n\t\t\t\t\tboundedFindOptions\n\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst orderedHasher = createHash('sha256');\n\t\t\t\tlet unorderedSum = 0;\n\t\t\t\tlet unorderedXor = 0;\n\t\t\t\tlet docsCompared = 0;\n\t\t\t\tlet truncated = false;\n\t\t\t\tlet firstDocDigest = '';\n\t\t\t\tlet lastDocDigest = '';\n\t\t\t\tconst startedAt = Date.now();\n\n\t\t\ttry {\n\t\t\t\tfor await (const doc of cursor) {\n\t\t\t\t\tif (docsCompared >= effectiveMaxDocs) {\n\t\t\t\t\t\ttruncated = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst docDigest = SlowQueryVerifier.digestOutputDocument(doc);\n\t\t\t\t\tif (!firstDocDigest) {\n\t\t\t\t\t\tfirstDocDigest = docDigest;\n\t\t\t\t\t}\n\t\t\t\t\t\tlastDocDigest = docDigest;\n\t\t\t\t\t\torderedHasher.update(docDigest, 'utf8');\n\n\t\t\t\t\t\tconst head = (parseInt(docDigest.slice(0, 8), 16) ^ parseInt(docDigest.slice(8, 16), 16)) >>> 0;\n\t\t\t\t\t\tconst tail = (parseInt(docDigest.slice(16, 24), 16) ^ parseInt(docDigest.slice(24, 32), 16)) >>> 0;\n\t\t\t\t\t\tunorderedSum = (unorderedSum + head + tail) >>> 0;\n\t\t\t\t\t\tunorderedXor = (unorderedXor ^ head ^ tail) >>> 0;\n\t\t\t\t\t\tdocsCompared += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\tif (cursor && typeof cursor.close === 'function') {\n\t\t\t\t\tawait cursor.close();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst durationMs = Date.now() - startedAt;\n\t\t\treturn {\n\t\t\t\texplicitSort,\n\t\t\t\t\tdocsCompared,\n\t\t\t\t\ttruncated,\n\t\t\t\t\torderedDigest: orderedHasher.digest('hex'),\n\t\t\t\t\tunorderedDigest: `${unorderedSum.toString(16).padStart(8, '0')}:${unorderedXor.toString(16).padStart(8, '0')}`,\n\t\t\t\t\tfirstDocDigest,\n\t\t\t\t\tlastDocDigest,\n\t\t\t\t\tdurationMs: SlowQueryVerifier.isValidDuration(durationMs) ? durationMs : -1,\n\t\t\t\tmaxDocs: effectiveMaxDocs\n\t\t\t};\n\t\t}\n\t\tfinally {\n\t\t\tif (client) {\n\t\t\t\tawait client.close();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate compareOutputEquivalence(baseline: OutputFingerprint, after: OutputFingerprint): OutputEquivalenceResult {\n\t\tconst mode: 'ordered' | 'unordered' = (baseline.explicitSort || after.explicitSort)\n\t\t\t? 'ordered'\n\t\t\t: 'unordered';\n\n\t\tif (baseline.truncated || after.truncated) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: `Result set exceeded output comparison cap (${Math.max(baseline.maxDocs, after.maxDocs)} docs).`,\n\t\t\t\tmode,\n\t\t\t\tbaseline,\n\t\t\t\tafter\n\t\t\t};\n\t\t}\n\n\t\tif (baseline.docsCompared !== after.docsCompared) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: `Returned row count changed (${baseline.docsCompared} -> ${after.docsCompared}).`,\n\t\t\t\tmode,\n\t\t\t\tbaseline,\n\t\t\t\tafter\n\t\t\t};\n\t\t}\n\n\t\tif (mode === 'ordered') {\n\t\t\tif (baseline.orderedDigest !== after.orderedDigest) {\n\t\t\t\treturn {\n\t\t\t\t\tpassed: false,\n\t\t\t\t\treason: 'Ordered output digest changed.',\n\t\t\t\t\tmode,\n\t\t\t\t\tbaseline,\n\t\t\t\t\tafter\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse if (baseline.unorderedDigest !== after.unorderedDigest) {\n\t\t\treturn {\n\t\t\t\tpassed: false,\n\t\t\t\treason: 'Output set digest changed.',\n\t\t\t\tmode,\n\t\t\t\tbaseline,\n\t\t\t\tafter\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tpassed: true,\n\t\t\treason: 'Output fingerprints are equivalent.',\n\t\t\tmode,\n\t\t\tbaseline,\n\t\t\tafter\n\t\t};\n\t}\n\n\tprivate async resolveAutoOptimizeApp(log: SlowQueryLogModel): Promise<AICoderAppModel | null> {\n\t\tconst exactRepoCandidate = String(log.environment || '').trim();\n\t\tif (exactRepoCandidate && exactRepoCandidate.includes('/')) {\n\t\t\tconst escaped = this.escapeRegex(exactRepoCandidate);\n\t\t\tconst byRepo = await AICoderApps.findOne({\n\t\t\t\trepo: {$regex: `^${escaped}$`, $options: 'i'}\n\t\t\t}, {\n\t\t\t\tsort: {\n\t\t\t\t\tupdatedAt: -1,\n\t\t\t\t\tcreatedAt: -1\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (byRepo) {\n\t\t\t\treturn byRepo;\n\t\t\t}\n\t\t}\n\n\t\tconst clientCandidates = [\n\t\t\tString(log.client_slug || '').trim(),\n\t\t\tString(log.client_name || '').trim(),\n\t\t\tString(log.source_app || '').trim()\n\t\t].filter(Boolean);\n\n\t\tfor (const candidate of clientCandidates) {\n\t\t\tconst escaped = this.escapeRegex(candidate);\n\t\t\tconst byApp = await AICoderApps.findOne({\n\t\t\t\t$or: [\n\t\t\t\t\t{slug: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{name: {$regex: `^${escaped}$`, $options: 'i'}}\n\t\t\t\t]\n\t\t\t}, {\n\t\t\t\tsort: {\n\t\t\t\t\tupdatedAt: -1,\n\t\t\t\t\tcreatedAt: -1\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (byApp) {\n\t\t\t\treturn byApp;\n\t\t\t}\n\n\t\t\tconst clientDoc = await Clients.findOne({\n\t\t\t\t$or: [\n\t\t\t\t\t{name: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{demo_name: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{project: {$regex: `^${escaped}$`, $options: 'i'}},\n\t\t\t\t\t{repo: {$regex: `^${escaped}$`, $options: 'i'}}\n\t\t\t\t]\n\t\t\t});\n\t\t\tif (!clientDoc?._id) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst byClient = await AICoderApps.findOne({client_id: clientDoc._id}, {\n\t\t\t\tsort: {\n\t\t\t\t\tupdatedAt: -1,\n\t\t\t\t\tcreatedAt: -1\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (byClient) {\n\t\t\t\treturn byClient;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate async runAutoOptimization(logId: string, force = false): Promise<void> {\n\t\tconst autoOptimizeEnabled = await this.resolveAutoOptimizeEnabled();\n\t\tif (!logId || (!autoOptimizeEnabled && !force)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst log = await SlowQueryLogs.findOne({_id: logId});\n\t\tif (!log || !log._id || log.ignored) {\n\t\t\treturn;\n\t\t}\n\t\tif (log.status === 'optimized' && !force) {\n\t\t\treturn;\n\t\t}\n\t\tif (log.auto_fix_status === 'running') {\n\t\t\treturn;\n\t\t}\n\t\tif (log.auto_fix_status === 'queued' && String(log.openai_task_id || '').trim()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!force) {\n\t\t\tconst attemptsUsed = Number.isFinite(Number(log.auto_fix_attempt_count))\n\t\t\t\t? Number(log.auto_fix_attempt_count)\n\t\t\t\t: 0;\n\t\t\tconst maxAttempts = Number.isFinite(Number(this.config.autoOptimizeMaxAttemptsPerQuery))\n\t\t\t\t? Number(this.config.autoOptimizeMaxAttemptsPerQuery)\n\t\t\t\t: 0;\n\t\t\tif (maxAttempts > 0 && attemptsUsed >= maxAttempts) {\n\t\t\t\tawait this.markAutoOptimizeBudgetExceeded(log, 'Auto optimize skipped');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst cooldownDeadline = this.resolveCooldownDeadline(log);\n\t\t\tif (cooldownDeadline && cooldownDeadline.getTime() > Date.now()) {\n\t\t\t\tawait this.markAutoOptimizeCooldownActive(log, cooldownDeadline);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fingerprintMaxAttempts = Number.isFinite(Number(this.config.autoOptimizeMaxAttemptsPerFingerprint))\n\t\t\t\t? Number(this.config.autoOptimizeMaxAttemptsPerFingerprint)\n\t\t\t\t: 0;\n\t\t\tif (fingerprintMaxAttempts > 0) {\n\t\t\t\tconst windowHours = Number.isFinite(Number(this.config.autoOptimizeFingerprintWindowHours))\n\t\t\t\t\t? Number(this.config.autoOptimizeFingerprintWindowHours)\n\t\t\t\t\t: AUTO_OPTIMIZE_DEFAULT_FINGERPRINT_WINDOW_HOURS;\n\t\t\t\tconst windowStart = new Date(Date.now() - (windowHours * 60 * 60 * 1000));\n\t\t\t\tconst fingerprintAttempts = await this.resolveFingerprintAttemptsInWindow(log, windowStart);\n\t\t\t\tif (fingerprintAttempts >= fingerprintMaxAttempts) {\n\t\t\t\t\tawait this.markAutoOptimizeBudgetExceeded(\n\t\t\t\t\t\tlog,\n\t\t\t\t\t\t`Auto optimize skipped: fingerprint budget reached (${fingerprintAttempts}/${fingerprintMaxAttempts}) in the last ${windowHours}h.`\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst app = await this.resolveAutoOptimizeApp(log);\n\t\tconst resolvedRepoSlug = this.resolveAutoOptimizeRepoSlug(app);\n\t\tconst resolvedRepoPath = this.resolveAutoOptimizeRepoPath(app);\n\t\tif (!app?._id || !resolvedRepoSlug) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tverification_notes: 'Auto optimize skipped: unable to map slow query to AI Coder app/repo configuration.',\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst tokenEligibility = await checkAICoderTokenEligibility(\n\t\t\tapp._id,\n\t\t\tthis.config.autoOptimizeRequiredTokens > 0 ? this.config.autoOptimizeRequiredTokens : undefined\n\t\t);\n\t\tif (!tokenEligibility.allowed) {\n\t\t\tconst reason = `${tokenEligibility.message} Available: ${tokenEligibility.summary.available_tokens.toLocaleString()} tokens; required: ${tokenEligibility.required_tokens.toLocaleString()}.`;\n\t\t\tawait this.markAutoOptimizeTokenIneligible(log, reason);\n\t\t\treturn;\n\t\t}\n\n\t\tlet baselineExplain: ExplainResult;\n\t\ttry {\n\t\t\tbaselineExplain = await this.runExplain(log);\n\t\t}\n\t\tcatch (error) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tbaseline_error: error?.message || 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Auto optimize baseline measurement failed: ${error?.message || 'unknown error'}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize baseline measurement failed');\n\t\t\treturn;\n\t\t}\n\n\t\tconst baselineFallbackDuration = this.resolveBaselineDurationMs(log);\n\t\tconst baselineDurationMs = SlowQueryVerifier.isValidDuration(baselineExplain.durationMs)\n\t\t\t? baselineExplain.durationMs\n\t\t\t: baselineFallbackDuration;\n\t\tconst baselineMetrics = this.resolveExecutionMetrics(\n\t\t\tbaselineExplain.explainStats || {},\n\t\t\tbaselineDurationMs,\n\t\t\tbaselineExplain.stageSummaries || []\n\t\t);\n\n\t\tlet baselineOutputFingerprint: OutputFingerprint | undefined;\n\t\tif (this.config.autoOptimizeOutputCompareEnabled) {\n\t\t\ttry {\n\t\t\t\tbaselineOutputFingerprint = await this.captureOutputFingerprint(log);\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\t\tbaseline_error: error?.message || 'unknown'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tverification_notes: `Auto optimize baseline output comparison failed: ${error?.message || 'unknown error'}`,\n\t\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize baseline output comparison failed');\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst title = `Optimize slow query ${log.slow_query_count_string || log.collection}`;\n\t\tconst description = this.buildSlowQueryAutoOptimizeDescription(log, app, baselineMetrics, resolvedRepoSlug);\n\n\t\tlet job: AIDashboardJob;\n\t\ttry {\n\t\t\tjob = await this.createDashboardJob({\n\t\t\t\tproject: app._id,\n\t\t\t\ttitle,\n\t\t\t\tdescription,\n\t\t\t\trepo: resolvedRepoSlug,\n\t\t\t\tpath: resolvedRepoPath || undefined,\n\t\t\t\tprojectRoot: app.project_root || undefined\n\t\t\t});\n\t\t}\n\t\tcatch (error) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tverification_notes: `Auto optimize enqueue failed: ${error?.message || 'unknown error'}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize wait failed');\n\t\t\treturn;\n\t\t}\n\n\t\tconst jobId = String(job?._id || '').trim();\n\t\tif (!jobId) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tverification_notes: 'Auto optimize enqueue failed: dashboard job id missing.',\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst attemptStartedAt = new Date();\n\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t$inc: {\n\t\t\t\tauto_fix_attempt_count: 1\n\t\t\t},\n\t\t\t$push: {\n\t\t\t\tauto_fix_attempt_history: {\n\t\t\t\t\t$each: [attemptStartedAt],\n\t\t\t\t\t$slice: -100\n\t\t\t\t}\n\t\t\t},\n\t\t\t$set: {\n\t\t\t\tstatus: 'queued',\n\t\t\t\tauto_fix_status: 'running',\n\t\t\t\topenai_task_id: jobId,\n\t\t\t\tauto_fix_last_attempt_at: attemptStartedAt,\n\t\t\t\tauto_fix_disabled_reason: '',\n\t\t\t\tverification_notes: `Auto optimize job queued (${jobId}).`,\n\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\tlast_triaged_at: new Date()\n\t\t\t}\n\t\t});\n\t\tconst queuedLog = (await SlowQueryLogs.findOne({_id: logId})) || log;\n\t\tawait this.notifyCustomerSlowQueryStatus('detected_auto_optimize_enabled', queuedLog);\n\n\t\ttry {\n\t\t\tawait this.waitForDashboardJobStop(jobId, this.config.autoOptimizeWaitTimeoutMs);\n\t\t}\n\t\tcatch (error) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\terror: error?.message || 'timeout'\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Auto optimize wait failed: ${error?.message || 'timeout'}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize job state check failed');\n\t\t\treturn;\n\t\t}\n\n\t\tlet isRunning = false;\n\t\ttry {\n\t\t\tisRunning = await this.isDashboardJobRunning(jobId);\n\t\t}\n\t\tcatch (error) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\terror: error?.message || 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Unable to confirm dashboard job state: ${error?.message || 'unknown error'}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (isRunning) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\terror: 'still_running_after_timeout'\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Auto optimize timed out while waiting for dashboard job ${jobId}.`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize timed out');\n\t\t\treturn;\n\t\t}\n\n\t\tconst finalJob = await AIDashboardJobs.findOne({_id: jobId}) as AIDashboardJob | null;\n\t\tif (!finalJob || finalJob.phase !== 'COMPLETE' || finalJob.paused) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\tjob_phase: finalJob?.phase || 'missing',\n\t\t\t\t\t\tjob_paused: !!finalJob?.paused\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Auto optimize job ${jobId} did not complete successfully.`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize job did not complete');\n\t\t\treturn;\n\t\t}\n\n\t\tconst publishOutcome = this.evaluateDashboardPublishOutcome(finalJob);\n\t\tif (!publishOutcome.success) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\tpublish_message: publishOutcome.message,\n\t\t\t\t\t\tpublish_branch: publishOutcome.branchName || ''\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Auto optimize publish/deploy failed: ${publishOutcome.message}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize publish/deploy failed');\n\t\t\treturn;\n\t\t}\n\n\t\tconst refreshedLog = (await SlowQueryLogs.findOne({_id: logId})) || log;\n\t\tlet afterExplain: ExplainResult;\n\t\ttry {\n\t\t\tafterExplain = await this.runExplain(refreshedLog);\n\t\t}\n\t\tcatch (error) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\tpublish_message: publishOutcome.message,\n\t\t\t\t\t\tpublish_branch: publishOutcome.branchName || '',\n\t\t\t\t\t\tvalidation_error: error?.message || 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tverification_notes: `Post-deploy validation failed: ${error?.message || 'unknown error'}`,\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize post-deploy validation failed');\n\t\t\treturn;\n\t\t}\n\n\t\tconst afterMetrics = this.resolveExecutionMetrics(\n\t\t\tafterExplain.explainStats || {},\n\t\t\tafterExplain.durationMs,\n\t\t\tafterExplain.stageSummaries || []\n\t\t);\n\n\t\tlet outputEquivalence: OutputEquivalenceResult | undefined;\n\t\tif (this.config.autoOptimizeOutputCompareEnabled) {\n\t\t\tif (!baselineOutputFingerprint) {\n\t\t\t\toutputEquivalence = {\n\t\t\t\t\tpassed: false,\n\t\t\t\t\treason: 'Baseline output fingerprint missing.',\n\t\t\t\t\tmode: 'unknown'\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttry {\n\t\t\t\t\tconst afterOutputFingerprint = await this.captureOutputFingerprint(refreshedLog);\n\t\t\t\t\toutputEquivalence = this.compareOutputEquivalence(baselineOutputFingerprint, afterOutputFingerprint);\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\t\t\tauto_fix_result: {\n\t\t\t\t\t\t\t\tjob_id: jobId,\n\t\t\t\t\t\t\t\tpublish_message: publishOutcome.message,\n\t\t\t\t\t\t\t\tpublish_branch: publishOutcome.branchName || '',\n\t\t\t\t\t\t\t\tbaseline: baselineMetrics,\n\t\t\t\t\t\t\t\tafter: afterMetrics,\n\t\t\t\t\t\t\t\toutput_equivalence_error: error?.message || 'unknown'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tverification_notes: `Post-deploy output comparison failed: ${error?.message || 'unknown error'}`,\n\t\t\t\t\t\t\texplain_plan: afterExplain.explainPlan,\n\t\t\t\t\t\t\texplain_execution_stats: afterExplain.explainStats,\n\t\t\t\t\t\t\texplain_generated_at: new Date(),\n\t\t\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$push: {\n\t\t\t\t\t\t\tverification_runs: {\n\t\t\t\t\t\t\t\ttimestamp: new Date(),\n\t\t\t\t\t\t\t\tduration_ms: afterExplain.durationMs\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize output comparison failed');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst validation = this.evaluateOptimizationOutcome(baselineMetrics, afterMetrics, outputEquivalence);\n\t\tconst autoFixResult = {\n\t\t\tjob_id: jobId,\n\t\t\tpublish_message: publishOutcome.message,\n\t\t\tpublish_branch: publishOutcome.branchName || '',\n\t\t\tbaseline: baselineMetrics,\n\t\t\tafter: afterMetrics,\n\t\t\toutput_equivalence: outputEquivalence,\n\t\t\tvalidation\n\t\t};\n\n\t\tif (!validation.passed) {\n\t\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t\t$set: {\n\t\t\t\t\tstatus: 'investigating',\n\t\t\t\t\tauto_fix_status: 'failed',\n\t\t\t\t\tauto_fix_result: autoFixResult,\n\t\t\t\t\tverification_notes: `Auto optimize validation failed: ${validation.reason}`,\n\t\t\t\t\texplain_plan: afterExplain.explainPlan,\n\t\t\t\t\texplain_execution_stats: afterExplain.explainStats,\n\t\t\t\t\texplain_generated_at: new Date(),\n\t\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\t\tlast_triaged_at: new Date()\n\t\t\t\t},\n\t\t\t\t$push: {\n\t\t\t\t\tverification_runs: {\n\t\t\t\t\t\ttimestamp: new Date(),\n\t\t\t\t\t\tduration_ms: afterExplain.durationMs\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tawait this.maybeStopAutoOptimizeAfterFailure(logId, 'Auto optimize validation failed');\n\t\t\treturn;\n\t\t}\n\n\t\tawait SlowQueryLogs.updateOne({_id: logId}, {\n\t\t\t$set: {\n\t\t\t\tstatus: 'optimized',\n\t\t\t\tauto_fix_status: 'completed',\n\t\t\t\tauto_fix_result: autoFixResult,\n\t\t\t\tverification_notes: `Auto optimize completed: ${validation.reason}`,\n\t\t\t\texplain_plan: afterExplain.explainPlan,\n\t\t\t\texplain_execution_stats: afterExplain.explainStats,\n\t\t\t\texplain_generated_at: new Date(),\n\t\t\t\tlast_triaged_by: 'auto-slow-query',\n\t\t\t\tlast_triaged_at: new Date()\n\t\t\t},\n\t\t\t$push: {\n\t\t\t\tverification_runs: {\n\t\t\t\t\ttimestamp: new Date(),\n\t\t\t\t\tduration_ms: afterExplain.durationMs\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tconst optimizedLog = (await SlowQueryLogs.findOne({_id: logId})) || log;\n\t\tawait this.notifyCustomerSlowQueryStatus('completed_success', optimizedLog, {notes: validation.reason});\n\t}\n\n\tprivate async resolveClientDB(log: SlowQueryLogModel): Promise<ClientDBModel | undefined> {\n\t\tconst candidates = [\n\t\t\tlog.client_slug,\n\t\t\tlog.client_name,\n\t\t\tlog.source_app\n\t\t].filter(Boolean);\n\n\t\tif (!candidates.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst matches = await ClientDBs.find({\n\t\t\t$or: [\n\t\t\t\t{ client: { $in: candidates } },\n\t\t\t\t{ name: { $in: candidates } }\n\t\t\t]\n\t\t}, {\n\t\t\tlimit: 10\n\t\t});\n\n\t\tif (!Array.isArray(matches) || !matches.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst prodMatch = matches.find(match => match && match.dev_server === false);\n\t\tif (prodMatch) {\n\t\t\treturn prodMatch;\n\t\t}\n\n\t\tconst devMatch = matches.find(match => match && match.dev_server === true);\n\t\tif (devMatch) {\n\t\t\treturn devMatch;\n\t\t}\n\n\t\treturn matches[0];\n\t}\n\n\tprivate async resolveExplainTarget(log: SlowQueryLogModel): Promise<ExplainTarget> {\n\t\tconst clientDB = await this.resolveClientDB(log);\n\n\t\tif (clientDB) {\n\t\t\tconst dbName = clientDB.database || clientDB.name;\n\t\t\tif (!dbName) {\n\t\t\t\tthrow new SlowQueryVerifierError('client_db_missing_database', 'Client DB missing database name.');\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: 'client',\n\t\t\t\tdbName,\n\t\t\t\turi: clientDB.uri\n\t\t\t};\n\t\t}\n\n\t\tif (!this.config.fallbackToMainDB) {\n\t\t\tthrow new SlowQueryVerifierError('client_db_not_found', 'Could not resolve client DB for slow query verification.');\n\t\t}\n\n\t\tconst mainDb = ResolveIOServer.getMainDB();\n\t\tconst mainDbName = mainDb?.databaseName;\n\n\t\tif (!mainDb || !mainDbName) {\n\t\t\tthrow new SlowQueryVerifierError('main_db_unavailable', 'Main server DB is not available.');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'main',\n\t\t\tdbName: mainDbName\n\t\t};\n\t}\n\n\tprivate static extractPipelineFromLog(log: SlowQueryLogModel): any[] | undefined {\n\t\tif (!log) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (Array.isArray(log.pipeline)) {\n\t\t\treturn log.pipeline;\n\t\t}\n\n\t\tif (log.filter && Array.isArray((log.filter as any).pipeline)) {\n\t\t\treturn (log.filter as any).pipeline;\n\t\t}\n\n\t\treturn SlowQueryVerifier.extractPipelineOptions(log.options);\n\t}\n\n\tprivate static applyQueryOverrides(log: SlowQueryLogModel, overrides?: SlowQueryExecutionOverride): SlowQueryLogModel {\n\t\tif (!overrides) {\n\t\t\treturn log;\n\t\t}\n\n\t\tconst merged: SlowQueryLogModel = {...log};\n\n\t\tif (overrides.filter !== undefined) {\n\t\t\tmerged.filter = overrides.filter;\n\t\t}\n\n\t\tif (overrides.options !== undefined) {\n\t\t\tmerged.options = overrides.options;\n\t\t}\n\n\t\tif (overrides.pipeline !== undefined) {\n\t\t\tmerged.pipeline = overrides.pipeline;\n\t\t}\n\n\t\treturn merged;\n\t}\n\n\tprivate static extractPipelineOptions(options?: Record<string, any>): any[] | undefined {\n\t\tif (!options) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (Array.isArray(options)) {\n\t\t\treturn options;\n\t\t}\n\n\t\tif (Array.isArray(options.pipeline)) {\n\t\t\treturn options.pipeline;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate static extractFindOptions(options?: Record<string, any>): Record<string, any> | undefined {\n\t\tif (!options || Array.isArray(options)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst normalized: Record<string, any> = {...options};\n\t\tif (Array.isArray(normalized.pipeline)) {\n\t\t\tdelete normalized.pipeline;\n\t\t}\n\n\t\tif (!Object.keys(normalized).length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn normalized;\n\t}\n\n\tprivate static resolveDurationMs(explainResponse: Record<string, any>): number {\n\t\tconst stats = explainResponse?.executionStats;\n\t\tif (!stats) {\n\t\t\tconst stages = explainResponse?.stages;\n\t\t\tif (Array.isArray(stages)) {\n\t\t\t\tfor (const stage of stages) {\n\t\t\t\t\tconst stageStats = stage?.$cursor?.executionStats;\n\t\t\t\t\tconst candidates = [\n\t\t\t\t\t\tstageStats?.executionTimeMillis,\n\t\t\t\t\t\tstageStats?.executionTimeMillisEstimate,\n\t\t\t\t\t\tstageStats?.executionStages?.executionTimeMillis,\n\t\t\t\t\t\tstageStats?.executionStages?.executionTimeMillisEstimate\n\t\t\t\t\t];\n\n\t\t\t\t\tfor (const candidate of candidates) {\n\t\t\t\t\t\tif (SlowQueryVerifier.isValidDuration(candidate)) {\n\t\t\t\t\t\t\treturn candidate;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst candidates = [\n\t\t\tstats.executionTimeMillis,\n\t\t\tstats.executionTimeMillisEstimate,\n\t\t\tstats.executionStages?.executionTimeMillis,\n\t\t\tstats.executionStages?.executionTimeMillisEstimate\n\t\t];\n\n\t\tfor (const candidate of candidates) {\n\t\t\tif (SlowQueryVerifier.isValidDuration(candidate)) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\tprivate static pipelineHasWriteStage(pipeline: any[]): boolean {\n\t\tif (!Array.isArray(pipeline)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn pipeline.some(stage => {\n\t\t\tif (!stage || typeof stage !== 'object') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn typeof (stage as any).$out !== 'undefined' || typeof (stage as any).$merge !== 'undefined';\n\t\t});\n\t}\n\n\tprivate static extractAggregateOptions(options?: Record<string, any>): Record<string, any> | undefined {\n\t\tif (!options || Array.isArray(options) || typeof options !== 'object') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst allowedKeys = [\n\t\t\t'allowDiskUse',\n\t\t\t'bypassDocumentValidation',\n\t\t\t'collation',\n\t\t\t'comment',\n\t\t\t'hint',\n\t\t\t'let',\n\t\t\t'maxTimeMS',\n\t\t\t'maxAwaitTimeMS'\n\t\t];\n\n\t\tconst result: Record<string, any> = {};\n\t\tallowedKeys.forEach(key => {\n\t\t\tif (typeof (options as any)[key] !== 'undefined') {\n\t\t\t\tresult[key] = (options as any)[key];\n\t\t\t}\n\t\t});\n\n\t\treturn Object.keys(result).length ? result : undefined;\n\t}\n\n\tprivate static buildAggregateExplainCommand(\n\t\tcollectionName: string,\n\t\tpipeline: any[],\n\t\toptions?: Record<string, any>,\n\t\tverbosity: ExplainVerbosity = 'executionStats'\n\t): Record<string, any> {\n\t\tconst aggregateCommand: Record<string, any> = {\n\t\t\taggregate: collectionName,\n\t\t\tpipeline,\n\t\t\tcursor: {}\n\t\t};\n\n\t\tif (options && typeof options === 'object') {\n\t\t\tObject.keys(options).forEach(key => {\n\t\t\t\tif (typeof (options as any)[key] !== 'undefined') {\n\t\t\t\t\taggregateCommand[key] = (options as any)[key];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\texplain: aggregateCommand,\n\t\t\tverbosity\n\t\t};\n\t}\n\n\tprivate static isAggregateExplainWriteConcernError(err: any): boolean {\n\t\tconst message = `${err?.message || ''}`;\n\t\treturn message.includes('Option \"explain\" cannot be used on an aggregate call with writeConcern');\n\t}\n\n\tprivate static isBsonObjectTooLargeError(err: any): boolean {\n\t\tconst message = `${err?.message || ''}`;\n\t\treturn message.includes('BSONObj size:') && message.includes('is invalid');\n\t}\n\n\tprivate static isValidDuration(value: any): value is number {\n\t\treturn typeof value === 'number' && !Number.isNaN(value) && value >= 0;\n\t}\n\n\tprivate static buildFindCursor(collection: any, filter: Record<string, any>, findOptions?: Record<string, any>) {\n\t\tconst cursorOptions: Record<string, any> = {};\n\n\t\tif (findOptions) {\n\t\t\tObject.keys(findOptions).forEach(key => {\n\t\t\t\tif (['sort', 'skip', 'limit', 'projection', 'fields'].includes(key)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcursorOptions[key] = findOptions[key];\n\t\t\t});\n\t\t}\n\n\t\tcursorOptions.readPreference = 'secondaryPreferred';\n\n\t\tlet cursor = collection.find(filter || {}, cursorOptions);\n\n\t\tconst projection = findOptions?.projection ?? findOptions?.fields;\n\t\tif (projection && typeof projection === 'object') {\n\t\t\tcursor = cursor.project(projection);\n\t\t}\n\n\t\tconst sort = findOptions?.sort;\n\t\tif (sort && typeof sort === 'object') {\n\t\t\tcursor = cursor.sort(sort);\n\t\t}\n\n\t\tconst skip = findOptions?.skip;\n\t\tif (typeof skip === 'number') {\n\t\t\tcursor = cursor.skip(skip);\n\t\t}\n\n\t\tconst limit = findOptions?.limit;\n\t\tif (typeof limit === 'number') {\n\t\t\tcursor = cursor.limit(limit);\n\t\t}\n\n\t\treturn cursor;\n\t}\n\n\tprivate static async measureExecution(\n\t\tdb: any,\n\t\tcollectionName: string,\n\t\tpipeline?: any[],\n\t\tfilter?: Record<string, any>,\n\t\tfindOptions?: Record<string, any>,\n\t\taggregateOptions?: Record<string, any>\n\t): Promise<number> {\n\t\tconst start = Date.now();\n\n\t\ttry {\n\t\t\tif (Array.isArray(pipeline)) {\n\t\t\t\tawait db.collection(collectionName)\n\t\t\t\t\t.aggregate(pipeline, {\n\t\t\t\t\t\t...(aggregateOptions || {}),\n\t\t\t\t\t\treadPreference: 'secondaryPreferred'\n\t\t\t\t\t})\n\t\t\t\t\t.toArray();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst cursor = SlowQueryVerifier.buildFindCursor(\n\t\t\t\t\tdb.collection(collectionName),\n\t\t\t\t\tfilter ?? {},\n\t\t\t\t\tfindOptions\n\t\t\t\t);\n\t\t\t\tawait cursor.toArray();\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tif (!SlowQueryVerifier.isBsonObjectTooLargeError(err)) {\n\t\t\t\tconsole.error('Slow query measurement execution failed for', collectionName, err);\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst duration = Date.now() - start;\n\t\treturn SlowQueryVerifier.isValidDuration(duration) ? duration : -1;\n\t}\n\n\tprivate static normalizeExplainPayload(input?: any): Record<string, any> {\n\t\tconst cloned = SlowQueryVerifier.deepClone(input ?? {});\n\t\treturn typeof cloned === 'object' && cloned !== null ? cloned : {};\n\t}\n\n\tprivate static sanitizeExplainPayload(payload: Record<string, any>, maxBytes = 2 * 1024 * 1024): Record<string, any> {\n\t\ttry {\n\t\t\tconst json = JSON.stringify(payload);\n\t\t\tconst bytes = Buffer.byteLength(json, 'utf8');\n\t\t\treturn bytes <= maxBytes ? payload : {};\n\t\t}\n\t\tcatch {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tprivate static deepClone(value: any): any {\n\t\tif (value === null || typeof value !== 'object') {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(item => SlowQueryVerifier.deepClone(item));\n\t\t}\n\n\t\tif (typeof value.toJSON === 'function') {\n\t\t\ttry {\n\t\t\t\treturn SlowQueryVerifier.deepClone(value.toJSON());\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// fall through to manual clone\n\t\t\t}\n\t\t}\n\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach(key => {\n\t\t\tresult[key] = SlowQueryVerifier.deepClone(value[key]);\n\t\t});\n\n\t\treturn result;\n\t}\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { SlowQueryReportPayload } from '../types/slow-query-report';
2
+ type SlowQueryLogModel = Record<string, any>;
3
+ export interface SlowQueryManagerDependencies {
4
+ SlowQueryLogs: any;
5
+ }
6
+ export declare function registerSlowQueryManagerDependencies(dependencies: SlowQueryManagerDependencies): void;
7
+ export declare class SlowQueryManager {
8
+ private config;
9
+ private serverConfig;
10
+ constructor(serverConfig: any, dependencies?: Partial<SlowQueryManagerDependencies>);
11
+ isReady(): boolean;
12
+ validateIngestKey(candidate?: string): boolean;
13
+ ingestSlowQuery(payload: SlowQueryReportPayload): Promise<SlowQueryLogModel>;
14
+ private buildLegacyDedupeQuery;
15
+ private buildFingerprintScopeKey;
16
+ private normalizeScopeSegment;
17
+ private buildCanonicalFingerprint;
18
+ private normalizeCanonicalValue;
19
+ private normalizeCanonicalString;
20
+ private isObjectIdLikeValue;
21
+ private resolveConfig;
22
+ private cleanSet;
23
+ private coerceDate;
24
+ private logPipelineDebug;
25
+ private describePipelineStages;
26
+ }
27
+ export declare function ensureSlowQueryManager(serverConfig?: any): SlowQueryManager | null;
28
+ export {};