@resolveio/server-lib 22.3.219 → 22.3.221

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/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +195 -0
  4. package/README.md +22 -0
  5. package/build_package.sh +5 -0
  6. package/compileDTS.pl +64 -0
  7. package/docs/ai-assistant-nightly-eval.md +65 -0
  8. package/docs/ai-assistant-preflight-checklist.md +23 -0
  9. package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
  10. package/eslint-plugin-custom/index.js +7 -0
  11. package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
  12. package/eslint.config.js +103 -0
  13. package/gulpfile.js +216 -0
  14. package/methodAndPublicationListGenerator.py +375 -0
  15. package/mongodbensurers.js +2 -0
  16. package/mongostop.js +3 -0
  17. package/package.json +1 -1
  18. package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
  19. package/settings.development.json +25 -0
  20. package/settings.development.redacted.json +25 -0
  21. package/src/.env +12 -0
  22. package/src/ai/assistant-core-heuristics.ts +379 -0
  23. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
  24. package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
  25. package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
  26. package/src/ai/resolveio-platform-intelligence.ts +462 -0
  27. package/src/client-server-app.ts +12 -0
  28. package/src/collections/ai-run.collection.ts +117 -0
  29. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  30. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  31. package/src/collections/ai-terminal-message.collection.ts +77 -0
  32. package/src/collections/app-setting.collection.ts +104 -0
  33. package/src/collections/app-status.collection.ts +58 -0
  34. package/src/collections/communication-metric.collection.ts +84 -0
  35. package/src/collections/counter.collection.ts +56 -0
  36. package/src/collections/cron-job-history.collection.ts +94 -0
  37. package/src/collections/cron-job.collection.ts +92 -0
  38. package/src/collections/customer-notification.collection.ts +131 -0
  39. package/src/collections/customer-portal-password.collection.ts +76 -0
  40. package/src/collections/email-history.collection.ts +134 -0
  41. package/src/collections/email-verified.collection.ts +62 -0
  42. package/src/collections/file.collection.ts +74 -0
  43. package/src/collections/flag-update.collection.ts +57 -0
  44. package/src/collections/flag.collection.ts +57 -0
  45. package/src/collections/log-method-latency.collection.ts +77 -0
  46. package/src/collections/log-subscription.collection.ts +80 -0
  47. package/src/collections/log.collection.ts +93 -0
  48. package/src/collections/logged-in-users.collection.ts +67 -0
  49. package/src/collections/monitor-cpu.collection.ts +65 -0
  50. package/src/collections/monitor-function.collection.ts +74 -0
  51. package/src/collections/monitor-memory.collection.ts +77 -0
  52. package/src/collections/monitor-mongo.collection.ts +71 -0
  53. package/src/collections/notification.collection.ts +57 -0
  54. package/src/collections/openai-usage-ledger.collection.ts +131 -0
  55. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  56. package/src/collections/report-builder-library.collection.ts +89 -0
  57. package/src/collections/report-builder-report.collection.ts +184 -0
  58. package/src/collections/user-group.collection.ts +89 -0
  59. package/src/collections/user-guide.collection.ts +57 -0
  60. package/src/collections/user.collection.ts +181 -0
  61. package/src/cron/cron.ts +117 -0
  62. package/src/fixtures/cron-jobs.ts +95 -0
  63. package/src/fixtures/init.ts +35 -0
  64. package/src/http/auth.ts +818 -0
  65. package/src/http/health.ts +7 -0
  66. package/src/http/home.ts +90 -0
  67. package/src/http/slow-query-publication.ts +49 -0
  68. package/src/index.ts +1 -0
  69. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  70. package/src/managers/ai-run-evidence.manager.ts +264 -0
  71. package/src/managers/communication-metric.manager.ts +82 -0
  72. package/src/managers/cron.manager.ts +333 -0
  73. package/src/managers/customer-notification-content.manager.ts +236 -0
  74. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  75. package/src/managers/error-auto-fix.manager.ts +2767 -0
  76. package/src/managers/local-log.manager.ts +113 -0
  77. package/src/managers/method.manager.ts +1857 -0
  78. package/src/managers/mongo.manager.ts +4575 -0
  79. package/src/managers/monitor.manager.ts +507 -0
  80. package/src/managers/openai-usage-ledger.manager.ts +112 -0
  81. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  82. package/src/managers/slow-query.manager.ts +519 -0
  83. package/src/managers/subscription.manager.ts +3128 -0
  84. package/src/managers/websocket.manager.ts +746 -0
  85. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  86. package/src/managers/worker-server.manager.ts +536 -0
  87. package/src/methods/accounts.ts +532 -0
  88. package/src/methods/ai-terminal.ts +29070 -0
  89. package/src/methods/app-settings.ts +114 -0
  90. package/src/methods/aws.ts +649 -0
  91. package/src/methods/collections.ts +641 -0
  92. package/src/methods/counters.ts +69 -0
  93. package/src/methods/cron-jobs.ts +2614 -0
  94. package/src/methods/customer-notifications.ts +458 -0
  95. package/src/methods/diagnostics.ts +616 -0
  96. package/src/methods/flag-updates.ts +7 -0
  97. package/src/methods/flags.ts +7 -0
  98. package/src/methods/logs.ts +657 -0
  99. package/src/methods/mongo-explorer.ts +1880 -0
  100. package/src/methods/monitor.ts +540 -0
  101. package/src/methods/pdf.ts +1236 -0
  102. package/src/methods/publications.ts +129 -0
  103. package/src/methods/report-builder.ts +3300 -0
  104. package/src/methods/support.ts +335 -0
  105. package/src/models/ai-run.model.ts +27 -0
  106. package/src/models/ai-terminal-conversation.model.ts +19 -0
  107. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  108. package/src/models/ai-terminal-message.model.ts +24 -0
  109. package/src/models/app-setting.model.ts +17 -0
  110. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  111. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  112. package/src/models/collection-document.model.ts +24 -0
  113. package/src/models/communication-metric.model.ts +23 -0
  114. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  115. package/src/models/cron-job-history.model.ts +16 -0
  116. package/src/models/cron-job.model.ts +15 -0
  117. package/src/models/customer-notification.model.ts +28 -0
  118. package/src/models/customer-portal-password.model.ts +12 -0
  119. package/src/models/dialog.model.ts +25 -0
  120. package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
  121. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  122. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  123. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  124. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  125. package/src/models/log-method-latency.model.ts +11 -0
  126. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  127. package/src/models/log.model.ts +19 -0
  128. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  129. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  130. package/src/models/method.model.ts +25 -0
  131. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  132. package/src/models/monitor-function.model.ts +16 -0
  133. package/src/models/monitor-memory.model.ts +17 -0
  134. package/src/models/monitor-mongo.model.ts +15 -0
  135. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  136. package/src/models/openai-usage-ledger.model.ts +56 -0
  137. package/src/models/pagination.model.ts +35 -0
  138. package/src/models/permission.model.ts +14 -0
  139. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  140. package/src/models/report-builder-library.model.ts +20 -0
  141. package/src/models/report-builder-report.model.ts +136 -0
  142. package/src/models/report-builder.model.ts +68 -0
  143. package/src/models/select-data-label.model.ts +9 -0
  144. package/src/models/server-message.model.ts +31 -0
  145. package/src/models/slow-query-report.model.ts +23 -0
  146. package/src/models/subscription.model.ts +73 -0
  147. package/src/models/support-ticket.model.ts +104 -0
  148. package/src/models/user-group.model.ts +24 -0
  149. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  150. package/src/models/user.model.ts +96 -0
  151. package/src/private/images/ResolveIO.png +0 -0
  152. package/src/publications/ai-terminal.ts +73 -0
  153. package/src/publications/app-settings.ts +25 -0
  154. package/src/publications/app-status.ts +13 -0
  155. package/src/publications/cron-jobs.ts +40 -0
  156. package/src/publications/customer-notifications.ts +101 -0
  157. package/src/publications/files.ts +33 -0
  158. package/src/publications/flags-update.ts +19 -0
  159. package/src/publications/flags.ts +19 -0
  160. package/src/publications/logs.ts +163 -0
  161. package/src/publications/notifications.ts +13 -0
  162. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  163. package/src/publications/report-builder-libraries.ts +41 -0
  164. package/src/publications/report-builder-reports.ts +47 -0
  165. package/src/publications/super-admin.ts +13 -0
  166. package/src/publications/user-groups.ts +12 -0
  167. package/src/publications/user-guides.ts +12 -0
  168. package/src/resolveio-server-app.ts +617 -0
  169. package/src/server-app.ts +3354 -0
  170. package/src/services/codex-client.ts +1231 -0
  171. package/src/services/openai-client.ts +265 -0
  172. package/src/types/error-report.ts +26 -0
  173. package/src/types/js-tiktoken.d.ts +11 -0
  174. package/src/types/slow-query-report.ts +28 -0
  175. package/src/util/ai-qa-policy.ts +925 -0
  176. package/src/util/ai-run-evidence-adapters.ts +8347 -0
  177. package/src/util/ai-run-evidence-dashboard.ts +323 -0
  178. package/src/util/ai-run-evidence-eval.ts +1057 -0
  179. package/src/util/ai-run-evidence.ts +1430 -0
  180. package/src/util/ai-runner-artifacts.ts +586 -0
  181. package/src/util/ai-runner-manager-autopilot.ts +961 -0
  182. package/src/util/ai-runner-manager-policy.ts +5011 -0
  183. package/src/util/ai-runner-qa-auth.ts +838 -0
  184. package/src/util/ai-runner-qa-tools.ts +3536 -0
  185. package/src/util/aicoder-runner-v6.ts +3121 -0
  186. package/src/util/common.ts +649 -0
  187. package/src/util/customer-portal-password.ts +183 -0
  188. package/src/util/error-reporter.ts +332 -0
  189. package/src/util/error-tracking.ts +79 -0
  190. package/src/util/openai-usage-cost.ts +114 -0
  191. package/src/util/report-builder-unwinds.ts +180 -0
  192. package/src/util/runner-process-janitor.ts +219 -0
  193. package/src/util/schema-report-builder.ts +448 -0
  194. package/src/util/slow-query-reporter.ts +216 -0
  195. package/src/util/subscription-dependency-context.ts +1096 -0
  196. package/src/util/support-runner-v5.ts +10040 -0
  197. package/src/util/tokenizer.ts +38 -0
  198. package/src/workers/codex-runner.worker.ts +142 -0
  199. package/start_server.sh +5 -0
  200. package/tests/ai-assistant-corpus-build.ts +484 -0
  201. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  202. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  203. package/tests/ai-assistant-eval-triage.ts +831 -0
  204. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  205. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  206. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  207. package/tests/ai-assistant-routing-eval.test.ts +585 -0
  208. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  209. package/tests/ai-assistant-utils.test.ts +4834 -0
  210. package/tests/ai-manager-autopilot-snapshot.test.ts +193 -0
  211. package/tests/ai-manager-recovery-checkpoint.test.ts +1383 -0
  212. package/tests/ai-run-eval.test.ts +132 -0
  213. package/tests/ai-run-evidence.test.ts +3773 -0
  214. package/tests/ai-runner-contract.test.ts +515 -0
  215. package/tests/aicoder-runner-v6.test.ts +822 -0
  216. package/tests/error-reporter.test.ts +145 -0
  217. package/tests/method-publication-generator.test.ts +46 -0
  218. package/tests/report-builder-linking.test.ts +79 -0
  219. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  220. package/tests/server-app-cron-owner.test.ts +127 -0
  221. package/tests/subscription-connect-race.test.ts +158 -0
  222. package/tests/subscription-dependency-context.test.ts +324 -0
  223. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  224. package/tests/subscription-manager-invalidation.test.ts +86 -0
  225. package/tests/support-runner-v5.test.ts +3201 -0
  226. package/tsconfig.json +34 -0
  227. package/ai/assistant-core-heuristics.d.ts +0 -11
  228. package/ai/assistant-core-heuristics.js +0 -356
  229. package/ai/assistant-core-heuristics.js.map +0 -1
  230. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  231. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  232. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  233. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  234. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  235. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  236. package/ai/resolveio-platform-intelligence-types.js +0 -4
  237. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  238. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  239. package/ai/resolveio-platform-intelligence.js +0 -463
  240. package/ai/resolveio-platform-intelligence.js.map +0 -1
  241. package/client-server-app.d.ts +0 -1
  242. package/client-server-app.js +0 -68
  243. package/client-server-app.js.map +0 -1
  244. package/collections/ai-run.collection.d.ts +0 -3
  245. package/collections/ai-run.collection.js +0 -170
  246. package/collections/ai-run.collection.js.map +0 -1
  247. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  248. package/collections/ai-terminal-conversation.collection.js +0 -140
  249. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  250. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  251. package/collections/ai-terminal-issue-report.collection.js +0 -148
  252. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  253. package/collections/ai-terminal-message.collection.d.ts +0 -2
  254. package/collections/ai-terminal-message.collection.js +0 -121
  255. package/collections/ai-terminal-message.collection.js.map +0 -1
  256. package/collections/app-setting.collection.d.ts +0 -3
  257. package/collections/app-setting.collection.js +0 -103
  258. package/collections/app-setting.collection.js.map +0 -1
  259. package/collections/app-status.collection.d.ts +0 -3
  260. package/collections/app-status.collection.js +0 -57
  261. package/collections/app-status.collection.js.map +0 -1
  262. package/collections/communication-metric.collection.d.ts +0 -2
  263. package/collections/communication-metric.collection.js +0 -133
  264. package/collections/communication-metric.collection.js.map +0 -1
  265. package/collections/counter.collection.d.ts +0 -3
  266. package/collections/counter.collection.js +0 -56
  267. package/collections/counter.collection.js.map +0 -1
  268. package/collections/cron-job-history.collection.d.ts +0 -3
  269. package/collections/cron-job-history.collection.js +0 -137
  270. package/collections/cron-job-history.collection.js.map +0 -1
  271. package/collections/cron-job.collection.d.ts +0 -3
  272. package/collections/cron-job.collection.js +0 -92
  273. package/collections/cron-job.collection.js.map +0 -1
  274. package/collections/customer-notification.collection.d.ts +0 -3
  275. package/collections/customer-notification.collection.js +0 -130
  276. package/collections/customer-notification.collection.js.map +0 -1
  277. package/collections/customer-portal-password.collection.d.ts +0 -3
  278. package/collections/customer-portal-password.collection.js +0 -75
  279. package/collections/customer-portal-password.collection.js.map +0 -1
  280. package/collections/email-history.collection.d.ts +0 -3
  281. package/collections/email-history.collection.js +0 -134
  282. package/collections/email-history.collection.js.map +0 -1
  283. package/collections/email-verified.collection.d.ts +0 -3
  284. package/collections/email-verified.collection.js +0 -62
  285. package/collections/email-verified.collection.js.map +0 -1
  286. package/collections/file.collection.d.ts +0 -3
  287. package/collections/file.collection.js +0 -74
  288. package/collections/file.collection.js.map +0 -1
  289. package/collections/flag-update.collection.d.ts +0 -3
  290. package/collections/flag-update.collection.js +0 -57
  291. package/collections/flag-update.collection.js.map +0 -1
  292. package/collections/flag.collection.d.ts +0 -3
  293. package/collections/flag.collection.js +0 -57
  294. package/collections/flag.collection.js.map +0 -1
  295. package/collections/log-method-latency.collection.d.ts +0 -3
  296. package/collections/log-method-latency.collection.js +0 -77
  297. package/collections/log-method-latency.collection.js.map +0 -1
  298. package/collections/log-subscription.collection.d.ts +0 -3
  299. package/collections/log-subscription.collection.js +0 -80
  300. package/collections/log-subscription.collection.js.map +0 -1
  301. package/collections/log.collection.d.ts +0 -3
  302. package/collections/log.collection.js +0 -93
  303. package/collections/log.collection.js.map +0 -1
  304. package/collections/logged-in-users.collection.d.ts +0 -3
  305. package/collections/logged-in-users.collection.js +0 -67
  306. package/collections/logged-in-users.collection.js.map +0 -1
  307. package/collections/monitor-cpu.collection.d.ts +0 -3
  308. package/collections/monitor-cpu.collection.js +0 -65
  309. package/collections/monitor-cpu.collection.js.map +0 -1
  310. package/collections/monitor-function.collection.d.ts +0 -3
  311. package/collections/monitor-function.collection.js +0 -74
  312. package/collections/monitor-function.collection.js.map +0 -1
  313. package/collections/monitor-memory.collection.d.ts +0 -3
  314. package/collections/monitor-memory.collection.js +0 -77
  315. package/collections/monitor-memory.collection.js.map +0 -1
  316. package/collections/monitor-mongo.collection.d.ts +0 -3
  317. package/collections/monitor-mongo.collection.js +0 -71
  318. package/collections/monitor-mongo.collection.js.map +0 -1
  319. package/collections/notification.collection.d.ts +0 -3
  320. package/collections/notification.collection.js +0 -57
  321. package/collections/notification.collection.js.map +0 -1
  322. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  323. package/collections/openai-usage-ledger.collection.js +0 -188
  324. package/collections/openai-usage-ledger.collection.js.map +0 -1
  325. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  326. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  327. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  328. package/collections/report-builder-library.collection.d.ts +0 -3
  329. package/collections/report-builder-library.collection.js +0 -87
  330. package/collections/report-builder-library.collection.js.map +0 -1
  331. package/collections/report-builder-report.collection.d.ts +0 -4
  332. package/collections/report-builder-report.collection.js +0 -184
  333. package/collections/report-builder-report.collection.js.map +0 -1
  334. package/collections/user-group.collection.d.ts +0 -4
  335. package/collections/user-group.collection.js +0 -89
  336. package/collections/user-group.collection.js.map +0 -1
  337. package/collections/user-guide.collection.d.ts +0 -3
  338. package/collections/user-guide.collection.js +0 -57
  339. package/collections/user-guide.collection.js.map +0 -1
  340. package/collections/user.collection.d.ts +0 -4
  341. package/collections/user.collection.js +0 -180
  342. package/collections/user.collection.js.map +0 -1
  343. package/cron/cron.d.ts +0 -14
  344. package/cron/cron.js +0 -216
  345. package/cron/cron.js.map +0 -1
  346. package/fixtures/cron-jobs.d.ts +0 -1
  347. package/fixtures/cron-jobs.js +0 -150
  348. package/fixtures/cron-jobs.js.map +0 -1
  349. package/fixtures/init.d.ts +0 -1
  350. package/fixtures/init.js +0 -91
  351. package/fixtures/init.js.map +0 -1
  352. package/http/auth.d.ts +0 -2
  353. package/http/auth.js +0 -951
  354. package/http/auth.js.map +0 -1
  355. package/http/health.d.ts +0 -1
  356. package/http/health.js +0 -11
  357. package/http/health.js.map +0 -1
  358. package/http/home.d.ts +0 -1
  359. package/http/home.js +0 -134
  360. package/http/home.js.map +0 -1
  361. package/http/slow-query-publication.d.ts +0 -2
  362. package/http/slow-query-publication.js +0 -99
  363. package/http/slow-query-publication.js.map +0 -1
  364. package/index.d.ts +0 -1
  365. package/index.js +0 -19
  366. package/index.js.map +0 -1
  367. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  368. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  369. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  370. package/managers/ai-run-evidence.manager.d.ts +0 -36
  371. package/managers/ai-run-evidence.manager.js +0 -377
  372. package/managers/ai-run-evidence.manager.js.map +0 -1
  373. package/managers/communication-metric.manager.d.ts +0 -16
  374. package/managers/communication-metric.manager.js +0 -134
  375. package/managers/communication-metric.manager.js.map +0 -1
  376. package/managers/cron.manager.d.ts +0 -20
  377. package/managers/cron.manager.js +0 -534
  378. package/managers/cron.manager.js.map +0 -1
  379. package/managers/customer-notification-content.manager.d.ts +0 -55
  380. package/managers/customer-notification-content.manager.js +0 -158
  381. package/managers/customer-notification-content.manager.js.map +0 -1
  382. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  383. package/managers/diagnostic-manager-bootstrap.js +0 -260
  384. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  385. package/managers/error-auto-fix.manager.d.ts +0 -149
  386. package/managers/error-auto-fix.manager.js +0 -3064
  387. package/managers/error-auto-fix.manager.js.map +0 -1
  388. package/managers/local-log.manager.d.ts +0 -18
  389. package/managers/local-log.manager.js +0 -88
  390. package/managers/local-log.manager.js.map +0 -1
  391. package/managers/method.manager.d.ts +0 -84
  392. package/managers/method.manager.js +0 -1964
  393. package/managers/method.manager.js.map +0 -1
  394. package/managers/mongo.manager.d.ts +0 -224
  395. package/managers/mongo.manager.js +0 -5000
  396. package/managers/mongo.manager.js.map +0 -1
  397. package/managers/monitor.manager.d.ts +0 -70
  398. package/managers/monitor.manager.js +0 -550
  399. package/managers/monitor.manager.js.map +0 -1
  400. package/managers/openai-usage-ledger.manager.d.ts +0 -30
  401. package/managers/openai-usage-ledger.manager.js +0 -142
  402. package/managers/openai-usage-ledger.manager.js.map +0 -1
  403. package/managers/slow-query-verifier.manager.d.ts +0 -144
  404. package/managers/slow-query-verifier.manager.js +0 -3857
  405. package/managers/slow-query-verifier.manager.js.map +0 -1
  406. package/managers/slow-query.manager.d.ts +0 -28
  407. package/managers/slow-query.manager.js +0 -468
  408. package/managers/slow-query.manager.js.map +0 -1
  409. package/managers/subscription.manager.d.ts +0 -169
  410. package/managers/subscription.manager.js +0 -3434
  411. package/managers/subscription.manager.js.map +0 -1
  412. package/managers/websocket.manager.d.ts +0 -73
  413. package/managers/websocket.manager.js +0 -673
  414. package/managers/websocket.manager.js.map +0 -1
  415. package/managers/worker-dispatcher.manager.d.ts +0 -120
  416. package/managers/worker-dispatcher.manager.js +0 -1266
  417. package/managers/worker-dispatcher.manager.js.map +0 -1
  418. package/managers/worker-server.manager.d.ts +0 -35
  419. package/managers/worker-server.manager.js +0 -582
  420. package/managers/worker-server.manager.js.map +0 -1
  421. package/methods/accounts.d.ts +0 -2
  422. package/methods/accounts.js +0 -624
  423. package/methods/accounts.js.map +0 -1
  424. package/methods/ai-terminal.d.ts +0 -458
  425. package/methods/ai-terminal.js +0 -27991
  426. package/methods/ai-terminal.js.map +0 -1
  427. package/methods/app-settings.d.ts +0 -2
  428. package/methods/app-settings.js +0 -169
  429. package/methods/app-settings.js.map +0 -1
  430. package/methods/aws.d.ts +0 -2
  431. package/methods/aws.js +0 -877
  432. package/methods/aws.js.map +0 -1
  433. package/methods/collections.d.ts +0 -2
  434. package/methods/collections.js +0 -719
  435. package/methods/collections.js.map +0 -1
  436. package/methods/counters.d.ts +0 -2
  437. package/methods/counters.js +0 -113
  438. package/methods/counters.js.map +0 -1
  439. package/methods/cron-jobs.d.ts +0 -2
  440. package/methods/cron-jobs.js +0 -2475
  441. package/methods/cron-jobs.js.map +0 -1
  442. package/methods/customer-notifications.d.ts +0 -2
  443. package/methods/customer-notifications.js +0 -528
  444. package/methods/customer-notifications.js.map +0 -1
  445. package/methods/diagnostics.d.ts +0 -2
  446. package/methods/diagnostics.js +0 -703
  447. package/methods/diagnostics.js.map +0 -1
  448. package/methods/flag-updates.d.ts +0 -2
  449. package/methods/flag-updates.js +0 -8
  450. package/methods/flag-updates.js.map +0 -1
  451. package/methods/flags.d.ts +0 -2
  452. package/methods/flags.js +0 -8
  453. package/methods/flags.js.map +0 -1
  454. package/methods/logs.d.ts +0 -2
  455. package/methods/logs.js +0 -751
  456. package/methods/logs.js.map +0 -1
  457. package/methods/mongo-explorer.d.ts +0 -2
  458. package/methods/mongo-explorer.js +0 -1808
  459. package/methods/mongo-explorer.js.map +0 -1
  460. package/methods/monitor.d.ts +0 -2
  461. package/methods/monitor.js +0 -543
  462. package/methods/monitor.js.map +0 -1
  463. package/methods/pdf.d.ts +0 -2
  464. package/methods/pdf.js +0 -1216
  465. package/methods/pdf.js.map +0 -1
  466. package/methods/publications.d.ts +0 -1
  467. package/methods/publications.js +0 -183
  468. package/methods/publications.js.map +0 -1
  469. package/methods/report-builder.d.ts +0 -2
  470. package/methods/report-builder.js +0 -3094
  471. package/methods/report-builder.js.map +0 -1
  472. package/methods/support.d.ts +0 -2
  473. package/methods/support.js +0 -430
  474. package/methods/support.js.map +0 -1
  475. package/models/ai-run.model.d.ts +0 -19
  476. package/models/ai-run.model.js +0 -4
  477. package/models/ai-run.model.js.map +0 -1
  478. package/models/ai-terminal-conversation.model.d.ts +0 -17
  479. package/models/ai-terminal-conversation.model.js +0 -4
  480. package/models/ai-terminal-conversation.model.js.map +0 -1
  481. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  482. package/models/ai-terminal-issue-report.model.js +0 -4
  483. package/models/ai-terminal-issue-report.model.js.map +0 -1
  484. package/models/ai-terminal-message.model.d.ts +0 -22
  485. package/models/ai-terminal-message.model.js +0 -4
  486. package/models/ai-terminal-message.model.js.map +0 -1
  487. package/models/app-setting.model.d.ts +0 -16
  488. package/models/app-setting.model.js +0 -4
  489. package/models/app-setting.model.js.map +0 -1
  490. package/models/app-status.model.js +0 -4
  491. package/models/app-status.model.js.map +0 -1
  492. package/models/billing-logged-in-users.model.js +0 -4
  493. package/models/billing-logged-in-users.model.js.map +0 -1
  494. package/models/collection-document.model.d.ts +0 -21
  495. package/models/collection-document.model.js +0 -4
  496. package/models/collection-document.model.js.map +0 -1
  497. package/models/communication-metric.model.d.ts +0 -20
  498. package/models/communication-metric.model.js +0 -4
  499. package/models/communication-metric.model.js.map +0 -1
  500. package/models/counter.model.js +0 -4
  501. package/models/counter.model.js.map +0 -1
  502. package/models/cron-job-history.model.d.ts +0 -15
  503. package/models/cron-job-history.model.js +0 -4
  504. package/models/cron-job-history.model.js.map +0 -1
  505. package/models/cron-job.model.d.ts +0 -14
  506. package/models/cron-job.model.js +0 -4
  507. package/models/cron-job.model.js.map +0 -1
  508. package/models/customer-notification.model.d.ts +0 -26
  509. package/models/customer-notification.model.js +0 -4
  510. package/models/customer-notification.model.js.map +0 -1
  511. package/models/customer-portal-password.model.d.ts +0 -11
  512. package/models/customer-portal-password.model.js +0 -4
  513. package/models/customer-portal-password.model.js.map +0 -1
  514. package/models/dialog.model.d.ts +0 -23
  515. package/models/dialog.model.js +0 -4
  516. package/models/dialog.model.js.map +0 -1
  517. package/models/email-history.model.d.ts +0 -32
  518. package/models/email-history.model.js.map +0 -1
  519. package/models/email-verified.model.js +0 -4
  520. package/models/email-verified.model.js.map +0 -1
  521. package/models/file.model.js +0 -4
  522. package/models/file.model.js.map +0 -1
  523. package/models/flag-update.model.js +0 -4
  524. package/models/flag-update.model.js.map +0 -1
  525. package/models/flag.model.js +0 -4
  526. package/models/flag.model.js.map +0 -1
  527. package/models/log-method-latency.model.d.ts +0 -10
  528. package/models/log-method-latency.model.js +0 -4
  529. package/models/log-method-latency.model.js.map +0 -1
  530. package/models/log-subscription.model.js +0 -4
  531. package/models/log-subscription.model.js.map +0 -1
  532. package/models/log.model.d.ts +0 -17
  533. package/models/log.model.js +0 -4
  534. package/models/log.model.js.map +0 -1
  535. package/models/logged-in-users.model.js +0 -4
  536. package/models/logged-in-users.model.js.map +0 -1
  537. package/models/method-response.model.js +0 -4
  538. package/models/method-response.model.js.map +0 -1
  539. package/models/method.model.d.ts +0 -26
  540. package/models/method.model.js +0 -4
  541. package/models/method.model.js.map +0 -1
  542. package/models/monitor-cpu.model.js +0 -4
  543. package/models/monitor-cpu.model.js.map +0 -1
  544. package/models/monitor-function.model.d.ts +0 -14
  545. package/models/monitor-function.model.js +0 -4
  546. package/models/monitor-function.model.js.map +0 -1
  547. package/models/monitor-memory.model.d.ts +0 -15
  548. package/models/monitor-memory.model.js +0 -4
  549. package/models/monitor-memory.model.js.map +0 -1
  550. package/models/monitor-mongo.model.d.ts +0 -13
  551. package/models/monitor-mongo.model.js +0 -4
  552. package/models/monitor-mongo.model.js.map +0 -1
  553. package/models/notification.model.js +0 -4
  554. package/models/notification.model.js.map +0 -1
  555. package/models/openai-usage-ledger.model.d.ts +0 -30
  556. package/models/openai-usage-ledger.model.js +0 -4
  557. package/models/openai-usage-ledger.model.js.map +0 -1
  558. package/models/pagination.model.d.ts +0 -11
  559. package/models/pagination.model.js +0 -28
  560. package/models/pagination.model.js.map +0 -1
  561. package/models/permission.model.d.ts +0 -12
  562. package/models/permission.model.js +0 -4
  563. package/models/permission.model.js.map +0 -1
  564. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  565. package/models/report-builder-dashboard-builder.model.js +0 -4
  566. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  567. package/models/report-builder-library.model.d.ts +0 -17
  568. package/models/report-builder-library.model.js +0 -4
  569. package/models/report-builder-library.model.js.map +0 -1
  570. package/models/report-builder-report.model.d.ts +0 -121
  571. package/models/report-builder-report.model.js +0 -4
  572. package/models/report-builder-report.model.js.map +0 -1
  573. package/models/report-builder.model.d.ts +0 -61
  574. package/models/report-builder.model.js +0 -4
  575. package/models/report-builder.model.js.map +0 -1
  576. package/models/select-data-label.model.d.ts +0 -9
  577. package/models/select-data-label.model.js +0 -4
  578. package/models/select-data-label.model.js.map +0 -1
  579. package/models/server-message.model.d.ts +0 -32
  580. package/models/server-message.model.js +0 -4
  581. package/models/server-message.model.js.map +0 -1
  582. package/models/slow-query-report.model.d.ts +0 -23
  583. package/models/slow-query-report.model.js +0 -4
  584. package/models/slow-query-report.model.js.map +0 -1
  585. package/models/subscription.model.d.ts +0 -31
  586. package/models/subscription.model.js +0 -4
  587. package/models/subscription.model.js.map +0 -1
  588. package/models/support-ticket.model.d.ts +0 -87
  589. package/models/support-ticket.model.js +0 -4
  590. package/models/support-ticket.model.js.map +0 -1
  591. package/models/user-group.model.d.ts +0 -20
  592. package/models/user-group.model.js +0 -4
  593. package/models/user-group.model.js.map +0 -1
  594. package/models/user-guide.model.js +0 -4
  595. package/models/user-guide.model.js.map +0 -1
  596. package/models/user.model.d.ts +0 -84
  597. package/models/user.model.js +0 -4
  598. package/models/user.model.js.map +0 -1
  599. package/private/images/ResolveIO.png +0 -0
  600. package/public_api.js +0 -127
  601. package/public_api.js.map +0 -1
  602. package/publications/ai-terminal.d.ts +0 -1
  603. package/publications/ai-terminal.js +0 -122
  604. package/publications/ai-terminal.js.map +0 -1
  605. package/publications/app-settings.d.ts +0 -2
  606. package/publications/app-settings.js +0 -28
  607. package/publications/app-settings.js.map +0 -1
  608. package/publications/app-status.d.ts +0 -2
  609. package/publications/app-status.js +0 -16
  610. package/publications/app-status.js.map +0 -1
  611. package/publications/cron-jobs.d.ts +0 -2
  612. package/publications/cron-jobs.js +0 -88
  613. package/publications/cron-jobs.js.map +0 -1
  614. package/publications/customer-notifications.d.ts +0 -2
  615. package/publications/customer-notifications.js +0 -161
  616. package/publications/customer-notifications.js.map +0 -1
  617. package/publications/files.d.ts +0 -2
  618. package/publications/files.js +0 -36
  619. package/publications/files.js.map +0 -1
  620. package/publications/flags-update.d.ts +0 -2
  621. package/publications/flags-update.js +0 -22
  622. package/publications/flags-update.js.map +0 -1
  623. package/publications/flags.d.ts +0 -2
  624. package/publications/flags.js +0 -22
  625. package/publications/flags.js.map +0 -1
  626. package/publications/logs.d.ts +0 -2
  627. package/publications/logs.js +0 -164
  628. package/publications/logs.js.map +0 -1
  629. package/publications/notifications.d.ts +0 -2
  630. package/publications/notifications.js +0 -16
  631. package/publications/notifications.js.map +0 -1
  632. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  633. package/publications/report-builder-dashboard-builders.js +0 -42
  634. package/publications/report-builder-dashboard-builders.js.map +0 -1
  635. package/publications/report-builder-libraries.d.ts +0 -2
  636. package/publications/report-builder-libraries.js +0 -90
  637. package/publications/report-builder-libraries.js.map +0 -1
  638. package/publications/report-builder-reports.d.ts +0 -2
  639. package/publications/report-builder-reports.js +0 -50
  640. package/publications/report-builder-reports.js.map +0 -1
  641. package/publications/super-admin.d.ts +0 -2
  642. package/publications/super-admin.js +0 -16
  643. package/publications/super-admin.js.map +0 -1
  644. package/publications/user-groups.d.ts +0 -1
  645. package/publications/user-groups.js +0 -16
  646. package/publications/user-groups.js.map +0 -1
  647. package/publications/user-guides.d.ts +0 -1
  648. package/publications/user-guides.js +0 -16
  649. package/publications/user-guides.js.map +0 -1
  650. package/resolveio-server-app.d.ts +0 -70
  651. package/resolveio-server-app.js +0 -801
  652. package/resolveio-server-app.js.map +0 -1
  653. package/server-app.d.ts +0 -228
  654. package/server-app.js +0 -3566
  655. package/server-app.js.map +0 -1
  656. package/services/codex-client.d.ts +0 -128
  657. package/services/codex-client.js +0 -1629
  658. package/services/codex-client.js.map +0 -1
  659. package/services/openai-client.d.ts +0 -46
  660. package/services/openai-client.js +0 -318
  661. package/services/openai-client.js.map +0 -1
  662. package/types/error-report.d.ts +0 -25
  663. package/types/error-report.js +0 -4
  664. package/types/error-report.js.map +0 -1
  665. package/types/slow-query-report.d.ts +0 -27
  666. package/types/slow-query-report.js +0 -6
  667. package/types/slow-query-report.js.map +0 -1
  668. package/util/ai-qa-policy.d.ts +0 -124
  669. package/util/ai-qa-policy.js +0 -736
  670. package/util/ai-qa-policy.js.map +0 -1
  671. package/util/ai-run-evidence-adapters.d.ts +0 -109
  672. package/util/ai-run-evidence-adapters.js +0 -7234
  673. package/util/ai-run-evidence-adapters.js.map +0 -1
  674. package/util/ai-run-evidence-dashboard.d.ts +0 -88
  675. package/util/ai-run-evidence-dashboard.js +0 -343
  676. package/util/ai-run-evidence-dashboard.js.map +0 -1
  677. package/util/ai-run-evidence-eval.d.ts +0 -86
  678. package/util/ai-run-evidence-eval.js +0 -1018
  679. package/util/ai-run-evidence-eval.js.map +0 -1
  680. package/util/ai-run-evidence.d.ts +0 -244
  681. package/util/ai-run-evidence.js +0 -1096
  682. package/util/ai-run-evidence.js.map +0 -1
  683. package/util/ai-runner-artifacts.d.ts +0 -82
  684. package/util/ai-runner-artifacts.js +0 -713
  685. package/util/ai-runner-artifacts.js.map +0 -1
  686. package/util/ai-runner-manager-autopilot.d.ts +0 -210
  687. package/util/ai-runner-manager-autopilot.js +0 -642
  688. package/util/ai-runner-manager-autopilot.js.map +0 -1
  689. package/util/ai-runner-manager-policy.d.ts +0 -807
  690. package/util/ai-runner-manager-policy.js +0 -3501
  691. package/util/ai-runner-manager-policy.js.map +0 -1
  692. package/util/ai-runner-qa-auth.d.ts +0 -5
  693. package/util/ai-runner-qa-auth.js +0 -839
  694. package/util/ai-runner-qa-auth.js.map +0 -1
  695. package/util/ai-runner-qa-tools.d.ts +0 -26
  696. package/util/ai-runner-qa-tools.js +0 -3520
  697. package/util/ai-runner-qa-tools.js.map +0 -1
  698. package/util/aicoder-runner-v6.d.ts +0 -426
  699. package/util/aicoder-runner-v6.js +0 -2464
  700. package/util/aicoder-runner-v6.js.map +0 -1
  701. package/util/common.d.ts +0 -31
  702. package/util/common.js +0 -683
  703. package/util/common.js.map +0 -1
  704. package/util/customer-portal-password.d.ts +0 -13
  705. package/util/customer-portal-password.js +0 -209
  706. package/util/customer-portal-password.js.map +0 -1
  707. package/util/error-reporter.d.ts +0 -52
  708. package/util/error-reporter.js +0 -326
  709. package/util/error-reporter.js.map +0 -1
  710. package/util/error-tracking.d.ts +0 -13
  711. package/util/error-tracking.js +0 -120
  712. package/util/error-tracking.js.map +0 -1
  713. package/util/openai-usage-cost.d.ts +0 -6
  714. package/util/openai-usage-cost.js +0 -103
  715. package/util/openai-usage-cost.js.map +0 -1
  716. package/util/report-builder-unwinds.d.ts +0 -15
  717. package/util/report-builder-unwinds.js +0 -156
  718. package/util/report-builder-unwinds.js.map +0 -1
  719. package/util/runner-process-janitor.d.ts +0 -27
  720. package/util/runner-process-janitor.js +0 -208
  721. package/util/runner-process-janitor.js.map +0 -1
  722. package/util/schema-report-builder.d.ts +0 -6
  723. package/util/schema-report-builder.js +0 -481
  724. package/util/schema-report-builder.js.map +0 -1
  725. package/util/slow-query-reporter.d.ts +0 -28
  726. package/util/slow-query-reporter.js +0 -226
  727. package/util/slow-query-reporter.js.map +0 -1
  728. package/util/subscription-dependency-context.d.ts +0 -34
  729. package/util/subscription-dependency-context.js +0 -1283
  730. package/util/subscription-dependency-context.js.map +0 -1
  731. package/util/support-runner-v5.d.ts +0 -1426
  732. package/util/support-runner-v5.js +0 -7624
  733. package/util/support-runner-v5.js.map +0 -1
  734. package/util/tokenizer.d.ts +0 -5
  735. package/util/tokenizer.js +0 -41
  736. package/util/tokenizer.js.map +0 -1
  737. package/workers/codex-runner.worker.d.ts +0 -1
  738. package/workers/codex-runner.worker.js +0 -192
  739. package/workers/codex-runner.worker.js.map +0 -1
  740. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  741. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  742. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  743. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  744. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  745. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -1 +0,0 @@
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"]}
@@ -1,28 +0,0 @@
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 {};