@resolveio/server-lib 22.3.220 → 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.
- package/.nodemon.json +5 -0
- package/.vscode/settings.json +21 -0
- package/AGENTS.md +195 -0
- package/README.md +22 -0
- package/build_package.sh +5 -0
- package/compileDTS.pl +64 -0
- package/docs/ai-assistant-nightly-eval.md +65 -0
- package/docs/ai-assistant-preflight-checklist.md +23 -0
- package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
- package/eslint-plugin-custom/index.js +7 -0
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
- package/eslint.config.js +103 -0
- package/gulpfile.js +216 -0
- package/methodAndPublicationListGenerator.py +375 -0
- package/mongodbensurers.js +2 -0
- package/mongostop.js +3 -0
- package/package.json +1 -1
- package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
- package/settings.development.json +25 -0
- package/settings.development.redacted.json +25 -0
- package/src/.env +12 -0
- package/src/ai/assistant-core-heuristics.ts +379 -0
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
- package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
- package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
- package/src/ai/resolveio-platform-intelligence.ts +462 -0
- package/src/client-server-app.ts +12 -0
- package/src/collections/ai-run.collection.ts +117 -0
- package/src/collections/ai-terminal-conversation.collection.ts +91 -0
- package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
- package/src/collections/ai-terminal-message.collection.ts +77 -0
- package/src/collections/app-setting.collection.ts +104 -0
- package/src/collections/app-status.collection.ts +58 -0
- package/src/collections/communication-metric.collection.ts +84 -0
- package/src/collections/counter.collection.ts +56 -0
- package/src/collections/cron-job-history.collection.ts +94 -0
- package/src/collections/cron-job.collection.ts +92 -0
- package/src/collections/customer-notification.collection.ts +131 -0
- package/src/collections/customer-portal-password.collection.ts +76 -0
- package/src/collections/email-history.collection.ts +134 -0
- package/src/collections/email-verified.collection.ts +62 -0
- package/src/collections/file.collection.ts +74 -0
- package/src/collections/flag-update.collection.ts +57 -0
- package/src/collections/flag.collection.ts +57 -0
- package/src/collections/log-method-latency.collection.ts +77 -0
- package/src/collections/log-subscription.collection.ts +80 -0
- package/src/collections/log.collection.ts +93 -0
- package/src/collections/logged-in-users.collection.ts +67 -0
- package/src/collections/monitor-cpu.collection.ts +65 -0
- package/src/collections/monitor-function.collection.ts +74 -0
- package/src/collections/monitor-memory.collection.ts +77 -0
- package/src/collections/monitor-mongo.collection.ts +71 -0
- package/src/collections/notification.collection.ts +57 -0
- package/src/collections/openai-usage-ledger.collection.ts +131 -0
- package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
- package/src/collections/report-builder-library.collection.ts +89 -0
- package/src/collections/report-builder-report.collection.ts +184 -0
- package/src/collections/user-group.collection.ts +89 -0
- package/src/collections/user-guide.collection.ts +57 -0
- package/src/collections/user.collection.ts +181 -0
- package/src/cron/cron.ts +117 -0
- package/src/fixtures/cron-jobs.ts +95 -0
- package/src/fixtures/init.ts +35 -0
- package/src/http/auth.ts +818 -0
- package/src/http/health.ts +7 -0
- package/src/http/home.ts +90 -0
- package/src/http/slow-query-publication.ts +49 -0
- package/src/index.ts +1 -0
- package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
- package/src/managers/ai-run-evidence.manager.ts +264 -0
- package/src/managers/communication-metric.manager.ts +82 -0
- package/src/managers/cron.manager.ts +333 -0
- package/src/managers/customer-notification-content.manager.ts +236 -0
- package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
- package/src/managers/error-auto-fix.manager.ts +2767 -0
- package/src/managers/local-log.manager.ts +113 -0
- package/src/managers/method.manager.ts +1857 -0
- package/src/managers/mongo.manager.ts +4575 -0
- package/src/managers/monitor.manager.ts +507 -0
- package/src/managers/openai-usage-ledger.manager.ts +112 -0
- package/src/managers/slow-query-verifier.manager.ts +3590 -0
- package/src/managers/slow-query.manager.ts +519 -0
- package/src/managers/subscription.manager.ts +3128 -0
- package/src/managers/websocket.manager.ts +746 -0
- package/src/managers/worker-dispatcher.manager.ts +1360 -0
- package/src/managers/worker-server.manager.ts +536 -0
- package/src/methods/accounts.ts +532 -0
- package/src/methods/ai-terminal.ts +29070 -0
- package/src/methods/app-settings.ts +114 -0
- package/src/methods/aws.ts +649 -0
- package/src/methods/collections.ts +641 -0
- package/src/methods/counters.ts +69 -0
- package/src/methods/cron-jobs.ts +2614 -0
- package/src/methods/customer-notifications.ts +458 -0
- package/src/methods/diagnostics.ts +616 -0
- package/src/methods/flag-updates.ts +7 -0
- package/src/methods/flags.ts +7 -0
- package/src/methods/logs.ts +657 -0
- package/src/methods/mongo-explorer.ts +1880 -0
- package/src/methods/monitor.ts +540 -0
- package/src/methods/pdf.ts +1236 -0
- package/src/methods/publications.ts +129 -0
- package/src/methods/report-builder.ts +3300 -0
- package/src/methods/support.ts +335 -0
- package/src/models/ai-run.model.ts +27 -0
- package/src/models/ai-terminal-conversation.model.ts +19 -0
- package/src/models/ai-terminal-issue-report.model.ts +21 -0
- package/src/models/ai-terminal-message.model.ts +24 -0
- package/src/models/app-setting.model.ts +17 -0
- package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
- package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
- package/src/models/collection-document.model.ts +24 -0
- package/src/models/communication-metric.model.ts +23 -0
- package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
- package/src/models/cron-job-history.model.ts +16 -0
- package/src/models/cron-job.model.ts +15 -0
- package/src/models/customer-notification.model.ts +28 -0
- package/src/models/customer-portal-password.model.ts +12 -0
- package/src/models/dialog.model.ts +25 -0
- package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
- package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
- package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
- package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
- package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
- package/src/models/log-method-latency.model.ts +11 -0
- package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
- package/src/models/log.model.ts +19 -0
- package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
- package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
- package/src/models/method.model.ts +25 -0
- package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
- package/src/models/monitor-function.model.ts +16 -0
- package/src/models/monitor-memory.model.ts +17 -0
- package/src/models/monitor-mongo.model.ts +15 -0
- package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
- package/src/models/openai-usage-ledger.model.ts +56 -0
- package/src/models/pagination.model.ts +35 -0
- package/src/models/permission.model.ts +14 -0
- package/src/models/report-builder-dashboard-builder.model.ts +29 -0
- package/src/models/report-builder-library.model.ts +20 -0
- package/src/models/report-builder-report.model.ts +136 -0
- package/src/models/report-builder.model.ts +68 -0
- package/src/models/select-data-label.model.ts +9 -0
- package/src/models/server-message.model.ts +31 -0
- package/src/models/slow-query-report.model.ts +23 -0
- package/src/models/subscription.model.ts +73 -0
- package/src/models/support-ticket.model.ts +104 -0
- package/src/models/user-group.model.ts +24 -0
- package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
- package/src/models/user.model.ts +96 -0
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +73 -0
- package/src/publications/app-settings.ts +25 -0
- package/src/publications/app-status.ts +13 -0
- package/src/publications/cron-jobs.ts +40 -0
- package/src/publications/customer-notifications.ts +101 -0
- package/src/publications/files.ts +33 -0
- package/src/publications/flags-update.ts +19 -0
- package/src/publications/flags.ts +19 -0
- package/src/publications/logs.ts +163 -0
- package/src/publications/notifications.ts +13 -0
- package/src/publications/report-builder-dashboard-builders.ts +39 -0
- package/src/publications/report-builder-libraries.ts +41 -0
- package/src/publications/report-builder-reports.ts +47 -0
- package/src/publications/super-admin.ts +13 -0
- package/src/publications/user-groups.ts +12 -0
- package/src/publications/user-guides.ts +12 -0
- package/src/resolveio-server-app.ts +617 -0
- package/src/server-app.ts +3354 -0
- package/src/services/codex-client.ts +1231 -0
- package/src/services/openai-client.ts +265 -0
- package/src/types/error-report.ts +26 -0
- package/src/types/js-tiktoken.d.ts +11 -0
- package/src/types/slow-query-report.ts +28 -0
- package/src/util/ai-qa-policy.ts +925 -0
- package/src/util/ai-run-evidence-adapters.ts +8347 -0
- package/src/util/ai-run-evidence-dashboard.ts +323 -0
- package/src/util/ai-run-evidence-eval.ts +1057 -0
- package/src/util/ai-run-evidence.ts +1430 -0
- package/src/util/ai-runner-artifacts.ts +586 -0
- package/src/util/ai-runner-manager-autopilot.ts +961 -0
- package/src/util/ai-runner-manager-policy.ts +5011 -0
- package/src/util/ai-runner-qa-auth.ts +838 -0
- package/src/util/ai-runner-qa-tools.ts +3536 -0
- package/src/util/aicoder-runner-v6.ts +3121 -0
- package/src/util/common.ts +649 -0
- package/src/util/customer-portal-password.ts +183 -0
- package/src/util/error-reporter.ts +332 -0
- package/src/util/error-tracking.ts +79 -0
- package/src/util/openai-usage-cost.ts +114 -0
- package/src/util/report-builder-unwinds.ts +180 -0
- package/src/util/runner-process-janitor.ts +219 -0
- package/src/util/schema-report-builder.ts +448 -0
- package/src/util/slow-query-reporter.ts +216 -0
- package/src/util/subscription-dependency-context.ts +1096 -0
- package/src/util/support-runner-v5.ts +10040 -0
- package/src/util/tokenizer.ts +38 -0
- package/src/workers/codex-runner.worker.ts +142 -0
- package/start_server.sh +5 -0
- package/tests/ai-assistant-corpus-build.ts +484 -0
- package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
- package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
- package/tests/ai-assistant-eval-triage.ts +831 -0
- package/tests/ai-assistant-openai-e2e.ts +1061 -0
- package/tests/ai-assistant-openai-git-e2e.ts +155 -0
- package/tests/ai-assistant-preflight-matrix.ts +215 -0
- package/tests/ai-assistant-routing-eval.test.ts +585 -0
- package/tests/ai-assistant-snf-live-eval.ts +975 -0
- package/tests/ai-assistant-utils.test.ts +4834 -0
- package/tests/ai-manager-autopilot-snapshot.test.ts +193 -0
- package/tests/ai-manager-recovery-checkpoint.test.ts +1383 -0
- package/tests/ai-run-eval.test.ts +132 -0
- package/tests/ai-run-evidence.test.ts +3773 -0
- package/tests/ai-runner-contract.test.ts +515 -0
- package/tests/aicoder-runner-v6.test.ts +822 -0
- package/tests/error-reporter.test.ts +145 -0
- package/tests/method-publication-generator.test.ts +46 -0
- package/tests/report-builder-linking.test.ts +79 -0
- package/tests/resolveio-platform-intelligence.test.ts +352 -0
- package/tests/server-app-cron-owner.test.ts +127 -0
- package/tests/subscription-connect-race.test.ts +158 -0
- package/tests/subscription-dependency-context.test.ts +324 -0
- package/tests/subscription-manager-collection-tracking.test.ts +86 -0
- package/tests/subscription-manager-invalidation.test.ts +86 -0
- package/tests/support-runner-v5.test.ts +3201 -0
- package/tsconfig.json +34 -0
- package/ai/assistant-core-heuristics.d.ts +0 -11
- package/ai/assistant-core-heuristics.js +0 -356
- package/ai/assistant-core-heuristics.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
- package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
- package/ai/resolveio-platform-intelligence-memory.js +0 -341
- package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
- package/ai/resolveio-platform-intelligence-types.js +0 -4
- package/ai/resolveio-platform-intelligence-types.js.map +0 -1
- package/ai/resolveio-platform-intelligence.d.ts +0 -6
- package/ai/resolveio-platform-intelligence.js +0 -463
- package/ai/resolveio-platform-intelligence.js.map +0 -1
- package/client-server-app.d.ts +0 -1
- package/client-server-app.js +0 -68
- package/client-server-app.js.map +0 -1
- package/collections/ai-run.collection.d.ts +0 -3
- package/collections/ai-run.collection.js +0 -170
- package/collections/ai-run.collection.js.map +0 -1
- package/collections/ai-terminal-conversation.collection.d.ts +0 -2
- package/collections/ai-terminal-conversation.collection.js +0 -140
- package/collections/ai-terminal-conversation.collection.js.map +0 -1
- package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
- package/collections/ai-terminal-issue-report.collection.js +0 -148
- package/collections/ai-terminal-issue-report.collection.js.map +0 -1
- package/collections/ai-terminal-message.collection.d.ts +0 -2
- package/collections/ai-terminal-message.collection.js +0 -121
- package/collections/ai-terminal-message.collection.js.map +0 -1
- package/collections/app-setting.collection.d.ts +0 -3
- package/collections/app-setting.collection.js +0 -103
- package/collections/app-setting.collection.js.map +0 -1
- package/collections/app-status.collection.d.ts +0 -3
- package/collections/app-status.collection.js +0 -57
- package/collections/app-status.collection.js.map +0 -1
- package/collections/communication-metric.collection.d.ts +0 -2
- package/collections/communication-metric.collection.js +0 -133
- package/collections/communication-metric.collection.js.map +0 -1
- package/collections/counter.collection.d.ts +0 -3
- package/collections/counter.collection.js +0 -56
- package/collections/counter.collection.js.map +0 -1
- package/collections/cron-job-history.collection.d.ts +0 -3
- package/collections/cron-job-history.collection.js +0 -137
- package/collections/cron-job-history.collection.js.map +0 -1
- package/collections/cron-job.collection.d.ts +0 -3
- package/collections/cron-job.collection.js +0 -92
- package/collections/cron-job.collection.js.map +0 -1
- package/collections/customer-notification.collection.d.ts +0 -3
- package/collections/customer-notification.collection.js +0 -130
- package/collections/customer-notification.collection.js.map +0 -1
- package/collections/customer-portal-password.collection.d.ts +0 -3
- package/collections/customer-portal-password.collection.js +0 -75
- package/collections/customer-portal-password.collection.js.map +0 -1
- package/collections/email-history.collection.d.ts +0 -3
- package/collections/email-history.collection.js +0 -134
- package/collections/email-history.collection.js.map +0 -1
- package/collections/email-verified.collection.d.ts +0 -3
- package/collections/email-verified.collection.js +0 -62
- package/collections/email-verified.collection.js.map +0 -1
- package/collections/file.collection.d.ts +0 -3
- package/collections/file.collection.js +0 -74
- package/collections/file.collection.js.map +0 -1
- package/collections/flag-update.collection.d.ts +0 -3
- package/collections/flag-update.collection.js +0 -57
- package/collections/flag-update.collection.js.map +0 -1
- package/collections/flag.collection.d.ts +0 -3
- package/collections/flag.collection.js +0 -57
- package/collections/flag.collection.js.map +0 -1
- package/collections/log-method-latency.collection.d.ts +0 -3
- package/collections/log-method-latency.collection.js +0 -77
- package/collections/log-method-latency.collection.js.map +0 -1
- package/collections/log-subscription.collection.d.ts +0 -3
- package/collections/log-subscription.collection.js +0 -80
- package/collections/log-subscription.collection.js.map +0 -1
- package/collections/log.collection.d.ts +0 -3
- package/collections/log.collection.js +0 -93
- package/collections/log.collection.js.map +0 -1
- package/collections/logged-in-users.collection.d.ts +0 -3
- package/collections/logged-in-users.collection.js +0 -67
- package/collections/logged-in-users.collection.js.map +0 -1
- package/collections/monitor-cpu.collection.d.ts +0 -3
- package/collections/monitor-cpu.collection.js +0 -65
- package/collections/monitor-cpu.collection.js.map +0 -1
- package/collections/monitor-function.collection.d.ts +0 -3
- package/collections/monitor-function.collection.js +0 -74
- package/collections/monitor-function.collection.js.map +0 -1
- package/collections/monitor-memory.collection.d.ts +0 -3
- package/collections/monitor-memory.collection.js +0 -77
- package/collections/monitor-memory.collection.js.map +0 -1
- package/collections/monitor-mongo.collection.d.ts +0 -3
- package/collections/monitor-mongo.collection.js +0 -71
- package/collections/monitor-mongo.collection.js.map +0 -1
- package/collections/notification.collection.d.ts +0 -3
- package/collections/notification.collection.js +0 -57
- package/collections/notification.collection.js.map +0 -1
- package/collections/openai-usage-ledger.collection.d.ts +0 -2
- package/collections/openai-usage-ledger.collection.js +0 -188
- package/collections/openai-usage-ledger.collection.js.map +0 -1
- package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
- package/collections/report-builder-dashboard-builder.collection.js +0 -109
- package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
- package/collections/report-builder-library.collection.d.ts +0 -3
- package/collections/report-builder-library.collection.js +0 -87
- package/collections/report-builder-library.collection.js.map +0 -1
- package/collections/report-builder-report.collection.d.ts +0 -4
- package/collections/report-builder-report.collection.js +0 -184
- package/collections/report-builder-report.collection.js.map +0 -1
- package/collections/user-group.collection.d.ts +0 -4
- package/collections/user-group.collection.js +0 -89
- package/collections/user-group.collection.js.map +0 -1
- package/collections/user-guide.collection.d.ts +0 -3
- package/collections/user-guide.collection.js +0 -57
- package/collections/user-guide.collection.js.map +0 -1
- package/collections/user.collection.d.ts +0 -4
- package/collections/user.collection.js +0 -180
- package/collections/user.collection.js.map +0 -1
- package/cron/cron.d.ts +0 -14
- package/cron/cron.js +0 -216
- package/cron/cron.js.map +0 -1
- package/fixtures/cron-jobs.d.ts +0 -1
- package/fixtures/cron-jobs.js +0 -150
- package/fixtures/cron-jobs.js.map +0 -1
- package/fixtures/init.d.ts +0 -1
- package/fixtures/init.js +0 -91
- package/fixtures/init.js.map +0 -1
- package/http/auth.d.ts +0 -2
- package/http/auth.js +0 -951
- package/http/auth.js.map +0 -1
- package/http/health.d.ts +0 -1
- package/http/health.js +0 -11
- package/http/health.js.map +0 -1
- package/http/home.d.ts +0 -1
- package/http/home.js +0 -134
- package/http/home.js.map +0 -1
- package/http/slow-query-publication.d.ts +0 -2
- package/http/slow-query-publication.js +0 -99
- package/http/slow-query-publication.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -19
- package/index.js.map +0 -1
- package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
- package/managers/ai-assistant-codex-manager.manager.js +0 -1113
- package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
- package/managers/ai-run-evidence.manager.d.ts +0 -36
- package/managers/ai-run-evidence.manager.js +0 -377
- package/managers/ai-run-evidence.manager.js.map +0 -1
- package/managers/communication-metric.manager.d.ts +0 -16
- package/managers/communication-metric.manager.js +0 -134
- package/managers/communication-metric.manager.js.map +0 -1
- package/managers/cron.manager.d.ts +0 -20
- package/managers/cron.manager.js +0 -534
- package/managers/cron.manager.js.map +0 -1
- package/managers/customer-notification-content.manager.d.ts +0 -55
- package/managers/customer-notification-content.manager.js +0 -158
- package/managers/customer-notification-content.manager.js.map +0 -1
- package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
- package/managers/diagnostic-manager-bootstrap.js +0 -260
- package/managers/diagnostic-manager-bootstrap.js.map +0 -1
- package/managers/error-auto-fix.manager.d.ts +0 -149
- package/managers/error-auto-fix.manager.js +0 -3064
- package/managers/error-auto-fix.manager.js.map +0 -1
- package/managers/local-log.manager.d.ts +0 -18
- package/managers/local-log.manager.js +0 -88
- package/managers/local-log.manager.js.map +0 -1
- package/managers/method.manager.d.ts +0 -84
- package/managers/method.manager.js +0 -1964
- package/managers/method.manager.js.map +0 -1
- package/managers/mongo.manager.d.ts +0 -224
- package/managers/mongo.manager.js +0 -5000
- package/managers/mongo.manager.js.map +0 -1
- package/managers/monitor.manager.d.ts +0 -70
- package/managers/monitor.manager.js +0 -550
- package/managers/monitor.manager.js.map +0 -1
- package/managers/openai-usage-ledger.manager.d.ts +0 -30
- package/managers/openai-usage-ledger.manager.js +0 -142
- package/managers/openai-usage-ledger.manager.js.map +0 -1
- package/managers/slow-query-verifier.manager.d.ts +0 -144
- package/managers/slow-query-verifier.manager.js +0 -3857
- package/managers/slow-query-verifier.manager.js.map +0 -1
- package/managers/slow-query.manager.d.ts +0 -28
- package/managers/slow-query.manager.js +0 -468
- package/managers/slow-query.manager.js.map +0 -1
- package/managers/subscription.manager.d.ts +0 -169
- package/managers/subscription.manager.js +0 -3434
- package/managers/subscription.manager.js.map +0 -1
- package/managers/websocket.manager.d.ts +0 -73
- package/managers/websocket.manager.js +0 -673
- package/managers/websocket.manager.js.map +0 -1
- package/managers/worker-dispatcher.manager.d.ts +0 -120
- package/managers/worker-dispatcher.manager.js +0 -1266
- package/managers/worker-dispatcher.manager.js.map +0 -1
- package/managers/worker-server.manager.d.ts +0 -35
- package/managers/worker-server.manager.js +0 -582
- package/managers/worker-server.manager.js.map +0 -1
- package/methods/accounts.d.ts +0 -2
- package/methods/accounts.js +0 -624
- package/methods/accounts.js.map +0 -1
- package/methods/ai-terminal.d.ts +0 -458
- package/methods/ai-terminal.js +0 -27991
- package/methods/ai-terminal.js.map +0 -1
- package/methods/app-settings.d.ts +0 -2
- package/methods/app-settings.js +0 -169
- package/methods/app-settings.js.map +0 -1
- package/methods/aws.d.ts +0 -2
- package/methods/aws.js +0 -877
- package/methods/aws.js.map +0 -1
- package/methods/collections.d.ts +0 -2
- package/methods/collections.js +0 -719
- package/methods/collections.js.map +0 -1
- package/methods/counters.d.ts +0 -2
- package/methods/counters.js +0 -113
- package/methods/counters.js.map +0 -1
- package/methods/cron-jobs.d.ts +0 -2
- package/methods/cron-jobs.js +0 -2475
- package/methods/cron-jobs.js.map +0 -1
- package/methods/customer-notifications.d.ts +0 -2
- package/methods/customer-notifications.js +0 -528
- package/methods/customer-notifications.js.map +0 -1
- package/methods/diagnostics.d.ts +0 -2
- package/methods/diagnostics.js +0 -703
- package/methods/diagnostics.js.map +0 -1
- package/methods/flag-updates.d.ts +0 -2
- package/methods/flag-updates.js +0 -8
- package/methods/flag-updates.js.map +0 -1
- package/methods/flags.d.ts +0 -2
- package/methods/flags.js +0 -8
- package/methods/flags.js.map +0 -1
- package/methods/logs.d.ts +0 -2
- package/methods/logs.js +0 -751
- package/methods/logs.js.map +0 -1
- package/methods/mongo-explorer.d.ts +0 -2
- package/methods/mongo-explorer.js +0 -1808
- package/methods/mongo-explorer.js.map +0 -1
- package/methods/monitor.d.ts +0 -2
- package/methods/monitor.js +0 -543
- package/methods/monitor.js.map +0 -1
- package/methods/pdf.d.ts +0 -2
- package/methods/pdf.js +0 -1216
- package/methods/pdf.js.map +0 -1
- package/methods/publications.d.ts +0 -1
- package/methods/publications.js +0 -183
- package/methods/publications.js.map +0 -1
- package/methods/report-builder.d.ts +0 -2
- package/methods/report-builder.js +0 -3094
- package/methods/report-builder.js.map +0 -1
- package/methods/support.d.ts +0 -2
- package/methods/support.js +0 -430
- package/methods/support.js.map +0 -1
- package/models/ai-run.model.d.ts +0 -19
- package/models/ai-run.model.js +0 -4
- package/models/ai-run.model.js.map +0 -1
- package/models/ai-terminal-conversation.model.d.ts +0 -17
- package/models/ai-terminal-conversation.model.js +0 -4
- package/models/ai-terminal-conversation.model.js.map +0 -1
- package/models/ai-terminal-issue-report.model.d.ts +0 -19
- package/models/ai-terminal-issue-report.model.js +0 -4
- package/models/ai-terminal-issue-report.model.js.map +0 -1
- package/models/ai-terminal-message.model.d.ts +0 -22
- package/models/ai-terminal-message.model.js +0 -4
- package/models/ai-terminal-message.model.js.map +0 -1
- package/models/app-setting.model.d.ts +0 -16
- package/models/app-setting.model.js +0 -4
- package/models/app-setting.model.js.map +0 -1
- package/models/app-status.model.js +0 -4
- package/models/app-status.model.js.map +0 -1
- package/models/billing-logged-in-users.model.js +0 -4
- package/models/billing-logged-in-users.model.js.map +0 -1
- package/models/collection-document.model.d.ts +0 -21
- package/models/collection-document.model.js +0 -4
- package/models/collection-document.model.js.map +0 -1
- package/models/communication-metric.model.d.ts +0 -20
- package/models/communication-metric.model.js +0 -4
- package/models/communication-metric.model.js.map +0 -1
- package/models/counter.model.js +0 -4
- package/models/counter.model.js.map +0 -1
- package/models/cron-job-history.model.d.ts +0 -15
- package/models/cron-job-history.model.js +0 -4
- package/models/cron-job-history.model.js.map +0 -1
- package/models/cron-job.model.d.ts +0 -14
- package/models/cron-job.model.js +0 -4
- package/models/cron-job.model.js.map +0 -1
- package/models/customer-notification.model.d.ts +0 -26
- package/models/customer-notification.model.js +0 -4
- package/models/customer-notification.model.js.map +0 -1
- package/models/customer-portal-password.model.d.ts +0 -11
- package/models/customer-portal-password.model.js +0 -4
- package/models/customer-portal-password.model.js.map +0 -1
- package/models/dialog.model.d.ts +0 -23
- package/models/dialog.model.js +0 -4
- package/models/dialog.model.js.map +0 -1
- package/models/email-history.model.d.ts +0 -32
- package/models/email-history.model.js.map +0 -1
- package/models/email-verified.model.js +0 -4
- package/models/email-verified.model.js.map +0 -1
- package/models/file.model.js +0 -4
- package/models/file.model.js.map +0 -1
- package/models/flag-update.model.js +0 -4
- package/models/flag-update.model.js.map +0 -1
- package/models/flag.model.js +0 -4
- package/models/flag.model.js.map +0 -1
- package/models/log-method-latency.model.d.ts +0 -10
- package/models/log-method-latency.model.js +0 -4
- package/models/log-method-latency.model.js.map +0 -1
- package/models/log-subscription.model.js +0 -4
- package/models/log-subscription.model.js.map +0 -1
- package/models/log.model.d.ts +0 -17
- package/models/log.model.js +0 -4
- package/models/log.model.js.map +0 -1
- package/models/logged-in-users.model.js +0 -4
- package/models/logged-in-users.model.js.map +0 -1
- package/models/method-response.model.js +0 -4
- package/models/method-response.model.js.map +0 -1
- package/models/method.model.d.ts +0 -26
- package/models/method.model.js +0 -4
- package/models/method.model.js.map +0 -1
- package/models/monitor-cpu.model.js +0 -4
- package/models/monitor-cpu.model.js.map +0 -1
- package/models/monitor-function.model.d.ts +0 -14
- package/models/monitor-function.model.js +0 -4
- package/models/monitor-function.model.js.map +0 -1
- package/models/monitor-memory.model.d.ts +0 -15
- package/models/monitor-memory.model.js +0 -4
- package/models/monitor-memory.model.js.map +0 -1
- package/models/monitor-mongo.model.d.ts +0 -13
- package/models/monitor-mongo.model.js +0 -4
- package/models/monitor-mongo.model.js.map +0 -1
- package/models/notification.model.js +0 -4
- package/models/notification.model.js.map +0 -1
- package/models/openai-usage-ledger.model.d.ts +0 -30
- package/models/openai-usage-ledger.model.js +0 -4
- package/models/openai-usage-ledger.model.js.map +0 -1
- package/models/pagination.model.d.ts +0 -11
- package/models/pagination.model.js +0 -28
- package/models/pagination.model.js.map +0 -1
- package/models/permission.model.d.ts +0 -12
- package/models/permission.model.js +0 -4
- package/models/permission.model.js.map +0 -1
- package/models/report-builder-dashboard-builder.model.d.ts +0 -25
- package/models/report-builder-dashboard-builder.model.js +0 -4
- package/models/report-builder-dashboard-builder.model.js.map +0 -1
- package/models/report-builder-library.model.d.ts +0 -17
- package/models/report-builder-library.model.js +0 -4
- package/models/report-builder-library.model.js.map +0 -1
- package/models/report-builder-report.model.d.ts +0 -121
- package/models/report-builder-report.model.js +0 -4
- package/models/report-builder-report.model.js.map +0 -1
- package/models/report-builder.model.d.ts +0 -61
- package/models/report-builder.model.js +0 -4
- package/models/report-builder.model.js.map +0 -1
- package/models/select-data-label.model.d.ts +0 -9
- package/models/select-data-label.model.js +0 -4
- package/models/select-data-label.model.js.map +0 -1
- package/models/server-message.model.d.ts +0 -32
- package/models/server-message.model.js +0 -4
- package/models/server-message.model.js.map +0 -1
- package/models/slow-query-report.model.d.ts +0 -23
- package/models/slow-query-report.model.js +0 -4
- package/models/slow-query-report.model.js.map +0 -1
- package/models/subscription.model.d.ts +0 -31
- package/models/subscription.model.js +0 -4
- package/models/subscription.model.js.map +0 -1
- package/models/support-ticket.model.d.ts +0 -87
- package/models/support-ticket.model.js +0 -4
- package/models/support-ticket.model.js.map +0 -1
- package/models/user-group.model.d.ts +0 -20
- package/models/user-group.model.js +0 -4
- package/models/user-group.model.js.map +0 -1
- package/models/user-guide.model.js +0 -4
- package/models/user-guide.model.js.map +0 -1
- package/models/user.model.d.ts +0 -84
- package/models/user.model.js +0 -4
- package/models/user.model.js.map +0 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +0 -127
- package/public_api.js.map +0 -1
- package/publications/ai-terminal.d.ts +0 -1
- package/publications/ai-terminal.js +0 -122
- package/publications/ai-terminal.js.map +0 -1
- package/publications/app-settings.d.ts +0 -2
- package/publications/app-settings.js +0 -28
- package/publications/app-settings.js.map +0 -1
- package/publications/app-status.d.ts +0 -2
- package/publications/app-status.js +0 -16
- package/publications/app-status.js.map +0 -1
- package/publications/cron-jobs.d.ts +0 -2
- package/publications/cron-jobs.js +0 -88
- package/publications/cron-jobs.js.map +0 -1
- package/publications/customer-notifications.d.ts +0 -2
- package/publications/customer-notifications.js +0 -161
- package/publications/customer-notifications.js.map +0 -1
- package/publications/files.d.ts +0 -2
- package/publications/files.js +0 -36
- package/publications/files.js.map +0 -1
- package/publications/flags-update.d.ts +0 -2
- package/publications/flags-update.js +0 -22
- package/publications/flags-update.js.map +0 -1
- package/publications/flags.d.ts +0 -2
- package/publications/flags.js +0 -22
- package/publications/flags.js.map +0 -1
- package/publications/logs.d.ts +0 -2
- package/publications/logs.js +0 -164
- package/publications/logs.js.map +0 -1
- package/publications/notifications.d.ts +0 -2
- package/publications/notifications.js +0 -16
- package/publications/notifications.js.map +0 -1
- package/publications/report-builder-dashboard-builders.d.ts +0 -2
- package/publications/report-builder-dashboard-builders.js +0 -42
- package/publications/report-builder-dashboard-builders.js.map +0 -1
- package/publications/report-builder-libraries.d.ts +0 -2
- package/publications/report-builder-libraries.js +0 -90
- package/publications/report-builder-libraries.js.map +0 -1
- package/publications/report-builder-reports.d.ts +0 -2
- package/publications/report-builder-reports.js +0 -50
- package/publications/report-builder-reports.js.map +0 -1
- package/publications/super-admin.d.ts +0 -2
- package/publications/super-admin.js +0 -16
- package/publications/super-admin.js.map +0 -1
- package/publications/user-groups.d.ts +0 -1
- package/publications/user-groups.js +0 -16
- package/publications/user-groups.js.map +0 -1
- package/publications/user-guides.d.ts +0 -1
- package/publications/user-guides.js +0 -16
- package/publications/user-guides.js.map +0 -1
- package/resolveio-server-app.d.ts +0 -70
- package/resolveio-server-app.js +0 -801
- package/resolveio-server-app.js.map +0 -1
- package/server-app.d.ts +0 -228
- package/server-app.js +0 -3566
- package/server-app.js.map +0 -1
- package/services/codex-client.d.ts +0 -128
- package/services/codex-client.js +0 -1629
- package/services/codex-client.js.map +0 -1
- package/services/openai-client.d.ts +0 -46
- package/services/openai-client.js +0 -318
- package/services/openai-client.js.map +0 -1
- package/types/error-report.d.ts +0 -25
- package/types/error-report.js +0 -4
- package/types/error-report.js.map +0 -1
- package/types/slow-query-report.d.ts +0 -27
- package/types/slow-query-report.js +0 -6
- package/types/slow-query-report.js.map +0 -1
- package/util/ai-qa-policy.d.ts +0 -124
- package/util/ai-qa-policy.js +0 -736
- package/util/ai-qa-policy.js.map +0 -1
- package/util/ai-run-evidence-adapters.d.ts +0 -109
- package/util/ai-run-evidence-adapters.js +0 -7234
- package/util/ai-run-evidence-adapters.js.map +0 -1
- package/util/ai-run-evidence-dashboard.d.ts +0 -88
- package/util/ai-run-evidence-dashboard.js +0 -343
- package/util/ai-run-evidence-dashboard.js.map +0 -1
- package/util/ai-run-evidence-eval.d.ts +0 -86
- package/util/ai-run-evidence-eval.js +0 -1018
- package/util/ai-run-evidence-eval.js.map +0 -1
- package/util/ai-run-evidence.d.ts +0 -244
- package/util/ai-run-evidence.js +0 -1096
- package/util/ai-run-evidence.js.map +0 -1
- package/util/ai-runner-artifacts.d.ts +0 -82
- package/util/ai-runner-artifacts.js +0 -713
- package/util/ai-runner-artifacts.js.map +0 -1
- package/util/ai-runner-manager-autopilot.d.ts +0 -210
- package/util/ai-runner-manager-autopilot.js +0 -642
- package/util/ai-runner-manager-autopilot.js.map +0 -1
- package/util/ai-runner-manager-policy.d.ts +0 -807
- package/util/ai-runner-manager-policy.js +0 -3501
- package/util/ai-runner-manager-policy.js.map +0 -1
- package/util/ai-runner-qa-auth.d.ts +0 -5
- package/util/ai-runner-qa-auth.js +0 -839
- package/util/ai-runner-qa-auth.js.map +0 -1
- package/util/ai-runner-qa-tools.d.ts +0 -26
- package/util/ai-runner-qa-tools.js +0 -3520
- package/util/ai-runner-qa-tools.js.map +0 -1
- package/util/aicoder-runner-v6.d.ts +0 -426
- package/util/aicoder-runner-v6.js +0 -2464
- package/util/aicoder-runner-v6.js.map +0 -1
- package/util/common.d.ts +0 -31
- package/util/common.js +0 -683
- package/util/common.js.map +0 -1
- package/util/customer-portal-password.d.ts +0 -13
- package/util/customer-portal-password.js +0 -209
- package/util/customer-portal-password.js.map +0 -1
- package/util/error-reporter.d.ts +0 -52
- package/util/error-reporter.js +0 -326
- package/util/error-reporter.js.map +0 -1
- package/util/error-tracking.d.ts +0 -13
- package/util/error-tracking.js +0 -120
- package/util/error-tracking.js.map +0 -1
- package/util/openai-usage-cost.d.ts +0 -6
- package/util/openai-usage-cost.js +0 -103
- package/util/openai-usage-cost.js.map +0 -1
- package/util/report-builder-unwinds.d.ts +0 -15
- package/util/report-builder-unwinds.js +0 -156
- package/util/report-builder-unwinds.js.map +0 -1
- package/util/runner-process-janitor.d.ts +0 -27
- package/util/runner-process-janitor.js +0 -208
- package/util/runner-process-janitor.js.map +0 -1
- package/util/schema-report-builder.d.ts +0 -6
- package/util/schema-report-builder.js +0 -481
- package/util/schema-report-builder.js.map +0 -1
- package/util/slow-query-reporter.d.ts +0 -28
- package/util/slow-query-reporter.js +0 -226
- package/util/slow-query-reporter.js.map +0 -1
- package/util/subscription-dependency-context.d.ts +0 -34
- package/util/subscription-dependency-context.js +0 -1283
- package/util/subscription-dependency-context.js.map +0 -1
- package/util/support-runner-v5.d.ts +0 -1426
- package/util/support-runner-v5.js +0 -7631
- package/util/support-runner-v5.js.map +0 -1
- package/util/tokenizer.d.ts +0 -5
- package/util/tokenizer.js +0 -41
- package/util/tokenizer.js.map +0 -1
- package/workers/codex-runner.worker.d.ts +0 -1
- package/workers/codex-runner.worker.js +0 -192
- package/workers/codex-runner.worker.js.map +0 -1
- /package/{private → src/private}/email-templates/enrollment.html +0 -0
- /package/{private → src/private}/email-templates/forgot-password.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket.html +0 -0
- /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 {};
|