@resolveio/server-lib 22.3.176 → 22.3.177
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/ai/assistant-core-heuristics.d.ts +11 -0
- package/ai/assistant-core-heuristics.js +356 -0
- package/ai/assistant-core-heuristics.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
- package/ai/resolveio-platform-intelligence-memory.js +341 -0
- package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
- package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
- package/ai/resolveio-platform-intelligence-types.js +4 -0
- package/ai/resolveio-platform-intelligence-types.js.map +1 -0
- package/ai/resolveio-platform-intelligence.d.ts +6 -0
- package/ai/resolveio-platform-intelligence.js +463 -0
- package/ai/resolveio-platform-intelligence.js.map +1 -0
- package/client-server-app.d.ts +1 -0
- package/client-server-app.js +68 -0
- package/client-server-app.js.map +1 -0
- package/collections/ai-run.collection.d.ts +3 -0
- package/collections/ai-run.collection.js +170 -0
- package/collections/ai-run.collection.js.map +1 -0
- package/collections/ai-terminal-conversation.collection.d.ts +2 -0
- package/collections/ai-terminal-conversation.collection.js +140 -0
- package/collections/ai-terminal-conversation.collection.js.map +1 -0
- package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
- package/collections/ai-terminal-issue-report.collection.js +148 -0
- package/collections/ai-terminal-issue-report.collection.js.map +1 -0
- package/collections/ai-terminal-message.collection.d.ts +2 -0
- package/collections/ai-terminal-message.collection.js +121 -0
- package/collections/ai-terminal-message.collection.js.map +1 -0
- package/collections/app-setting.collection.d.ts +3 -0
- package/collections/app-setting.collection.js +103 -0
- package/collections/app-setting.collection.js.map +1 -0
- package/collections/app-status.collection.d.ts +3 -0
- package/collections/app-status.collection.js +57 -0
- package/collections/app-status.collection.js.map +1 -0
- package/collections/communication-metric.collection.d.ts +2 -0
- package/collections/communication-metric.collection.js +133 -0
- package/collections/communication-metric.collection.js.map +1 -0
- package/collections/counter.collection.d.ts +3 -0
- package/collections/counter.collection.js +56 -0
- package/collections/counter.collection.js.map +1 -0
- package/collections/cron-job-history.collection.d.ts +3 -0
- package/collections/cron-job-history.collection.js +137 -0
- package/collections/cron-job-history.collection.js.map +1 -0
- package/collections/cron-job.collection.d.ts +3 -0
- package/collections/cron-job.collection.js +92 -0
- package/collections/cron-job.collection.js.map +1 -0
- package/collections/customer-notification.collection.d.ts +3 -0
- package/collections/customer-notification.collection.js +130 -0
- package/collections/customer-notification.collection.js.map +1 -0
- package/collections/customer-portal-password.collection.d.ts +3 -0
- package/collections/customer-portal-password.collection.js +75 -0
- package/collections/customer-portal-password.collection.js.map +1 -0
- package/collections/email-history.collection.d.ts +3 -0
- package/collections/email-history.collection.js +134 -0
- package/collections/email-history.collection.js.map +1 -0
- package/collections/email-verified.collection.d.ts +3 -0
- package/collections/email-verified.collection.js +62 -0
- package/collections/email-verified.collection.js.map +1 -0
- package/collections/file.collection.d.ts +3 -0
- package/collections/file.collection.js +74 -0
- package/collections/file.collection.js.map +1 -0
- package/collections/flag-update.collection.d.ts +3 -0
- package/collections/flag-update.collection.js +57 -0
- package/collections/flag-update.collection.js.map +1 -0
- package/collections/flag.collection.d.ts +3 -0
- package/collections/flag.collection.js +57 -0
- package/collections/flag.collection.js.map +1 -0
- package/collections/log-method-latency.collection.d.ts +3 -0
- package/collections/log-method-latency.collection.js +77 -0
- package/collections/log-method-latency.collection.js.map +1 -0
- package/collections/log-subscription.collection.d.ts +3 -0
- package/collections/log-subscription.collection.js +80 -0
- package/collections/log-subscription.collection.js.map +1 -0
- package/collections/log.collection.d.ts +3 -0
- package/collections/log.collection.js +93 -0
- package/collections/log.collection.js.map +1 -0
- package/collections/logged-in-users.collection.d.ts +3 -0
- package/collections/logged-in-users.collection.js +67 -0
- package/collections/logged-in-users.collection.js.map +1 -0
- package/collections/monitor-cpu.collection.d.ts +3 -0
- package/collections/monitor-cpu.collection.js +65 -0
- package/collections/monitor-cpu.collection.js.map +1 -0
- package/collections/monitor-function.collection.d.ts +3 -0
- package/collections/monitor-function.collection.js +74 -0
- package/collections/monitor-function.collection.js.map +1 -0
- package/collections/monitor-memory.collection.d.ts +3 -0
- package/collections/monitor-memory.collection.js +77 -0
- package/collections/monitor-memory.collection.js.map +1 -0
- package/collections/monitor-mongo.collection.d.ts +3 -0
- package/collections/monitor-mongo.collection.js +71 -0
- package/collections/monitor-mongo.collection.js.map +1 -0
- package/collections/notification.collection.d.ts +3 -0
- package/collections/notification.collection.js +57 -0
- package/collections/notification.collection.js.map +1 -0
- package/collections/openai-usage-ledger.collection.d.ts +2 -0
- package/collections/openai-usage-ledger.collection.js +188 -0
- package/collections/openai-usage-ledger.collection.js.map +1 -0
- package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
- package/collections/report-builder-dashboard-builder.collection.js +109 -0
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
- package/collections/report-builder-library.collection.d.ts +3 -0
- package/collections/report-builder-library.collection.js +87 -0
- package/collections/report-builder-library.collection.js.map +1 -0
- package/collections/report-builder-report.collection.d.ts +4 -0
- package/collections/report-builder-report.collection.js +184 -0
- package/collections/report-builder-report.collection.js.map +1 -0
- package/collections/user-group.collection.d.ts +4 -0
- package/collections/user-group.collection.js +89 -0
- package/collections/user-group.collection.js.map +1 -0
- package/collections/user-guide.collection.d.ts +3 -0
- package/collections/user-guide.collection.js +57 -0
- package/collections/user-guide.collection.js.map +1 -0
- package/collections/user.collection.d.ts +4 -0
- package/collections/user.collection.js +180 -0
- package/collections/user.collection.js.map +1 -0
- package/cron/cron.d.ts +14 -0
- package/cron/cron.js +216 -0
- package/cron/cron.js.map +1 -0
- package/fixtures/cron-jobs.d.ts +1 -0
- package/fixtures/cron-jobs.js +150 -0
- package/fixtures/cron-jobs.js.map +1 -0
- package/fixtures/init.d.ts +1 -0
- package/fixtures/init.js +91 -0
- package/fixtures/init.js.map +1 -0
- package/http/auth.d.ts +2 -0
- package/http/auth.js +951 -0
- package/http/auth.js.map +1 -0
- package/http/health.d.ts +1 -0
- package/http/health.js +11 -0
- package/http/health.js.map +1 -0
- package/http/home.d.ts +1 -0
- package/http/home.js +134 -0
- package/http/home.js.map +1 -0
- package/http/slow-query-publication.d.ts +2 -0
- package/http/slow-query-publication.js +99 -0
- package/http/slow-query-publication.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +19 -0
- package/index.js.map +1 -0
- package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
- package/managers/ai-assistant-codex-manager.manager.js +1113 -0
- package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
- package/managers/ai-run-evidence.manager.d.ts +36 -0
- package/managers/ai-run-evidence.manager.js +377 -0
- package/managers/ai-run-evidence.manager.js.map +1 -0
- package/managers/communication-metric.manager.d.ts +16 -0
- package/managers/communication-metric.manager.js +134 -0
- package/managers/communication-metric.manager.js.map +1 -0
- package/managers/cron.manager.d.ts +20 -0
- package/managers/cron.manager.js +534 -0
- package/managers/cron.manager.js.map +1 -0
- package/managers/customer-notification-content.manager.d.ts +55 -0
- package/managers/customer-notification-content.manager.js +158 -0
- package/managers/customer-notification-content.manager.js.map +1 -0
- package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
- package/managers/diagnostic-manager-bootstrap.js +260 -0
- package/managers/diagnostic-manager-bootstrap.js.map +1 -0
- package/managers/error-auto-fix.manager.d.ts +149 -0
- package/managers/error-auto-fix.manager.js +3064 -0
- package/managers/error-auto-fix.manager.js.map +1 -0
- package/managers/local-log.manager.d.ts +18 -0
- package/managers/local-log.manager.js +88 -0
- package/managers/local-log.manager.js.map +1 -0
- package/managers/method.manager.d.ts +84 -0
- package/managers/method.manager.js +1964 -0
- package/managers/method.manager.js.map +1 -0
- package/managers/mongo.manager.d.ts +224 -0
- package/managers/mongo.manager.js +5000 -0
- package/managers/mongo.manager.js.map +1 -0
- package/managers/monitor.manager.d.ts +70 -0
- package/managers/monitor.manager.js +550 -0
- package/managers/monitor.manager.js.map +1 -0
- package/managers/openai-usage-ledger.manager.d.ts +30 -0
- package/managers/openai-usage-ledger.manager.js +142 -0
- package/managers/openai-usage-ledger.manager.js.map +1 -0
- package/managers/slow-query-verifier.manager.d.ts +144 -0
- package/managers/slow-query-verifier.manager.js +3857 -0
- package/managers/slow-query-verifier.manager.js.map +1 -0
- package/managers/slow-query.manager.d.ts +28 -0
- package/managers/slow-query.manager.js +468 -0
- package/managers/slow-query.manager.js.map +1 -0
- package/managers/subscription.manager.d.ts +169 -0
- package/managers/subscription.manager.js +3434 -0
- package/managers/subscription.manager.js.map +1 -0
- package/managers/websocket.manager.d.ts +73 -0
- package/managers/websocket.manager.js +673 -0
- package/managers/websocket.manager.js.map +1 -0
- package/managers/worker-dispatcher.manager.d.ts +120 -0
- package/managers/worker-dispatcher.manager.js +1266 -0
- package/managers/worker-dispatcher.manager.js.map +1 -0
- package/managers/worker-server.manager.d.ts +35 -0
- package/managers/worker-server.manager.js +582 -0
- package/managers/worker-server.manager.js.map +1 -0
- package/methods/accounts.d.ts +2 -0
- package/methods/accounts.js +624 -0
- package/methods/accounts.js.map +1 -0
- package/methods/ai-terminal.d.ts +338 -0
- package/methods/ai-terminal.js +23454 -0
- package/methods/ai-terminal.js.map +1 -0
- package/methods/app-settings.d.ts +2 -0
- package/methods/app-settings.js +169 -0
- package/methods/app-settings.js.map +1 -0
- package/methods/aws.d.ts +2 -0
- package/methods/aws.js +877 -0
- package/methods/aws.js.map +1 -0
- package/methods/collections.d.ts +2 -0
- package/methods/collections.js +719 -0
- package/methods/collections.js.map +1 -0
- package/methods/counters.d.ts +2 -0
- package/methods/counters.js +113 -0
- package/methods/counters.js.map +1 -0
- package/methods/cron-jobs.d.ts +2 -0
- package/methods/cron-jobs.js +2475 -0
- package/methods/cron-jobs.js.map +1 -0
- package/methods/customer-notifications.d.ts +2 -0
- package/methods/customer-notifications.js +528 -0
- package/methods/customer-notifications.js.map +1 -0
- package/methods/diagnostics.d.ts +2 -0
- package/methods/diagnostics.js +703 -0
- package/methods/diagnostics.js.map +1 -0
- package/methods/flag-updates.d.ts +2 -0
- package/methods/flag-updates.js +8 -0
- package/methods/flag-updates.js.map +1 -0
- package/methods/flags.d.ts +2 -0
- package/methods/flags.js +8 -0
- package/methods/flags.js.map +1 -0
- package/methods/logs.d.ts +2 -0
- package/methods/logs.js +751 -0
- package/methods/logs.js.map +1 -0
- package/methods/mongo-explorer.d.ts +2 -0
- package/methods/mongo-explorer.js +1808 -0
- package/methods/mongo-explorer.js.map +1 -0
- package/methods/monitor.d.ts +2 -0
- package/methods/monitor.js +543 -0
- package/methods/monitor.js.map +1 -0
- package/methods/pdf.d.ts +2 -0
- package/methods/pdf.js +1216 -0
- package/methods/pdf.js.map +1 -0
- package/methods/publications.d.ts +1 -0
- package/methods/publications.js +183 -0
- package/methods/publications.js.map +1 -0
- package/methods/report-builder.d.ts +2 -0
- package/methods/report-builder.js +3094 -0
- package/methods/report-builder.js.map +1 -0
- package/methods/support.d.ts +2 -0
- package/methods/support.js +430 -0
- package/methods/support.js.map +1 -0
- package/models/ai-run.model.d.ts +19 -0
- package/models/ai-run.model.js +4 -0
- package/models/ai-run.model.js.map +1 -0
- package/models/ai-terminal-conversation.model.d.ts +17 -0
- package/models/ai-terminal-conversation.model.js +4 -0
- package/models/ai-terminal-conversation.model.js.map +1 -0
- package/models/ai-terminal-issue-report.model.d.ts +19 -0
- package/models/ai-terminal-issue-report.model.js +4 -0
- package/models/ai-terminal-issue-report.model.js.map +1 -0
- package/models/ai-terminal-message.model.d.ts +22 -0
- package/models/ai-terminal-message.model.js +4 -0
- package/models/ai-terminal-message.model.js.map +1 -0
- package/models/app-setting.model.d.ts +16 -0
- package/models/app-setting.model.js +4 -0
- package/models/app-setting.model.js.map +1 -0
- package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
- package/models/app-status.model.js +4 -0
- package/models/app-status.model.js.map +1 -0
- package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
- package/models/billing-logged-in-users.model.js +4 -0
- package/models/billing-logged-in-users.model.js.map +1 -0
- package/models/collection-document.model.d.ts +21 -0
- package/models/collection-document.model.js +4 -0
- package/models/collection-document.model.js.map +1 -0
- package/models/communication-metric.model.d.ts +20 -0
- package/models/communication-metric.model.js +4 -0
- package/models/communication-metric.model.js.map +1 -0
- package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
- package/models/counter.model.js +4 -0
- package/models/counter.model.js.map +1 -0
- package/models/cron-job-history.model.d.ts +15 -0
- package/models/cron-job-history.model.js +4 -0
- package/models/cron-job-history.model.js.map +1 -0
- package/models/cron-job.model.d.ts +14 -0
- package/models/cron-job.model.js +4 -0
- package/models/cron-job.model.js.map +1 -0
- package/models/customer-notification.model.d.ts +26 -0
- package/models/customer-notification.model.js +4 -0
- package/models/customer-notification.model.js.map +1 -0
- package/models/customer-portal-password.model.d.ts +11 -0
- package/models/customer-portal-password.model.js +4 -0
- package/models/customer-portal-password.model.js.map +1 -0
- package/models/dialog.model.d.ts +23 -0
- package/models/dialog.model.js +4 -0
- package/models/dialog.model.js.map +1 -0
- package/models/email-history.model.d.ts +32 -0
- package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
- package/models/email-history.model.js.map +1 -0
- package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
- package/models/email-verified.model.js +4 -0
- package/models/email-verified.model.js.map +1 -0
- package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
- package/models/file.model.js +4 -0
- package/models/file.model.js.map +1 -0
- package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
- package/models/flag-update.model.js +4 -0
- package/models/flag-update.model.js.map +1 -0
- package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
- package/models/flag.model.js +4 -0
- package/models/flag.model.js.map +1 -0
- package/models/log-method-latency.model.d.ts +10 -0
- package/models/log-method-latency.model.js +4 -0
- package/models/log-method-latency.model.js.map +1 -0
- package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
- package/models/log-subscription.model.js +4 -0
- package/models/log-subscription.model.js.map +1 -0
- package/models/log.model.d.ts +17 -0
- package/models/log.model.js +4 -0
- package/models/log.model.js.map +1 -0
- package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
- package/models/logged-in-users.model.js +4 -0
- package/models/logged-in-users.model.js.map +1 -0
- package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
- package/models/method-response.model.js +4 -0
- package/models/method-response.model.js.map +1 -0
- package/models/method.model.d.ts +26 -0
- package/models/method.model.js +4 -0
- package/models/method.model.js.map +1 -0
- package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
- package/models/monitor-cpu.model.js +4 -0
- package/models/monitor-cpu.model.js.map +1 -0
- package/models/monitor-function.model.d.ts +14 -0
- package/models/monitor-function.model.js +4 -0
- package/models/monitor-function.model.js.map +1 -0
- package/models/monitor-memory.model.d.ts +15 -0
- package/models/monitor-memory.model.js +4 -0
- package/models/monitor-memory.model.js.map +1 -0
- package/models/monitor-mongo.model.d.ts +13 -0
- package/models/monitor-mongo.model.js +4 -0
- package/models/monitor-mongo.model.js.map +1 -0
- package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
- package/models/notification.model.js +4 -0
- package/models/notification.model.js.map +1 -0
- package/models/openai-usage-ledger.model.d.ts +30 -0
- package/models/openai-usage-ledger.model.js +4 -0
- package/models/openai-usage-ledger.model.js.map +1 -0
- package/models/pagination.model.d.ts +11 -0
- package/models/pagination.model.js +28 -0
- package/models/pagination.model.js.map +1 -0
- package/models/permission.model.d.ts +12 -0
- package/models/permission.model.js +4 -0
- package/models/permission.model.js.map +1 -0
- package/models/report-builder-dashboard-builder.model.d.ts +25 -0
- package/models/report-builder-dashboard-builder.model.js +4 -0
- package/models/report-builder-dashboard-builder.model.js.map +1 -0
- package/models/report-builder-library.model.d.ts +17 -0
- package/models/report-builder-library.model.js +4 -0
- package/models/report-builder-library.model.js.map +1 -0
- package/models/report-builder-report.model.d.ts +121 -0
- package/models/report-builder-report.model.js +4 -0
- package/models/report-builder-report.model.js.map +1 -0
- package/models/report-builder.model.d.ts +61 -0
- package/models/report-builder.model.js +4 -0
- package/models/report-builder.model.js.map +1 -0
- package/models/select-data-label.model.d.ts +9 -0
- package/models/select-data-label.model.js +4 -0
- package/models/select-data-label.model.js.map +1 -0
- package/models/server-message.model.d.ts +32 -0
- package/models/server-message.model.js +4 -0
- package/models/server-message.model.js.map +1 -0
- package/models/slow-query-report.model.d.ts +23 -0
- package/models/slow-query-report.model.js +4 -0
- package/models/slow-query-report.model.js.map +1 -0
- package/models/subscription.model.d.ts +31 -0
- package/models/subscription.model.js +4 -0
- package/models/subscription.model.js.map +1 -0
- package/models/support-ticket.model.d.ts +87 -0
- package/models/support-ticket.model.js +4 -0
- package/models/support-ticket.model.js.map +1 -0
- package/models/user-group.model.d.ts +20 -0
- package/models/user-group.model.js +4 -0
- package/models/user-group.model.js.map +1 -0
- package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
- package/models/user-guide.model.js +4 -0
- package/models/user-guide.model.js.map +1 -0
- package/models/user.model.d.ts +84 -0
- package/models/user.model.js +4 -0
- package/models/user.model.js.map +1 -0
- package/package.json +1 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +127 -0
- package/public_api.js.map +1 -0
- package/publications/ai-terminal.d.ts +1 -0
- package/publications/ai-terminal.js +122 -0
- package/publications/ai-terminal.js.map +1 -0
- package/publications/app-settings.d.ts +2 -0
- package/publications/app-settings.js +28 -0
- package/publications/app-settings.js.map +1 -0
- package/publications/app-status.d.ts +2 -0
- package/publications/app-status.js +16 -0
- package/publications/app-status.js.map +1 -0
- package/publications/cron-jobs.d.ts +2 -0
- package/publications/cron-jobs.js +88 -0
- package/publications/cron-jobs.js.map +1 -0
- package/publications/customer-notifications.d.ts +2 -0
- package/publications/customer-notifications.js +161 -0
- package/publications/customer-notifications.js.map +1 -0
- package/publications/files.d.ts +2 -0
- package/publications/files.js +36 -0
- package/publications/files.js.map +1 -0
- package/publications/flags-update.d.ts +2 -0
- package/publications/flags-update.js +22 -0
- package/publications/flags-update.js.map +1 -0
- package/publications/flags.d.ts +2 -0
- package/publications/flags.js +22 -0
- package/publications/flags.js.map +1 -0
- package/publications/logs.d.ts +2 -0
- package/publications/logs.js +164 -0
- package/publications/logs.js.map +1 -0
- package/publications/notifications.d.ts +2 -0
- package/publications/notifications.js +16 -0
- package/publications/notifications.js.map +1 -0
- package/publications/report-builder-dashboard-builders.d.ts +2 -0
- package/publications/report-builder-dashboard-builders.js +42 -0
- package/publications/report-builder-dashboard-builders.js.map +1 -0
- package/publications/report-builder-libraries.d.ts +2 -0
- package/publications/report-builder-libraries.js +90 -0
- package/publications/report-builder-libraries.js.map +1 -0
- package/publications/report-builder-reports.d.ts +2 -0
- package/publications/report-builder-reports.js +50 -0
- package/publications/report-builder-reports.js.map +1 -0
- package/publications/super-admin.d.ts +2 -0
- package/publications/super-admin.js +16 -0
- package/publications/super-admin.js.map +1 -0
- package/publications/user-groups.d.ts +1 -0
- package/publications/user-groups.js +16 -0
- package/publications/user-groups.js.map +1 -0
- package/publications/user-guides.d.ts +1 -0
- package/publications/user-guides.js +16 -0
- package/publications/user-guides.js.map +1 -0
- package/resolveio-server-app.d.ts +70 -0
- package/resolveio-server-app.js +801 -0
- package/resolveio-server-app.js.map +1 -0
- package/server-app.d.ts +228 -0
- package/server-app.js +3566 -0
- package/server-app.js.map +1 -0
- package/services/codex-client.d.ts +128 -0
- package/services/codex-client.js +1629 -0
- package/services/codex-client.js.map +1 -0
- package/services/openai-client.d.ts +46 -0
- package/services/openai-client.js +318 -0
- package/services/openai-client.js.map +1 -0
- package/types/error-report.d.ts +25 -0
- package/types/error-report.js +4 -0
- package/types/error-report.js.map +1 -0
- package/types/slow-query-report.d.ts +27 -0
- package/types/slow-query-report.js +6 -0
- package/types/slow-query-report.js.map +1 -0
- package/util/ai-qa-policy.d.ts +124 -0
- package/util/ai-qa-policy.js +736 -0
- package/util/ai-qa-policy.js.map +1 -0
- package/util/ai-run-evidence-adapters.d.ts +73 -0
- package/util/ai-run-evidence-adapters.js +3087 -0
- package/util/ai-run-evidence-adapters.js.map +1 -0
- package/util/ai-run-evidence-dashboard.d.ts +84 -0
- package/util/ai-run-evidence-dashboard.js +336 -0
- package/util/ai-run-evidence-dashboard.js.map +1 -0
- package/util/ai-run-evidence-eval.d.ts +86 -0
- package/util/ai-run-evidence-eval.js +1015 -0
- package/util/ai-run-evidence-eval.js.map +1 -0
- package/util/ai-run-evidence.d.ts +244 -0
- package/util/ai-run-evidence.js +792 -0
- package/util/ai-run-evidence.js.map +1 -0
- package/util/ai-runner-artifacts.d.ts +82 -0
- package/util/ai-runner-artifacts.js +713 -0
- package/util/ai-runner-artifacts.js.map +1 -0
- package/util/ai-runner-manager-autopilot.d.ts +210 -0
- package/util/ai-runner-manager-autopilot.js +642 -0
- package/util/ai-runner-manager-autopilot.js.map +1 -0
- package/util/ai-runner-manager-policy.d.ts +653 -0
- package/util/ai-runner-manager-policy.js +2880 -0
- package/util/ai-runner-manager-policy.js.map +1 -0
- package/util/ai-runner-qa-auth.d.ts +5 -0
- package/util/ai-runner-qa-auth.js +822 -0
- package/util/ai-runner-qa-auth.js.map +1 -0
- package/util/ai-runner-qa-tools.d.ts +26 -0
- package/util/ai-runner-qa-tools.js +3029 -0
- package/util/ai-runner-qa-tools.js.map +1 -0
- package/util/aicoder-runner-v6.d.ts +367 -0
- package/util/aicoder-runner-v6.js +1925 -0
- package/util/aicoder-runner-v6.js.map +1 -0
- package/util/common.d.ts +31 -0
- package/util/common.js +683 -0
- package/util/common.js.map +1 -0
- package/util/customer-portal-password.d.ts +13 -0
- package/util/customer-portal-password.js +209 -0
- package/util/customer-portal-password.js.map +1 -0
- package/util/error-reporter.d.ts +52 -0
- package/util/error-reporter.js +326 -0
- package/util/error-reporter.js.map +1 -0
- package/util/error-tracking.d.ts +13 -0
- package/util/error-tracking.js +120 -0
- package/util/error-tracking.js.map +1 -0
- package/util/openai-usage-cost.d.ts +6 -0
- package/util/openai-usage-cost.js +103 -0
- package/util/openai-usage-cost.js.map +1 -0
- package/util/report-builder-unwinds.d.ts +15 -0
- package/util/report-builder-unwinds.js +156 -0
- package/util/report-builder-unwinds.js.map +1 -0
- package/util/runner-process-janitor.d.ts +27 -0
- package/util/runner-process-janitor.js +208 -0
- package/util/runner-process-janitor.js.map +1 -0
- package/util/schema-report-builder.d.ts +6 -0
- package/util/schema-report-builder.js +481 -0
- package/util/schema-report-builder.js.map +1 -0
- package/util/slow-query-reporter.d.ts +28 -0
- package/util/slow-query-reporter.js +226 -0
- package/util/slow-query-reporter.js.map +1 -0
- package/util/subscription-dependency-context.d.ts +34 -0
- package/util/subscription-dependency-context.js +1283 -0
- package/util/subscription-dependency-context.js.map +1 -0
- package/util/support-runner-v5.d.ts +810 -0
- package/util/support-runner-v5.js +3497 -0
- package/util/support-runner-v5.js.map +1 -0
- package/util/tokenizer.d.ts +5 -0
- package/util/tokenizer.js +41 -0
- package/util/tokenizer.js.map +1 -0
- package/workers/codex-runner.worker.d.ts +1 -0
- package/workers/codex-runner.worker.js +192 -0
- package/workers/codex-runner.worker.js.map +1 -0
- package/.nodemon.json +0 -5
- package/.vscode/settings.json +0 -21
- package/AGENTS.md +0 -195
- package/README.md +0 -22
- package/build_package.sh +0 -5
- package/compileDTS.pl +0 -64
- package/docs/ai-assistant-nightly-eval.md +0 -65
- package/docs/ai-assistant-preflight-checklist.md +0 -23
- package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
- package/eslint-plugin-custom/index.js +0 -7
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
- package/eslint.config.js +0 -103
- package/gulpfile.js +0 -216
- package/methodAndPublicationListGenerator.py +0 -375
- package/mongodbensurers.js +0 -2
- package/mongostop.js +0 -3
- package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
- package/settings.development.json +0 -25
- package/settings.development.redacted.json +0 -25
- package/src/.env +0 -12
- package/src/ai/assistant-core-heuristics.ts +0 -379
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
- package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
- package/src/ai/resolveio-platform-intelligence.ts +0 -462
- package/src/client-server-app.ts +0 -12
- package/src/collections/ai-run.collection.ts +0 -117
- package/src/collections/ai-terminal-conversation.collection.ts +0 -91
- package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
- package/src/collections/ai-terminal-message.collection.ts +0 -77
- package/src/collections/app-setting.collection.ts +0 -104
- package/src/collections/app-status.collection.ts +0 -58
- package/src/collections/communication-metric.collection.ts +0 -84
- package/src/collections/counter.collection.ts +0 -56
- package/src/collections/cron-job-history.collection.ts +0 -94
- package/src/collections/cron-job.collection.ts +0 -92
- package/src/collections/customer-notification.collection.ts +0 -131
- package/src/collections/customer-portal-password.collection.ts +0 -76
- package/src/collections/email-history.collection.ts +0 -134
- package/src/collections/email-verified.collection.ts +0 -62
- package/src/collections/file.collection.ts +0 -74
- package/src/collections/flag-update.collection.ts +0 -57
- package/src/collections/flag.collection.ts +0 -57
- package/src/collections/log-method-latency.collection.ts +0 -77
- package/src/collections/log-subscription.collection.ts +0 -80
- package/src/collections/log.collection.ts +0 -93
- package/src/collections/logged-in-users.collection.ts +0 -67
- package/src/collections/monitor-cpu.collection.ts +0 -65
- package/src/collections/monitor-function.collection.ts +0 -74
- package/src/collections/monitor-memory.collection.ts +0 -77
- package/src/collections/monitor-mongo.collection.ts +0 -71
- package/src/collections/notification.collection.ts +0 -57
- package/src/collections/openai-usage-ledger.collection.ts +0 -131
- package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
- package/src/collections/report-builder-library.collection.ts +0 -89
- package/src/collections/report-builder-report.collection.ts +0 -184
- package/src/collections/user-group.collection.ts +0 -89
- package/src/collections/user-guide.collection.ts +0 -57
- package/src/collections/user.collection.ts +0 -181
- package/src/cron/cron.ts +0 -117
- package/src/fixtures/cron-jobs.ts +0 -95
- package/src/fixtures/init.ts +0 -35
- package/src/http/auth.ts +0 -818
- package/src/http/health.ts +0 -7
- package/src/http/home.ts +0 -90
- package/src/http/slow-query-publication.ts +0 -49
- package/src/index.ts +0 -1
- package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
- package/src/managers/ai-run-evidence.manager.ts +0 -264
- package/src/managers/communication-metric.manager.ts +0 -82
- package/src/managers/cron.manager.ts +0 -333
- package/src/managers/customer-notification-content.manager.ts +0 -236
- package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
- package/src/managers/error-auto-fix.manager.ts +0 -2767
- package/src/managers/local-log.manager.ts +0 -113
- package/src/managers/method.manager.ts +0 -1857
- package/src/managers/mongo.manager.ts +0 -4575
- package/src/managers/monitor.manager.ts +0 -507
- package/src/managers/openai-usage-ledger.manager.ts +0 -112
- package/src/managers/slow-query-verifier.manager.ts +0 -3590
- package/src/managers/slow-query.manager.ts +0 -519
- package/src/managers/subscription.manager.ts +0 -3128
- package/src/managers/websocket.manager.ts +0 -746
- package/src/managers/worker-dispatcher.manager.ts +0 -1360
- package/src/managers/worker-server.manager.ts +0 -536
- package/src/methods/accounts.ts +0 -532
- package/src/methods/ai-terminal.ts +0 -23825
- package/src/methods/app-settings.ts +0 -114
- package/src/methods/aws.ts +0 -649
- package/src/methods/collections.ts +0 -641
- package/src/methods/counters.ts +0 -69
- package/src/methods/cron-jobs.ts +0 -2614
- package/src/methods/customer-notifications.ts +0 -458
- package/src/methods/diagnostics.ts +0 -616
- package/src/methods/flag-updates.ts +0 -7
- package/src/methods/flags.ts +0 -7
- package/src/methods/logs.ts +0 -657
- package/src/methods/mongo-explorer.ts +0 -1880
- package/src/methods/monitor.ts +0 -540
- package/src/methods/pdf.ts +0 -1236
- package/src/methods/publications.ts +0 -129
- package/src/methods/report-builder.ts +0 -3300
- package/src/methods/support.ts +0 -335
- package/src/models/ai-run.model.ts +0 -27
- package/src/models/ai-terminal-conversation.model.ts +0 -19
- package/src/models/ai-terminal-issue-report.model.ts +0 -21
- package/src/models/ai-terminal-message.model.ts +0 -24
- package/src/models/app-setting.model.ts +0 -17
- package/src/models/collection-document.model.ts +0 -24
- package/src/models/communication-metric.model.ts +0 -23
- package/src/models/cron-job-history.model.ts +0 -16
- package/src/models/cron-job.model.ts +0 -15
- package/src/models/customer-notification.model.ts +0 -28
- package/src/models/customer-portal-password.model.ts +0 -12
- package/src/models/dialog.model.ts +0 -25
- package/src/models/log-method-latency.model.ts +0 -11
- package/src/models/log.model.ts +0 -19
- package/src/models/method.model.ts +0 -25
- package/src/models/monitor-function.model.ts +0 -16
- package/src/models/monitor-memory.model.ts +0 -17
- package/src/models/monitor-mongo.model.ts +0 -15
- package/src/models/openai-usage-ledger.model.ts +0 -56
- package/src/models/pagination.model.ts +0 -35
- package/src/models/permission.model.ts +0 -14
- package/src/models/report-builder-dashboard-builder.model.ts +0 -29
- package/src/models/report-builder-library.model.ts +0 -20
- package/src/models/report-builder-report.model.ts +0 -136
- package/src/models/report-builder.model.ts +0 -68
- package/src/models/select-data-label.model.ts +0 -9
- package/src/models/server-message.model.ts +0 -31
- package/src/models/slow-query-report.model.ts +0 -23
- package/src/models/subscription.model.ts +0 -73
- package/src/models/support-ticket.model.ts +0 -104
- package/src/models/user-group.model.ts +0 -24
- package/src/models/user.model.ts +0 -96
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +0 -73
- package/src/publications/app-settings.ts +0 -25
- package/src/publications/app-status.ts +0 -13
- package/src/publications/cron-jobs.ts +0 -40
- package/src/publications/customer-notifications.ts +0 -101
- package/src/publications/files.ts +0 -33
- package/src/publications/flags-update.ts +0 -19
- package/src/publications/flags.ts +0 -19
- package/src/publications/logs.ts +0 -163
- package/src/publications/notifications.ts +0 -13
- package/src/publications/report-builder-dashboard-builders.ts +0 -39
- package/src/publications/report-builder-libraries.ts +0 -41
- package/src/publications/report-builder-reports.ts +0 -47
- package/src/publications/super-admin.ts +0 -13
- package/src/publications/user-groups.ts +0 -12
- package/src/publications/user-guides.ts +0 -12
- package/src/resolveio-server-app.ts +0 -617
- package/src/server-app.ts +0 -3354
- package/src/services/codex-client.ts +0 -1231
- package/src/services/openai-client.ts +0 -265
- package/src/types/error-report.ts +0 -26
- package/src/types/js-tiktoken.d.ts +0 -11
- package/src/types/slow-query-report.ts +0 -28
- package/src/util/ai-qa-policy.ts +0 -925
- package/src/util/ai-run-evidence-adapters.ts +0 -3292
- package/src/util/ai-run-evidence-dashboard.ts +0 -313
- package/src/util/ai-run-evidence-eval.ts +0 -1054
- package/src/util/ai-run-evidence.ts +0 -1124
- package/src/util/ai-runner-artifacts.ts +0 -586
- package/src/util/ai-runner-manager-autopilot.ts +0 -961
- package/src/util/ai-runner-manager-policy.ts +0 -4193
- package/src/util/ai-runner-qa-auth.ts +0 -821
- package/src/util/ai-runner-qa-tools.ts +0 -3045
- package/src/util/aicoder-runner-v6.ts +0 -2510
- package/src/util/common.ts +0 -649
- package/src/util/customer-portal-password.ts +0 -183
- package/src/util/error-reporter.ts +0 -332
- package/src/util/error-tracking.ts +0 -79
- package/src/util/openai-usage-cost.ts +0 -114
- package/src/util/report-builder-unwinds.ts +0 -180
- package/src/util/runner-process-janitor.ts +0 -219
- package/src/util/schema-report-builder.ts +0 -448
- package/src/util/slow-query-reporter.ts +0 -216
- package/src/util/subscription-dependency-context.ts +0 -1096
- package/src/util/support-runner-v5.ts +0 -4785
- package/src/util/tokenizer.ts +0 -38
- package/src/workers/codex-runner.worker.ts +0 -142
- package/start_server.sh +0 -5
- package/tests/ai-assistant-corpus-build.ts +0 -484
- package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
- package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
- package/tests/ai-assistant-eval-triage.ts +0 -831
- package/tests/ai-assistant-openai-e2e.ts +0 -1061
- package/tests/ai-assistant-openai-git-e2e.ts +0 -155
- package/tests/ai-assistant-preflight-matrix.ts +0 -215
- package/tests/ai-assistant-routing-eval.test.ts +0 -560
- package/tests/ai-assistant-snf-live-eval.ts +0 -975
- package/tests/ai-assistant-utils.test.ts +0 -3057
- package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
- package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1136
- package/tests/ai-run-eval.test.ts +0 -112
- package/tests/ai-run-evidence.test.ts +0 -1403
- package/tests/ai-runner-contract.test.ts +0 -488
- package/tests/aicoder-runner-v6.test.ts +0 -676
- package/tests/error-reporter.test.ts +0 -145
- package/tests/method-publication-generator.test.ts +0 -46
- package/tests/report-builder-linking.test.ts +0 -79
- package/tests/resolveio-platform-intelligence.test.ts +0 -352
- package/tests/server-app-cron-owner.test.ts +0 -127
- package/tests/subscription-connect-race.test.ts +0 -158
- package/tests/subscription-dependency-context.test.ts +0 -324
- package/tests/subscription-manager-collection-tracking.test.ts +0 -86
- package/tests/subscription-manager-invalidation.test.ts +0 -86
- package/tests/support-runner-v5.test.ts +0 -1166
- package/tsconfig.json +0 -34
- /package/{src/private → private}/email-templates/enrollment.html +0 -0
- /package/{src/private → private}/email-templates/forgot-password.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket.html +0 -0
- /package/{src/public_api.ts → public_api.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/methods/ai-terminal.ts"],"names":[],"mappings":"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","file":"ai-terminal.js","sourcesContent":["import { promises as fs, existsSync, readFileSync } from 'fs';\nimport { on, once } from 'events';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { setTimeout as sleepTimeout } from 'timers/promises';\nimport { Worker } from 'worker_threads';\nimport { execFile } from 'child_process';\nimport { promisify } from 'util';\nimport { createHash } from 'crypto';\nimport { ObjectId } from 'mongodb';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { Users } from '../collections/user.collection';\nimport { AiTerminalConversations } from '../collections/ai-terminal-conversation.collection';\nimport { AiTerminalMessages } from '../collections/ai-terminal-message.collection';\nimport { AiTerminalIssueReports } from '../collections/ai-terminal-issue-report.collection';\nimport { AiTerminalConversationModel, AiTerminalConversationStatus, AiTerminalMode } from '../models/ai-terminal-conversation.model';\nimport { AiTerminalMessageModel } from '../models/ai-terminal-message.model';\nimport { deepCopy, objectIdHexString, round } from '../util/common';\nimport { countChatTokens, countTokens } from '../util/tokenizer';\nimport { CodexClient, CodexConfig, CodexRunOptions } from '../services/codex-client';\nimport { OpenAIUsageRecordInput, recordOpenAIUsage } from '../managers/openai-usage-ledger.manager';\nimport { AIRunEvidenceManager } from '../managers/ai-run-evidence.manager';\nimport { AI_ASSISTANT_CORE_HEURISTICS } from '../ai/assistant-core-heuristics';\nimport { buildResolveIOPlatformIntelligenceSystemPromptWithSharedMemory } from '../ai/resolveio-platform-intelligence-memory';\nimport { buildResolveIORunnerBasicsRules } from '../util/ai-qa-policy';\nimport { buildAssistantAIRunFromEvidence } from '../util/ai-run-evidence-adapters';\n\nconst DEFAULT_MAX_FILE_MB = 50;\nconst DEFAULT_MAX_TOTAL_MB = 100;\nconst DEFAULT_MAX_ATTACHMENT_CHARS = 12000;\nconst DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS = 40000;\nconst DEFAULT_CODEX_TIMEOUT_MS = 180000;\nconst DEFAULT_AI_ASSISTANT_RUN_BUDGET_MS = 120000;\nconst DEFAULT_AI_ASSISTANT_MONGO_MAX_TIME_MS = 12000;\nconst AI_ASSISTANT_MONGO_DEFAULT_LIMIT = 20;\nconst AI_ASSISTANT_MONGO_MAX_LIMIT = 200;\nconst AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT = 5000;\nconst AI_ASSISTANT_TOOL_MAX_STEPS = 2;\nconst AI_ASSISTANT_DISPLAY_MAX_COLUMNS = 12;\nconst AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS = 20;\nconst AI_ASSISTANT_DISPLAY_STRING_LIMIT = 160;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS = 4;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS = 60;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_COLLECTIONS = 3;\nconst AI_ASSISTANT_PROGRESS_PLACEHOLDER = 'Planning...';\nconst AI_ASSISTANT_READ_PREFERENCE = 'secondaryPreferred' as const;\nconst AI_ASSISTANT_PROBE_LIMIT = 3;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP = 20;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE = 20;\nconst AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS = 20;\nconst AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT = 4;\nconst AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS = 12;\nconst AI_ASSISTANT_MULTI_TERM_NAME_FALLBACK_MAX_TERMS = 4;\nconst AI_ASSISTANT_CONTEXT_MAX_COLLECTIONS = 3;\nconst AI_ASSISTANT_CONTEXT_MAX_FIELDS_PER_COLLECTION = 24;\nconst AI_ASSISTANT_CONTEXT_MAX_SCHEMA_COLLECTIONS = 5;\nconst AI_ASSISTANT_CONTEXT_MAX_SCHEMA_FIELDS_PER_COLLECTION = 18;\nconst AI_ASSISTANT_CONTEXT_MAX_LOOKUPS_PER_COLLECTION = 8;\nconst AI_ASSISTANT_PLANNER_MAX_ROUTES = 200;\nconst AI_ASSISTANT_PLANNER_DEBUG_MAX_CHARS = 2000;\nconst AI_ASSISTANT_LOCALE = 'en-US';\nconst AI_ASSISTANT_CURRENCY_CODE = 'USD';\nconst AI_ASSISTANT_USD_CURRENCY_TEXT_PATTERN = /\\b(?:USD|US\\$)(?:\\s| | |[\\u00A0\\u202F\\u2007])*\\$?\\s*([-+]?[0-9][0-9,]*(?:\\.[0-9]+)?)/gi;\nconst AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD = 0.15;\nconst AI_ASSISTANT_REVENUE_VERIFY_PAID_GRAND_GAP_WARN_THRESHOLD = 0.10;\nconst AI_ASSISTANT_CODEX_MIN_STAGE_BUDGET_MS = 1500;\nconst AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS = 80;\nconst AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS = [\n\t'name',\n\t'title',\n\t'status',\n\t'type',\n\t'stage',\n\t'state',\n\t'category',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt',\n\t'date_updated',\n\t'date_completed',\n\t'date_invoice',\n\t'date_invoiced',\n\t'id_customer',\n\t'id_client',\n\t'id_user',\n\t'id_invoice'\n];\nconst AI_ASSISTANT_DATE_FALLBACKS: Record<string, string> = {\n\tdate_created: 'createdAt',\n\tcreatedAt: 'date_created',\n\tdate_invoice: 'date_invoiced',\n\tdate_invoiced: 'date_invoice',\n\tdate_last: 'date_next',\n\tdate_next: 'date_last',\n\tdate_treated: 'date_scheduled',\n\tdate_scheduled: 'date_treated'\n};\nconst AI_ASSISTANT_JOB_LIKE_FIELD_TOKENS = new Set([\n\t'job',\n\t'bid',\n\t'jca',\n\t'well',\n\t'pad'\n]);\nconst AI_ASSISTANT_JOB_TEXT_FALLBACK_FIELDS = [\n\t'job',\n\t'job_number_string',\n\t'job_number',\n\t'bid',\n\t'jca',\n\t'pad',\n\t'well',\n\t'wells.well'\n];\nconst AI_ASSISTANT_DATE_EXPANSION_FIELDS = [\n\t'date',\n\t'date_start',\n\t'date_end',\n\t'date_original',\n\t'date_next',\n\t'date_last',\n\t'date_scheduled',\n\t'date_treated',\n\t'date_completed',\n\t'date_closed',\n\t'date_due',\n\t'date_paid',\n\t'date_invoice',\n\t'date_invoiced',\n\t'date_updated',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt'\n];\nconst AI_ASSISTANT_DATE_EXPANSION_SCHEMA_MAX_FIELDS = 12;\nconst execFileAsync = promisify(execFile);\nconst AI_ASSISTANT_CHANGE_HISTORY_DEFAULT_LIMIT = 10;\nconst AI_ASSISTANT_CHANGE_HISTORY_MAX_LIMIT = 40;\nconst AI_ASSISTANT_CHANGE_HISTORY_MIN_DEPTH = 80;\nconst AI_ASSISTANT_CHANGE_HISTORY_MAX_DEPTH = 240;\nconst AI_ASSISTANT_CHANGE_HISTORY_DURATION_MAX_DEPTH = 1200;\nconst AI_ASSISTANT_GIT_COMMAND_TIMEOUT_MS = 15000;\nconst AI_ASSISTANT_GIT_DISCOVERY_MAX_DEPTH = 4;\nconst AI_ASSISTANT_GIT_DISCOVERY_MAX_ROOTS = 20;\nconst AI_ASSISTANT_GIT_MIRROR_CACHE_TTL_MS = 5 * 60 * 1000;\nconst AI_ASSISTANT_GIT_TOOL_RESULT_PREFIX = 'GIT_TOOL_RESULT:';\n\n\nconst AI_ASSISTANT_BLOCKED_COLLECTIONS = new Set([\n\t'user-groups',\n\t'logged-in-users',\n\t'ai-terminal-messages',\n\t'ai-terminal-conversations',\n\t'ai-terminal-issue-reports',\n\t'openai-usage-ledger',\n\t'logs',\n\t'notifications',\n\t'email-history'\n]);\n\nconst AI_ASSISTANT_SENSITIVE_FIELDS = [\n\t'password',\n\t'salt',\n\t'hash',\n\t'secret',\n\t'token',\n\t'api_key',\n\t'email',\n\t'phonenumber',\n\t'phone',\n\t'ssn',\n\t'address',\n\t'services',\n\t'roles'\n];\n\nconst AI_ASSISTANT_CLIENT_SCOPE_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_FIELD_INDEX_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_COLLECTION_CACHE = new Map<string, { names: string[]; updatedAt: number }>();\nconst AI_ASSISTANT_COLLECTION_CACHE_TTL_MS = 5 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_METADATA_CACHE = new Map<string, {\n\tfields: string[];\n\tlookups: Array<{ localKey: string; lookupCollection: string; lookupKey: string }>;\n\tupdatedAt: number;\n}>();\nconst AI_ASSISTANT_COLLECTION_METADATA_CACHE_TTL_MS = 10 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_PROFILE_CACHE = new Map<string, {\n\tprofile: {\n\t\tnameTokens: string[];\n\t\tfieldTokens: string[];\n\t\tlookupFamilyTokens: string[];\n\t\tidBaseTokens: string[];\n\t};\n\tupdatedAt: number;\n}>();\nconst AI_ASSISTANT_COLLECTION_PROFILE_CACHE_TTL_MS = 10 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_PROFILE_FIELD_TOKEN_LIMIT = 240;\nconst AI_ASSISTANT_SURFACE_INDEX_CACHE_TTL_MS = 10 * 60 * 1000;\nconst AI_ASSISTANT_SURFACE_INDEX_MATCH_LIMIT = 8;\nconst AI_ASSISTANT_SURFACE_INDEX_COLLECTION_HINT_LIMIT = 6;\nconst AI_ASSISTANT_RELATIONSHIP_GRAPH_CACHE = new Map<string, {\n\tgraph: Map<string, Map<string, number>>;\n\tupdatedAt: number;\n}>();\nconst AI_ASSISTANT_RELATIONSHIP_GRAPH_CACHE_TTL_MS = 10 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_STOPWORDS = new Set([\n\t'the',\n\t'a',\n\t'an',\n\t'of',\n\t'for',\n\t'by',\n\t'with',\n\t'and',\n\t'or',\n\t'to',\n\t'from',\n\t'in',\n\t'on',\n\t'at',\n\t'last',\n\t'recent',\n\t'today',\n\t'week',\n\t'month',\n\t'year',\n\t'this',\n\t'that',\n\t'these',\n\t'those',\n\t'show',\n\t'list',\n\t'get',\n\t'give',\n\t'how',\n\t'many',\n\t'count',\n\t'total',\n\t'breakdown',\n\t'group',\n\t'grouped',\n\t'per',\n\t'open',\n\t'closed',\n\t'completed',\n\t'missing',\n\t'overdue'\n]);\n\nconst AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS = new Set([\n\t'blend',\n\t'blends',\n\t'chemical',\n\t'chemicals',\n\t'invoice',\n\t'invoices',\n\t'revenue',\n\t'revenues',\n\t'sales',\n\t'sale',\n\t'billing',\n\t'billings',\n\t'payment',\n\t'payments',\n\t'paid',\n\t'income',\n\t'finance',\n\t'financial',\n\t'work',\n\t'order',\n\t'orders',\n\t'delivery',\n\t'deliveries',\n\t'asset',\n\t'assets',\n\t'treatment',\n\t'treatments',\n\t'treatmentplan',\n\t'treatmentplans',\n\t'dispatch',\n\t'driver',\n\t'drivers',\n\t'treater',\n\t'specialty',\n\t'specialtyjob',\n\t'specialtyjobs',\n\t'bol',\n\t'bols',\n\t'lading',\n\t'pso',\n\t'psos',\n\t'po',\n\t'pos',\n\t'ats',\n\t'automated',\n\t'automation',\n\t'continuous',\n\t'isotank',\n\t'isotanks',\n\t'trailer',\n\t'trailers',\n\t'chemicaltrailer',\n\t'chemicaltrailers',\n\t'vac',\n\t'vactruck',\n\t'vactrucks',\n\t'purchase',\n\t'purchasing',\n\t'purchaseorder',\n\t'purchaseorders',\n\t'batchjob',\n\t'batchjobs',\n\t'production',\n\t'salesorder',\n\t'salesorders',\n\t'truck',\n\t'trucktreat',\n\t'trucktreating',\n\t'product',\n\t'products',\n\t'item',\n\t'items',\n\t'inventory',\n\t'treating',\n\t'batchtreat',\n\t'batchtreating',\n\t'route',\n\t'routes',\n\t'well',\n\t'wells',\n\t'sample',\n\t'samples',\n\t'customer',\n\t'customers',\n\t'support'\n]);\n\nconst AI_ASSISTANT_COLLECTION_GENERIC_TOKENS = new Set([\n\t'ticket',\n\t'tickets',\n\t'report',\n\t'reports',\n\t'summary',\n\t'summarize',\n\t'recent',\n\t'last',\n\t'new',\n\t'created',\n\t'date',\n\t'list',\n\t'show'\n]);\n\nconst AI_ASSISTANT_INVOICE_PERMISSION_PATTERN = /invoice/i;\n\nconst AI_ASSISTANT_FIELD_TOKEN_SYNONYMS: Record<string, string[]> = {\n\tvolume: ['quantity', 'qty', 'amount', 'gallons', 'gallon', 'liters', 'liter', 'litre'],\n\tquantity: ['volume', 'qty', 'amount', 'gallons', 'gallon'],\n\tproduct: ['item', 'chemical', 'material', 'blend', 'name', 'title', 'label'],\n\tcustomer: ['client', 'account', 'company'],\n\twell: ['location', 'site', 'pad', 'api'],\n\tbatch: ['lot'],\n\tlot: ['batch'],\n\tdate: ['created', 'createdat', 'created_at', 'date_created', 'updated', 'updatedat', 'updated_at', 'date_updated'],\n\ttotal: ['sum', 'amount', 'total_amount', 'total_quantity'],\n\trevenue: ['sales', 'billing', 'paid', 'payment', 'total', 'amount', 'grand', 'subtotal', 'sub_total', 'paid_total', 'grand_total'],\n\tsales: ['revenue', 'billing', 'paid', 'payment', 'total', 'amount', 'grand', 'subtotal', 'sub_total'],\n\tbilling: ['revenue', 'sales', 'paid', 'payment', 'total', 'amount', 'grand', 'subtotal', 'sub_total'],\n\tpayment: ['paid', 'revenue', 'sales', 'billing', 'total', 'amount']\n};\n\nconst AI_ASSISTANT_ID_LOOKUP_HINTS: Record<string, string[]> = {\n\tuser: ['users', 'user-versions']\n};\n\nconst AI_ASSISTANT_TERM_SYNONYMS: Array<{ label: string; pattern: RegExp; expansions: string[] }> = [];\n\nconst AI_ASSISTANT_REPORT_BUILDER_EXPERT_PLAYBOOK = [\n\t'Report Builder Bridge Expert Playbook (execute in order for every data request):',\n\t'1) Determine if data is required.',\n\t'- If user asks for counts, lists, totals, trends, rankings, or \"recent/last\", run a data directive before answering.',\n\t'',\n\t'Report style mapping (always apply):',\n\t'- Dated report: any breakdown over time (per day/week/month/quarter/year, trends, time-series comparisons).',\n\t'- Grouped report: any nested headers, grouped buckets, grouped totals, or multi-level grouping dimensions.',\n\t'- List report: simple flat records without grouped buckets or time-series grouping.',\n\t'',\n\t'2) Resolve the target dataset safely.',\n\t'- Map user wording to internal collection names using routes, app heuristics, field hints, schema hints, token matching, and small verification probes.',\n\t'- Treat heuristics, aliases, and token matches as hypotheses only. Verify likely collections/fields before relying on them.',\n\t'- Prefer report-* collections when permissionView is under /report-builder.',\n\t'- If a report-* collection is unavailable, keep using REPORT_BUILDER_* with the best-matched family collection; the bridge can fall back to direct collection reads safely.',\n\t'- Never use *.versions unless user explicitly requests bug-history/version investigation.',\n\t'- Never invent collection names or fields.',\n\t'',\n\t'3) Enforce permissions and scope in the directive.',\n\t'- Always include permissionView.',\n\t'- Prefer a verified module-specific permissionView route when one is available from code context, routes, or app heuristics. Do not invent routes. Avoid /report/* and only use /report-builder when the user is explicitly asking about report building.',\n\t'- Assume non-super-admin unless explicitly told otherwise.',\n\t'- Respect module-specific permissions implied by the verified route/collection pairing.',\n\t'- Customer portal users must stay in their own customer scope.',\n\t'',\n\t'4) Choose the right bridge tool.',\n\t'- Use REPORT_BUILDER_READ for record lists, snapshots, detail lookups, and simple totals/counts.',\n\t'- Use REPORT_BUILDER_AGG for grouped summaries, trends over time, rankings, and breakdowns.',\n\t'',\n\t'5) Build a minimal, high-signal query.',\n\t'- Keep projection tight and limit rows (default 20 unless user asks for more).',\n\t'- Add sort for deterministic output.',\n\t'- Always sort by popular keys when available: name, company, item (then title/label/customer as fallbacks), ascending unless the user asks for a different order.',\n\t'- If no popular key exists, use a stable fallback sort (createdAt/date_created then _id).',\n\t'- Build filters with explicit boolean logic: use $and for required constraints and $or for alternate text/name matches.',\n\t'- Use custom/calculated fields when the user asks for derived metrics (ratios, rates, margins, computed totals).',\n\t'- Use collection joins/lookups when selected fields live across related collections.',\n\t'- If multiple arrays are selected, link them by shared identifiers (_id or id_<x>) so rows are aligned and not duplicated by cartesian expansion.',\n\t'- For relative dates, include an upper bound <= $$NOW unless user explicitly asks for future ranges.',\n\t'- For time-based trends over \"last/past N\" periods, use full completed calendar-period bounds in UTC aligned to the requested grain (day/week/month/quarter/year) unless the user explicitly asks for period-to-date.',\n\t'- When the target collection or metric is uncertain, form the best hypothesis, run the smallest safe verification query you can, and correct course before answering.',\n\t'',\n\t'6) Reliability fallback sequence when result is empty.',\n\t'- Re-check collection and date fields (date_created/createdAt/date_completed/date_paid variants).',\n\t'- Run tiny probe (limit 1-3) to validate shape before concluding \"no data\".',\n\t'- For name filters, verify date-only first; then apply tokenized regex and id/name lookup fallback.',\n\t'- If the user is super admin OR has permission for the requested module/view, continue best-effort retries across related collections, aliases, and field/date fallbacks before failing.',\n\t'- Treat \"collection not configured\" as a retry signal, not a terminal result. Keep searching relatable collections until retry candidates are exhausted.',\n\t'- Only stop retrying when candidate collections, scoped probes, and schema/date/name fallback paths are exhausted.',\n\t'',\n\t'7) Output behavior after bridge response.',\n\t'- Summarize the answer first in plain language.',\n\t'- Then provide a markdown table with clean columns.',\n\t'- Do not dump raw JSON.',\n\t'- Do not claim certainty when data could not be fetched.',\n\t'',\n\t'8) Directive formatting requirement.',\n\t'- End with exactly one REPORT_BUILDER_READ or REPORT_BUILDER_AGG line when data fetch is needed.',\n\t'- Do not include extra directive lines or mixed directive types in one response.'\n].join('\\n');\n\nconst AI_ASSISTANT_PLATFORM_EXTRA_RULES = [\n\t'Use the shared ResolveIO intelligence loop everywhere: inspect relevant workspace evidence, form a hypothesis, verify with code/data/logs/tests, then answer or implement.',\n\t'ResolveIO platform knowledge and repository evidence override generic model defaults.',\n\t'Never share proprietary code or file contents verbatim unless product policy explicitly allows it.',\n\t'You may read files, inspect the workspace, run non-destructive commands, and make targeted code changes when the user is asking for debugging, implementation, or fixes.',\n\t'Use the provided read-only data bridge for database validation (REPORT_BUILDER_READ/REPORT_BUILDER_AGG). Do not improvise unsafe credential or secret access.',\n\t'Do not run destructive commands, touch secrets/credentials, or make speculative wide-scope changes.',\n\t'Do not access secrets, credentials, or user data.',\n\t'If asked about the underlying AI/model/provider/runtime (including local-vs-hosted/version details), refuse. This information is not available to users, including admins and super admins.',\n\t'If the user has a customer portal scope (other.id_customer), only discuss that customer\\'s data and what is visible in their customer portal. Never reference other customers or internal/admin-only data. If asked for anything outside the portal, say it isn\\'t available.',\n\t'Do not assist with hacking, bypassing security, or abuse.'\n];\n\nconst AI_ASSISTANT_SHARED_MEMORY_FAMILIES = [\n\t'collection-inference',\n\t'report-builder',\n\t'identifier-contract',\n\t'execution-quality',\n\t'shared-library-ownership',\n\t'generated-method-publication'\n];\n\nfunction buildAssistantPlatformIntelligencePrompt(args?: {\n\tmessage?: string;\n\tattachmentText?: string;\n\thistoryText?: string;\n\tcontextText?: string;\n}): string {\n\tconst contextText = [\n\t\targs?.message || '',\n\t\targs?.attachmentText || '',\n\t\targs?.historyText || '',\n\t\targs?.contextText || ''\n\t].filter((value) => String(value || '').trim());\n\treturn buildResolveIOPlatformIntelligenceSystemPromptWithSharedMemory({\n\t\tmode: 'assistant',\n\t\toutputStyle: 'markdown',\n\t\textraRules: AI_ASSISTANT_PLATFORM_EXTRA_RULES\n\t}, {\n\t\tmemoryFamilies: AI_ASSISTANT_SHARED_MEMORY_FAMILIES,\n\t\tcontextText,\n\t\tlimit: 10\n\t});\n}\n\nfunction buildAssistantSystemPromptText(platformPrompt: string): string {\n\treturn [\n\t\tplatformPrompt,\n\t'Accuracy & tools:',\n\t'- Step 1 (always): determine the target collections/models/modules/workflows using context, routes, and collection hints. Assume the user is non-technical and will not provide internal names.',\n\t'- Never use *.versions collections for normal requests. Only use a .versions collection when explicitly investigating a bug by checking the last ~5 updates.',\n\t'- Planning stage: regex/keyword scan the codebase for collectionName/model definitions, methods, publications, and Angular routes/modules to map user wording to internal names.',\n\t'- For engineering/debugging requests, inspect the relevant files first, form a concrete hypothesis, verify it with code/data, and then fix the issue when asked.',\n\t'- If permissionView starts with /report-builder, prefer the report-* collection when both report and base collections exist.',\n\t'- If a report-* collection is unavailable, keep using REPORT_BUILDER_READ/REPORT_BUILDER_AGG with the best-matched collection family; the bridge can safely fall back to direct collection access.',\n\t'- Map user wording to internal collections/fields yourself. Do not ask for property names unless required to run a query.',\n\t'- Use app heuristics and context hints as weak signals only. Verify collection and field guesses before relying on them.',\n\t'- Distinguish the root business object from related measured details. Example: if the user asks for jobs and chemicals sent, jobs/work orders are the root and chemicals are joined detail, not necessarily the root collection.',\n\t'- Do not guess or invent collections/fields. If unsure, verify in the codebase or run a small REPORT_BUILDER_READ probe (limit 1-5) to learn the shape.',\n\t'- Prefer running a small REPORT_BUILDER_READ probe over asking multiple questions.',\n\t'- Form a concrete hypothesis about collection/field/date mapping, then verify it with codebase context or a tiny probe before answering.',\n\t'- For any data request (counts, lists, breakdowns, recent/last items), you MUST run a REPORT_BUILDER_READ or REPORT_BUILDER_AGG before answering.',\n\t'- If the user is super admin or has permission for the requested data scope, keep attempting related collection/field fallbacks and probe reads until retry paths are exhausted; do not stop on first collection mismatch.',\n\t'- Ask at most one clarifying question only when required to run a query or resolve missing details.',\n\t'- If a field starts with id_ and refers to another collection, treat it as a foreign key and look up the related record when needed.',\n\t'- When resolving id_* fields, prefer lookup definitions from collection schemas/report-builder lookup tables to choose the target collection and name fields.',\n\t'- When the user provides a customer, well, or chemical name, use case-insensitive regex matching to find it. Assume the name exists and try to match it before asking questions.',\n\t'- Use the codebase context to choose correct collections/fields/workflows and use REPORT_BUILDER_READ/REPORT_BUILDER_AGG to answer with real data when needed.',\n\t'- Process (fast path): Queue -> Planning -> Grabbing Data -> Drafting response. Use regex/keyword matching to identify collections/models, draft a minimal query, run the tool, then format a table. This should be fast; avoid extra narration.',\n\t'- Assume a relevant collection exists; if verification reads return zero data, report no data found instead of interrogating the user.',\n\t'- Never claim \"no data exists\" unless you resolved a collection and executed a legitimate query (with fallback date fields when needed) that returned zero rows.',\n\t'- If a query returns zero rows, run a tiny probe read (limit 1-3) to validate fields and adjust filters/projection before concluding.',\n\t'- For name-based filters, run a quick existence check with only the date filter first; if records exist, adjust name matching (tokenized regex or ID lookup) instead of concluding no data.',\n\t'- For direct questions, answer first. Ask a single follow-up only if required to proceed.',\n\t'Data Presentation:',\n\t'- Output plain Markdown (NO triple backticks).',\n\t'- When you reference database results, summarize first, then include a Markdown table.',\n\t'- When presenting record lists or aggregates, produce a Markdown table (pipes).',\n\t'- Format currency as $1,234.56 (no USD prefix) with two decimals.',\n\t'- Never show raw JSON dumps.',\n\t'- Do not invent placeholders like \"Not available\" or \"N/A\". If a value is missing in tool results, leave the cell blank or omit the column and note it briefly.',\n\t'- Do not include `_id` & `__v` & `id_<other collection _id property>` in tables by default.',\n\t'- If `_id` & `__v` & `id_<other collection _id property>` is needed, show it as `id` and shorten (e.g., first 6-8 chars) unless asked otherwise.',\n\t'- Rename `createdAt` to `Created At` and `updatedAt` to `Updated At` in tables.',\n\t'Response style:',\n\t'- Respond in English only. Do not include non-English text or characters unless required for JSON, links, or tool directives.',\n\t'- Keep responses concise: answer first, then 3-8 bullets, then a table when data is involved.',\n\t'- For end-user questions, prefer high-level explanations and routes over implementation details. For engineering/debugging requests, reference the relevant files, root cause, fix, and validation at a high level without dumping code.',\n\t'- When asked where to do something, give the exact screen name and the in-app route as a standalone path starting with \"/\" so it can be clicked.',\n\t'- When asked \"why is this happening,\" respond with: cause, trigger, data source(s), and expected vs actual outcome.',\n\t'- For troubleshooting, ask clarifying questions only when needed to proceed; otherwise answer directly, then give a short decision tree (If X, do Y; If not, do Z).',\n\t'- For bug/engineering requests, include what you inspected, what hypothesis was verified, what changed (if anything), and how it was validated.',\n\t'- Provide checklists for common tasks, highlighting required fields and common pitfalls.',\n\t'- If asked \"where is this set,\" give the screen/workflow name and navigation steps to reach it.',\n\t'- If asked \"what changed\" or \"how long has this feature been around,\" provide the most specific app-level timeline/details available from project history.',\n\t'- For server-lib/client-lib/platform updates, keep implementation details high-level, but dates/release windows are allowed.',\n\t'- If exact history is unavailable in this runtime, say repository history is not accessible here and provide the best-known approximate timeframe.',\n\t'- For git/change-history requests when repository history is unavailable in runtime, do not run shell commands. End with a GIT_TOOL_REQUEST directive so the user can run git commands manually and paste results back.',\n\t`- If the user sends \"${AI_ASSISTANT_GIT_TOOL_RESULT_PREFIX}\" with command output, treat that output as the source of truth for git-history answers.`,\n\t'- After answering, optionally suggest 0-1 related next steps only when helpful. Do not ask for \"next steps\" every time.',\n\t'- If access is blocked, name the permission/role needed and how to request it.',\n\t'- Avoid vague labels like \"Operations app\"; use the specific screen/workflow name.',\n\t'- Do not mention other client projects or ask which client; stay within the current project context.',\n\t'- Do not add labels like \"Customer-facing summary\" or \"Work ticket summary\" and do not include estimated hours.',\n\t'- Use structured responses by default: short heading, then bullet points. For \"how do I\" questions, provide a step-by-step list (numbered) with explicit page/screen names and actions.',\n\t'- When giving steps, include navigation guidance like \"Go to <screen>\" and \"Click/Select/Enter <field>\" so the user can follow it exactly.',\n\t'- If context scope is provided (ex: current page), prioritize that screen in your answer.',\n\t'- For manual git handoff, end your response with a single line exactly in this format:',\n\t`- GIT_TOOL_REQUEST: {\"purpose\":\"change_history\",\"commands\":[\"git ...\",\"git ...\"],\"reply_prefix\":\"${AI_ASSISTANT_GIT_TOOL_RESULT_PREFIX}\"}`,\n\t'- Do not end responses with tentative phrasing like \"I could\" or \"I’m going to.\" Complete the request or state what is required to proceed.',\n\t'Report builder bridge directives:',\n\t'- If you need database data to answer, end your response with a single line exactly in this format:',\n\t'- REPORT_BUILDER_READ: {\"collection\":\"<name>\",\"query\":{...},\"options\":{\"projection\":{...},\"sort\":{...},\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- If you need grouped/aggregated data (totals by user, rankings, trends), end your response with a single line exactly in this format:',\n\t'- REPORT_BUILDER_AGG: {\"collection\":\"<name>\",\"pipeline\":[...],\"options\":{\"allowDiskUse\":true,\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- Do not use /report/* routes as permissionView for data directives; use a module route that matches the collection.',\n\t'- Use heuristics only to narrow the search space. Verify the final collection, fields, dates, and permission route before committing to a directive.',\n\t'- For time-based \"last/past N\" breakdowns, use full completed calendar-period windows in UTC aligned to the requested grain (day/week/month/quarter/year) by default, and present concrete start/end dates.',\n\t'- For relative date ranges (last/past/recent), include an upper bound <= $$NOW unless the user specifies a future end date.',\n\t'- Keep queries minimal, read-only, and avoid user/credential data unless the user is a super admin.',\n\t'- Assume you are not a super admin unless explicitly told otherwise.',\n\t'- Only request data when the user has permission for that module.',\n\t'- If the user lacks permission, answer without data and explain how to view it in the app or request access.',\n\t'- For simple counts or time-range totals, use REPORT_BUILDER_READ (includeTotal). For breakdowns, rankings, or sums grouped by a field, use REPORT_BUILDER_AGG.',\n\t'- For performance, keep pipelines minimal: avoid $push arrays or large fields unless the user explicitly asks for them.',\n\t'- For completion metrics (ex: \"completed per day\"), filter by completed status when applicable and use completion date fields; if completion dates are missing, fall back to createdAt/date_created and note the fallback.',\n\t'- Before issuing REPORT_BUILDER_READ or REPORT_BUILDER_AGG, verify the collection name and key fields by checking collection/model definitions in the current app (look for \"collectionName:\" and date fields like date_created/date_completed/createdAt). Do not invent collection names.',\n\t'- When a request names multiple business concepts, root the query in the concept being counted/listed/summarized, then use $lookup/$unwind for related detail concepts.',\n\t'- For creation-date questions when both date_created and createdAt exist, match both with $or so results are not missed.',\n\t'- When grouping by fields that can be arrays (drivers, deliveries, routes, chemicals), $unwind first and group by both id and name when available.',\n\t'- Use REPORT_BUILDER_READ/REPORT_BUILDER_AGG only to produce summaries/snapshots/health checks (not raw dumps) when permitted.',\n\t'- If the user explicitly asks for IDs, set options.includeIds: true.',\n\t'- If a data question returns zero results, verify the collection/date field with a tiny read (limit 1-5) or a date field fallback before concluding there is no data.',\n\t'- Never return \"dataset not configured\" as the final answer when data access is allowed; continue retries and only report failure after accessible retry paths are exhausted.',\n\t'- Keep responses concise and use the configured reasoning effort level (default low).',\n\t'- Never show internal placeholders like $$NOW in user-facing text; always use concrete dates.',\n\t'',\n\tAI_ASSISTANT_REPORT_BUILDER_EXPERT_PLAYBOOK\n\t].join('\\n');\n}\n\nconst AI_ASSISTANT_SYSTEM_PROMPT = buildAssistantSystemPromptText(\n\tbuildAssistantPlatformIntelligencePrompt()\n);\n\nconst AI_ASSISTANT_PLANNER_SYSTEM_PROMPT = [\n\t'You are ResolveIO Assistant Planner. Your job is to produce a permissions-aware execution plan for the user\\'s request.',\n\t'',\n\t'HARD RULES (must follow):',\n\t'1) PERMISSIONS FIRST: Determine access tier before planning anything.',\n\t' - If user.roles.super_admin === true: tier = \"super_admin\" (full access).',\n\t' - Else if user.other.id_customer exists (non-empty): tier = \"customer_portal\" (restrict to that customer\\'s data + their views).',\n\t' - Else: tier = \"client_user\" (restrict to their views; client-scoped data).',\n\t'',\n\t'2) NEVER suggest pages/routes the user cannot access.',\n\t' - Only recommend routes that match their allowed views.',\n\t' - If route inventory is provided (KnownRoutes), choose from it. Do not invent new routes.',\n\t' - If no allowed route exists, propose the closest allowed route OR tell them they need access.',\n\t'',\n\t'3) DATA ACCESS MUST MATCH PERMISSIONS:',\n\t' - super_admin: no scope restriction required.',\n\t' - customer_portal: apply customer scope (id_customer or other.id_customer) to all data plans.',\n\t' - client_user: apply client scope (id_client) to all data plans.',\n\t' - Never propose querying blocked/sensitive collections if the user lacks permission.',\n\t' - If permission allows a data request, plan best-effort retrieval with preferred + fallback collections and schema/date/name validation steps before concluding failure.',\n\t'',\n\t'4) PERMISSION MATCHING:',\n\t' - Prefer exact or strongly overlapping route/view matches. Do not invent module-specific permission shortcuts.',\n\t' - Treat heuristics and token matches as hints, then choose the safest verified permission scope.',\n\t' - If permission checks are ambiguous, choose the safest restriction and explain.',\n\t'',\n\t'5) CLASSIFY THE REQUEST:',\n\t' - type = \"navigation\" if user asks how/where to do something in the app.',\n\t' - type = \"data\" if user asks for totals, lists, breakdowns, counts, reports, \"last N\", \"by month\", etc.',\n\t' - type = \"feature_info\" if user asks how the system works (features/process) without requesting data.',\n\t' - type = \"bug_issue\" if user reports wrong behavior/errors or asks for root-cause/debugging.',\n\t' - type = \"mixed\" if both navigation + data are clearly requested.',\n\t'',\n\t'6) OUTPUT FORMAT:',\n\t' - Return ONLY a single JSON object (no markdown, no extra text).',\n\t' - The JSON must match the schema provided in the user prompt.',\n\t' - Be explicit and actionable. Prefer more guidance over less.',\n\t' - If data is requested: output a dataPlan but DO NOT write a raw Mongo pipeline. Your output is a QueryPlan that a deterministic builder will convert.',\n\t'',\n\t'7) USER-TONE PLANNING:',\n\t' - If user name is available, personalize greeting.',\n\t' - If group names are available, reference them in the plan (e.g., \"Drivers group\").',\n\t' - Always propose next steps from where they are (currentRoute if provided).',\n\t' - End plan with 1-2 engaging follow-up questions the assistant can ask the user.',\n\t'',\n\t'8) DO NOT run shell commands or read repo files in this planning step. Use only the provided context.'\n].join('\\n');\n\nconst AI_ASSISTANT_PLANNER_USER_PROMPT_TEMPLATE = [\n\t'You MUST return JSON only, matching this schema:',\n\t'',\n\t'{',\n\t' \"access\": {',\n\t' \"tier\": \"super_admin\" | \"customer_portal\" | \"client_user\",',\n\t' \"isSuperAdmin\": boolean,',\n\t' \"customerId\": string | null,',\n\t' \"clientId\": string | null,',\n\t' \"userDisplayName\": string | null,',\n\t' \"groupNames\": string[],',\n\t' \"allowedViews\": string[],',\n\t' \"permissionRules\": {',\n\t' \"entityPermissionMatch\": \"views_contains_token_case_insensitive\"',\n\t' }',\n\t' },',\n\t' \"intent\": {',\n\t' \"type\": \"navigation\" | \"data\" | \"feature_info\" | \"bug_issue\" | \"mixed\",',\n\t' \"summary\": string,',\n\t' \"confidence\": number',\n\t' },',\n\t' \"navigationPlan\": {',\n\t' \"startingRoute\": string | null,',\n\t' \"recommendedRoutes\": Array<{',\n\t' \"route\": string,',\n\t' \"reason\": string,',\n\t' \"requiresViewToken\": string',\n\t' }>,',\n\t' \"stepByStep\": string[],',\n\t' \"deepLinks\": Array<{',\n\t' \"label\": string,',\n\t' \"route\": string,',\n\t' \"reason\": string',\n\t' }>',\n\t' },',\n\t' \"dataPlan\": {',\n\t' \"shouldFetchData\": boolean,',\n\t' \"permissionCheck\": {',\n\t' \"requiredViewToken\": string | null,',\n\t' \"allowed\": boolean,',\n\t' \"reason\": string',\n\t' },',\n\t' \"entity\": string | null,',\n\t' \"metric\": string | null,',\n\t' \"timeRange\": {',\n\t' \"type\": \"last_n_months\" | \"custom\" | \"all_time\" | null,',\n\t' \"n\": number | null,',\n\t' \"startDateISO\": string | null,',\n\t' \"endDateISO\": string | null,',\n\t' \"grain\": \"day\" | \"week\" | \"month\" | \"quarter\" | null',\n\t' },',\n\t' \"scoping\": {',\n\t' \"applyClientScope\": boolean,',\n\t' \"applyCustomerScope\": boolean,',\n\t' \"customerScopeField\": \"id_customer\" | \"other.id_customer\" | null,',\n\t' \"clientScopeField\": \"id_client\" | null',\n\t' },',\n\t' \"queryPlan\": {',\n\t' \"preferredCollections\": string[],',\n\t' \"fallbackCollections\": string[],',\n\t' \"dateFieldPreferences\": string[],',\n\t' \"amountFieldPreferences\": string[],',\n\t' \"statusStrategy\": \"none\" | \"paid_like\" | \"open_like\" | \"closed_like\",',\n\t' \"groupBy\": string | null,',\n\t' \"sort\": string | null,',\n\t' \"limit\": number | null',\n\t' },',\n\t' \"validationChecklist\": string[]',\n\t' },',\n\t' \"assistantResponsePlan\": {',\n\t' \"greeting\": string,',\n\t' \"whatINeedToSayFirst\": string,',\n\t' \"responseMustInclude\": string[],',\n\t' \"followUpQuestions\": string[]',\n\t' }',\n\t'}',\n\t'',\n\t'Now produce a plan for the following request + context.',\n\t'',\n\t'Today (ISO): {{today_iso}}',\n\t'User request: {{user_message}}',\n\t'',\n\t'Current route (may be null): {{current_route}}',\n\t'Known routes (may be empty): {{known_routes_json_array}}',\n\t'',\n\t'User object (sanitized): {{user_json}}',\n\t'Notes:',\n\t'- user.roles.super_admin may exist',\n\t'- user.roles.groups may include { name, views: [] }',\n\t'- user.roles.miscs may include views strings',\n\t'- user.other.id_customer may exist for customer portal users',\n\t'',\n\t'Collection hints (may be empty): {{collection_hints_json_array}}',\n\t'Field hints (may be empty): {{field_hints_json_array}}',\n\t'Schema hints (may be empty): {{schema_hints_json_array}}',\n\t'Method hints (may be empty): {{method_hints_json_array}}',\n\t'Publication hints (may be empty): {{publication_hints_json_array}}',\n\t'',\n\t'Important:',\n\t'- Do not output raw Mongo pipelines. Output a QueryPlan + validation checklist only.',\n\t'- Navigation steps must only reference routes that match allowed views (or known routes if provided).'\n].join('\\n');\n\nconst AI_FORM_PATCH_SYSTEM_PROMPT = [\n\t'You are the ResolveIO form patch assistant.',\n\t'- Your job is to map the user request to the provided form fields.',\n\t'- Only use the allowed fields and their types.',\n\t'- Return ONLY valid JSON and nothing else.',\n\t'- If you cannot map the request, return an empty patch with a short note.',\n\t'- Use ISO 8601 for dates and true/false for booleans.',\n\t'- Use medium reasoning effort.'\n].join('\\n');\n\nlet assistantCodexClientByConfig = new Map<string, CodexClient>();\nlet assistantCodexRunQueue: Array<() => Promise<unknown>> = [];\nlet assistantCodexRunDraining = false;\n\ntype GuardrailResult = { blocked: boolean; response: string; reason: string };\ntype CodexWorkerResponse = { ok: boolean; result?: string; error?: string; type?: 'stream' | 'final'; status?: string };\n/* eslint-disable no-unused-vars -- Function type params are required for clarity. */\ntype CodexStreamStatusHandler = (status: string) => void;\ntype CodexProgressTracker = { push: (item: string) => void };\n/* eslint-enable no-unused-vars */\n\nfunction parseDebugFlag(value: any): boolean {\n\tif (value === true) {\n\t\treturn true;\n\t}\n\n\tif (value === false || value === null || value === undefined) {\n\t\treturn false;\n\t}\n\n\tif (typeof value === 'number') {\n\t\treturn value === 1;\n\t}\n\n\tif (typeof value === 'string') {\n\t\tconst normalized = value.trim().toLowerCase();\n\t\treturn ['1', 'true', 'yes', 'y', 'on'].includes(normalized);\n\t}\n\n\treturn false;\n}\n\nfunction isAiWorkerDebugEnabled(): boolean {\n\treturn parseDebugFlag(process.env.AI_ASSISTANT_WORKER_DEBUG);\n}\n\nfunction enqueueAssistantCodexRun(task: () => Promise<unknown>): void {\n\tassistantCodexRunQueue.push(task);\n\tif (assistantCodexRunDraining) {\n\t\treturn;\n\t}\n\tassistantCodexRunDraining = true;\n\tqueueMicrotask(async () => {\n\t\tawait drainAssistantCodexRunQueue();\n\t});\n}\n\nasync function drainAssistantCodexRunQueue(): Promise<void> {\n\ttry {\n\t\twhile (assistantCodexRunQueue.length) {\n\t\t\tconst next = assistantCodexRunQueue.shift();\n\t\t\tif (!next) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait next();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'AI assistant run failed:', error);\n\t\t\t}\n\t\t}\n\t}\n\tfinally {\n\t\tassistantCodexRunDraining = false;\n\t\tif (assistantCodexRunQueue.length) {\n\t\t\tassistantCodexRunDraining = true;\n\t\t\tqueueMicrotask(async () => {\n\t\t\t\tawait drainAssistantCodexRunQueue();\n\t\t\t});\n\t\t}\n\t}\n}\n\ntype AttachmentInput = {\n\tid?: string;\n\tname?: string;\n\ttype?: string;\n\tsize?: number;\n\tlocal_path?: string;\n};\n\ntype AiTerminalRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tprofile_id?: string;\n\tconfig?: {\n\t\tmode?: string;\n\t\tmodel?: string;\n\t\tsystem_prompt?: string;\n\t\tuser_prompt_template?: string;\n\t\tresponse_format?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n\tguardrails?: boolean;\n\tattachments?: AttachmentInput[];\n\tmax_history?: number;\n\tdelete_files_after_run?: boolean;\n};\n\ntype AiCodexRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tguardrails?: boolean;\n\tconfig?: {\n\t\tmode?: string;\n\t\tmodel?: string;\n\t\tfallback_model?: string;\n\t\tfallback_models?: string[] | string;\n\t\tfallbackModel?: string;\n\t\tfallbackModels?: string[] | string;\n\t\tguardrails?: boolean;\n\t\tplanner_enabled?: boolean;\n\t\tplannerEnabled?: boolean;\n\t\tfast_mode?: boolean;\n\t\tfastMode?: boolean;\n\t\talways_allow_probe?: boolean;\n\t\talwaysAllowProbe?: boolean;\n\t\trun_budget_ms?: number;\n\t\trunBudgetMs?: number;\n\t\tmongo_max_time_ms?: number;\n\t\tmongoMaxTimeMs?: number;\n\t\tqa_repair_enabled?: boolean;\n\t\tqaRepairEnabled?: boolean;\n\t\tqa_evidence_required?: boolean;\n\t\tqaEvidenceRequired?: boolean;\n\t\tqa_distinct_screenshot_required?: boolean;\n\t\tqaDistinctScreenshotRequired?: boolean;\n\t\tqa_fail_fast_compile?: boolean;\n\t\tqaFailFastCompile?: boolean;\n\t\tqa_live_data_required?: boolean;\n\t\tqaLiveDataRequired?: boolean;\n\t\tqa_self_repair_max_waves?: number;\n\t\tqaSelfRepairMaxWaves?: number;\n\t\tqa_policy_instructions?: string[];\n\t\tqaPolicyInstructions?: string[];\n\t\tsystem_prompt?: string;\n\t\tsystemPrompt?: string;\n\t\tuser_prompt_template?: string;\n\t\tuserPromptTemplate?: string;\n\t};\n\tcontext?: {\n\t\tmode?: string;\n\t\troute?: string;\n\t};\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\tattachments?: AttachmentInput[];\n\tdelete_files_after_run?: boolean;\n\tmax_history?: number;\n};\n\ntype AiCodexRunStatusInput = {\n\tid_conversation?: string;\n\tid_message?: string;\n\trequest_id?: string;\n};\n\ntype AiAssistantIssueReportInput = {\n\tid_conversation?: string;\n\tid_message?: string;\n\tid_client?: string;\n\tid_app?: string;\n\trequest_id?: string;\n\treason?: string;\n\texpected?: string;\n\tcategory?: string;\n\tseverity?: string;\n\tmetadata?: Record<string, any>;\n};\n\ntype AiAssistantCollectionRetryState = {\n\ttriedCollections?: string[];\n\tdisableCrossCollectionRetry?: boolean;\n\trootCollection?: string;\n};\n\ntype AiAssistantRuntimeControl = {\n\tfastMode?: boolean;\n\tdeadlineMs?: number;\n\tmaxTimeMS?: number;\n};\n\ntype AiAssistantDirectiveHints = {\n\tcollectionHints?: string[];\n\trankedCollections?: string[];\n\tfieldHints?: string[];\n\tschemaHints?: string[];\n};\n\ntype AiAssistantAppHeuristicTermHint = {\n\tterms: string[];\n\tcollections: string[];\n};\n\ntype AiAssistantAppDataIntent = {\n\tid: string;\n\tterms: string[];\n\texcludeTerms: string[];\n\tcollection: string;\n\tpermissionView?: string;\n\tdateField?: string;\n\tquantityField?: string;\n\tmetricField?: string;\n\tfallbackCollections: string[];\n\tprogress: string[];\n\tassumptions: string[];\n};\n\ntype AiAssistantDisplayDateFormat = 'iso' | 'mdy';\n\ntype AiAssistantAppHeuristicProfile = {\n\tappId?: string;\n\taliases: Record<string, string>;\n\taliasOptions: Record<string, string[]>;\n\tcollectionTermHints: AiAssistantAppHeuristicTermHint[];\n\tdataIntents: AiAssistantAppDataIntent[];\n\tenabledDeterministicHeuristics: Set<string>;\n\tdisabledDeterministicHeuristics: Set<string>;\n\tdisplayDateFormat?: AiAssistantDisplayDateFormat;\n};\n\ntype AiAssistantAppHeuristicRegistry = {\n\tdefaultProfile: AiAssistantAppHeuristicProfile;\n\tappProfiles: Map<string, AiAssistantAppHeuristicProfile>;\n};\n\nexport type AiAssistantMongoReadInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\toptions?: {\n\t\tprojection?: Record<string, number | boolean>;\n\t\tsort?: Record<string, any>;\n\t\tlimit?: number;\n\t\tskip?: number;\n\t\tincludeTotal?: boolean;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\t__assistantRetryState?: AiAssistantCollectionRetryState;\n\t__assistantRuntime?: AiAssistantRuntimeControl;\n\t__assistantHints?: AiAssistantDirectiveHints;\n};\n\nexport type AiAssistantMongoAggregateInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\tpipeline?: Array<Record<string, any>>;\n\toptions?: {\n\t\tallowDiskUse?: boolean;\n\t\tmaxTimeMS?: number;\n\t\tlimit?: number;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\t__assistantMessage?: string;\n\t__assistantRetryState?: AiAssistantCollectionRetryState;\n\t__assistantRuntime?: AiAssistantRuntimeControl;\n\t__assistantHints?: AiAssistantDirectiveHints;\n};\n\ntype AiFormPatchInput = {\n\tmessage: string;\n\tallowed_fields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tfields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tpatch_format?: string;\n\troute?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tconfig?: {\n\t\tmodel?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n};\n\ntype AiFormField = {\n\tname: string;\n\ttype?: string;\n\tlabel?: string;\n\tenums?: string[];\n};\n\ntype AiAssistantDisplayTable = {\n\tcolumns: string[];\n\trows: Array<Record<string, any>>;\n\trowCount: number;\n\ttotal?: number | null;\n\ttruncated?: boolean;\n\tincludeIds?: boolean;\n};\n\ntype AiAssistantToolResult = {\n\ttype: 'mongo_read' | 'mongo_agg';\n\tinput: Record<string, any>;\n\toutput: {\n\t\tdisplay: AiAssistantDisplayTable;\n\t\ttotal?: number | null;\n\t\tcollection?: string;\n\t\trowCount: number;\n\t\tcolumns: string[];\n\t\ttruncated?: boolean;\n\t\tverification?: Record<string, any>;\n\t\tdebug?: Record<string, any>;\n\t};\n};\n\ntype AssistantMongoDirective = {\n\ttype: 'read' | 'aggregate';\n\tpayload: Record<string, any> | null;\n\tcleaned: string;\n\trawLine: string;\n\tmetadata?: Record<string, any>;\n};\n\ntype AssistantToolExecutionTelemetry = {\n\tmode: 'single_step' | 'probe_then_final';\n\talwaysAllowProbe: boolean;\n\tpermissionDenied?: boolean;\n\tintentId?: string;\n\tacknowledgementText?: string;\n\trecipeUsed?: string;\n\toverrideBlockedReason?: string;\n\tprobe?: {\n\t\tattempted: boolean;\n\t\tsucceeded?: boolean;\n\t\tfailed?: boolean;\n\t\tskippedReason?: string;\n\t\trowCount?: number;\n\t\tdurationMs?: number;\n\t\trewritesApplied?: boolean;\n\t\trewriteNotes?: string[];\n\t\tfieldHintsAdded?: number;\n\t\terror?: string;\n\t};\n\tfinal?: {\n\t\tattempted: boolean;\n\t\tsucceeded?: boolean;\n\t\tfailed?: boolean;\n\t\tskippedReason?: string;\n\t\trowCount?: number;\n\t\ttotal?: number | null;\n\t\tdurationMs?: number;\n\t\ttoolType?: 'read' | 'aggregate';\n\t\tcollection?: string;\n\t\terror?: string;\n\t};\n\toutcome?: {\n\t\tzeroRows?: boolean;\n\t\terror?: string;\n\t};\n};\n\ntype AssistantRequestType = 'data' | 'navigation' | 'feature_info' | 'bug_issue' | 'mixed' | 'unknown';\ntype AssistantRequestTypeSource = 'heuristic' | 'planner' | 'merged';\ntype AssistantTimeGrain = 'day' | 'week' | 'month' | 'quarter' | 'year' | null;\ntype AssistantDirectivePromptMode = 'any' | 'aggregate_only';\n\ntype AssistantRequestClassification = {\n\ttype: AssistantRequestType;\n\tdataQuestion: boolean;\n\tsource: AssistantRequestTypeSource;\n\tplannerIntentType?: string;\n};\n\ntype AssistantNavigationFastPathResult = {\n\tresponse: string;\n\troutes: string[];\n\treason: 'explicit' | 'ranked' | 'permission_denied' | 'no_access';\n};\n\ntype AssistantSurfaceIndex = {\n\tmethods: string[];\n\tpublications: string[];\n\tupdatedAt: number;\n};\n\ntype AssistantSurfaceHintResult = {\n\tcollectionHints: string[];\n\tmethodHints: string[];\n\tpublicationHints: string[];\n};\n\ntype AssistantCollectionRankingSignals = {\n\trequestedTokens: string[];\n\tmethodHints?: string[];\n\tpublicationHints?: string[];\n\trouteHints?: string[];\n\tboostedCollections?: string[];\n};\n\ntype AssistantChangeModule = 'invoice' | 'work_order' | 'delivery' | 'blend' | 'job' | 'customer' | 'chemical' | 'portal' | 'general' | 'internal';\n\ntype AssistantChangeHistoryCommit = {\n\tdate: string;\n\tsubject: string;\n\tfiles: string[];\n\tmodules: AssistantChangeModule[];\n};\n\ntype AssistantChangeHistoryFastPathResult = {\n\tresponse: string;\n\treason: 'detailed' | 'generic' | 'no_repo' | 'error';\n\tcommitCount: number;\n\tgeneric: boolean;\n\tbranch?: string;\n};\n\nlet cachedAssistantSurfaceIndex: AssistantSurfaceIndex | null = null;\nconst assistantGitMirrorCache = new Map<string, { root: string; updatedAt: number }>();\n\nexport function loadAiTerminalMethods(methodManager) {\n\tconst codexWorkerIndex = resolveSingleWorkerTarget(\n\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INDEX\n\t\t|| process.env.CODEX_WORKER_INDEX\n\t\t|| process.env.WORKER_CODEX_INDEX\n\t);\n\tconst codexWorkerInstance = resolveSingleWorkerTarget(\n\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INSTANCE\n\t\t|| process.env.CODEX_WORKER_INSTANCE\n\t\t|| process.env.WORKER_CODEX_INSTANCE\n\t);\n\tmethodManager.methods({\n\t\taiTerminalConversationCreate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\tconst idUser = normalizeOptionalString(this?.id_user || '');\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('Unauthorized.');\n\t\t\t\t}\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\t\t\t\tid_user: idUser,\n\t\t\t\t\tid_client: await resolveClientIdFromConfig(payload.id_client, idUser),\n\t\t\t\t\tid_app: normalizeOptionalString(payload.id_app),\n\t\t\t\t\ttitle: normalizeOptionalString(payload.title) || 'New Conversation',\n\t\t\t\t\tmode: normalizeConversationMode(payload.mode),\n\t\t\t\t\tbranch_enabled: payload.branch_enabled === true,\n\t\t\t\t\tbranch_name: normalizeOptionalString(payload.branch_name),\n\t\t\t\t\tstatus: normalizeConversationStatus(payload.status),\n\t\t\t\t\tprofile_id: normalizeOptionalString(payload.profile_id),\n\t\t\t\t\tmetadata: payload.metadata || {},\n\t\t\t\t\tlast_message_at: undefined,\n\t\t\t\t\tlast_message_id: undefined,\n\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t};\n\t\t\t\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\t\t\t\treturn { id_conversation: result._id as string };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationUpdate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tpatch: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, patch) {\n\t\t\t\tconst idUser = normalizeOptionalString(this?.id_user || '');\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('Unauthorized.');\n\t\t\t\t}\n\t\t\t\tconst update: Partial<AiTerminalConversationModel> & { updatedAt: Date } = {\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t};\n\t\t\t\tif (patch.title !== undefined) {\n\t\t\t\t\tupdate.title = normalizeOptionalString(patch.title);\n\t\t\t\t}\n\t\t\t\tif (patch.status !== undefined) {\n\t\t\t\t\tupdate.status = normalizeConversationStatus(patch.status);\n\t\t\t\t}\n\t\t\t\tif (patch.branch_enabled !== undefined) {\n\t\t\t\t\tupdate.branch_enabled = !!patch.branch_enabled;\n\t\t\t\t}\n\t\t\t\tif (patch.branch_name !== undefined) {\n\t\t\t\t\tupdate.branch_name = normalizeOptionalString(patch.branch_name);\n\t\t\t\t}\n\t\t\t\tif (patch.profile_id !== undefined) {\n\t\t\t\t\tupdate.profile_id = normalizeOptionalString(patch.profile_id);\n\t\t\t\t}\n\t\t\t\tif (patch.metadata !== undefined) {\n\t\t\t\t\tupdate.metadata = patch.metadata || {};\n\t\t\t\t}\n\n\t\t\t\tawait AiTerminalConversations.updateOne({ _id: id_conversation, id_user: idUser }, { $set: update });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationDelete: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string) {\n\t\t\t\tconst idUser = normalizeOptionalString(this?.id_user || '');\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('Unauthorized.');\n\t\t\t\t}\n\t\t\t\tconst conversation = await AiTerminalConversations.findById(id_conversation);\n\t\t\t\tif (!conversation || normalizeOptionalString(conversation.id_user) !== idUser) {\n\t\t\t\t\tthrow new Error('Conversation not found.');\n\t\t\t\t}\n\t\t\t\tawait AiTerminalMessages.deleteMany({ id_conversation });\n\t\t\t\tawait AiTerminalConversations.deleteOne({ _id: id_conversation, id_user: idUser });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\tconst idUser = normalizeOptionalString(this?.id_user || '');\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('Unauthorized.');\n\t\t\t\t}\n\t\t\t\tconst conversation = await AiTerminalConversations.findById(id_conversation);\n\t\t\t\tif (!conversation || normalizeOptionalString(conversation.id_user) !== idUser) {\n\t\t\t\t\tthrow new Error('Conversation not found.');\n\t\t\t\t}\n\t\t\t\tconst limits = resolveUploadLimits();\n\t\t\t\tif (size > limits.maxFileBytes) {\n\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t}\n\t\t\t\tconst safeName = sanitizeFilename(file_name);\n\t\t\t\tconst uploadRoot = resolveUploadRoot();\n\t\t\t\tconst targetDir = path.join(uploadRoot, id_conversation);\n\t\t\t\tawait fs.mkdir(targetDir, { recursive: true });\n\t\t\t\tconst targetPath = path.join(targetDir, safeName);\n\t\t\t\t\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\t\t\t\t\tconst data = new Uint8Array(dataBuffer);\n\t\t\t\t\tif (data.byteLength !== size) {\n\t\t\t\t\t\tif (data.byteLength > limits.maxFileBytes) {\n\t\t\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tawait fs.writeFile(targetPath, data);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid_file: objectIdHexString(),\n\t\t\t\t\t\tname: safeName,\n\t\t\t\t\tsize: data.byteLength,\n\t\t\t\t\ttype: normalizeOptionalString(content_type),\n\t\t\t\t\tlocal_path: targetPath\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\taiTerminalRun: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiTerminalRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiFormPatch: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiFormPatch(payload, this);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\treturn await handleCodexUpload(id_conversation, file_name, content_base64, size, content_type);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalRunCodex: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tforceWorker: true,\n\t\t\tworkerQueue: 'codex',\n\t\t\t...(codexWorkerIndex ? { targetWorkerIndex: codexWorkerIndex } : {}),\n\t\t\t...(codexWorkerInstance ? { targetWorkerInstance: codexWorkerInstance } : {}),\n\t\t\tmaxConcurrencyPerInstance: 1,\n\t\t\ttimeoutOverride: resolveCodexTimeoutMs() + 15000,\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantCodexRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalRunStatus: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantCodexRunStatus(payload, this);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalReportIssue: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantReportIssue(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoRead(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoAggregate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoAggregate(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantReportBuilderRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoRead(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantReportBuilderAggregate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoAggregate(payload, this);\n\t\t\t}\n\t\t},\n\t\t\taiCoderTerminalDeployTest: {\n\t\t\t\tcheck: new SimpleSchema({\n\t\t\t\t\tid_conversation: {\n\t\t\t\t\t\ttype: String\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfunction: function() {\n\t\t\t\t\tthrow new Error('Test deploys are not supported for AI assistant sessions.');\n\t\t\t\t}\n\t\t\t}\n\t});\n}\n\nasync function executeAiTerminalRun(payload: AiTerminalRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiTerminalRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\tconst requestId = normalizeOptionalString(input.request_id);\n\tconst identityGuardrail = evaluateAssistantIdentityDisclosureGuardrail(message);\n\tif (identityGuardrail?.blocked) {\n\t\tconst conversation = await ensureConversation(input, 'codex', context?.id_user);\n\t\tconst now = new Date();\n\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'user',\n\t\t\tcontent: message,\n\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'assistant',\n\t\t\tcontent: identityGuardrail.response,\n\t\t\tmetadata: {\n\t\t\t\tblocked: true,\n\t\t\t\treason: identityGuardrail.reason,\n\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t},\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tawait touchConversation(conversation._id, now);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tguardrails: { blocked: true, reason: identityGuardrail.reason }\n\t\t};\n\t}\n\n\tconst isSuperAdmin = await resolveIsSuperAdmin(context?.id_user);\n\tconst guardrailsEnabled = input.guardrails !== false && !isSuperAdmin;\n\tif (guardrailsEnabled) {\n\t\tconst guardrail = evaluateGuardrails(message);\n\t\tif (guardrail?.blocked) {\n\t\t\tconst conversation = await ensureConversation(input, 'codex', context?.id_user);\n\t\t\tconst now = new Date();\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: guardrail.response,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblocked: true,\n\t\t\t\t\treason: guardrail.reason,\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\t\tawait touchConversation(conversation._id, now);\n\t\t\treturn {\n\t\t\t\tconversation,\n\t\t\t\tmessage: assistantMsg,\n\t\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t\t};\n\t\t}\n\t}\n\n\tconst conversation = await ensureConversation(input, 'codex', context?.id_user);\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst config = sanitizeConfig(input.config || {});\n\tconst systemPrompt = normalizeOptionalString(config.system_prompt) || '';\n\tconst userPromptTemplate = normalizeOptionalString(config.user_prompt_template);\n\tconst userPrompt = buildUserPrompt(userPromptTemplate, message, attachmentData.promptText);\n\n\tconst historyLimit = normalizeHistoryLimit(input.max_history);\n\tconst history = historyLimit > 0\n\t\t? await AiTerminalMessages.find(\n\t\t\t{ id_conversation: conversation._id, role: { $in: ['user', 'assistant'] } },\n\t\t\t{ sort: { createdAt: 1 }, limit: historyLimit * 2 }\n\t\t)\n\t\t: [];\n\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [];\n\tif (systemPrompt) {\n\t\tmessages.push({ role: 'system', content: systemPrompt });\n\t}\n\n\thistory.forEach((entry: AiTerminalMessageModel) => {\n\t\tconst role = entry.role === 'assistant' ? 'assistant' : 'user';\n\t\tconst content = normalizeOptionalString(entry.content);\n\t\tif (content) {\n\t\t\tmessages.push({ role, content });\n\t\t}\n\t});\n\n\tif (userPrompt) {\n\t\tmessages.push({ role: 'user', content: userPrompt });\n\t}\n\n\tconst codexModel = resolveCodexModel(config);\n\tconst codexFallbackModels = resolveCodexFallbackModels(config, codexModel);\n\tconst codexSettings = resolveCodexSettings({ model: codexModel, fallbackModels: codexFallbackModels });\n\tconst client = getAssistantCodexClient(codexSettings);\n\tconst responseText = await client.run(buildCodexChatPrompt(messages), {\n\t\ttimeoutMs: 60000,\n\t\tthreadOptions: {\n\t\t\tmodel: codexModel,\n\t\t\tsandboxMode: 'danger-full-access',\n\t\t\tskipGitRepoCheck: true,\n\t\t\tnetworkAccessEnabled: false,\n\t\t\twebSearchMode: 'disabled',\n\t\t\twebSearchEnabled: false,\n\t\t\tapprovalPolicy: 'never'\n\t\t}\n\t});\n\n\tconst usage = estimateUsage(messages, responseText, codexModel);\n\tconst idClient = await resolveClientId(conversation, input.id_client, context?.id_user);\n\tconst usageLedgerEntry = buildAssistantAIRunUsageLedgerEntry({\n\t\tidClient: idClient || '',\n\t\tmodel: codexModel || 'unknown',\n\t\tinputTokens: usage.inputTokens,\n\t\toutputTokens: usage.outputTokens,\n\t\ttotalTokens: usage.totalTokens,\n\t\tcategory: 'ai-terminal',\n\t\tconversationId: conversation._id,\n\t\trequestId: input.request_id || '',\n\t\tusagePhase: 'chat',\n\t\tidApp: String((conversation as any)?.id_app || ''),\n\t\tmetadata: {\n\t\t\tconversationId: conversation._id,\n\t\t\trequestId: input.request_id || ''\n\t\t}\n\t});\n\tawait recordOpenAIUsage(usageLedgerEntry);\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: responseText,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tusage: {\n\t\t\tmodel: codexModel,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst userInsertResult = await AiTerminalMessages.insertOne(userDoc as any);\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tconst assistantMessageId = String((insertResult as any)?._id || (insertResult as any)?.insertedId || '');\n\tconst userMessageId = String((userInsertResult as any)?._id || (userInsertResult as any)?.insertedId || '');\n\tawait touchConversation(conversation._id, now, assistantMessageId);\n\tawait recordAssistantAnswerAIRun({\n\t\trunId: buildAssistantAIRunId('chat', [conversation._id, assistantMessageId || input.request_id]),\n\t\trequestId: input.request_id,\n\t\tmessageId: assistantMessageId,\n\t\tconversation,\n\t\tuserMessage: {\n\t\t\t...userDoc,\n\t\t\t_id: userMessageId || undefined\n\t\t},\n\t\tassistantMessage: {\n\t\t\t...assistantDoc,\n\t\t\t_id: assistantMessageId || undefined\n\t\t},\n\t\tusageLedgerEntry,\n\t\tnow\n\t});\n\n\tif (input.delete_files_after_run !== false) {\n\t\tawait cleanupAttachments(attachmentData.attachments);\n\t}\n\n\treturn {\n\t\tconversation,\n\t\tmessage: assistantDoc,\n\t\tusage: assistantDoc.usage\n\t};\n}\n\nasync function executeAiFormPatch(payload: AiFormPatchInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiFormPatchInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst allowedFields = normalizeAiFormFields(input.allowed_fields || input.fields);\n\tif (!allowedFields.length) {\n\t\tthrow new Error('Allowed fields are required.');\n\t}\n\n\tconst guardrail = evaluateGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\treturn { error: guardrail.response, blocked: true };\n\t}\n\n\tconst systemPrompt = buildAiFormSystemPrompt();\n\tconst userPrompt = buildAiFormUserPrompt(message, allowedFields, input.patch_format, input.route);\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [\n\t\t{ role: 'system', content: systemPrompt },\n\t\t{ role: 'user', content: userPrompt }\n\t];\n\n\tconst config = sanitizeConfig(input.config || {});\n\tconst codexModel = resolveCodexModel(config);\n\tconst codexFallbackModels = resolveCodexFallbackModels(config, codexModel);\n\tconst codexSettings = resolveCodexSettings({ model: codexModel, fallbackModels: codexFallbackModels });\n\tconst client = getAssistantCodexClient(codexSettings);\n\tconst responseText = await client.run(buildCodexChatPrompt(messages), {\n\t\ttimeoutMs: 60000,\n\t\tthreadOptions: {\n\t\t\tmodel: codexModel,\n\t\t\tsandboxMode: 'danger-full-access',\n\t\t\tskipGitRepoCheck: true,\n\t\t\tnetworkAccessEnabled: false,\n\t\t\twebSearchMode: 'disabled',\n\t\t\twebSearchEnabled: false,\n\t\t\tapprovalPolicy: 'never'\n\t\t}\n\t});\n\n\tconst usage = estimateUsage(messages, responseText, codexModel);\n\tconst idClient = await resolveClientIdFromConfig(input.id_client, context?.id_user);\n\tconst usageLedgerEntry = buildAssistantAIRunUsageLedgerEntry({\n\t\tidClient: idClient || '',\n\t\tmodel: codexModel || 'unknown',\n\t\tinputTokens: usage.inputTokens,\n\t\toutputTokens: usage.outputTokens,\n\t\ttotalTokens: usage.totalTokens,\n\t\tcategory: 'ai-form',\n\t\trequestId: createHash('sha1').update(`${input.route || ''}:${message}:${responseText}`).digest('hex').slice(0, 24),\n\t\tusagePhase: 'form_patch',\n\t\tidApp: input.id_app || '',\n\t\tmetadata: {\n\t\t\troute: input.route || ''\n\t\t}\n\t});\n\tawait recordOpenAIUsage(usageLedgerEntry);\n\n\tconst parsed = parseJsonObject(responseText);\n\tif (!parsed || typeof parsed !== 'object') {\n\t\tthrow new Error('AI form patch response was not valid JSON.');\n\t}\n\tconst formRunId = buildAssistantAIRunId('form_patch', [input.route, usageLedgerEntry.id_request]);\n\tawait recordAssistantAnswerAIRun({\n\t\trunId: formRunId,\n\t\trequestId: String(usageLedgerEntry.id_request || ''),\n\t\tmessageId: formRunId,\n\t\tconversation: {\n\t\t\t_id: `ai-form:${usageLedgerEntry.id_request}`,\n\t\t\tid_app: input.id_app || '',\n\t\t\ttitle: input.route ? `AI form patch: ${input.route}` : 'AI form patch',\n\t\t\tstatus: 'complete',\n\t\t\tupdatedAt: new Date()\n\t\t},\n\t\tuserMessage: {\n\t\t\t_id: `${formRunId}:user`,\n\t\t\trole: 'user',\n\t\t\tcontent: message,\n\t\t\tcreatedAt: new Date()\n\t\t},\n\t\tassistantMessage: {\n\t\t\t_id: `${formRunId}:assistant`,\n\t\t\trole: 'assistant',\n\t\t\tcontent: responseText,\n\t\t\tusage: {\n\t\t\t\tmodel: codexModel || 'unknown',\n\t\t\t\tinput_tokens: usage.inputTokens,\n\t\t\t\toutput_tokens: usage.outputTokens,\n\t\t\t\ttotal_tokens: usage.totalTokens\n\t\t\t},\n\t\t\tcreatedAt: new Date()\n\t\t},\n\t\tusageLedgerEntry,\n\t\tnow: new Date()\n\t});\n\n\treturn {\n\t\tpatch: parsed.patch ?? parsed,\n\t\tnotes: normalizeOptionalString(parsed.notes) || undefined,\n\t\tusage: {\n\t\t\tmodel: codexModel,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t}\n\t};\n}\n\nasync function executeAiAssistantCodexRun(payload: AiCodexRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiCodexRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\tconst aiWorkerDebug = isAiWorkerDebugEnabled();\n\n\tconst requestId = normalizeOptionalString(input.request_id);\n\tconst codexModel = resolveCodexModel(input.config);\n\tconst codexFallbackModels = resolveCodexFallbackModels(input.config, codexModel);\n\tconst user = await Users.findById(context?.id_user);\n\tif (!user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst guardrail = evaluateAssistantGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\tconst conversation = await ensureConversation(input as any, 'codex', context?.id_user);\n\t\tconst now = new Date();\n\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'user',\n\t\t\tcontent: message,\n\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'assistant',\n\t\t\tcontent: guardrail.response,\n\t\t\tmetadata: {\n\t\t\t\tblocked: true,\n\t\t\t\treason: guardrail.reason,\n\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t},\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tawait touchConversation(conversation._id, now);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t};\n\t}\n\tconst canViewDebug = isAssistantDebugUser(user);\n\tif (shouldLogAssistantFinalizeDebug()) {\n\t\tconsole.log(new Date(), '[AI-Dashboard][AI-Assistant] debug-visibility', {\n\t\t\trequestId: requestId || null,\n\t\t\tid_user: context?.id_user || null,\n\t\t\tusername: normalizeOptionalString(user?.username) || null,\n\t\t\tisSuperAdmin,\n\t\t\tcanViewDebug\n\t\t});\n\t}\n\tconst hasInvoiceAccess = userHasInvoiceAccess(user);\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst conversation = await ensureConversation(input as any, 'codex', context?.id_user);\n\tif (aiWorkerDebug) {\n\t\tconsole.log(new Date(), '[AI Worker Debug] codex run queued', {\n\t\t\trequestId: requestId || null,\n\t\t\tid_user: context?.id_user || null,\n\t\t\tid_conversation: conversation?._id || null,\n\t\t\tisWorkerInstance: process.env.IS_WORKER_INSTANCE || null,\n\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null\n\t\t});\n\t}\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst navigationFastPath = resolveAssistantNavigationFastPathResponse({\n\t\tmessage,\n\t\thasAttachments: attachments.length > 0,\n\t\tuser,\n\t\tisSuperAdmin,\n\t\tcontextRoute: normalizeOptionalString(input?.context?.route)\n\t});\n\tif (navigationFastPath) {\n\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'user',\n\t\t\tcontent: message,\n\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\tattachments: [],\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'assistant',\n\t\t\tcontent: navigationFastPath.response,\n\t\t\tmetadata: {\n\t\t\t\tmodel: codexModel,\n\t\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t\tfast_path: 'navigation',\n\t\t\t\tfast_path_reason: navigationFastPath.reason,\n\t\t\t\t...(navigationFastPath.routes.length ? { fast_path_routes: navigationFastPath.routes } : {})\n\t\t\t},\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tconst assistantInsert = await AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tconst assistantMessageId = (assistantInsert as any)?._id || (assistantInsert as any)?.insertedId;\n\t\tawait touchConversation(conversation._id, now, assistantMessageId ? String(assistantMessageId) : undefined);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tfast_path: {\n\t\t\t\ttype: 'navigation',\n\t\t\t\treason: navigationFastPath.reason\n\t\t\t}\n\t\t};\n\t}\n\t\tconst changeHistoryFastPath = await resolveAssistantChangeHistoryFastPathResponse({\n\t\t\tmessage,\n\t\t\thasAttachments: attachments.length > 0,\n\t\t\tuser,\n\t\t\tisSuperAdmin\n\t\t});\n\t\tconst changeHistoryFastPathBypassedReason = (\n\t\t\tchangeHistoryFastPath\n\t\t\t&& (changeHistoryFastPath.reason === 'no_repo' || changeHistoryFastPath.reason === 'error')\n\t\t\t&& !shouldReturnAssistantChangeHistoryUnavailableFastPath()\n\t\t)\n\t\t\t? changeHistoryFastPath.reason\n\t\t\t: '';\n\t\tif (changeHistoryFastPathBypassedReason && shouldReturnAssistantGitToolRequestFastPath()) {\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tattachments: [],\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: buildAssistantGitToolRequestResponse({\n\t\t\t\t\tmessage,\n\t\t\t\t\treason: changeHistoryFastPathBypassedReason as 'no_repo' | 'error'\n\t\t\t\t}),\n\t\t\t\tmetadata: {\n\t\t\t\t\tmodel: codexModel,\n\t\t\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t\t\tfast_path: 'change_history_git_tool_request',\n\t\t\t\t\tfast_path_reason: changeHistoryFastPathBypassedReason\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\t\tconst assistantInsert = await AiTerminalMessages.insertOne(assistantMsg as any);\n\t\t\tconst assistantMessageId = (assistantInsert as any)?._id || (assistantInsert as any)?.insertedId;\n\t\t\tawait touchConversation(conversation._id, now, assistantMessageId ? String(assistantMessageId) : undefined);\n\t\t\treturn {\n\t\t\t\tconversation,\n\t\t\t\tmessage: assistantMsg,\n\t\t\t\tfast_path: {\n\t\t\t\t\ttype: 'change_history_git_tool_request',\n\t\t\t\t\treason: changeHistoryFastPathBypassedReason\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif (changeHistoryFastPath && !changeHistoryFastPathBypassedReason) {\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\tcontent: message,\n\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\tattachments: [],\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\tid_conversation: conversation._id,\n\t\t\trole: 'assistant',\n\t\t\tcontent: changeHistoryFastPath.response,\n\t\t\tmetadata: {\n\t\t\t\tmodel: codexModel,\n\t\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t\tfast_path: 'change_history',\n\t\t\t\tfast_path_reason: changeHistoryFastPath.reason,\n\t\t\t\tfast_path_change_generic: changeHistoryFastPath.generic,\n\t\t\t\tfast_path_change_commit_count: changeHistoryFastPath.commitCount,\n\t\t\t\t...(changeHistoryFastPath.branch ? { fast_path_change_branch: changeHistoryFastPath.branch } : {})\n\t\t\t},\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tconst assistantInsert = await AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tconst assistantMessageId = (assistantInsert as any)?._id || (assistantInsert as any)?.insertedId;\n\t\tawait touchConversation(conversation._id, now, assistantMessageId ? String(assistantMessageId) : undefined);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tfast_path: {\n\t\t\t\ttype: 'change_history',\n\t\t\t\treason: changeHistoryFastPath.reason\n\t\t\t}\n\t\t};\n\t}\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst historyLines: string[] = [];\n\tconst recentToolError = '';\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst initialProgress = ['Planning'];\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: AI_ASSISTANT_PROGRESS_PLACEHOLDER,\n\t\tmetadata: {\n\t\t\tmodel: codexModel,\n\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\tpending: true,\n\t\t\tprogress: initialProgress\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst userInsertResult = await AiTerminalMessages.insertOne(userDoc as any);\n\tconst userMessageId = (userInsertResult as any)?._id || (userInsertResult as any)?.insertedId;\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tconst assistantMessageId = (insertResult as any)?._id || (insertResult as any)?.insertedId;\n\tenqueueAssistantCodexRun(async () => {\n\t\tconst runStart = Date.now();\n\t\tconst fastModeEnabled = resolveAssistantFastModeEnabled(input.config);\n\t\tconst alwaysAllowProbeEnabled = resolveAssistantAlwaysAllowProbeEnabled(input.config);\n\t\tconst plannerEnabled = resolveAssistantPlannerEnabled(input.config);\n\t\tconst runBudgetMs = resolveAssistantRunBudgetMs(input.config);\n\t\tconst assistantMongoMaxTimeMs = resolveAssistantMongoDefaultMaxTimeMs(input.config);\n\t\tconst assistantSystemPrompt = resolveAssistantSystemPrompt(input.config, {\n\t\t\tmessage,\n\t\t\tattachmentText: attachmentData.promptText,\n\t\t\thistoryText: historyLines.join('\\n')\n\t\t});\n\t\tconst runDeadlineMs = fastModeEnabled ? runStart + runBudgetMs : null;\n\t\tif (aiWorkerDebug) {\n\t\t\tconsole.log(new Date(), '[AI Worker Debug] codex run start', {\n\t\t\t\trequestId: requestId || null,\n\t\t\t\tid_user: context?.id_user || null,\n\t\t\t\tid_conversation: conversation?._id || null,\n\t\t\t\tid_message: assistantMessageId ? String(assistantMessageId) : null,\n\t\t\t\tfastModeEnabled,\n\t\t\t\talwaysAllowProbeEnabled,\n\t\t\t\trunBudgetMs: runDeadlineMs ? runBudgetMs : null,\n\t\t\t\tisWorkerInstance: process.env.IS_WORKER_INSTANCE || null,\n\t\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null\n\t\t\t});\n\t\t}\n\t\tconst steps: Array<{ step: string; at: string; ms: number; details?: Record<string, any> }> = [];\n\t\tconst recordStep = (step: string, details?: Record<string, any>) => {\n\t\t\tsteps.push({\n\t\t\t\tstep,\n\t\t\t\tat: new Date().toISOString(),\n\t\t\t\tms: Date.now() - runStart,\n\t\t\t\tdetails\n\t\t\t});\n\t\t};\n\t\tlet requestClassification = classifyAssistantRequestType(message);\n\t\tlet dataQuestion = requestClassification.dataQuestion;\n\t\tconst progressTracker = createAssistantProgressTracker(assistantMessageId, initialProgress);\n\t\tconst streamProgress = createAssistantStreamProgressHandler(progressTracker, () => dataQuestion);\n\t\tconst remainingRunBudgetMs = () => {\n\t\t\tif (!runDeadlineMs) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn Math.max(runDeadlineMs - Date.now(), 0);\n\t\t};\n\t\tconst hasRunBudget = (phase: string, minMs = AI_ASSISTANT_CODEX_MIN_STAGE_BUDGET_MS): boolean => {\n\t\t\tconst remaining = remainingRunBudgetMs();\n\t\t\tif (remaining === null || remaining >= minMs) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\trecordStep(`${phase}: skipped`, {\n\t\t\t\treason: 'run_budget_exhausted',\n\t\t\t\tremainingMs: remaining,\n\t\t\t\tbudgetMs: runBudgetMs\n\t\t\t});\n\t\t\treturn false;\n\t\t};\n\t\tconst applyCodexStageBudget = (base: CodexRunOptions): CodexRunOptions => {\n\t\t\tconst remaining = remainingRunBudgetMs();\n\t\t\tif (remaining === null) {\n\t\t\t\treturn base;\n\t\t\t}\n\t\t\tconst baseTimeout = typeof base.timeoutMs === 'number' && base.timeoutMs > 0\n\t\t\t\t? base.timeoutMs\n\t\t\t\t: resolveCodexTimeoutMs();\n\t\t\tconst timeoutMs = Math.max(1000, Math.min(baseTimeout, remaining));\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttimeoutMs\n\t\t\t};\n\t\t};\n\n\t\tlet assistantContent = '';\n\t\tlet toolResult: AiAssistantToolResult | null = null;\n\t\tlet assistantDebug: Record<string, any> | null = null;\n\t\tlet directiveSource: 'model' | 'forced' | 'none' = 'none';\n\t\t\tlet lastDirective: AssistantMongoDirective | null = null;\n\t\t\tlet heuristicDirectivePrecomputed: AssistantMongoDirective | null = null;\n\t\t\tlet usedDeterministicHeuristicFastPath = false;\n\t\t\tlet requestedTimeGrain: AssistantTimeGrain = null;\n\t\t\tlet requestedBreakdownDimensions: string[] = [];\n\t\t\tlet enforceDatedDirective = false;\n\t\t\tlet enforceGroupedDirective = false;\n\t\t\tlet datedDirectiveRetryUsed = false;\n\t\t\tlet datedDirectiveResolved = false;\n\t\tlet toolResponseDebug: Record<string, any> | null = null;\n\t\tlet toolError: any = null;\n\t\tlet toolTelemetry: AssistantToolExecutionTelemetry = {\n\t\t\tmode: AI_ASSISTANT_TOOL_MAX_STEPS > 1 ? 'probe_then_final' : 'single_step',\n\t\t\talwaysAllowProbe: alwaysAllowProbeEnabled\n\t\t};\n\t\t\tlet termHints: string[] = [];\n\t\t\tlet collectionHints: string[] = [];\n\t\t\tlet fieldHints: string[] = [];\n\t\t\tlet schemaHints: string[] = [];\n\t\t\tlet methodHints: string[] = [];\n\t\t\tlet publicationHints: string[] = [];\n\t\t\tlet collectionTokenization: Record<string, any> | null = null;\n\t\tlet collectionRanking: Record<string, any> | null = null;\n\t\tlet collectionSelection: Record<string, any> | null = null;\n\t\tlet collectionOverride: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null = null;\n\t\tlet collectionNames: string[] = [];\n\t\t\tlet plannerUsed = false;\n\t\t\tlet plannerSkipReason = '';\n\t\t\tlet plannerOutput: any | null = null;\n\t\t\tlet plannerRaw = '';\n\t\tconst timingBreakdown: Record<string, number> = {\n\t\t\tplannerMs: 0,\n\t\t\tdirectiveMs: 0,\n\t\t\tinitialResponseMs: 0,\n\t\t\tforcedDirectiveMs: 0,\n\t\t\ttoolMs: 0,\n\t\t\tfollowupMs: 0\n\t\t};\n\t\tconst codexUsage = {\n\t\t\tinput_tokens: 0,\n\t\t\toutput_tokens: 0,\n\t\t\ttotal_tokens: 0\n\t\t};\n\t\tconst accumulateCodexUsage = (promptText: string, completionText: string) => {\n\t\t\tconst inputTokens = countTokens(promptText || '', codexModel);\n\t\t\tconst outputTokens = countTokens(completionText || '', codexModel);\n\t\t\tif (!inputTokens && !outputTokens) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcodexUsage.input_tokens += inputTokens;\n\t\t\tcodexUsage.output_tokens += outputTokens;\n\t\t\tcodexUsage.total_tokens += inputTokens + outputTokens;\n\t\t};\n\t\t\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\t\t\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\t\t\trecordStep('Queued', { requestId: requestId || undefined });\n\t\t\tif (changeHistoryFastPathBypassedReason) {\n\t\t\t\trecordStep('Planning: change-history fast path unavailable', {\n\t\t\t\t\treason: changeHistoryFastPathBypassedReason\n\t\t\t\t});\n\t\t\t}\n\t\t\trecordStep('Planning: request classification', {\n\t\t\t\ttype: requestClassification.type,\n\t\t\t\tsource: requestClassification.source,\n\t\t\t\tdataQuestion\n\t\t});\n\n\t\ttry {\n\t\t\tconst hintSeed = [message, contextRoute].filter(Boolean).join(' ');\n\t\t\tconst termExpansion = expandAssistantTermSynonyms(hintSeed);\n\t\t\tconst hintText = termExpansion.expanded || hintSeed;\n\t\t\ttermHints = termExpansion.matches.map((match) => `${match.term} -> ${match.expansions.join(', ')}`);\n\t\t\tconst baseTokens = tokenizeCollectionText(hintSeed);\n\t\t\tconst expandedTokens = tokenizeCollectionText(hintText);\n\t\t\tconst baseWeights = computeCollectionTokenWeights(baseTokens);\n\t\t\tconst expandedWeights = computeCollectionTokenWeights(expandedTokens);\n\t\t\tcollectionTokenization = {\n\t\t\t\tbaseText: hintSeed || undefined,\n\t\t\t\texpandedText: hintText || undefined,\n\t\t\t\tbaseTokens: baseTokens.length ? baseTokens : undefined,\n\t\t\t\texpandedTokens: expandedTokens.length ? expandedTokens : undefined,\n\t\t\t\tbaseTokenWeights: baseTokens.length ? baseWeights.weights : undefined,\n\t\t\t\texpandedTokenWeights: expandedTokens.length ? expandedWeights.weights : undefined,\n\t\t\t\thasDomainTokens: expandedTokens.length ? expandedWeights.hasDomain : undefined\n\t\t\t};\n\t\t\trecordStep('Planning: term expansion', {\n\t\t\t\ttermMatches: termExpansion.matches.length ? termExpansion.matches : undefined\n\t\t\t});\n\t\t\t\ttry {\n\t\t\t\t\tconst dbName = resolveAssistantDatabaseName(undefined, input.mongo);\n\t\t\t\t\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\t\t\t\t\tcollectionNames = await listAssistantCollections(db, dbName);\n\t\t\t\t\tcollectionHints = resolveCollectionHintsFromTokens(expandedTokens, collectionNames, 5);\n\t\t\t\t\tcollectionRanking = buildCollectionRankingDebugFromTokens(expandedTokens, collectionNames, 8);\n\t\t\t\t\tconst surfaceHints = await resolveAssistantSurfaceHints(hintSeed, contextRoute, collectionNames);\n\t\t\t\t\tmethodHints = surfaceHints.methodHints;\n\t\t\t\t\tpublicationHints = surfaceHints.publicationHints;\n\t\t\t\t\tif (surfaceHints.collectionHints.length) {\n\t\t\t\t\t\tcollectionHints = mergeAssistantHintValues(surfaceHints.collectionHints, collectionHints);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tcollectionHints = [];\n\t\t\t\t\tcollectionRanking = collectionRanking || (collectionTokenization?.expandedTokens\n\t\t\t\t\t\t? buildCollectionRankingDebugFromTokens(collectionTokenization.expandedTokens || [], [], 0)\n\t\t\t\t\t\t: null);\n\t\t\t\t}\n\t\t\t\t\tconst allowedRoutes = resolveAssistantAllowedRoutesForUser(user, isSuperAdmin);\n\t\t\t\t\tconst rankedAllowedRoutes = rankAssistantNavigationRoutes(hintSeed, allowedRoutes, 3);\n\t\t\t\t\tconst routeHints = mergeAssistantHintValues(\n\t\t\t\t\t\tresolveCollectionHintsFromRoute(contextRoute, collectionNames),\n\t\t\t\t\t\tresolveCollectionHintsFromRoutes(rankedAllowedRoutes, collectionNames)\n\t\t\t\t\t);\n\t\t\t\t\t\tif (routeHints.length) {\n\t\t\t\t\t\t\tcollectionHints = mergeAssistantHintValues(routeHints, collectionHints);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst appCollectionHints = resolveAssistantAppCollectionHintCandidates(hintSeed, input.id_app);\n\t\t\t\t\t\tif (appCollectionHints.length) {\n\t\t\t\t\t\t\tcollectionHints = mergeAssistantHintValues(appCollectionHints, collectionHints);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!collectionHints.length) {\n\t\t\t\t\t\t\tcollectionHints = resolveAssistantDefaultCollectionHints(message, input.id_app);\n\t\t\t\t\t\t}\n\t\t\t\t\tcollectionRanking = buildCollectionRankingDebugFromSignals(\n\t\t\t\t\t\texpandedTokens,\n\t\t\t\t\t\tcollectionNames,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trequestedTokens: expandedTokens,\n\t\t\t\t\t\t\tmethodHints,\n\t\t\t\t\t\t\tpublicationHints,\n\t\t\t\t\t\t\trouteHints: mergeAssistantHintValues(\n\t\t\t\t\t\t\t\tcontextRoute ? [contextRoute] : [],\n\t\t\t\t\t\t\t\trankedAllowedRoutes\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tboostedCollections: collectionHints\n\t\t\t\t\t\t},\n\t\t\t\t\t\t8\n\t\t\t\t\t);\n\t\t\t\t\tconst rankedCollectionHints = resolveCollectionHintsFromRanking(collectionRanking, 5);\n\t\t\t\t\tif (rankedCollectionHints.length) {\n\t\t\t\t\t\tcollectionHints = mergeAssistantHintValues(collectionHints, rankedCollectionHints);\n\t\t\t\t\t}\n\t\t\t\tconst rankedCollections = Array.isArray(collectionRanking?.ranked)\n\t\t\t\t\t? collectionRanking?.ranked.map(entry => entry.name)\n\t\t\t\t\t: [];\n\t\t\tconst hintCollections = mergeAssistantHintValues(collectionHints, rankedCollections)\n\t\t\t\t.slice(0, AI_ASSISTANT_CONTEXT_MAX_COLLECTIONS);\n\t\t\tconst schemaHintCollections = mergeAssistantHintValues(\n\t\t\t\thintCollections,\n\t\t\t\trankedCollections,\n\t\t\t\tcollectionHints\n\t\t\t).slice(0, AI_ASSISTANT_CONTEXT_MAX_SCHEMA_COLLECTIONS);\n\t\t\tfieldHints = buildAssistantFieldHints(message, hintCollections);\n\t\t\tschemaHints = buildAssistantSchemaHints(schemaHintCollections, {\n\t\t\t\tmaxCollections: AI_ASSISTANT_CONTEXT_MAX_SCHEMA_COLLECTIONS\n\t\t\t});\n\t\t\t\trecordStep('Planning: collection hints', {\n\t\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\t\ttermHints: termHints.length ? termHints : undefined,\n\t\t\t\t\tfieldHints: fieldHints.length ? fieldHints : undefined,\n\t\t\t\t\tschemaHints: schemaHints.length ? schemaHints : undefined,\n\t\t\t\t\tmethodHints: methodHints.length ? methodHints : undefined,\n\t\t\t\t\tpublicationHints: publicationHints.length ? publicationHints : undefined\n\t\t\t\t});\n\n\t\t\t\tconst assistantContext = buildAssistantContext(input, {\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\thasInvoiceAccess,\n\t\t\t\t\t\tcustomerId,\n\t\t\t\t\t\tcollectionHints,\n\t\t\t\t\t\ttermHints,\n\t\t\t\t\t\tfieldHints,\n\t\t\t\t\t\tschemaHints,\n\t\t\t\t\t\tmethodHints,\n\t\t\t\t\t\tpublicationHints,\n\t\t\t\t\t\trecentToolError,\n\t\t\t\t\t\tchangeHistoryFastPathBypassedReason\n\t\t\t\t\t});\n\t\t\t\t\theuristicDirectivePrecomputed = dataQuestion\n\t\t\t\t\t\t? buildAssistantHeuristicDirective(message, collectionHints, collectionNames, input.id_app)\n\t\t\t\t\t\t: null;\n\t\t\t\tconst hasDeterministicHeuristicFastPath = dataQuestion\n\t\t\t\t\t&& isAssistantExecutableDirective(heuristicDirectivePrecomputed)\n\t\t\t\t\t&& isAssistantDeterministicHeuristicDirective(heuristicDirectivePrecomputed);\n\t\t\t\tif (hasDeterministicHeuristicFastPath) {\n\t\t\t\t\trecordStep('Planning: heuristic directive fast path', {\n\t\t\t\t\t\ttype: heuristicDirectivePrecomputed?.type,\n\t\t\t\t\t\tcollection: normalizeOptionalString(heuristicDirectivePrecomputed?.payload?.collection) || undefined,\n\t\t\t\t\t\theuristic: normalizeOptionalString(heuristicDirectivePrecomputed?.rawLine) || undefined\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst prompt = buildAssistantCodexPrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext,\n\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t);\n\t\t\tconst workspaceRoot = await resolveAssistantWorkspaceRoot();\n\t\t\tconst codexConfig = resolveCodexSettings({\n\t\t\t\tmodel: codexModel,\n\t\t\t\tfallbackModels: codexFallbackModels\n\t\t\t});\n\t\t\t\tconst runOptions: CodexRunOptions = {\n\t\t\t\t\ttimeoutMs: resolveCodexTimeoutMs(),\n\t\t\t\t\tfallbackModels: codexFallbackModels,\n\t\t\t\t\tthreadKey: conversation._id,\n\t\t\t\t\treuseThread: true,\n\t\t\t\t\tthreadOptions: {\n\t\t\t\t\t\tmodel: codexModel,\n\t\t\t\t\t\tworkingDirectory: workspaceRoot,\n\t\t\t\t\t\tsandboxMode: 'danger-full-access',\n\t\t\t\t\t\tskipGitRepoCheck: true,\n\t\t\t\t\t\tmodelReasoningEffort: resolveCodexThoughtLevel({\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\tattachmentText: attachmentData.promptText,\n\t\t\t\t\t\t\trequestType: requestClassification.type\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnetworkAccessEnabled: false,\n\t\t\t\t\t\twebSearchMode: 'disabled',\n\t\t\t\t\t\twebSearchEnabled: false,\n\t\t\t\t\t\tapprovalPolicy: 'never'\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst plannerRunOptions: CodexRunOptions = {\n\t\t\t\t\t...runOptions,\n\t\t\t\t\tthreadKey: `${conversation._id}:planner`,\n\t\t\t\t\tthreadOptions: {\n\t\t\t\t\t\t...(runOptions.threadOptions || {}),\n\t\t\t\t\t\tmodelReasoningEffort: 'minimal'\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst shouldRunPlanner = shouldRunAssistantPlanner({\n\t\t\t\t\tplannerEnabled,\n\t\t\t\t\trequestClassification,\n\t\t\t\t\thasDeterministicHeuristicFastPath\n\t\t\t\t});\n\t\t\t\tconst plannerBudgetAvailable = !shouldRunPlanner || hasRunBudget('Planning: planner');\n\t\t\t\tif (shouldRunPlanner && plannerBudgetAvailable) {\n\t\t\t\t\tplannerUsed = true;\n\t\t\t\t\trecordStep('Planning: planner prompt');\n\t\t\t\t\t\tconst plannerPrompt = buildAssistantPlannerPrompt({\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\tattachmentText: attachmentData.promptText,\n\t\t\t\t\t\t\tcontextRoute,\n\t\t\t\t\t\t\tknownRoutes: resolveAssistantPlannerKnownRoutes(user, isSuperAdmin),\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\tcollectionHints,\n\t\t\t\t\t\t\tfieldHints,\n\t\t\t\t\t\t\tschemaHints,\n\t\t\t\t\t\t\tmethodHints,\n\t\t\t\t\t\t\tpublicationHints,\n\t\t\t\t\t\t\tinputClientId: input.id_client\n\t\t\t\t\t\t});\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst plannerStart = Date.now();\n\t\t\t\t\t\tplannerRaw = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tplannerPrompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(plannerRunOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(plannerPrompt, plannerRaw);\n\t\t\t\t\t\ttimingBreakdown.plannerMs = Date.now() - plannerStart;\n\t\t\t\t\t\tplannerOutput = parseJsonObject(plannerRaw);\n\t\t\t\t\t\trecordStep('Planning: planner result', { parsed: !!plannerOutput });\n\t\t\t\t\t}\n\t\t\t\t\tcatch {\n\t\t\t\t\t\trecordStep('Planning: planner result', { parsed: false });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (plannerEnabled) {\n\t\t\t\t\tif (hasDeterministicHeuristicFastPath) {\n\t\t\t\t\t\tplannerSkipReason = 'heuristic_directive_fast_path';\n\t\t\t\t\t}\n\t\t\t\t\telse if (!requestClassification.dataQuestion) {\n\t\t\t\t\t\tplannerSkipReason = `non_data_${requestClassification.type || 'unknown'}`;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!plannerBudgetAvailable) {\n\t\t\t\t\t\tplannerSkipReason = 'run_budget_exhausted';\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tplannerSkipReason = 'policy';\n\t\t\t\t\t}\n\t\t\t\t\trecordStep('Planning: planner skipped', { reason: plannerSkipReason });\n\t\t\t\t}\n\t\t\t\trequestClassification = classifyAssistantRequestType(message, plannerOutput || undefined);\n\t\t\t\tdataQuestion = requestClassification.dataQuestion;\n\t\t\t\trequestedTimeGrain = resolveAssistantRequestedTimeGrain(message, plannerOutput || undefined);\n\t\t\t\trequestedBreakdownDimensions = extractAssistantRequestedBreakdownDimensions(message);\n\t\t\t\tconst preferListDirective = shouldPreferAssistantListDirective(\n\t\t\t\t\tmessage,\n\t\t\t\t\tplannerOutput || undefined,\n\t\t\t\t\trequestClassification\n\t\t\t\t);\n\t\t\t\tenforceDatedDirective = shouldEnforceAssistantDatedDirective(\n\t\t\t\t\tmessage,\n\t\t\t\t\tplannerOutput || undefined,\n\t\t\t\t\trequestClassification\n\t\t\t\t);\n\t\t\t\tenforceGroupedDirective = shouldEnforceAssistantGroupedDirective(\n\t\t\t\t\tmessage,\n\t\t\t\t\tplannerOutput || undefined,\n\t\t\t\t\trequestClassification\n\t\t\t\t);\n\t\t\t\tconst directiveStyleHint = buildAssistantDirectiveStyleHint({\n\t\t\t\t\tenforceDated: enforceDatedDirective,\n\t\t\t\t\tenforceGrouped: enforceGroupedDirective,\n\t\t\t\t\trequestedTimeGrain,\n\t\t\t\t\trequestedBreakdowns: requestedBreakdownDimensions,\n\t\t\t\t\tpreferList: preferListDirective\n\t\t\t\t});\n\t\t\tconst directivePromptMode: AssistantDirectivePromptMode = (enforceDatedDirective || enforceGroupedDirective) ? 'aggregate_only' : 'any';\n\t\t\tdatedDirectiveRetryUsed = false;\n\t\t\t\trecordStep('Planning: request classification', {\n\t\t\t\t\ttype: requestClassification.type,\n\t\t\t\t\tsource: requestClassification.source,\n\t\t\t\t\tplannerIntentType: requestClassification.plannerIntentType || undefined,\n\t\t\t\t\tdataQuestion,\n\t\t\t\t\treportStyle: enforceDatedDirective\n\t\t\t\t\t\t? 'dated'\n\t\t\t\t\t\t: (enforceGroupedDirective ? 'grouped' : undefined),\n\t\t\t\t\tbreakdownDimensions: requestedBreakdownDimensions.length ? requestedBreakdownDimensions : undefined,\n\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\n\t\t\t\t});\n\n\t\t\tlet responseText = '';\n\t\t\tlet directiveText = '';\n\t\t\tlet directive = null as AssistantMongoDirective | null;\n\t\t\t\t\tconst heuristicDirectiveFastPath = dataQuestion\n\t\t\t\t\t\t? (heuristicDirectivePrecomputed || buildAssistantHeuristicDirective(message, collectionHints, collectionNames, input.id_app))\n\t\t\t\t\t\t: null;\n\t\t\t\tif (dataQuestion\n\t\t\t\t\t&& isAssistantExecutableDirective(heuristicDirectiveFastPath)\n\t\t\t\t\t&& isAssistantDeterministicHeuristicDirective(heuristicDirectiveFastPath)) {\n\t\t\t\t\tdirective = heuristicDirectiveFastPath;\n\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\tlastDirective = heuristicDirectiveFastPath;\n\t\t\t\t\tusedDeterministicHeuristicFastPath = true;\n\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t);\n\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\ttype: directive.type,\n\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined,\n\t\t\t\t\treportStyle: 'heuristic_fast_path',\n\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (dataQuestion && !directive) {\n\t\t\t\trecordStep('Directive: determine tool', { type: 'data-question' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext,\n\t\t\t\t\tdirectiveStyleHint,\n\t\t\t\t\tdirectivePromptMode,\n\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t);\n\t\t\t\tif (hasRunBudget('Directive: determine tool')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst directiveStart = Date.now();\n\t\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tdirectivePrompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(directivePrompt, directiveText);\n\t\t\t\t\t\ttimingBreakdown.directiveMs = Date.now() - directiveStart;\n\t\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\t\tif (isAssistantExecutableDirective(forcedDirective)) {\n\t\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\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\tcatch {}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!directive && !dataQuestion) {\n\t\t\t\trecordStep('Response: draft initial answer', { mode: 'full' });\n\t\t\t\tif (hasRunBudget('Response: initial draft')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst initialStart = Date.now();\n\t\t\t\t\t\tresponseText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(prompt, responseText);\n\t\t\t\t\t\ttimingBreakdown.initialResponseMs = Date.now() - initialStart;\n\t\t\t\t\t\tconst extractedDirective = extractAssistantMongoDirective(responseText);\n\t\t\t\t\t\tdirective = isAssistantExecutableDirective(extractedDirective) ? extractedDirective : null;\n\t\t\t\t\t\tif (directive) {\n\t\t\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\t\t\tlastDirective = directive;\n\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\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\tcatch (error) {\n\t\t\t\t\t\trecordStep('Response: initial draft failed', {\n\t\t\t\t\t\t\tmessage: normalizeOptionalString((error as any)?.message) || 'Unknown error'\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\tif (!directive && dataQuestion) {\n\t\t\t\trecordStep('Directive: forced retry', { mode: 'directive-only' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext,\n\t\t\t\t\tdirectiveStyleHint,\n\t\t\t\t\tdirectivePromptMode,\n\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t);\n\t\t\t\tif (hasRunBudget('Directive: forced retry')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst forcedStart = Date.now();\n\t\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tdirectivePrompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(directivePrompt, directiveText);\n\t\t\t\t\t\ttimingBreakdown.forcedDirectiveMs = Date.now() - forcedStart;\n\t\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\t\tif (isAssistantExecutableDirective(forcedDirective)) {\n\t\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\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\tcatch {}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\tif (directive\n\t\t\t\t\t&& enforceDatedDirective\n\t\t\t\t\t&& !isAssistantDeterministicHeuristicDirective(directive)\n\t\t\t\t\t&& !isAssistantDirectiveDated(directive)) {\n\t\t\t\trecordStep('Directive: dated retry', {\n\t\t\t\t\tcurrentType: directive.type,\n\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\n\t\t\t\t});\n\t\t\t\t\tconst strictDirectivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\tbuildAssistantDirectiveStyleHint({\n\t\t\t\t\t\t\tenforceDated: true,\n\t\t\t\t\t\t\tenforceGrouped: enforceGroupedDirective,\n\t\t\t\t\t\t\trequestedTimeGrain,\n\t\t\t\t\t\t\trequestedBreakdowns: requestedBreakdownDimensions,\n\t\t\t\t\t\t\tstrict: true\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t'aggregate_only',\n\t\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t\t);\n\t\t\t\tif (hasRunBudget('Directive: dated retry')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst strictStart = Date.now();\n\t\t\t\t\t\tconst strictDirectiveText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tstrictDirectivePrompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(strictDirectivePrompt, strictDirectiveText);\n\t\t\t\t\t\ttimingBreakdown.forcedDirectiveMs += Date.now() - strictStart;\n\t\t\t\t\t\tconst strictDirective = extractAssistantMongoDirective(strictDirectiveText);\n\t\t\t\t\t\tconst strictDirectiveIsDated = strictDirective ? isAssistantDirectiveDated(strictDirective) : false;\n\t\t\t\t\t\tconst shouldUseStrictDirective = isAssistantExecutableDirective(strictDirective) && strictDirective.type === 'aggregate';\n\t\t\t\t\t\tif (shouldUseStrictDirective && strictDirective) {\n\t\t\t\t\t\t\tdirective = strictDirective;\n\t\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\t\tlastDirective = strictDirective;\n\t\t\t\t\t\t\tdatedDirectiveRetryUsed = true;\n\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined,\n\t\t\t\t\t\t\t\treportStyle: strictDirectiveIsDated ? 'dated' : 'aggregate_fallback',\n\t\t\t\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\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\tcatch {}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\tif (directive\n\t\t\t\t\t&& enforceDatedDirective\n\t\t\t\t\t&& !isAssistantDeterministicHeuristicDirective(directive)\n\t\t\t\t\t&& directive.type === 'read') {\n\t\t\t\trecordStep('Directive: dated guard retry', {\n\t\t\t\t\tcurrentType: directive.type,\n\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\n\t\t\t\t});\n\t\t\t\t\tconst guardDirectivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\tbuildAssistantDirectiveStyleHint({\n\t\t\t\t\t\t\tenforceDated: true,\n\t\t\t\t\t\t\tenforceGrouped: enforceGroupedDirective,\n\t\t\t\t\t\t\trequestedTimeGrain,\n\t\t\t\t\t\t\trequestedBreakdowns: requestedBreakdownDimensions,\n\t\t\t\t\t\t\tstrict: true\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t'aggregate_only',\n\t\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t\t);\n\t\t\t\tif (hasRunBudget('Directive: dated guard retry')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst guardStart = Date.now();\n\t\t\t\t\t\tconst guardDirectiveText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\tguardDirectivePrompt,\n\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulateCodexUsage(guardDirectivePrompt, guardDirectiveText);\n\t\t\t\t\t\ttimingBreakdown.forcedDirectiveMs += Date.now() - guardStart;\n\t\t\t\t\t\tconst guardDirective = extractAssistantMongoDirective(guardDirectiveText);\n\t\t\t\t\t\tif (isAssistantExecutableDirective(guardDirective) && guardDirective.type === 'aggregate') {\n\t\t\t\t\t\t\tdirective = guardDirective;\n\t\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\t\tlastDirective = guardDirective;\n\t\t\t\t\t\t\tdatedDirectiveRetryUsed = true;\n\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined,\n\t\t\t\t\t\t\t\treportStyle: isAssistantDirectiveDated(guardDirective) ? 'dated' : 'aggregate_fallback',\n\t\t\t\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\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\tcatch {}\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (directive\n\t\t\t\t\t&& enforceGroupedDirective\n\t\t\t\t\t&& !isAssistantDeterministicHeuristicDirective(directive)\n\t\t\t\t\t&& !isAssistantDirectiveGrouped(directive)) {\n\t\t\t\t\trecordStep('Directive: grouped guard retry', {\n\t\t\t\t\t\tcurrentType: directive.type,\n\t\t\t\t\t\tbreakdownDimensions: requestedBreakdownDimensions.length ? requestedBreakdownDimensions : undefined\n\t\t\t\t\t});\n\t\t\t\t\tconst groupedDirectivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\tbuildAssistantDirectiveStyleHint({\n\t\t\t\t\t\t\tenforceDated: enforceDatedDirective,\n\t\t\t\t\t\t\tenforceGrouped: true,\n\t\t\t\t\t\t\trequestedTimeGrain,\n\t\t\t\t\t\t\trequestedBreakdowns: requestedBreakdownDimensions,\n\t\t\t\t\t\t\tstrict: true\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t'aggregate_only',\n\t\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t\t);\n\t\t\t\t\tif (hasRunBudget('Directive: grouped guard retry')) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst groupedStart = Date.now();\n\t\t\t\t\t\t\tconst groupedDirectiveText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\t\tgroupedDirectivePrompt,\n\t\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\taccumulateCodexUsage(groupedDirectivePrompt, groupedDirectiveText);\n\t\t\t\t\t\t\ttimingBreakdown.forcedDirectiveMs += Date.now() - groupedStart;\n\t\t\t\t\t\t\tconst groupedDirective = extractAssistantMongoDirective(groupedDirectiveText);\n\t\t\t\t\t\t\tif (isAssistantExecutableDirective(groupedDirective) && isAssistantDirectiveGrouped(groupedDirective)) {\n\t\t\t\t\t\t\t\tdirective = groupedDirective;\n\t\t\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\t\t\tlastDirective = groupedDirective;\n\t\t\t\t\t\t\t\tdatedDirectiveRetryUsed = true;\n\t\t\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined,\n\t\t\t\t\t\t\t\t\treportStyle: isAssistantDirectiveDated(groupedDirective)\n\t\t\t\t\t\t\t\t\t\t? 'dated'\n\t\t\t\t\t\t\t\t\t\t: 'grouped',\n\t\t\t\t\t\t\t\t\tbreakdownDimensions: requestedBreakdownDimensions.length ? requestedBreakdownDimensions : undefined,\n\t\t\t\t\t\t\t\t\ttimeGrain: requestedTimeGrain || undefined\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!directive && dataQuestion) {\n\t\t\t\t\tconst heuristicDirective = buildAssistantHeuristicDirective(message, collectionHints, collectionNames, input.id_app);\n\t\t\t\t\tif (isAssistantExecutableDirective(heuristicDirective)) {\n\t\t\t\t\tdirective = heuristicDirective;\n\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\tlastDirective = heuristicDirective;\n\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined,\n\t\t\t\t\t\treportStyle: 'heuristic_fallback'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (directive) {\n\t\t\t\tconst requestedCollection = normalizeOptionalString(directive.payload?.collection);\n\t\t\t\tconst allowCollectionOverride = !isAssistantDeterministicHeuristicDirective(directive);\n\t\t\t\tcollectionOverride = allowCollectionOverride\n\t\t\t\t\t? resolveCollectionOverrideWithContext({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tcollectionRanking,\n\t\t\t\t\t\trequestedCollection,\n\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || contextRoute,\n\t\t\t\t\t\tcollectionNames,\n\t\t\t\t\t\tcollectionHints\n\t\t\t\t\t})\n\t\t\t\t\t: null;\n\t\t\t\tif (collectionOverride) {\n\t\t\t\t\trecordStep('Planning: collection override', {\n\t\t\t\t\t\tfrom: collectionOverride.from || undefined,\n\t\t\t\t\t\tto: collectionOverride.to,\n\t\t\t\t\t\treason: collectionOverride.reason,\n\t\t\t\t\t\tscoreGap: collectionOverride.toScore - collectionOverride.fromScore\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tdatedDirectiveResolved = directive ? isAssistantDirectiveDated(directive) : false;\n\t\t\tconst cleanedResponseText = directive?.cleaned || responseText;\n\t\t\tif (cleanedResponseText) {\n\t\t\t\tassistantContent = sanitizeAssistantResponse(cleanedResponseText);\n\t\t\t}\n\n\t\t\tconst deniedModuleByIntent = resolveAssistantIntentDeniedModule({\n\t\t\t\tuser,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tmessage\n\t\t\t});\n\t\t\t\tif (deniedModuleByIntent) {\n\t\t\t\t\tconst permissionLabel = formatAssistantModulePermissionLabel(deniedModuleByIntent);\n\t\t\t\t\tprogressTracker.push('Grabbing Data');\n\t\t\t\t\trecordStep('Grabbing Data: denied', {\n\t\t\t\t\t\treason: `${deniedModuleByIntent}_permission_required`\n\t\t\t\t\t});\n\t\t\t\t\tassistantContent = `I couldn't run that request because this account does not have ${permissionLabel} permission.`;\n\t\t\t\t\ttoolError = new Error('AI assistant report builder bridge: Access denied.');\n\t\t\t\t\ttoolTelemetry.permissionDenied = true;\n\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\tskippedReason: 'permission_denied',\n\t\t\t\t\t\terror: 'permission_denied'\n\t\t\t\t\t};\n\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\terror: 'permission_denied'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (directive?.payload && AI_ASSISTANT_TOOL_MAX_STEPS > 0) {\n\t\t\t\t\tconst effectiveDirective = collectionOverride\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t...directive,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t...(directive.payload || {}),\n\t\t\t\t\t\t\t\tcollection: collectionOverride.to\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: directive;\n\t\t\t\t\tconst effectiveDirectiveMetadata = effectiveDirective.metadata && typeof effectiveDirective.metadata === 'object'\n\t\t\t\t\t\t? effectiveDirective.metadata\n\t\t\t\t\t\t: {};\n\t\t\t\t\tconst directiveAcknowledgementText = normalizeOptionalString(effectiveDirectiveMetadata.acknowledgementText);\n\t\t\t\t\tconst directiveProgressMessages = Array.isArray(effectiveDirectiveMetadata.progress)\n\t\t\t\t\t\t? effectiveDirectiveMetadata.progress.map((entry: any) => normalizeOptionalString(entry)).filter(Boolean)\n\t\t\t\t\t\t: [];\n\t\t\t\t\tconst deterministicDataIntentDirective = isAssistantAppDataIntentHeuristicDirective(effectiveDirective);\n\t\t\t\t\tif (deterministicDataIntentDirective) {\n\t\t\t\t\t\ttoolTelemetry.intentId = normalizeOptionalString(effectiveDirectiveMetadata.intentId) || undefined;\n\t\t\t\t\t\ttoolTelemetry.recipeUsed = normalizeOptionalString(effectiveDirectiveMetadata.recipeUsed) || undefined;\n\t\t\t\t\t\ttoolTelemetry.acknowledgementText = directiveAcknowledgementText || undefined;\n\t\t\t\t\t\tif (!collectionOverride) {\n\t\t\t\t\t\t\ttoolTelemetry.overrideBlockedReason = 'deterministic_data_intent_preserved_collection';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst rankedCollections = Array.isArray(collectionRanking?.ranked)\n\t\t\t\t\t\t? collectionRanking.ranked\n\t\t\t\t\t\t\t.map((entry: any) => normalizeOptionalString(entry?.name))\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t: [];\n\t\t\t\t\tconst directiveHintsBase: AiAssistantDirectiveHints = {\n\t\t\t\t\t\tcollectionHints,\n\t\t\t\t\t\trankedCollections,\n\t\t\t\t\t\tfieldHints,\n\t\t\t\t\t\tschemaHints\n\t\t\t\t\t};\n\t\t\t\t\tconst buildToolRequestForDirective = (\n\t\t\t\t\t\tvalue: AssistantMongoDirective,\n\t\t\t\t\t\tadditionalFieldHints: string[] = []\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst request = buildAssistantToolRequest(value, input, {\n\t\t\t\t\t\t\t...directiveHintsBase,\n\t\t\t\t\t\t\tfieldHints: mergeAssistantHintValues(\n\t\t\t\t\t\t\t\tdirectiveHintsBase.fieldHints || [],\n\t\t\t\t\t\t\t\tadditionalFieldHints\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t});\n\t\t\t\t\t\trequest.__assistantRuntime = {\n\t\t\t\t\t\t\tfastMode: alwaysAllowProbeEnabled ? false : fastModeEnabled,\n\t\t\t\t\t\t\tdeadlineMs: runDeadlineMs || undefined,\n\t\t\t\t\t\t\tmaxTimeMS: assistantMongoMaxTimeMs\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (isAssistantAppDataIntentHeuristicDirective(value)) {\n\t\t\t\t\t\t\trequest.__assistantRetryState = {\n\t\t\t\t\t\t\t\t...(request.__assistantRetryState || {}),\n\t\t\t\t\t\t\t\tdisableCrossCollectionRetry: true,\n\t\t\t\t\t\t\t\trootCollection: normalizeOptionalString(request.collection) || undefined\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn request;\n\t\t\t\t\t};\n\t\t\t\t\tif (directiveAcknowledgementText) {\n\t\t\t\t\t\tprogressTracker.push(directiveAcknowledgementText);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tprogressTracker.push(deterministicDataIntentDirective ? 'Pulling the requested data' : 'Grabbing Data');\n\t\t\t\t\t}\n\t\t\t\t\tdirectiveProgressMessages.slice(0, 2).forEach(messageText => progressTracker.push(messageText));\n\t\t\t\t\tlet executionDirective = effectiveDirective;\n\t\t\t\t\tlet probeFieldHints: string[] = [];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!alwaysAllowProbeEnabled && !hasRunBudget('Grabbing Data', AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS)) {\n\t\t\t\t\t\t\tassistantContent = buildAssistantRunBudgetExceededMessage();\n\t\t\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\tskippedReason: 'run_budget_exhausted_before_probe',\n\t\t\t\t\t\t\t\terror: 'run_budget_exhausted'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\t\t\terror: 'run_budget_exhausted'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst aggregateProbeDisabled = executionDirective.type === 'aggregate'\n\t\t\t\t\t\t\t\t&& !alwaysAllowProbeEnabled\n\t\t\t\t\t\t\t\t&& !isAssistantAppDataIntentHeuristicDirective(executionDirective);\n\t\t\t\t\t\t\tconst probeEnabled = AI_ASSISTANT_TOOL_MAX_STEPS > 1 && !aggregateProbeDisabled;\n\t\t\t\t\t\t\tconst probeBudgetAllowed = alwaysAllowProbeEnabled\n\t\t\t\t\t\t\t\t|| hasRunBudget('Grabbing Data: probe', AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS);\n\t\t\t\t\t\t\tif (probeEnabled && probeBudgetAllowed) {\n\t\t\t\t\t\t\t\tconst probeDirective = buildAssistantProbeDirective(executionDirective);\n\t\t\t\t\t\t\t\tif (probeDirective?.payload) {\n\t\t\t\t\t\t\t\t\tconst probeRequest = buildToolRequestForDirective(probeDirective);\n\t\t\t\t\t\t\t\t\trecordStep('Grabbing Data: probe start', {\n\t\t\t\t\t\t\t\t\t\ttype: probeDirective.type,\n\t\t\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(probeRequest?.collection) || undefined,\n\t\t\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(probeRequest?.permissionView) || undefined\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\t\tattempted: true\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tconst probeStart = Date.now();\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tconst probeResponse = probeDirective.type === 'aggregate'\n\t\t\t\t\t\t\t\t\t\t\t? await executeAiAssistantReportBuilderAggregate(probeRequest as AiAssistantMongoAggregateInput, context)\n\t\t\t\t\t\t\t\t\t\t\t: await executeAiAssistantReportBuilderRead(probeRequest as AiAssistantMongoReadInput, context);\n\t\t\t\t\t\t\t\t\t\tconst probeDurationMs = Date.now() - probeStart;\n\t\t\t\t\t\t\t\t\t\ttimingBreakdown.toolMs += probeDurationMs;\n\t\t\t\t\t\t\t\t\t\tconst probeRowCount = Array.isArray(probeResponse?.documents)\n\t\t\t\t\t\t\t\t\t\t\t? probeResponse.documents.length\n\t\t\t\t\t\t\t\t\t\t\t: 0;\n\t\t\t\t\t\t\t\t\t\tconst probeRewrite = rewriteAssistantDirectiveWithProbe(executionDirective, probeResponse);\n\t\t\t\t\t\t\t\t\t\texecutionDirective = probeRewrite.directive;\n\t\t\t\t\t\t\t\t\t\tprobeFieldHints = probeRewrite.fieldHints;\n\t\t\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\t\t\t\t\tsucceeded: true,\n\t\t\t\t\t\t\t\t\t\t\trowCount: probeRowCount,\n\t\t\t\t\t\t\t\t\t\t\tdurationMs: probeDurationMs,\n\t\t\t\t\t\t\t\t\t\t\trewritesApplied: probeRewrite.notes.length > 0 || probeFieldHints.length > 0,\n\t\t\t\t\t\t\t\t\t\t\trewriteNotes: probeRewrite.notes.length ? probeRewrite.notes : undefined,\n\t\t\t\t\t\t\t\t\t\t\tfieldHintsAdded: probeFieldHints.length\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\trecordStep('Grabbing Data: probe complete', {\n\t\t\t\t\t\t\t\t\t\t\trowCount: probeRowCount,\n\t\t\t\t\t\t\t\t\t\t\tcollection: normalizeOptionalString(probeResponse?.debug?.collectionResolved || probeResponse?.debug?.collection) || undefined\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tif (probeRewrite.notes.length || probeFieldHints.length) {\n\t\t\t\t\t\t\t\t\t\t\trecordStep('Grabbing Data: probe rewrite', {\n\t\t\t\t\t\t\t\t\t\t\t\tnotes: probeRewrite.notes.length ? probeRewrite.notes : undefined,\n\t\t\t\t\t\t\t\t\t\t\t\tfieldHints: probeFieldHints.length ? probeFieldHints.slice(0, 6) : undefined\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (probeError) {\n\t\t\t\t\t\t\t\t\t\tconst probeDurationMs = Date.now() - probeStart;\n\t\t\t\t\t\t\t\t\t\tconst probeErrorMessage = normalizeOptionalString((probeError as any)?.message) || 'Unknown error';\n\t\t\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\t\t\t\t\tfailed: true,\n\t\t\t\t\t\t\t\t\t\t\tdurationMs: probeDurationMs,\n\t\t\t\t\t\t\t\t\t\t\terror: probeErrorMessage\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\trecordStep('Grabbing Data: probe failed', {\n\t\t\t\t\t\t\t\t\t\t\tmessage: probeErrorMessage\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\t\t\tskippedReason: 'probe_directive_missing_payload'\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (probeEnabled) {\n\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\t\tskippedReason: 'run_budget_exhausted'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (aggregateProbeDisabled) {\n\t\t\t\t\t\t\t\ttoolTelemetry.probe = {\n\t\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\t\tskippedReason: 'aggregate_probe_disabled'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!alwaysAllowProbeEnabled && !hasRunBudget('Grabbing Data: final', AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS)) {\n\t\t\t\t\t\t\t\tassistantContent = buildAssistantRunBudgetExceededMessage();\n\t\t\t\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\t\t\t\tattempted: false,\n\t\t\t\t\t\t\t\t\tskippedReason: 'run_budget_exhausted_before_final',\n\t\t\t\t\t\t\t\t\terror: 'run_budget_exhausted'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\t\t\t\terror: 'run_budget_exhausted'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst toolRequest = buildToolRequestForDirective(executionDirective, probeFieldHints);\n\t\t\t\t\t\t\t\tconst requestedToolCollection = normalizeOptionalString(toolRequest?.collection);\n\t\t\t\t\t\t\t\trecordStep('Grabbing Data: start', {\n\t\t\t\t\t\t\t\t\ttype: executionDirective.type,\n\t\t\t\t\t\t\t\t\tcollection: requestedToolCollection || undefined,\n\t\t\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(toolRequest?.permissionView) || undefined\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\t\t\ttoolType: executionDirective.type,\n\t\t\t\t\t\t\t\t\tcollection: requestedToolCollection || undefined\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst toolStart = Date.now();\n\t\t\t\t\t\t\t\tconst toolResponse = executionDirective.type === 'aggregate'\n\t\t\t\t\t\t\t\t\t? await executeAiAssistantReportBuilderAggregate(toolRequest as AiAssistantMongoAggregateInput, context)\n\t\t\t\t\t\t\t\t\t: await executeAiAssistantReportBuilderRead(toolRequest as AiAssistantMongoReadInput, context);\n\t\t\t\t\t\t\t\tconst toolDurationMs = Date.now() - toolStart;\n\t\t\t\t\t\t\t\ttimingBreakdown.toolMs += toolDurationMs;\n\t\t\t\t\t\t\t\ttoolResponseDebug = toolResponse?.debug && typeof toolResponse.debug === 'object'\n\t\t\t\t\t\t\t\t\t? toolResponse.debug\n\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t\tconst toolPayload = buildAssistantToolResultPayload(executionDirective, toolResponse, message);\n\t\t\t\t\t\t\t\ttoolResult = toolPayload.result;\n\t\t\t\t\t\t\t\tconst resolvedToolCollection = normalizeOptionalString(\n\t\t\t\t\t\t\t\t\ttoolPayload.result.output.collection\n\t\t\t\t\t\t\t\t\t|| toolResponse?.debug?.collectionResolved\n\t\t\t\t\t\t\t\t\t|| toolResponse?.debug?.collection\n\t\t\t\t\t\t\t\t\t|| requestedToolCollection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\t\t\tsucceeded: true,\n\t\t\t\t\t\t\t\t\trowCount: toolPayload.result.output.rowCount,\n\t\t\t\t\t\t\t\t\ttotal: toolPayload.result.output.total,\n\t\t\t\t\t\t\t\t\tdurationMs: toolDurationMs,\n\t\t\t\t\t\t\t\t\ttoolType: executionDirective.type,\n\t\t\t\t\t\t\t\t\tcollection: resolvedToolCollection || undefined\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trecordStep('Grabbing Data: complete', {\n\t\t\t\t\t\t\t\t\trowCount: toolPayload.result.output.rowCount,\n\t\t\t\t\t\t\t\t\ttotal: toolPayload.result.output.total,\n\t\t\t\t\t\t\t\t\tcolumns: toolPayload.result.output.columns\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\t\t\t\t\tconst zeroRowResult = toolPayload.result.output.rowCount <= 0;\n\t\t\t\t\t\t\t\ttoolTelemetry.outcome = zeroRowResult ? { zeroRows: true } : undefined;\n\t\t\t\t\t\t\t\tconst followupCodexEnabled = resolveAssistantFollowupCodexEnabled(input.config);\n\t\t\t\t\t\t\t\tconst skipFollowupCodex = !followupCodexEnabled\n\t\t\t\t\t\t\t\t\t|| usedDeterministicHeuristicFastPath\n\t\t\t\t\t\t\t\t\t|| isAssistantDeterministicHeuristicDirective(executionDirective)\n\t\t\t\t\t\t\t\t\t|| zeroRowResult;\n\t\t\t\t\t\t\t\tif (skipFollowupCodex) {\n\t\t\t\t\t\t\t\t\trecordStep('Drafting response: deterministic summary', {\n\t\t\t\t\t\t\t\t\t\treason: zeroRowResult\n\t\t\t\t\t\t\t\t\t\t\t? 'zero_rows'\n\t\t\t\t\t\t\t\t\t\t\t: (!followupCodexEnabled\n\t\t\t\t\t\t\t\t\t\t\t\t? 'followup_disabled'\n\t\t\t\t\t\t\t\t\t\t\t\t: (normalizeOptionalString(executionDirective.rawLine) || 'deterministic_heuristic'))\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tassistantContent = buildAssistantToolFallbackResponse(toolPayload.result);\n\t\t\t\t\t\t\t\t\tassistantContent = applyAssistantDisplayTableToResponse(assistantContent, toolPayload.result.output.display);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\trecordStep('Drafting response');\n\t\t\t\t\t\t\t\t\tconst followupPrompt = buildAssistantCodexToolFollowupPrompt(\n\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\t\t\t\t\ttoolPayload.prompt,\n\t\t\t\t\t\t\t\t\t\tassistantSystemPrompt\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tif (hasRunBudget('Drafting response: followup')) {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst followupStart = Date.now();\n\t\t\t\t\t\t\t\t\t\t\tconst followupText = await runCodexInWorkerThread(\n\t\t\t\t\t\t\t\t\t\t\t\tfollowupPrompt,\n\t\t\t\t\t\t\t\t\t\t\t\tapplyCodexStageBudget(runOptions),\n\t\t\t\t\t\t\t\t\t\t\t\tcodexConfig,\n\t\t\t\t\t\t\t\t\t\t\t\tstreamProgress\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\taccumulateCodexUsage(followupPrompt, followupText);\n\t\t\t\t\t\t\t\t\t\t\ttimingBreakdown.followupMs = Date.now() - followupStart;\n\t\t\t\t\t\t\t\t\t\t\tassistantContent = sanitizeAssistantResponse(followupText);\n\t\t\t\t\t\t\t\t\t\t\tassistantContent = applyAssistantDisplayTableToResponse(assistantContent, toolPayload.result.output.display);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t\t\t\t\tassistantContent = buildAssistantToolFallbackResponse(toolPayload.result);\n\t\t\t\t\t\t\t\t\t\t\tassistantContent = applyAssistantDisplayTableToResponse(assistantContent, toolPayload.result.output.display);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tassistantContent = buildAssistantToolFallbackResponse(toolPayload.result);\n\t\t\t\t\t\t\t\t\t\tassistantContent = applyAssistantDisplayTableToResponse(assistantContent, toolPayload.result.output.display);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\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\tcatch (error) {\n\t\t\t\t\t\tassistantContent = buildAssistantToolErrorMessage(error);\n\t\t\t\t\t\ttoolError = error;\n\t\t\t\t\t\tconst errorMessage = normalizeOptionalString((error as any)?.message) || 'Unknown error';\n\t\t\t\t\t\tconst existingFinal = toolTelemetry.final && typeof toolTelemetry.final === 'object'\n\t\t\t\t\t\t\t? toolTelemetry.final\n\t\t\t\t\t\t\t: { attempted: false };\n\t\t\t\t\t\ttoolTelemetry.final = {\n\t\t\t\t\t\t\t...existingFinal,\n\t\t\t\t\t\t\tattempted: existingFinal.attempted === true,\n\t\t\t\t\t\t\tfailed: true,\n\t\t\t\t\t\t\terror: errorMessage\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\t\t...(toolTelemetry.outcome || {}),\n\t\t\t\t\t\t\terror: errorMessage\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\telse {\n\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\trecordStep('Drafting response');\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tassistantContent = buildAssistantCodexErrorMessage(error);\n\t\t\trecordStep('Error', { message: normalizeOptionalString(error?.message) || 'Unknown error' });\n\t\t}\n\t\tfinally {\n\t\t\tprogressTracker.stop();\n\t\t}\n\n\t\t\tconst runBudgetExceeded = runDeadlineMs ? Date.now() > runDeadlineMs : false;\n\t\t\tif (!assistantContent) {\n\t\t\t\tassistantContent = runBudgetExceeded\n\t\t\t\t\t? buildAssistantRunBudgetExceededMessage()\n\t\t\t\t\t: buildAssistantCodexErrorMessage(null);\n\t\t\t}\n\t\t\t\tassistantContent = applyAssistantVerificationNotes(assistantContent, toolResult);\n\t\t\t\tassistantContent = applyAssistantDatedReportWindow(assistantContent, toolResult);\n\t\t\t\tassistantContent = applyAssistantLotNumberResponseGuard(assistantContent, message, toolResult);\n\t\t\t\tassistantContent = normalizeAssistantCurrencyText(assistantContent);\n\t\t\t\tif (toolError && !normalizeOptionalString(toolTelemetry?.outcome?.error)) {\n\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\t...(toolTelemetry.outcome || {}),\n\t\t\t\t\t\terror: normalizeOptionalString((toolError as any)?.message) || 'tool_error'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (toolResult?.output?.rowCount === 0 && !toolTelemetry?.outcome?.zeroRows) {\n\t\t\t\t\ttoolTelemetry.outcome = {\n\t\t\t\t\t\t...(toolTelemetry.outcome || {}),\n\t\t\t\t\t\tzeroRows: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst includeToolExecutionTelemetry = dataQuestion\n\t\t\t\t\t|| toolTelemetry.permissionDenied === true\n\t\t\t\t\t|| !!toolTelemetry.probe\n\t\t\t\t\t|| !!toolTelemetry.final\n\t\t\t\t\t|| !!toolTelemetry.outcome;\n\t\t\t\tconst toolExecutionTelemetry = includeToolExecutionTelemetry\n\t\t\t\t\t? buildAssistantToolExecutionTelemetrySnapshot(toolTelemetry)\n\t\t\t\t\t: null;\n\n\t\t\tif (aiWorkerDebug) {\n\t\t\t\tconst finishedAt = Date.now();\n\t\t\t\tconsole.log(new Date(), '[AI Worker Debug] codex run complete', {\n\t\t\t\trequestId: requestId || null,\n\t\t\t\tid_user: context?.id_user || null,\n\t\t\t\tid_conversation: conversation?._id || null,\n\t\t\t\tid_message: assistantMessageId ? String(assistantMessageId) : null,\n\t\t\t\tcontentChars: assistantContent.length,\n\t\t\t\ttotalMs: finishedAt - runStart,\n\t\t\t\t\ttimingBreakdown,\n\t\t\t\t\trunBudgetMs: runDeadlineMs ? runBudgetMs : null,\n\t\t\t\t\trunBudgetRemainingMs: remainingRunBudgetMs(),\n\t\t\t\t\ttoolExecution: toolExecutionTelemetry || undefined,\n\t\t\t\t\tisWorkerInstance: process.env.IS_WORKER_INSTANCE || null,\n\t\t\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null\n\t\t\t\t});\n\t\t}\n\n\t\tconst finalNow = new Date();\n\t\ttry {\n\t\t\tif (canViewDebug) {\n\t\t\t\tconst finishedAt = Date.now();\n\t\t\t\tconst codexMs = timingBreakdown.directiveMs\n\t\t\t\t\t+ timingBreakdown.plannerMs\n\t\t\t\t\t+ timingBreakdown.initialResponseMs\n\t\t\t\t\t+ timingBreakdown.forcedDirectiveMs\n\t\t\t\t\t+ timingBreakdown.followupMs;\n\t\t\t\tconst draftingMs = timingBreakdown.followupMs || timingBreakdown.initialResponseMs;\n\t\t\t\tassistantDebug = buildAssistantDebugPayload({\n\t\t\t\t\t\trequestType: requestClassification.type,\n\t\t\t\t\t\trequestTypeSource: requestClassification.source,\n\t\t\t\t\t\tplannerIntentType: requestClassification.plannerIntentType,\n\t\t\t\t\t\tdataQuestion,\n\t\t\t\t\t\treportStyleIntent: enforceDatedDirective\n\t\t\t\t\t\t\t? 'dated'\n\t\t\t\t\t\t\t: (enforceGroupedDirective ? 'grouped' : null),\n\t\t\t\t\t\trequestedTimeGrain,\n\t\t\t\t\tdatedDirectiveRetryUsed,\n\t\t\t\t\tdatedDirectiveResolved,\n\t\t\t\t\tdirective: lastDirective,\n\t\t\t\t\t\tdirectiveSource,\n\t\t\t\t\t\ttoolResult,\n\t\t\t\t\t\ttoolResponseDebug,\n\t\t\t\t\t\ttoolError,\n\t\t\t\t\t\ttoolExecution: toolExecutionTelemetry || undefined,\n\t\t\t\t\t\tcollectionOverride,\n\t\t\t\t\t\ttrace: {\n\t\t\t\t\t\tsteps,\n\t\t\t\t\t\tplanning: {\n\t\t\t\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\t\t\t\t\ttermHints: termHints.length ? termHints : undefined,\n\t\t\t\t\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\t\t\t\t\tfieldHints: fieldHints.length ? fieldHints : undefined,\n\t\t\t\t\t\t\t\tschemaHints: schemaHints.length ? schemaHints : undefined,\n\t\t\t\t\t\t\t\tmethodHints: methodHints.length ? methodHints : undefined,\n\t\t\t\t\t\t\t\tpublicationHints: publicationHints.length ? publicationHints : undefined,\n\t\t\t\t\t\t\t\tcollectionTokenization: collectionTokenization || undefined,\n\t\t\t\t\t\t\tcollectionRanking: collectionRanking || undefined,\n\t\t\t\t\t\t\tcollectionSelection: collectionSelection || undefined,\n\t\t\t\t\t\t\tcollectionOverride: collectionOverride || undefined,\n\t\t\t\t\t\t\tplanner: plannerUsed ? {\n\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\tparsed: !!plannerOutput,\n\t\t\t\t\t\t\t\toutput: plannerOutput || undefined,\n\t\t\t\t\t\t\t\traw: !plannerOutput && plannerRaw\n\t\t\t\t\t\t\t\t\t? plannerRaw.slice(0, AI_ASSISTANT_PLANNER_DEBUG_MAX_CHARS)\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t} : (plannerEnabled ? {\n\t\t\t\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\t\t\t\treason: plannerSkipReason || 'skipped_by_policy'\n\t\t\t\t\t\t\t\t} : undefined)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\ttimings: {\n\t\t\t\t\t\t\tstartedAt: new Date(runStart).toISOString(),\n\t\t\t\t\t\t\tfinishedAt: new Date(finishedAt).toISOString(),\n\t\t\t\t\t\t\ttotalMs: finishedAt - runStart,\n\t\t\t\t\t\t\tcodexMs,\n\t\t\t\t\t\t\tdraftingMs,\n\t\t\t\t\t\t\ttoolMs: timingBreakdown.toolMs,\n\t\t\t\t\t\t\tplannerMs: timingBreakdown.plannerMs,\n\t\t\t\t\t\t\tdirectiveMs: timingBreakdown.directiveMs,\n\t\t\t\t\t\t\tinitialResponseMs: timingBreakdown.initialResponseMs,\n\t\t\t\t\t\t\tforcedDirectiveMs: timingBreakdown.forcedDirectiveMs,\n\t\t\t\t\t\t\tfollowupMs: timingBreakdown.followupMs\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\tconst answerQualityEvidence = buildAssistantAnswerQualityFromExecution({\n\t\t\t\trequestMessage: message,\n\t\t\t\tdataQuestion,\n\t\t\t\treportStyleIntent: enforceDatedDirective\n\t\t\t\t\t? 'dated'\n\t\t\t\t\t: (enforceGroupedDirective ? 'grouped' : null),\n\t\t\t\trequestedTimeGrain,\n\t\t\t\tdatedDirectiveResolved,\n\t\t\t\tenforceDatedDirective,\n\t\t\t\tdirective: lastDirective,\n\t\t\t\tdirectiveSource,\n\t\t\t\ttoolResult,\n\t\t\t\ttoolExecution: toolTelemetry,\n\t\t\t\ttoolError,\n\t\t\t\tnow: finalNow\n\t\t\t});\n\t\t\tconst finalMetadata = {\n\t\t\t\tmodel: codexModel,\n\t\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t\tpending: false,\n\t\t\t\t...(fastModeEnabled ? {\n\t\t\t\t\tfast_mode: true,\n\t\t\t\t\trun_budget_ms: runBudgetMs,\n\t\t\t\t\trun_budget_exhausted: runBudgetExceeded\n\t\t\t\t} : {}),\n\t\t\t\t\t...(changeHistoryFastPathBypassedReason ? {\n\t\t\t\t\t\tfast_path_change_history_bypassed_reason: changeHistoryFastPathBypassedReason\n\t\t\t\t\t} : {}),\n\t\t\t\t\t...(toolResult ? { tool_result: toolResult } : {}),\n\t\t\t\t\t...(toolExecutionTelemetry ? { tool_execution: toolExecutionTelemetry } : {}),\n\t\t\t\t\tanswer_quality: answerQualityEvidence,\n\t\t\t\t\t...(assistantDebug ? { debug: assistantDebug } : {})\n\t\t\t\t};\n\t\t\tconst finalUsage = codexUsage.total_tokens > 0 ? {\n\t\t\t\tmodel: codexModel || 'unknown',\n\t\t\t\tinput_tokens: codexUsage.input_tokens,\n\t\t\t\toutput_tokens: codexUsage.output_tokens,\n\t\t\t\ttotal_tokens: codexUsage.total_tokens\n\t\t\t} : null;\n\t\t\tlet finalUsageLedgerEntry: OpenAIUsageRecordInput | null = null;\n\t\t\tif (finalUsage) {\n\t\t\t\tconst usageClientId = await resolveClientId(conversation, input.id_client, context?.id_user);\n\t\t\t\ttry {\n\t\t\t\t\tfinalUsageLedgerEntry = buildAssistantAIRunUsageLedgerEntry({\n\t\t\t\t\t\tidClient: usageClientId || '',\n\t\t\t\t\t\tmodel: finalUsage.model,\n\t\t\t\t\t\tinputTokens: finalUsage.input_tokens,\n\t\t\t\t\t\toutputTokens: finalUsage.output_tokens,\n\t\t\t\t\t\ttotalTokens: finalUsage.total_tokens,\n\t\t\t\t\t\tcategory: 'ai-terminal-codex',\n\t\t\t\t\t\tconversationId: conversation._id,\n\t\t\t\t\t\trequestId: requestId || undefined,\n\t\t\t\t\t\tusagePhase: 'codex_query',\n\t\t\t\t\t\tidApp: String((conversation as any)?.id_app || ''),\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tconversationId: conversation._id,\n\t\t\t\t\t\t\trequestId: requestId || '',\n\t\t\t\t\t\t\tplannerUsed,\n\t\t\t\t\t\t\ttoolMode: toolTelemetry.mode\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tawait recordOpenAIUsage(finalUsageLedgerEntry);\n\t\t\t\t}\n\t\t\t\tcatch (usageError) {\n\t\t\t\t\tconsole.error(new Date(), 'Failed to record AI usage', usageError);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst finalAssistantDoc: Partial<AiTerminalMessageModel> = {\n\t\t\t\t...assistantDoc,\n\t\t\t\t_id: assistantMessageId,\n\t\t\t\tcontent: assistantContent,\n\t\t\t\tmetadata: finalMetadata,\n\t\t\t\t...(finalUsage ? { usage: finalUsage } : {}),\n\t\t\t\tupdatedAt: finalNow\n\t\t\t};\n\n\t\t\t\tif (assistantMessageId) {\n\t\t\t\t\tconst setPayload: Record<string, any> = {\n\t\t\t\t\t\tcontent: assistantContent,\n\t\t\t\t\t\tmetadata: finalMetadata,\n\t\t\t\t\t\tupdatedAt: finalNow\n\t\t\t\t\t};\n\t\t\t\t\tif (finalUsage) {\n\t\t\t\t\t\tsetPayload.usage = finalUsage;\n\t\t\t\t\t}\n\t\t\t\t\tawait updateAssistantMessageWithFallback(assistantMessageId, setPayload);\n\t\t\t\t}\n\t\t\tawait touchConversation(conversation._id, finalNow, assistantMessageId ? String(assistantMessageId) : undefined);\n\t\t\tawait recordAssistantAnswerAIRun({\n\t\t\t\trunId: buildAssistantAIRunId('codex_query', [conversation._id, assistantMessageId || requestId]),\n\t\t\t\trequestId: requestId || undefined,\n\t\t\t\tmessageId: assistantMessageId ? String(assistantMessageId) : undefined,\n\t\t\t\tconversation,\n\t\t\t\tuserMessage: {\n\t\t\t\t\t...userDoc,\n\t\t\t\t\t_id: userMessageId ? String(userMessageId) : undefined\n\t\t\t\t},\n\t\t\t\tassistantMessage: finalAssistantDoc as Record<string, any>,\n\t\t\t\tusageLedgerEntry: finalUsageLedgerEntry || undefined,\n\t\t\t\tcorrectnessChecks: toolTelemetry?.outcome?.error ? [{\n\t\t\t\t\tassertion: 'assistant_tool_execution',\n\t\t\t\t\tstatus: 'fail',\n\t\t\t\t\tobserved: toolTelemetry.outcome.error,\n\t\t\t\t\tmessage: 'Assistant tool execution reported an error.'\n\t\t\t\t}] : [],\n\t\t\t\tanswerQuality: answerQualityEvidence,\n\t\t\t\tnow: finalNow\n\t\t\t});\n\n\t\t\tif (input.delete_files_after_run !== false) {\n\t\t\t\tawait cleanupAttachments(attachmentData.attachments);\n\t\t\t}\n\n\t\t\treturn finalAssistantDoc;\n\t\t}\n\t\tcatch (finalizeError) {\n\t\t\tconst failedAt = new Date();\n\t\t\tconst fallbackContent = assistantContent || buildAssistantCodexErrorMessage(finalizeError);\n\t\t\t\tconst failureMetadata: Record<string, any> = {\n\t\t\t\t\tmodel: codexModel,\n\t\t\t\t\t...(codexFallbackModels.length ? { model_fallbacks: codexFallbackModels } : {}),\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t\t\tpending: false,\n\t\t\t\t\tfailed: true,\n\t\t\t\t\t...(toolExecutionTelemetry ? { tool_execution: toolExecutionTelemetry } : {}),\n\t\t\t\t\terror_message: normalizeOptionalString((finalizeError as any)?.message) || 'Unknown error'\n\t\t\t\t};\n\t\t\ttry {\n\t\t\t\tif (assistantMessageId) {\n\t\t\t\t\tawait updateAssistantMessageWithFallback(assistantMessageId, {\n\t\t\t\t\t\tcontent: fallbackContent,\n\t\t\t\t\t\tmetadata: failureMetadata,\n\t\t\t\t\t\tupdatedAt: failedAt\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tawait touchConversation(conversation._id, failedAt, assistantMessageId ? String(assistantMessageId) : undefined);\n\t\t\t}\n\t\t\tcatch (persistError) {\n\t\t\t\tconsole.error(new Date(), 'AI assistant finalize fallback update failed', persistError);\n\t\t\t}\n\t\t\tif (input.delete_files_after_run !== false) {\n\t\t\t\ttry {\n\t\t\t\t\tawait cleanupAttachments(attachmentData.attachments);\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tconsole.error(new Date(), 'AI assistant run finalize failed:', finalizeError);\n\t\t\treturn {\n\t\t\t\t...assistantDoc,\n\t\t\t\t_id: assistantMessageId,\n\t\t\t\tcontent: fallbackContent,\n\t\t\t\tmetadata: failureMetadata,\n\t\t\t\tupdatedAt: failedAt\n\t\t\t};\n\t\t}\n\t});\n\n\treturn {\n\t\tconversation\n\t};\n}\n\nasync function executeAiAssistantCodexRunStatus(payload: AiCodexRunStatusInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiCodexRunStatusInput);\n\tconst idUser = normalizeOptionalString(context?.id_user);\n\tif (!idUser) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst requestedConversationId = normalizeOptionalString(input.id_conversation);\n\tconst requestedMessageId = normalizeOptionalString(input.id_message);\n\tconst requestedRequestId = normalizeOptionalString(input.request_id);\n\tif (!requestedConversationId && !requestedMessageId && !requestedRequestId) {\n\t\tthrow new Error('Conversation id, message id, or request id is required.');\n\t}\n\n\tlet conversation: AiTerminalConversationModel | null = null;\n\tlet conversationId = requestedConversationId;\n\tif (conversationId) {\n\t\tconversation = await AiTerminalConversations.findById(conversationId);\n\t\tif (!conversation) {\n\t\t\tthrow new Error('Conversation not found.');\n\t\t}\n\t\tconst ownerId = normalizeOptionalString(conversation.id_user);\n\t\tif (ownerId && ownerId !== idUser) {\n\t\t\tthrow new Error('Conversation access denied.');\n\t\t}\n\t}\n\n\tlet assistantMessage: AiTerminalMessageModel | null = null;\n\tif (requestedMessageId) {\n\t\tassistantMessage = await AiTerminalMessages.findOne({ _id: requestedMessageId }) as AiTerminalMessageModel | null;\n\t\tif (assistantMessage) {\n\t\t\tconst messageConversationId = normalizeOptionalString(assistantMessage.id_conversation);\n\t\t\tif (!conversationId) {\n\t\t\t\tconversationId = messageConversationId;\n\t\t\t}\n\t\t\tif (conversationId && messageConversationId && messageConversationId !== conversationId) {\n\t\t\t\tthrow new Error('Message does not belong to the selected conversation.');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!conversation && conversationId) {\n\t\tconversation = await AiTerminalConversations.findById(conversationId);\n\t\tif (!conversation) {\n\t\t\tthrow new Error('Conversation not found.');\n\t\t}\n\t\tconst ownerId = normalizeOptionalString(conversation.id_user);\n\t\tif (ownerId && ownerId !== idUser) {\n\t\t\tthrow new Error('Conversation access denied.');\n\t\t}\n\t}\n\n\tif (!assistantMessage && conversationId && requestedRequestId) {\n\t\tassistantMessage = await AiTerminalMessages.findOne(\n\t\t\t{\n\t\t\t\tid_conversation: conversationId,\n\t\t\t\trole: 'assistant',\n\t\t\t\t'metadata.request_id': requestedRequestId\n\t\t\t},\n\t\t\t{ sort: { createdAt: -1 } }\n\t\t) as AiTerminalMessageModel | null;\n\t}\n\n\tif (!assistantMessage && conversationId && !requestedRequestId) {\n\t\tassistantMessage = await AiTerminalMessages.findOne(\n\t\t\t{ id_conversation: conversationId, role: 'assistant' },\n\t\t\t{ sort: { createdAt: -1 } }\n\t\t) as AiTerminalMessageModel | null;\n\t}\n\n\tconst pending = assistantMessage?.metadata?.pending === true;\n\tconst messageRequestId = normalizeOptionalString(assistantMessage?.metadata?.request_id);\n\treturn {\n\t\tid_conversation: conversationId || normalizeOptionalString(assistantMessage?.id_conversation),\n\t\tid_message: normalizeOptionalString(assistantMessage?._id),\n\t\trequest_id: requestedRequestId || messageRequestId,\n\t\tpending,\n\t\tdone: !!assistantMessage && !pending,\n\t\tmessage: assistantMessage || null\n\t};\n}\n\nasync function executeAiAssistantReportBuilderRead(payload: AiAssistantMongoReadInput, context: any): Promise<any> {\n\treturn await executeAiAssistantMongoRead(payload, context);\n}\n\nasync function executeAiAssistantReportBuilderAggregate(payload: AiAssistantMongoAggregateInput, context: any): Promise<any> {\n\treturn await executeAiAssistantMongoAggregate(payload, context);\n}\n\nasync function executeAiAssistantReportIssue(payload: AiAssistantIssueReportInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiAssistantIssueReportInput);\n\tconst reason = normalizeOptionalString(input.reason);\n\tconst expected = normalizeOptionalString(input.expected);\n\tif (reason.length < 3) {\n\t\tthrow new Error('Issue reason is required.');\n\t}\n\tconst requestedConversationId = normalizeOptionalString(input.id_conversation);\n\tconst requestedMessageId = normalizeOptionalString(input.id_message);\n\tconst requestedRequestId = normalizeOptionalString(input.request_id);\n\tlet conversationId = requestedConversationId;\n\tlet assistantMessage: AiTerminalMessageModel | null = null;\n\n\tif (requestedMessageId) {\n\t\tassistantMessage = await AiTerminalMessages.findOne({ _id: requestedMessageId }) as AiTerminalMessageModel | null;\n\t\tif (assistantMessage) {\n\t\t\tconst messageConversationId = normalizeOptionalString(assistantMessage.id_conversation);\n\t\t\tif (!conversationId) {\n\t\t\t\tconversationId = messageConversationId;\n\t\t\t}\n\t\t\telse if (messageConversationId && messageConversationId !== conversationId) {\n\t\t\t\tthrow new Error('Message does not belong to the selected conversation.');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!conversationId) {\n\t\tthrow new Error('Conversation id is required.');\n\t}\n\tconst conversation = await AiTerminalConversations.findOne({ _id: conversationId }) as AiTerminalConversationModel | null;\n\tif (!conversation) {\n\t\tthrow new Error('Conversation not found.');\n\t}\n\n\tif (!assistantMessage && requestedRequestId) {\n\t\tassistantMessage = await AiTerminalMessages.findOne(\n\t\t\t{\n\t\t\t\tid_conversation: conversationId,\n\t\t\t\trole: 'assistant',\n\t\t\t\t'metadata.request_id': requestedRequestId\n\t\t\t},\n\t\t\t{ sort: { createdAt: -1 } }\n\t\t) as AiTerminalMessageModel | null;\n\t}\n\n\tif (!assistantMessage) {\n\t\tassistantMessage = await AiTerminalMessages.findOne(\n\t\t\t{ id_conversation: conversationId, role: 'assistant' },\n\t\t\t{ sort: { createdAt: -1 } }\n\t\t) as AiTerminalMessageModel | null;\n\t}\n\n\tlet userPrompt = '';\n\tif (assistantMessage) {\n\t\tconst createdAt = assistantMessage?.createdAt ? new Date(assistantMessage.createdAt) : null;\n\t\tconst userQuery: Record<string, any> = {\n\t\t\tid_conversation: conversationId,\n\t\t\trole: 'user'\n\t\t};\n\t\tif (createdAt && Number.isFinite(createdAt.getTime())) {\n\t\t\tuserQuery.createdAt = { $lte: createdAt };\n\t\t}\n\t\tconst userMessage = await AiTerminalMessages.findOne(\n\t\t\tuserQuery,\n\t\t\t{ sort: { createdAt: -1 } }\n\t\t) as AiTerminalMessageModel | null;\n\t\tif (userMessage?.content) {\n\t\t\tuserPrompt = normalizeOptionalString(userMessage.content);\n\t\t}\n\t}\n\n\tconst assistantContent = normalizeOptionalString(assistantMessage?.content);\n\tconst toolResult = assistantMessage?.metadata?.tool_result as any;\n\tconst reportMetadata = input?.metadata && typeof input.metadata === 'object' && !Array.isArray(input.metadata)\n\t\t? { ...input.metadata }\n\t\t: {};\n\tconst category = normalizeOptionalString(input.category);\n\tconst severity = normalizeOptionalString(input.severity);\n\tif (category) {\n\t\treportMetadata.category = category;\n\t}\n\tif (severity) {\n\t\treportMetadata.severity = severity;\n\t}\n\tconst requestId = normalizeOptionalString(input.request_id)\n\t\t|| normalizeOptionalString(assistantMessage?.metadata?.request_id);\n\tconst idClient = normalizeOptionalString(input.id_client)\n\t\t|| normalizeOptionalString(conversation?.id_client)\n\t\t|| await resolveClientIdFromConfig(undefined, context?.id_user);\n\tconst idApp = normalizeOptionalString(input.id_app)\n\t\t|| normalizeOptionalString(conversation?.id_app);\n\tconst now = new Date();\n\tconst doc: Record<string, any> = {\n\t\tid_conversation: conversationId,\n\t\tstatus: 'open',\n\t\tsource: 'user_report',\n\t\treason,\n\t\t...(expected ? { expected_outcome: expected } : {}),\n\t\t...(userPrompt ? { user_prompt: userPrompt } : {}),\n\t\t...(assistantContent ? { assistant_content: assistantContent } : {}),\n\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t...(toolResult?.type ? { tool_type: normalizeOptionalString(toolResult.type) } : {}),\n\t\t...(toolResult?.output?.collection || toolResult?.input?.collection\n\t\t\t? { tool_collection: normalizeOptionalString(toolResult?.output?.collection || toolResult?.input?.collection) }\n\t\t\t: {}),\n\t\t...(assistantMessage?._id || requestedMessageId ? { id_message: normalizeOptionalString(assistantMessage?._id || requestedMessageId) } : {}),\n\t\t...(idClient ? { id_client: idClient } : {}),\n\t\t...(idApp ? { id_app: idApp } : {}),\n\t\t...(normalizeOptionalString(context?.id_user) ? { id_user: normalizeOptionalString(context.id_user) } : {}),\n\t\t...(Object.keys(reportMetadata).length ? { metadata: reportMetadata } : {}),\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\tconst insertResult = await AiTerminalIssueReports.insertOne(doc as any);\n\treturn {\n\t\tid_issue_report: insertResult._id as string,\n\t\tid_conversation: conversationId,\n\t\tid_message: normalizeOptionalString(doc.id_message),\n\t\tstatus: 'open'\n\t};\n}\n\nexport async function executeAiAssistantMongoRead(payload: AiAssistantMongoReadInput, context: any): Promise<any> {\n\tconst input = restoreMongoSafeObject(payload || {}) as AiAssistantMongoReadInput;\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant report builder bridge: Collection is required.');\n\t}\n\tconst retryState = input.__assistantRetryState && typeof input.__assistantRetryState === 'object'\n\t\t? input.__assistantRetryState\n\t\t: {};\n\tconst triedCollections = buildAssistantTriedCollectionSet(retryState.triedCollections);\n\taddAssistantCollectionToTriedSet(triedCollections, rawCollection);\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst idApp = normalizeOptionalString(input.id_app);\n\tconst requestHints = normalizeAssistantDirectiveHints(input.__assistantHints);\n\tconst lockRequestedCollection = shouldLockAssistantRequestedCollectionForExecution(\n\t\trawCollection,\n\t\tinput.permissionView,\n\t\trequestHints\n\t);\n\tconst crossCollectionRetryEnabled = retryState.disableCrossCollectionRetry !== true && !lockRequestedCollection;\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection, idApp);\n\tlet collection = collectionResolution.name || rawCollection;\n\tconst preservePrimaryHintCollection = shouldPreserveAssistantPrimaryHintCollection(\n\t\trawCollection,\n\t\tcollection,\n\t\trequestHints\n\t);\n\tif (preservePrimaryHintCollection) {\n\t\tcollection = rawCollection;\n\t}\n\tconst bridgeCollection = await resolveAssistantReportBuilderBridgeCollection(collection, db, dbName, {\n\t\trequestHints,\n\t\tappId: idApp\n\t});\n\tif (bridgeCollection.fallbackFrom) {\n\t\tcollection = bridgeCollection.collection;\n\t}\n\taddAssistantCollectionToTriedSet(triedCollections, collection);\n\tconst retryRootCollection = normalizeOptionalString(retryState.rootCollection) || collection;\n\tconst schemaFields = getCollectionSchemaFieldNames(collection);\n\tconst effectivePermissionView = bridgeCollection.fallbackFrom\n\t\t? resolveDefaultAssistantPermissionView(collection)\n\t\t: input.permissionView;\n\tconst { user, isSuperAdmin, canViewDebug } = await ensureAssistantReadAccess(context, effectivePermissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\tconst runtimeControl = normalizeAssistantRuntimeControl(input.__assistantRuntime);\n\tconst runtimeFastMode = runtimeControl?.fastMode === undefined\n\t\t? resolveAssistantFastModeEnabled()\n\t\t: runtimeControl.fastMode === true;\n\tconst activeRuntimeControl = runtimeFastMode ? runtimeControl : null;\n\tconst hasReadRuntimeBudget = (stage: string, minimumMs = AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS): boolean => {\n\t\tif (!hasAssistantRuntimeBudget(activeRuntimeControl, minimumMs)) {\n\t\t\tfallbackMeta.runtimeBudget = {\n\t\t\t\tstage,\n\t\t\t\texhausted: true,\n\t\t\t\tdeadlineMs: activeRuntimeControl?.deadlineMs || undefined\n\t\t\t};\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst resolveReadMaxTimeMS = () => resolveAssistantEffectiveMongoMaxTimeMs({\n\t\truntime: activeRuntimeControl\n\t});\n\tif (bridgeCollection.fallbackFrom) {\n\t\tfallbackMeta.reportBuilderBridge = {\n\t\t\tfrom: bridgeCollection.fallbackFrom,\n\t\t\tto: collection,\n\t\t\tmode: bridgeCollection.mode,\n\t\t\tresolutionPath: bridgeCollection.resolutionPath,\n\t\t\tused: true\n\t\t};\n\t\tfallbackMeta.permissionFallback = {\n\t\t\tfrom: normalizeOptionalString(input.permissionView),\n\t\t\tto: effectivePermissionView,\n\t\t\tused: true\n\t\t};\n\t}\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tif (!isSuperAdmin && shouldScopeByClient) {\n\t\tconst strippedClient = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_client']);\n\t\tbaseQuery = strippedClient.value;\n\t\tfallbackMeta.scopeStripClient = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_client'],\n\t\t\tused: strippedClient.changed\n\t\t};\n\t}\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\tconst normalized = normalizeAssistantFindOptions(input.options);\n\tlet findOptions = { ...normalized.findOptions, readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\tconst buildFindOptions = () => {\n\t\tconst maxTimeMS = resolveReadMaxTimeMS();\n\t\treturn maxTimeMS ? { ...findOptions, maxTimeMS } : findOptions;\n\t};\n\tconst buildCountOptions = () => {\n\t\tconst maxTimeMS = resolveReadMaxTimeMS();\n\t\treturn maxTimeMS\n\t\t\t? { readPreference: AI_ASSISTANT_READ_PREFERENCE, maxTimeMS }\n\t\t\t: { readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\t};\n\tconst runFindWithRepair = async (\n\t\tquery: Record<string, any>,\n\t\tstage: string\n\t): Promise<{ documents: any[]; query: Record<string, any> }> => {\n\t\tif (!hasReadRuntimeBudget(stage)) {\n\t\t\treturn { documents: [], query };\n\t\t}\n\t\tconst stageFindOptions = buildFindOptions();\n\t\ttry {\n\t\t\tconst docs = await db.collection(collection).find(query, stageFindOptions).toArray();\n\t\t\treturn { documents: docs, query };\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (!isAssistantDateArithmeticArgumentError(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst repaired = repairAssistantDateArithmeticInQuery(query);\n\t\t\tif (!repaired.changed || containsForbiddenMongoOperators(repaired.query)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst docs = await db.collection(collection).find(repaired.query, stageFindOptions).toArray();\n\t\t\tfallbackMeta.dateArithmetic = {\n\t\t\t\tattempted: true,\n\t\t\t\tused: true,\n\t\t\t\tstage,\n\t\t\t\treason: 'normalized_date_operator_args'\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tdocuments: docs,\n\t\t\t\tquery: repaired.query\n\t\t\t};\n\t\t}\n\t};\n\tconst initialRead = await runFindWithRepair(scopedQuery, 'initial');\n\tlet documents = initialRead.documents;\n\tlet executedQuery = initialRead.query;\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length) {\n\t\tconst dateFallback = resolveQueryDateFieldFallback(scopedQuery);\n\t\tif (dateFallback) {\n\t\t\tconst fallbackQuery = replaceQueryField(scopedQuery, dateFallback.from, dateFallback.to);\n\t\t\tfallbackMeta.dateField = { ...dateFallback, attempted: true, used: false };\n\t\t\tconst fallbackRead = await runFindWithRepair(fallbackQuery, 'date_field_fallback');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandQueryDateFallbacks(executedQuery, schemaFields);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackRead = await runFindWithRepair(expanded.query, 'date_fields_expanded');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveReadNameMatchFallback(executedQuery);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackRead = await runFindWithRepair(nameFallback.query, 'name_match');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t});\n\t\tconst multiTermFallback = resolveReadMultiTermJobRegexFallback(executedQuery, probeDocs || [], schemaFields);\n\t\tif (multiTermFallback) {\n\t\t\tfallbackMeta.multiTermNameMatch = {\n\t\t\t\tsourceFields: multiTermFallback.sourceFields,\n\t\t\t\tfields: multiTermFallback.fields,\n\t\t\t\tterms: multiTermFallback.terms,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackRead = await runFindWithRepair(multiTermFallback.query, 'multi_term_name_match');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.multiTermNameMatch.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t});\n\t\tconst chemicalLookup = await applyChemicalNameLookupFallbackToQuery({\n\t\t\tquery: executedQuery,\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: probeDocs || undefined\n\t\t});\n\t\tif (chemicalLookup) {\n\t\t\tfallbackMeta.chemicalLookup = { ...chemicalLookup.meta, attempted: true, used: false };\n\t\t\tconst fallbackRead = await runFindWithRepair(chemicalLookup.query, 'chemical_lookup');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.chemicalLookup.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst queryFields = extractQueryFieldPaths(executedQuery).filter(field => !isAssistantIdField(field));\n\t\tif (queryFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, queryFields, schemaFields);\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenQuery = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedQuery);\n\t\t\t\t\tconst fallbackRead = await runFindWithRepair(rewrittenQuery, 'query_field_aliases');\n\t\t\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t});\n\t\tconst activeFallback = resolveReadActiveStatusFallback(executedQuery, probeDocs || [], schemaFields);\n\t\tif (activeFallback) {\n\t\t\tfallbackMeta.activeStatus = {\n\t\t\t\tfields: activeFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false,\n\t\t\t\treason: 'active_fields_missing_in_collection'\n\t\t\t};\n\t\t\tconst fallbackRead = await runFindWithRepair(activeFallback.query, 'active_status');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.activeStatus.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t});\n\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\tquery: executedQuery,\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: probeDocs || undefined\n\t\t});\n\t\tif (idLookup) {\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false };\n\t\t\tconst fallbackRead = await runFindWithRepair(idLookup.query, 'id_lookup');\n\t\t\tconst fallbackDocs = fallbackRead.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackRead.query;\n\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length && hasReadRuntimeBudget('report_fallback')) {\n\t\tconst baseCollection = await resolveBaseCollectionFromReport(db, dbName, collection);\n\t\tif (baseCollection && baseCollection !== collection) {\n\t\t\taddAssistantCollectionToTriedSet(triedCollections, baseCollection);\n\t\t\tconst fallbackPayload: AiAssistantMongoReadInput = {\n\t\t\t\t...input,\n\t\t\t\tcollection: baseCollection,\n\t\t\t\t__assistantRetryState: buildAssistantRetryState(retryState, triedCollections, {\n\t\t\t\t\trootCollection: retryRootCollection\n\t\t\t\t})\n\t\t\t};\n\t\t\tconst fallbackResult = await executeAiAssistantMongoRead(fallbackPayload, context);\n\t\t\tif (Array.isArray(fallbackResult?.documents) && fallbackResult.documents.length) {\n\t\t\t\tif (canViewDebug && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t: {};\n\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\treportFallback: {\n\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\tto: baseCollection,\n\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn fallbackResult;\n\t\t\t}\n\t\t\tif (canViewDebug) {\n\t\t\t\tfallbackMeta.reportFallback = { from: collection, to: baseCollection, attempted: true, used: false };\n\t\t\t}\n\t\t}\n\t}\n\tconst hasActiveStatusFilters = collectAssistantActiveMatchFields(executedQuery).length > 0;\n\t\tif (!documents.length && crossCollectionRetryEnabled && !hasActiveStatusFilters && hasReadRuntimeBudget('collection_retry')) {\n\t\t\tconst crossCollectionCandidates = await resolveAssistantAvailableCrossCollectionFallbacks(\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tcollection,\n\t\t\t\ttriedCollections,\n\t\t\t\t{\n\t\t\t\t\tfieldHints: extractQueryFieldPaths(executedQuery || {})\n\t\t\t\t}\n\t\t\t);\n\t\tif (crossCollectionCandidates.length) {\n\t\t\tfallbackMeta.collectionRetry = {\n\t\t\t\tfrom: collection,\n\t\t\t\troot: retryRootCollection,\n\t\t\t\ttried: crossCollectionCandidates,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tfor (const candidateCollection of crossCollectionCandidates) {\n\t\t\t\taddAssistantCollectionToTriedSet(triedCollections, candidateCollection);\n\t\t\t\tconst fallbackPayload: AiAssistantMongoReadInput = {\n\t\t\t\t\t...input,\n\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t__assistantRetryState: buildAssistantRetryState(retryState, triedCollections, {\n\t\t\t\t\t\trootCollection: retryRootCollection,\n\t\t\t\t\t\tdisableCrossCollectionRetry: true\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst fallbackResult = await executeAiAssistantMongoRead(fallbackPayload, context);\n\t\t\t\t\tconst fallbackDocs = Array.isArray(fallbackResult?.documents) ? fallbackResult.documents : [];\n\t\t\t\t\tif (fallbackDocs.length && shouldAcceptAssistantFallbackDocuments(fallbackDocs)) {\n\t\t\t\t\t\tif (canViewDebug && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t\t\t: {};\n\t\t\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\t\t\tcollectionRetry: {\n\t\t\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\t\t\tto: candidateCollection,\n\t\t\t\t\t\t\t\t\troot: retryRootCollection,\n\t\t\t\t\t\t\t\t\ttried: crossCollectionCandidates,\n\t\t\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fallbackResult;\n\t\t\t\t\t}\n\t\t\t\t\tif (fallbackDocs.length && canViewDebug && fallbackMeta.collectionRetry && typeof fallbackMeta.collectionRetry === 'object') {\n\t\t\t\t\t\tconst rejectedQuality = Array.isArray(fallbackMeta.collectionRetry.rejectedQuality)\n\t\t\t\t\t\t\t? fallbackMeta.collectionRetry.rejectedQuality\n\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\trejectedQuality.push({\n\t\t\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t\t\treason: 'empty_dimension_values'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfallbackMeta.collectionRetry.rejectedQuality = rejectedQuality;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tif (fallbackMeta.collectionRetry && typeof fallbackMeta.collectionRetry === 'object') {\n\t\t\t\t\t\tconst existingErrors = Array.isArray(fallbackMeta.collectionRetry.errors)\n\t\t\t\t\t\t\t? fallbackMeta.collectionRetry.errors\n\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\texistingErrors.push({\n\t\t\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t\t\terror: normalizeOptionalString((error as any)?.message) || 'Unknown error'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfallbackMeta.collectionRetry.errors = existingErrors;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if (!documents.length && crossCollectionRetryEnabled && hasActiveStatusFilters && canViewDebug) {\n\t\tfallbackMeta.collectionRetry = {\n\t\t\tfrom: collection,\n\t\t\troot: retryRootCollection,\n\t\t\tattempted: false,\n\t\t\tskipped: true,\n\t\t\treason: 'active_status_query_preserved'\n\t\t};\n\t}\n\tif (!documents.length && canViewDebug && hasReadRuntimeBudget('zero_diagnostics', 20)) {\n\t\tconst nameFields = collectMatchFieldsByCondition(\n\t\t\texecutedQuery,\n\t\t\t(field, condition) => isRegexMatchCondition(condition)\n\t\t\t\t|| (typeof condition === 'string' && shouldApplyAssistantNameRegex(field))\n\t\t);\n\t\tconst dateFields = collectMatchFieldsByCondition(executedQuery, (_field, condition) => isDateCondition(condition));\n\t\tconst diagnostics: Record<string, any> = {\n\t\t\tnameFields: nameFields.length ? nameFields : undefined,\n\t\t\tdateFields: dateFields.length ? dateFields : undefined\n\t\t};\n\t\ttry {\n\t\t\tconst countOptions = buildCountOptions();\n\t\t\tif (nameFields.length) {\n\t\t\t\tconst queryNoName = stripMatchFields(executedQuery, nameFields);\n\t\t\t\tdiagnostics.recentCount = await db.collection(collection).countDocuments(queryNoName, countOptions);\n\t\t\t}\n\t\t\tif (dateFields.length) {\n\t\t\t\tconst queryNoDate = stripMatchFields(executedQuery, dateFields);\n\t\t\t\tdiagnostics.nameMatchCount = await db.collection(collection).countDocuments(queryNoDate, countOptions);\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore diagnostic count errors.\n\t\t}\n\t\ttry {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t\t});\n\t\t\tif (probeDocs.length && nameFields.length) {\n\t\t\t\tdiagnostics.chemicalIdDetected = detectChemicalIdFromProbe(probeDocs, nameFields);\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore probe errors.\n\t\t}\n\t\ttry {\n\t\t\tconst allCollections = await listAssistantCollections(db, dbName);\n\t\t\tconst base = stripVersionSuffix(collection.startsWith('report-') ? collection.slice('report-'.length) : collection);\n\t\t\tconst alt = collection.startsWith('report-') ? base : `report-${base}`;\n\t\t\tif (alt && alt !== collection && allCollections.includes(alt)) {\n\t\t\t\tconst altCount = await db.collection(alt).countDocuments({}, buildCountOptions());\n\t\t\t\tdiagnostics.alternateCollection = alt;\n\t\t\t\tdiagnostics.alternateCollectionCount = altCount;\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore alternate collection count errors.\n\t\t}\n\t\tfallbackMeta.zeroDiagnostics = diagnostics;\n\t}\n\tlet total = null;\n\tif (normalized.includeTotal && hasReadRuntimeBudget('total_count', 20)) {\n\t\ttotal = await db.collection(collection).countDocuments(executedQuery, buildCountOptions());\n\t}\n\n\tlet sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst requestedFields = resolveProjectionRequestedFields(findOptions.projection);\n\tif (sanitizedDocuments.length && requestedFields.length) {\n\t\tconst missingFields = requestedFields.filter(field => !hasNonEmptyValue(sanitizedDocuments, field, { treatObjectLikeAsEmpty: true }));\n\t\tif (missingFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\tmaxTimeMS: resolveReadMaxTimeMS()\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst projectionAliases = resolveFieldAliases(probeDocs, missingFields, schemaFields);\n\t\t\t\tif (Object.keys(projectionAliases).length) {\n\t\t\t\t\tfallbackMeta.projectionAliases = {\n\t\t\t\t\t\taliases: projectionAliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst expandedProjection = expandProjectionWithAliases(findOptions.projection, projectionAliases);\n\t\t\t\t\tif (expandedProjection && expandedProjection !== findOptions.projection) {\n\t\t\t\t\t\tfindOptions = { ...findOptions, projection: expandedProjection };\n\t\t\t\t\t\tnormalized.findOptions.projection = expandedProjection;\n\t\t\t\t\t\tconst refreshedDocs = await db.collection(collection).find(executedQuery, buildFindOptions()).toArray();\n\t\t\t\t\t\tif (refreshedDocs.length) {\n\t\t\t\t\t\t\tdocuments = refreshedDocs;\n\t\t\t\t\t\t\tsanitizedDocuments = isSuperAdmin\n\t\t\t\t\t\t\t\t? refreshedDocs\n\t\t\t\t\t\t\t\t: refreshedDocs.map(doc => redactSensitiveFields(deepCopy(doc)));\n\t\t\t\t\t\t\tfallbackMeta.projectionAliases.used = true;\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\tconst includeIds = input.options?.includeIds === true;\n\tconst fieldAliases = resolveFieldAliases(sanitizedDocuments, requestedFields, schemaFields);\n\tlet displayDocs = Object.keys(fieldAliases).length\n\t\t? applyFieldAliasesForDisplay(sanitizedDocuments, fieldAliases)\n\t\t: sanitizedDocuments;\n\tconst idLookupDisplay = await applyIdLookupDisplayEnrichment({\n\t\tdocs: displayDocs,\n\t\tcollection,\n\t\tdb,\n\t\tdbName,\n\t\tidClient: normalizedClient,\n\t\tidCustomer: customerId,\n\t\tisSuperAdmin\n\t});\n\tif (idLookupDisplay?.docs) {\n\t\tdisplayDocs = idLookupDisplay.docs;\n\t}\n\tif (idLookupDisplay?.meta) {\n\t\tfallbackMeta.idDisplayLookup = idLookupDisplay.meta;\n\t}\n\t\tconst priorityFields = requestedFields.length\n\t\t\t? [...requestedFields, ...AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS]\n\t\t\t: AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\t\tconst displayMaxRows = resolveAssistantReadDisplayMaxRows(normalized.findOptions.limit, sanitizedDocuments.length);\n\t\tconst display = buildDisplayTable(displayDocs, {\n\t\t\tincludeIds,\n\t\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\t\tmaxRows: displayMaxRows,\n\t\t\tpriorityFields,\n\t\t\tincludeGroupFromId: false\n\t\t});\n\tif (total !== null) {\n\t\tdisplay.total = total;\n\t}\n\tif (Object.keys(fieldAliases).length) {\n\t\tfallbackMeta.fieldAliases = fieldAliases;\n\t}\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\ttotal,\n\t\tdisplay,\n\t\t...(canViewDebug ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: preservePrimaryHintCollection ? true : collectionResolution.matched,\n\t\t\t\tcollectionCandidates: preservePrimaryHintCollection ? [] : collectionResolution.candidates,\n\t\t\t\tcollectionScore: preservePrimaryHintCollection ? 100 : collectionResolution.score,\n\t\t\t\tbridge: bridgeCollection.mode === 'report-builder' ? 'report-builder' : 'direct-mongo',\n\t\t\t\tbridgeResolution: {\n\t\t\t\t\tmode: bridgeCollection.mode,\n\t\t\t\t\tfallbackFrom: bridgeCollection.fallbackFrom || undefined,\n\t\t\t\t\tpath: bridgeCollection.resolutionPath\n\t\t\t\t},\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: executedQuery,\n\t\t\t\toptions: normalized.findOptions,\n\t\t\t\tincludeTotal: normalized.includeTotal,\n\t\t\t\t...(requestHints ? { requestHints } : {}),\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nexport async function executeAiAssistantMongoAggregate(payload: AiAssistantMongoAggregateInput, context: any): Promise<any> {\n\tconst input = restoreMongoSafeObject(payload || {}) as AiAssistantMongoAggregateInput;\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant report builder bridge: Collection is required.');\n\t}\n\tconst retryState = input.__assistantRetryState && typeof input.__assistantRetryState === 'object'\n\t\t? input.__assistantRetryState\n\t\t: {};\n\tconst triedCollections = buildAssistantTriedCollectionSet(retryState.triedCollections);\n\taddAssistantCollectionToTriedSet(triedCollections, rawCollection);\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst idApp = normalizeOptionalString(input.id_app);\n\tconst requestHints = normalizeAssistantDirectiveHints(input.__assistantHints);\n\tconst lockRequestedCollection = shouldLockAssistantRequestedCollectionForExecution(\n\t\trawCollection,\n\t\tinput.permissionView,\n\t\trequestHints\n\t);\n\tconst crossCollectionRetryEnabled = retryState.disableCrossCollectionRetry !== true && !lockRequestedCollection;\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection, idApp);\n\tlet collection = collectionResolution.name || rawCollection;\n\tconst preservePrimaryHintCollection = shouldPreserveAssistantPrimaryHintCollection(\n\t\trawCollection,\n\t\tcollection,\n\t\trequestHints\n\t);\n\tif (preservePrimaryHintCollection) {\n\t\tcollection = rawCollection;\n\t}\n\tconst bridgeCollection = await resolveAssistantReportBuilderBridgeCollection(collection, db, dbName, {\n\t\trequestHints,\n\t\tappId: idApp\n\t});\n\tif (bridgeCollection.fallbackFrom) {\n\t\tcollection = bridgeCollection.collection;\n\t}\n\taddAssistantCollectionToTriedSet(triedCollections, collection);\n\tconst retryRootCollection = normalizeOptionalString(retryState.rootCollection) || collection;\n\tconst schemaFields = getCollectionSchemaFieldNames(collection);\n\tconst effectivePermissionView = bridgeCollection.fallbackFrom\n\t\t? resolveDefaultAssistantPermissionView(collection)\n\t\t: input.permissionView;\n\tconst { user, isSuperAdmin, canViewDebug } = await ensureAssistantReadAccess(context, effectivePermissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\tconst runtimeControl = normalizeAssistantRuntimeControl(input.__assistantRuntime);\n\tconst runtimeFastMode = runtimeControl?.fastMode === undefined\n\t\t? resolveAssistantFastModeEnabled()\n\t\t: runtimeControl.fastMode === true;\n\tconst activeRuntimeControl = runtimeFastMode ? runtimeControl : null;\n\tconst hasAggregateRuntimeBudget = (stage: string, minimumMs = AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS): boolean => {\n\t\tif (!hasAssistantRuntimeBudget(activeRuntimeControl, minimumMs)) {\n\t\t\tfallbackMeta.runtimeBudget = {\n\t\t\t\tstage,\n\t\t\t\texhausted: true,\n\t\t\t\tdeadlineMs: activeRuntimeControl?.deadlineMs || undefined\n\t\t\t};\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst resolveAggregateMaxTimeMS = (requestedMaxTimeMS?: number) => resolveAssistantEffectiveMongoMaxTimeMs({\n\t\trequestedMaxTimeMS,\n\t\truntime: activeRuntimeControl\n\t});\n\tif (bridgeCollection.fallbackFrom) {\n\t\tfallbackMeta.reportBuilderBridge = {\n\t\t\tfrom: bridgeCollection.fallbackFrom,\n\t\t\tto: collection,\n\t\t\tmode: bridgeCollection.mode,\n\t\t\tresolutionPath: bridgeCollection.resolutionPath,\n\t\t\tused: true\n\t\t};\n\t\tfallbackMeta.permissionFallback = {\n\t\t\tfrom: normalizeOptionalString(input.permissionView),\n\t\t\tto: effectivePermissionView,\n\t\t\tused: true\n\t\t};\n\t}\n\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\n\tconst normalizedPipeline = normalizeAssistantAggregatePipeline(input.pipeline, collection, input.__assistantMessage);\n\tlet sanitizedPipeline = normalizedPipeline;\n\tif (!isSuperAdmin && customerId) {\n\t\tconst strippedPipeline = stripScopedFieldsFromPipelineWithMeta(normalizedPipeline, ['id_customer', 'other.id_customer']);\n\t\tsanitizedPipeline = strippedPipeline.pipeline;\n\t\tfallbackMeta.scopeStripPipeline = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: strippedPipeline.changed\n\t\t};\n\t}\n\tconst pipelineWithScope = buildAssistantAggregatePipeline(scopedQuery, sanitizedPipeline);\n\tconst normalizedOptions = normalizeAssistantAggregateOptions(input.options);\n\tconst limitedPipeline = applyAssistantAggregateLimit(\n\t\tpipelineWithScope,\n\t\tnormalizedOptions.limit,\n\t\tnormalizedOptions.maxLimit,\n\t\tnormalizedOptions.defaultLimit\n\t);\n\tlet executedPipeline = limitedPipeline;\n\tlet dateField = findAggregateDateField(executedPipeline);\n\tif (containsForbiddenMongoOperators(executedPipeline)) {\n\t\tthrow new Error('AI assistant report builder bridge: Pipeline contains restricted operators.');\n\t}\n\n\tconst buildAggregateOptions = () => {\n\t\tconst maxTimeMS = resolveAggregateMaxTimeMS(normalizedOptions.aggregateOptions.maxTimeMS);\n\t\treturn {\n\t\t\t...normalizedOptions.aggregateOptions,\n\t\t\t...(maxTimeMS ? { maxTimeMS } : {}),\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t};\n\t};\n\tconst buildAggregateCountOptions = () => {\n\t\tconst maxTimeMS = resolveAggregateMaxTimeMS(normalizedOptions.aggregateOptions.maxTimeMS);\n\t\treturn maxTimeMS\n\t\t\t? { readPreference: AI_ASSISTANT_READ_PREFERENCE, maxTimeMS }\n\t\t\t: { readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\t};\n\tconst runAggregateWithRepair = async (\n\t\tpipeline: Array<Record<string, any>>,\n\t\tstage: string\n\t): Promise<{ documents: any[]; pipeline: Array<Record<string, any>> }> => {\n\t\tif (!hasAggregateRuntimeBudget(stage)) {\n\t\t\treturn { documents: [], pipeline };\n\t\t}\n\t\tconst aggregateOptions = buildAggregateOptions();\n\t\ttry {\n\t\t\tconst docs = await db.collection(collection)\n\t\t\t\t.aggregate(pipeline, aggregateOptions)\n\t\t\t\t.toArray();\n\t\t\treturn { documents: docs, pipeline };\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst isDateRepair = isAssistantDateArithmeticArgumentError(error);\n\t\t\tconst isRankSortByRepair = isAssistantRankSortByError(error);\n\t\t\tconst isDottedOutputFieldRepair = isAssistantDottedOutputFieldError(error);\n\t\t\tconst isPositionalPathRepair = isAssistantPositionalPathError(error);\n\t\t\tif (!isDateRepair && !isRankSortByRepair && !isDottedOutputFieldRepair && !isPositionalPathRepair) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tlet repaired = isDateRepair\n\t\t\t\t? repairAssistantDateArithmeticInPipeline(pipeline)\n\t\t\t\t: isRankSortByRepair\n\t\t\t\t\t? repairAssistantRankSortByInPipeline(pipeline)\n\t\t\t\t\t: isDottedOutputFieldRepair\n\t\t\t\t\t\t? repairAssistantDottedOutputFieldNamesInPipeline(pipeline)\n\t\t\t\t\t\t: repairAssistantPositionalPathSegmentsInPipeline(pipeline);\n\t\t\tlet dottedFieldPath: string | null = null;\n\t\t\tlet dottedFieldReferenceRepairUsed = false;\n\t\t\tif (isDottedOutputFieldRepair) {\n\t\t\t\tdottedFieldPath = extractAssistantDottedFieldPathFromError(error);\n\t\t\t\tif (dottedFieldPath) {\n\t\t\t\t\tconst pathReferenceRepair = repairAssistantFieldPathReferenceInPipeline(repaired.pipeline, dottedFieldPath);\n\t\t\t\t\tif (pathReferenceRepair.changed) {\n\t\t\t\t\t\tdottedFieldReferenceRepairUsed = true;\n\t\t\t\t\t\trepaired = {\n\t\t\t\t\t\t\tpipeline: pathReferenceRepair.pipeline,\n\t\t\t\t\t\t\tchanged: repaired.changed || pathReferenceRepair.changed\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\tif (!repaired.changed || containsForbiddenMongoOperators(repaired.pipeline)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst docs = await db.collection(collection)\n\t\t\t\t.aggregate(repaired.pipeline, aggregateOptions)\n\t\t\t\t.toArray();\n\t\t\tif (isDateRepair) {\n\t\t\t\tfallbackMeta.dateArithmetic = {\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: true,\n\t\t\t\t\tstage,\n\t\t\t\t\treason: 'normalized_date_operator_args'\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (isRankSortByRepair) {\n\t\t\t\tfallbackMeta.windowRankSortBy = {\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: true,\n\t\t\t\t\tstage,\n\t\t\t\t\treason: 'normalized_rank_sortby_single_key'\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (isDottedOutputFieldRepair) {\n\t\t\t\tfallbackMeta.outputFieldPath = {\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: true,\n\t\t\t\t\tstage,\n\t\t\t\t\treason: dottedFieldReferenceRepairUsed\n\t\t\t\t\t\t? 'normalized_dotted_output_field_names_and_field_path_references'\n\t\t\t\t\t\t: 'normalized_dotted_output_field_names',\n\t\t\t\t\tfieldPath: dottedFieldPath || undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (isPositionalPathRepair) {\n\t\t\t\tfallbackMeta.positionalPath = {\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: true,\n\t\t\t\t\tstage,\n\t\t\t\t\treason: 'removed_positional_path_segments'\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn { documents: docs, pipeline: repaired.pipeline };\n\t\t}\n\t};\n\n\tconst initialAggregate = await runAggregateWithRepair(executedPipeline, 'initial');\n\tlet documents = initialAggregate.documents;\n\texecutedPipeline = initialAggregate.pipeline;\n\tdateField = findAggregateDateField(executedPipeline);\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length && dateField) {\n\t\tconst fallback = resolveAggregateDateFieldFallback(executedPipeline);\n\t\tif (fallback) {\n\t\t\tfallbackMeta.dateField = { ...fallback, attempted: true, used: false };\n\t\t\tconst fallbackPipeline = replaceAggregateDateField(executedPipeline, fallback.from, fallback.to);\n\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(fallbackPipeline, 'date_field_fallback');\n\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length && dateField !== 'createdAt') {\n\t\t\tconst createdFallback = { from: dateField, to: 'createdAt', attempted: true, used: false };\n\t\t\tconst createdPipeline = replaceAggregateDateField(executedPipeline, dateField, 'createdAt');\n\t\t\tfallbackMeta.dateFieldCreatedAt = createdFallback;\n\t\t\tif (!containsForbiddenMongoOperators(createdPipeline)) {\n\t\t\t\tconst createdAggregate = await runAggregateWithRepair(createdPipeline, 'date_field_created_at');\n\t\t\t\tconst createdDocs = createdAggregate.documents;\n\t\t\t\tif (createdDocs.length) {\n\t\t\t\t\tdocuments = createdDocs;\n\t\t\t\t\texecutedPipeline = createdAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.dateFieldCreatedAt.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandAggregateDateMatchFallback(executedPipeline, schemaFields);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tif (!containsForbiddenMongoOperators(expanded.pipeline)) {\n\t\t\t\tconst expandedAggregate = await runAggregateWithRepair(expanded.pipeline, 'date_fields_expanded');\n\t\t\t\tconst expandedDocs = expandedAggregate.documents;\n\t\t\t\tif (expandedDocs.length) {\n\t\t\t\t\tdocuments = expandedDocs;\n\t\t\t\t\texecutedPipeline = expandedAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst completionFallback = resolveAggregateCompletionFallback(executedPipeline);\n\t\tif (completionFallback) {\n\t\t\tfallbackMeta.completion = {\n\t\t\t\tfield: completionFallback.field,\n\t\t\t\tsources: completionFallback.sources,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false,\n\t\t\t\tstatusFilter: !!completionFallback.statusFilter,\n\t\t\t\tstrategy: 'addFields'\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateCompletionFallbackPipeline(executedPipeline, completionFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(fallbackPipeline, 'completion_add_fields');\n\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length) {\n\t\t\tconst completionExprFallback = resolveAggregateCompletionExprFallback(executedPipeline);\n\t\t\tif (completionExprFallback) {\n\t\t\t\tfallbackMeta.completion = {\n\t\t\t\t\tfield: completionExprFallback.field,\n\t\t\t\t\tsources: completionExprFallback.sources,\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: false,\n\t\t\t\t\tstatusFilter: !!completionExprFallback.statusFilter,\n\t\t\t\t\tstrategy: 'expr'\n\t\t\t\t};\n\t\t\t\tconst fallbackPipeline = buildAggregateCompletionExprFallbackPipeline(executedPipeline, completionExprFallback);\n\t\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(fallbackPipeline, 'completion_expr');\n\t\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (documents.length <= 1) {\n\t\tconst unwindFallback = resolveAggregateUnwindFallback(executedPipeline);\n\t\tif (unwindFallback) {\n\t\t\tfallbackMeta.unwind = { path: unwindFallback.path, attempted: true, used: false };\n\t\t\tlet shouldUnwind = false;\n\t\t\ttry {\n\t\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\t\tdb,\n\t\t\t\t\tcollection,\n\t\t\t\t\tidClient: normalizedClient,\n\t\t\t\t\tidCustomer: customerId,\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t\t\t});\n\t\t\t\tshouldUnwind = probeDocs.length ? hasArrayValueAtPath(probeDocs, unwindFallback.path) : false;\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tshouldUnwind = false;\n\t\t\t}\n\t\t\tif (shouldUnwind) {\n\t\t\t\tconst fallbackPipeline = buildAggregateUnwindFallbackPipeline(executedPipeline, unwindFallback);\n\t\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(fallbackPipeline, 'unwind');\n\t\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\t\tif (fallbackDocs.length > documents.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\t\tfallbackMeta.unwind.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfallbackMeta.unwind.skipped = 'not_array';\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveAggregateNameMatchFallback(executedPipeline);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateNameMatchFallbackPipeline(executedPipeline, nameFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(fallbackPipeline, 'name_match');\n\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t});\n\t\tfor (let i = 0; i < (executedPipeline || []).length; i += 1) {\n\t\t\tconst stage = executedPipeline[i];\n\t\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst chemicalLookup = await applyChemicalNameLookupFallbackToQuery({\n\t\t\t\tquery: stage.$match,\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: probeDocs || undefined\n\t\t\t});\n\t\t\tif (!chemicalLookup) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfallbackMeta.chemicalLookup = { ...chemicalLookup.meta, attempted: true, used: false, stage: i };\n\t\t\tconst rewrittenPipeline = executedPipeline.map((current, index) => (\n\t\t\t\tindex === i ? { $match: chemicalLookup.query } : current\n\t\t\t));\n\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(rewrittenPipeline, 'chemical_lookup');\n\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.chemicalLookup.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst matchFields = new Set<string>();\n\t\t(executedPipeline || []).forEach((stage) => {\n\t\t\tif (stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') {\n\t\t\t\textractQueryFieldPaths(stage.$match)\n\t\t\t\t\t.filter(field => !isAssistantIdField(field))\n\t\t\t\t\t.forEach(field => matchFields.add(field));\n\t\t\t}\n\t\t});\n\t\tif (matchFields.size) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, Array.from(matchFields), schemaFields);\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenPipeline = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedPipeline);\n\t\t\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(rewrittenPipeline, 'query_field_aliases');\n\t\t\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\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\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t});\n\t\tconst activeFallback = resolveAggregateActiveStatusFallback(executedPipeline, probeDocs || [], schemaFields);\n\t\tif (activeFallback && !containsForbiddenMongoOperators(activeFallback.pipeline)) {\n\t\t\tfallbackMeta.activeStatus = {\n\t\t\t\tfields: activeFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false,\n\t\t\t\treason: 'active_fields_missing_in_collection'\n\t\t\t};\n\t\t\tconst fallbackAggregate = await runAggregateWithRepair(activeFallback.pipeline, 'active_status');\n\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\tfallbackMeta.activeStatus.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tfor (let i = 0; i < (executedPipeline || []).length; i += 1) {\n\t\t\tconst stage = executedPipeline[i];\n\t\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t\t});\n\t\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\t\tquery: stage.$match,\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: probeDocs || undefined\n\t\t\t});\n\t\t\tif (!idLookup) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false, stage: i };\n\t\t\tconst rewrittenPipeline = executedPipeline.map((current, index) => (\n\t\t\t\tindex === i ? { $match: idLookup.query } : current\n\t\t\t));\n\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\tconst fallbackAggregate = await runAggregateWithRepair(rewrittenPipeline, 'id_lookup');\n\t\t\t\tconst fallbackDocs = fallbackAggregate.documents;\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackAggregate.pipeline;\n\t\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length && hasAggregateRuntimeBudget('relationship_retry')) {\n\t\tconst nestedFallbacks = await resolveAssistantNestedAggregateFallbacks({\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tcurrentCollection: collection,\n\t\t\tpipeline: executedPipeline || [],\n\t\t\ttriedCollections\n\t\t});\n\t\tif (nestedFallbacks.length) {\n\t\t\tfallbackMeta.relationshipRetry = {\n\t\t\t\tfrom: collection,\n\t\t\t\troot: retryRootCollection,\n\t\t\t\tcandidates: nestedFallbacks.map(entry => ({\n\t\t\t\t\tcollection: entry.collection,\n\t\t\t\t\tprefix: entry.prefix,\n\t\t\t\t\trewrittenFields: entry.rewrittenFields\n\t\t\t\t})),\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tfor (const nestedFallback of nestedFallbacks) {\n\t\t\t\taddAssistantCollectionToTriedSet(triedCollections, nestedFallback.collection);\n\t\t\t\tconst fallbackPayload: AiAssistantMongoAggregateInput = {\n\t\t\t\t\t...input,\n\t\t\t\t\tcollection: nestedFallback.collection,\n\t\t\t\t\tpipeline: nestedFallback.pipeline,\n\t\t\t\t\tpermissionView: resolveDefaultAssistantPermissionView(nestedFallback.collection),\n\t\t\t\t\t__assistantRetryState: buildAssistantRetryState(retryState, triedCollections, {\n\t\t\t\t\t\trootCollection: retryRootCollection,\n\t\t\t\t\t\tdisableCrossCollectionRetry: true\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst fallbackResult = await executeAiAssistantMongoAggregate(fallbackPayload, context);\n\t\t\t\t\tif (Array.isArray(fallbackResult?.documents) && fallbackResult.documents.length) {\n\t\t\t\t\t\tif (canViewDebug && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t\t\t: {};\n\t\t\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\t\t\trelationshipRetry: {\n\t\t\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\t\t\tto: nestedFallback.collection,\n\t\t\t\t\t\t\t\t\tprefix: nestedFallback.prefix,\n\t\t\t\t\t\t\t\t\trewrittenFields: nestedFallback.rewrittenFields,\n\t\t\t\t\t\t\t\t\troot: retryRootCollection,\n\t\t\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fallbackResult;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tconst errorMessage = normalizeOptionalString((error as any)?.message) || 'Unknown error';\n\t\t\t\t\tconst existingErrors = Array.isArray(fallbackMeta.relationshipRetry.errors)\n\t\t\t\t\t\t? fallbackMeta.relationshipRetry.errors\n\t\t\t\t\t\t: [];\n\t\t\t\t\tfallbackMeta.relationshipRetry.errors = [...existingErrors, {\n\t\t\t\t\t\tcollection: nestedFallback.collection,\n\t\t\t\t\t\tprefix: nestedFallback.prefix,\n\t\t\t\t\t\terror: errorMessage\n\t\t\t\t\t}];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length && hasAggregateRuntimeBudget('report_fallback')) {\n\t\tconst baseCollection = await resolveBaseCollectionFromReport(db, dbName, collection);\n\t\tif (baseCollection && baseCollection !== collection) {\n\t\t\taddAssistantCollectionToTriedSet(triedCollections, baseCollection);\n\t\t\tconst fallbackPayload: AiAssistantMongoAggregateInput = {\n\t\t\t\t...input,\n\t\t\t\tcollection: baseCollection,\n\t\t\t\t__assistantRetryState: buildAssistantRetryState(retryState, triedCollections, {\n\t\t\t\t\trootCollection: retryRootCollection\n\t\t\t\t})\n\t\t\t};\n\t\t\tconst fallbackResult = await executeAiAssistantMongoAggregate(fallbackPayload, context);\n\t\t\tif (Array.isArray(fallbackResult?.documents) && fallbackResult.documents.length) {\n\t\t\t\tif (canViewDebug && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t: {};\n\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\treportFallback: {\n\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\tto: baseCollection,\n\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn fallbackResult;\n\t\t\t}\n\t\t\tif (canViewDebug) {\n\t\t\t\tfallbackMeta.reportFallback = { from: collection, to: baseCollection, attempted: true, used: false };\n\t\t\t}\n\t\t}\n\t}\n\tconst hasActiveStatusFilters = collectAssistantActiveMatchFieldsFromPipeline(normalizedPipeline).length > 0\n\t\t|| collectAssistantActiveMatchFieldsFromPipeline(executedPipeline).length > 0;\n\tif (!documents.length && crossCollectionRetryEnabled && !hasActiveStatusFilters && hasAggregateRuntimeBudget('collection_retry')) {\n\t\tconst fallbackAcceptanceOptions = buildAssistantAggregateFallbackAcceptanceOptions(executedPipeline || []);\n\t\tconst crossCollectionCandidates = await resolveAssistantAvailableCrossCollectionFallbacks(\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tcollection,\n\t\t\ttriedCollections,\n\t\t\t{\n\t\t\t\tfieldHints: collectAggregateReferencedFieldPaths(executedPipeline || [])\n\t\t\t}\n\t\t);\n\t\tif (crossCollectionCandidates.length) {\n\t\t\tfallbackMeta.collectionRetry = {\n\t\t\t\tfrom: collection,\n\t\t\t\troot: retryRootCollection,\n\t\t\t\ttried: crossCollectionCandidates,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tfor (const candidateCollection of crossCollectionCandidates) {\n\t\t\t\taddAssistantCollectionToTriedSet(triedCollections, candidateCollection);\n\t\t\t\tconst fallbackPayload: AiAssistantMongoAggregateInput = {\n\t\t\t\t\t...input,\n\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t__assistantRetryState: buildAssistantRetryState(retryState, triedCollections, {\n\t\t\t\t\t\trootCollection: retryRootCollection,\n\t\t\t\t\t\tdisableCrossCollectionRetry: true\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst fallbackResult = await executeAiAssistantMongoAggregate(fallbackPayload, context);\n\t\t\t\t\tconst fallbackDocs = Array.isArray(fallbackResult?.documents) ? fallbackResult.documents : [];\n\t\t\t\t\tconst fallbackQuality = evaluateAssistantFallbackDocumentsQuality(\n\t\t\t\t\t\tfallbackDocs,\n\t\t\t\t\t\tfallbackAcceptanceOptions\n\t\t\t\t\t);\n\t\t\t\t\tif (fallbackDocs.length && fallbackQuality.accepted) {\n\t\t\t\t\t\tif (canViewDebug && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t\t\t: {};\n\t\t\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\t\t\tcollectionRetry: {\n\t\t\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\t\t\tto: candidateCollection,\n\t\t\t\t\t\t\t\t\troot: retryRootCollection,\n\t\t\t\t\t\t\t\t\ttried: crossCollectionCandidates,\n\t\t\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fallbackResult;\n\t\t\t\t\t}\n\t\t\t\t\tif (fallbackDocs.length && canViewDebug && fallbackMeta.collectionRetry && typeof fallbackMeta.collectionRetry === 'object') {\n\t\t\t\t\t\tconst rejectedQuality = Array.isArray(fallbackMeta.collectionRetry.rejectedQuality)\n\t\t\t\t\t\t\t? fallbackMeta.collectionRetry.rejectedQuality\n\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\trejectedQuality.push({\n\t\t\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t\t\treason: 'sparse_dimension_values',\n\t\t\t\t\t\t\trowCount: fallbackQuality.rowCount,\n\t\t\t\t\t\t\tdimensionFields: fallbackQuality.dimensionFields,\n\t\t\t\t\t\t\tbestField: fallbackQuality.bestField,\n\t\t\t\t\t\t\tbestFillRate: round(fallbackQuality.bestFillRate * 100, 2),\n\t\t\t\t\t\t\taverageFillRate: round(fallbackQuality.averageFillRate * 100, 2)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfallbackMeta.collectionRetry.rejectedQuality = rejectedQuality;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tif (fallbackMeta.collectionRetry && typeof fallbackMeta.collectionRetry === 'object') {\n\t\t\t\t\t\tconst existingErrors = Array.isArray(fallbackMeta.collectionRetry.errors)\n\t\t\t\t\t\t\t? fallbackMeta.collectionRetry.errors\n\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\texistingErrors.push({\n\t\t\t\t\t\t\tcollection: candidateCollection,\n\t\t\t\t\t\t\terror: normalizeOptionalString((error as any)?.message) || 'Unknown error'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfallbackMeta.collectionRetry.errors = existingErrors;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if (!documents.length && crossCollectionRetryEnabled && hasActiveStatusFilters && canViewDebug) {\n\t\tfallbackMeta.collectionRetry = {\n\t\t\tfrom: collection,\n\t\t\troot: retryRootCollection,\n\t\t\tattempted: false,\n\t\t\tskipped: true,\n\t\t\treason: 'active_status_query_preserved'\n\t\t};\n\t}\n\tif (!documents.length && canViewDebug && hasAggregateRuntimeBudget('zero_diagnostics', 20)) {\n\t\tconst matchStages = (executedPipeline || []).filter(stage => stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') as Array<{ $match: Record<string, any> }>;\n\t\tconst diagnostics: Record<string, any> = {};\n\t\tif (matchStages.length) {\n\t\t\tconst combinedMatch = matchStages.reduce((acc, stage) => ({ $and: [...(acc.$and || []), stage.$match] }), { $and: [] as any[] });\n\t\t\tconst nameFields = collectMatchFieldsByCondition(\n\t\t\t\tcombinedMatch,\n\t\t\t\t(field, condition) => isRegexMatchCondition(condition)\n\t\t\t\t\t|| (typeof condition === 'string' && shouldApplyAssistantNameRegex(field))\n\t\t\t);\n\t\t\tconst dateFields = collectMatchFieldsByCondition(combinedMatch, (_field, condition) => isDateCondition(condition));\n\t\t\tdiagnostics.nameFields = nameFields.length ? nameFields : undefined;\n\t\t\tdiagnostics.dateFields = dateFields.length ? dateFields : undefined;\n\t\t\ttry {\n\t\t\t\tconst countOptions = buildAggregateCountOptions();\n\t\t\t\tif (nameFields.length) {\n\t\t\t\t\tconst queryNoName = stripMatchFields(combinedMatch, nameFields);\n\t\t\t\t\tdiagnostics.recentCount = await db.collection(collection).countDocuments(queryNoName, countOptions);\n\t\t\t\t}\n\t\t\t\tif (dateFields.length) {\n\t\t\t\t\tconst queryNoDate = stripMatchFields(combinedMatch, dateFields);\n\t\t\t\t\tdiagnostics.nameMatchCount = await db.collection(collection).countDocuments(queryNoDate, countOptions);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore diagnostic count errors.\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\t\tdb,\n\t\t\t\t\tcollection,\n\t\t\t\t\tidClient: normalizedClient,\n\t\t\t\t\tidCustomer: customerId,\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\tincludeClientScope: shouldScopeByClient,\n\t\t\t\t\tmaxTimeMS: resolveAggregateMaxTimeMS()\n\t\t\t\t});\n\t\t\t\tif (probeDocs.length && nameFields.length) {\n\t\t\t\t\tdiagnostics.chemicalIdDetected = detectChemicalIdFromProbe(probeDocs, nameFields);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore probe errors.\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst allCollections = await listAssistantCollections(db, dbName);\n\t\t\t\tconst base = stripVersionSuffix(collection.startsWith('report-') ? collection.slice('report-'.length) : collection);\n\t\t\t\tconst alt = collection.startsWith('report-') ? base : `report-${base}`;\n\t\t\t\tif (alt && alt !== collection && allCollections.includes(alt)) {\n\t\t\t\t\tconst altCount = await db.collection(alt).countDocuments({}, buildAggregateCountOptions());\n\t\t\t\t\tdiagnostics.alternateCollection = alt;\n\t\t\t\t\tdiagnostics.alternateCollectionCount = altCount;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore alternate collection count errors.\n\t\t\t}\n\t\t\tfallbackMeta.zeroDiagnostics = diagnostics;\n\t\t}\n\t}\n\n\tconst verification = hasAggregateRuntimeBudget('verification', 40)\n\t\t? await verifyAssistantAggregateReliability({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tpipeline: executedPipeline,\n\t\t\tdocuments,\n\t\t\taggregateOptions: buildAggregateOptions()\n\t\t})\n\t\t: null;\n\n\tconst sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst includeIds = input.options?.includeIds === true;\n\tlet displayDocs = sanitizedDocuments.map(doc => flattenForTable(doc, {\n\t\tincludeGroupFromId: true,\n\t\tincludeIds: true\n\t}));\n\tconst idLookupDisplay = await applyIdLookupDisplayEnrichment({\n\t\tdocs: displayDocs,\n\t\tcollection,\n\t\tdb,\n\t\tdbName,\n\t\tidClient: normalizedClient,\n\t\tidCustomer: customerId,\n\t\tisSuperAdmin\n\t});\n\tif (idLookupDisplay?.docs) {\n\t\tdisplayDocs = idLookupDisplay.docs;\n\t}\n\tif (idLookupDisplay?.meta) {\n\t\tfallbackMeta.idDisplayLookup = idLookupDisplay.meta;\n\t}\n\tconst display = buildDisplayTable(displayDocs, {\n\t\tincludeIds,\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: normalizedOptions.limit || sanitizedDocuments.length,\n\t\tincludeGroupFromId: false\n\t});\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\tdisplay,\n\t\t...(verification ? { verification } : {}),\n\t\t...(canViewDebug ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: preservePrimaryHintCollection ? true : collectionResolution.matched,\n\t\t\t\tcollectionCandidates: preservePrimaryHintCollection ? [] : collectionResolution.candidates,\n\t\t\t\tcollectionScore: preservePrimaryHintCollection ? 100 : collectionResolution.score,\n\t\t\t\tbridge: bridgeCollection.mode === 'report-builder' ? 'report-builder' : 'direct-mongo',\n\t\t\t\tbridgeResolution: {\n\t\t\t\t\tmode: bridgeCollection.mode,\n\t\t\t\t\tfallbackFrom: bridgeCollection.fallbackFrom || undefined,\n\t\t\t\t\tpath: bridgeCollection.resolutionPath\n\t\t\t\t},\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: scopedQuery,\n\t\t\t\toptions: normalizedOptions.aggregateOptions,\n\t\t\t\toriginalPipeline: limitedPipeline,\n\t\t\t\texecutedPipeline,\n\t\t\t\t...(requestHints ? { requestHints } : {}),\n\t\t\t\t...(verification ? { verification } : {}),\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nasync function verifyAssistantAggregateReliability(params: {\n\tdb: any;\n\tcollection: string;\n\tpipeline: Array<Record<string, any>>;\n\tdocuments: any[];\n\taggregateOptions: Record<string, any>;\n}): Promise<Record<string, any> | null> {\n\tconst collection = normalizeOptionalString(params.collection).toLowerCase();\n\tconst collectionBase = collection.startsWith('report-') ? collection.slice('report-'.length) : collection;\n\tif (collectionBase !== 'invoices') {\n\t\treturn null;\n\t}\n\tconst monthKey = resolveAssistantMonthlyKey(params.documents);\n\tif (!monthKey) {\n\t\treturn null;\n\t}\n\tconst amountKey = resolveAssistantNumericAmountKey(params.documents, monthKey);\n\tif (!amountKey) {\n\t\treturn null;\n\t}\n\tconst baseMap = mapAssistantRevenueByMonth(params.documents, monthKey, amountKey);\n\tif (!baseMap.size) {\n\t\treturn null;\n\t}\n\n\tconst groupIndex = findAggregateGroupIndex(params.pipeline || []);\n\tif (groupIndex === -1) {\n\t\treturn null;\n\t}\n\tconst groupPaths = extractGroupFieldPaths(params.pipeline[groupIndex]?.$group || {});\n\tconst dateField = groupPaths.find(field => /(date|paid|invoice|created|updated|_at)$/i.test(field))\n\t\t|| groupPaths.find(field => /(date|paid|invoice|created|updated)/i.test(field))\n\t\t|| 'date_paid';\n\n\tconst mergedMatch = mergeAssistantPreGroupMatchStages(params.pipeline || [], groupIndex);\n\tconst dateFieldsInMatch = collectMatchFieldsByCondition(mergedMatch, (_field, condition) => isDateCondition(condition));\n\tconst baseMatchNoDate = dateFieldsInMatch.length ? stripMatchFields(mergedMatch, dateFieldsInMatch) : mergedMatch;\n\tconst primaryDateCondition = findMatchConditionForField(mergedMatch, dateField);\n\tconst verifyPipeline = buildAssistantMonthlyRevenueVerificationPipeline(mergedMatch, dateField);\n\n\tlet verifyDocs: any[] = [];\n\ttry {\n\t\tverifyDocs = await params.db.collection(params.collection)\n\t\t\t.aggregate(verifyPipeline, params.aggregateOptions || {})\n\t\t\t.toArray();\n\t}\n\tcatch {\n\t\treturn {\n\t\t\ttype: 'invoice_revenue_monthly',\n\t\t\tchecks: [\n\t\t\t\t{ name: 'Cross-check query', status: 'warn', details: 'Verification query failed; result not cross-checked.' }\n\t\t\t],\n\t\t\twarnings: ['Verification query failed, so this total was not independently cross-checked.'],\n\t\t\tmetrics: {\n\t\t\t\tbaselineField: amountKey,\n\t\t\t\tdateField\n\t\t\t}\n\t\t};\n\t}\n\n\tconst verifyMap = mapAssistantVerificationDocsByMonth(verifyDocs);\n\n\tlet comparedMonths = 0;\n\tlet paidCloserCount = 0;\n\tlet grandCloserCount = 0;\n\tlet sumPaidDiffPct = 0;\n\tlet sumGrandDiffPct = 0;\n\tlet maxPaidDiffPct = 0;\n\tlet maxGrandDiffPct = 0;\n\tlet sumPaidGrandGapPct = 0;\n\tconst highVarianceMonths: string[] = [];\n\tbaseMap.forEach((value, month) => {\n\t\tconst match = verifyMap.get(month);\n\t\tif (!match) {\n\t\t\treturn;\n\t\t}\n\t\tcomparedMonths += 1;\n\t\tconst paidDiff = Math.abs(value - match.paid);\n\t\tconst grandDiff = Math.abs(value - match.grand);\n\t\tconst paidPct = computeAssistantRelativeDiffPct(value, match.paid);\n\t\tconst grandPct = computeAssistantRelativeDiffPct(value, match.grand);\n\t\tsumPaidDiffPct += paidPct;\n\t\tsumGrandDiffPct += grandPct;\n\t\tmaxPaidDiffPct = Math.max(maxPaidDiffPct, paidPct);\n\t\tmaxGrandDiffPct = Math.max(maxGrandDiffPct, grandPct);\n\t\tif (paidDiff < grandDiff) {\n\t\t\tpaidCloserCount += 1;\n\t\t}\n\t\telse if (grandDiff < paidDiff) {\n\t\t\tgrandCloserCount += 1;\n\t\t}\n\t\tconst gapPct = computeAssistantRelativeDiffPct(match.paid, match.grand);\n\t\tsumPaidGrandGapPct += gapPct;\n\t\tif (Math.min(paidPct, grandPct) >= AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD) {\n\t\t\thighVarianceMonths.push(month);\n\t\t}\n\t});\n\n\tconst checks: Array<{ name: string; status: 'pass' | 'warn'; details: string }> = [];\n\tconst warnings: string[] = [];\n\tconst avgPaidDiffPct = comparedMonths ? (sumPaidDiffPct / comparedMonths) : 0;\n\tconst avgGrandDiffPct = comparedMonths ? (sumGrandDiffPct / comparedMonths) : 0;\n\tconst avgPaidGrandGapPct = comparedMonths ? (sumPaidGrandGapPct / comparedMonths) : 0;\n\tconst usesPaidGrandFallbackMetric = hasAssistantPaidGrandFallbackExpr(params.pipeline || []);\n\n\tlet baselineMetric = 'unknown';\n\tif (comparedMonths) {\n\t\tif (paidCloserCount > grandCloserCount) {\n\t\t\tbaselineMetric = 'paid_total (date_paid)';\n\t\t}\n\t\telse if (grandCloserCount > paidCloserCount) {\n\t\t\tbaselineMetric = 'grand_total (date_paid)';\n\t\t}\n\t\telse {\n\t\t\tbaselineMetric = 'mixed';\n\t\t}\n\t}\n\n\tif (!comparedMonths) {\n\t\tchecks.push({\n\t\t\tname: 'Cross-check coverage',\n\t\t\tstatus: 'warn',\n\t\t\tdetails: 'No overlapping month rows were available for verification.'\n\t\t});\n\t\twarnings.push('Could not cross-check this result against alternate invoice total fields for the same months.');\n\t}\n\telse {\n\t\tchecks.push({\n\t\t\tname: 'Metric alignment',\n\t\t\tstatus: baselineMetric === 'mixed' && !usesPaidGrandFallbackMetric ? 'warn' : 'pass',\n\t\t\tdetails: baselineMetric === 'mixed' && usesPaidGrandFallbackMetric\n\t\t\t\t? 'Result uses explicit paid_total fallback grand_total logic.'\n\t\t\t\t: `Result aligns most with ${baselineMetric}.`\n\t\t});\n\t\tif (baselineMetric === 'mixed' && !usesPaidGrandFallbackMetric) {\n\t\t\twarnings.push('Revenue appears to mix definitions across months (paid_total vs grand_total).');\n\t\t}\n\t\tchecks.push({\n\t\t\tname: 'Field variance',\n\t\t\tstatus: avgPaidGrandGapPct >= AI_ASSISTANT_REVENUE_VERIFY_PAID_GRAND_GAP_WARN_THRESHOLD ? 'warn' : 'pass',\n\t\t\tdetails: `Average paid-vs-grand gap: ${round(avgPaidGrandGapPct * 100, 2)}%.`\n\t\t});\n\t\tif (avgPaidGrandGapPct >= AI_ASSISTANT_REVENUE_VERIFY_PAID_GRAND_GAP_WARN_THRESHOLD) {\n\t\t\twarnings.push(\n\t\t\t\t`paid_total and grand_total differ materially for this period (${round(avgPaidGrandGapPct * 100, 2)}% average gap).`\n\t\t\t);\n\t\t}\n\t}\n\n\tconst rollingWindow = detectAssistantRollingMonthWindow(params.pipeline || []);\n\tconst fullMonthWindow = detectAssistantFullMonthWindow(params.pipeline || []);\n\tlet rollingWindowBounds: ReturnType<typeof resolveAssistantRollingWindowBounds> | null = null;\n\tlet fullMonthWindowBounds: ReturnType<typeof resolveAssistantRollingWindowBounds> | null = null;\n\tlet verificationWindow: Record<string, any> | null = null;\n\tif (rollingWindow?.months && rollingWindow?.upperNow) {\n\t\trollingWindowBounds = resolveAssistantRollingWindowBounds(rollingWindow.months);\n\t\tconst rollingStart = formatAssistantIsoDateOnly(rollingWindowBounds.rollingStart);\n\t\tconst rollingEnd = formatAssistantIsoDateOnly(rollingWindowBounds.now);\n\t\tconst fullMonthStart = formatAssistantIsoDateOnly(rollingWindowBounds.startOfWindow);\n\t\tconst fullMonthEndExclusive = formatAssistantIsoDateOnly(rollingWindowBounds.startOfCurrentMonth);\n\t\tverificationWindow = {\n\t\t\ttype: 'rolling_last_n_months',\n\t\t\tmonths: rollingWindow.months,\n\t\t\tstartDate: rollingStart,\n\t\t\tendDate: rollingEnd,\n\t\t\ttimezone: 'UTC',\n\t\t\tfullMonthStartDate: fullMonthStart,\n\t\t\tfullMonthEndDateExclusive: fullMonthEndExclusive\n\t\t};\n\t\tchecks.push({\n\t\t\tname: 'Date window shape',\n\t\t\tstatus: 'warn',\n\t\t\tdetails: `Query uses rolling $$NOW bounds (${rollingStart} to ${rollingEnd} UTC; last ${rollingWindow.months} months), which can include partial months.`\n\t\t});\n\t\twarnings.push(\n\t\t\t`Date window is rolling (${rollingStart} to ${rollingEnd} UTC; last ${rollingWindow.months} months), so first/current months may be partial.`\n\t\t);\n\t}\n\telse if (fullMonthWindow?.months && fullMonthWindow?.upperMonthStart) {\n\t\tfullMonthWindowBounds = resolveAssistantRollingWindowBounds(fullMonthWindow.months);\n\t\tconst fullMonthStart = formatAssistantIsoDateOnly(fullMonthWindowBounds.startOfWindow);\n\t\tconst fullMonthEndExclusive = formatAssistantIsoDateOnly(fullMonthWindowBounds.startOfCurrentMonth);\n\t\tconst fullMonthEndInclusiveDate = new Date(fullMonthWindowBounds.startOfCurrentMonth);\n\t\tfullMonthEndInclusiveDate.setUTCDate(fullMonthEndInclusiveDate.getUTCDate() - 1);\n\t\tconst fullMonthEnd = formatAssistantIsoDateOnly(fullMonthEndInclusiveDate);\n\t\tverificationWindow = {\n\t\t\ttype: 'full_month_last_n_months',\n\t\t\tmonths: fullMonthWindow.months,\n\t\t\tstartDate: fullMonthStart,\n\t\t\tendDate: fullMonthEnd,\n\t\t\tendDateExclusive: fullMonthEndExclusive,\n\t\t\ttimezone: 'UTC'\n\t\t};\n\t\tchecks.push({\n\t\t\tname: 'Date window shape',\n\t\t\tstatus: 'pass',\n\t\t\tdetails: `Query uses full-month calendar bounds (${fullMonthStart} to ${fullMonthEnd} UTC; last ${fullMonthWindow.months} full months).`\n\t\t});\n\t}\n\telse {\n\t\tchecks.push({\n\t\t\tname: 'Date window shape',\n\t\t\tstatus: 'pass',\n\t\t\tdetails: 'No rolling $$NOW month window pattern detected.'\n\t\t});\n\t}\n\n\tconst normalizedMetric = normalizeAssistantVerificationMetric(baselineMetric);\n\tif (rollingWindow?.months && rollingWindow?.upperNow && rollingWindowBounds) {\n\t\tconst bounds = rollingWindowBounds;\n\t\tconst fullMonthMatch = mergeAssistantMatch(baseMatchNoDate, {\n\t\t\t[dateField]: {\n\t\t\t\t$gte: bounds.startOfWindow,\n\t\t\t\t$lt: bounds.startOfCurrentMonth\n\t\t\t}\n\t\t});\n\t\ttry {\n\t\t\tconst fullMonthDocs = await params.db.collection(params.collection)\n\t\t\t\t.aggregate(buildAssistantMonthlyRevenueVerificationPipeline(fullMonthMatch, dateField), params.aggregateOptions || {})\n\t\t\t\t.toArray();\n\t\t\tconst fullMonthMap = mapAssistantMetricByMonth(\n\t\t\t\tmapAssistantVerificationDocsByMonth(fullMonthDocs),\n\t\t\t\tnormalizedMetric\n\t\t\t);\n\t\t\tconst fullMonthDiff = compareAssistantMonthlyValueMaps(baseMap, fullMonthMap);\n\t\t\tchecks.push({\n\t\t\t\tname: 'Full-month cross-check',\n\t\t\t\tstatus: fullMonthDiff.comparedMonths && fullMonthDiff.avgDiffPct < AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD ? 'pass' : 'warn',\n\t\t\t\tdetails: fullMonthDiff.comparedMonths\n\t\t\t\t\t? `Compared ${fullMonthDiff.comparedMonths} month(s); avg diff ${round(fullMonthDiff.avgDiffPct * 100, 2)}%.`\n\t\t\t\t\t: 'No overlapping months for full-month cross-check.'\n\t\t\t});\n\t\t\tif (fullMonthDiff.comparedMonths >= 2 && fullMonthDiff.avgDiffPct >= AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD) {\n\t\t\t\twarnings.push(\n\t\t\t\t\t`Rolling-window totals differ from full-month totals by ${round(fullMonthDiff.avgDiffPct * 100, 2)}% on average.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!fullMonthDiff.comparedMonths) {\n\t\t\t\twarnings.push('Could not compare rolling-window results against full-month buckets.');\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\tchecks.push({\n\t\t\t\tname: 'Full-month cross-check',\n\t\t\t\tstatus: 'warn',\n\t\t\t\tdetails: 'Full-month verification query failed.'\n\t\t\t});\n\t\t\twarnings.push('Full-month verification query failed.');\n\t\t}\n\t}\n\n\tconst alternateDateField = dateField === 'date_paid'\n\t\t? 'date_invoice'\n\t\t: dateField === 'date_invoice'\n\t\t\t? 'date_paid'\n\t\t\t: '';\n\tif (alternateDateField) {\n\t\tlet alternateDateCondition: any = null;\n\t\tif (rollingWindow?.months && rollingWindow?.upperNow && rollingWindowBounds) {\n\t\t\tconst bounds = rollingWindowBounds;\n\t\t\talternateDateCondition = {\n\t\t\t\t$gte: bounds.rollingStart,\n\t\t\t\t$lte: bounds.now\n\t\t\t};\n\t\t}\n\t\telse if (fullMonthWindow?.months && fullMonthWindow?.upperMonthStart && fullMonthWindowBounds) {\n\t\t\tconst bounds = fullMonthWindowBounds;\n\t\t\talternateDateCondition = {\n\t\t\t\t$gte: bounds.startOfWindow,\n\t\t\t\t$lt: bounds.startOfCurrentMonth\n\t\t\t};\n\t\t}\n\t\telse if (primaryDateCondition && typeof primaryDateCondition === 'object') {\n\t\t\talternateDateCondition = primaryDateCondition;\n\t\t}\n\t\tif (alternateDateCondition) {\n\t\t\tconst alternateMatch = mergeAssistantMatch(baseMatchNoDate, { [alternateDateField]: alternateDateCondition });\n\t\t\ttry {\n\t\t\t\tconst alternateDocs = await params.db.collection(params.collection)\n\t\t\t\t\t.aggregate(\n\t\t\t\t\t\tbuildAssistantMonthlyRevenueVerificationPipeline(alternateMatch, alternateDateField),\n\t\t\t\t\t\tparams.aggregateOptions || {}\n\t\t\t\t\t)\n\t\t\t\t\t.toArray();\n\t\t\t\tconst alternateMap = mapAssistantMetricByMonth(\n\t\t\t\t\tmapAssistantVerificationDocsByMonth(alternateDocs),\n\t\t\t\t\tnormalizedMetric\n\t\t\t\t);\n\t\t\t\tconst alternateDiff = compareAssistantMonthlyValueMaps(baseMap, alternateMap);\n\t\t\t\tchecks.push({\n\t\t\t\t\tname: `Alternate date field (${alternateDateField})`,\n\t\t\t\t\tstatus: alternateDiff.comparedMonths && alternateDiff.avgDiffPct < AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD ? 'pass' : 'warn',\n\t\t\t\t\tdetails: alternateDiff.comparedMonths\n\t\t\t\t\t\t? `Compared ${alternateDiff.comparedMonths} month(s); avg diff ${round(alternateDiff.avgDiffPct * 100, 2)}%.`\n\t\t\t\t\t\t: 'No overlapping months for alternate date-field cross-check.'\n\t\t\t\t});\n\t\t\t\tif (alternateDiff.comparedMonths >= 2 && alternateDiff.avgDiffPct >= AI_ASSISTANT_REVENUE_VERIFY_DIFF_WARN_THRESHOLD) {\n\t\t\t\t\twarnings.push(\n\t\t\t\t\t\t`Switching from ${dateField} to ${alternateDateField} changes monthly totals by ${round(alternateDiff.avgDiffPct * 100, 2)}% on average.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tchecks.push({\n\t\t\t\t\tname: `Alternate date field (${alternateDateField})`,\n\t\t\t\t\tstatus: 'warn',\n\t\t\t\t\tdetails: 'Alternate date-field verification query failed.'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tif (comparedMonths >= 2 && highVarianceMonths.length > 0 && highVarianceMonths.length < comparedMonths) {\n\t\twarnings.push(`High variance months vs both paid/grand checks: ${highVarianceMonths.join(', ')}.`);\n\t}\n\n\treturn {\n\t\ttype: 'invoice_revenue_monthly',\n\t\tchecks,\n\t\twarnings,\n\t\tmetrics: {\n\t\t\tbaselineField: amountKey,\n\t\t\tdateField,\n\t\t\tcomparedMonths,\n\t\t\tavgDiffToPaidPct: round(avgPaidDiffPct * 100, 2),\n\t\t\tavgDiffToGrandPct: round(avgGrandDiffPct * 100, 2),\n\t\t\tmaxDiffToPaidPct: round(maxPaidDiffPct * 100, 2),\n\t\t\tmaxDiffToGrandPct: round(maxGrandDiffPct * 100, 2),\n\t\t\tavgPaidGrandGapPct: round(avgPaidGrandGapPct * 100, 2),\n\t\t\t...(verificationWindow ? { window: verificationWindow } : {})\n\t\t}\n\t};\n}\n\nfunction normalizeAssistantMonthBucket(value: any): string {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn '';\n\t}\n\tif (value instanceof Date) {\n\t\tif (Number.isNaN(value.getTime())) {\n\t\t\treturn '';\n\t\t}\n\t\treturn value.toISOString().slice(0, 7);\n\t}\n\tif (typeof value === 'string') {\n\t\tconst trimmed = normalizeOptionalString(value);\n\t\tif (!trimmed) {\n\t\t\treturn '';\n\t\t}\n\t\tconst directMatch = trimmed.match(/^(\\d{4})-(\\d{2})(?:$|[^0-9])/);\n\t\tif (directMatch) {\n\t\t\tconst month = Number(directMatch[2]);\n\t\t\tif (Number.isFinite(month) && month >= 1 && month <= 12) {\n\t\t\t\treturn `${directMatch[1]}-${directMatch[2]}`;\n\t\t\t}\n\t\t}\n\t\tconst parsed = Date.parse(trimmed);\n\t\tif (!Number.isNaN(parsed)) {\n\t\t\treturn new Date(parsed).toISOString().slice(0, 7);\n\t\t}\n\t\treturn '';\n\t}\n\tif (typeof value === 'object') {\n\t\tconst yearRaw = (value as any)?.year ?? (value as any)?._year;\n\t\tconst monthRaw = (value as any)?.month ?? (value as any)?._month;\n\t\tconst year = Number(yearRaw);\n\t\tconst month = Number(monthRaw);\n\t\tif (\n\t\t\tNumber.isFinite(year)\n\t\t\t&& Number.isFinite(month)\n\t\t\t&& month >= 1\n\t\t\t&& month <= 12\n\t\t) {\n\t\t\tconst yearText = String(Math.trunc(year)).padStart(4, '0');\n\t\t\tconst monthText = String(Math.trunc(month)).padStart(2, '0');\n\t\t\treturn `${yearText}-${monthText}`;\n\t\t}\n\t}\n\treturn '';\n}\n\nfunction resolveAssistantMonthlyKey(documents: any[]): string {\n\tconst first = Array.isArray(documents) ? documents.find(doc => doc && typeof doc === 'object') : null;\n\tif (!first) {\n\t\treturn '';\n\t}\n\treturn Object.keys(first).find((key) => {\n\t\tconst value = (first as any)[key];\n\t\treturn !!normalizeAssistantMonthBucket(value);\n\t}) || '';\n}\n\nfunction resolveAssistantNumericAmountKey(documents: any[], monthKey: string): string {\n\tconst first = Array.isArray(documents) ? documents.find(doc => doc && typeof doc === 'object') : null;\n\tif (!first) {\n\t\treturn '';\n\t}\n\tconst currencyLike = Object.keys(first).filter((key) => {\n\t\tif (key === monthKey) {\n\t\t\treturn false;\n\t\t}\n\t\tconst value = Number((first as any)[key]);\n\t\tif (!Number.isFinite(value)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn /(revenue|amount|total|sales|billing|paid|grand)/i.test(key);\n\t});\n\tif (currencyLike.length) {\n\t\treturn currencyLike[0];\n\t}\n\treturn Object.keys(first).find((key) => {\n\t\tif (key === monthKey) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Number.isFinite(Number((first as any)[key]));\n\t}) || '';\n}\n\nfunction mapAssistantRevenueByMonth(documents: any[], monthKey: string, valueKey: string): Map<string, number> {\n\tconst mapped = new Map<string, number>();\n\t(Array.isArray(documents) ? documents : []).forEach((doc) => {\n\t\tconst month = normalizeAssistantMonthBucket(doc?.[monthKey]);\n\t\tif (!month) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = Number(doc?.[valueKey]);\n\t\tif (!Number.isFinite(value)) {\n\t\t\treturn;\n\t\t}\n\t\tmapped.set(month, (mapped.get(month) || 0) + value);\n\t});\n\treturn mapped;\n}\n\nfunction hasAssistantPaidGrandFallbackExpr(value: any): boolean {\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => hasAssistantPaidGrandFallbackExpr(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tconst ifNull = (value as any).$ifNull;\n\tif (Array.isArray(ifNull) && ifNull.length >= 2) {\n\t\tconst first = normalizeOptionalString(ifNull[0]).replace(/^\\$/, '');\n\t\tconst second = normalizeOptionalString(ifNull[1]).replace(/^\\$/, '');\n\t\tconst pair = new Set([first, second]);\n\t\tif (pair.has('paid_total') && pair.has('grand_total')) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn Object.keys(value).some((key) => hasAssistantPaidGrandFallbackExpr((value as any)[key]));\n}\n\nfunction mergeAssistantPreGroupMatchStages(pipeline: Array<Record<string, any>>, groupIndex: number): Record<string, any> {\n\tconst matches: any[] = [];\n\tfor (let i = 0; i < groupIndex; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') {\n\t\t\tmatches.push(stage.$match);\n\t\t}\n\t}\n\tif (!matches.length) {\n\t\treturn {};\n\t}\n\tif (matches.length === 1) {\n\t\treturn matches[0];\n\t}\n\treturn { $and: matches };\n}\n\nfunction detectAssistantRollingMonthWindow(pipeline: Array<Record<string, any>>): { months: number; upperNow: boolean } | null {\n\tconst detected = detectAssistantMonthWindowFromPipeline(pipeline);\n\tif (!detected || detected.mode !== 'rolling') {\n\t\treturn null;\n\t}\n\treturn {\n\t\tmonths: detected.months,\n\t\tupperNow: true\n\t};\n}\n\nfunction detectAssistantFullMonthWindow(pipeline: Array<Record<string, any>>): { months: number; upperMonthStart: boolean } | null {\n\tconst detected = detectAssistantMonthWindowFromPipeline(pipeline);\n\tif (!detected || detected.mode !== 'full_month') {\n\t\treturn null;\n\t}\n\treturn {\n\t\tmonths: detected.months,\n\t\tupperMonthStart: true\n\t};\n}\n\nfunction buildAssistantMonthlyRevenueVerificationPipeline(\n\tmatch: Record<string, any> | null | undefined,\n\tdateField: string\n): Array<Record<string, any>> {\n\tconst pipeline: Array<Record<string, any>> = [];\n\tif (match && typeof match === 'object' && Object.keys(match).length) {\n\t\tpipeline.push({ $match: match });\n\t}\n\tpipeline.push(\n\t\t{\n\t\t\t$group: {\n\t\t\t\t_id: {\n\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\tformat: '%Y-%m',\n\t\t\t\t\t\tdate: `$${dateField}`\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpaid_total_sum: { $sum: { $ifNull: ['$paid_total', 0] } },\n\t\t\t\tgrand_total_sum: { $sum: { $ifNull: ['$grand_total', 0] } },\n\t\t\t\tinvoice_count: { $sum: 1 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t$project: {\n\t\t\t\t_id: 0,\n\t\t\t\tmonth: '$_id',\n\t\t\t\tpaid_total_sum: 1,\n\t\t\t\tgrand_total_sum: 1,\n\t\t\t\tinvoice_count: 1\n\t\t\t}\n\t\t},\n\t\t{ $sort: { month: 1 } },\n\t\t{ $limit: 36 }\n\t);\n\treturn pipeline;\n}\n\nfunction mapAssistantVerificationDocsByMonth(docs: any[]): Map<string, { paid: number; grand: number; count: number }> {\n\tconst mapped = new Map<string, { paid: number; grand: number; count: number }>();\n\t(Array.isArray(docs) ? docs : []).forEach((row) => {\n\t\tconst month = normalizeAssistantMonthBucket(row?.month);\n\t\tif (!month) {\n\t\t\treturn;\n\t\t}\n\t\tconst paid = Number(row?.paid_total_sum);\n\t\tconst grand = Number(row?.grand_total_sum);\n\t\tconst count = Number(row?.invoice_count);\n\t\tmapped.set(month, {\n\t\t\tpaid: Number.isFinite(paid) ? paid : 0,\n\t\t\tgrand: Number.isFinite(grand) ? grand : 0,\n\t\t\tcount: Number.isFinite(count) ? count : 0\n\t\t});\n\t});\n\treturn mapped;\n}\n\nfunction normalizeAssistantVerificationMetric(value: string): 'paid' | 'grand' | 'mixed' {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized.startsWith('paid_total')) {\n\t\treturn 'paid';\n\t}\n\tif (normalized.startsWith('grand_total')) {\n\t\treturn 'grand';\n\t}\n\treturn 'mixed';\n}\n\nfunction mapAssistantMetricByMonth(\n\tsource: Map<string, { paid: number; grand: number; count: number }>,\n\tmetric: 'paid' | 'grand' | 'mixed'\n): Map<string, number> {\n\tconst mapped = new Map<string, number>();\n\tsource.forEach((value, month) => {\n\t\tconst next = metric === 'paid'\n\t\t\t? value.paid\n\t\t\t: metric === 'grand'\n\t\t\t\t? value.grand\n\t\t\t\t: value.paid || value.grand;\n\t\tmapped.set(month, Number.isFinite(next) ? next : 0);\n\t});\n\treturn mapped;\n}\n\nfunction computeAssistantRelativeDiffPct(baseValue: number, compareValue: number): number {\n\tconst left = Number.isFinite(baseValue) ? baseValue : 0;\n\tconst right = Number.isFinite(compareValue) ? compareValue : 0;\n\tconst denom = Math.max(Math.abs(left), Math.abs(right), 1);\n\treturn Math.abs(left - right) / denom;\n}\n\nfunction compareAssistantMonthlyValueMaps(\n\tbase: Map<string, number>,\n\tcompare: Map<string, number>\n): { comparedMonths: number; avgDiffPct: number; maxDiffPct: number } {\n\tlet comparedMonths = 0;\n\tlet sumDiffPct = 0;\n\tlet maxDiffPct = 0;\n\tbase.forEach((baseValue, month) => {\n\t\tconst compareValue = compare.get(month);\n\t\tif (typeof compareValue !== 'number') {\n\t\t\treturn;\n\t\t}\n\t\tconst diffPct = computeAssistantRelativeDiffPct(baseValue, compareValue);\n\t\tcomparedMonths += 1;\n\t\tsumDiffPct += diffPct;\n\t\tmaxDiffPct = Math.max(maxDiffPct, diffPct);\n\t});\n\treturn {\n\t\tcomparedMonths,\n\t\tavgDiffPct: comparedMonths ? (sumDiffPct / comparedMonths) : 0,\n\t\tmaxDiffPct\n\t};\n}\n\nfunction mergeAssistantMatch(base: any, extra: Record<string, any>): Record<string, any> {\n\tconst baseObj = base && typeof base === 'object' ? base : {};\n\tconst extraObj = extra && typeof extra === 'object' ? extra : {};\n\tif (!Object.keys(baseObj).length) {\n\t\treturn extraObj;\n\t}\n\tif (!Object.keys(extraObj).length) {\n\t\treturn baseObj;\n\t}\n\treturn { $and: [baseObj, extraObj] };\n}\n\nfunction resolveAssistantRollingWindowBounds(months: number): {\n\tnow: Date;\n\trollingStart: Date;\n\tstartOfCurrentMonth: Date;\n\tstartOfWindow: Date;\n} {\n\tconst now = new Date();\n\tconst rollingStart = new Date(now);\n\trollingStart.setUTCMonth(rollingStart.getUTCMonth() - months);\n\tconst startOfCurrentMonth = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1));\n\tconst startOfWindow = new Date(Date.UTC(\n\t\tstartOfCurrentMonth.getUTCFullYear(),\n\t\tstartOfCurrentMonth.getUTCMonth() - months,\n\t\t1\n\t));\n\treturn {\n\t\tnow,\n\t\trollingStart,\n\t\tstartOfCurrentMonth,\n\t\tstartOfWindow\n\t};\n}\n\nfunction formatAssistantIsoDateOnly(value: Date): string {\n\tif (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n\t\treturn '';\n\t}\n\treturn value.toISOString().slice(0, 10);\n}\n\nexport function extractAssistantMongoDirective(content: string): AssistantMongoDirective | null {\n\tconst lines = String(content || '').split('\\n');\n\tlet directiveIndex = -1;\n\tlet directiveLine = '';\n\tlet directiveType: AssistantMongoDirective['type'] | null = null;\n\tconst directiveIndexes = new Set<number>();\n\tlines.forEach((line, index) => {\n\t\tconst normalized = line.trim().replace(/^[-*]+\\s*/, '');\n\t\tconst upper = normalized.toUpperCase();\n\t\tif (upper.startsWith('REPORT_BUILDER_READ:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'read';\n\t\t\treturn;\n\t\t}\n\t\tif (upper.startsWith('REPORT_BUILDER_AGG:') || upper.startsWith('REPORT_BUILDER_AGGREGATE:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'aggregate';\n\t\t\treturn;\n\t\t}\n\t\t// Backward compatibility for existing assistant responses.\n\t\tif (upper.startsWith('MONGO_READ:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'read';\n\t\t\treturn;\n\t\t}\n\t\tif (upper.startsWith('MONGO_AGG:') || upper.startsWith('MONGO_AGGREGATE:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'aggregate';\n\t\t}\n\t});\n\tif (directiveIndex === -1 || !directiveType) {\n\t\treturn null;\n\t}\n\tconst colonIndex = directiveLine.indexOf(':');\n\tconst after = colonIndex >= 0 ? directiveLine.slice(colonIndex + 1).trim() : '';\n\tconst parsed = after ? parseJsonObject(after) : null;\n\tconst payload = parsed && typeof parsed === 'object' ? parsed : null;\n\tconst cleaned = lines.filter((_, index) => !directiveIndexes.has(index)).join('\\n').trim();\n\treturn {\n\t\ttype: directiveType,\n\t\tpayload,\n\t\tcleaned,\n\t\trawLine: directiveLine\n\t};\n}\n\nfunction isAssistantExecutableDirective(directive: AssistantMongoDirective | null): boolean {\n\tif (!directive || !directive.payload || typeof directive.payload !== 'object') {\n\t\treturn false;\n\t}\n\tconst collection = normalizeOptionalString((directive.payload as any).collection);\n\tif (!collection) {\n\t\treturn false;\n\t}\n\tif (directive.type === 'aggregate') {\n\t\treturn Array.isArray((directive.payload as any).pipeline);\n\t}\n\treturn true;\n}\n\nfunction normalizeAssistantDirectiveHints(hints?: AiAssistantDirectiveHints): AiAssistantDirectiveHints | undefined {\n\tif (!hints || typeof hints !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst normalize = (values: unknown, max: number): string[] => {\n\t\tif (!Array.isArray(values) || !max) {\n\t\t\treturn [];\n\t\t}\n\t\treturn mergeAssistantHintValues(\n\t\t\tvalues\n\t\t\t\t.map(value => normalizeOptionalString(value))\n\t\t\t\t.filter(Boolean) as string[]\n\t\t).slice(0, max);\n\t};\n\tconst normalized: AiAssistantDirectiveHints = {};\n\tconst collectionHints = normalize(hints.collectionHints, 8);\n\tconst rankedCollections = normalize(hints.rankedCollections, 8);\n\tconst fieldHints = normalize(hints.fieldHints, 12);\n\tconst schemaHints = normalize(hints.schemaHints, 8);\n\tif (collectionHints.length) {\n\t\tnormalized.collectionHints = collectionHints;\n\t}\n\tif (rankedCollections.length) {\n\t\tnormalized.rankedCollections = rankedCollections;\n\t}\n\tif (fieldHints.length) {\n\t\tnormalized.fieldHints = fieldHints;\n\t}\n\tif (schemaHints.length) {\n\t\tnormalized.schemaHints = schemaHints;\n\t}\n\treturn Object.keys(normalized).length ? normalized : undefined;\n}\n\nexport function buildAssistantToolRequest(\n\tdirective: AssistantMongoDirective,\n\tpayload: AiCodexRunInput,\n\thints?: AiAssistantDirectiveHints\n): Record<string, any> {\n\tconst base = directive.payload && typeof directive.payload === 'object'\n\t\t? restoreMongoSafeObject(directive.payload)\n\t\t: {};\n\tconst request: Record<string, any> = { ...base };\n\tif (!request.permissionView) {\n\t\trequest.permissionView = resolveDefaultAssistantPermissionView(request.collection);\n\t}\n\trequest.permissionView = normalizeAssistantPermissionView(request.permissionView, request.collection);\n\tif (!request.id_client) {\n\t\tconst idClient = normalizeOptionalString(payload?.id_client);\n\t\tif (idClient) {\n\t\t\trequest.id_client = idClient;\n\t\t}\n\t}\n\tif (!request.id_app) {\n\t\tconst idApp = normalizeOptionalString(payload?.id_app);\n\t\tif (idApp) {\n\t\t\trequest.id_app = idApp;\n\t\t}\n\t}\n\tif (!request.mongo && payload?.mongo) {\n\t\trequest.mongo = payload.mongo;\n\t}\n\tconst normalizedHints = normalizeAssistantDirectiveHints(hints);\n\tif (normalizedHints) {\n\t\trequest.__assistantHints = normalizedHints;\n\t}\n\tif (directive.type === 'aggregate' && !request.__assistantMessage) {\n\t\tconst message = normalizeOptionalString(payload?.message);\n\t\tif (message) {\n\t\t\trequest.__assistantMessage = message;\n\t\t}\n\t}\n\treturn request;\n}\n\ntype AssistantDirectiveProbeRewriteResult = {\n\tdirective: AssistantMongoDirective;\n\tnotes: string[];\n\tfieldHints: string[];\n};\n\nfunction buildAssistantProbeDirective(directive: AssistantMongoDirective): AssistantMongoDirective | null {\n\tif (!directive?.payload || typeof directive.payload !== 'object') {\n\t\treturn null;\n\t}\n\tconst payload = deepCopy(directive.payload);\n\tif (directive.type === 'read') {\n\t\tconst options = payload.options && typeof payload.options === 'object'\n\t\t\t? { ...payload.options }\n\t\t\t: {};\n\t\tconst requestedLimit = normalizeOptionalNumber(options.limit);\n\t\toptions.limit = Math.max(1, Math.min(requestedLimit || AI_ASSISTANT_PROBE_LIMIT, AI_ASSISTANT_PROBE_LIMIT));\n\t\tdelete options.includeTotal;\n\t\tdelete options.export;\n\t\tpayload.options = options;\n\t\tpayload.query = {};\n\t}\n\telse if (directive.type === 'aggregate') {\n\t\tconst options = payload.options && typeof payload.options === 'object'\n\t\t\t? { ...payload.options }\n\t\t\t: {};\n\t\tconst requestedLimit = normalizeOptionalNumber(options.limit);\n\t\toptions.limit = Math.max(1, Math.min(requestedLimit || AI_ASSISTANT_PROBE_LIMIT, AI_ASSISTANT_PROBE_LIMIT));\n\t\tdelete options.export;\n\t\tpayload.options = options;\n\t}\n\telse {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...directive,\n\t\tpayload,\n\t\trawLine: `${normalizeOptionalString(directive.rawLine) || 'DIRECTIVE'} [probe]`\n\t};\n}\n\nfunction resolveAssistantProbeFieldHints(docs: any[]): string[] {\n\tconst rows = Array.isArray(docs) ? docs.slice(0, 3) : [];\n\tif (!rows.length) {\n\t\treturn [];\n\t}\n\tconst fields: string[] = [];\n\tconst seen = new Set<string>();\n\tconst pushField = (value: string) => {\n\t\tconst normalized = normalizeLookupPath(value) || normalizeOptionalString(value);\n\t\tif (!normalized || seen.has(normalized) || shouldRedactField(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tfields.push(normalized);\n\t};\n\trows.forEach((doc) => {\n\t\tif (!doc || typeof doc !== 'object' || Array.isArray(doc)) {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(doc).forEach((key) => {\n\t\t\tpushField(key);\n\t\t\tconst nested = (doc as any)[key];\n\t\t\tif (!nested || typeof nested !== 'object' || Array.isArray(nested) || nested instanceof Date) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(nested).forEach((nestedKey) => {\n\t\t\t\tpushField(`${key}.${nestedKey}`);\n\t\t\t});\n\t\t});\n\t});\n\treturn fields.slice(0, 12);\n}\n\nfunction applyAssistantSortFieldAliases(\n\tsort: Record<string, any> | undefined,\n\taliases: Record<string, string>\n): Record<string, any> | undefined {\n\tif (!sort || typeof sort !== 'object' || !Object.keys(aliases || {}).length) {\n\t\treturn sort;\n\t}\n\tconst next: Record<string, any> = {};\n\tObject.keys(sort).forEach((key) => {\n\t\tconst mappedKey = normalizeOptionalString((aliases as any)[key]) || key;\n\t\tif (Object.prototype.hasOwnProperty.call(next, mappedKey)) {\n\t\t\treturn;\n\t\t}\n\t\tnext[mappedKey] = (sort as any)[key];\n\t});\n\treturn next;\n}\n\nfunction doesAssistantPermissionRouteMatchCollection(permissionView: string, collection: string): boolean {\n\tconst routeKey = normalizeCollectionKey(permissionView);\n\tconst collectionFamily = normalizeAssistantCollectionFamilyName(collection);\n\tconst collectionKey = normalizeCollectionKey(collectionFamily || collection);\n\tif (!routeKey || !collectionKey || collectionKey.length < 5) {\n\t\treturn false;\n\t}\n\tconst collectionKeys = [collectionKey];\n\tif (collectionKey.endsWith('s') && collectionKey.length > 5) {\n\t\tcollectionKeys.push(collectionKey.slice(0, -1));\n\t}\n\treturn collectionKeys.some(key => key.length >= 5 && (routeKey.includes(key) || key.includes(routeKey)));\n}\n\nfunction shouldPreserveAssistantProbeCollection(\n\tdirective: AssistantMongoDirective,\n\tresolvedCollection: string,\n\tprobeResponse?: any\n): boolean {\n\tconst requestedCollection = normalizeOptionalString(directive?.payload?.collection);\n\tconst resolved = normalizeOptionalString(resolvedCollection);\n\tif (!requestedCollection || !resolved || requestedCollection === resolved) {\n\t\treturn false;\n\t}\n\tconst probeHints = normalizeAssistantDirectiveHints(probeResponse?.debug?.requestHints);\n\tif (shouldPreserveAssistantPrimaryHintCollection(requestedCollection, resolved, probeHints)) {\n\t\treturn true;\n\t}\n\tconst permissionView = normalizeOptionalString(directive?.payload?.permissionView);\n\treturn !!(\n\t\tpermissionView\n\t\t&& doesAssistantPermissionRouteMatchCollection(permissionView, requestedCollection)\n\t\t&& !doesAssistantPermissionRouteMatchCollection(permissionView, resolved)\n\t);\n}\n\nexport function shouldPreserveAssistantProbeCollectionForTesting(\n\tdirective: any,\n\tresolvedCollection: string,\n\tprobeResponse?: any\n): boolean {\n\treturn shouldPreserveAssistantProbeCollection(directive as AssistantMongoDirective, resolvedCollection, probeResponse);\n}\n\nfunction rewriteAssistantDirectiveWithProbe(\n\tdirective: AssistantMongoDirective,\n\tprobeResponse: any\n): AssistantDirectiveProbeRewriteResult {\n\tif (!directive?.payload || typeof directive.payload !== 'object') {\n\t\treturn {\n\t\t\tdirective,\n\t\t\tnotes: [],\n\t\t\tfieldHints: []\n\t\t};\n\t}\n\tconst payload = deepCopy(directive.payload);\n\tconst notes: string[] = [];\n\tconst resolvedCollection = normalizeOptionalString(\n\t\tprobeResponse?.debug?.collectionResolved\n\t\t|| probeResponse?.debug?.collection\n\t);\n\tif (\n\t\tresolvedCollection\n\t\t&& resolvedCollection !== normalizeOptionalString(payload.collection)\n\t\t&& !shouldPreserveAssistantProbeCollection(directive, resolvedCollection, probeResponse)\n\t) {\n\t\tpayload.collection = resolvedCollection;\n\t\tnotes.push(`collection:${resolvedCollection}`);\n\t}\n\tconst probeDocs = Array.isArray(probeResponse?.documents) ? probeResponse.documents : [];\n\tconst probeFieldHints = resolveAssistantProbeFieldHints(probeDocs);\n\tif (directive.type !== 'read' || !probeDocs.length) {\n\t\treturn {\n\t\t\tdirective: { ...directive, payload },\n\t\t\tnotes,\n\t\t\tfieldHints: probeFieldHints\n\t\t};\n\t}\n\tconst schemaFields = getCollectionSchemaFieldNames(\n\t\tnormalizeOptionalString(payload.collection) || resolvedCollection\n\t);\n\tconst options = payload.options && typeof payload.options === 'object'\n\t\t? { ...payload.options }\n\t\t: {};\n\tif (payload.query && typeof payload.query === 'object') {\n\t\tconst queryFields = extractQueryFieldPaths(payload.query).filter(field => !isAssistantIdField(field));\n\t\tif (queryFields.length) {\n\t\t\tconst queryAliases = resolveFieldAliases(probeDocs, queryFields, schemaFields);\n\t\t\tif (Object.keys(queryAliases).length) {\n\t\t\t\tObject.entries(queryAliases).forEach(([from, to]) => {\n\t\t\t\t\tpayload.query = replaceFieldPathDeep(payload.query, from, to);\n\t\t\t\t});\n\t\t\t\tnotes.push(`query_aliases:${Object.keys(queryAliases).length}`);\n\t\t\t\toptions.sort = applyAssistantSortFieldAliases(options.sort, queryAliases) || options.sort;\n\t\t\t}\n\t\t}\n\t}\n\tif (options.projection && typeof options.projection === 'object') {\n\t\tconst projectionFields = resolveProjectionRequestedFields(options.projection);\n\t\tif (projectionFields.length) {\n\t\t\tconst projectionAliases = resolveFieldAliases(probeDocs, projectionFields, schemaFields);\n\t\t\tif (Object.keys(projectionAliases).length) {\n\t\t\t\tconst expandedProjection = expandProjectionWithAliases(options.projection, projectionAliases);\n\t\t\t\tif (expandedProjection && expandedProjection !== options.projection) {\n\t\t\t\t\toptions.projection = expandedProjection;\n\t\t\t\t\tnotes.push(`projection_aliases:${Object.keys(projectionAliases).length}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tpayload.options = options;\n\treturn {\n\t\tdirective: {\n\t\t\t...directive,\n\t\t\tpayload\n\t\t},\n\t\tnotes,\n\t\tfieldHints: probeFieldHints\n\t};\n}\n\nfunction buildAssistantToolExecutionTelemetrySnapshot(\n\ttelemetry: AssistantToolExecutionTelemetry\n): Record<string, any> {\n\tconst probe = telemetry?.probe || null;\n\tconst final = telemetry?.final || null;\n\treturn {\n\t\tmode: telemetry?.mode || 'single_step',\n\t\talways_allow_probe: telemetry?.alwaysAllowProbe === true,\n\t\tpermission_denied: telemetry?.permissionDenied === true ? true : undefined,\n\t\tintentId: normalizeOptionalString(telemetry?.intentId) || undefined,\n\t\tacknowledgementText: normalizeOptionalString(telemetry?.acknowledgementText) || undefined,\n\t\trecipeUsed: normalizeOptionalString(telemetry?.recipeUsed) || undefined,\n\t\toverrideBlockedReason: normalizeOptionalString(telemetry?.overrideBlockedReason) || undefined,\n\t\tprobe: probe ? {\n\t\t\tattempted: probe.attempted === true,\n\t\t\tsucceeded: probe.succeeded === true ? true : undefined,\n\t\t\tfailed: probe.failed === true ? true : undefined,\n\t\t\tskipped_reason: normalizeOptionalString(probe.skippedReason) || undefined,\n\t\t\trow_count: typeof probe.rowCount === 'number' ? probe.rowCount : undefined,\n\t\t\tduration_ms: typeof probe.durationMs === 'number' ? probe.durationMs : undefined,\n\t\t\trewrites_applied: probe.rewritesApplied === true ? true : undefined,\n\t\t\trewrite_notes: Array.isArray(probe.rewriteNotes) && probe.rewriteNotes.length ? probe.rewriteNotes : undefined,\n\t\t\tfield_hints_added: typeof probe.fieldHintsAdded === 'number' ? probe.fieldHintsAdded : undefined,\n\t\t\terror: normalizeOptionalString(probe.error) || undefined\n\t\t} : undefined,\n\t\tfinal: final ? {\n\t\t\tattempted: final.attempted === true,\n\t\t\tsucceeded: final.succeeded === true ? true : undefined,\n\t\t\tfailed: final.failed === true ? true : undefined,\n\t\t\tskipped_reason: normalizeOptionalString(final.skippedReason) || undefined,\n\t\t\trow_count: typeof final.rowCount === 'number' ? final.rowCount : undefined,\n\t\t\ttotal: typeof final.total === 'number' ? final.total : undefined,\n\t\t\tduration_ms: typeof final.durationMs === 'number' ? final.durationMs : undefined,\n\t\t\ttool_type: normalizeOptionalString(final.toolType) || undefined,\n\t\t\tcollection: normalizeOptionalString(final.collection) || undefined,\n\t\t\terror: normalizeOptionalString(final.error) || undefined\n\t\t} : undefined,\n\t\toutcome: telemetry?.outcome ? {\n\t\t\tzero_rows: telemetry.outcome.zeroRows === true ? true : undefined,\n\t\t\terror: normalizeOptionalString(telemetry.outcome.error) || undefined\n\t\t} : undefined\n\t};\n}\n\nexport function buildAssistantAnswerQualityFromExecution(input: Record<string, any> = {}): Record<string, any> {\n\tconst toolResult = input.toolResult && typeof input.toolResult === 'object'\n\t\t? input.toolResult as AiAssistantToolResult\n\t\t: null;\n\tconst toolExecution = input.toolExecution && typeof input.toolExecution === 'object'\n\t\t? input.toolExecution\n\t\t: {};\n\tconst nowValue = input.now instanceof Date ? input.now : (input.now ? new Date(input.now) : new Date());\n\tconst currentDate = Number.isFinite(nowValue.getTime())\n\t\t? nowValue.toISOString().slice(0, 10)\n\t\t: new Date().toISOString().slice(0, 10);\n\tconst outcome = toolExecution.outcome && typeof toolExecution.outcome === 'object' ? toolExecution.outcome : {};\n\tconst final = toolExecution.final && typeof toolExecution.final === 'object' ? toolExecution.final : {};\n\tconst toolErrorMessage = normalizeOptionalString(input.toolError?.message || input.toolError)\n\t\t|| normalizeOptionalString(outcome.error)\n\t\t|| normalizeOptionalString(final.error);\n\tconst permissionDenied = toolExecution.permissionDenied === true\n\t\t|| toolExecution.permission_denied === true\n\t\t|| /permission|access denied|unauthorized|forbidden/i.test(toolErrorMessage);\n\tconst rowCount = typeof toolResult?.output?.rowCount === 'number'\n\t\t? toolResult.output.rowCount\n\t\t: (typeof final.rowCount === 'number'\n\t\t\t? final.rowCount\n\t\t\t: (typeof final.row_count === 'number' ? final.row_count : undefined));\n\tconst dataQuestion = input.dataQuestion === true || input.data_question === true;\n\tconst queryStatus = permissionDenied\n\t\t? 'permission_error'\n\t\t: (toolErrorMessage\n\t\t\t? 'query_error'\n\t\t\t: (toolResult\n\t\t\t\t? ((rowCount || 0) <= 0 ? 'no_data' : 'ok')\n\t\t\t\t: (dataQuestion ? 'unknown' : 'ok')));\n\tconst collection = normalizeOptionalString(toolResult?.output?.collection)\n\t\t|| normalizeOptionalString(final.collection)\n\t\t|| normalizeOptionalString(toolResult?.input?.collection);\n\tconst toolType = toolResult?.type || normalizeOptionalString(final.toolType || final.tool_type);\n\tconst evidenceSeed = JSON.stringify({\n\t\ttype: toolType,\n\t\tcollection,\n\t\trowCount,\n\t\tinput: toolResult?.input || null\n\t});\n\tconst evidenceId = createHash('sha1').update(evidenceSeed).digest('hex').slice(0, 12);\n\tconst evidenceRef = toolResult\n\t\t? `assistant-tool:${toolResult.type}:${collection || 'unknown'}:rows:${Math.max(0, Number(rowCount || 0))}:${evidenceId}`\n\t\t: '';\n\tconst reportStyleIntent = normalizeOptionalString(input.reportStyleIntent || input.report_style_intent).toLowerCase();\n\tconst requestedTimeGrain = normalizeOptionalString(input.requestedTimeGrain || input.requested_time_grain);\n\tconst message = normalizeOptionalString(input.requestMessage || input.request_message);\n\tconst relativeDateSignal = /\\b(today|yesterday|tomorrow|this\\s+(?:week|month|quarter|year)|last|past|recent|current\\s+(?:week|month|quarter|year))\\b/i.test(message);\n\tconst dateWindow = resolveAssistantDatedReportWindow(toolResult);\n\tconst requiresDateWindow = reportStyleIntent === 'dated'\n\t\t|| input.enforceDatedDirective === true\n\t\t|| input.enforce_dated_directive === true\n\t\t|| !!requestedTimeGrain\n\t\t|| input.datedDirectiveResolved === true\n\t\t|| input.dated_directive_resolved === true\n\t\t|| !!dateWindow\n\t\t|| (dataQuestion && relativeDateSignal);\n\tconst illegalQueryShape = /positional.*projection|projection.*positional|invalid.*projection|query contains restricted operators/i.test(toolErrorMessage);\n\tconst nextActions = queryStatus === 'permission_error'\n\t\t? ['Ask an authorized user or admin to grant access before answering from this dataset.']\n\t\t: queryStatus === 'query_error'\n\t\t\t? ['Fix the data query and rerun it before presenting the answer.']\n\t\t\t: queryStatus === 'no_data'\n\t\t\t\t? ['Confirm the date range, customer, and filters if matching records were expected.']\n\t\t\t\t: ['Use the cited system-data result as the answer evidence.'];\n\tconst queryExecution = toolResult ? {\n\t\tid: evidenceRef,\n\t\ttool: toolType === 'mongo_agg'\n\t\t\t? 'aiAssistantMongoAggregate'\n\t\t\t: (toolType === 'mongo_read' ? 'aiAssistantMongoRead' : (toolType || 'aiAssistantTool')),\n\t\ttype: toolType,\n\t\tstatus: queryStatus,\n\t\tqueryStatus,\n\t\tcollection: collection || undefined,\n\t\tresultCount: Math.max(0, Number(rowCount || 0)),\n\t\trowCount: Math.max(0, Number(rowCount || 0)),\n\t\tlegalQueryShape: !illegalQueryShape,\n\t\tinput: toolResult.input || null,\n\t\toutput: {\n\t\t\tcollection: normalizeOptionalString(toolResult.output?.collection) || collection || undefined,\n\t\t\trowCount: Math.max(0, Number(rowCount || 0)),\n\t\t\tcolumns: Array.isArray(toolResult.output?.columns) ? toolResult.output.columns.slice(0, 40) : [],\n\t\t\ttotal: typeof toolResult.output?.total === 'number' ? toolResult.output.total : undefined,\n\t\t\ttruncated: toolResult.output?.truncated === true || toolResult.output?.display?.truncated === true\n\t\t}\n\t} : null;\n\treturn {\n\t\tqueryStatus,\n\t\tnoDataConfirmed: queryStatus === 'no_data' && !!toolResult,\n\t\trequiresQueryEvidence: dataQuestion,\n\t\t...(queryExecution ? {\n\t\t\tqueryExecutions: [queryExecution],\n\t\t\tqueryEvidenceRefs: evidenceRef ? [evidenceRef] : []\n\t\t} : {}),\n\t\trequiresCurrentDate: requiresDateWindow,\n\t\tcurrentDateUsed: currentDate,\n\t\texpectedCurrentDate: currentDate,\n\t\trequiresDateWindow,\n\t\t...(dateWindow ? {\n\t\t\tdateWindow: {\n\t\t\t\tstartDate: dateWindow.startDate,\n\t\t\t\tendDate: dateWindow.endDate,\n\t\t\t\tmonths: dateWindow.months,\n\t\t\t\tmode: dateWindow.mode\n\t\t\t}\n\t\t} : {}),\n\t\t...(illegalQueryShape ? {\n\t\t\tqueryShape: {\n\t\t\t\tlegal: false,\n\t\t\t\treason: toolErrorMessage\n\t\t\t}\n\t\t} : {}),\n\t\t...(toolResult?.input ? { mongoQuery: toolResult.input } : {}),\n\t\trequiresCitations: dataQuestion,\n\t\tcitationRefs: evidenceRef ? [evidenceRef] : [],\n\t\tevidenceRefs: evidenceRef ? [evidenceRef] : [],\n\t\tconfidenceLevel: queryStatus === 'ok'\n\t\t\t? 'high'\n\t\t\t: (queryStatus === 'no_data' ? 'medium' : 'low'),\n\t\tnextActions,\n\t\tdataSource: collection || undefined,\n\t\tcostCategory: 'assistant_answer',\n\t\tcanDraftSupportReply: queryStatus === 'ok' && !!evidenceRef,\n\t\tcanAnswerCustomer: queryStatus === 'ok' && !!evidenceRef,\n\t\trequiresHumanReview: queryStatus !== 'ok',\n\t\ttoolError: toolErrorMessage || undefined,\n\t\tdateSignalSource: requiresDateWindow\n\t\t\t? (dateWindow ? 'tool_window' : (reportStyleIntent === 'dated' || requestedTimeGrain ? 'directive_policy' : 'message_signal'))\n\t\t\t: undefined\n\t};\n}\n\nfunction buildAssistantTrimmedStringExpr(value: any): Record<string, any> {\n\treturn {\n\t\t$trim: {\n\t\t\tinput: {\n\t\t\t\t$convert: {\n\t\t\t\t\tinput: value,\n\t\t\t\t\tto: 'string',\n\t\t\t\t\tonError: '',\n\t\t\t\t\tonNull: ''\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function buildAssistantInvoiceCustomerLabelExpr(): Record<string, any> {\n\treturn {\n\t\t$let: {\n\t\t\tvars: {\n\t\t\t\tcustomer_name: buildAssistantTrimmedStringExpr('$customer_name'),\n\t\t\t\tcustomer_fullname: buildAssistantTrimmedStringExpr('$customer.fullname'),\n\t\t\t\tcustomer_nested_name: buildAssistantTrimmedStringExpr('$customer.name'),\n\t\t\t\tcustomer_scalar: buildAssistantTrimmedStringExpr('$customer'),\n\t\t\t\tclient_name: buildAssistantTrimmedStringExpr('$client_name'),\n\t\t\t\tclient_fullname: buildAssistantTrimmedStringExpr('$client.fullname'),\n\t\t\t\tclient_nested_name: buildAssistantTrimmedStringExpr('$client.name'),\n\t\t\t\tclient_scalar: buildAssistantTrimmedStringExpr('$client'),\n\t\t\t\tid_customer: buildAssistantTrimmedStringExpr('$id_customer'),\n\t\t\t\tid_client: buildAssistantTrimmedStringExpr('$id_client')\n\t\t\t},\n\t\t\tin: {\n\t\t\t\t$switch: {\n\t\t\t\t\tbranches: [\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$customer_name' }, 0] }, then: '$$customer_name' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$customer_fullname' }, 0] }, then: '$$customer_fullname' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$customer_nested_name' }, 0] }, then: '$$customer_nested_name' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$customer_scalar' }, 0] }, then: '$$customer_scalar' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$client_name' }, 0] }, then: '$$client_name' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$client_fullname' }, 0] }, then: '$$client_fullname' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$client_nested_name' }, 0] }, then: '$$client_nested_name' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$client_scalar' }, 0] }, then: '$$client_scalar' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$id_customer' }, 0] }, then: '$$id_customer' },\n\t\t\t\t\t\t{ case: { $gt: [{ $strLenCP: '$$id_client' }, 0] }, then: '$$id_client' }\n\t\t\t\t\t],\n\t\t\t\t\tdefault: 'Unknown Customer'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\ntype AssistantGenericTimeUnit = 'day' | 'week' | 'month' | 'year';\n\ntype AssistantGenericHoursIntent = {\n\ttimeGrain: AssistantGenericTimeUnit;\n\twindowUnit: AssistantGenericTimeUnit;\n\twindowAmount: number;\n\tfullCalendarPeriods: boolean;\n\taverageOverWindow: boolean;\n\tpersonName: string | null;\n};\n\nconst AI_ASSISTANT_NUMBER_WORDS: Record<string, number> = {\n\tone: 1,\n\ttwo: 2,\n\tthree: 3,\n\tfour: 4,\n\tfive: 5,\n\tsix: 6,\n\tseven: 7,\n\teight: 8,\n\tnine: 9,\n\tten: 10,\n\televen: 11,\n\ttwelve: 12\n};\n\nfunction parseAssistantNumericToken(value: string): number | null {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (/^\\d+$/.test(normalized)) {\n\t\tconst parsed = Number(normalized);\n\t\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n\t}\n\tconst wordValue = AI_ASSISTANT_NUMBER_WORDS[normalized];\n\treturn Number.isFinite(wordValue) && wordValue > 0 ? wordValue : null;\n}\n\nfunction resolveAssistantGenericTimeUnit(value: string): AssistantGenericTimeUnit | null {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (normalized.startsWith('day')) {\n\t\treturn 'day';\n\t}\n\tif (normalized.startsWith('week')) {\n\t\treturn 'week';\n\t}\n\tif (normalized.startsWith('month')) {\n\t\treturn 'month';\n\t}\n\tif (normalized.startsWith('year')) {\n\t\treturn 'year';\n\t}\n\treturn null;\n}\n\nfunction resolveAssistantGenericWindow(message: string): {\n\tunit: AssistantGenericTimeUnit;\n\tamount: number;\n\tfullCalendarPeriods: boolean;\n} | null {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst explicit = normalized.match(\n\t\t/\\b(?:last|past|previous|over\\s+the\\s+last)\\s+(\\d+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)\\s+(day|week|month|year)s?\\b/\n\t);\n\tif (explicit?.[1] && explicit?.[2]) {\n\t\tconst amount = parseAssistantNumericToken(explicit[1]);\n\t\tconst unit = resolveAssistantGenericTimeUnit(explicit[2]);\n\t\tif (amount && unit) {\n\t\t\treturn {\n\t\t\t\tunit,\n\t\t\t\tamount,\n\t\t\t\tfullCalendarPeriods: unit === 'month' || unit === 'year'\n\t\t\t};\n\t\t}\n\t}\n\tif (/\\b(?:last|past|previous|over\\s+the\\s+last)\\s+year\\b/.test(normalized)) {\n\t\treturn { unit: 'year', amount: 1, fullCalendarPeriods: true };\n\t}\n\tif (/\\b(?:last|past|previous)\\s+month\\b/.test(normalized)) {\n\t\treturn { unit: 'month', amount: 1, fullCalendarPeriods: true };\n\t}\n\tif (/\\b(?:last|past|previous)\\s+week\\b/.test(normalized)) {\n\t\treturn { unit: 'week', amount: 1, fullCalendarPeriods: true };\n\t}\n\tif (/\\b(?:last|past|previous)\\s+30\\s+days?\\b/.test(normalized)) {\n\t\treturn { unit: 'day', amount: 30, fullCalendarPeriods: false };\n\t}\n\treturn null;\n}\n\nfunction resolveAssistantGenericTimeGrain(message: string): AssistantGenericTimeUnit | null {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (/\\b(?:per|by|each)\\s+day\\b|\\bdaily\\b/.test(normalized)) {\n\t\treturn 'day';\n\t}\n\tif (/\\b(?:per|by|each)\\s+week\\b|\\bweekly\\b/.test(normalized)) {\n\t\treturn 'week';\n\t}\n\tif (/\\b(?:per|by|each)\\s+month\\b|\\bmonthly\\b/.test(normalized)) {\n\t\treturn 'month';\n\t}\n\tif (/\\b(?:per|by|each)\\s+year\\b|\\byearly\\b|\\bannually\\b/.test(normalized)) {\n\t\treturn 'year';\n\t}\n\treturn null;\n}\n\nfunction resolveAssistantGenericPersonName(message: string): string | null {\n\tconst raw = normalizeOptionalString(message);\n\tif (!raw) {\n\t\treturn null;\n\t}\n\tconst patterns = [\n\t\t/\\b(?:has|for|by)\\s+([a-z][a-z]+(?:\\s+[a-z][a-z]+){0,2})\\s+(?:billed|logged|worked|recorded|entered)\\b/i,\n\t\t/\\b(?:for|by)\\s+([a-z][a-z]+(?:\\s+[a-z][a-z]+){0,2})\\b/i\n\t];\n\tfor (const pattern of patterns) {\n\t\tconst match = raw.match(pattern);\n\t\tconst candidate = normalizeOptionalString(match?.[1]);\n\t\tif (!candidate) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst tokenized = tokenizeCollectionText(candidate);\n\t\tif (!tokenized.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (['month', 'week', 'year', 'day', 'hours', 'hour'].includes(tokenized[0])) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn candidate;\n\t}\n\treturn null;\n}\n\nfunction analyzeAssistantGenericHoursIntent(message: string): AssistantGenericHoursIntent | null {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst hasHoursSignal = /\\b(hours?|billable|billed|logged|labor|time(?:\\s+entry|sheet|tracking)?)\\b/.test(normalized);\n\tconst hasQuestionSignal = /\\b(how\\s+many|total|sum|average|avg)\\b/.test(normalized);\n\tif (!hasHoursSignal || !hasQuestionSignal) {\n\t\treturn null;\n\t}\n\tconst window = resolveAssistantGenericWindow(normalized);\n\tif (!window) {\n\t\treturn null;\n\t}\n\tconst requestedGrain = resolveAssistantGenericTimeGrain(normalized);\n\tconst averageOverWindow = /\\b(avg|average)\\b/.test(normalized)\n\t\t&& /\\b(each|per|by)\\s+(day|week|month|year)\\b/.test(normalized);\n\tlet timeGrain = requestedGrain || window.unit;\n\tif (averageOverWindow && !requestedGrain && window.unit === 'year') {\n\t\ttimeGrain = 'month';\n\t}\n\treturn {\n\t\ttimeGrain,\n\t\twindowUnit: window.unit,\n\t\twindowAmount: window.amount,\n\t\tfullCalendarPeriods: window.fullCalendarPeriods,\n\t\taverageOverWindow,\n\t\tpersonName: resolveAssistantGenericPersonName(message)\n\t};\n}\n\nfunction convertAssistantGenericWindowAmount(\n\tamount: number,\n\tfromUnit: AssistantGenericTimeUnit,\n\ttoUnit: AssistantGenericTimeUnit\n): number {\n\tif (fromUnit === toUnit) {\n\t\treturn amount;\n\t}\n\tconst daysPerUnit: Record<AssistantGenericTimeUnit, number> = {\n\t\tday: 1,\n\t\tweek: 7,\n\t\tmonth: 30,\n\t\tyear: 365\n\t};\n\tconst fromDays = amount * (daysPerUnit[fromUnit] || 1);\n\tconst converted = round(fromDays / (daysPerUnit[toUnit] || 1));\n\treturn Math.max(converted, 1);\n}\n\nfunction resolveAssistantAverageWindowDivisor(intent: AssistantGenericHoursIntent): number {\n\tif (!intent?.averageOverWindow) {\n\t\treturn 1;\n\t}\n\tconst amount = Math.max(round(intent.windowAmount || 0), 1);\n\tif (intent.windowUnit === intent.timeGrain) {\n\t\treturn amount;\n\t}\n\treturn convertAssistantGenericWindowAmount(amount, intent.windowUnit, intent.timeGrain);\n}\n\nfunction buildAssistantIfNullExpr(values: any[], fallbackValue: any): any {\n\tconst cleanValues = Array.isArray(values)\n\t\t? values.filter(value => value !== null && value !== undefined)\n\t\t: [];\n\tif (!cleanValues.length) {\n\t\treturn fallbackValue;\n\t}\n\tlet expr = fallbackValue;\n\tfor (let i = cleanValues.length - 1; i >= 0; i -= 1) {\n\t\texpr = { $ifNull: [cleanValues[i], expr] };\n\t}\n\treturn expr;\n}\n\nfunction normalizeAssistantSchemaQueryPath(field: string): string {\n\treturn normalizeLookupPath(field);\n}\n\nfunction resolveAssistantSchemaDateFields(schemaFields: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst fields: string[] = [];\n\t(schemaFields || []).forEach((field) => {\n\t\tconst normalized = normalizeAssistantSchemaQueryPath(field);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tconst lower = normalized.toLowerCase();\n\t\tif (\n\t\t\tlower === 'date'\n\t\t\t|| lower.startsWith('date_')\n\t\t\t|| lower.endsWith('_date')\n\t\t\t|| lower.endsWith('_at')\n\t\t\t|| lower === 'createdat'\n\t\t\t|| lower === 'updatedat'\n\t\t) {\n\t\t\tseen.add(normalized);\n\t\t\tfields.push(normalized);\n\t\t}\n\t});\n\tconst preferredOrder = [\n\t\t'date',\n\t\t'date_created',\n\t\t'createdAt',\n\t\t'date_invoice',\n\t\t'date_invoiced',\n\t\t'date_paid',\n\t\t'date_completed',\n\t\t'updatedAt'\n\t];\n\treturn fields.sort((a, b) => {\n\t\tconst aIndex = preferredOrder.indexOf(a);\n\t\tconst bIndex = preferredOrder.indexOf(b);\n\t\tif (aIndex !== -1 || bIndex !== -1) {\n\t\t\treturn (aIndex === -1 ? 999 : aIndex) - (bIndex === -1 ? 999 : bIndex);\n\t\t}\n\t\treturn a.localeCompare(b);\n\t});\n}\n\nfunction resolveAssistantSchemaHourMetricFields(schemaFields: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst scored: Array<{ field: string; score: number }> = [];\n\t(schemaFields || []).forEach((field) => {\n\t\tconst normalized = normalizeAssistantSchemaQueryPath(field);\n\t\tif (!normalized || seen.has(normalized) || isAssistantIdField(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tconst tokens = tokenizeFieldKey(normalized);\n\t\tif (!tokens.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst hasHours = tokens.includes('hour') || tokens.includes('hours');\n\t\tconst hasBill = tokens.includes('billable') || tokens.includes('billed') || tokens.includes('billing');\n\t\tconst hasTime = tokens.includes('time') || tokens.includes('labor') || tokens.includes('duration');\n\t\tif (!hasHours && !hasBill && !hasTime) {\n\t\t\treturn;\n\t\t}\n\t\tlet score = 0;\n\t\tif (hasHours) {\n\t\t\tscore += 3;\n\t\t}\n\t\tif (hasBill) {\n\t\t\tscore += 3;\n\t\t}\n\t\tif (hasTime) {\n\t\t\tscore += 1;\n\t\t}\n\t\tif (tokens.includes('estimated') || tokens.includes('estimate')) {\n\t\t\tscore -= 2;\n\t\t}\n\t\tif (score <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tscored.push({ field: normalized, score });\n\t});\n\treturn scored\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\treturn a.field.localeCompare(b.field);\n\t\t})\n\t\t.slice(0, 6)\n\t\t.map(entry => entry.field);\n}\n\nfunction resolveAssistantSchemaActorNameFields(schemaFields: string[]): string[] {\n\tconst scored: Array<{ field: string; score: number }> = [];\n\tconst seen = new Set<string>();\n\t(schemaFields || []).forEach((field) => {\n\t\tconst normalized = normalizeAssistantSchemaQueryPath(field);\n\t\tif (!normalized || seen.has(normalized) || isAssistantIdField(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tconst tokens = tokenizeFieldKey(normalized);\n\t\tif (!tokens.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst hasName = tokens.includes('name') || tokens.includes('fullname') || tokens.includes('display');\n\t\tconst hasActor = tokens.includes('user')\n\t\t\t|| tokens.includes('employee')\n\t\t\t|| tokens.includes('assignee')\n\t\t\t|| tokens.includes('assigned')\n\t\t\t|| tokens.includes('owner')\n\t\t\t|| tokens.includes('creator')\n\t\t\t|| tokens.includes('created')\n\t\t\t|| tokens.includes('technician');\n\t\tif (!hasName && !hasActor) {\n\t\t\treturn;\n\t\t}\n\t\tlet score = 0;\n\t\tif (hasName) {\n\t\t\tscore += 2;\n\t\t}\n\t\tif (hasActor) {\n\t\t\tscore += 2;\n\t\t}\n\t\tif (normalized.includes('client')) {\n\t\t\tscore -= 1;\n\t\t}\n\t\tif (score <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tscored.push({ field: normalized, score });\n\t});\n\treturn scored\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\treturn a.field.localeCompare(b.field);\n\t\t})\n\t\t.slice(0, 8)\n\t\t.map(entry => entry.field);\n}\n\nfunction resolveAssistantSchemaActorIdFields(schemaFields: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst fields: string[] = [];\n\t(schemaFields || []).forEach((field) => {\n\t\tconst normalized = normalizeAssistantSchemaQueryPath(field);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tconst tokens = tokenizeFieldKey(normalized);\n\t\tif (!tokens.length || !tokens.includes('id')) {\n\t\t\treturn;\n\t\t}\n\t\tconst hasActor = tokens.includes('user')\n\t\t\t|| tokens.includes('employee')\n\t\t\t|| tokens.includes('assignee')\n\t\t\t|| tokens.includes('assigned')\n\t\t\t|| tokens.includes('owner')\n\t\t\t|| tokens.includes('creator')\n\t\t\t|| tokens.includes('technician');\n\t\tif (!hasActor) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tfields.push(normalized);\n\t});\n\treturn fields.slice(0, 6);\n}\n\nfunction resolveAssistantGenericHoursCollectionCandidates(\n\tmessage: string,\n\tcollectionHints: string[],\n\tappId?: string\n): string[] {\n\tconst reportCollections = listAssistantReportBuilderCollectionsFromManager();\n\tif (!reportCollections.length) {\n\t\treturn mergeAssistantHintValues(collectionHints, resolveAssistantDefaultCollectionHints(message, appId));\n\t}\n\tconst expanded = expandAssistantTermSynonyms(message).expanded || message;\n\tconst tokens = tokenizeCollectionText(expanded);\n\tconst ranked = resolveCollectionHintsFromTokens(tokens, reportCollections, 24);\n\treturn mergeAssistantHintValues(\n\t\tcollectionHints,\n\t\tresolveAssistantDefaultCollectionHints(message, appId),\n\t\tranked,\n\t\treportCollections\n\t).slice(0, 80);\n}\n\nfunction scoreAssistantGenericHoursCollection(params: {\n\tcollection: string;\n\tmessageTokens: string[];\n\tmetricFields: string[];\n\tactorNameFields: string[];\n\tactorIdFields: string[];\n\tdateFields: string[];\n\tpersonName: string | null;\n}): number {\n\tconst baseScore = scoreCollectionMatch(params.messageTokens, params.collection);\n\tconst metricScore = Math.min(params.metricFields.length, 3) * 14;\n\tconst dateScore = Math.min(params.dateFields.length, 2) * 8;\n\tconst actorScore = params.actorNameFields.length\n\t\t? Math.min(params.actorNameFields.length, 2) * 10\n\t\t: (params.actorIdFields.length ? 5 : 0);\n\tconst personPenalty = params.personName && !params.actorNameFields.length && !params.actorIdFields.length\n\t\t? -20\n\t\t: 0;\n\tconst versionPenalty = isVersionCollectionName(params.collection) ? -20 : 0;\n\treturn baseScore + metricScore + dateScore + actorScore + personPenalty + versionPenalty;\n}\n\nfunction buildAssistantGenericHoursDateWindowExpr(intent: AssistantGenericHoursIntent): { $gte: any; $lt: any } {\n\tconst amount = Math.max(round(intent.windowAmount || 0), 1);\n\tif (intent.fullCalendarPeriods && (intent.windowUnit === 'month' || intent.windowUnit === 'year')) {\n\t\tconst monthAmount = intent.windowUnit === 'year' ? amount * 12 : amount;\n\t\tconst currentMonthStart = { $dateTrunc: { date: '$$NOW', unit: 'month' } };\n\t\treturn {\n\t\t\t$gte: { $dateSubtract: { startDate: currentMonthStart, unit: 'month', amount: monthAmount } },\n\t\t\t$lt: currentMonthStart\n\t\t};\n\t}\n\treturn {\n\t\t$gte: { $dateSubtract: { startDate: '$$NOW', unit: intent.windowUnit, amount } },\n\t\t$lt: '$$NOW'\n\t};\n}\n\nfunction buildAssistantGenericHoursDirective(\n\tmessage: string,\n\tcollectionHints: string[],\n\tappId?: string\n): AssistantMongoDirective | null {\n\tconst intent = analyzeAssistantGenericHoursIntent(message);\n\tif (!intent) {\n\t\treturn null;\n\t}\n\tconst normalizedMessage = normalizeOptionalString(message);\n\tconst expandedMessage = expandAssistantTermSynonyms(normalizedMessage).expanded || normalizedMessage;\n\tconst messageTokens = tokenizeCollectionText(expandedMessage);\n\tconst candidates = resolveAssistantGenericHoursCollectionCandidates(message, collectionHints, appId);\n\tif (!candidates.length) {\n\t\treturn null;\n\t}\n\tconst rankedCandidates = candidates\n\t\t.map((collection) => {\n\t\t\tconst schemaFields = getCollectionSchemaFieldNames(collection);\n\t\t\tconst dateFields = resolveAssistantSchemaDateFields(schemaFields);\n\t\t\tconst metricFields = resolveAssistantSchemaHourMetricFields(schemaFields);\n\t\t\tconst actorNameFields = resolveAssistantSchemaActorNameFields(schemaFields);\n\t\t\tconst actorIdFields = resolveAssistantSchemaActorIdFields(schemaFields);\n\t\t\treturn {\n\t\t\t\tcollection,\n\t\t\t\tdateFields,\n\t\t\t\tmetricFields,\n\t\t\t\tactorNameFields,\n\t\t\t\tactorIdFields,\n\t\t\t\tscore: scoreAssistantGenericHoursCollection({\n\t\t\t\t\tcollection,\n\t\t\t\t\tmessageTokens,\n\t\t\t\t\tmetricFields,\n\t\t\t\t\tactorNameFields,\n\t\t\t\t\tactorIdFields,\n\t\t\t\t\tdateFields,\n\t\t\t\t\tpersonName: intent.personName\n\t\t\t\t})\n\t\t\t};\n\t\t})\n\t\t.filter(entry => entry.dateFields.length && entry.metricFields.length && entry.score > 20)\n\t\t.sort((a, b) => b.score - a.score);\n\tconst selected = rankedCandidates[0];\n\tif (!selected) {\n\t\treturn null;\n\t}\n\tconst dateWindow = buildAssistantGenericHoursDateWindowExpr(intent);\n\tconst addFieldsStage = {\n\t\t$addFields: {\n\t\t\teffective_date: buildAssistantIfNullExpr(selected.dateFields.map(field => `$${field}`), null),\n\t\t\tmetric_value: {\n\t\t\t\t$convert: {\n\t\t\t\t\tinput: buildAssistantIfNullExpr(selected.metricFields.map(field => `$${field}`), 0),\n\t\t\t\t\tto: 'double',\n\t\t\t\t\tonError: 0,\n\t\t\t\t\tonNull: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tconst matchClauses: Record<string, any>[] = [\n\t\t{\n\t\t\teffective_date: dateWindow\n\t\t},\n\t\t{\n\t\t\tmetric_value: { $gt: 0 }\n\t\t}\n\t];\n\tif (intent.personName) {\n\t\tconst personRegex = { $regex: escapeRegexValue(intent.personName), $options: 'i' };\n\t\tconst actorNameMatches = selected.actorNameFields.map(field => ({ [field]: personRegex }));\n\t\tconst actorIdMatches = selected.actorIdFields.map(field => ({ [field]: personRegex }));\n\t\tconst actorMatches = [...actorNameMatches, ...actorIdMatches].slice(0, 12);\n\t\tif (actorMatches.length) {\n\t\t\tmatchClauses.push({ $or: actorMatches });\n\t\t}\n\t}\n\tconst grain = intent.timeGrain;\n\tconst divisor = Math.max(resolveAssistantAverageWindowDivisor(intent), 1);\n\tconst bucketExpr = grain === 'week'\n\t\t? { $dateTrunc: { date: '$effective_date', unit: 'week', startOfWeek: 'monday' } }\n\t\t: { $dateTrunc: { date: '$effective_date', unit: grain } };\n\tconst totalMetricKey = 'total_hours';\n\tconst pipeline: Array<Record<string, any>> = [\n\t\taddFieldsStage,\n\t\t{\n\t\t\t$match: {\n\t\t\t\t$and: matchClauses\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t$group: {\n\t\t\t\t_id: bucketExpr,\n\t\t\t\t[totalMetricKey]: { $sum: '$metric_value' }\n\t\t\t}\n\t\t}\n\t];\n\tif (intent.averageOverWindow) {\n\t\tconst avgColumnName = grain === 'month' ? 'avg_monthly_hours' : `avg_${grain}_hours`;\n\t\tpipeline.push(\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: null,\n\t\t\t\t\ttotal_hours: { $sum: `$${totalMetricKey}` }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\t[avgColumnName]: { $divide: ['$total_hours', divisor] }\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\telse {\n\t\tconst dateFormat = grain === 'day' || grain === 'week'\n\t\t\t? '%Y-%m-%d'\n\t\t\t: grain === 'year'\n\t\t\t\t? '%Y'\n\t\t\t\t: '%Y-%m';\n\t\tpipeline.push(\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\t[grain]: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$_id'\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t[totalMetricKey]: 1\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$sort: {\n\t\t\t\t\t[grain]: 1\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\treturn {\n\t\ttype: 'aggregate',\n\t\tpayload: {\n\t\t\tcollection: selected.collection,\n\t\t\tpermissionView: resolveDefaultAssistantPermissionView(selected.collection),\n\t\t\tpipeline,\n\t\t\toptions: {\n\t\t\t\tallowDiskUse: true,\n\t\t\t\tlimit: intent.averageOverWindow ? 20 : 400\n\t\t\t}\n\t\t},\n\t\tcleaned: '',\n\t\trawLine: 'HEURISTIC_AGG(schema-hours-user-time)'\n\t};\n}\n\nfunction isAssistantSchemaHoursHeuristicDirective(directive: AssistantMongoDirective | null): boolean {\n\tconst rawLine = normalizeOptionalString(directive?.rawLine).toLowerCase();\n\treturn rawLine.includes('heuristic_agg(schema-hours-user-time)');\n}\n\nfunction isAssistantAppDataIntentHeuristicDirective(directive: AssistantMongoDirective | null): boolean {\n\tconst rawLine = normalizeOptionalString(directive?.rawLine).toLowerCase();\n\treturn rawLine.includes('heuristic_agg(app-data-intent:') || rawLine.includes('heuristic_read(app-data-intent:');\n}\n\nfunction scoreAssistantAppDataIntent(messageText: string, intent: AiAssistantAppDataIntent): number {\n\tif ((intent.excludeTerms || []).some(term => containsAssistantHeuristicTerm(messageText, term))) {\n\t\treturn 0;\n\t}\n\treturn (intent.terms || []).reduce((score, term) => {\n\t\tif (!containsAssistantHeuristicTerm(messageText, term)) {\n\t\t\treturn score;\n\t\t}\n\t\treturn score + (term.includes(' ') ? 4 : 1);\n\t}, 0);\n}\n\nfunction selectAssistantAppDataIntent(message: string, collectionNames: string[], appId?: string): AiAssistantAppDataIntent | null {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn null;\n\t}\n\tconst availableNames = new Set((Array.isArray(collectionNames) ? collectionNames : []).map(value => normalizeOptionalString(value)).filter(Boolean));\n\tconst profile = resolveAssistantAppHeuristicProfile(appId);\n\tlet selected: { intent: AiAssistantAppDataIntent; score: number } | null = null;\n\tprofile.dataIntents.forEach((intent) => {\n\t\tif (!intent?.id || !intent.collection) {\n\t\t\treturn;\n\t\t}\n\t\tif (availableNames.size && !availableNames.has(intent.collection)) {\n\t\t\treturn;\n\t\t}\n\t\tconst score = scoreAssistantAppDataIntent(text, intent);\n\t\tif (score <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (!selected || score > selected.score) {\n\t\t\tselected = { intent, score };\n\t\t}\n\t});\n\treturn selected ? selected.intent : null;\n}\n\nfunction extractAssistantDataIntentCustomerText(message: string): string {\n\tlet value = normalizeOptionalString(message);\n\tif (!value) {\n\t\treturn '';\n\t}\n\tvalue = value.replace(/\\b(summarize|summary|show|list|give|pull|find|tell|me|about|of|the|a|an|and|amount|quantity|qty|total|totals|for|to|them|their|by)\\b/gi, ' ');\n\tvalue = value.replace(/\\b(work\\s*orders?|wos?|jobs?|invoices?|invoice|billed|billing|revenue|charged|chemicals?|chemical|sent|shipped|shipment|shipments|delivered|planned|inventory|on\\s+hand|stock|this\\s+year|ytd|year\\s+to\\s+date|current\\s+year)\\b/gi, ' ');\n\tvalue = value.replace(/\\b(last|past|current|completed|reviewed|closed)\\b/gi, ' ');\n\tvalue = value.replace(/[^a-z0-9&.' -]+/gi, ' ');\n\treturn normalizeOptionalString(value.replace(/\\s+/g, ' '));\n}\n\nfunction resolveAssistantDataIntentDateWindow(message: string): { start?: string; end?: string; year?: number } {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!/\\b(this\\s+year|ytd|year\\s+to\\s+date|current\\s+year)\\b/.test(text)) {\n\t\treturn {};\n\t}\n\tconst now = new Date();\n\tconst year = now.getUTCFullYear();\n\treturn {\n\t\tstart: new Date(Date.UTC(year, 0, 1, 0, 0, 0, 0)).toISOString(),\n\t\tend: new Date(Date.UTC(year, now.getUTCMonth(), now.getUTCDate(), 23, 59, 59, 999)).toISOString(),\n\t\tyear\n\t};\n}\n\nfunction buildAssistantDataIntentAcknowledgement(\n\tintent: AiAssistantAppDataIntent,\n\tcustomerText: string,\n\tdateWindow: { year?: number }\n): string {\n\tconst customer = customerText || 'the requested customer';\n\tconst yearText = dateWindow.year ? ` for ${dateWindow.year}` : '';\n\tif (intent.id === 'snf_job_chemical_shipments') {\n\t\treturn `I understand you want a summary of chemicals sent to ${customer} jobs${yearText}. Let me pull the work-order shipment data for you.`;\n\t}\n\tif (intent.id === 'snf_invoice_chemical_quantities') {\n\t\treturn `I understand you want invoice and billed chemical details for ${customer}${yearText}. Let me pull the invoice data for you.`;\n\t}\n\tif (intent.id === 'snf_planned_job_chemicals') {\n\t\treturn `I understand you want planned chemicals for ${customer} jobs${yearText}. Let me pull the job setup data for you.`;\n\t}\n\treturn 'I understand the data you want. Let me pull the matching records for you.';\n}\n\nfunction buildAssistantDataIntentMatchStage(\n\tcustomerText: string,\n\tdateField: string | undefined,\n\tdateWindow: { start?: string; end?: string },\n\tcustomerPaths: string[]\n): Record<string, any> {\n\tconst and: Record<string, any>[] = [];\n\tif (customerText) {\n\t\tand.push({\n\t\t\t$or: customerPaths.map(path => ({\n\t\t\t\t[path]: {\n\t\t\t\t\t$regex: customerText,\n\t\t\t\t\t$options: 'i'\n\t\t\t\t}\n\t\t\t}))\n\t\t});\n\t}\n\tif (dateField && dateWindow.start && dateWindow.end) {\n\t\tand.push({\n\t\t\t[dateField]: {\n\t\t\t\t$gte: dateWindow.start,\n\t\t\t\t$lte: dateWindow.end\n\t\t\t}\n\t\t});\n\t}\n\treturn and.length ? { $match: { $and: and } } : { $match: {} };\n}\n\nfunction buildAssistantAppDataIntentDirective(message: string, collectionNames: string[] = [], appId?: string): AssistantMongoDirective | null {\n\tconst intent = selectAssistantAppDataIntent(message, collectionNames, appId);\n\tif (!intent) {\n\t\treturn null;\n\t}\n\tconst customerText = extractAssistantDataIntentCustomerText(message);\n\tconst dateWindow = resolveAssistantDataIntentDateWindow(message);\n\tconst acknowledgementText = buildAssistantDataIntentAcknowledgement(intent, customerText, dateWindow);\n\tconst progress = intent.progress.map((entry) => {\n\t\treturn entry\n\t\t\t.replace(/\\{\\{customer\\}\\}/g, customerText || 'the requested customer')\n\t\t\t.replace(/\\{\\{year\\}\\}/g, dateWindow.year ? String(dateWindow.year) : 'the requested date range');\n\t});\n\tconst metadata = {\n\t\tintentId: intent.id,\n\t\trecipeUsed: intent.id,\n\t\tacknowledgementText,\n\t\tprogress,\n\t\tassumptions: intent.assumptions,\n\t\tfallbackCollections: intent.fallbackCollections\n\t};\n\tconst basePayload = (pipeline: Record<string, any>[]) => ({\n\t\tcollection: intent.collection,\n\t\tpermissionView: intent.permissionView || resolveDefaultAssistantPermissionView(intent.collection),\n\t\tpipeline,\n\t\toptions: {\n\t\t\tallowDiskUse: true,\n\t\t\tlimit: 20\n\t\t}\n\t});\n\tif (intent.id === 'snf_job_chemical_shipments') {\n\t\tconst pipeline: Record<string, any>[] = [\n\t\t\tbuildAssistantDataIntentMatchStage(customerText, intent.dateField || 'date_completed', dateWindow, ['customer', 'job.customer']),\n\t\t\t{ $match: { status: { $in: ['Completed', 'Reviewed', 'Closed'] } } },\n\t\t\t{ $unwind: '$chemicals' },\n\t\t\t{ $match: { 'chemicals.shipped.quantity': { $gt: 0 } } },\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: {\n\t\t\t\t\t\tid_job: '$job.id_job',\n\t\t\t\t\t\tjob: '$job.job',\n\t\t\t\t\t\tchemical: '$chemicals.chemical',\n\t\t\t\t\t\tunit: '$chemicals.unit'\n\t\t\t\t\t},\n\t\t\t\t\tqty_sent: { $sum: '$chemicals.shipped.quantity' },\n\t\t\t\t\twork_order_ids: { $addToSet: '$_id' }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tid_job: '$_id.id_job',\n\t\t\t\t\tjob: '$_id.job',\n\t\t\t\t\tchemical: '$_id.chemical',\n\t\t\t\t\tunit: '$_id.unit',\n\t\t\t\t\tqty_sent: 1,\n\t\t\t\t\twork_order_count: { $size: '$work_order_ids' }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ $sort: { qty_sent: -1, job: 1, chemical: 1 } }\n\t\t];\n\t\treturn { type: 'aggregate', payload: basePayload(pipeline), cleaned: '', rawLine: `HEURISTIC_AGG(app-data-intent:${intent.id})`, metadata };\n\t}\n\tif (intent.id === 'snf_invoice_chemical_quantities') {\n\t\tconst pipeline: Record<string, any>[] = [\n\t\t\tbuildAssistantDataIntentMatchStage(customerText, intent.dateField || 'date_created', dateWindow, ['customer', 'job.customer']),\n\t\t\t{ $unwind: '$items_chemicals' },\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: {\n\t\t\t\t\t\tid_job: '$id_job',\n\t\t\t\t\t\tjob: '$job',\n\t\t\t\t\t\tchemical: '$items_chemicals.chemical',\n\t\t\t\t\t\tunit: '$items_chemicals.unit'\n\t\t\t\t\t},\n\t\t\t\t\tquantity: { $sum: '$items_chemicals.quantity' },\n\t\t\t\t\tprice_total: { $sum: '$items_chemicals.price_total' },\n\t\t\t\t\tinvoice_ids: { $addToSet: '$_id' }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tid_job: '$_id.id_job',\n\t\t\t\t\tjob: '$_id.job',\n\t\t\t\t\tchemical: '$_id.chemical',\n\t\t\t\t\tunit: '$_id.unit',\n\t\t\t\t\tquantity: 1,\n\t\t\t\t\tprice_total: 1,\n\t\t\t\t\tinvoice_count: { $size: '$invoice_ids' }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ $sort: { price_total: -1, quantity: -1, job: 1 } }\n\t\t];\n\t\treturn { type: 'aggregate', payload: basePayload(pipeline), cleaned: '', rawLine: `HEURISTIC_AGG(app-data-intent:${intent.id})`, metadata };\n\t}\n\tif (intent.id === 'snf_planned_job_chemicals') {\n\t\tconst pipeline: Record<string, any>[] = [\n\t\t\tbuildAssistantDataIntentMatchStage(customerText, intent.dateField || 'date_job_created', dateWindow, ['customer', 'jca.customer']),\n\t\t\t{ $unwind: '$planned_chemicals' },\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: {\n\t\t\t\t\t\tid_job: '$_id',\n\t\t\t\t\t\tjob: '$job',\n\t\t\t\t\t\tchemical: '$planned_chemicals.chemical',\n\t\t\t\t\t\tunit: '$planned_chemicals.unit'\n\t\t\t\t\t},\n\t\t\t\t\tplanned_quantity: { $sum: '$planned_chemicals.quantity' }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tid_job: '$_id.id_job',\n\t\t\t\t\tjob: '$_id.job',\n\t\t\t\t\tchemical: '$_id.chemical',\n\t\t\t\t\tunit: '$_id.unit',\n\t\t\t\t\tplanned_quantity: 1\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ $sort: { planned_quantity: -1, job: 1 } }\n\t\t];\n\t\treturn { type: 'aggregate', payload: basePayload(pipeline), cleaned: '', rawLine: `HEURISTIC_AGG(app-data-intent:${intent.id})`, metadata };\n\t}\n\treturn null;\n}\n\nfunction isAssistantDeterministicHeuristicDirective(directive: AssistantMongoDirective | null): boolean {\n\treturn isAssistantSchemaHoursHeuristicDirective(directive)\n\t\t|| isAssistantAppDataIntentHeuristicDirective(directive);\n}\n\nfunction buildAssistantHeuristicDirective(\n\tmessage: string,\n\tcollectionHints: string[],\n\tcollectionNames: string[] = [],\n\tappId?: string\n): AssistantMongoDirective | null {\n\tif (!normalizeOptionalString(message)) {\n\t\treturn null;\n\t}\n\tconst appDataIntentDirective = resolveAssistantDeterministicHeuristicEnabled(\n\t\tAI_ASSISTANT_HEURISTIC_ID_APP_DATA_INTENT,\n\t\tappId\n\t)\n\t\t? buildAssistantAppDataIntentDirective(message, collectionNames, appId)\n\t\t: null;\n\tif (appDataIntentDirective) {\n\t\treturn appDataIntentDirective;\n\t}\n\tconst schemaHoursDirective = resolveAssistantDeterministicHeuristicEnabled(\n\t\tAI_ASSISTANT_HEURISTIC_ID_SCHEMA_HOURS_USER_TIME,\n\t\tappId\n\t)\n\t\t? buildAssistantGenericHoursDirective(message, collectionHints, appId)\n\t\t: null;\n\tif (schemaHoursDirective) {\n\t\treturn schemaHoursDirective;\n\t}\n\treturn null;\n}\n\nexport function resolveAssistantHeuristicDirectiveForTesting(\n\tmessage: string,\n\tcollectionHints: string[],\n\tcollectionNames: string[] = [],\n\tappId?: string\n): any {\n\treturn buildAssistantHeuristicDirective(message, collectionHints, collectionNames, appId);\n}\n\nfunction resolveDefaultAssistantPermissionView(collection?: string): string {\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tif (!normalizedCollection) {\n\t\treturn '/report-builder';\n\t}\n\tconst base = stripVersionSuffix(\n\t\tnormalizedCollection.startsWith('report-')\n\t\t\t? normalizedCollection.slice('report-'.length)\n\t\t\t: normalizedCollection\n\t);\n\tif (!base) {\n\t\treturn '/report-builder';\n\t}\n\tif (requiresInvoicePermission(base)) {\n\t\treturn '/invoice/list';\n\t}\n\tif (base.startsWith('sales-tax')) {\n\t\treturn '/sales-tax/list';\n\t}\n\tif (base.startsWith('expense')) {\n\t\treturn '/expense/list';\n\t}\n\tif (base.startsWith('distribution')) {\n\t\treturn '/distribution/list';\n\t}\n\tif (base.startsWith('prospective-client')) {\n\t\treturn '/prospective-client/list';\n\t}\n\tif (base.startsWith('client')) {\n\t\treturn '/client/list';\n\t}\n\tif (base.startsWith('customer')) {\n\t\treturn '/client/list';\n\t}\n\tif (base.startsWith('employee')) {\n\t\treturn '/employee/list';\n\t}\n\tif (base === 'jobs' || base === 'job' || base.startsWith('job-') || base.startsWith('jobs-')) {\n\t\treturn '/job/list';\n\t}\n\tif (/work[-_/ ]?orders?|maintenance[-_/ ]?orders?|repair[-_/ ]?orders?/.test(base)) {\n\t\treturn '/order/list';\n\t}\n\tif (base === 'orders' || base.startsWith('order-') || base.startsWith('orders-')) {\n\t\treturn '/order/list';\n\t}\n\tif (base.startsWith('support-ticket') || base.startsWith('supportticket')) {\n\t\treturn '/support-ticket/list';\n\t}\n\treturn '/report-builder';\n}\n\nfunction normalizeAssistantPermissionView(permissionView?: string, collection?: string): string {\n\tconst normalizedPermission = normalizeOptionalString(permissionView);\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tconst loweredPermission = normalizedPermission.toLowerCase();\n\tconst fallbackPermission = resolveDefaultAssistantPermissionView(normalizedCollection);\n\tif (!normalizedPermission) {\n\t\treturn fallbackPermission;\n\t}\n\tif (loweredPermission === '/report-builder' || loweredPermission.startsWith('/report-builder/')) {\n\t\treturn fallbackPermission;\n\t}\n\tif (loweredPermission === '/report' || loweredPermission.startsWith('/report/')) {\n\t\treturn fallbackPermission;\n\t}\n\treturn normalizedPermission;\n}\n\nfunction extractAssistantProjectedColumnsFromDirectivePayload(directivePayload: Record<string, any>): string[] {\n\tconst pipeline = Array.isArray(directivePayload?.pipeline) ? directivePayload.pipeline : [];\n\tlet lastGroupIndex = -1;\n\tpipeline.forEach((stage, index) => {\n\t\tif (stage && typeof stage === 'object' && !Array.isArray(stage) && stage.$group && typeof stage.$group === 'object') {\n\t\t\tlastGroupIndex = index;\n\t\t}\n\t});\n\tconst projected: string[] = [];\n\tconst seen = new Set<string>();\n\tpipeline.forEach((stage, stageIndex) => {\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage) || !stage.$project || typeof stage.$project !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tif (lastGroupIndex !== -1 && stageIndex <= lastGroupIndex) {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(stage.$project).forEach((key) => {\n\t\t\tif (key === '_id') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = (stage.$project as Record<string, any>)[key];\n\t\t\tif (value === 0 || value === false) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst label = formatDisplayColumnName(key) || key;\n\t\t\tif (label && !seen.has(label)) {\n\t\t\t\tseen.add(label);\n\t\t\t\tprojected.push(label);\n\t\t\t}\n\t\t});\n\t});\n\treturn projected;\n}\n\nfunction ensureAssistantDisplayColumns(\n\tdisplay: AiAssistantDisplayTable,\n\trequestedColumns: string[]\n): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns) || !Array.isArray(display.rows)) {\n\t\treturn display;\n\t}\n\tconst normalizedRequested = (Array.isArray(requestedColumns) ? requestedColumns : [])\n\t\t.map((column) => normalizeOptionalString(column))\n\t\t.filter(Boolean);\n\tif (!normalizedRequested.length) {\n\t\treturn display;\n\t}\n\tconst existing = new Set(display.columns.map(column => normalizeFieldMatchKey(column)));\n\tconst missing = normalizedRequested.filter(column => !existing.has(normalizeFieldMatchKey(column)));\n\tif (!missing.length) {\n\t\treturn display;\n\t}\n\tconst columns = [...display.columns, ...missing];\n\tconst rows = display.rows.map((row) => {\n\t\tconst next: Record<string, any> = { ...(row || {}) };\n\t\tmissing.forEach((column) => {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(next, column)) {\n\t\t\t\tnext[column] = '';\n\t\t\t}\n\t\t});\n\t\treturn next;\n\t});\n\treturn {\n\t\t...display,\n\t\tcolumns,\n\t\trows\n\t};\n}\n\nfunction resolveAssistantPipelineTimeGrain(pipeline: Array<Record<string, any>>): AssistantTimeGrain {\n\tif (!Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn null;\n\t}\n\tconst detected = new Set<AssistantTimeGrain>();\n\tconst addGrain = (value: string) => {\n\t\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\t\tif (normalized === 'day' || normalized === 'week' || normalized === 'month' || normalized === 'quarter' || normalized === 'year') {\n\t\t\tdetected.add(normalized as AssistantTimeGrain);\n\t\t}\n\t};\n\tconst visit = (value: any) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(entry => visit(entry));\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn;\n\t\t}\n\t\tif ((value as any).$dateTrunc && typeof (value as any).$dateTrunc === 'object') {\n\t\t\taddGrain((value as any).$dateTrunc.unit);\n\t\t}\n\t\tif ((value as any).$dateToString && typeof (value as any).$dateToString === 'object') {\n\t\t\tconst format = normalizeOptionalString((value as any).$dateToString.format);\n\t\t\tif (format) {\n\t\t\t\tif (/%d|%j/.test(format)) {\n\t\t\t\t\tdetected.add('day');\n\t\t\t\t}\n\t\t\t\tif (/%V|%U|%W/.test(format)) {\n\t\t\t\t\tdetected.add('week');\n\t\t\t\t}\n\t\t\t\tif (/%m/.test(format)) {\n\t\t\t\t\tdetected.add('month');\n\t\t\t\t}\n\t\t\t\tif (/%Y/.test(format) && !/%m|%d|%j|%V|%U|%W/.test(format)) {\n\t\t\t\t\tdetected.add('year');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(value, '$isoWeek') || Object.prototype.hasOwnProperty.call(value, '$week')) {\n\t\t\tdetected.add('week');\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(value, '$quarter')) {\n\t\t\tdetected.add('quarter');\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(value, '$year')) {\n\t\t\tdetected.add('year');\n\t\t}\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tvisit((value as any)[key]);\n\t\t});\n\t};\n\tvisit(pipeline);\n\tconst priority: AssistantTimeGrain[] = ['day', 'week', 'month', 'quarter', 'year'];\n\tfor (const grain of priority) {\n\t\tif (detected.has(grain)) {\n\t\t\treturn grain;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveAssistantDirectiveTimeGrain(directive: AssistantMongoDirective | null): AssistantTimeGrain {\n\tif (!directive || directive.type !== 'aggregate') {\n\t\treturn null;\n\t}\n\tconst pipeline = Array.isArray(directive.payload?.pipeline) ? directive.payload.pipeline : [];\n\treturn resolveAssistantPipelineTimeGrain(pipeline);\n}\n\nfunction transformAssistantDisplayForDirective(\n\tdirective: AssistantMongoDirective,\n\tdisplay: AiAssistantDisplayTable,\n\trequestMessage?: string\n): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns) || !Array.isArray(display.rows)) {\n\t\treturn display;\n\t}\n\tif (!isAssistantDirectiveDated(directive)) {\n\t\treturn display;\n\t}\n\tconst requestedGrain = resolveAssistantRequestedTimeGrain(requestMessage || '');\n\tif (requestedGrain && requestedGrain !== 'month') {\n\t\treturn display;\n\t}\n\tconst directiveGrain = resolveAssistantDirectiveTimeGrain(directive);\n\tif (directiveGrain && directiveGrain !== 'month') {\n\t\treturn display;\n\t}\n\tconst expectedMonths = mergeAssistantHintValues(\n\t\tresolveAssistantDatedDirectiveExpectedMonths(directive),\n\t\tresolveAssistantRequestedMonthBucketsFromMessage(requestMessage)\n\t);\n\tconst pivoted = buildAssistantDatedPivotDisplay(display, expectedMonths);\n\treturn pivoted || display;\n}\n\nexport function buildAssistantDatedPivotDisplay(\n\tdisplay: AiAssistantDisplayTable,\n\texpectedMonths?: string[]\n): AiAssistantDisplayTable | null {\n\tconst columns = Array.isArray(display?.columns) ? display.columns : [];\n\tconst rows = Array.isArray(display?.rows) ? display.rows : [];\n\tif (!columns.length) {\n\t\treturn null;\n\t}\n\tconst monthColumn = resolveAssistantPivotMonthColumn(columns, rows);\n\tif (!monthColumn) {\n\t\treturn null;\n\t}\n\tconst yearColumn = resolveAssistantPivotYearColumn(columns, rows, monthColumn);\n\tconst valueColumn = resolveAssistantPivotValueColumn(columns, rows, monthColumn)\n\t\t|| resolveAssistantPivotValueColumnByName(columns, monthColumn, yearColumn);\n\tif (!valueColumn) {\n\t\treturn null;\n\t}\n\tconst dimensionColumn = resolveAssistantPivotDimensionColumn(columns, rows, monthColumn, valueColumn, yearColumn)\n\t\t|| resolveAssistantPivotDimensionColumnByName(columns, monthColumn, valueColumn, yearColumn);\n\tconst effectiveDimensionColumn = dimensionColumn || 'Metric';\n\tconst defaultDimensionLabel = normalizeOptionalString(valueColumn) || 'Total';\n\tconst monthSet = new Set<string>();\n\tconst grouped = new Map<string, Map<string, number>>();\n\trows.forEach((row) => {\n\t\tconst month = resolveAssistantPivotMonthBucket(row, monthColumn, yearColumn);\n\t\tif (!month) {\n\t\t\treturn;\n\t\t}\n\t\tconst dimension = dimensionColumn\n\t\t\t? normalizeAssistantPivotDimensionLabel(row?.[dimensionColumn])\n\t\t\t: defaultDimensionLabel;\n\t\tconst numericValue = resolveAssistantNumericValue(row?.[valueColumn]);\n\t\tif (numericValue === null) {\n\t\t\treturn;\n\t\t}\n\t\tmonthSet.add(month);\n\t\tconst monthMap = grouped.get(dimension) || new Map<string, number>();\n\t\tmonthMap.set(month, (monthMap.get(month) || 0) + numericValue);\n\t\tgrouped.set(dimension, monthMap);\n\t});\n\tconst expectedMonthBuckets = Array.isArray(expectedMonths)\n\t\t? expectedMonths\n\t\t\t\t.map(value => normalizeAssistantMonthBucket(value))\n\t\t\t\t.filter(Boolean)\n\t\t: [];\n\texpectedMonthBuckets.forEach(month => monthSet.add(month));\n\tconst months = Array.from(monthSet).sort((a, b) => a.localeCompare(b));\n\tif (!months.length) {\n\t\treturn null;\n\t}\n\tif (!grouped.size) {\n\t\treturn {\n\t\t\tcolumns: [effectiveDimensionColumn, ...months],\n\t\t\trows: [],\n\t\t\trowCount: 0,\n\t\t\ttruncated: display.truncated,\n\t\t\tincludeIds: display.includeIds\n\t\t};\n\t}\n\tconst metricIsCurrency = isAssistantCurrencyColumn(valueColumn);\n\tconst dimensionValues = Array.from(grouped.keys()).sort((a, b) => a.localeCompare(b));\n\tconst pivotRows = dimensionValues.map((dimension) => {\n\t\tconst nextRow: Record<string, any> = {\n\t\t\t[effectiveDimensionColumn]: dimension\n\t\t};\n\t\tconst monthMap = grouped.get(dimension) || new Map<string, number>();\n\t\tmonths.forEach((month) => {\n\t\t\tconst value = monthMap.get(month);\n\t\t\tif (value === undefined) {\n\t\t\t\tnextRow[month] = '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (metricIsCurrency) {\n\t\t\t\tnextRow[month] = getAssistantCurrencyFormatter().format(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnextRow[month] = round(value, 2);\n\t\t});\n\t\treturn nextRow;\n\t});\n\treturn {\n\t\tcolumns: [effectiveDimensionColumn, ...months],\n\t\trows: pivotRows,\n\t\trowCount: pivotRows.length,\n\t\ttruncated: display.truncated,\n\t\tincludeIds: display.includeIds\n\t};\n}\n\nfunction resolveAssistantDatedDirectiveExpectedMonths(directive: AssistantMongoDirective): string[] {\n\tif (!directive || directive.type !== 'aggregate') {\n\t\treturn [];\n\t}\n\tconst pipeline = Array.isArray(directive.payload?.pipeline) ? directive.payload.pipeline : [];\n\tif (!pipeline.length) {\n\t\treturn [];\n\t}\n\tconst fullWindow = detectAssistantFullMonthWindow(pipeline);\n\tif (fullWindow?.months) {\n\t\treturn buildAssistantExpectedMonthBuckets(fullWindow.months, 'full_month');\n\t}\n\tconst rollingWindow = detectAssistantRollingMonthWindow(pipeline);\n\tif (rollingWindow?.months) {\n\t\treturn buildAssistantExpectedMonthBuckets(rollingWindow.months, 'rolling');\n\t}\n\treturn [];\n}\n\nfunction resolveAssistantRequestedMonthBucketsFromMessage(message?: string): string[] {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst monthMatch = text.match(\n\t\t/\\b(?:last|past|previous|over\\s+the\\s+last)\\s+(\\d+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)\\s+months?\\b/i\n\t);\n\tif (!monthMatch?.[1]) {\n\t\treturn [];\n\t}\n\tconst monthsRaw = monthMatch[1];\n\tconst monthWords: Record<string, number> = {\n\t\tone: 1,\n\t\ttwo: 2,\n\t\tthree: 3,\n\t\tfour: 4,\n\t\tfive: 5,\n\t\tsix: 6,\n\t\tseven: 7,\n\t\teight: 8,\n\t\tnine: 9,\n\t\tten: 10,\n\t\televen: 11,\n\t\ttwelve: 12\n\t};\n\tconst parsedMonths = Number(monthsRaw);\n\tconst months = Number.isFinite(parsedMonths) && parsedMonths > 0\n\t\t? round(parsedMonths)\n\t\t: monthWords[monthsRaw] || 0;\n\tif (!months) {\n\t\treturn [];\n\t}\n\treturn buildAssistantExpectedMonthBuckets(months, 'full_month');\n}\n\nfunction buildAssistantExpectedMonthBuckets(months: number, mode: AssistantMonthWindowMode): string[] {\n\tconst safeMonths = Math.min(Math.max(round(months), 1), 24);\n\tconst bounds = resolveAssistantRollingWindowBounds(safeMonths);\n\tconst start = mode === 'full_month'\n\t\t? new Date(bounds.startOfWindow)\n\t\t: new Date(Date.UTC(bounds.rollingStart.getUTCFullYear(), bounds.rollingStart.getUTCMonth(), 1));\n\tconst exclusiveEnd = mode === 'full_month'\n\t\t? new Date(bounds.startOfCurrentMonth)\n\t\t: new Date(Date.UTC(bounds.now.getUTCFullYear(), bounds.now.getUTCMonth() + 1, 1));\n\tconst buckets: string[] = [];\n\tconst cursor = new Date(start);\n\twhile (cursor < exclusiveEnd) {\n\t\tbuckets.push(cursor.toISOString().slice(0, 7));\n\t\tcursor.setUTCMonth(cursor.getUTCMonth() + 1);\n\t}\n\tif (!buckets.length) {\n\t\treturn [];\n\t}\n\tif (buckets.length <= safeMonths) {\n\t\treturn buckets;\n\t}\n\treturn buckets.slice(-safeMonths);\n}\n\nfunction resolveAssistantPivotYearColumn(columns: string[], rows: Array<Record<string, any>>, monthColumn: string): string {\n\tconst explicitYear = columns.find((column) => {\n\t\tif (column === monthColumn) {\n\t\t\treturn false;\n\t\t}\n\t\treturn normalizeOptionalString(column).toLowerCase().includes('year');\n\t});\n\tif (explicitYear) {\n\t\treturn explicitYear;\n\t}\n\tlet bestColumn = '';\n\tlet bestScore = 0;\n\tcolumns.forEach((column) => {\n\t\tif (column === monthColumn) {\n\t\t\treturn;\n\t\t}\n\t\tlet yearMatches = 0;\n\t\tlet nonEmpty = 0;\n\t\trows.forEach((row) => {\n\t\t\tconst value = row?.[column];\n\t\t\tif (value === null || value === undefined || value === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnonEmpty += 1;\n\t\t\tif (resolveAssistantPivotYearNumber(value) !== null) {\n\t\t\t\tyearMatches += 1;\n\t\t\t}\n\t\t});\n\t\tif (!nonEmpty) {\n\t\t\treturn;\n\t\t}\n\t\tconst score = yearMatches / nonEmpty;\n\t\tif (score > bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbestColumn = column;\n\t\t}\n\t});\n\treturn bestScore >= 0.8 ? bestColumn : '';\n}\n\nfunction resolveAssistantPivotMonthBucket(\n\trow: Record<string, any>,\n\tmonthColumn: string,\n\tyearColumn: string\n): string {\n\tconst directMonth = normalizeAssistantMonthBucket(row?.[monthColumn]);\n\tif (directMonth) {\n\t\treturn directMonth;\n\t}\n\tconst monthNumber = resolveAssistantPivotMonthNumber(row?.[monthColumn]);\n\tif (monthNumber === null) {\n\t\treturn '';\n\t}\n\tconst yearNumber = yearColumn ? resolveAssistantPivotYearNumber(row?.[yearColumn]) : null;\n\tif (yearNumber === null) {\n\t\treturn '';\n\t}\n\treturn `${String(yearNumber).padStart(4, '0')}-${String(monthNumber).padStart(2, '0')}`;\n}\n\nfunction resolveAssistantPivotMonthNumber(value: any): number | null {\n\tif (typeof value === 'number' && Number.isFinite(value)) {\n\t\tconst rounded = round(value);\n\t\tif (rounded >= 1 && rounded <= 12) {\n\t\t\treturn rounded;\n\t\t}\n\t}\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (/^\\d{1,2}$/.test(normalized)) {\n\t\tconst parsed = Number(normalized);\n\t\tif (Number.isFinite(parsed) && parsed >= 1 && parsed <= 12) {\n\t\t\treturn round(parsed);\n\t\t}\n\t}\n\tconst monthNames = [\n\t\t'january',\n\t\t'february',\n\t\t'march',\n\t\t'april',\n\t\t'may',\n\t\t'june',\n\t\t'july',\n\t\t'august',\n\t\t'september',\n\t\t'october',\n\t\t'november',\n\t\t'december'\n\t];\n\tconst matchedIndex = monthNames.findIndex((name) => normalized.startsWith(name.slice(0, 3)) || normalized === name);\n\tif (matchedIndex === -1) {\n\t\treturn null;\n\t}\n\treturn matchedIndex + 1;\n}\n\nfunction resolveAssistantPivotYearNumber(value: any): number | null {\n\tif (typeof value === 'number' && Number.isFinite(value)) {\n\t\tconst rounded = round(value);\n\t\tif (rounded >= 1900 && rounded <= 2200) {\n\t\t\treturn rounded;\n\t\t}\n\t}\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized || !/^\\d{4}$/.test(normalized)) {\n\t\treturn null;\n\t}\n\tconst parsed = Number(normalized);\n\tif (!Number.isFinite(parsed) || parsed < 1900 || parsed > 2200) {\n\t\treturn null;\n\t}\n\treturn round(parsed);\n}\n\nfunction resolveAssistantPivotMonthColumn(columns: string[], rows: Array<Record<string, any>>): string {\n\tconst loweredColumns = columns.map(column => normalizeOptionalString(column).toLowerCase());\n\tconst explicitMonthIndex = loweredColumns.findIndex(column => column.includes('month'));\n\tif (explicitMonthIndex !== -1) {\n\t\treturn columns[explicitMonthIndex];\n\t}\n\tlet bestColumn = '';\n\tlet bestScore = 0;\n\tcolumns.forEach((column) => {\n\t\tlet monthMatches = 0;\n\t\tlet nonEmpty = 0;\n\t\trows.forEach((row) => {\n\t\t\tconst value = row?.[column];\n\t\t\tif (value === null || value === undefined || value === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnonEmpty += 1;\n\t\t\tif (normalizeAssistantMonthBucket(value)) {\n\t\t\t\tmonthMatches += 1;\n\t\t\t}\n\t\t});\n\t\tif (!nonEmpty) {\n\t\t\treturn;\n\t\t}\n\t\tconst score = monthMatches / nonEmpty;\n\t\tif (score > bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbestColumn = column;\n\t\t}\n\t});\n\treturn bestScore >= 0.8 ? bestColumn : '';\n}\n\nfunction resolveAssistantPivotValueColumn(columns: string[], rows: Array<Record<string, any>>, monthColumn: string): string {\n\tlet bestColumn = '';\n\tlet bestScore = 0;\n\tcolumns.forEach((column) => {\n\t\tif (column === monthColumn) {\n\t\t\treturn;\n\t\t}\n\t\tlet numericCount = 0;\n\t\tlet nonEmptyCount = 0;\n\t\trows.forEach((row) => {\n\t\t\tconst value = row?.[column];\n\t\t\tif (value === null || value === undefined || value === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnonEmptyCount += 1;\n\t\t\tif (resolveAssistantNumericValue(value) !== null) {\n\t\t\t\tnumericCount += 1;\n\t\t\t}\n\t\t});\n\t\tif (!nonEmptyCount || !numericCount) {\n\t\t\treturn;\n\t\t}\n\t\tconst numericRatio = numericCount / nonEmptyCount;\n\t\tif (numericRatio < 0.8) {\n\t\t\treturn;\n\t\t}\n\t\tconst lower = normalizeOptionalString(column).toLowerCase();\n\t\tconst semanticBoost = /(revenue|amount|total|sales|billing|paid|grand|cost|fee|charge|profit|count|qty|quantity)/i.test(lower)\n\t\t\t? 0.2\n\t\t\t: 0;\n\t\tconst currencyBoost = isAssistantCurrencyColumn(lower) ? 0.1 : 0;\n\t\tconst score = numericRatio + semanticBoost + currencyBoost;\n\t\tif (score > bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbestColumn = column;\n\t\t}\n\t});\n\treturn bestColumn;\n}\n\nfunction resolveAssistantPivotValueColumnByName(\n\tcolumns: string[],\n\tmonthColumn: string,\n\tyearColumn = ''\n): string {\n\tconst candidates = columns.filter(column => column !== monthColumn && column !== yearColumn);\n\tif (!candidates.length) {\n\t\treturn '';\n\t}\n\tconst preferred = candidates.find((column) => {\n\t\tconst lower = normalizeOptionalString(column).toLowerCase();\n\t\treturn /(revenue|amount|total|sales|billing|paid|grand|cost|fee|charge|profit|count|qty|quantity|volume)/i.test(lower);\n\t});\n\treturn preferred || candidates[candidates.length - 1] || '';\n}\n\nfunction resolveAssistantPivotDimensionColumn(\n\tcolumns: string[],\n\trows: Array<Record<string, any>>,\n\tmonthColumn: string,\n\tvalueColumn: string,\n\tyearColumn = ''\n): string {\n\tconst candidates = columns.filter(column => column !== monthColumn && column !== valueColumn && column !== yearColumn);\n\tif (!candidates.length) {\n\t\treturn '';\n\t}\n\tlet bestColumn = '';\n\tlet bestScore = -1;\n\tcandidates.forEach((column) => {\n\t\tconst lower = normalizeOptionalString(column).toLowerCase();\n\t\tlet nonEmpty = 0;\n\t\tconst unique = new Set<string>();\n\t\tlet numericCount = 0;\n\t\trows.forEach((row) => {\n\t\t\tconst value = row?.[column];\n\t\t\tif (value === null || value === undefined || value === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnonEmpty += 1;\n\t\t\tif (resolveAssistantNumericValue(value) !== null) {\n\t\t\t\tnumericCount += 1;\n\t\t\t}\n\t\t\tunique.add(normalizeAssistantPivotDimensionLabel(value));\n\t\t});\n\t\tif (!nonEmpty || unique.size <= 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst numericRatio = numericCount / nonEmpty;\n\t\tif (numericRatio >= 0.5) {\n\t\t\treturn;\n\t\t}\n\t\tlet score = unique.size;\n\t\tif (/(customer|client|account|name|company|group|category|type|segment)/i.test(lower)) {\n\t\t\tscore += 1000;\n\t\t}\n\t\tif (lower.includes('id')) {\n\t\t\tscore -= 100;\n\t\t}\n\t\tif (score > bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbestColumn = column;\n\t\t}\n\t});\n\treturn bestColumn;\n}\n\nfunction resolveAssistantPivotDimensionColumnByName(\n\tcolumns: string[],\n\tmonthColumn: string,\n\tvalueColumn: string,\n\tyearColumn = ''\n): string {\n\tconst candidates = columns.filter(column => column !== monthColumn && column !== valueColumn && column !== yearColumn);\n\tif (!candidates.length) {\n\t\treturn '';\n\t}\n\tconst preferred = candidates.find((column) => {\n\t\tconst lower = normalizeOptionalString(column).toLowerCase();\n\t\treturn /(customer|client|account|company|name|group|category|segment|driver|user)/i.test(lower);\n\t});\n\treturn preferred || candidates[0] || '';\n}\n\nfunction normalizeAssistantPivotDimensionLabel(value: any): string {\n\tconst normalized = normalizeOptionalString(value);\n\treturn normalized || 'Unknown';\n}\n\nfunction buildAssistantToolResultPayload(\n\tdirective: AssistantMongoDirective,\n\ttoolResponse: any,\n\trequestMessage?: string\n): { result: AiAssistantToolResult; prompt: string } {\n\tconst directivePayload = directive.payload || {};\n\tconst documents = Array.isArray(toolResponse?.documents) ? toolResponse.documents : [];\n\tconst includeIds = directivePayload?.options?.includeIds === true;\n\tconst rawDisplay = toolResponse?.display && typeof toolResponse.display === 'object'\n\t\t? toolResponse.display\n\t\t: buildDisplayTable(documents, {\n\t\t\tincludeIds,\n\t\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS,\n\t\t\tincludeGroupFromId: directive.type === 'aggregate'\n\t\t});\n\tconst projectedColumns = extractAssistantProjectedColumnsFromDirectivePayload(directivePayload);\n\tconst display = ensureAssistantDisplayColumns(rawDisplay, projectedColumns);\n\tconst transformedDisplay = transformAssistantDisplayForDirective(directive, display, requestMessage);\n\tconst promptDisplay = trimDisplayTable(transformedDisplay, {\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS\n\t});\n\tconst responseDisplayMaxRows = resolveAssistantToolResultResponseMaxRows(directive, directivePayload, transformedDisplay.rowCount);\n\tconst responseDisplay = trimDisplayTable(transformedDisplay, {\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: responseDisplayMaxRows\n\t});\n\tconst total = typeof toolResponse?.total === 'number' ? toolResponse.total : null;\n\tconst rowCount = documents.length || display.rowCount || responseDisplay.rowCount;\n\tconst requestedCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst resolvedCollection = normalizeOptionalString(toolResponse?.debug?.collectionResolved)\n\t\t|| normalizeOptionalString(toolResponse?.debug?.collection)\n\t\t|| requestedCollection\n\t\t|| '';\n\tconst verification = toolResponse?.verification && typeof toolResponse.verification === 'object'\n\t\t? toolResponse.verification\n\t\t: undefined;\n\tconst directiveMetadata = directive.metadata && typeof directive.metadata === 'object' ? directive.metadata : {};\n\tconst mergedDebug = {\n\t\t...(toolResponse?.debug && typeof toolResponse.debug === 'object' ? toolResponse.debug : {}),\n\t\t...(normalizeOptionalString(directiveMetadata.intentId) ? { intentId: normalizeOptionalString(directiveMetadata.intentId) } : {}),\n\t\t...(normalizeOptionalString(directiveMetadata.acknowledgementText) ? { acknowledgementText: normalizeOptionalString(directiveMetadata.acknowledgementText) } : {}),\n\t\t...(normalizeOptionalString(directiveMetadata.recipeUsed) ? { recipeUsed: normalizeOptionalString(directiveMetadata.recipeUsed) } : {}),\n\t\t...(Array.isArray(directiveMetadata.assumptions) && directiveMetadata.assumptions.length ? { assumptions: directiveMetadata.assumptions } : {})\n\t};\n\tconst result: AiAssistantToolResult = {\n\t\ttype: directive.type === 'aggregate' ? 'mongo_agg' : 'mongo_read',\n\t\tinput: directivePayload,\n\t\toutput: {\n\t\t\tdisplay: responseDisplay,\n\t\t\ttotal: total !== null ? total : undefined,\n\t\t\tcollection: resolvedCollection || undefined,\n\t\t\trowCount,\n\t\t\tcolumns: responseDisplay.columns,\n\t\t\ttruncated: responseDisplay.truncated,\n\t\t\tverification,\n\t\t\tdebug: Object.keys(mergedDebug).length ? mergedDebug : undefined\n\t\t}\n\t};\n\treturn {\n\t\tresult,\n\t\tprompt: buildAssistantToolResultPrompt(result, promptDisplay)\n\t};\n}\n\nfunction resolveAssistantToolResultResponseMaxRows(\n\tdirective: AssistantMongoDirective,\n\tdirectivePayload: Record<string, any>,\n\trowCount: number\n): number {\n\tif (directive.type !== 'aggregate') {\n\t\treturn AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS;\n\t}\n\tconst exportMode = directivePayload?.options?.export === true;\n\tconst maxRows = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst requestedLimit = typeof directivePayload?.options?.limit === 'number'\n\t\t? Math.min(Math.max(round(directivePayload.options.limit), 0), maxRows)\n\t\t: 0;\n\tif (requestedLimit > 0) {\n\t\treturn requestedLimit;\n\t}\n\tif (typeof rowCount === 'number' && rowCount > 0) {\n\t\treturn Math.min(rowCount, maxRows);\n\t}\n\treturn AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS;\n}\n\nfunction buildAssistantToolResultPrompt(result: AiAssistantToolResult, displayPreview?: AiAssistantDisplayTable): string {\n\tconst lines: string[] = ['Tool Result:'];\n\tlines.push(`Type: ${result.type}`);\n\tif (result.output.collection) {\n\t\tlines.push(`Collection: ${result.output.collection}`);\n\t}\n\tlines.push(`Row count: ${result.output.rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`Total: ${result.output.total}`);\n\t}\n\tif (Array.isArray(result.output.columns) && result.output.columns.length) {\n\t\tlines.push(`Columns: ${result.output.columns.join(', ')}`);\n\t}\n\tif (displayPreview?.rows?.length) {\n\t\tlines.push('Preview:');\n\t\tlines.push(formatDisplayTableMarkdown(displayPreview));\n\t}\n\telse {\n\t\tlines.push('Preview: (no rows)');\n\t}\n\tconst verification = result.output.verification;\n\tif (verification && typeof verification === 'object') {\n\t\tconst checks = Array.isArray((verification as any).checks) ? (verification as any).checks : [];\n\t\tconst warnings = Array.isArray((verification as any).warnings) ? (verification as any).warnings : [];\n\t\tif (checks.length || warnings.length) {\n\t\t\tlines.push('Verification:');\n\t\t}\n\t\tchecks.slice(0, 4).forEach((entry: any) => {\n\t\t\tconst name = normalizeOptionalString(entry?.name) || 'check';\n\t\t\tconst status = normalizeOptionalString(entry?.status).toLowerCase() === 'warn' ? 'warn' : 'pass';\n\t\t\tconst details = normalizeOptionalString(entry?.details);\n\t\t\tlines.push(`- ${name}: ${status}${details ? ` (${details})` : ''}`);\n\t\t});\n\t\twarnings.slice(0, 4).forEach((warning: any) => {\n\t\t\tconst text = normalizeOptionalString(warning);\n\t\t\tif (text) {\n\t\t\t\tlines.push(`- warning: ${text}`);\n\t\t\t}\n\t\t});\n\t}\n\treturn lines.join('\\n');\n}\n\nfunction buildAssistantCodexToolFollowupPrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText: string,\n\ttoolResultText: string,\n\tsystemPromptText = AI_ASSISTANT_SYSTEM_PROMPT\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst toolBlock = toolResultText ? `\\n\\nTool Result:\\n${toolResultText}` : '';\n\tconst instruction = '\\n\\nInstruction:\\nNow answer the user. Do NOT output another REPORT_BUILDER_* directive. Output plain Markdown. Summarize first, then include a Markdown table. If the Tool Result includes verification warnings that materially affect interpretation (partial periods, mixed metric/date basis, failed cross-check), mention them briefly and call out the metric/date basis used. Include explicit UTC date boundaries and never show placeholders like $$NOW.';\n\treturn `System:\\n${systemPromptText}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${toolBlock}${instruction}`.trim();\n}\n\nfunction formatAssistantDisplayValueForSentence(value: any): string {\n\tif (value === null || value === undefined) {\n\t\treturn '';\n\t}\n\tif (typeof value === 'number' && Number.isFinite(value)) {\n\t\treturn new Intl.NumberFormat('en-US', {\n\t\t\tmaximumFractionDigits: Math.abs(value) >= 100 ? 0 : 2\n\t\t}).format(value);\n\t}\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tconst normalized = normalizeOptionalString(value);\n\treturn normalized.length > 80 ? `${normalized.slice(0, 77)}...` : normalized;\n}\n\nfunction isAssistantMetricDisplayColumn(column: string, value: any): boolean {\n\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\treturn false;\n\t}\n\tconst normalized = normalizeOptionalString(column).toLowerCase();\n\tif (!normalized || /\\b(id|number|zip|phone)\\b/.test(normalized)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction getAssistantMetricDisplayColumnPriority(column: string): number {\n\tconst normalized = normalizeOptionalString(column)\n\t\t.toLowerCase()\n\t\t.replace(/[_-]+/g, ' ')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim();\n\tif (!normalized) {\n\t\treturn 0;\n\t}\n\tif (/\\bwork\\s*orders?\\b/.test(normalized)) {\n\t\treturn 100;\n\t}\n\tif (/\\borders?\\b/.test(normalized)) {\n\t\treturn 95;\n\t}\n\tif (/\\b(total|count|rows?)\\b/.test(normalized)) {\n\t\treturn 90;\n\t}\n\tif (/\\b(revenue|amount|price|cost|margin|balance)\\b/.test(normalized)) {\n\t\treturn 85;\n\t}\n\tif (/\\b(hours?|volume|quantity|qty|deliveries|invoices)\\b/.test(normalized)) {\n\t\treturn 80;\n\t}\n\tif (/\\b(active|completed|reviewed|closed|canceled|cancelled|inactive|open|pending)\\b/.test(normalized)) {\n\t\treturn 20;\n\t}\n\treturn 50;\n}\n\nfunction buildAssistantDisplayLeadSummary(display: AiAssistantDisplayTable | null | undefined): string {\n\tconst rows = Array.isArray(display?.rows) ? display?.rows || [] : [];\n\tconst columns = Array.isArray(display?.columns) ? display?.columns || [] : [];\n\tconst firstRow = rows[0];\n\tif (!firstRow || typeof firstRow !== 'object' || !columns.length) {\n\t\treturn '';\n\t}\n\tconst visibleColumns = columns\n\t\t.map(column => normalizeOptionalString(column))\n\t\t.filter(Boolean)\n\t\t.filter(column => !shouldRedactField(column));\n\tif (!visibleColumns.length) {\n\t\treturn '';\n\t}\n\tconst labelColumn = visibleColumns.find((column) => {\n\t\tconst value = (firstRow as any)[column];\n\t\treturn typeof value === 'string' && !!normalizeOptionalString(value);\n\t}) || visibleColumns[0];\n\tconst metricColumn = visibleColumns\n\t\t.filter((column) => column !== labelColumn && isAssistantMetricDisplayColumn(column, (firstRow as any)[column]))\n\t\t.sort((a, b) => {\n\t\t\tconst priorityDelta = getAssistantMetricDisplayColumnPriority(b) - getAssistantMetricDisplayColumnPriority(a);\n\t\t\treturn priorityDelta || visibleColumns.indexOf(a) - visibleColumns.indexOf(b);\n\t\t})[0];\n\tconst labelValue = formatAssistantDisplayValueForSentence((firstRow as any)[labelColumn]);\n\tif (labelValue && metricColumn) {\n\t\tconst metricValue = formatAssistantDisplayValueForSentence((firstRow as any)[metricColumn]);\n\t\tif (metricValue) {\n\t\t\treturn rows.length > 1\n\t\t\t\t? `Top row: ${labelColumn} ${labelValue}, ${metricColumn} ${metricValue}.`\n\t\t\t\t: `Result: ${labelColumn} ${labelValue}, ${metricColumn} ${metricValue}.`;\n\t\t}\n\t}\n\tconst details = visibleColumns\n\t\t.slice(0, 4)\n\t\t.map((column) => {\n\t\t\tconst value = formatAssistantDisplayValueForSentence((firstRow as any)[column]);\n\t\t\treturn value ? `${column} ${value}` : '';\n\t\t})\n\t\t.filter(Boolean);\n\tif (!details.length) {\n\t\treturn '';\n\t}\n\treturn rows.length > 1\n\t\t? `First row: ${details.join(', ')}.`\n\t\t: `Result: ${details.join(', ')}.`;\n}\n\nfunction buildAssistantToolFallbackResponse(result: AiAssistantToolResult): string {\n\tconst rowCount = Math.max(0, Number(result.output.rowCount || 0));\n\tconst source = normalizeOptionalString(result.output.collection);\n\tconst debug = result.output.debug && typeof result.output.debug === 'object' ? result.output.debug : {};\n\tconst intentId = normalizeOptionalString((debug as any).intentId);\n\tconst lines: string[] = rowCount > 0\n\t\t? [`I found ${rowCount === 1 ? '1 matching row' : `${rowCount} matching rows`}${source ? ` from ${source}` : ''}.`]\n\t\t: [intentId\n\t\t\t? `I checked the ${source || 'selected'} data for that request, but I did not find matching rows for the filters I used.`\n\t\t\t: `I checked the data${source ? ` in ${source}` : ''}, but no matching rows were returned.`];\n\tif (source) {\n\t\tlines.push(`- Source: ${source}`);\n\t}\n\tlines.push(`- Rows returned: ${rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`- Total: ${result.output.total}`);\n\t}\n\tif (rowCount <= 0) {\n\t\tconst assumptions = Array.isArray((debug as any).assumptions)\n\t\t\t? (debug as any).assumptions.map((entry: any) => normalizeOptionalString(entry)).filter(Boolean)\n\t\t\t: [];\n\t\tif (assumptions.length) {\n\t\t\tlines.push(`- Assumptions: ${assumptions.slice(0, 3).join('; ')}`);\n\t\t}\n\t\tif (intentId === 'snf_job_chemical_shipments') {\n\t\t\tlines.push('- I treated \"sent\" as shipped chemical quantity from completed/reviewed/closed work orders.');\n\t\t\tlines.push('- If you meant billed quantities or dollars, ask for invoiced/billed chemicals instead.');\n\t\t}\n\t\telse if (intentId === 'snf_invoice_chemical_quantities') {\n\t\t\tlines.push('- I treated the request as billed invoice chemical quantities and invoice totals.');\n\t\t\tlines.push('- If you meant field shipments, ask for chemicals shipped/sent on work orders.');\n\t\t}\n\t}\n\tconst leadSummary = buildAssistantDisplayLeadSummary(result.output.display);\n\tif (leadSummary) {\n\t\tlines.push('');\n\t\tlines.push(leadSummary);\n\t}\n\tif (result.output.display?.rows?.length) {\n\t\tlines.push('');\n\t\tlines.push(formatDisplayTableMarkdown(result.output.display));\n\t}\n\treturn lines.join('\\n').trim();\n}\n\nexport function buildAssistantToolFallbackResponseForTesting(result: any): string {\n\treturn buildAssistantToolFallbackResponse(result as AiAssistantToolResult);\n}\n\nfunction didAssistantRequestLotOrBatch(message: string): boolean {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(lot|lots|batch|batches)\\b/i.test(normalized);\n}\n\nfunction didAssistantQueryLotFields(toolResult: AiAssistantToolResult | null): boolean {\n\tif (!toolResult?.input || typeof toolResult.input !== 'object') {\n\t\treturn false;\n\t}\n\tlet serialized = '';\n\ttry {\n\t\tserialized = JSON.stringify(toolResult.input).toLowerCase();\n\t}\n\tcatch {\n\t\tserialized = '';\n\t}\n\tif (!serialized) {\n\t\treturn false;\n\t}\n\treturn /(lot[_\\s-]?number|containers?\\.lot|\\.lot\\b)/i.test(serialized);\n}\n\nfunction applyAssistantLotNumberResponseGuard(\n\tvalue: string,\n\trequestMessage: string,\n\ttoolResult: AiAssistantToolResult | null\n): string {\n\tconst content = normalizeOptionalString(value);\n\tif (!content) {\n\t\treturn value || '';\n\t}\n\tif (!didAssistantRequestLotOrBatch(requestMessage) || !didAssistantQueryLotFields(toolResult)) {\n\t\treturn content;\n\t}\n\tconst before = content;\n\tlet next = content;\n\tnext = next.replace(/^\\s*-\\s*If you need lot[^.\\n]*re-?run[^\\n]*$/gim, '');\n\tnext = next.replace(/^\\s*-\\s*.*re-?run[^\\n]*lot[^\\n]*$/gim, '');\n\tnext = next.replace(/\\bI can re-?run[^.\\n]*lot[^.\\n]*\\.?/gi, '');\n\tnext = next.replace(/\\n{3,}/g, '\\n\\n').trim();\n\treturn next || before;\n}\n\nfunction applyAssistantVerificationNotes(value: string, toolResult: AiAssistantToolResult | null): string {\n\tconst content = normalizeOptionalString(value);\n\tconst warnings = Array.isArray(toolResult?.output?.verification?.warnings)\n\t\t? toolResult?.output?.verification?.warnings\n\t\t\t\t.map((entry: any) => normalizeOptionalString(entry))\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.filter((warning: string) => !/^high variance months vs both paid\\/grand checks:/i.test(warning))\n\t\t: [];\n\tif (!warnings.length) {\n\t\treturn content || value || '';\n\t}\n\tconst normalizedLower = String(content || '').toLowerCase();\n\tconst missing = warnings.filter((warning) => !hasAssistantEquivalentVerificationWarning(normalizedLower, warning));\n\tif (!missing.length) {\n\t\treturn content || value || '';\n\t}\n\tconst noteLines = ['Verification notes:'];\n\tmissing.slice(0, 4).forEach((warning) => noteLines.push(`- ${warning}`));\n\tif (!content) {\n\t\treturn noteLines.join('\\n');\n\t}\n\treturn `${content}\\n\\n${noteLines.join('\\n')}`.trim();\n}\n\nfunction hasAssistantEquivalentVerificationWarning(contentLower: string, warning: string): boolean {\n\tconst warningLower = normalizeOptionalString(warning).toLowerCase();\n\tif (!warningLower) {\n\t\treturn false;\n\t}\n\tif (contentLower.includes(warningLower)) {\n\t\treturn true;\n\t}\n\tif (!warningLower.includes('changes monthly totals by')) {\n\t\treturn false;\n\t}\n\tconst pctMatch = warningLower.match(/([0-9]+(?:\\.[0-9]+)?)%/);\n\tif (!pctMatch) {\n\t\treturn false;\n\t}\n\tif (!/date[_\\s-]?paid/.test(warningLower) || !/date[_\\s-]?invoice/.test(warningLower)) {\n\t\treturn false;\n\t}\n\treturn contentLower.includes('changes monthly totals by')\n\t\t&& contentLower.includes(`${pctMatch[1]}%`)\n\t\t&& /date[_\\s-]?paid/.test(contentLower)\n\t\t&& /date[_\\s-]?invoice/.test(contentLower);\n}\n\nfunction applyAssistantDatedReportWindow(value: string, toolResult: AiAssistantToolResult | null): string {\n\tconst content = normalizeOptionalString(value);\n\tconst window = resolveAssistantDatedReportWindow(toolResult);\n\tif (!window || typeof window !== 'object') {\n\t\treturn content || value || '';\n\t}\n\tconst startDate = normalizeOptionalString((window as any)?.startDate);\n\tconst endDate = normalizeOptionalString((window as any)?.endDate);\n\tif (!startDate || !endDate) {\n\t\treturn content || value || '';\n\t}\n\tconst dateDisplayFormat = resolveAssistantDisplayDateFormatPreference();\n\tconst startDateDisplay = formatAssistantDateValue(startDate, dateDisplayFormat);\n\tconst endDateDisplay = formatAssistantDateValue(endDate, dateDisplayFormat);\n\tconst mode = normalizeOptionalString((window as any)?.mode).toLowerCase();\n\tconst months = normalizeOptionalNumber((window as any)?.months);\n\tlet monthsText = '';\n\tif (months && months > 0) {\n\t\tconst count = round(months);\n\t\tif (mode === 'full_month') {\n\t\t\tmonthsText = `; last ${count} full month${count === 1 ? '' : 's'}`;\n\t\t}\n\t\telse if (mode === 'rolling') {\n\t\t\tmonthsText = `; rolling last ${count} month${count === 1 ? '' : 's'}`;\n\t\t}\n\t}\n\tconst line = `Report date range (UTC): ${startDateDisplay} to ${endDateDisplay}${monthsText}.`;\n\tconst normalizedLower = String(content || '').toLowerCase();\n\tconst hasRawDates = normalizedLower.includes(startDate.toLowerCase()) && normalizedLower.includes(endDate.toLowerCase());\n\tconst hasDisplayDates = normalizedLower.includes(startDateDisplay.toLowerCase()) && normalizedLower.includes(endDateDisplay.toLowerCase());\n\tif (hasRawDates || hasDisplayDates) {\n\t\treturn content || value || '';\n\t}\n\tif (!content) {\n\t\treturn line;\n\t}\n\treturn `${line}\\n\\n${content}`.trim();\n}\n\nfunction resolveAssistantDatedReportWindow(\n\ttoolResult: AiAssistantToolResult | null\n): { startDate: string; endDate: string; months?: number; mode?: AssistantMonthWindowMode } | null {\n\tconst verificationWindow = toolResult?.output?.verification?.metrics?.window;\n\tconst verificationStart = normalizeOptionalString(verificationWindow?.startDate);\n\tconst verificationEnd = normalizeOptionalString(verificationWindow?.endDate);\n\tif (verificationStart && verificationEnd) {\n\t\tconst verificationType = normalizeOptionalString(verificationWindow?.type).toLowerCase();\n\t\tlet mode: AssistantMonthWindowMode | undefined;\n\t\tif (verificationType.includes('full_month')) {\n\t\t\tmode = 'full_month';\n\t\t}\n\t\telse if (verificationType.includes('rolling')) {\n\t\t\tmode = 'rolling';\n\t\t}\n\t\treturn {\n\t\t\tstartDate: verificationStart,\n\t\t\tendDate: verificationEnd,\n\t\t\tmonths: normalizeOptionalNumber(verificationWindow?.months) || undefined,\n\t\t\tmode\n\t\t};\n\t}\n\tconst pipelineCandidates = [\n\t\ttoolResult?.output?.debug?.executedPipeline,\n\t\ttoolResult?.output?.debug?.originalPipeline,\n\t\ttoolResult?.input?.pipeline\n\t];\n\tfor (const candidate of pipelineCandidates) {\n\t\tif (!Array.isArray(candidate)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst fullMonthWindow = detectAssistantFullMonthWindow(candidate);\n\t\tif (fullMonthWindow?.months && fullMonthWindow?.upperMonthStart) {\n\t\t\tconst bounds = resolveAssistantRollingWindowBounds(fullMonthWindow.months);\n\t\t\tconst startDate = formatAssistantIsoDateOnly(bounds.startOfWindow);\n\t\t\tconst endDateValue = new Date(bounds.startOfCurrentMonth);\n\t\t\tendDateValue.setUTCDate(endDateValue.getUTCDate() - 1);\n\t\t\tconst endDate = formatAssistantIsoDateOnly(endDateValue);\n\t\t\tif (startDate && endDate) {\n\t\t\t\treturn {\n\t\t\t\t\tstartDate,\n\t\t\t\t\tendDate,\n\t\t\t\t\tmonths: fullMonthWindow.months,\n\t\t\t\t\tmode: 'full_month'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tconst rollingWindow = detectAssistantRollingMonthWindow(candidate);\n\t\tif (!rollingWindow?.months || !rollingWindow?.upperNow) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst bounds = resolveAssistantRollingWindowBounds(rollingWindow.months);\n\t\tconst startDate = formatAssistantIsoDateOnly(bounds.rollingStart);\n\t\tconst endDate = formatAssistantIsoDateOnly(bounds.now);\n\t\tif (!startDate || !endDate) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tstartDate,\n\t\t\tendDate,\n\t\t\tmonths: rollingWindow.months,\n\t\t\tmode: 'rolling'\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction buildAssistantDebugPayload(params: {\n\trequestType: AssistantRequestType;\n\trequestTypeSource: AssistantRequestTypeSource;\n\tplannerIntentType?: string;\n\tdataQuestion: boolean;\n\treportStyleIntent?: 'dated' | 'grouped' | null;\n\trequestedTimeGrain?: AssistantTimeGrain;\n\tdatedDirectiveRetryUsed?: boolean;\n\tdatedDirectiveResolved?: boolean;\n\tdirective: AssistantMongoDirective | null;\n\tdirectiveSource: 'model' | 'forced' | 'none';\n\ttoolResult: AiAssistantToolResult | null;\n\ttoolResponseDebug: Record<string, any> | null;\n\ttoolError: any;\n\ttoolExecution?: Record<string, any>;\n\tcollectionOverride?: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null;\n\ttrace?: Record<string, any>;\n}): Record<string, any> {\n\tconst notes: string[] = [];\n\tnotes.push(`Request classification: ${params.requestType} (${params.requestTypeSource}).`);\n\tif (params.dataQuestion) {\n\t\tnotes.push('Detected a data request; tool call required.');\n\t}\n\tif (params.reportStyleIntent === 'dated') {\n\t\tnotes.push(`Report style intent: dated${params.requestedTimeGrain ? ` (${params.requestedTimeGrain})` : ''}.`);\n\t\tif (params.datedDirectiveRetryUsed) {\n\t\t\tnotes.push('Retried directive generation to enforce dated report style.');\n\t\t}\n\t\tif (params.datedDirectiveResolved) {\n\t\t\tnotes.push('Directive includes time-based aggregate grouping.');\n\t\t}\n\t\telse {\n\t\t\tnotes.push('Directive did not include explicit time-based grouping.');\n\t\t}\n\t}\n\tif (params.reportStyleIntent === 'grouped') {\n\t\tnotes.push('Report style intent: grouped.');\n\t\tif (params.datedDirectiveRetryUsed) {\n\t\t\tnotes.push('Retried directive generation to enforce grouped aggregation.');\n\t\t}\n\t}\n\tif (params.directiveSource === 'forced') {\n\t\tnotes.push('Assistant response omitted a REPORT_BUILDER_* directive; ran a directive-only pass.');\n\t}\n\tif (params.collectionOverride?.to) {\n\t\tconst from = params.collectionOverride.from ? `\"${params.collectionOverride.from}\"` : '(none)';\n\t\tconst to = `\"${params.collectionOverride.to}\"`;\n\t\tconst reason = params.collectionOverride.reason ? ` (${params.collectionOverride.reason})` : '';\n\t\tnotes.push(`Collection override: ${from} -> ${to}${reason}.`);\n\t}\n\tconst directive = params.directive;\n\tconst directivePayload = directive?.payload || {};\n\tconst rawCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst debugCollectionRequested = normalizeOptionalString(params.toolResponseDebug?.collectionRequested);\n\tconst debugCollectionResolved = normalizeOptionalString(params.toolResponseDebug?.collectionResolved);\n\tconst debugCollection = normalizeOptionalString(params.toolResponseDebug?.collection);\n\tconst requestedCollection = debugCollectionRequested || rawCollection;\n\tconst resolvedCollection = debugCollectionResolved || debugCollection || requestedCollection;\n\tconst matchedCollection = typeof params.toolResponseDebug?.collectionMatched === 'boolean'\n\t\t? params.toolResponseDebug.collectionMatched\n\t\t: undefined;\n\tconst candidateCollections = Array.isArray(params.toolResponseDebug?.collectionCandidates)\n\t\t? params.toolResponseDebug.collectionCandidates.filter(Boolean)\n\t\t: [];\n\tif (requestedCollection && resolvedCollection && requestedCollection !== resolvedCollection) {\n\t\tnotes.push(`Resolved collection \"${requestedCollection}\" -> \"${resolvedCollection}\".`);\n\t}\n\telse if (matchedCollection === false && candidateCollections.length) {\n\t\tnotes.push(`No direct collection match; candidates: ${candidateCollections.join(', ')}.`);\n\t}\n\tif (params.toolResult?.type === 'mongo_agg') {\n\t\tnotes.push('Used aggregation for grouped/breakdown request.');\n\t}\n\telse if (params.toolResult?.type === 'mongo_read') {\n\t\tnotes.push('Used read query for list/count request.');\n\t}\n\tconst fallbackInfo = params.toolResponseDebug?.fallbacks;\n\tif (fallbackInfo?.dateField?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateField.from} -> ${fallbackInfo.dateField.to}.`);\n\t}\n\tif (fallbackInfo?.dateFieldCreatedAt?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateFieldCreatedAt.from} -> ${fallbackInfo.dateFieldCreatedAt.to}.`);\n\t}\n\tif (fallbackInfo?.completion?.used) {\n\t\tconst sources = Array.isArray(fallbackInfo.completion.sources)\n\t\t\t? fallbackInfo.completion.sources.join(', ')\n\t\t\t: fallbackInfo.completion.field;\n\t\tconst strategy = fallbackInfo.completion.strategy ? ` (${fallbackInfo.completion.strategy})` : '';\n\t\tnotes.push(`Applied completion fallback${strategy}: ${sources}.`);\n\t}\n\tif (fallbackInfo?.dateFieldsExpanded?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.dateFieldsExpanded.fields)\n\t\t\t? fallbackInfo.dateFieldsExpanded.fields.join(', ')\n\t\t\t: String(fallbackInfo.dateFieldsExpanded.fields || '');\n\t\tif (fields) {\n\t\t\tnotes.push(`Expanded date fields: ${fields}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.windowRankSortBy?.used) {\n\t\tnotes.push('Retried after normalizing window rank sortBy to a single key.');\n\t}\n\tif (fallbackInfo?.queryFieldAliases?.used) {\n\t\tconst entries = fallbackInfo.queryFieldAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.queryFieldAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Rewrote query fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.projectionAliases?.used) {\n\t\tconst entries = fallbackInfo.projectionAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.projectionAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Expanded projection fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.unwind?.used) {\n\t\tnotes.push(`Applied unwind fallback on ${fallbackInfo.unwind.path}.`);\n\t}\n\tif (fallbackInfo?.nameMatch?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.nameMatch.fields)\n\t\t\t? fallbackInfo.nameMatch.fields.join(', ')\n\t\t\t: fallbackInfo.nameMatch.field;\n\t\tnotes.push(`Expanded name match fields: ${fields}.`);\n\t}\n\tif (fallbackInfo?.chemicalLookup?.used) {\n\t\tconst collection = fallbackInfo.chemicalLookup.collection ? ` in ${fallbackInfo.chemicalLookup.collection}` : '';\n\t\tnotes.push(`Applied chemical lookup${collection}.`);\n\t}\n\tif (fallbackInfo?.reportBuilderBridge?.used) {\n\t\tconst from = fallbackInfo.reportBuilderBridge.from || 'unknown';\n\t\tconst to = fallbackInfo.reportBuilderBridge.to || 'unknown';\n\t\tconst mode = normalizeOptionalString(fallbackInfo.reportBuilderBridge.mode);\n\t\tif (mode === 'direct-mongo') {\n\t\t\tnotes.push(`Report builder bridge direct fallback: ${from} -> ${to}.`);\n\t\t}\n\t\telse {\n\t\t\tnotes.push(`Report builder bridge collection: ${from} -> ${to}.`);\n\t\t}\n\t\tconst path = Array.isArray(fallbackInfo.reportBuilderBridge.resolutionPath)\n\t\t\t? fallbackInfo.reportBuilderBridge.resolutionPath\n\t\t\t\t.map((entry: any) => normalizeOptionalString(entry))\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' -> ')\n\t\t\t: '';\n\t\tif (path) {\n\t\t\tnotes.push(`Bridge resolution path: ${path}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.reportFallback?.used) {\n\t\tconst from = fallbackInfo.reportFallback.from || 'report';\n\t\tconst to = fallbackInfo.reportFallback.to || 'base';\n\t\tnotes.push(`Report fallback: ${from} -> ${to}.`);\n\t}\n\tif (fallbackInfo?.collectionRetry?.used) {\n\t\tconst from = fallbackInfo.collectionRetry.from || 'unknown';\n\t\tconst to = fallbackInfo.collectionRetry.to || 'unknown';\n\t\tnotes.push(`Cross-collection retry: ${from} -> ${to}.`);\n\t}\n\telse if (fallbackInfo?.collectionRetry?.attempted && Array.isArray(fallbackInfo.collectionRetry.tried) && fallbackInfo.collectionRetry.tried.length) {\n\t\tnotes.push(`Cross-collection retry attempted: ${fallbackInfo.collectionRetry.tried.join(', ')}.`);\n\t}\n\tif (fallbackInfo?.relationshipRetry?.used) {\n\t\tconst from = fallbackInfo.relationshipRetry.from || 'unknown';\n\t\tconst to = fallbackInfo.relationshipRetry.to || 'unknown';\n\t\tconst prefix = fallbackInfo.relationshipRetry.prefix ? ` via ${fallbackInfo.relationshipRetry.prefix}` : '';\n\t\tnotes.push(`Relationship retry: ${from} -> ${to}${prefix}.`);\n\t}\n\telse if (fallbackInfo?.relationshipRetry?.attempted && Array.isArray(fallbackInfo.relationshipRetry.candidates) && fallbackInfo.relationshipRetry.candidates.length) {\n\t\tconst targets = fallbackInfo.relationshipRetry.candidates\n\t\t\t.map((entry: any) => normalizeOptionalString(entry?.collection))\n\t\t\t.filter(Boolean);\n\t\tif (targets.length) {\n\t\t\tnotes.push(`Relationship retry attempted: ${targets.join(', ')}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.idLookup?.used) {\n\t\tconst field = fallbackInfo.idLookup.field || 'id';\n\t\tconst strategy = fallbackInfo.idLookup.strategy || 'lookup';\n\t\tconst collection = fallbackInfo.idLookup.collection ? ` in ${fallbackInfo.idLookup.collection}` : '';\n\t\tconst detail = fallbackInfo.idLookup.nameField ? ` via ${fallbackInfo.idLookup.nameField}` : '';\n\t\tnotes.push(`Resolved ${field} by ${strategy}${collection}${detail}.`);\n\t}\n\tif (fallbackInfo?.idDisplayLookup?.used) {\n\t\tconst lookups = Array.isArray(fallbackInfo.idDisplayLookup.lookups)\n\t\t\t? fallbackInfo.idDisplayLookup.lookups\n\t\t\t: [];\n\t\tconst summary = lookups\n\t\t\t.map((entry: any) => entry?.displayField || entry?.field)\n\t\t\t.filter(Boolean)\n\t\t\t.join(', ');\n\t\tnotes.push(summary ? `Resolved id lookups for display: ${summary}.` : 'Resolved id lookups for display.');\n\t}\n\tif (params.toolError) {\n\t\tconst errorMessage = params.toolError?.message || String(params.toolError || '');\n\t\tif (errorMessage) {\n\t\t\tnotes.push(`Tool error: ${errorMessage}`);\n\t\t}\n\t}\n\n\tconst payload: Record<string, any> = {\n\t\trequestClassification: {\n\t\t\ttype: params.requestType,\n\t\t\tsource: params.requestTypeSource,\n\t\t\tplannerIntentType: params.plannerIntentType || undefined,\n\t\t\tdataQuestion: params.dataQuestion\n\t\t},\n\t\tdecision: {\n\t\t\trequestType: params.requestType,\n\t\t\trequestTypeSource: params.requestTypeSource,\n\t\t\tplannerIntentType: params.plannerIntentType || undefined,\n\t\t\tdataQuestion: params.dataQuestion,\n\t\t\treportStyleIntent: params.reportStyleIntent || undefined,\n\t\t\ttimeGrain: params.requestedTimeGrain || undefined,\n\t\t\tdatedDirectiveRetryUsed: params.datedDirectiveRetryUsed === true ? true : undefined,\n\t\t\tdatedDirectiveResolved: params.datedDirectiveResolved === true ? true : undefined,\n\t\t\tdirectiveSource: params.directiveSource\n\t\t},\n\t\tdirective: directive ? {\n\t\t\ttype: directive.type,\n\t\t\tpayload: directivePayload,\n\t\t\trawLine: directive.rawLine\n\t\t} : null,\n\t\tcollectionOverride: params.collectionOverride || undefined,\n\t\tcollection: resolvedCollection || requestedCollection || undefined,\n\t\tcollectionRequested: requestedCollection || undefined,\n\t\tcollectionResolved: resolvedCollection || undefined,\n\t\tcollectionMatched: matchedCollection,\n\t\tcollectionCandidates: candidateCollections.length ? candidateCollections : undefined,\n\t\tcollectionScore: typeof params.toolResponseDebug?.collectionScore === 'number'\n\t\t\t? params.toolResponseDebug.collectionScore\n\t\t\t: undefined,\n\t\tquery: params.toolResponseDebug?.query || undefined,\n\t\tpipeline: params.toolResponseDebug?.executedPipeline || params.toolResponseDebug?.originalPipeline || undefined,\n\t\toptions: params.toolResponseDebug?.options || undefined,\n\t\tfallbacks: params.toolResponseDebug?.fallbacks || undefined,\n\t\ttoolExecution: params.toolExecution || undefined,\n\t\tnotes\n\t};\n\tif (params.trace && typeof params.trace === 'object') {\n\t\tpayload.trace = params.trace;\n\t}\n\treturn payload;\n}\n\nfunction buildAssistantToolErrorMessage(error: any): string {\n\tconst rawMessage = normalizeOptionalString(error?.message) || 'Unable to access data.';\n\tconst normalized = rawMessage.toLowerCase();\n\tconst cleaned = rawMessage\n\t\t.replace(/^AI assistant report builder bridge:\\s*/i, '')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim()\n\t\t.replace(/\\.*$/, '');\n\tif (normalized.includes('permission scope required')) {\n\t\treturn 'I couldn\\'t run the data query because no permission scope was provided.';\n\t}\n\tif (normalized.includes('access denied')) {\n\t\treturn 'I couldn\\'t run the data query because this account does not have permission for that dataset.';\n\t}\n\tif (normalized.includes('database access denied')) {\n\t\treturn 'I couldn\\'t run the data query because database access is restricted for this request.';\n\t}\n\tif (normalized.includes('undefined variable') && normalized.includes('now_minus')) {\n\t\treturn 'The query used an unsupported relative date token. Please retry and I will normalize the date expression.';\n\t}\n\tif (normalized.includes('invalid character for a variable name') && (normalized.includes('now-') || normalized.includes('now+'))) {\n\t\treturn 'The query used an unsupported relative date token. Please retry and I will normalize the date expression.';\n\t}\n\tif (normalized.includes('unrecognized argument to $datesubtract:') || normalized.includes('unrecognized argument to $dateadd:')) {\n\t\treturn 'The data query failed because of an invalid date expression argument. Please retry; date arithmetic arguments are now normalized automatically.';\n\t}\n\tif (normalized.includes('no queryable collection could be resolved')) {\n\t\treturn 'I tried all accessible related datasets but could not resolve a queryable source for this request.';\n\t}\n\tif (normalized.includes('report builder bridge') && normalized.includes('not configured')) {\n\t\treturn 'I tried all accessible related datasets but could not resolve a queryable source for this request.';\n\t}\n\tif (normalized.includes('collection is required')) {\n\t\treturn 'I need a valid collection to read from. Please specify which screen or dataset you want.';\n\t}\n\tif (cleaned) {\n\t\treturn `I couldn\\'t run the data query: ${cleaned}.`;\n\t}\n\treturn 'I couldn\\'t run the requested data query.';\n}\n\nexport function deriveAssistantCommandExecutionStatus(commandValue: any): string {\n\tconst command = normalizeOptionalString(commandValue).toLowerCase();\n\tif (!command) {\n\t\treturn 'Running command';\n\t}\n\tif (/\\b(rg|grep|ripgrep|ag|ack)\\b/.test(command)) {\n\t\treturn 'Searching files';\n\t}\n\tif (/\\bfind\\b/.test(command)) {\n\t\treturn 'Finding files';\n\t}\n\tif (/\\b(cat|sed|awk|head|tail|less|more)\\b/.test(command)) {\n\t\treturn 'Opening files';\n\t}\n\tif (/\\b(ls|tree)\\b/.test(command)) {\n\t\treturn 'Scanning files';\n\t}\n\treturn 'Running command';\n}\n\nfunction deriveAssistantStreamStatus(event: any): string | null {\n\tif (!event || !event.type) {\n\t\treturn null;\n\t}\n\tif (event.type === 'thread.started' || event.type === 'turn.started') {\n\t\treturn 'Planning';\n\t}\n\tif (event.type === 'turn.completed') {\n\t\treturn 'Drafting response';\n\t}\n\tif (event.type === 'item.started' || event.type === 'item.updated' || event.type === 'item.completed') {\n\t\tconst itemType = String(event?.item?.type || '').trim().toLowerCase();\n\t\tif (!itemType) {\n\t\t\treturn null;\n\t\t}\n\t\tif (itemType === 'mcp_tool_call') {\n\t\t\treturn 'Planning';\n\t\t}\n\t\tif (itemType === 'command_execution') {\n\t\t\treturn deriveAssistantCommandExecutionStatus(event?.item?.command);\n\t\t}\n\t\tif (itemType === 'web_search') {\n\t\t\treturn 'Searching references';\n\t\t}\n\t\tif (itemType === 'file_change') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'agent_message') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'reasoning') {\n\t\t\treturn 'Planning';\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction normalizeAssistantStreamProgressStatus(status: string, dataMode = false): string {\n\tconst trimmed = normalizeOptionalString(status);\n\tif (!trimmed || !dataMode) {\n\t\treturn trimmed;\n\t}\n\tconst normalized = trimmed.toLowerCase();\n\tif (normalized === 'planning') {\n\t\treturn 'Understanding your request';\n\t}\n\tif (normalized === 'drafting response') {\n\t\treturn 'Preparing the summary';\n\t}\n\tif (normalized === 'searching files' || normalized === 'finding files' || normalized === 'opening files' || normalized === 'scanning files') {\n\t\treturn 'Checking available data';\n\t}\n\treturn trimmed;\n}\n\nfunction createAssistantStreamProgressHandler(\n\tprogressTracker: CodexProgressTracker,\n\tisDataMode?: () => boolean\n): CodexStreamStatusHandler {\n\tlet lastStatus = '';\n\tlet lastSentAt = 0;\n\treturn (status: string) => {\n\t\tconst trimmed = normalizeAssistantStreamProgressStatus(status, isDataMode?.() === true);\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst now = Date.now();\n\t\tif (trimmed === lastStatus && now - lastSentAt < 3000) {\n\t\t\treturn;\n\t\t}\n\t\tlastStatus = trimmed;\n\t\tlastSentAt = now;\n\t\tprogressTracker.push(trimmed);\n\t};\n}\n\nfunction normalizeAssistantProgress(items: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst cleaned: string[] = [];\n\titems.forEach((item) => {\n\t\tconst trimmed = String(item || '').trim();\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst key = trimmed.toLowerCase();\n\t\tif (seen.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(key);\n\t\tcleaned.push(trimmed);\n\t});\n\treturn cleaned;\n}\n\nasync function updateAssistantProgress(messageId: any, progress: string[]): Promise<void> {\n\tconst normalized = normalizeAssistantProgress(progress);\n\tif (!messageId || !normalized.length) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId, 'metadata.pending': true },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.pending': true,\n\t\t\t\t\t'metadata.progress': normalized,\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t}\n\t\t\t},\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tfalse,\n\t\t\ttrue\n\t\t);\n\t}\n\tcatch {\n\t\t// Ignore progress update failures.\n\t}\n}\n\nfunction createAssistantProgressTracker(messageId: any, initialProgress: string[]) {\n\tlet progress = normalizeAssistantProgress(initialProgress);\n\tlet stopped = false;\n\tlet updateScheduled = false;\n\tconst queueProgressUpdate = () => {\n\t\tif (stopped || !messageId || updateScheduled) {\n\t\t\treturn;\n\t\t}\n\t\tupdateScheduled = true;\n\t\tsetTimeout(async () => {\n\t\t\tupdateScheduled = false;\n\t\t\tif (stopped) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait updateAssistantProgress(messageId, progress);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore progress update failures.\n\t\t\t}\n\t\t}, 0);\n\t};\n\treturn {\n\t\tpush: (item: string) => {\n\t\t\tif (stopped || !messageId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprogress = normalizeAssistantProgress([...progress, item]);\n\t\t\tqueueProgressUpdate();\n\t\t},\n\t\tstop: () => {\n\t\t\tstopped = true;\n\t\t}\n\t};\n}\n\nfunction buildAssistantCodexErrorMessage(error: any): string {\n\tconst raw = normalizeOptionalString(error?.message);\n\tif (raw && /timed out/i.test(raw)) {\n\t\treturn 'That took longer than expected. Please try again or narrow the request.';\n\t}\n\treturn 'I ran into an internal error while preparing that response. Please try again.';\n}\n\nfunction buildAssistantRunBudgetExceededMessage(): string {\n\treturn 'I could not finish this request within the assistant time budget. Please narrow the date range or ask for a smaller slice of data and retry.';\n}\n\nfunction isAssistantIdField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized === '_id' || normalized === '__v') {\n\t\treturn true;\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('.');\n\tconst last = parts[parts.length - 1] || '';\n\treturn last.startsWith('id_');\n}\n\nfunction isMongoObjectId(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (typeof value.toHexString === 'function') {\n\t\treturn true;\n\t}\n\treturn value._bsontype === 'ObjectId';\n}\n\nfunction isPlainObject(value: any): boolean {\n\treturn !!value && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nfunction normalizeColumnPriorityKey(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst base = trimmed.includes('.') ? trimmed.split('.').pop() || trimmed : trimmed;\n\treturn base.toLowerCase();\n}\n\nfunction tokenizeFieldKey(value: string): string[] {\n\tconst normalized = String(value || '')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/[^a-zA-Z0-9]+/g, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized ? normalized.split(/\\s+/).filter(Boolean) : [];\n}\n\nfunction normalizeFieldMatchKey(value: string): string {\n\treturn tokenizeFieldKey(value).join('');\n}\n\nfunction getAssistantCollectionMetadata(collectionName: string): {\n\tfields: string[];\n\tlookups: Array<{ localKey: string; lookupCollection: string; lookupKey: string }>;\n} {\n\tconst normalized = normalizeOptionalString(collectionName);\n\tif (!normalized) {\n\t\treturn { fields: [], lookups: [] };\n\t}\n\tconst now = Date.now();\n\tconst cached = AI_ASSISTANT_COLLECTION_METADATA_CACHE.get(normalized);\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_COLLECTION_METADATA_CACHE_TTL_MS) {\n\t\treturn {\n\t\t\tfields: cached.fields,\n\t\t\tlookups: cached.lookups\n\t\t};\n\t}\n\ttry {\n\t\tconst collection = ResolveIOServer.getMongoManager()?.collection(normalized);\n\t\tconst schema = collection?.simplschema;\n\t\tconst rbSchema = collection?.rbSchema;\n\t\tconst fieldSet = new Set<string>();\n\t\tconst lookups: Array<{ localKey: string; lookupCollection: string; lookupKey: string }> = [];\n\t\tif (schema && typeof schema.schema === 'function') {\n\t\t\tObject.keys(schema.schema()).forEach((field) => {\n\t\t\t\tconst normalizedField = normalizeOptionalString(field);\n\t\t\t\tif (normalizedField) {\n\t\t\t\t\tfieldSet.add(normalizedField);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (rbSchema && typeof rbSchema === 'object') {\n\t\t\tObject.keys(rbSchema).forEach((field) => {\n\t\t\t\tconst normalizedField = normalizeOptionalString(field);\n\t\t\t\tif (normalizedField) {\n\t\t\t\t\tfieldSet.add(normalizedField);\n\t\t\t\t}\n\t\t\t\tconst entry = (rbSchema as Record<string, any>)[field];\n\t\t\t\tif (!entry || typeof entry !== 'object') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst lookupCollection = normalizeOptionalString(entry.lookup_collection);\n\t\t\t\tconst localKey = normalizeOptionalString(entry.local_key);\n\t\t\t\tif (!lookupCollection || !localKey) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst lookupKey = normalizeOptionalString(entry.lookup_key) || '_id';\n\t\t\t\tlookups.push({ localKey, lookupCollection, lookupKey });\n\t\t\t});\n\t\t}\n\t\tconst value = {\n\t\t\tfields: Array.from(fieldSet),\n\t\t\tlookups\n\t\t};\n\t\tAI_ASSISTANT_COLLECTION_METADATA_CACHE.set(normalized, {\n\t\t\t...value,\n\t\t\tupdatedAt: now\n\t\t});\n\t\treturn value;\n\t}\n\tcatch {\n\t\treturn cached\n\t\t\t? {\n\t\t\t\tfields: cached.fields,\n\t\t\t\tlookups: cached.lookups\n\t\t\t}\n\t\t\t: { fields: [], lookups: [] };\n\t}\n}\n\nfunction getCollectionSchemaFieldNames(collectionName: string): string[] {\n\treturn getAssistantCollectionMetadata(collectionName).fields;\n}\n\nfunction getCollectionLookupMappings(collectionName: string): Array<{ localKey: string; lookupCollection: string; lookupKey: string }> {\n\treturn getAssistantCollectionMetadata(collectionName).lookups;\n}\n\nfunction normalizeLookupPath(value: string): string {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\treturn trimmed\n\t\t.replace(/\\.\\$\\./g, '.')\n\t\t.replace(/\\.\\$/g, '.')\n\t\t.replace(/\\.\\d+\\./g, '.')\n\t\t.replace(/\\.\\d+$/g, '')\n\t\t.replace(/\\.+/g, '.')\n\t\t.replace(/^\\./, '')\n\t\t.replace(/\\.$/, '');\n}\n\nfunction isUnsafeFieldAlias(\n\trequestedTokens: string[],\n\tcandidateTokens: string[]\n): boolean {\n\tconst reqSet = new Set(requestedTokens);\n\tconst candSet = new Set(candidateTokens);\n\tconst hasReqCreated = reqSet.has('created') || reqSet.has('create');\n\tconst hasReqUpdated = reqSet.has('updated') || reqSet.has('update') || reqSet.has('modified') || reqSet.has('modify');\n\tconst hasCandCreated = candSet.has('created') || candSet.has('create');\n\tconst hasCandUpdated = candSet.has('updated') || candSet.has('update') || candSet.has('modified') || candSet.has('modify');\n\tif (hasReqCreated && hasCandUpdated && !hasCandCreated) {\n\t\treturn true;\n\t}\n\tif (hasReqUpdated && hasCandCreated && !hasCandUpdated) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction expandFieldTokens(tokens: string[]): string[] {\n\tconst expanded = new Set<string>();\n\ttokens.forEach((token) => {\n\t\tif (!token) {\n\t\t\treturn;\n\t\t}\n\t\texpanded.add(token);\n\t\tconst synonyms = AI_ASSISTANT_FIELD_TOKEN_SYNONYMS[token];\n\t\tif (Array.isArray(synonyms)) {\n\t\t\tsynonyms.forEach((synonym) => {\n\t\t\t\tif (synonym) {\n\t\t\t\t\texpanded.add(synonym);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn Array.from(expanded);\n}\n\nfunction getValueAtPath(obj: any, path: string): any {\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst parts = String(path || '').split('.').filter(Boolean);\n\tconst walk = (current: any, index: number): any => {\n\t\tif (index >= parts.length) {\n\t\t\treturn current;\n\t\t}\n\t\tconst part = parts[index];\n\t\tif (Array.isArray(current)) {\n\t\t\tconst numeric = Number(part);\n\t\t\tif (!Number.isNaN(numeric) && current[numeric] !== undefined) {\n\t\t\t\treturn walk(current[numeric], index + 1);\n\t\t\t}\n\t\t\tconst values = current.map(entry => walk(entry, index)).filter(value => value !== undefined);\n\t\t\tif (!values.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn values.length === 1 ? values[0] : values;\n\t\t}\n\t\tif (!current || typeof current !== 'object') {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn walk(current[part], index + 1);\n\t};\n\treturn walk(obj, 0);\n}\n\nfunction hasArrayValueAtPath(docs: any[], path: string): boolean {\n\tif (!Array.isArray(docs) || !docs.length || !path) {\n\t\treturn false;\n\t}\n\tfor (const doc of docs) {\n\t\tconst value = getValueAtPath(doc, path);\n\t\tif (Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction inferIdFieldStorageTypeFromDocs(\n\tdocs: any[],\n\tfieldPath: string\n): 'objectId' | 'string' | 'unknown' {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn 'unknown';\n\t}\n\tlet sawString = false;\n\tfor (const doc of docs) {\n\t\tconst value = fieldPath.includes('.')\n\t\t\t? getValueAtPath(doc, fieldPath)\n\t\t\t: (doc as any)?.[fieldPath];\n\t\tconst queue = Array.isArray(value) ? value : [value];\n\t\tfor (const entry of queue) {\n\t\t\tif (entry === null || entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isMongoObjectId(entry)) {\n\t\t\t\treturn 'objectId';\n\t\t\t}\n\t\t\tif (typeof entry === 'string' && entry.trim()) {\n\t\t\t\tsawString = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn sawString ? 'string' : 'unknown';\n}\n\nexport function normalizeIdsForTargetField(\n\tids: any[],\n\ttargetDocs: any[],\n\ttargetFieldPath: string,\n\ttargetFieldTypeOverride?: 'objectId' | 'string' | 'unknown'\n): any[] {\n\tif (!Array.isArray(ids) || !ids.length) {\n\t\treturn [];\n\t}\n\tconst targetType = targetFieldTypeOverride\n\t\t|| inferIdFieldStorageTypeFromDocs(targetDocs || [], targetFieldPath);\n\tconst normalized: any[] = [];\n\tconst seenStrings = new Set<string>();\n\tconst seenObjectIds = new Set<string>();\n\tconst pushString = (value: any) => {\n\t\tconst text = String(value || '').trim();\n\t\tif (!text || seenStrings.has(text)) {\n\t\t\treturn;\n\t\t}\n\t\tseenStrings.add(text);\n\t\tnormalized.push(text);\n\t};\n\tconst pushObjectId = (value: any) => {\n\t\tif (!isMongoObjectId(value)) {\n\t\t\treturn;\n\t\t}\n\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\tif (!hex || seenObjectIds.has(hex)) {\n\t\t\treturn;\n\t\t}\n\t\tseenObjectIds.add(hex);\n\t\tnormalized.push(value);\n\t};\n\tids.forEach((value) => {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'string') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\t\tpushString(hex);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'objectId') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tpushObjectId(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\t\ttry {\n\t\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isMongoObjectId(value)) {\n\t\t\tpushObjectId(value);\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\tif (hex) {\n\t\t\t\tpushString(hex);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\ttry {\n\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore invalid object id conversions.\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tpushString(value);\n\t});\n\treturn normalized;\n}\n\nfunction normalizeLookupKeyValue(value: any): string {\n\tif (value === null || value === undefined) {\n\t\treturn '';\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn typeof value.toHexString === 'function' ? value.toHexString() : String(value);\n\t}\n\tif (typeof value === 'string') {\n\t\treturn value.trim();\n\t}\n\treturn '';\n}\n\nfunction collectTopLevelIdFieldValues(\n\tdocs: any[],\n\toptions?: { maxFields?: number; maxIds?: number }\n): Array<{ field: string; values: any[] }> {\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn [];\n\t}\n\tconst maxFields = typeof options?.maxFields === 'number'\n\t\t? Math.max(options.maxFields, 0)\n\t\t: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS;\n\tconst maxIds = typeof options?.maxIds === 'number'\n\t\t? Math.max(options.maxIds, 0)\n\t\t: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS;\n\tconst fieldMap = new Map<string, Set<any>>();\n\tfor (const doc of docs) {\n\t\tif (!doc || typeof doc !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst keys = Object.keys(doc);\n\t\tfor (const key of keys) {\n\t\t\tif (!key || key === '_id' || key === '__v') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isAssistantIdField(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = (doc as any)[key];\n\t\t\tconst values = Array.isArray(value) ? value : [value];\n\t\t\tif (!fieldMap.has(key)) {\n\t\t\t\tif (maxFields && fieldMap.size >= maxFields) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfieldMap.set(key, new Set<any>());\n\t\t\t}\n\t\t\tconst bucket = fieldMap.get(key);\n\t\t\tif (!bucket) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalues.forEach((entry) => {\n\t\t\t\tif (entry === null || entry === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (bucket.size >= maxIds) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbucket.add(entry);\n\t\t\t});\n\t\t}\n\t}\n\treturn Array.from(fieldMap.entries()).map(([field, values]) => ({\n\t\tfield,\n\t\tvalues: Array.from(values)\n\t}));\n}\n\nfunction resolveLookupDisplayFieldCandidates(\n\tbaseToken: string,\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tif (!normalizedBase) {\n\t\treturn [];\n\t}\n\tconst seededCandidates = buildNameLookupFields(normalizedBase, probeDocs || []);\n\tconst schema = Array.isArray(schemaFields) ? schemaFields : [];\n\tconst schemaCandidates = schema.filter((field) => {\n\t\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\t\tif (!normalized) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!/(name|label|title|display|billing|company|account|client|customer|full)/.test(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn !/(^|\\.)(id|code|number|count|qty|quantity|total)(\\.|_|$)/.test(normalized);\n\t});\n\tconst probeFieldStats = collectFieldCandidates(probeDocs || []);\n\tconst probeCandidates = Array.from(probeFieldStats.entries())\n\t\t.filter(([, stats]) => stats.nonEmpty > 0)\n\t\t.map(([field]) => field)\n\t\t.filter((field) => {\n\t\t\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\t\t\tif (!normalized) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!/(name|label|title|display|billing|company|account|client|customer|full)/.test(normalized)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn !/(^|\\.)(id|code|number|count|qty|quantity|total)(\\.|_|$)/.test(normalized);\n\t\t});\n\tconst normalizedCandidates = normalizeAggregateFieldList([\n\t\t...seededCandidates,\n\t\t...schemaCandidates,\n\t\t...probeCandidates\n\t].map((field) => normalizeLookupPath(field) || normalizeOptionalString(field)));\n\tconst safeCandidates = normalizedCandidates.filter((field) => isAssistantProjectionKeyAllowed(field));\n\treturn safeCandidates.slice(0, 24);\n}\n\nfunction scoreLookupDisplayFieldFromDocs(\n\tfield: string,\n\tlookupDocs: any[]\n): { field: string; score: number; fillRate: number; uniqueCount: number; nonEmptyCount: number } {\n\tconst docs = Array.isArray(lookupDocs) ? lookupDocs : [];\n\tconst uniqueValues = new Set<string>();\n\tlet nonEmptyCount = 0;\n\tdocs.forEach((doc) => {\n\t\tconst raw = getValueAtPath(doc, field) ?? (doc as any)?.[field];\n\t\tif (isEmptyDisplayValue(raw) || isDisplayObjectLike(raw)) {\n\t\t\treturn;\n\t\t}\n\t\tconst text = normalizeOptionalString(typeof raw === 'string' ? raw : String(raw));\n\t\tif (!text) {\n\t\t\treturn;\n\t\t}\n\t\tnonEmptyCount += 1;\n\t\tuniqueValues.add(text.toLowerCase());\n\t});\n\tconst fillRate = docs.length ? (nonEmptyCount / docs.length) : 0;\n\tconst uniqueCount = uniqueValues.size;\n\tconst normalizedField = normalizeOptionalString(field).toLowerCase();\n\tlet semanticBonus = 0;\n\tif (/billing_name|customer_name|client_name|company_name/.test(normalizedField)) {\n\t\tsemanticBonus += 18;\n\t}\n\tif (/(^|\\.)(name|label|title|display_name|displayname|fullname|full_name)(\\.|_|$)/.test(normalizedField)) {\n\t\tsemanticBonus += 12;\n\t}\n\tif (/(^|\\.)(id|code|number|count|qty|quantity|total)(\\.|_|$)/.test(normalizedField)) {\n\t\tsemanticBonus -= 20;\n\t}\n\tconst score = (fillRate * 100) + (Math.min(uniqueCount, nonEmptyCount) * 3) + semanticBonus;\n\treturn {\n\t\tfield,\n\t\tscore,\n\t\tfillRate,\n\t\tuniqueCount,\n\t\tnonEmptyCount\n\t};\n}\n\nfunction resolveBestLookupDisplayFieldFromDocs(\n\tcandidates: string[],\n\tlookupDocs: any[]\n): { field: string; score: number; fillRate: number; uniqueCount: number; nonEmptyCount: number } | null {\n\tconst normalizedCandidates = normalizeAggregateFieldList(candidates || []);\n\tif (!normalizedCandidates.length) {\n\t\treturn null;\n\t}\n\tconst ranked = normalizedCandidates\n\t\t.map(field => scoreLookupDisplayFieldFromDocs(field, lookupDocs))\n\t\t.filter(entry => entry.nonEmptyCount > 0)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\tif (a.fillRate !== b.fillRate) {\n\t\t\t\treturn b.fillRate - a.fillRate;\n\t\t\t}\n\t\t\tif (a.uniqueCount !== b.uniqueCount) {\n\t\t\t\treturn b.uniqueCount - a.uniqueCount;\n\t\t\t}\n\t\t\treturn a.field.localeCompare(b.field);\n\t\t});\n\treturn ranked[0] || null;\n}\n\nfunction resolveLookupMappingsForField(\n\tfield: string,\n\tmappings: Array<{ localKey: string; lookupCollection: string; lookupKey: string }>\n): Array<{ localKey: string; lookupCollection: string; lookupKey: string }> {\n\tconst normalizedField = normalizeLookupPath(field);\n\tif (!normalizedField) {\n\t\treturn [];\n\t}\n\treturn mappings.filter((mapping) => normalizeLookupPath(mapping.localKey) === normalizedField);\n}\n\nasync function applyIdLookupDisplayEnrichment(params: {\n\tdocs: any[];\n\tcollection: string;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n}): Promise<{ docs: any[]; meta?: Record<string, any> }> {\n\tconst { docs, collection, db, dbName, idClient, idCustomer, isSuperAdmin } = params;\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn { docs };\n\t}\n\tconst idFields = collectTopLevelIdFieldValues(docs, {\n\t\tmaxFields: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS,\n\t\tmaxIds: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS\n\t});\n\tif (!idFields.length) {\n\t\treturn { docs };\n\t}\n\tconst lookupMappings = getCollectionLookupMappings(collection);\n\tconst allCollections = await listAssistantCollections(db, dbName);\n\tconst collectionProbeCache = new Map<string, any[]>();\n\tconst collectionSchemaCache = new Map<string, string[]>();\n\tconst lookupMeta: Array<Record<string, any>> = [];\n\tlet enrichedDocs = docs.map(doc => ({ ...doc }));\n\n\tfor (const fieldEntry of idFields) {\n\t\tconst values = fieldEntry.values || [];\n\t\tif (!values.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseToken = normalizeIdFieldBase(fieldEntry.field);\n\t\tif (!baseToken) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mappingMatches = resolveLookupMappingsForField(fieldEntry.field, lookupMappings);\n\t\tconst candidateCollections = mappingMatches.length\n\t\t\t? mappingMatches.map(entry => entry.lookupCollection)\n\t\t\t: resolveIdLookupCandidates(baseToken, allCollections);\n\t\tconst filteredCandidates = candidateCollections\n\t\t\t.filter(candidate => !!candidate)\n\t\t\t.filter(candidate => candidate !== collection)\n\t\t\t.filter(candidate => !candidate.endsWith('.versions'))\n\t\t\t.filter(candidate => isSuperAdmin || !AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate))\n\t\t\t.slice(0, AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_COLLECTIONS);\n\t\tif (!filteredCandidates.length) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const candidate of filteredCandidates) {\n\t\t\tlet probeDocs = collectionProbeCache.get(candidate);\n\t\t\tif (!probeDocs) {\n\t\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t\t: false;\n\t\t\t\tprobeDocs = await fetchAssistantProbeDocs({\n\t\t\t\t\tdb,\n\t\t\t\t\tcollection: candidate,\n\t\t\t\t\tidClient,\n\t\t\t\t\tidCustomer,\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\tincludeClientScope: candidateHasClientScope\n\t\t\t\t});\n\t\t\t\tcollectionProbeCache.set(candidate, probeDocs);\n\t\t\t}\n\t\t\tconst schemaFields = collectionSchemaCache.get(candidate)\n\t\t\t\t|| getCollectionSchemaFieldNames(candidate);\n\t\t\tcollectionSchemaCache.set(candidate, schemaFields);\n\n\t\t\tconst nameFieldCandidates = resolveLookupDisplayFieldCandidates(baseToken, probeDocs, schemaFields);\n\t\t\tif (!nameFieldCandidates.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst mapping = mappingMatches.find(entry => entry.lookupCollection === candidate);\n\t\t\tconst lookupKey = normalizeLookupPath(mapping?.lookupKey || '') || '_id';\n\t\t\tconst idsForQuery = normalizeIdsForTargetField(values, probeDocs, lookupKey);\n\t\t\tif (!idsForQuery.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst normalizedNameFieldCandidates = normalizeAggregateFieldList(\n\t\t\t\tnameFieldCandidates\n\t\t\t\t\t.map(field => normalizeLookupPath(field) || normalizeOptionalString(field))\n\t\t\t\t\t.filter(Boolean)\n\t\t\t)\n\t\t\t\t.filter(field => field !== lookupKey)\n\t\t\t\t.filter(field => isAssistantProjectionKeyAllowed(field));\n\t\t\tif (!normalizedNameFieldCandidates.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet query: Record<string, any> = { [lookupKey]: { $in: idsForQuery } };\n\t\t\tif (!isSuperAdmin) {\n\t\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t\t: false;\n\t\t\t\tif (candidateHasClientScope) {\n\t\t\t\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t\t\t\t}\n\t\t\t\tquery = applyCustomerScopeFilter(query, candidate, idCustomer, isSuperAdmin);\n\t\t\t}\n\t\t\tconst rawProjection: Record<string, number | boolean> = { [lookupKey]: 1 };\n\t\t\tnormalizedNameFieldCandidates.forEach((field) => {\n\t\t\t\trawProjection[field] = 1;\n\t\t\t});\n\t\t\tconst projection = sanitizeAssistantProjection(rawProjection);\n\t\t\tif (!projection || !Object.keys(projection).length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst lookupDocs = await db.collection(candidate).find(query, {\n\t\t\t\tprojection,\n\t\t\t\tlimit: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS,\n\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t\t}).toArray();\n\t\t\tif (!lookupDocs.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst bestLookupField = resolveBestLookupDisplayFieldFromDocs(normalizedNameFieldCandidates, lookupDocs);\n\t\t\tif (!bestLookupField?.field) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst nameField = bestLookupField.field;\n\t\t\tconst nameMap = new Map<string, any>();\n\t\t\tlookupDocs.forEach((doc: any) => {\n\t\t\t\tconst key = normalizeLookupKeyValue(getValueAtPath(doc, lookupKey) ?? doc?.[lookupKey]);\n\t\t\t\tif (!key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nameValue = getValueAtPath(doc, nameField) ?? doc?.[nameField];\n\t\t\t\tif (isEmptyDisplayValue(nameValue)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!nameMap.has(key)) {\n\t\t\t\t\tnameMap.set(key, nameValue);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!nameMap.size) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst displayField = baseToken;\n\t\t\tenrichedDocs = enrichedDocs.map((doc: any) => {\n\t\t\t\tconst rawValue = doc?.[fieldEntry.field];\n\t\t\t\tif (rawValue === undefined || rawValue === null) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\tif (!displayField || !isEmptyDisplayValue(doc?.[displayField])) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\tconst valuesToResolve = Array.isArray(rawValue) ? rawValue : [rawValue];\n\t\t\t\tconst resolved = valuesToResolve\n\t\t\t\t\t.map(value => nameMap.get(normalizeLookupKeyValue(value)))\n\t\t\t\t\t.filter(value => !isEmptyDisplayValue(value));\n\t\t\t\tif (!resolved.length) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...doc,\n\t\t\t\t\t[displayField]: resolved.length === 1 ? resolved[0] : resolved\n\t\t\t\t};\n\t\t\t});\n\t\t\tlookupMeta.push({\n\t\t\t\tfield: fieldEntry.field,\n\t\t\t\tdisplayField,\n\t\t\t\tcollection: candidate,\n\t\t\t\tnameField,\n\t\t\t\tnameFieldFillRate: round(bestLookupField.fillRate * 100, 2),\n\t\t\t\tnameFieldUniqueValues: bestLookupField.uniqueCount,\n\t\t\t\tcandidateFieldsTested: normalizedNameFieldCandidates.length,\n\t\t\t\tidCount: values.length,\n\t\t\t\tmatched: nameMap.size,\n\t\t\t\tstrategy: mapping ? 'schema' : 'token'\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!lookupMeta.length) {\n\t\treturn { docs: enrichedDocs };\n\t}\n\treturn {\n\t\tdocs: enrichedDocs,\n\t\tmeta: {\n\t\t\tattempted: true,\n\t\t\tused: true,\n\t\t\tlookups: lookupMeta\n\t\t}\n\t};\n}\n\nfunction hasNonEmptyValue(\n\tdocs: any[],\n\tfieldPath: string,\n\toptions?: { treatObjectLikeAsEmpty?: boolean }\n): boolean {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn false;\n\t}\n\tconst usePath = fieldPath.includes('.');\n\tfor (const doc of docs) {\n\t\tconst value = usePath ? getValueAtPath(doc, fieldPath) : (doc as any)?.[fieldPath];\n\t\tif (options?.treatObjectLikeAsEmpty && isDisplayObjectLike(value)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\ntype FieldCandidateStats = {\n\tnonEmpty: number;\n\tobjectLike: number;\n\tnormalized: string;\n};\n\nfunction collectFieldCandidates(docs: any[]): Map<string, FieldCandidateStats> {\n\tconst candidates = new Map<string, FieldCandidateStats>();\n\tif (!Array.isArray(docs)) {\n\t\treturn candidates;\n\t}\n\tconst addCandidate = (path: string, value: any) => {\n\t\tif (!path) {\n\t\t\treturn;\n\t\t}\n\t\tconst entry = candidates.get(path) || {\n\t\t\tnonEmpty: 0,\n\t\t\tobjectLike: 0,\n\t\t\tnormalized: normalizeFieldMatchKey(path)\n\t\t};\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\tentry.nonEmpty += 1;\n\t\t}\n\t\tif (isDisplayObjectLike(value)) {\n\t\t\tentry.objectLike += 1;\n\t\t}\n\t\tcandidates.set(path, entry);\n\t};\n\tdocs.forEach((doc) => {\n\t\tif (!doc || typeof doc !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(doc).forEach((key) => {\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = (doc as any)[key];\n\t\t\taddCandidate(key, value);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tconst nestedSamples = value.filter(entry => isPlainObject(entry)).slice(0, 3);\n\t\t\t\tnestedSamples.forEach((entry) => {\n\t\t\t\t\tObject.keys(entry).slice(0, 50).forEach((nestedKey) => {\n\t\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (entry as any)[nestedKey]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\t\tconst nestedKeys = Object.keys(value).slice(0, 50);\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (value as any)[nestedKey]);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\treturn candidates;\n}\n\nfunction resolveFieldAliases(docs: any[], requestedFields: string[], schemaFields?: string[]): Record<string, string> {\n\tconst aliases: Record<string, string> = {};\n\tif (!Array.isArray(docs) || !requestedFields.length) {\n\t\treturn aliases;\n\t}\n\tconst missing = requestedFields.filter(field => field && !hasNonEmptyValue(docs, field, { treatObjectLikeAsEmpty: true }));\n\tif (!missing.length) {\n\t\treturn aliases;\n\t}\n\tconst candidates = collectFieldCandidates(docs);\n\tconst schemaFieldList = Array.isArray(schemaFields) ? schemaFields.filter(Boolean) : [];\n\tconst candidateFieldList = schemaFieldList.length ? schemaFieldList : Array.from(candidates.keys());\n\tmissing.forEach((field) => {\n\t\tconst normalizedRequested = normalizeFieldMatchKey(field);\n\t\tif (!normalizedRequested) {\n\t\t\treturn;\n\t\t}\n\t\tconst requestedBaseTokens = tokenizeFieldKey(field);\n\t\tconst requestedHasType = requestedBaseTokens.includes('type');\n\t\tconst hasNonTypeCandidate = requestedBaseTokens.length\n\t\t\t? candidateFieldList.some((candidateField) => {\n\t\t\t\tconst tokens = tokenizeFieldKey(candidateField);\n\t\t\t\tif (tokens.includes('type')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn requestedBaseTokens.some(token => tokens.includes(token));\n\t\t\t})\n\t\t\t: false;\n\t\tlet bestPath = '';\n\t\tlet bestScore = 0;\n\t\tcandidates.forEach((stats, path) => {\n\t\t\tif (!path || stats.nonEmpty === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isAssistantIdField(path)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst candidateTokens = tokenizeFieldKey(path);\n\t\t\tif (isUnsafeFieldAlias(requestedBaseTokens, candidateTokens)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!requestedHasType && candidateTokens.includes('type') && hasNonTypeCandidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst normalizedCandidate = stats.normalized || normalizeFieldMatchKey(path);\n\t\t\tif (!normalizedCandidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet score = 0;\n\t\t\tif (normalizedCandidate === normalizedRequested) {\n\t\t\t\tscore = 100;\n\t\t\t}\n\t\t\telse if (normalizedCandidate.includes(normalizedRequested) || normalizedRequested.includes(normalizedCandidate)) {\n\t\t\t\tscore = 70;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst requestedTokens = expandFieldTokens(requestedBaseTokens);\n\t\t\t\tconst overlap = requestedTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tconst baseOverlap = requestedBaseTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tif (overlap > 0) {\n\t\t\t\t\tscore = 40 + overlap * 10;\n\t\t\t\t\tif (baseOverlap === 0) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t\tif (requestedBaseTokens.length <= 2) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst objectRatio = stats.objectLike / Math.max(stats.nonEmpty, 1);\n\t\t\tif (objectRatio > 0.5) {\n\t\t\t\tscore -= 50;\n\t\t\t}\n\t\t\tif (score > bestScore) {\n\t\t\t\tbestScore = score;\n\t\t\t\tbestPath = path;\n\t\t\t}\n\t\t});\n\t\tif (bestPath && bestScore >= 60) {\n\t\t\taliases[field] = bestPath;\n\t\t}\n\t});\n\treturn aliases;\n}\n\nfunction applyFieldAliasesForDisplay(docs: any[], aliases: Record<string, string>): any[] {\n\tif (!Array.isArray(docs) || !aliases || !Object.keys(aliases).length) {\n\t\treturn docs;\n\t}\n\treturn docs.map((doc) => {\n\t\tconst next = { ...doc } as Record<string, any>;\n\t\tObject.keys(aliases).forEach((targetField) => {\n\t\t\tconst sourcePath = aliases[targetField];\n\t\t\tif (!sourcePath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst existing = targetField.includes('.') ? getValueAtPath(doc, targetField) : (doc as any)?.[targetField];\n\t\t\tif (!isEmptyDisplayValue(existing)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = getValueAtPath(doc, sourcePath);\n\t\t\tif (value !== undefined) {\n\t\t\t\tnext[targetField] = value;\n\t\t\t}\n\t\t});\n\t\treturn next;\n\t});\n}\n\nfunction resolveProjectionRequestedFields(projection?: Record<string, number | boolean>): string[] {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn [];\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn [];\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (!hasInclude || hasExclude) {\n\t\treturn [];\n\t}\n\treturn keys.filter(key => !isAssistantIdField(key));\n}\n\nfunction isInclusiveProjection(projection?: Record<string, number | boolean>): boolean {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn false;\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn false;\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\treturn hasInclude && !hasExclude;\n}\n\nfunction expandProjectionWithAliases(\n\tprojection: Record<string, number | boolean> | undefined,\n\taliases: Record<string, string>\n): Record<string, number | boolean> | undefined {\n\tif (!projection || !isInclusiveProjection(projection) || !aliases || !Object.keys(aliases).length) {\n\t\treturn projection;\n\t}\n\tconst next = { ...projection } as Record<string, number | boolean>;\n\tObject.keys(aliases).forEach((target) => {\n\t\tconst source = aliases[target];\n\t\tif (!source) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(next, source)) {\n\t\t\tnext[source] = 1;\n\t\t}\n\t});\n\treturn sanitizeAssistantProjection(next);\n}\n\nfunction collectQueryFieldPaths(value: any, fields: Set<string>): void {\n\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectQueryFieldPaths(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectQueryFieldPaths(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tfields.add(key);\n\t\tif (entry && typeof entry === 'object' && !Array.isArray(entry) && !isMongoObjectId(entry) && !(entry instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(entry).filter(nested => !nested.startsWith('$'));\n\t\t\tnestedKeys.forEach((nested) => {\n\t\t\t\tfields.add(`${key}.${nested}`);\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction extractQueryFieldPaths(query: any): string[] {\n\tconst fields = new Set<string>();\n\tcollectQueryFieldPaths(query, fields);\n\treturn Array.from(fields).filter(Boolean);\n}\n\nfunction replaceFieldPathDeep(value: any, fromField: string, toField: string): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => replaceFieldPathDeep(entry, fromField, toField));\n\t}\n\tif (value instanceof Date || isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (value && typeof value === 'object') {\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\tnext[nextKey] = replaceFieldPathDeep(value[key], fromField, toField);\n\t\t});\n\t\treturn next;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst fromRef = `$${fromField}`;\n\t\tif (value === fromRef) {\n\t\t\treturn `$${toField}`;\n\t\t}\n\t\tif (value.startsWith(`${fromRef}.`)) {\n\t\t\treturn `$${toField}${value.slice(fromRef.length)}`;\n\t\t}\n\t\treturn value;\n\t}\n\treturn value;\n}\n\nfunction replaceQueryFieldCondition(query: any, field: string, condition: any): any {\n\tconst hasPath = field.includes('.');\n\tconst replaceValue = (value: any, prefix: string): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => replaceValue(entry, prefix));\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn value;\n\t\t}\n\t\tconst next: Record<string, any> = { ...value };\n\t\tObject.keys(next).forEach((key) => {\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tconst matches = hasPath ? currentPath === field : key === field;\n\t\t\tif (matches) {\n\t\t\t\tnext[key] = condition;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tnext[key] = replaceValue(next[key], prefix);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (next[key] && typeof next[key] === 'object') {\n\t\t\t\tnext[key] = replaceValue(next[key], currentPath);\n\t\t\t}\n\t\t});\n\t\treturn next;\n\t};\n\treturn replaceValue(query, '');\n}\n\nfunction formatDisplayColumnName(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tif (trimmed === '_id') {\n\t\treturn 'id';\n\t}\n\tif (trimmed === '_group') {\n\t\treturn 'Group';\n\t}\n\tconst normalized = trimmed.replace(/[\\s_]+/g, '').toLowerCase();\n\tif (normalized === 'createdat') {\n\t\treturn 'Created At';\n\t}\n\tif (normalized === 'updatedat') {\n\t\treturn 'Updated At';\n\t}\n\tconst parts = trimmed.split('.');\n\tconst base = parts[parts.length - 1] || trimmed;\n\tif ((base === 'name' || base === 'title' || base === 'label') && parts.length > 1) {\n\t\treturn parts[parts.length - 2]\n\t\t\t.replace(/[_-]+/g, ' ')\n\t\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t.trim()\n\t\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n\t}\n\treturn base\n\t\t.replace(/[_-]+/g, ' ')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim()\n\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n\nfunction truncateDisplayText(value: string, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string {\n\tif (!value) {\n\t\treturn value;\n\t}\n\tif (value.length <= maxLength) {\n\t\treturn value;\n\t}\n\tconst sliceLength = Math.max(0, maxLength - 3);\n\treturn `${value.slice(0, sliceLength)}...`;\n}\n\nexport function serializeMongoValue(value: any, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string | number | boolean | null {\n\tif (value === null || value === undefined) {\n\t\treturn null;\n\t}\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn truncateDisplayText(value, maxLength);\n\t}\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tif (isMongoObjectId(value)) {\n\t\ttry {\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value);\n\t\t\tconst shortened = hex.length > 8 ? hex.slice(0, 8) : hex;\n\t\t\treturn truncateDisplayText(shortened, maxLength);\n\t\t}\n\t\tcatch {\n\t\t\treturn truncateDisplayText(String(value), maxLength);\n\t\t}\n\t}\n\tif (Array.isArray(value)) {\n\t\tconst preview = value.slice(0, 3).map(entry => serializeMongoValue(entry, maxLength));\n\t\tconst compact = preview.map(entry => (entry === null || entry === undefined) ? '' : String(entry)).join(', ');\n\t\tconst suffix = value.length > 3 ? ', ...' : '';\n\t\treturn truncateDisplayText(`[${compact}${suffix}]`, maxLength);\n\t}\n\tif (typeof value === 'object') {\n\t\tlet text = '';\n\t\ttry {\n\t\t\ttext = JSON.stringify(value);\n\t\t}\n\t\tcatch {\n\t\t\ttext = String(value);\n\t\t}\n\t\tif (!text || text === '[object Object]') {\n\t\t\ttry {\n\t\t\t\ttext = JSON.stringify(value, null, 2);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\ttext = String(value);\n\t\t\t}\n\t\t}\n\t\treturn truncateDisplayText(text, maxLength);\n\t}\n\treturn truncateDisplayText(String(value), maxLength);\n}\n\nexport function flattenForTable(\n\tdoc: any,\n\toptions?: { includeGroupFromId?: boolean; includeIds?: boolean }\n): Record<string, any> {\n\tconst result: Record<string, any> = {};\n\tif (!doc || typeof doc !== 'object') {\n\t\treturn result;\n\t}\n\tif (Object.prototype.hasOwnProperty.call(doc, '_id')) {\n\t\tconst idValue = (doc as any)._id;\n\t\tif (options?.includeIds) {\n\t\t\tresult._id = idValue;\n\t\t}\n\t\tif (options?.includeGroupFromId && idValue !== null && idValue !== undefined) {\n\t\t\tif (isPlainObject(idValue) && !isMongoObjectId(idValue) && !(idValue instanceof Date)) {\n\t\t\t\tObject.keys(idValue).forEach((key) => {\n\t\t\t\t\tif (!key || Object.prototype.hasOwnProperty.call(result, key)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = (idValue as any)[key];\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (!Object.prototype.hasOwnProperty.call(result, '_group')) {\n\t\t\t\tresult._group = idValue;\n\t\t\t}\n\t\t}\n\t}\n\tObject.keys(doc).forEach((key) => {\n\t\tif (key === '_id') {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (doc as any)[key];\n\t\tif (value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(value);\n\t\t\tif (nestedKeys.length && nestedKeys.length <= 6) {\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst nestedValue = (value as any)[nestedKey];\n\t\t\t\t\tif (nestedValue === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[`${key}.${nestedKey}`] = nestedValue;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction normalizeAssistantComparableDateDisplayValue(value: any): string {\n\tif (value === null || value === undefined) {\n\t\treturn '';\n\t}\n\tif (value instanceof Date) {\n\t\treturn Number.isNaN(value.getTime()) ? '' : value.toISOString();\n\t}\n\tif (typeof value === 'number' && Number.isFinite(value)) {\n\t\tconst epochMs = value >= 1e11 ? value : value >= 1e9 ? value * 1000 : null;\n\t\tif (epochMs !== null) {\n\t\t\tconst parsed = new Date(epochMs);\n\t\t\tif (!Number.isNaN(parsed.getTime())) {\n\t\t\t\treturn parsed.toISOString();\n\t\t\t}\n\t\t}\n\t\treturn String(value);\n\t}\n\tconst text = String(value).trim();\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst parsed = Date.parse(text);\n\tif (!Number.isNaN(parsed)) {\n\t\treturn new Date(parsed).toISOString();\n\t}\n\treturn text.toLowerCase();\n}\n\nfunction shouldMergeAssistantDisplayDateField(\n\trows: Array<Record<string, any>>,\n\tpreferredField: string,\n\tcandidateField: string\n): boolean {\n\tlet preferredNonEmpty = 0;\n\tlet candidateNonEmpty = 0;\n\tlet overlap = 0;\n\tlet equalOverlap = 0;\n\trows.forEach((row) => {\n\t\tconst preferredValue = row?.[preferredField];\n\t\tconst candidateValue = row?.[candidateField];\n\t\tconst preferredHasValue = !isEmptyDisplayValue(preferredValue);\n\t\tconst candidateHasValue = !isEmptyDisplayValue(candidateValue);\n\t\tif (preferredHasValue) {\n\t\t\tpreferredNonEmpty += 1;\n\t\t}\n\t\tif (candidateHasValue) {\n\t\t\tcandidateNonEmpty += 1;\n\t\t}\n\t\tif (preferredHasValue && candidateHasValue) {\n\t\t\toverlap += 1;\n\t\t\tif (\n\t\t\t\tnormalizeAssistantComparableDateDisplayValue(preferredValue)\n\t\t\t\t=== normalizeAssistantComparableDateDisplayValue(candidateValue)\n\t\t\t) {\n\t\t\t\tequalOverlap += 1;\n\t\t\t}\n\t\t}\n\t});\n\tif (!candidateNonEmpty) {\n\t\treturn false;\n\t}\n\tif (!preferredNonEmpty) {\n\t\treturn true;\n\t}\n\tif (!overlap) {\n\t\treturn false;\n\t}\n\treturn (equalOverlap / overlap) >= 0.8;\n}\n\nfunction coalesceAssistantDisplayDuplicateFields(rowsRaw: Array<Record<string, any>>): Array<Record<string, any>> {\n\tif (!Array.isArray(rowsRaw) || !rowsRaw.length) {\n\t\treturn Array.isArray(rowsRaw) ? rowsRaw : [];\n\t}\n\tconst rows = rowsRaw.map(row => ({ ...(row || {}) }));\n\tconst collectKeys = () => {\n\t\tconst keySet = new Set<string>();\n\t\trows.forEach((row) => {\n\t\t\tObject.keys(row || {}).forEach((key) => {\n\t\t\t\tif (key) {\n\t\t\t\t\tkeySet.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn keySet;\n\t};\n\tlet keys = collectKeys();\n\n\tArray.from(keys).forEach((key) => {\n\t\tconst { parent, leaf } = splitAssistantFieldPath(key);\n\t\tif (!leaf || !/_string$/i.test(leaf)) {\n\t\t\treturn;\n\t\t}\n\t\tconst baseLeaf = leaf.replace(/_string$/i, '');\n\t\tconst basePath = parent ? `${parent}.${baseLeaf}` : baseLeaf;\n\t\tif (!keys.has(basePath)) {\n\t\t\treturn;\n\t\t}\n\t\trows.forEach((row) => {\n\t\t\tconst stringValue = row?.[key];\n\t\t\tif (!isEmptyDisplayValue(stringValue) && isEmptyDisplayValue(row?.[basePath])) {\n\t\t\t\trow[basePath] = stringValue;\n\t\t\t}\n\t\t\tdelete row[key];\n\t\t});\n\t});\n\tkeys = collectKeys();\n\n\tconst mergeDateGroup = (preferredOrder: string[]) => {\n\t\tconst preferredField = preferredOrder.find(field => keys.has(field));\n\t\tif (!preferredField) {\n\t\t\treturn;\n\t\t}\n\t\tpreferredOrder.forEach((candidateField) => {\n\t\t\tif (candidateField === preferredField || !keys.has(candidateField)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!shouldMergeAssistantDisplayDateField(rows, preferredField, candidateField)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trows.forEach((row) => {\n\t\t\t\tconst candidateValue = row?.[candidateField];\n\t\t\t\tif (!isEmptyDisplayValue(candidateValue) && isEmptyDisplayValue(row?.[preferredField])) {\n\t\t\t\t\trow[preferredField] = candidateValue;\n\t\t\t\t}\n\t\t\t\tdelete row[candidateField];\n\t\t\t});\n\t\t\tkeys.delete(candidateField);\n\t\t});\n\t};\n\tmergeDateGroup(['createdAt', 'created_at', 'date_created', 'created_date', 'date']);\n\tmergeDateGroup(['updatedAt', 'updated_at', 'date_updated', 'updated_date']);\n\n\treturn rows;\n}\n\nexport function buildDisplayTable(\n\tdocs: any[],\n\toptions?: {\n\t\tmaxColumns?: number;\n\t\tmaxRows?: number;\n\t\tincludeIds?: boolean;\n\t\tpriorityFields?: string[];\n\t\tincludeGroupFromId?: boolean;\n\t}\n): AiAssistantDisplayTable {\n\tconst rowsRawInitial = Array.isArray(docs)\n\t\t? docs.map(doc => flattenForTable(doc, {\n\t\t\tincludeIds: options?.includeIds === true,\n\t\t\tincludeGroupFromId: options?.includeGroupFromId === true\n\t\t}))\n\t\t: [];\n\tconst rowsRaw = coalesceAssistantDisplayDuplicateFields(rowsRawInitial);\n\tconst stats = new Map<string, { nonEmpty: number; objectLike: number }>();\n\trowsRaw.forEach((row) => {\n\t\tObject.keys(row).forEach((key) => {\n\t\t\tconst value = (row as any)[key];\n\t\t\tconst entry = stats.get(key) || { nonEmpty: 0, objectLike: 0 };\n\t\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\t\tentry.nonEmpty += 1;\n\t\t\t}\n\t\t\tif (isDisplayObjectLike(value)) {\n\t\t\t\tentry.objectLike += 1;\n\t\t\t}\n\t\t\tstats.set(key, entry);\n\t\t});\n\t});\n\n\tlet columns = Array.from(stats.keys()).filter((key) => {\n\t\tconst entry = stats.get(key);\n\t\tif (!entry || entry.nonEmpty === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!options?.includeIds && isAssistantIdField(key)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (entry.objectLike / Math.max(entry.nonEmpty, 1) > 0.5) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tif (!columns.length && rowsRaw.length) {\n\t\tcolumns = Object.keys(rowsRaw[0] || {}).filter(key => options?.includeIds || !isAssistantIdField(key));\n\t}\n\n\tconst priorityFields = options?.priorityFields || AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\tconst priorityMap = new Map(priorityFields.map((field, index) => [field.toLowerCase(), index]));\n\tcolumns.sort((a, b) => {\n\t\tconst aPriority = priorityMap.get(normalizeColumnPriorityKey(a)) ?? 999;\n\t\tconst bPriority = priorityMap.get(normalizeColumnPriorityKey(b)) ?? 999;\n\t\tif (aPriority !== bPriority) {\n\t\t\treturn aPriority - bPriority;\n\t\t}\n\t\tconst aCount = stats.get(a)?.nonEmpty || 0;\n\t\tconst bCount = stats.get(b)?.nonEmpty || 0;\n\t\tif (aCount !== bCount) {\n\t\t\treturn bCount - aCount;\n\t\t}\n\t\treturn a.localeCompare(b);\n\t});\n\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: AI_ASSISTANT_DISPLAY_MAX_COLUMNS;\n\tif (maxColumns && columns.length > maxColumns) {\n\t\tcolumns = columns.slice(0, maxColumns);\n\t}\n\tconst columnLabels = columns.map(column => formatDisplayColumnName(column) || column);\n\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsRaw.length;\n\tconst limitedRows = maxRows ? rowsRaw.slice(0, maxRows) : [];\n\tconst rows = limitedRows.map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column, index) => {\n\t\t\tconst label = columnLabels[index] || column;\n\t\t\tnext[label] = serializeMongoValue((row as any)[column]);\n\t\t});\n\t\treturn next;\n\t});\n\n\treturn {\n\t\tcolumns: columnLabels,\n\t\trows,\n\t\trowCount: rowsRaw.length,\n\t\ttruncated: rowsRaw.length > maxRows || columns.length > maxColumns,\n\t\tincludeIds: options?.includeIds === true\n\t};\n}\n\nfunction trimDisplayTable(\n\tdisplay: AiAssistantDisplayTable,\n\toptions?: { maxColumns?: number; maxRows?: number }\n): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns)) {\n\t\treturn display;\n\t}\n\tconst rowsSource = Array.isArray(display.rows) ? display.rows : [];\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: display.columns.length;\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsSource.length;\n\tconst columns = maxColumns ? display.columns.slice(0, maxColumns) : [];\n\tconst rows = maxRows ? rowsSource.slice(0, maxRows).map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column) => {\n\t\t\tnext[column] = (row as any)?.[column];\n\t\t});\n\t\treturn next;\n\t}) : [];\n\treturn {\n\t\t...display,\n\t\tcolumns,\n\t\trows,\n\t\ttruncated: display.truncated || display.columns.length > maxColumns || rowsSource.length > maxRows\n\t};\n}\n\nlet assistantCurrencyFormatter: Intl.NumberFormat | null = null;\nlet assistantNumberFormatter: Intl.NumberFormat | null = null;\nlet assistantPercentFormatter: Intl.NumberFormat | null = null;\n\nfunction getAssistantCurrencyFormatter(): Intl.NumberFormat {\n\tif (!assistantCurrencyFormatter) {\n\t\tassistantCurrencyFormatter = new Intl.NumberFormat(AI_ASSISTANT_LOCALE, {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency: AI_ASSISTANT_CURRENCY_CODE,\n\t\t\tcurrencyDisplay: 'narrowSymbol',\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2\n\t\t});\n\t}\n\treturn assistantCurrencyFormatter;\n}\n\nfunction getAssistantNumberFormatter(): Intl.NumberFormat {\n\tif (!assistantNumberFormatter) {\n\t\tassistantNumberFormatter = new Intl.NumberFormat(AI_ASSISTANT_LOCALE, {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: 2\n\t\t});\n\t}\n\treturn assistantNumberFormatter;\n}\n\nfunction getAssistantPercentFormatter(): Intl.NumberFormat {\n\tif (!assistantPercentFormatter) {\n\t\tassistantPercentFormatter = new Intl.NumberFormat(AI_ASSISTANT_LOCALE, {\n\t\t\tstyle: 'percent',\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: 2\n\t\t});\n\t}\n\treturn assistantPercentFormatter;\n}\n\nfunction resolveAssistantNumericValue(value: any): number | null {\n\tif (typeof value === 'number' && Number.isFinite(value)) {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst trimmed = value.trim();\n\t\tif (!trimmed) {\n\t\t\treturn null;\n\t\t}\n\t\tlet negative = false;\n\t\tlet candidate = trimmed;\n\t\tconst accountingMatch = candidate.match(/^\\((.+)\\)$/);\n\t\tif (accountingMatch?.[1]) {\n\t\t\tnegative = true;\n\t\t\tcandidate = accountingMatch[1].trim();\n\t\t}\n\t\tcandidate = candidate.replace(/^\\$/, '').replace(/,/g, '');\n\t\tif (!candidate || !/^[+-]?(?:\\d+|\\d*\\.\\d+)%?$/.test(candidate) || !/[0-9]/.test(candidate)) {\n\t\t\treturn null;\n\t\t}\n\t\tconst normalized = candidate.endsWith('%') ? candidate.slice(0, -1) : candidate;\n\t\tconst parsed = Number(normalized);\n\t\tif (!Number.isFinite(parsed)) {\n\t\t\treturn null;\n\t\t}\n\t\tconst signed = negative ? -parsed : parsed;\n\t\tif (!Number.isFinite(signed)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn signed;\n\t}\n\treturn null;\n}\n\nfunction isAssistantPercentColumn(column: string): boolean {\n\treturn /(percent|pct|percentage|ratio|rate)\\b/.test(column);\n}\n\nconst ASSISTANT_NON_CURRENCY_COLUMN_PATTERN = /\\b(invoice\\s*number|count|qty|quantity|index|rank|sequence|seq|id|code|ticket|number)\\b/;\nconst ASSISTANT_CURRENCY_HINT_PATTERN = /\\b(amount|price|cost|balance|fee|revenue|tax|billing|charge|payment|profit|margin|due)\\b/;\nconst ASSISTANT_MONEY_TOTAL_PATTERN = /\\b(sub\\s*total|subtotal|grand\\s*total|paid\\s*total)\\b/;\nconst ASSISTANT_TOTAL_WITH_MONEY_HINT_PATTERN = /\\btotal\\b.*\\b(amount|revenue|sales|tax|price|cost|balance|paid|due|charge|billing|profit|margin)\\b/;\n\nfunction isAssistantCurrencyColumn(column: string): boolean {\n\tconst normalized = String(column || '').toLowerCase().replace(/[_-]+/g, ' ').trim();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tconst hasMoneyHint = ASSISTANT_CURRENCY_HINT_PATTERN.test(normalized)\n\t\t|| ASSISTANT_MONEY_TOTAL_PATTERN.test(normalized)\n\t\t|| ASSISTANT_TOTAL_WITH_MONEY_HINT_PATTERN.test(normalized);\n\tif (ASSISTANT_NON_CURRENCY_COLUMN_PATTERN.test(normalized) && !hasMoneyHint) {\n\t\treturn false;\n\t}\n\tif (/\\btotal\\b/.test(normalized) && !hasMoneyHint) {\n\t\treturn false;\n\t}\n\treturn hasMoneyHint;\n}\n\nfunction isAssistantDateColumn(column: string): boolean {\n\treturn /(date|day|week|time|created|updated|timestamp|period)\\b/.test(column) || /_at\\b/.test(column);\n}\n\nfunction isAssistantLikelyDateValue(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst normalized = value.trim();\n\t\tif (!normalized || !/[0-9]/.test(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (/^\\d{1,6}$/.test(normalized) || /^\\d{4}$/.test(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!/[-/:T\\s]/.test(normalized) && !/^\\d{8}$/.test(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst parsed = Date.parse(normalized);\n\t\treturn !Number.isNaN(parsed);\n\t}\n\treturn false;\n}\n\nfunction resolveAssistantDisplayDateFormatPreference(): AiAssistantDisplayDateFormat {\n\tconst profile = resolveAssistantAppHeuristicProfile();\n\treturn profile.displayDateFormat || 'mdy';\n}\n\nfunction formatAssistantDateValue(value: any, dateDisplayFormat: AiAssistantDisplayDateFormat = 'iso'): string {\n\tconst dateValue = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(dateValue.getTime())) {\n\t\treturn String(value);\n\t}\n\tconst year = dateValue.getUTCFullYear();\n\tconst month = `${dateValue.getUTCMonth() + 1}`.padStart(2, '0');\n\tconst day = `${dateValue.getUTCDate()}`.padStart(2, '0');\n\tconst datePart = dateDisplayFormat === 'mdy'\n\t\t? `${month}/${day}/${year}`\n\t\t: `${year}-${month}-${day}`;\n\tconst hours = `${dateValue.getUTCHours()}`.padStart(2, '0');\n\tconst minutes = `${dateValue.getUTCMinutes()}`.padStart(2, '0');\n\tconst seconds = `${dateValue.getUTCSeconds()}`.padStart(2, '0');\n\tconst millis = dateValue.getUTCMilliseconds();\n\tif (hours === '00' && minutes === '00' && seconds === '00' && millis === 0) {\n\t\treturn datePart;\n\t}\n\treturn `${datePart} ${hours}:${minutes}`;\n}\n\nfunction formatAssistantDisplayCell(\n\tvalue: any,\n\tcolumn?: string,\n\tdateDisplayFormat: AiAssistantDisplayDateFormat = 'iso'\n): string {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn '';\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map(item => formatAssistantDisplayCell(item, column, dateDisplayFormat)).filter(Boolean).join(', ');\n\t}\n\tif (typeof value === 'string') {\n\t\tconst normalizedCurrency = normalizeAssistantCurrencyText(value);\n\t\tif (normalizedCurrency !== value) {\n\t\t\treturn normalizedCurrency;\n\t\t}\n\t}\n\tconst columnKey = String(column || '').toLowerCase();\n\tif (columnKey.includes('month')) {\n\t\tconst monthBucket = normalizeAssistantMonthBucket(value);\n\t\tif (monthBucket) {\n\t\t\treturn monthBucket;\n\t\t}\n\t}\n\tif (isAssistantDateColumn(columnKey) && isAssistantLikelyDateValue(value)) {\n\t\treturn formatAssistantDateValue(value, dateDisplayFormat);\n\t}\n\tconst numericValue = resolveAssistantNumericValue(value);\n\tif (numericValue !== null) {\n\t\tif (isAssistantPercentColumn(columnKey)) {\n\t\t\tconst percentValue = numericValue > 1 && numericValue <= 100 ? numericValue / 100 : numericValue;\n\t\t\ttry {\n\t\t\t\treturn getAssistantPercentFormatter().format(percentValue);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\treturn `${round(percentValue * 100)}%`;\n\t\t\t}\n\t\t}\n\t\tif (isAssistantCurrencyColumn(columnKey)) {\n\t\t\ttry {\n\t\t\t\treturn getAssistantCurrencyFormatter().format(numericValue);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\treturn `$${numericValue.toFixed(2)}`;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\treturn getAssistantNumberFormatter().format(numericValue);\n\t\t}\n\t\tcatch {\n\t\t\treturn String(numericValue);\n\t\t}\n\t}\n\tif (isAssistantLikelyDateValue(value) && isAssistantDateColumn(columnKey)) {\n\t\treturn formatAssistantDateValue(value, dateDisplayFormat);\n\t}\n\treturn String(value);\n}\n\nfunction normalizeAssistantCurrencyText(value: string): string {\n\tconst raw = String(value || '');\n\tif (!raw) {\n\t\treturn '';\n\t}\n\treturn raw.replace(AI_ASSISTANT_USD_CURRENCY_TEXT_PATTERN, (_match, amount) => `$${amount}`);\n}\n\nexport function formatDisplayTableMarkdown(display: AiAssistantDisplayTable): string {\n\tif (!display || !Array.isArray(display.columns) || !display.columns.length) {\n\t\treturn '';\n\t}\n\tconst dateDisplayFormat = resolveAssistantDisplayDateFormatPreference();\n\tconst header = `| ${display.columns.join(' | ')} |`;\n\tconst separator = `| ${display.columns.map(() => '---').join(' | ')} |`;\n\tconst rows = (display.rows || []).map((row) => {\n\t\tconst cells = display.columns.map((column) => {\n\t\t\tconst rawValue = (row as any)?.[column];\n\t\t\tconst formatted = formatAssistantDisplayCell(rawValue, column, dateDisplayFormat);\n\t\t\treturn escapeMarkdownCell(formatted);\n\t\t});\n\t\treturn `| ${cells.join(' | ')} |`;\n\t});\n\treturn [header, separator, ...rows].join('\\n').trim();\n}\n\nfunction stripAssistantMarkdownTables(value: string): string {\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn '';\n\t}\n\tconst lines = raw.split('\\n');\n\tconst kept: string[] = [];\n\tfor (let index = 0; index < lines.length; index += 1) {\n\t\tconst line = lines[index];\n\t\tconst nextLine = lines[index + 1];\n\t\tif (isAssistantMarkdownTableHeaderLine(line) && isAssistantMarkdownTableSeparatorLine(nextLine || '')) {\n\t\t\tindex += 2;\n\t\t\twhile (index < lines.length && isAssistantMarkdownTableRowLine(lines[index])) {\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t\twhile (index < lines.length && !normalizeOptionalString(lines[index])) {\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t\tindex -= 1;\n\t\t\tif (kept.length && normalizeOptionalString(kept[kept.length - 1])) {\n\t\t\t\tkept.push('');\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tkept.push(line);\n\t}\n\treturn kept.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim();\n}\n\nfunction isAssistantMarkdownTableHeaderLine(line: string): boolean {\n\tconst trimmed = normalizeOptionalString(line);\n\tif (!trimmed || !trimmed.includes('|')) {\n\t\treturn false;\n\t}\n\treturn /^\\|.+\\|$/.test(trimmed);\n}\n\nfunction isAssistantMarkdownTableSeparatorLine(line: string): boolean {\n\tconst trimmed = normalizeOptionalString(line);\n\tif (!trimmed || !trimmed.includes('|')) {\n\t\treturn false;\n\t}\n\treturn /^\\|?\\s*:?-{3,}:?\\s*(\\|\\s*:?-{3,}:?\\s*)+\\|?\\s*$/.test(trimmed);\n}\n\nfunction isAssistantMarkdownTableRowLine(line: string): boolean {\n\tconst trimmed = normalizeOptionalString(line);\n\tif (!trimmed || !trimmed.includes('|')) {\n\t\treturn false;\n\t}\n\treturn /^\\|.*\\|$/.test(trimmed);\n}\n\nfunction ensureAssistantMinimumDisplayColumns(display: AiAssistantDisplayTable): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns) || display.columns.length !== 1) {\n\t\treturn display;\n\t}\n\tconst primary = display.columns[0] || 'Result';\n\tconst rows = Array.isArray(display.rows) ? display.rows : [];\n\tif (!rows.length) {\n\t\treturn display;\n\t}\n\tconst labels = rows\n\t\t.map((row) => normalizeOptionalString((row || {})[primary]) || 'Unknown')\n\t\t.filter(Boolean);\n\tconst uniqueLabels = Array.from(new Set(labels));\n\tif (uniqueLabels.length !== 1) {\n\t\treturn display;\n\t}\n\tconst totalCount = typeof display.rowCount === 'number' && display.rowCount > 0\n\t\t? display.rowCount\n\t\t: rows.length;\n\treturn {\n\t\t...display,\n\t\tcolumns: [primary, 'Count'],\n\t\trows: [{ [primary]: uniqueLabels[0], Count: totalCount }],\n\t\trowCount: 1,\n\t\ttruncated: false\n\t};\n}\n\nfunction resolveAssistantDisplayTemporalLabelHint(value: string): string {\n\tconst text = normalizeOptionalString(value).toLowerCase();\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst explicitCustomerGrouping = /\\b(?:by|per)\\s+(?:each\\s+)?customer\\b/.test(text)\n\t\t|| /\\bcustomer\\s+breakdown\\b/.test(text)\n\t\t|| /\\brevenue\\s+by\\s+customer\\b/.test(text);\n\tif (explicitCustomerGrouping) {\n\t\treturn 'Customer';\n\t}\n\tif (/\\b(year|yearly|per year|by year)\\b/.test(text)) {\n\t\treturn 'Year';\n\t}\n\tif (/\\b(quarter|quarterly|per quarter|by quarter)\\b/.test(text)) {\n\t\treturn 'Quarter';\n\t}\n\tif (/\\b(month|monthly|per month|by month)\\b/.test(text)) {\n\t\treturn 'Month';\n\t}\n\tif (/\\b(week|weekly|per week|by week)\\b/.test(text)) {\n\t\treturn 'Week';\n\t}\n\tif (/\\b(day|daily|per day|by day|date)\\b/.test(text)) {\n\t\treturn 'Day';\n\t}\n\tif (/\\b(customer|client)\\b/.test(text)) {\n\t\treturn 'Customer';\n\t}\n\treturn '';\n}\n\nfunction renameAssistantDisplayColumn(\n\tdisplay: AiAssistantDisplayTable,\n\tfromColumn: string,\n\ttoColumn: string\n): AiAssistantDisplayTable {\n\tconst from = normalizeOptionalString(fromColumn);\n\tconst to = normalizeOptionalString(toColumn);\n\tif (!from || !to || from === to || !Array.isArray(display?.columns)) {\n\t\treturn display;\n\t}\n\tconst index = display.columns.findIndex((column) => normalizeOptionalString(column).toLowerCase() === from.toLowerCase());\n\tif (index === -1) {\n\t\treturn display;\n\t}\n\tconst sourceColumn = display.columns[index];\n\tconst columns = [...display.columns];\n\tcolumns[index] = to;\n\tconst rows = Array.isArray(display.rows)\n\t\t? display.rows.map((row) => {\n\t\t\tconst next = { ...(row || {}) } as Record<string, any>;\n\t\t\tif (Object.prototype.hasOwnProperty.call(next, sourceColumn) && !Object.prototype.hasOwnProperty.call(next, to)) {\n\t\t\t\tnext[to] = next[sourceColumn];\n\t\t\t\tdelete next[sourceColumn];\n\t\t\t}\n\t\t\treturn next;\n\t\t})\n\t\t: [];\n\treturn {\n\t\t...display,\n\t\tcolumns,\n\t\trows\n\t};\n}\n\nfunction applyAssistantDisplayColumnHints(value: string, display: AiAssistantDisplayTable): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns) || !display.columns.length) {\n\t\treturn display;\n\t}\n\tconst firstColumn = normalizeOptionalString(display.columns[0]).toLowerCase();\n\tif (firstColumn !== 'group' && firstColumn !== 'result') {\n\t\treturn display;\n\t}\n\tconst labelHint = resolveAssistantDisplayTemporalLabelHint(value);\n\tif (!labelHint) {\n\t\treturn display;\n\t}\n\treturn renameAssistantDisplayColumn(display, display.columns[0], labelHint);\n}\n\nfunction applyAssistantDisplayTableToResponse(value: string, display: AiAssistantDisplayTable | null | undefined): string {\n\tif (!display || !Array.isArray(display.rows)) {\n\t\treturn value;\n\t}\n\tconst normalizedDisplay = applyAssistantDisplayColumnHints(value, ensureAssistantMinimumDisplayColumns(display));\n\tif (!display.rows.length) {\n\t\tconst cleaned = stripAssistantMarkdownTables(value);\n\t\tconst rowCount = typeof normalizedDisplay.rowCount === 'number' && normalizedDisplay.rowCount > 0\n\t\t\t? normalizedDisplay.rowCount\n\t\t\t: 0;\n\t\tconst noRowsNote = rowCount > 0 ? '' : 'No rows matched your request.';\n\t\tconst alreadyExplainsNoRows = /\\bno (?:matching )?rows?(?: matched| were returned)?\\b/i.test(cleaned);\n\t\tconst base = cleaned\n\t\t\t? (noRowsNote && !alreadyExplainsNoRows\n\t\t\t\t? `${cleaned.trim()}\\n\\n${noRowsNote}`.trim()\n\t\t\t\t: cleaned.trim())\n\t\t\t: noRowsNote;\n\t\treturn base || value;\n\t}\n\tconst table = formatDisplayTableMarkdown(normalizedDisplay);\n\tif (!table) {\n\t\treturn value;\n\t}\n\tconst cleaned = stripAssistantMarkdownTables(value);\n\tif (!cleaned) {\n\t\treturn table;\n\t}\n\treturn `${cleaned.trim()}\\n\\n${table}`.trim();\n}\n\nexport function applyAssistantDisplayTableToResponseForTesting(\n\tvalue: string,\n\tdisplay: AiAssistantDisplayTable | null | undefined\n): string {\n\treturn applyAssistantDisplayTableToResponse(value, display);\n}\n\nfunction escapeMarkdownCell(value: any): string {\n\tconst raw = value === null || value === undefined ? '' : String(value);\n\treturn raw.replace(/\\|/g, '\\\\|').replace(/\\r?\\n/g, ' ').trim();\n}\n\nfunction isEmptyDisplayValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !value.trim();\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\treturn false;\n}\n\nfunction isDisplayObjectLike(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn false;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn false;\n\t}\n\treturn typeof value === 'object';\n}\n\nasync function ensureAssistantReadAccess(\n\tcontext: any,\n\tpermissionView?: string,\n\tcollection?: string\n): Promise<{ user: any; isSuperAdmin: boolean; canViewDebug: boolean }> {\n\tconst idUser = context?.id_user;\n\tif (!idUser) {\n\t\tthrow new Error('AI assistant report builder bridge: Unauthorized.');\n\t}\n\tconst user = await Users.findById(idUser);\n\tif (!user) {\n\t\tthrow new Error('AI assistant report builder bridge: Unauthorized.');\n\t}\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst canViewDebug = isAssistantDebugUser(user);\n\tif (isSuperAdmin) {\n\t\treturn { user, isSuperAdmin, canViewDebug };\n\t}\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tconst normalizedPermission = normalizeAssistantPermissionView(permissionView, normalizedCollection);\n\tif (!normalizedPermission) {\n\t\tthrow new Error('AI assistant report builder bridge: Permission scope required.');\n\t}\n\tconst permissionModule = resolveAssistantPrimaryModuleFromText(normalizedPermission);\n\tconst collectionModule = permissionModule ? null : resolveAssistantPrimaryModuleFromText(normalizedCollection);\n\tconst requestedModule = permissionModule || collectionModule;\n\tconst requiresInvoiceAccess = (normalizedCollection ? requiresInvoicePermission(normalizedCollection) : false)\n\t\t|| AI_ASSISTANT_INVOICE_PERMISSION_PATTERN.test(normalizedPermission);\n\tconst hasInvoiceAccess = requiresInvoiceAccess && userHasInvoiceAccess(user);\n\tconst hasViewAccess = userHasViewPermission(user, normalizedPermission);\n\tconst hasModuleAccess = requestedModule\n\t\t? userHasAssistantChangeModuleAccess(user, requestedModule)\n\t\t: false;\n\tif (!hasViewAccess && !hasInvoiceAccess && !hasModuleAccess) {\n\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t}\n\tif (requiresInvoiceAccess && !hasInvoiceAccess) {\n\t\tthrow new Error('AI assistant report builder bridge: Access denied.');\n\t}\n\treturn { user, isSuperAdmin, canViewDebug };\n}\n\nfunction resolveAssistantDatabaseName(database?: string, mongoConfig?: AiAssistantMongoReadInput['mongo']): string {\n\tconst defaultDb = normalizeOptionalString(mongoConfig?.database) || ResolveIOServer.getServerConfig()?.DATABASE || '';\n\tconst dbName = normalizeOptionalString(database) || defaultDb;\n\tif (!dbName) {\n\t\tthrow new Error('AI assistant report builder bridge: Database is required.');\n\t}\n\tconst allowedFromConfig = Array.isArray(mongoConfig?.databases)\n\t\t? mongoConfig?.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tif (allowedFromConfig.length && !allowedFromConfig.includes(dbName)) {\n\t\tthrow new Error('AI assistant report builder bridge: Database access denied.');\n\t}\n\tconst allowedDatabases = ResolveIOServer.getMongoManager()?.getWatchedDatabases() || [];\n\tif (allowedDatabases.length && !allowedDatabases.includes(dbName)) {\n\t\tthrow new Error('AI assistant report builder bridge: Database access denied.');\n\t}\n\treturn dbName;\n}\n\nexport function resolveAssistantReadDisplayMaxRows(limit: number | undefined, rowCount: number): number {\n\tif (typeof limit === 'number' && Number.isFinite(limit) && limit > 0) {\n\t\treturn Math.max(round(limit), 1);\n\t}\n\tif (typeof rowCount === 'number' && Number.isFinite(rowCount) && rowCount > 0) {\n\t\treturn Math.min(Math.max(round(rowCount), 1), AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS);\n\t}\n\treturn AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS;\n}\n\nfunction normalizeAssistantFindOptions(options?: AiAssistantMongoReadInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst projection = sanitizeAssistantProjection(normalized.projection);\n\tconst sort = sanitizeAssistantSort(normalized.sort);\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(normalized.limit, 0), maxLimit)\n\t\t: defaultLimit;\n\tconst skip = typeof normalized.skip === 'number' ? Math.max(normalized.skip, 0) : 0;\n\treturn {\n\t\tfindOptions: {\n\t\t\tprojection,\n\t\t\tsort,\n\t\t\tlimit,\n\t\t\tskip\n\t\t},\n\t\tincludeTotal: normalized.includeTotal === true\n\t};\n}\n\nfunction isAssistantProjectionKeyAllowed(path: string): boolean {\n\tconst normalized = normalizeOptionalString(path);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized.startsWith('$')) {\n\t\treturn false;\n\t}\n\tif (!normalized.includes('$')) {\n\t\treturn true;\n\t}\n\t// Mongo projection only allows positional operator at terminal path segment (example: \"items.$\").\n\treturn /^[^$]*\\.\\$$/.test(normalized);\n}\n\nfunction sanitizeAssistantProjection(projection?: Record<string, number | boolean>): Record<string, number | boolean> | undefined {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn undefined;\n\t}\n\tlet sanitized = { ...projection } as Record<string, number | boolean>;\n\tconst rawKeys = Object.keys(sanitized);\n\tif (rawKeys.length) {\n\t\tconst next: Record<string, number | boolean> = {};\n\t\trawKeys.forEach((key) => {\n\t\t\tif (!isAssistantProjectionKeyAllowed(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = sanitized[key];\n\t\t\tif (value === 1 || value === 0 || value === true || value === false) {\n\t\t\t\tnext[key] = value;\n\t\t\t}\n\t\t});\n\t\tsanitized = next;\n\t}\n\tlet keys = Object.keys(sanitized);\n\tif (!keys.length) {\n\t\treturn undefined;\n\t}\n\tlet hasInclude = false;\n\tlet hasNonIdExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = sanitized[key];\n\t\tif (value === 0 || value === false) {\n\t\t\tif (key !== '_id') {\n\t\t\t\thasNonIdExclude = true;\n\t\t\t}\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (hasInclude && !hasNonIdExclude) {\n\t\tconst includeKeys = keys.filter((key) => {\n\t\t\tconst value = sanitized[key];\n\t\t\treturn value === 1 || value === true;\n\t\t});\n\t\tconst dedupedIncludeKeys = dedupeAssistantProjectionFieldKeys(includeKeys);\n\t\tif (dedupedIncludeKeys.length !== includeKeys.length) {\n\t\t\tconst includeSet = new Set(dedupedIncludeKeys);\n\t\t\tconst next: Record<string, number | boolean> = {};\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tconst value = sanitized[key];\n\t\t\t\tif (value === 1 || value === true) {\n\t\t\t\t\tif (includeSet.has(key)) {\n\t\t\t\t\t\tnext[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (key === '_id' && (value === 0 || value === false)) {\n\t\t\t\t\tnext[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t\tsanitized = next;\n\t\t\tkeys = Object.keys(sanitized);\n\t\t}\n\t\tconst includeAfterDedupe = keys.filter((key) => {\n\t\t\tconst value = sanitized[key];\n\t\t\treturn value === 1 || value === true;\n\t\t});\n\t\tconst onlyIds = includeAfterDedupe.length > 0\n\t\t\t&& includeAfterDedupe.every(key => isAssistantIdField(key));\n\t\tif (onlyIds) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn sanitized;\n}\n\nfunction dedupeAssistantProjectionFieldKeys(fieldKeys: string[]): string[] {\n\tconst deduped = dedupeAssistantFieldKeys(fieldKeys);\n\tif (deduped.length <= 1) {\n\t\treturn deduped;\n\t}\n\tconst kept = deduped.filter((key, index) => !deduped.some((candidate, candidateIndex) => (\n\t\tcandidateIndex !== index\n\t\t&& candidate.startsWith(`${key}.`)\n\t)));\n\treturn kept.length ? kept : deduped;\n}\n\nfunction sanitizeAssistantSort(sort?: Record<string, any>): Record<string, any> | undefined {\n\tif (!sort || typeof sort !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst keys = Object.keys(sort);\n\tif (!keys.length) {\n\t\treturn undefined;\n\t}\n\tconst dedupedKeys = dedupeAssistantFieldKeys(keys);\n\tif (dedupedKeys.length === keys.length) {\n\t\treturn sort;\n\t}\n\tconst keepSet = new Set(dedupedKeys);\n\tconst next: Record<string, any> = {};\n\tkeys.forEach((key) => {\n\t\tif (keepSet.has(key)) {\n\t\t\tnext[key] = sort[key];\n\t\t}\n\t});\n\treturn Object.keys(next).length ? next : undefined;\n}\n\nfunction splitAssistantFieldPath(fieldPath: string): { parent: string; leaf: string } {\n\tconst normalized = normalizeOptionalString(fieldPath);\n\tif (!normalized) {\n\t\treturn { parent: '', leaf: '' };\n\t}\n\tconst segments = normalized.split('.');\n\tconst leaf = segments.pop() || '';\n\tconst parent = segments.join('.');\n\treturn { parent, leaf };\n}\n\nfunction getAssistantCreatedFieldRank(leaf: string): number {\n\tconst normalized = normalizeFieldMatchKey(leaf);\n\tif (normalized === 'createdat') {\n\t\treturn 1;\n\t}\n\tif (normalized === 'createddate') {\n\t\treturn 2;\n\t}\n\tif (normalized === 'datecreated') {\n\t\treturn 3;\n\t}\n\tif (normalized === 'created') {\n\t\treturn 4;\n\t}\n\treturn 0;\n}\n\nfunction getAssistantUpdatedFieldRank(leaf: string): number {\n\tconst normalized = normalizeFieldMatchKey(leaf);\n\tif (normalized === 'updatedat') {\n\t\treturn 1;\n\t}\n\tif (normalized === 'updateddate') {\n\t\treturn 2;\n\t}\n\tif (normalized === 'dateupdated') {\n\t\treturn 3;\n\t}\n\tif (normalized === 'updated') {\n\t\treturn 4;\n\t}\n\treturn 0;\n}\n\nfunction dedupeAssistantFieldKeys(fieldKeys: string[]): string[] {\n\tif (!Array.isArray(fieldKeys) || !fieldKeys.length) {\n\t\treturn [];\n\t}\n\tconst keys = fieldKeys.filter(Boolean);\n\tif (!keys.length) {\n\t\treturn [];\n\t}\n\tconst keySet = new Set(keys);\n\tconst dropSet = new Set<string>();\n\tconst preferByParent = (\n\t\tentries: Map<string, { key: string; rank: number }>,\n\t\tparent: string,\n\t\tkey: string,\n\t\trank: number\n\t) => {\n\t\tconst current = entries.get(parent);\n\t\tif (!current || rank < current.rank) {\n\t\t\tif (current) {\n\t\t\t\tdropSet.add(current.key);\n\t\t\t}\n\t\t\tentries.set(parent, { key, rank });\n\t\t\treturn;\n\t\t}\n\t\tdropSet.add(key);\n\t};\n\n\tkeys.forEach((key) => {\n\t\tconst { parent, leaf } = splitAssistantFieldPath(key);\n\t\tif (!leaf) {\n\t\t\treturn;\n\t\t}\n\t\tif (/_string$/i.test(leaf)) {\n\t\t\tconst baseLeaf = leaf.replace(/_string$/i, '');\n\t\t\tconst basePath = parent ? `${parent}.${baseLeaf}` : baseLeaf;\n\t\t\tif (keySet.has(basePath)) {\n\t\t\t\tdropSet.add(key);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst createdByParent = new Map<string, { key: string; rank: number }>();\n\tconst updatedByParent = new Map<string, { key: string; rank: number }>();\n\tconst dateByParent = new Map<string, string>();\n\tkeys.forEach((key) => {\n\t\tif (dropSet.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tconst { parent, leaf } = splitAssistantFieldPath(key);\n\t\tif (!leaf) {\n\t\t\treturn;\n\t\t}\n\t\tconst normalizedLeaf = normalizeFieldMatchKey(leaf);\n\t\tif (normalizedLeaf === 'date') {\n\t\t\tif (dateByParent.has(parent)) {\n\t\t\t\tdropSet.add(key);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdateByParent.set(parent, key);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst createdRank = getAssistantCreatedFieldRank(leaf);\n\t\tif (createdRank > 0) {\n\t\t\tpreferByParent(createdByParent, parent, key, createdRank);\n\t\t\treturn;\n\t\t}\n\t\tconst updatedRank = getAssistantUpdatedFieldRank(leaf);\n\t\tif (updatedRank > 0) {\n\t\t\tpreferByParent(updatedByParent, parent, key, updatedRank);\n\t\t}\n\t});\n\n\tdateByParent.forEach((dateKey, parent) => {\n\t\tif (createdByParent.has(parent)) {\n\t\t\tdropSet.add(dateKey);\n\t\t}\n\t});\n\n\treturn keys.filter(key => !dropSet.has(key));\n}\n\nconst AGG_MATCH_EXPR_OPERATORS = new Set(['$eq', '$ne', '$gt', '$gte', '$lt', '$lte']);\nconst ASSISTANT_NOW_RELATIVE_PATTERN = /^\\$\\$NOW_(MINUS|PLUS)_([0-9]+)_(MINUTES?|HOURS?|DAYS?|WEEKS?|MONTHS?|YEARS?)$/i;\nconst ASSISTANT_NOW_RELATIVE_COMPACT_PATTERN = /^\\$\\$NOW([+-])([0-9]+)\\s*(MINUTES?|MINS?|MIN|HOURS?|HRS?|HR|H|DAYS?|D|WEEKS?|WKS?|WK|W|MONTHS?|MOS?|MO|M|YEARS?|YRS?|YR|Y)$/i;\n\nfunction normalizeAssistantTimeUnit(raw: string): 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' {\n\tconst normalized = String(raw || '').toLowerCase();\n\tif (normalized.startsWith('minute')) {\n\t\treturn 'minute';\n\t}\n\tif (normalized.startsWith('hour')) {\n\t\treturn 'hour';\n\t}\n\tif (normalized.startsWith('day')) {\n\t\treturn 'day';\n\t}\n\tif (normalized.startsWith('week')) {\n\t\treturn 'week';\n\t}\n\tif (normalized.startsWith('month')) {\n\t\treturn 'month';\n\t}\n\treturn 'year';\n}\n\nfunction normalizeAssistantCompactTimeUnit(raw: string): 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' {\n\tconst normalized = String(raw || '').toLowerCase();\n\tif (normalized === 'm' || normalized === 'mo' || normalized === 'mos' || normalized.startsWith('month')) {\n\t\treturn 'month';\n\t}\n\tif (normalized === 'min' || normalized === 'mins' || normalized.startsWith('minute')) {\n\t\treturn 'minute';\n\t}\n\tif (normalized === 'h' || normalized === 'hr' || normalized === 'hrs' || normalized.startsWith('hour')) {\n\t\treturn 'hour';\n\t}\n\tif (normalized === 'd' || normalized.startsWith('day')) {\n\t\treturn 'day';\n\t}\n\tif (normalized === 'w' || normalized === 'wk' || normalized === 'wks' || normalized.startsWith('week')) {\n\t\treturn 'week';\n\t}\n\treturn 'year';\n}\n\nfunction parseAssistantNowRelativeToken(value: string): { operator: '$dateAdd' | '$dateSubtract'; amount: number; unit: 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' } | null {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst expandedMatch = trimmed.match(ASSISTANT_NOW_RELATIVE_PATTERN);\n\tif (expandedMatch) {\n\t\tconst direction = String(expandedMatch[1] || '').toUpperCase() === 'PLUS' ? 'PLUS' : 'MINUS';\n\t\tconst amount = Number(expandedMatch[2]);\n\t\tif (!Number.isFinite(amount) || amount < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tconst unit = normalizeAssistantTimeUnit(expandedMatch[3] || '');\n\t\treturn {\n\t\t\toperator: direction === 'PLUS' ? '$dateAdd' : '$dateSubtract',\n\t\t\tamount,\n\t\t\tunit\n\t\t};\n\t}\n\tconst compactMatch = trimmed.match(ASSISTANT_NOW_RELATIVE_COMPACT_PATTERN);\n\tif (!compactMatch) {\n\t\treturn null;\n\t}\n\tconst direction = compactMatch[1] === '+' ? 'PLUS' : 'MINUS';\n\tconst amount = Number(compactMatch[2]);\n\tif (!Number.isFinite(amount) || amount < 0) {\n\t\treturn null;\n\t}\n\tconst unit = normalizeAssistantCompactTimeUnit(compactMatch[3] || '');\n\treturn {\n\t\toperator: direction === 'PLUS' ? '$dateAdd' : '$dateSubtract',\n\t\tamount,\n\t\tunit\n\t};\n}\n\nfunction normalizeAssistantNowExprOperand(value: any): any {\n\tif (typeof value !== 'string') {\n\t\treturn value;\n\t}\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn value;\n\t}\n\tif (trimmed === '$$NOW') {\n\t\treturn '$$NOW';\n\t}\n\tconst normalizedTokenRaw = trimmed.replace(/^\\$+/, '').toUpperCase();\n\tconst normalizedToken = normalizedTokenRaw.replace(/_(UTC|GMT|Z)$/, '');\n\tconst normalizedTokenCompact = normalizedToken.replace(/_/g, '');\n\tif (normalizedToken === 'NOW_START_OF_MONTH') {\n\t\treturn createAssistantNowMonthStartExpr();\n\t}\n\tif (normalizedTokenCompact === 'MONTHSTART' || normalizedTokenCompact === 'STARTOFMONTH') {\n\t\treturn createAssistantNowMonthStartExpr();\n\t}\n\tif (normalizedToken === 'NOW_START_OF_WEEK' || normalizedToken === 'START_OF_WEEK') {\n\t\treturn createAssistantNowWeekStartExpr();\n\t}\n\tif (normalizedTokenCompact === 'WEEKSTART' || normalizedTokenCompact === 'STARTOFWEEK') {\n\t\treturn createAssistantNowWeekStartExpr();\n\t}\n\tif (normalizedToken === 'NOW_START_OF_DAY' || normalizedToken === 'START_OF_DAY' || normalizedToken === 'START_OF_TODAY') {\n\t\treturn createAssistantNowDayStartExpr();\n\t}\n\tif (\n\t\tnormalizedTokenCompact === 'DAYSTART'\n\t\t|| normalizedTokenCompact === 'STARTOFDAY'\n\t\t|| normalizedTokenCompact === 'STARTOFTODAY'\n\t) {\n\t\treturn createAssistantNowDayStartExpr();\n\t}\n\tif (normalizedToken === 'NOW_START_OF_LAST_MONTH') {\n\t\treturn {\n\t\t\t$dateSubtract: {\n\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\tunit: 'month',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedTokenCompact === 'LASTMONTHSTART' || normalizedTokenCompact === 'STARTOFLASTMONTH') {\n\t\treturn {\n\t\t\t$dateSubtract: {\n\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\tunit: 'month',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedToken === 'NOW_START_OF_NEXT_MONTH') {\n\t\treturn {\n\t\t\t$dateAdd: {\n\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\tunit: 'month',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedTokenCompact === 'NEXTMONTHSTART' || normalizedTokenCompact === 'STARTOFNEXTMONTH') {\n\t\treturn {\n\t\t\t$dateAdd: {\n\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\tunit: 'month',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedToken === 'NOW_END_OF_MONTH') {\n\t\treturn {\n\t\t\t$dateSubtract: {\n\t\t\t\tstartDate: {\n\t\t\t\t\t$dateAdd: {\n\t\t\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\t\t\tunit: 'month',\n\t\t\t\t\t\tamount: 1\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tunit: 'millisecond',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedTokenCompact === 'MONTHEND' || normalizedTokenCompact === 'ENDOFMONTH') {\n\t\t// Most LLM-generated monthEnd variables are used as an exclusive upper bound for full-month windows.\n\t\treturn createAssistantNowMonthStartExpr();\n\t}\n\tif (normalizedTokenCompact === 'LASTMONTHEND' || normalizedTokenCompact === 'ENDOFLASTMONTH') {\n\t\treturn {\n\t\t\t$dateSubtract: {\n\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\tunit: 'millisecond',\n\t\t\t\tamount: 1\n\t\t\t}\n\t\t};\n\t}\n\tif (normalizedToken === 'NOW_END_OF_WEEK' || normalizedToken === 'END_OF_WEEK') {\n\t\treturn createAssistantNowWeekEndExpr();\n\t}\n\tif (normalizedTokenCompact === 'WEEKEND' || normalizedTokenCompact === 'ENDOFWEEK') {\n\t\treturn createAssistantNowWeekEndExpr();\n\t}\n\tif (normalizedToken === 'NOW_END_OF_DAY' || normalizedToken === 'END_OF_DAY' || normalizedToken === 'END_OF_TODAY') {\n\t\treturn createAssistantNowDayEndExpr();\n\t}\n\tif (\n\t\tnormalizedTokenCompact === 'DAYEND'\n\t\t|| normalizedTokenCompact === 'ENDOFDAY'\n\t\t|| normalizedTokenCompact === 'ENDOFTODAY'\n\t) {\n\t\treturn createAssistantNowDayEndExpr();\n\t}\n\tconst parsed = parseAssistantNowRelativeToken(trimmed);\n\tif (!parsed) {\n\t\treturn value;\n\t}\n\treturn {\n\t\t[parsed.operator]: {\n\t\t\tstartDate: '$$NOW',\n\t\t\tunit: parsed.unit,\n\t\t\tamount: parsed.amount\n\t\t}\n\t};\n}\n\nfunction normalizeAssistantDateTruncUnit(raw: any): string {\n\tconst normalized = normalizeOptionalString(raw).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized === 'mo') {\n\t\treturn 'month';\n\t}\n\tif (normalized === 'q') {\n\t\treturn 'quarter';\n\t}\n\tif (normalized === 'yr') {\n\t\treturn 'year';\n\t}\n\tif (normalized === 'wk') {\n\t\treturn 'week';\n\t}\n\tif (normalized === 'hr') {\n\t\treturn 'hour';\n\t}\n\tif (normalized === 'min') {\n\t\treturn 'minute';\n\t}\n\tif (normalized === 'sec') {\n\t\treturn 'second';\n\t}\n\tconst allowed = new Set([\n\t\t'millisecond',\n\t\t'second',\n\t\t'minute',\n\t\t'hour',\n\t\t'day',\n\t\t'week',\n\t\t'month',\n\t\t'quarter',\n\t\t'year'\n\t]);\n\tif (allowed.has(normalized)) {\n\t\treturn normalized;\n\t}\n\tif (normalized.startsWith('millisecond')) {\n\t\treturn 'millisecond';\n\t}\n\tif (normalized.startsWith('second')) {\n\t\treturn 'second';\n\t}\n\tif (normalized.startsWith('minute')) {\n\t\treturn 'minute';\n\t}\n\tif (normalized.startsWith('hour')) {\n\t\treturn 'hour';\n\t}\n\tif (normalized.startsWith('day')) {\n\t\treturn 'day';\n\t}\n\tif (normalized.startsWith('week')) {\n\t\treturn 'week';\n\t}\n\tif (normalized.startsWith('month')) {\n\t\treturn 'month';\n\t}\n\tif (normalized.startsWith('quarter')) {\n\t\treturn 'quarter';\n\t}\n\tif (normalized.startsWith('year')) {\n\t\treturn 'year';\n\t}\n\treturn '';\n}\n\nfunction normalizeAssistantDateArithmeticArgs(expression: any): any {\n\tif (!expression || typeof expression !== 'object' || Array.isArray(expression)) {\n\t\treturn expression;\n\t}\n\tif (expression instanceof Date || expression instanceof RegExp || isMongoObjectId(expression)) {\n\t\treturn expression;\n\t}\n\tconst looksLikeDateOperand = (candidate: any): boolean => {\n\t\tif (candidate instanceof Date) {\n\t\t\treturn true;\n\t\t}\n\t\tif (typeof candidate === 'string') {\n\t\t\treturn candidate.startsWith('$$') || candidate.startsWith('$');\n\t\t}\n\t\tif (candidate && typeof candidate === 'object' && !Array.isArray(candidate)) {\n\t\t\treturn Object.keys(candidate).some(op => op.startsWith('$'));\n\t\t}\n\t\treturn false;\n\t};\n\tconst normalizeOperatorArgs = (operator: '$dateAdd' | '$dateSubtract') => {\n\t\tif (!Object.prototype.hasOwnProperty.call(expression, operator)) {\n\t\t\treturn;\n\t\t}\n\t\tconst rawArgs = (expression as any)[operator];\n\t\tif (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rawArgs instanceof Date || rawArgs instanceof RegExp || isMongoObjectId(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextArgs: Record<string, any> = { ...rawArgs };\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'startDate')) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\t\tnextArgs.startDate = nextArgs.date;\n\t\t\t}\n\t\t\telse if (Object.prototype.hasOwnProperty.call(nextArgs, 'start')) {\n\t\t\t\tnextArgs.startDate = nextArgs.start;\n\t\t\t}\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\tdelete nextArgs.date;\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(nextArgs, 'start')) {\n\t\t\tdelete nextArgs.start;\n\t\t}\n\t\tconst explicitUnit = normalizeAssistantDateTruncUnit(nextArgs.unit);\n\t\tif (explicitUnit) {\n\t\t\tnextArgs.unit = explicitUnit;\n\t\t}\n\t\telse {\n\t\t\tconst unitCandidateKeys = ['granularity', 'grain', 'interval', 'timeUnit', 'dateUnit', 'datePart', 'part'];\n\t\t\tconst derivedUnit = unitCandidateKeys\n\t\t\t\t.map(key => normalizeAssistantDateTruncUnit(nextArgs[key]))\n\t\t\t\t.find(Boolean);\n\t\t\tif (derivedUnit) {\n\t\t\t\tnextArgs.unit = derivedUnit;\n\t\t\t}\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'unit')) {\n\t\t\tconst keyedUnitKey = Object.keys(nextArgs).find(key => /(milliseconds?|seconds?|minutes?|hours?|days?|weeks?|months?|quarters?|years?)$/i.test(key));\n\t\t\tif (keyedUnitKey) {\n\t\t\t\tconst derivedUnit = normalizeAssistantDateTruncUnit(keyedUnitKey);\n\t\t\t\tif (derivedUnit) {\n\t\t\t\t\tnextArgs.unit = derivedUnit;\n\t\t\t\t}\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'amount')) {\n\t\t\t\t\tconst keyedAmount = nextArgs[keyedUnitKey];\n\t\t\t\t\tif (typeof keyedAmount === 'number' && Number.isFinite(keyedAmount)) {\n\t\t\t\t\t\tnextArgs.amount = keyedAmount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdelete nextArgs[keyedUnitKey];\n\t\t\t}\n\t\t}\n\t\tconst allowedKeys = new Set(['startDate', 'unit', 'amount', 'timezone']);\n\t\tconst unknownKeys = Object.keys(nextArgs).filter(key => !allowedKeys.has(key));\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'startDate')) {\n\t\t\tconst startCandidateKey = unknownKeys.find((key) => {\n\t\t\t\tconst candidate = nextArgs[key];\n\t\t\t\tif (candidate instanceof Date) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (typeof candidate === 'string') {\n\t\t\t\t\treturn candidate.startsWith('$$') || candidate.startsWith('$');\n\t\t\t\t}\n\t\t\t\tif (candidate && typeof candidate === 'object' && !Array.isArray(candidate)) {\n\t\t\t\t\treturn Object.keys(candidate).some(op => op.startsWith('$'));\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (startCandidateKey) {\n\t\t\t\tnextArgs.startDate = nextArgs[startCandidateKey];\n\t\t\t\tdelete nextArgs[startCandidateKey];\n\t\t\t}\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'amount')) {\n\t\t\tconst amountCandidateKey = Object.keys(nextArgs).find((key) => {\n\t\t\t\tif (allowedKeys.has(key)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst candidate = nextArgs[key];\n\t\t\t\treturn typeof candidate === 'number' && Number.isFinite(candidate);\n\t\t\t});\n\t\t\tif (amountCandidateKey) {\n\t\t\t\tnextArgs.amount = nextArgs[amountCandidateKey];\n\t\t\t\tdelete nextArgs[amountCandidateKey];\n\t\t\t}\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'startDate')) {\n\t\t\tnextArgs.startDate = '$$NOW';\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'unit')) {\n\t\t\tnextArgs.unit = 'day';\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'amount')) {\n\t\t\tnextArgs.amount = 1;\n\t\t}\n\t\tObject.keys(nextArgs).forEach((key) => {\n\t\t\tif (!allowedKeys.has(key)) {\n\t\t\t\tdelete nextArgs[key];\n\t\t\t}\n\t\t});\n\t\t(expression as any)[operator] = nextArgs;\n\t};\n\tconst normalizeDateTruncArgs = () => {\n\t\tif (!Object.prototype.hasOwnProperty.call(expression, '$dateTrunc')) {\n\t\t\treturn;\n\t\t}\n\t\tconst rawArgs = (expression as any).$dateTrunc;\n\t\tif (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rawArgs instanceof Date || rawArgs instanceof RegExp || isMongoObjectId(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextArgs: Record<string, any> = { ...rawArgs };\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date') && Object.prototype.hasOwnProperty.call(nextArgs, 'startDate')) {\n\t\t\tnextArgs.date = nextArgs.startDate;\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date') && Object.prototype.hasOwnProperty.call(nextArgs, 'start')) {\n\t\t\tnextArgs.date = nextArgs.start;\n\t\t}\n\t\tdelete nextArgs.startDate;\n\t\tdelete nextArgs.start;\n\t\tconst explicitUnit = normalizeAssistantDateTruncUnit(nextArgs.unit);\n\t\tif (explicitUnit) {\n\t\t\tnextArgs.unit = explicitUnit;\n\t\t}\n\t\telse {\n\t\t\tconst unitCandidateKeys = ['granularity', 'grain', 'interval', 'timeUnit', 'dateUnit', 'datePart', 'part'];\n\t\t\tconst derivedUnit = unitCandidateKeys\n\t\t\t\t.map(key => normalizeAssistantDateTruncUnit(nextArgs[key]))\n\t\t\t\t.find(Boolean);\n\t\t\tif (derivedUnit) {\n\t\t\t\tnextArgs.unit = derivedUnit;\n\t\t\t}\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'unit') && Object.prototype.hasOwnProperty.call(nextArgs, 'startOfWeek')) {\n\t\t\tnextArgs.unit = 'week';\n\t\t}\n\t\tconst allowedKeys = new Set(['date', 'unit', 'binSize', 'timezone', 'startOfWeek']);\n\t\tconst unknownKeys = Object.keys(nextArgs).filter(key => !allowedKeys.has(key));\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\tconst dateCandidateKey = unknownKeys.find((key) => {\n\t\t\t\tconst candidate = nextArgs[key];\n\t\t\t\tif (candidate instanceof Date) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (typeof candidate === 'string') {\n\t\t\t\t\treturn candidate.startsWith('$$') || candidate.startsWith('$');\n\t\t\t\t}\n\t\t\t\tif (candidate && typeof candidate === 'object' && !Array.isArray(candidate)) {\n\t\t\t\t\treturn Object.keys(candidate).some(op => op.startsWith('$'));\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (dateCandidateKey) {\n\t\t\t\tnextArgs.date = nextArgs[dateCandidateKey];\n\t\t\t\tdelete nextArgs[dateCandidateKey];\n\t\t\t}\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'unit')) {\n\t\t\tnextArgs.unit = 'day';\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\tnextArgs.date = '$$NOW';\n\t\t}\n\t\tObject.keys(nextArgs).forEach((key) => {\n\t\t\tif (!allowedKeys.has(key)) {\n\t\t\t\tdelete nextArgs[key];\n\t\t\t}\n\t\t});\n\t\t(expression as any).$dateTrunc = nextArgs;\n\t};\n\tconst normalizeDateToStringArgs = () => {\n\t\tif (!Object.prototype.hasOwnProperty.call(expression, '$dateToString')) {\n\t\t\treturn;\n\t\t}\n\t\tconst rawArgs = (expression as any).$dateToString;\n\t\tif (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rawArgs instanceof Date || rawArgs instanceof RegExp || isMongoObjectId(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextArgs: Record<string, any> = { ...rawArgs };\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(nextArgs, 'startDate')) {\n\t\t\t\tnextArgs.date = nextArgs.startDate;\n\t\t\t}\n\t\t\telse if (Object.prototype.hasOwnProperty.call(nextArgs, 'start')) {\n\t\t\t\tnextArgs.date = nextArgs.start;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst dateCandidateKey = Object.keys(nextArgs).find((key) => {\n\t\t\t\t\tif (key === 'format' || key === 'timezone' || key === 'onNull' || key === 'onError') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn looksLikeDateOperand(nextArgs[key]);\n\t\t\t\t});\n\t\t\t\tif (dateCandidateKey) {\n\t\t\t\t\tnextArgs.date = nextArgs[dateCandidateKey];\n\t\t\t\t\tdelete nextArgs[dateCandidateKey];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdelete nextArgs.startDate;\n\t\tdelete nextArgs.start;\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\tnextArgs.date = '$$NOW';\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'format')) {\n\t\t\tnextArgs.format = '%Y-%m-%d';\n\t\t}\n\t\tconst allowedKeys = new Set(['date', 'format', 'timezone', 'onNull']);\n\t\tObject.keys(nextArgs).forEach((key) => {\n\t\t\tif (!allowedKeys.has(key)) {\n\t\t\t\tdelete nextArgs[key];\n\t\t\t}\n\t\t});\n\t\t(expression as any).$dateToString = nextArgs;\n\t};\n\tconst normalizeLetArgs = () => {\n\t\tif (!Object.prototype.hasOwnProperty.call(expression, '$let')) {\n\t\t\treturn;\n\t\t}\n\t\tconst rawArgs = (expression as any).$let;\n\t\tif (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tif (rawArgs instanceof Date || rawArgs instanceof RegExp || isMongoObjectId(rawArgs)) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextArgs: Record<string, any> = { ...rawArgs };\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'in')) {\n\t\t\tconst inCandidateKey = ['value', 'expr', 'expression', 'result', 'output']\n\t\t\t\t.find(key => Object.prototype.hasOwnProperty.call(nextArgs, key));\n\t\t\tif (inCandidateKey) {\n\t\t\t\tnextArgs.in = nextArgs[inCandidateKey];\n\t\t\t\tdelete nextArgs[inCandidateKey];\n\t\t\t}\n\t\t}\n\t\tif (!nextArgs.vars || typeof nextArgs.vars !== 'object' || Array.isArray(nextArgs.vars)) {\n\t\t\tnextArgs.vars = {};\n\t\t}\n\t\tObject.keys(nextArgs).forEach((key) => {\n\t\t\tif (key === 'vars' || key === 'in') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t(nextArgs.vars as Record<string, any>)[key] = nextArgs[key];\n\t\t\tdelete nextArgs[key];\n\t\t});\n\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'in')) {\n\t\t\tnextArgs.in = '$$NOW';\n\t\t}\n\t\t(expression as any).$let = nextArgs;\n\t};\n\tconst normalizeDatePartArgs = () => {\n\t\tconst operators = ['$year', '$month', '$week', '$isoWeek', '$isoWeekYear', '$dayOfMonth', '$dayOfYear'];\n\t\toperators.forEach((operator) => {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(expression, operator)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst rawArgs = (expression as any)[operator];\n\t\t\tif (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rawArgs instanceof Date || rawArgs instanceof RegExp || isMongoObjectId(rawArgs)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst nextArgs: Record<string, any> = { ...rawArgs };\n\t\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\t\tconst dateCandidateKey = Object.keys(nextArgs).find((key) => {\n\t\t\t\t\tif (key === 'timezone') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn looksLikeDateOperand(nextArgs[key]);\n\t\t\t\t});\n\t\t\t\tif (dateCandidateKey) {\n\t\t\t\t\tnextArgs.date = nextArgs[dateCandidateKey];\n\t\t\t\t\tdelete nextArgs[dateCandidateKey];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!Object.prototype.hasOwnProperty.call(nextArgs, 'date')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst allowedKeys = new Set(['date', 'timezone']);\n\t\t\tObject.keys(nextArgs).forEach((key) => {\n\t\t\t\tif (!allowedKeys.has(key)) {\n\t\t\t\t\tdelete nextArgs[key];\n\t\t\t\t}\n\t\t\t});\n\t\t\t(expression as any)[operator] = Object.prototype.hasOwnProperty.call(nextArgs, 'timezone')\n\t\t\t\t? nextArgs\n\t\t\t\t: nextArgs.date;\n\t\t});\n\t};\n\tnormalizeOperatorArgs('$dateAdd');\n\tnormalizeOperatorArgs('$dateSubtract');\n\tnormalizeDateTruncArgs();\n\tnormalizeDateToStringArgs();\n\tnormalizeLetArgs();\n\tnormalizeDatePartArgs();\n\treturn expression;\n}\n\nfunction normalizeAssistantNowExprPlaceholdersDeep(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => normalizeAssistantNowExprPlaceholdersDeep(entry));\n\t}\n\tif (value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn normalizeAssistantNowExprOperand(value);\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(value).forEach((key) => {\n\t\tresult[key] = normalizeAssistantNowExprPlaceholdersDeep(value[key]);\n\t});\n\treturn normalizeAssistantDateArithmeticArgs(result);\n}\n\nexport function normalizeAssistantNowExprPlaceholders(value: any): any {\n\treturn normalizeAssistantNowExprPlaceholdersDeep(value);\n}\n\nfunction stripAssistantPositionalPathSegments(path: string): string {\n\tconst normalized = normalizeOptionalString(path);\n\tif (!normalized || !normalized.includes('.$')) {\n\t\treturn normalized;\n\t}\n\treturn normalized.replace(/\\.\\$(?=\\.|$)/g, '');\n}\n\nfunction repairAssistantPositionalPathSegmentsDeep(value: any): { value: any; changed: boolean } {\n\tlet changed = false;\n\tconst rewriteValue = (current: any): any => {\n\t\tif (Array.isArray(current)) {\n\t\t\treturn current.map(entry => rewriteValue(entry));\n\t\t}\n\t\tif (!current || typeof current !== 'object' || current instanceof Date || current instanceof RegExp || isMongoObjectId(current)) {\n\t\t\tif (typeof current === 'string' && current.startsWith('$') && !current.startsWith('$$')) {\n\t\t\t\tconst strippedPath = stripAssistantPositionalPathSegments(current.slice(1));\n\t\t\t\tif (strippedPath && strippedPath !== current.slice(1)) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn `$${strippedPath}`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn current;\n\t\t}\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(current).forEach((key) => {\n\t\t\tlet nextKey = key;\n\t\t\tif (!key.startsWith('$')) {\n\t\t\t\tconst strippedKey = stripAssistantPositionalPathSegments(key);\n\t\t\t\tif (strippedKey && strippedKey !== key) {\n\t\t\t\t\tnextKey = strippedKey;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tnext[nextKey] = rewriteValue(current[key]);\n\t\t});\n\t\treturn next;\n\t};\n\treturn {\n\t\tvalue: rewriteValue(value),\n\t\tchanged\n\t};\n}\n\nfunction repairAssistantPositionalPathSegmentsInQuery(\n\tquery: Record<string, any>\n): { query: Record<string, any>; changed: boolean } {\n\tconst repaired = repairAssistantPositionalPathSegmentsDeep(query);\n\tconst normalizedQuery = (repaired.value && typeof repaired.value === 'object' && !Array.isArray(repaired.value))\n\t\t? repaired.value as Record<string, any>\n\t\t: query;\n\treturn {\n\t\tquery: normalizedQuery,\n\t\tchanged: repaired.changed\n\t};\n}\n\nexport function repairAssistantPositionalPathSegmentsInPipeline(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; changed: boolean } {\n\tconst repaired = repairAssistantPositionalPathSegmentsDeep(pipeline);\n\tconst normalizedPipeline = Array.isArray(repaired.value)\n\t\t? repaired.value as Array<Record<string, any>>\n\t\t: pipeline;\n\treturn {\n\t\tpipeline: normalizedPipeline,\n\t\tchanged: repaired.changed\n\t};\n}\n\nfunction isAssistantPositionalPathError(error: any): boolean {\n\tconst message = normalizeOptionalString(error?.message).toLowerCase();\n\tif (!message) {\n\t\treturn false;\n\t}\n\treturn message.includes('positional operator')\n\t\t&& message.includes('middle of a path');\n}\n\nfunction isAssistantDateArithmeticArgumentError(error: any): boolean {\n\tconst message = normalizeOptionalString(error?.message).toLowerCase();\n\tif (!message) {\n\t\treturn false;\n\t}\n\tconst undefinedVariableMatch = message.match(/undefined variable:\\s*([a-z0-9_]+)/i);\n\tif (undefinedVariableMatch?.[1]) {\n\t\tconst token = undefinedVariableMatch[1].toLowerCase();\n\t\tif (\n\t\t\t/(month|week|day|today)/.test(token)\n\t\t\t|| /(?:^|_)(start|end)(?:_|$)/.test(token)\n\t\t\t|| /now[_-]?(?:minus|plus)/.test(token)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn message.includes('unrecognized argument to $datesubtract:')\n\t\t|| message.includes('unrecognized argument to $dateadd:')\n\t\t|| message.includes('unrecognized argument to $datetrunc:')\n\t\t|| message.includes('unrecognized argument to $datetostring:')\n\t\t|| message.includes('unrecognized option to $year:')\n\t\t|| message.includes('unrecognized option to $month:')\n\t\t|| message.includes('unrecognized option to $week:')\n\t\t|| message.includes('unrecognized option to $isoweek:')\n\t\t|| message.includes('unrecognized option to $isoweekyear:')\n\t\t|| message.includes('unrecognized option to $dayofmonth:')\n\t\t|| message.includes('unrecognized option to $dayofyear:')\n\t\t|| message.includes('unrecognized parameter to $let:')\n\t\t|| message.includes(\"missing 'in' parameter to $let\")\n\t\t|| message.includes(\"missing 'unit' parameter to $datetrunc\")\n\t\t|| message.includes(\"missing 'date' parameter to $datetrunc\")\n\t\t|| message.includes(\"requires 'unit' parameter to $datetrunc\")\n\t\t|| message.includes(\"requires 'date' parameter to $datetrunc\")\n\t\t|| message.includes(\"requires 'date' parameter to $datetostring\")\n\t\t|| message.includes(\"missing 'date' parameter to $datetostring\")\n\t\t|| message.includes('$datesubtract requires startdate, unit, and amount to be present')\n\t\t|| message.includes('$dateadd requires startdate, unit, and amount to be present')\n\t\t|| message.includes('undefined variable: now_start_of_month')\n\t\t|| message.includes('undefined variable: now_start_of_last_month')\n\t\t|| message.includes('undefined variable: now_start_of_next_month')\n\t\t|| message.includes('undefined variable: now_end_of_month')\n\t\t|| message.includes('undefined variable: start_of_week')\n\t\t|| message.includes('undefined variable: start_of_week_utc')\n\t\t|| message.includes('undefined variable: end_of_week')\n\t\t|| message.includes('undefined variable: end_of_week_utc')\n\t\t|| message.includes('undefined variable: start_of_day')\n\t\t|| message.includes('undefined variable: start_of_day_utc')\n\t\t|| message.includes('undefined variable: end_of_day')\n\t\t|| message.includes('undefined variable: end_of_day_utc')\n\t\t|| message.includes('undefined variable: start_of_today')\n\t\t|| message.includes('undefined variable: start_of_today_utc')\n\t\t|| message.includes('undefined variable: end_of_today')\n\t\t|| message.includes('undefined variable: end_of_today_utc')\n\t\t|| (\n\t\t\tmessage.includes('contains an invalid character for a variable name')\n\t\t\t&& (message.includes('now-') || message.includes('now+'))\n\t\t);\n}\n\nfunction isAssistantRankSortByError(error: any): boolean {\n\tconst message = normalizeOptionalString(error?.message).toLowerCase();\n\tif (!message) {\n\t\treturn false;\n\t}\n\treturn message.includes('$rank must be specified with a top level sortby expression with exactly one element')\n\t\t|| message.includes('$denserank must be specified with a top level sortby expression with exactly one element');\n}\n\nfunction isAssistantDottedOutputFieldError(error: any): boolean {\n\tconst message = normalizeOptionalString(error?.message).toLowerCase();\n\tif (!message) {\n\t\treturn false;\n\t}\n\treturn message.includes(\"fieldpath field names may not contain '.'\")\n\t\t|| (message.includes(\"field name '\") && message.includes(\"cannot contain '.'\"));\n}\n\nfunction extractAssistantDottedFieldPathFromError(error: any): string | null {\n\tconst message = normalizeOptionalString(error?.message);\n\tif (!message) {\n\t\treturn null;\n\t}\n\tconst fieldNameMatch = message.match(/field name\\s+'([^']+)'/i);\n\tif (fieldNameMatch?.[1]) {\n\t\tconst normalized = normalizeOptionalString(fieldNameMatch[1]);\n\t\treturn normalized.includes('.') ? normalized : null;\n\t}\n\tconst quotedMatch = message.match(/given\\s+'([^']+)'/i);\n\tif (quotedMatch && quotedMatch[1]) {\n\t\tconst normalized = normalizeOptionalString(quotedMatch[1]);\n\t\treturn normalized.includes('.') ? normalized : null;\n\t}\n\tconst plainMatch = message.match(/given\\s+([a-z0-9_.-]+)/i);\n\tif (plainMatch && plainMatch[1]) {\n\t\tconst normalized = normalizeOptionalString(plainMatch[1]);\n\t\treturn normalized.includes('.') ? normalized : null;\n\t}\n\treturn null;\n}\n\nfunction didAssistantValueChange(before: any, after: any): boolean {\n\ttry {\n\t\treturn JSON.stringify(before) !== JSON.stringify(after);\n\t}\n\tcatch {\n\t\treturn true;\n\t}\n}\n\nfunction repairAssistantDateArithmeticInPipeline(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; changed: boolean } {\n\tconst repairedRaw = normalizeAssistantNowExprPlaceholdersDeep(pipeline);\n\tconst repaired = Array.isArray(repairedRaw)\n\t\t? repairedRaw as Array<Record<string, any>>\n\t\t: pipeline;\n\treturn {\n\t\tpipeline: repaired,\n\t\tchanged: didAssistantValueChange(pipeline, repaired)\n\t};\n}\n\nfunction repairAssistantDateArithmeticInQuery(\n\tquery: Record<string, any>\n): { query: Record<string, any>; changed: boolean } {\n\tconst repairedRaw = normalizeAssistantNowExprPlaceholdersDeep(query);\n\tconst repaired = (repairedRaw && typeof repairedRaw === 'object' && !Array.isArray(repairedRaw))\n\t\t? repairedRaw as Record<string, any>\n\t\t: query;\n\treturn {\n\t\tquery: repaired,\n\t\tchanged: didAssistantValueChange(query, repaired)\n\t};\n}\n\nfunction repairAssistantRankSortByInPipeline(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; changed: boolean } {\n\tconst repaired = Array.isArray(pipeline)\n\t\t? pipeline.map((stage) => {\n\t\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\t\treturn stage;\n\t\t\t}\n\t\t\tif (!stage.$setWindowFields || typeof stage.$setWindowFields !== 'object' || Array.isArray(stage.$setWindowFields)) {\n\t\t\t\treturn stage;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...stage,\n\t\t\t\t$setWindowFields: normalizeAssistantSetWindowFieldsRankSortBy(stage.$setWindowFields)\n\t\t\t};\n\t\t})\n\t\t: pipeline;\n\treturn {\n\t\tpipeline: repaired,\n\t\tchanged: didAssistantValueChange(pipeline, repaired)\n\t};\n}\n\nfunction repairAssistantDottedOutputFieldNamesInPipeline(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; changed: boolean } {\n\tconst rewriteStageOutputFields = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => rewriteStageOutputFields(entry));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(value).forEach((field) => {\n\t\t\tconst safeField = field.startsWith('$') || field === '_id'\n\t\t\t\t? field\n\t\t\t\t: field.replace(/\\./g, '_');\n\t\t\tnext[safeField] = rewriteStageOutputFields(value[field]);\n\t\t});\n\t\treturn next;\n\t};\n\tconst repaired = Array.isArray(pipeline)\n\t\t? pipeline.map((stage) => {\n\t\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\t\treturn stage;\n\t\t\t}\n\t\t\tconst next: Record<string, any> = { ...stage };\n\t\t\tif (stage.$project && typeof stage.$project === 'object' && !Array.isArray(stage.$project)) {\n\t\t\t\tnext.$project = rewriteStageOutputFields(stage.$project);\n\t\t\t}\n\t\t\tif (stage.$addFields && typeof stage.$addFields === 'object' && !Array.isArray(stage.$addFields)) {\n\t\t\t\tnext.$addFields = rewriteStageOutputFields(stage.$addFields);\n\t\t\t}\n\t\t\tif (stage.$set && typeof stage.$set === 'object' && !Array.isArray(stage.$set)) {\n\t\t\t\tnext.$set = rewriteStageOutputFields(stage.$set);\n\t\t\t}\n\t\t\tif (stage.$group && typeof stage.$group === 'object' && !Array.isArray(stage.$group)) {\n\t\t\t\tnext.$group = rewriteStageOutputFields(stage.$group);\n\t\t\t}\n\t\t\treturn next;\n\t\t})\n\t\t: pipeline;\n\treturn {\n\t\tpipeline: repaired,\n\t\tchanged: didAssistantValueChange(pipeline, repaired)\n\t};\n}\n\nfunction buildAssistantGetFieldExpressionFromPath(path: string): any {\n\tconst normalizedPath = normalizeOptionalString(path);\n\tconst segments = normalizedPath.split('.').filter(Boolean);\n\tif (!segments.length) {\n\t\treturn `$${normalizedPath}`;\n\t}\n\tlet expression: any = `$${segments[0]}`;\n\tfor (let i = 1; i < segments.length; i += 1) {\n\t\texpression = {\n\t\t\t$getField: {\n\t\t\t\tfield: segments[i],\n\t\t\t\tinput: expression\n\t\t\t}\n\t\t};\n\t}\n\treturn expression;\n}\n\nexport function repairAssistantFieldPathReferenceInPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfieldPath: string\n): { pipeline: Array<Record<string, any>>; changed: boolean } {\n\tconst normalizedFieldPath = normalizeOptionalString(fieldPath).replace(/^\\$+/, '');\n\tif (!normalizedFieldPath || !normalizedFieldPath.includes('.')) {\n\t\treturn { pipeline, changed: false };\n\t}\n\tconst targetRef = `$${normalizedFieldPath}`;\n\tconst rewriteValue = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => rewriteValue(entry));\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tif (value === targetRef) {\n\t\t\t\treturn buildAssistantGetFieldExpressionFromPath(normalizedFieldPath);\n\t\t\t}\n\t\t\tif (value.startsWith(`${targetRef}.`)) {\n\t\t\t\treturn buildAssistantGetFieldExpressionFromPath(value.slice(1));\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tnext[key] = rewriteValue(value[key]);\n\t\t});\n\t\treturn next;\n\t};\n\tconst repaired = Array.isArray(pipeline)\n\t\t? pipeline.map(stage => rewriteValue(stage))\n\t\t: pipeline;\n\treturn {\n\t\tpipeline: repaired,\n\t\tchanged: didAssistantValueChange(pipeline, repaired)\n\t};\n}\n\nfunction isMatchExpressionOperand(value: any): boolean {\n\tif (typeof value === 'string') {\n\t\treturn value.startsWith('$$');\n\t}\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\treturn false;\n\t}\n\treturn Object.keys(value).some(key => key.startsWith('$'));\n}\n\nfunction mergeMatchExpr(existing: any, clauses: any[]): any {\n\tif (!clauses.length) {\n\t\treturn existing;\n\t}\n\tif (!existing) {\n\t\treturn clauses.length === 1 ? clauses[0] : { $and: clauses };\n\t}\n\tif (existing && typeof existing === 'object' && !Array.isArray(existing)) {\n\t\tconst existingAnd = (existing as any).$and;\n\t\tif (Array.isArray(existingAnd)) {\n\t\t\treturn { ...existing, $and: [...existingAnd, ...clauses] };\n\t\t}\n\t}\n\treturn { $and: [existing, ...clauses] };\n}\n\nexport function rewriteMatchExpressionsToExpr(match: any): any {\n\tconst rewriteValue = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => rewriteValue(entry));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tconst exprClauses: any[] = [];\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key === '$expr') {\n\t\t\t\tresult[key] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tresult[key] = rewriteValue(entry);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object' && !Array.isArray(entry) && !(entry instanceof Date) && !(entry instanceof RegExp) && !isMongoObjectId(entry)) {\n\t\t\t\tconst nextEntry: Record<string, any> = { ...entry };\n\t\t\t\tlet moved = false;\n\t\t\t\tObject.keys(nextEntry).forEach((op) => {\n\t\t\t\t\tif (!AGG_MATCH_EXPR_OPERATORS.has(op)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst operand = nextEntry[op];\n\t\t\t\t\tif (isMatchExpressionOperand(operand)) {\n\t\t\t\t\t\texprClauses.push({ [op]: [`$${key}`, normalizeAssistantNowExprOperand(operand)] });\n\t\t\t\t\t\tdelete nextEntry[op];\n\t\t\t\t\t\tmoved = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (Object.keys(nextEntry).length) {\n\t\t\t\t\tresult[key] = rewriteValue(nextEntry);\n\t\t\t\t}\n\t\t\t\telse if (!moved) {\n\t\t\t\t\tresult[key] = entry;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof entry === 'string' && entry.startsWith('$$')) {\n\t\t\t\texprClauses.push({ $eq: [`$${key}`, normalizeAssistantNowExprOperand(entry)] });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\tif (exprClauses.length) {\n\t\t\tresult.$expr = mergeMatchExpr(result.$expr, exprClauses);\n\t\t}\n\t\treturn result;\n\t};\n\treturn rewriteValue(match);\n}\n\nfunction buildInvoiceStatusRegex(value: string): RegExp | null {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst tokens = normalized.split(/[^a-z0-9]+/g).filter(Boolean);\n\tif (!tokens.includes('paid') || !tokens.includes('closed')) {\n\t\treturn null;\n\t}\n\treturn /paid|closed/i;\n}\n\nfunction buildInvoiceStatusRegexFromValue(value: any): RegExp | null {\n\tif (typeof value === 'string') {\n\t\treturn buildInvoiceStatusRegex(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\tconst normalizedValues = value\n\t\t\t.filter((entry) => typeof entry === 'string')\n\t\t\t.map((entry) => normalizeOptionalString(entry))\n\t\t\t.filter(Boolean);\n\t\tif (!normalizedValues.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn buildInvoiceStatusRegex(normalizedValues.join(' '));\n\t}\n\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 1 && typeof (value as any).$eq === 'string') {\n\t\t\treturn buildInvoiceStatusRegex((value as any).$eq);\n\t\t}\n\t\tif (keys.length === 1 && Array.isArray((value as any).$in)) {\n\t\t\treturn buildInvoiceStatusRegexFromValue((value as any).$in);\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction normalizeInvoiceStatusMatch(match: any): any {\n\tconst rewriteValue = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => rewriteValue(entry));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tresult[key] = rewriteValue(entry);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst field = key.split('.').pop() || key;\n\t\t\tif (field === 'status' || field === 'state') {\n\t\t\t\tconst regex = buildInvoiceStatusRegexFromValue(entry);\n\t\t\t\tif (regex) {\n\t\t\t\t\tresult[key] = regex;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tresult[key] = rewriteValue(entry);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\treturn rewriteValue(match);\n}\n\ntype AssistantMonthWindowMode = 'rolling' | 'full_month';\n\ntype AssistantDetectedMonthWindow = {\n\tfield: string;\n\tmonths: number;\n\tmode: AssistantMonthWindowMode;\n\tlowerIndex: number;\n\tupperIndex: number;\n\tclauses: any[];\n};\n\nfunction extractAssistantFieldPathFromOperand(value: any): string {\n\tif (typeof value !== 'string') {\n\t\treturn '';\n\t}\n\tif (!value.startsWith('$') || value.startsWith('$$')) {\n\t\treturn '';\n\t}\n\treturn value.slice(1);\n}\n\nfunction createAssistantNowMonthStartExpr(): Record<string, any> {\n\treturn {\n\t\t$dateTrunc: {\n\t\t\tdate: '$$NOW',\n\t\t\tunit: 'month'\n\t\t}\n\t};\n}\n\nfunction createAssistantNowWeekStartExpr(): Record<string, any> {\n\treturn {\n\t\t$dateTrunc: {\n\t\t\tdate: '$$NOW',\n\t\t\tunit: 'week',\n\t\t\tstartOfWeek: 'monday',\n\t\t\ttimezone: 'UTC'\n\t\t}\n\t};\n}\n\nfunction createAssistantNowDayStartExpr(): Record<string, any> {\n\treturn {\n\t\t$dateTrunc: {\n\t\t\tdate: '$$NOW',\n\t\t\tunit: 'day',\n\t\t\ttimezone: 'UTC'\n\t\t}\n\t};\n}\n\nfunction createAssistantNowWeekEndExpr(): Record<string, any> {\n\treturn {\n\t\t$dateSubtract: {\n\t\t\tstartDate: {\n\t\t\t\t$dateAdd: {\n\t\t\t\t\tstartDate: createAssistantNowWeekStartExpr(),\n\t\t\t\t\tunit: 'week',\n\t\t\t\t\tamount: 1\n\t\t\t\t}\n\t\t\t},\n\t\t\tunit: 'millisecond',\n\t\t\tamount: 1\n\t\t}\n\t};\n}\n\nfunction createAssistantNowDayEndExpr(): Record<string, any> {\n\treturn {\n\t\t$dateSubtract: {\n\t\t\tstartDate: {\n\t\t\t\t$dateAdd: {\n\t\t\t\t\tstartDate: createAssistantNowDayStartExpr(),\n\t\t\t\t\tunit: 'day',\n\t\t\t\t\tamount: 1\n\t\t\t\t}\n\t\t\t},\n\t\t\tunit: 'millisecond',\n\t\t\tamount: 1\n\t\t}\n\t};\n}\n\nfunction isAssistantNowMonthStartExpr(value: any): boolean {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\tconst dateTrunc = (value as any).$dateTrunc;\n\tif (!dateTrunc || typeof dateTrunc !== 'object' || Array.isArray(dateTrunc)) {\n\t\treturn false;\n\t}\n\tif ((dateTrunc as any).date !== '$$NOW') {\n\t\treturn false;\n\t}\n\treturn normalizeOptionalString((dateTrunc as any).unit).toLowerCase() === 'month';\n}\n\nfunction extractAssistantMonthLowerBound(value: any): { months: number; mode: AssistantMonthWindowMode } | null {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn null;\n\t}\n\tconst dateSubtract = (value as any).$dateSubtract;\n\tif (!dateSubtract || typeof dateSubtract !== 'object' || Array.isArray(dateSubtract)) {\n\t\treturn null;\n\t}\n\tconst unit = normalizeOptionalString((dateSubtract as any).unit).toLowerCase();\n\tconst months = normalizeOptionalNumber((dateSubtract as any).amount);\n\tif (unit !== 'month' || !months || months < 1) {\n\t\treturn null;\n\t}\n\tif ((dateSubtract as any).startDate === '$$NOW') {\n\t\treturn { months: round(months), mode: 'rolling' };\n\t}\n\tif (isAssistantNowMonthStartExpr((dateSubtract as any).startDate)) {\n\t\treturn { months: round(months), mode: 'full_month' };\n\t}\n\treturn null;\n}\n\nfunction flattenAssistantExprClauses(expr: any): any[] {\n\tif (!expr || typeof expr !== 'object' || Array.isArray(expr)) {\n\t\treturn [];\n\t}\n\tif (Array.isArray((expr as any).$and)) {\n\t\treturn (expr as any).$and;\n\t}\n\treturn [expr];\n}\n\nfunction detectAssistantMonthWindowInExpr(\n\texpr: any,\n\tallowedDateFields?: Set<string>\n): AssistantDetectedMonthWindow | null {\n\tconst clauses = flattenAssistantExprClauses(expr);\n\tif (!clauses.length) {\n\t\treturn null;\n\t}\n\tconst lowerClauses: Array<{ index: number; field: string; months: number; mode: AssistantMonthWindowMode }> = [];\n\tconst upperClauses: Array<{ index: number; field: string; mode: AssistantMonthWindowMode }> = [];\n\tclauses.forEach((clause, index) => {\n\t\tif (!clause || typeof clause !== 'object' || Array.isArray(clause)) {\n\t\t\treturn;\n\t\t}\n\t\tconst keys = Object.keys(clause);\n\t\tif (keys.length !== 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst operator = keys[0];\n\t\tif (!['$gte', '$gt', '$lte', '$lt'].includes(operator)) {\n\t\t\treturn;\n\t\t}\n\t\tconst operands = (clause as any)[operator];\n\t\tif (!Array.isArray(operands) || operands.length !== 2) {\n\t\t\treturn;\n\t\t}\n\t\tconst field = extractAssistantFieldPathFromOperand(operands[0]);\n\t\tif (!field) {\n\t\t\treturn;\n\t\t}\n\t\tif (allowedDateFields?.size && !allowedDateFields.has(field)) {\n\t\t\treturn;\n\t\t}\n\t\tif (operator === '$gte' || operator === '$gt') {\n\t\t\tconst lowerBound = extractAssistantMonthLowerBound(operands[1]);\n\t\t\tif (!lowerBound) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlowerClauses.push({\n\t\t\t\tindex,\n\t\t\t\tfield,\n\t\t\t\tmonths: lowerBound.months,\n\t\t\t\tmode: lowerBound.mode\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (operands[1] === '$$NOW') {\n\t\t\tupperClauses.push({ index, field, mode: 'rolling' });\n\t\t\treturn;\n\t\t}\n\t\tif (isAssistantNowMonthStartExpr(operands[1])) {\n\t\t\tupperClauses.push({ index, field, mode: 'full_month' });\n\t\t}\n\t});\n\tfor (const lower of lowerClauses) {\n\t\tconst upper = upperClauses.find((candidate) => (\n\t\t\tcandidate.field === lower.field\n\t\t\t&& candidate.mode === lower.mode\n\t\t));\n\t\tif (!upper) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tfield: lower.field,\n\t\t\tmonths: lower.months,\n\t\t\tmode: lower.mode,\n\t\t\tlowerIndex: lower.index,\n\t\t\tupperIndex: upper.index,\n\t\t\tclauses\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction isAssistantMonthDateFormat(format: string): boolean {\n\tconst normalized = normalizeOptionalString(format);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (!/%m/.test(normalized)) {\n\t\treturn false;\n\t}\n\treturn !/(%d|%j|%H|%I|%M|%S|%U|%V|%W|%w)/.test(normalized);\n}\n\nfunction collectAssistantMonthlyGroupDateFields(value: any, output: Set<string>) {\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectAssistantMonthlyGroupDateFields(entry, output));\n\t\treturn;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn;\n\t}\n\tconst dateToString = (value as any).$dateToString;\n\tif (dateToString && typeof dateToString === 'object' && !Array.isArray(dateToString)) {\n\t\tconst format = normalizeOptionalString((dateToString as any).format);\n\t\tconst field = extractAssistantFieldPathFromOperand((dateToString as any).date);\n\t\tif (field && isAssistantMonthDateFormat(format)) {\n\t\t\toutput.add(field);\n\t\t}\n\t}\n\tconst dateTrunc = (value as any).$dateTrunc;\n\tif (dateTrunc && typeof dateTrunc === 'object' && !Array.isArray(dateTrunc)) {\n\t\tconst unit = normalizeOptionalString((dateTrunc as any).unit).toLowerCase();\n\t\tconst field = extractAssistantFieldPathFromOperand((dateTrunc as any).date);\n\t\tif (field && unit === 'month') {\n\t\t\toutput.add(field);\n\t\t}\n\t}\n\tconst monthExpr = (value as any).$month;\n\tif (monthExpr !== undefined) {\n\t\tconst field = extractAssistantFieldPathFromOperand(monthExpr);\n\t\tif (field) {\n\t\t\toutput.add(field);\n\t\t}\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tcollectAssistantMonthlyGroupDateFields((value as any)[key], output);\n\t});\n}\n\nfunction resolveAssistantMonthlyGroupDateFields(pipeline: Array<Record<string, any>>): Set<string> {\n\tconst fields = new Set<string>();\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex === -1) {\n\t\treturn fields;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tif (!groupStage || typeof groupStage !== 'object' || !groupStage.$group || typeof groupStage.$group !== 'object') {\n\t\treturn fields;\n\t}\n\tcollectAssistantMonthlyGroupDateFields(groupStage.$group, fields);\n\treturn fields;\n}\n\nfunction detectAssistantMonthWindowFromPipeline(pipeline: Array<Record<string, any>>): AssistantDetectedMonthWindow | null {\n\tconst monthlyFields = resolveAssistantMonthlyGroupDateFields(pipeline);\n\tconst scanMatch = (match: any): AssistantDetectedMonthWindow | null => {\n\t\tif (!match || typeof match !== 'object' || Array.isArray(match)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!match.$expr || typeof match.$expr !== 'object') {\n\t\t\treturn null;\n\t\t}\n\t\treturn detectAssistantMonthWindowInExpr(match.$expr, monthlyFields);\n\t};\n\tfor (const stage of (pipeline || [])) {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst directMatch = scanMatch((stage as any).$match);\n\t\tif (directMatch) {\n\t\t\treturn directMatch;\n\t\t}\n\t\tconst geoNearMatch = scanMatch((stage as any).$geoNear?.query);\n\t\tif (geoNearMatch) {\n\t\t\treturn geoNearMatch;\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function normalizeAssistantMonthlyCalendarWindowPipeline(\n\tpipeline: Array<Record<string, any>>\n): Array<Record<string, any>> {\n\tconst monthlyFields = resolveAssistantMonthlyGroupDateFields(pipeline);\n\tif (!monthlyFields.size) {\n\t\treturn pipeline;\n\t}\n\treturn (pipeline || []).map((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\treturn stage;\n\t\t}\n\t\tconst rewriteMatch = (match: any): any => {\n\t\t\tif (!match || typeof match !== 'object' || Array.isArray(match) || !match.$expr) {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t\tconst detection = detectAssistantMonthWindowInExpr(match.$expr, monthlyFields);\n\t\t\tif (!detection || detection.mode !== 'rolling') {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t\tconst nextClauses = detection.clauses.filter((_entry, index) => (\n\t\t\t\tindex !== detection.lowerIndex && index !== detection.upperIndex\n\t\t\t));\n\t\t\tnextClauses.push(\n\t\t\t\t{\n\t\t\t\t\t$gte: [\n\t\t\t\t\t\t`$${detection.field}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$dateSubtract: {\n\t\t\t\t\t\t\t\tstartDate: createAssistantNowMonthStartExpr(),\n\t\t\t\t\t\t\t\tunit: 'month',\n\t\t\t\t\t\t\t\tamount: detection.months\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\t{\n\t\t\t\t\t$lt: [\n\t\t\t\t\t\t`$${detection.field}`,\n\t\t\t\t\t\tcreateAssistantNowMonthStartExpr()\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn {\n\t\t\t\t...match,\n\t\t\t\t$expr: nextClauses.length === 1 ? nextClauses[0] : { $and: nextClauses }\n\t\t\t};\n\t\t};\n\t\tconst next = { ...stage } as Record<string, any>;\n\t\tif (next.$match && typeof next.$match === 'object') {\n\t\t\tnext.$match = rewriteMatch(next.$match);\n\t\t}\n\t\tif (next.$geoNear && typeof next.$geoNear === 'object' && next.$geoNear.query) {\n\t\t\tnext.$geoNear = {\n\t\t\t\t...next.$geoNear,\n\t\t\t\tquery: rewriteMatch(next.$geoNear.query)\n\t\t\t};\n\t\t}\n\t\treturn next;\n\t});\n}\n\nfunction isAssistantRankWindowOutputExpression(value: any): boolean {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.prototype.hasOwnProperty.call(value, '$rank')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$denseRank');\n}\n\nfunction normalizeAssistantSetWindowFieldsRankSortBy(\n\tsetWindowFields: Record<string, any>\n): Record<string, any> {\n\tif (!setWindowFields || typeof setWindowFields !== 'object' || Array.isArray(setWindowFields)) {\n\t\treturn setWindowFields;\n\t}\n\tconst output = setWindowFields.output;\n\tif (!output || typeof output !== 'object' || Array.isArray(output)) {\n\t\treturn setWindowFields;\n\t}\n\tconst usesRankWindowFunction = Object.values(output).some(value => isAssistantRankWindowOutputExpression(value));\n\tif (!usesRankWindowFunction) {\n\t\treturn setWindowFields;\n\t}\n\tconst sortBy = setWindowFields.sortBy;\n\tif (!sortBy || typeof sortBy !== 'object' || Array.isArray(sortBy)) {\n\t\treturn setWindowFields;\n\t}\n\tconst sortKeys = Object.keys(sortBy).filter(key => String(key || '').trim());\n\tif (sortKeys.length <= 1) {\n\t\treturn setWindowFields;\n\t}\n\tconst primarySortKey = sortKeys[0];\n\treturn {\n\t\t...setWindowFields,\n\t\tsortBy: {\n\t\t\t[primarySortKey]: sortBy[primarySortKey]\n\t\t}\n\t};\n}\n\nfunction normalizeAssistantSortTieBreakersForLimit(\n\tpipeline: Array<Record<string, any>>\n): Array<Record<string, any>> {\n\treturn pipeline.map((stage, index) => {\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\treturn stage;\n\t\t}\n\t\tconst sort = stage.$sort;\n\t\tif (!sort || typeof sort !== 'object' || Array.isArray(sort)) {\n\t\t\treturn stage;\n\t\t}\n\t\tconst nextStage = pipeline[index + 1];\n\t\tif (!nextStage || typeof nextStage !== 'object' || Array.isArray(nextStage) || typeof (nextStage as any).$limit !== 'number') {\n\t\t\treturn stage;\n\t\t}\n\t\tconst sortKeys = Object.keys(sort).filter(key => String(key || '').trim());\n\t\tif (sortKeys.length !== 1 || sortKeys[0] === '_id') {\n\t\t\treturn stage;\n\t\t}\n\t\treturn {\n\t\t\t...stage,\n\t\t\t$sort: {\n\t\t\t\t...sort,\n\t\t\t\t_id: 1\n\t\t\t}\n\t\t};\n\t});\n}\n\nfunction resolveAssistantRecentGroupedRecordLimit(message: string): number | null {\n\tconst normalized = normalizeOptionalString(message);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (!/\\b(last|latest|recent)\\b/i.test(normalized)) {\n\t\treturn null;\n\t}\n\tconst groupedHint = /\\bgroup(?:ed|ing)?\\s+by\\b/i.test(normalized)\n\t\t|| /\\bby\\s+(status|state|type)\\b/i.test(normalized);\n\tif (!groupedHint) {\n\t\treturn null;\n\t}\n\tif (/\\b(by|per)\\s+(day|week|month|quarter|year)\\b/i.test(normalized) || /\\btrend|over\\s+time|timeline\\b/i.test(normalized)) {\n\t\treturn null;\n\t}\n\tconst tokenMatch = normalized.match(/\\b(?:last|latest|recent)\\s+(\\d{1,4})\\s+([a-z][a-z_-]*)\\b/i);\n\tif (!tokenMatch) {\n\t\treturn null;\n\t}\n\tconst entityToken = normalizeOptionalString(tokenMatch[2]).toLowerCase();\n\tif (['minute', 'minutes', 'hour', 'hours', 'day', 'days', 'week', 'weeks', 'month', 'months', 'quarter', 'quarters', 'year', 'years'].includes(entityToken)) {\n\t\treturn null;\n\t}\n\tconst value = Number(tokenMatch[1]);\n\tif (!Number.isFinite(value) || value <= 0) {\n\t\treturn null;\n\t}\n\treturn Math.max(1, Math.min(round(value), AI_ASSISTANT_MONGO_MAX_LIMIT));\n}\n\nfunction normalizeAssistantRecentGroupedLimitBeforeGroup(\n\tpipeline: Array<Record<string, any>>,\n\tmessage?: string\n): Array<Record<string, any>> {\n\tconst requestedLimit = resolveAssistantRecentGroupedRecordLimit(message || '');\n\tif (!requestedLimit || !Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn pipeline;\n\t}\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex <= 0) {\n\t\treturn pipeline;\n\t}\n\tconst hasPreGroupLimit = pipeline\n\t\t.slice(0, groupIndex)\n\t\t.some(stage => stage && typeof stage === 'object' && typeof stage.$limit === 'number' && stage.$limit > 0);\n\tif (hasPreGroupLimit) {\n\t\treturn pipeline;\n\t}\n\tconst postGroupLimitIndex = pipeline.findIndex((stage, index) =>\n\t\tindex > groupIndex\n\t\t&& stage\n\t\t&& typeof stage === 'object'\n\t\t&& typeof stage.$limit === 'number'\n\t\t&& stage.$limit > 0\n\t);\n\tconst nextPipeline = pipeline\n\t\t.map(stage => (stage && typeof stage === 'object' && !Array.isArray(stage) ? { ...stage } : stage))\n\t\t.filter((_stage, index) => index !== postGroupLimitIndex);\n\tlet insertionIndex = groupIndex;\n\tconst hasPreGroupSort = nextPipeline\n\t\t.slice(0, groupIndex)\n\t\t.some(stage => stage && typeof stage === 'object' && stage.$sort && typeof stage.$sort === 'object');\n\tif (!hasPreGroupSort) {\n\t\tconst dateField = findAggregateDateField(nextPipeline) || 'createdAt';\n\t\tnextPipeline.splice(insertionIndex, 0, { $sort: { [dateField]: -1, _id: -1 } });\n\t\tinsertionIndex += 1;\n\t}\n\tnextPipeline.splice(insertionIndex, 0, { $limit: requestedLimit });\n\treturn nextPipeline;\n}\n\nfunction isAssistantCustomerLookupCollectionName(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /(customer|client|account)/.test(normalized);\n}\n\nfunction isAssistantCustomerLabelFieldName(field: string): boolean {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /(customer|client|account|company)/.test(normalized)\n\t\t&& !/(id|count|number|qty|quantity|total)/.test(normalized);\n}\n\nfunction isAssistantCustomerLookupLeafName(path: string): boolean {\n\tconst normalized = normalizeOptionalString(path).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tconst leaf = normalized.split('.').pop() || normalized;\n\treturn /(name|billing|company|display|label|title|account|client|customer|full)/.test(leaf)\n\t\t&& !/(id|count|number|qty|quantity|total)/.test(leaf);\n}\n\nfunction buildAssistantCustomerLookupBestLabelExpr(lookupAlias: string, fallbackPaths: string[]): Record<string, any> {\n\tconst alias = normalizeOptionalString(lookupAlias);\n\tif (!alias) {\n\t\treturn buildAssistantTrimmedStringExpr('$id_customer');\n\t}\n\tconst aliasPrefix = `$${alias}`;\n\tconst candidatePaths = normalizeAggregateFieldList([\n\t\t`${aliasPrefix}.billing_name`,\n\t\t`${aliasPrefix}.customer_name`,\n\t\t`${aliasPrefix}.name`,\n\t\t`${aliasPrefix}.fullname`,\n\t\t`${aliasPrefix}.full_name`,\n\t\t`${aliasPrefix}.display_name`,\n\t\t`${aliasPrefix}.displayName`,\n\t\t`${aliasPrefix}.label`,\n\t\t`${aliasPrefix}.title`,\n\t\t`${aliasPrefix}.company_name`,\n\t\t`${aliasPrefix}.company`,\n\t\t`${aliasPrefix}.client_name`,\n\t\t`${aliasPrefix}.clientName`,\n\t\t`${aliasPrefix}.account_name`,\n\t\t`${aliasPrefix}.accountName`,\n\t\t`${aliasPrefix}.quickbooks.FullName`,\n\t\t`${aliasPrefix}.quickbooks.fullname`,\n\t\t`${aliasPrefix}.quickbooks.Name`,\n\t\t`${aliasPrefix}.quickbooks.name`,\n\t\t...fallbackPaths\n\t]);\n\tconst candidateValues = candidatePaths.map(path => buildAssistantTrimmedStringExpr(path));\n\treturn {\n\t\t$let: {\n\t\t\tvars: {\n\t\t\t\tcandidate_values: candidateValues\n\t\t\t},\n\t\t\tin: {\n\t\t\t\t$ifNull: [\n\t\t\t\t\t{\n\t\t\t\t\t\t$arrayElemAt: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$filter: {\n\t\t\t\t\t\t\t\t\tinput: '$$candidate_values',\n\t\t\t\t\t\t\t\t\tas: 'candidate',\n\t\t\t\t\t\t\t\t\tcond: { $gt: [{ $strLenCP: '$$candidate' }, 0] }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\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\nfunction normalizeAssistantCustomerLookupProjectionPipeline(\n\tpipeline: Array<Record<string, any>>\n): Array<Record<string, any>> {\n\tif (!Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn pipeline;\n\t}\n\tconst lookupAliasToLocalField = new Map<string, string>();\n\tlet changed = false;\n\tconst normalizedPipeline = pipeline.map((stage) => (\n\t\tstage && typeof stage === 'object' && !Array.isArray(stage)\n\t\t\t? { ...stage }\n\t\t\t: stage\n\t));\n\tnormalizedPipeline.forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\treturn;\n\t\t}\n\t\tconst lookup = (stage as any).$lookup;\n\t\tif (lookup && typeof lookup === 'object' && !Array.isArray(lookup)) {\n\t\t\tconst lookupFrom = normalizeOptionalString((lookup as any).from);\n\t\t\tconst lookupAlias = normalizeOptionalString((lookup as any).as);\n\t\t\tif (lookupAlias && isAssistantCustomerLookupCollectionName(lookupFrom)) {\n\t\t\t\tlookupAliasToLocalField.set(lookupAlias, normalizeOptionalString((lookup as any).localField));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!lookupAliasToLocalField.size) {\n\t\t\treturn;\n\t\t}\n\t\tconst project = (stage as any).$project;\n\t\tif (!project || typeof project !== 'object' || Array.isArray(project)) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextProject = { ...(project as Record<string, any>) };\n\t\tlet stageChanged = false;\n\t\tObject.keys(nextProject).forEach((field) => {\n\t\t\tconst expression = nextProject[field];\n\t\t\tif (typeof expression !== 'string') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst expressionPath = normalizeOptionalString(expression);\n\t\t\tif (!expressionPath || !expressionPath.startsWith('$')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const [lookupAlias, localField] of lookupAliasToLocalField.entries()) {\n\t\t\t\tconst aliasPath = `$${lookupAlias}`;\n\t\t\t\tif (expressionPath !== aliasPath && !expressionPath.startsWith(`${aliasPath}.`)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst lookupLeafPath = expressionPath === aliasPath\n\t\t\t\t\t? ''\n\t\t\t\t\t: expressionPath.slice(aliasPath.length + 1);\n\t\t\t\tif (!isAssistantCustomerLabelFieldName(field) && !isAssistantCustomerLookupLeafName(lookupLeafPath)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst fallbackPaths = normalizeAggregateFieldList([\n\t\t\t\t\tlocalField ? `$${localField}` : '',\n\t\t\t\t\t'$_id',\n\t\t\t\t\t'$id_customer',\n\t\t\t\t\t'$id_client',\n\t\t\t\t\t'$customer',\n\t\t\t\t\t'$customer_name',\n\t\t\t\t\t'$client_name'\n\t\t\t\t]);\n\t\t\t\tnextProject[field] = buildAssistantCustomerLookupBestLabelExpr(lookupAlias, fallbackPaths);\n\t\t\t\tstageChanged = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\tif (stageChanged) {\n\t\t\t(stage as any).$project = nextProject;\n\t\t\tchanged = true;\n\t\t}\n\t});\n\treturn changed ? normalizedPipeline : pipeline;\n}\n\nexport function normalizeAssistantAggregatePipeline(\n\tpipeline?: Array<Record<string, any>>,\n\tcollection?: string,\n\toriginalMessage?: string\n): Array<Record<string, any>> {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn [];\n\t}\n\tconst isInvoiceCollection = ['invoice', 'invoices', 'invoice-versions'].includes(\n\t\tString(collection || '').toLowerCase()\n\t);\n\tconst normalizedPipeline = pipeline\n\t\t.filter(stage => stage && typeof stage === 'object' && !Array.isArray(stage))\n\t\t.map((stage) => {\n\t\t\tconst next = { ...stage } as Record<string, any>;\n\t\t\tif (next.$match && typeof next.$match === 'object') {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$match);\n\t\t\t\tconst exprRewritten = rewriteMatchExpressionsToExpr(rewritten);\n\t\t\t\tconst statusNormalized = isInvoiceCollection ? normalizeInvoiceStatusMatch(exprRewritten) : exprRewritten;\n\t\t\t\tnext.$match = applyAssistantNameRegexToQuery(statusNormalized);\n\t\t\t}\n\t\t\tif (next.$geoNear && typeof next.$geoNear === 'object' && next.$geoNear.query) {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$geoNear.query);\n\t\t\t\tconst exprRewritten = rewriteMatchExpressionsToExpr(rewritten);\n\t\t\t\tconst statusNormalized = isInvoiceCollection ? normalizeInvoiceStatusMatch(exprRewritten) : exprRewritten;\n\t\t\t\tnext.$geoNear = {\n\t\t\t\t\t...next.$geoNear,\n\t\t\t\t\tquery: applyAssistantNameRegexToQuery(statusNormalized)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (next.$setWindowFields && typeof next.$setWindowFields === 'object' && !Array.isArray(next.$setWindowFields)) {\n\t\t\t\tnext.$setWindowFields = normalizeAssistantSetWindowFieldsRankSortBy(next.$setWindowFields);\n\t\t\t}\n\t\t\tconst nowNormalized = normalizeAssistantNowExprPlaceholdersDeep(next);\n\t\t\treturn repairAssistantPositionalPathSegmentsInQuery(nowNormalized).query;\n\t\t});\n\tconst stableSortPipeline = normalizeAssistantSortTieBreakersForLimit(normalizedPipeline);\n\tconst recordLimitedPipeline = normalizeAssistantRecentGroupedLimitBeforeGroup(stableSortPipeline, originalMessage);\n\tconst customerLookupNormalizedPipeline = normalizeAssistantCustomerLookupProjectionPipeline(recordLimitedPipeline);\n\treturn normalizeAssistantMonthlyCalendarWindowPipeline(customerLookupNormalizedPipeline);\n}\n\nfunction buildAssistantAggregatePipeline(query: Record<string, any>, pipeline: Array<Record<string, any>>): Array<Record<string, any>> {\n\tconst scopedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tif (!query || !Object.keys(query).length) {\n\t\treturn scopedPipeline;\n\t}\n\tif (scopedPipeline.length && scopedPipeline[0]?.$geoNear && typeof scopedPipeline[0].$geoNear === 'object') {\n\t\tconst geoNearStage = { ...scopedPipeline[0].$geoNear };\n\t\tconst existingQuery = geoNearStage.query && typeof geoNearStage.query === 'object' ? geoNearStage.query : {};\n\t\tgeoNearStage.query = { $and: [existingQuery, query] };\n\t\treturn [{ $geoNear: geoNearStage }, ...scopedPipeline.slice(1)];\n\t}\n\treturn [{ $match: query }, ...scopedPipeline];\n}\n\nfunction normalizeAssistantAggregateOptions(options?: AiAssistantMongoAggregateInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst allowDiskUse = normalized.allowDiskUse === true ? true : undefined;\n\tconst maxTimeMS = typeof normalized.maxTimeMS === 'number' && normalized.maxTimeMS > 0\n\t\t? round(normalized.maxTimeMS)\n\t\t: undefined;\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(round(normalized.limit), 0), maxLimit)\n\t\t: defaultLimit;\n\tconst aggregateOptions: Record<string, any> = {};\n\tif (allowDiskUse !== undefined) {\n\t\taggregateOptions.allowDiskUse = allowDiskUse;\n\t}\n\tif (maxTimeMS !== undefined) {\n\t\taggregateOptions.maxTimeMS = maxTimeMS;\n\t}\n\treturn {\n\t\taggregateOptions,\n\t\tlimit,\n\t\tmaxLimit,\n\t\tdefaultLimit\n\t};\n}\n\nfunction findAggregateLimit(pipeline: Array<Record<string, any>>): { index: number; limit: number } | null {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst limit = (stage as any).$limit;\n\t\tif (typeof limit === 'number' && Number.isFinite(limit)) {\n\t\t\treturn { index: i, limit };\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction applyAssistantAggregateLimit(\n\tpipeline: Array<Record<string, any>>,\n\tlimit?: number,\n\tmaxLimit = AI_ASSISTANT_MONGO_MAX_LIMIT,\n\tdefaultLimit = AI_ASSISTANT_MONGO_DEFAULT_LIMIT\n): Array<Record<string, any>> {\n\tconst normalizedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tconst requestedLimit = typeof limit === 'number' && limit > 0\n\t\t? Math.min(limit, maxLimit)\n\t\t: defaultLimit;\n\tconst existingLimit = findAggregateLimit(normalizedPipeline);\n\tif (!existingLimit) {\n\t\tnormalizedPipeline.push({ $limit: requestedLimit });\n\t\treturn normalizedPipeline;\n\t}\n\tif (existingLimit.limit > maxLimit) {\n\t\tconst stage = normalizedPipeline[existingLimit.index];\n\t\tnormalizedPipeline[existingLimit.index] = { ...stage, $limit: maxLimit };\n\t}\n\treturn normalizedPipeline;\n}\n\nfunction resolveAggregateDateFieldFallback(pipeline: Array<Record<string, any>>): { from: string; to: string } | null {\n\tconst dateField = findAggregateDateField(pipeline);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction normalizeAggregateFieldList(values: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst result: string[] = [];\n\tvalues.forEach((value) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tresult.push(normalized);\n\t});\n\treturn result;\n}\n\nfunction isCompletionFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('complete') || normalized.includes('close');\n}\n\nfunction isDateLikeFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('date') || normalized.endsWith('_at') || normalized.endsWith('at');\n}\n\nfunction matchContainsField(value: any, field: string): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => matchContainsField(entry, field));\n\t}\n\treturn Object.keys(value).some((key) => {\n\t\tif (key === field) {\n\t\t\treturn true;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\tif (value[key] && typeof value[key] === 'object') {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction resolveAggregateCompletionFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tmatchCondition: any;\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tlet candidateField = '';\n\tlet candidateSources: string[] = [];\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$addFields || typeof stage.$addFields !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst addFields = stage.$addFields as Record<string, any>;\n\t\tfor (const key of Object.keys(addFields)) {\n\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sources = extractExpressionFieldPaths(addFields[key])\n\t\t\t\t.filter(field => isDateLikeFieldName(field));\n\t\t\tif (sources.length) {\n\t\t\t\tcandidateField = key;\n\t\t\t\tcandidateSources = sources;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (candidateField) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!candidateField || !candidateSources.length) {\n\t\treturn null;\n\t}\n\tlet matchIndex = -1;\n\tlet matchCondition: any = null;\n\tlet matchStage: Record<string, any> | null = null;\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(stage.$match, candidateField)) {\n\t\t\tmatchIndex = i;\n\t\t\tmatchCondition = (stage.$match as any)[candidateField];\n\t\t\tmatchStage = stage.$match as Record<string, any>;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (matchIndex === -1 || !matchStage) {\n\t\treturn null;\n\t}\n\tconst normalizedSources = normalizeAggregateFieldList([\n\t\t...candidateSources,\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n\tif (!normalizedSources.length) {\n\t\treturn null;\n\t}\n\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\tconst statusFilter = !hasStatus && isCompletionFieldName(candidateField)\n\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t: null;\n\treturn {\n\t\tmatchIndex,\n\t\tfield: candidateField,\n\t\tsources: normalizedSources,\n\t\tmatchCondition,\n\t\tstatusFilter\n\t};\n}\n\nfunction buildIfNullChain(fields: string[]): any {\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet expr: any = `$${fields[fields.length - 1]}`;\n\tfor (let i = fields.length - 2; i >= 0; i -= 1) {\n\t\texpr = { $ifNull: [`$${fields[i]}`, expr] };\n\t}\n\treturn expr;\n}\n\nfunction buildAggregateCompletionFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tmatchCondition: any;\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst orConditions = fallback.sources.map(field => ({ [field]: fallback.matchCondition }));\n\tconst nextMatch = { ...(matchStage as Record<string, any>) };\n\tdelete (nextMatch as any)[fallback.field];\n\tconst andParts: Array<Record<string, any>> = [];\n\tif (Object.keys(nextMatch).length) {\n\t\tandParts.push(nextMatch);\n\t}\n\tandParts.push({ $or: orConditions });\n\tif (fallback.statusFilter) {\n\t\tandParts.push(fallback.statusFilter);\n\t}\n\tconst mergedMatch = andParts.length === 1 ? andParts[0] : { $and: andParts };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: mergedMatch };\n\t\t}\n\t\tif (stage && typeof stage === 'object' && stage.$addFields && typeof stage.$addFields === 'object') {\n\t\t\tif (Object.prototype.hasOwnProperty.call(stage.$addFields, fallback.field)) {\n\t\t\t\treturn {\n\t\t\t\t\t...stage,\n\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t...(stage.$addFields as Record<string, any>),\n\t\t\t\t\t\t[fallback.field]: buildIfNullChain(fallback.sources)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction normalizeCompletionStatusValue(value: string): string | null {\n\tconst normalized = String(value || '').toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (normalized.includes('complete')) {\n\t\treturn 'complete';\n\t}\n\tif (normalized.includes('close')) {\n\t\treturn 'close';\n\t}\n\treturn null;\n}\n\nfunction applyCompletionStatusRegexFallback(match: any): any {\n\tif (Array.isArray(match)) {\n\t\treturn match.map(entry => applyCompletionStatusRegexFallback(entry));\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn match;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(match).forEach((key) => {\n\t\tconst value = match[key];\n\t\tif (key === 'status' || key === 'state') {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tconst token = normalizeCompletionStatusValue(value);\n\t\t\t\tif (token) {\n\t\t\t\t\tresult[key] = { $regex: token, $options: 'i' };\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult[key] = value;\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction buildCompletionFallbackSources(field: string): string[] {\n\treturn normalizeAggregateFieldList([\n\t\tfield,\n\t\t'date_completed',\n\t\t'date_closed',\n\t\t'completedAt',\n\t\t'closedAt',\n\t\t'completed_at',\n\t\t'closed_at',\n\t\t'date_completed_at',\n\t\t'date_closed_at',\n\t\t'completion_date',\n\t\t'completed_date',\n\t\t'date_finished',\n\t\t'finished_at',\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n}\n\nfunction resolveAggregateCompletionExprFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchStage = stage.$match as Record<string, any>;\n\t\tlet candidateField = '';\n\t\tif (matchStage.$expr) {\n\t\t\tconst exprFields = extractExpressionFieldPaths(matchStage.$expr)\n\t\t\t\t.filter(field => isCompletionFieldName(field));\n\t\t\tif (exprFields.length) {\n\t\t\t\tcandidateField = exprFields[0];\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tfor (const key of Object.keys(matchStage)) {\n\t\t\t\tif (key.startsWith('$')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst entry = matchStage[key];\n\t\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\t\tcandidateField = key;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst sources = buildCompletionFallbackSources(candidateField);\n\t\tif (!sources.length) {\n\t\t\treturn null;\n\t\t}\n\t\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\t\tconst statusFilter = !hasStatus\n\t\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t\t: null;\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: candidateField,\n\t\t\tsources,\n\t\t\tstatusFilter\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction buildAggregateCompletionExprFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst targetField = 'completed_at_effective';\n\tconst replacedPipeline = replaceAggregateDateField(pipeline, fallback.field, targetField);\n\tconst matchStage = replacedPipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn replacedPipeline;\n\t}\n\tconst baseMatch = applyCompletionStatusRegexFallback(matchStage);\n\tconst nextMatch = fallback.statusFilter ? { $and: [baseMatch, fallback.statusFilter] } : baseMatch;\n\tconst addFieldsStage = { $addFields: { [targetField]: buildIfNullChain(fallback.sources) } };\n\tconst alreadyHasField = replacedPipeline\n\t\t.slice(0, fallback.matchIndex)\n\t\t.some(stage => stage && typeof stage === 'object' && stage.$addFields && Object.prototype.hasOwnProperty.call(stage.$addFields, targetField));\n\tconst output: Array<Record<string, any>> = [];\n\treplacedPipeline.forEach((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\tif (!alreadyHasField) {\n\t\t\t\toutput.push(addFieldsStage);\n\t\t\t}\n\t\t\toutput.push({ $match: nextMatch });\n\t\t\treturn;\n\t\t}\n\t\toutput.push(stage);\n\t});\n\treturn output;\n}\n\nfunction resolveAggregateUnwindFallback(pipeline: Array<Record<string, any>>): { path: string; groupIndex: number } | null {\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex === -1) {\n\t\treturn null;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tconst groupPaths = extractGroupFieldPaths(groupStage?.$group);\n\tif (!groupPaths.length) {\n\t\treturn null;\n\t}\n\tconst prefix = findCommonPathPrefix(groupPaths);\n\tif (!prefix) {\n\t\treturn null;\n\t}\n\tif (pipelineHasUnwindPath(pipeline, prefix)) {\n\t\treturn null;\n\t}\n\treturn { path: prefix, groupIndex };\n}\n\nfunction findAggregateGroupIndex(pipeline: Array<Record<string, any>>): number {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (stage && typeof stage === 'object' && stage.$group && typeof stage.$group === 'object') {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction doesAssistantAggregateRequireDimension(pipeline: Array<Record<string, any>>): boolean {\n\tconst groupIndex = findAggregateGroupIndex(pipeline || []);\n\tif (groupIndex === -1) {\n\t\treturn false;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tconst groupId = groupStage?.$group?._id;\n\tif (groupId === null || groupId === undefined) {\n\t\treturn false;\n\t}\n\tif (typeof groupId === 'object' && !Array.isArray(groupId) && Object.keys(groupId).length === 0) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction resolveAssistantAggregateDimensionFieldHints(pipeline: Array<Record<string, any>>): string[] {\n\tconst groupIndex = findAggregateGroupIndex(pipeline || []);\n\tif (groupIndex === -1) {\n\t\treturn [];\n\t}\n\tconst hints: string[] = [];\n\tconst pushHint = (value: string) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized || hints.includes(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\thints.push(normalized);\n\t};\n\tfor (let index = groupIndex + 1; index < pipeline.length; index += 1) {\n\t\tconst stage = pipeline[index];\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage) || !stage.$project || typeof stage.$project !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tObject.keys(stage.$project).forEach((key) => {\n\t\t\tif (key === '_id') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst expression = (stage.$project as Record<string, any>)[key];\n\t\t\tif (expression === 0 || expression === false) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!isAssistantCustomerLabelFieldName(key) && !/(name|label|title|customer|client|account|vendor|location|well|chemical|status|type|group|category)/i.test(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpushHint(formatDisplayColumnName(key) || key);\n\t\t\tpushHint(key);\n\t\t});\n\t}\n\treturn hints.slice(0, 6);\n}\n\nfunction buildAssistantAggregateFallbackAcceptanceOptions(\n\tpipeline: Array<Record<string, any>>\n): AssistantFallbackAcceptanceOptions {\n\tconst requireDimensionFields = doesAssistantAggregateRequireDimension(pipeline || []);\n\treturn {\n\t\trequireDimensionFields,\n\t\tminDimensionFillRate: requireDimensionFields ? 0.35 : 0.1,\n\t\tpreferredDimensionFields: resolveAssistantAggregateDimensionFieldHints(pipeline || [])\n\t};\n}\n\nfunction extractGroupFieldPaths(groupStage: any): string[] {\n\tif (!groupStage || typeof groupStage !== 'object') {\n\t\treturn [];\n\t}\n\tconst id = groupStage._id;\n\treturn extractExpressionFieldPaths(id);\n}\n\nfunction extractExpressionFieldPaths(value: any): string[] {\n\tconst results: string[] = [];\n\tconst visit = (entry: any) => {\n\t\tif (Array.isArray(entry)) {\n\t\t\tentry.forEach(item => visit(item));\n\t\t\treturn;\n\t\t}\n\t\tif (!entry) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry === 'string') {\n\t\t\tif (entry.startsWith('$') && entry.length > 1 && !entry.startsWith('$$')) {\n\t\t\t\tresults.push(entry.slice(1));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(entry).forEach((key) => {\n\t\t\tvisit(entry[key]);\n\t\t});\n\t};\n\tvisit(value);\n\treturn results.filter(Boolean);\n}\n\nfunction hasAssistantDateGroupingOperator(value: any): boolean {\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => hasAssistantDateGroupingOperator(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tconst dateTrunc = (value as any).$dateTrunc;\n\tif (dateTrunc && typeof dateTrunc === 'object' && !Array.isArray(dateTrunc)) {\n\t\tconst unit = normalizeOptionalString((dateTrunc as any).unit).toLowerCase();\n\t\tif (unit === 'day' || unit === 'week' || unit === 'month' || unit === 'quarter' || unit === 'year') {\n\t\t\treturn true;\n\t\t}\n\t}\n\tconst dateToString = (value as any).$dateToString;\n\tif (dateToString && typeof dateToString === 'object' && !Array.isArray(dateToString)) {\n\t\tconst format = normalizeOptionalString((dateToString as any).format);\n\t\tif (/%[djmUVWYGy]/i.test(format)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\tconst directDateOps = ['$year', '$month', '$week', '$isoWeek', '$isoWeekYear', '$dayOfMonth', '$dayOfYear', '$dateToParts'];\n\tif (directDateOps.some(op => Object.prototype.hasOwnProperty.call(value, op))) {\n\t\treturn true;\n\t}\n\treturn Object.keys(value).some(key => hasAssistantDateGroupingOperator((value as any)[key]));\n}\n\nfunction isGroupFieldDerivedFromDateExpression(\n\tpipeline: Array<Record<string, any>>,\n\tgroupIndex: number,\n\tgroupPaths: string[]\n): boolean {\n\tif (!Array.isArray(pipeline) || groupIndex <= 0 || !groupPaths.length) {\n\t\treturn false;\n\t}\n\tconst groupFields = new Set<string>();\n\tgroupPaths.forEach((pathValue) => {\n\t\tconst normalizedPath = normalizeOptionalString(pathValue);\n\t\tif (!normalizedPath) {\n\t\t\treturn;\n\t\t}\n\t\tgroupFields.add(normalizedPath);\n\t\tconst rootSegment = normalizedPath.split('.')[0];\n\t\tif (rootSegment) {\n\t\t\tgroupFields.add(rootSegment);\n\t\t}\n\t});\n\tif (!groupFields.size) {\n\t\treturn false;\n\t}\n\tconst stageKeys = ['$addFields', '$set', '$project'];\n\tfor (let i = groupIndex - 1; i >= 0; i -= 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const stageKey of stageKeys) {\n\t\t\tconst payload = (stage as any)[stageKey];\n\t\t\tif (!payload || typeof payload !== 'object' || Array.isArray(payload)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const groupField of groupFields) {\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(payload, groupField)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (hasAssistantDateGroupingOperator((payload as any)[groupField])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction isAssistantTimeGroupedAggregatePipeline(pipeline: Array<Record<string, any>>): boolean {\n\tif (!Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn false;\n\t}\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex === -1) {\n\t\treturn false;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tconst groupPayload = groupStage?.$group;\n\tif (!groupPayload || typeof groupPayload !== 'object') {\n\t\treturn false;\n\t}\n\tconst groupPaths = extractGroupFieldPaths(groupPayload);\n\tif (groupPaths.some(field => /(date|time|created|updated|paid|invoice|timestamp|_at|month|quarter|week|year|day)/i.test(field))) {\n\t\treturn true;\n\t}\n\tif (hasAssistantDateGroupingOperator(groupPayload?._id)) {\n\t\treturn true;\n\t}\n\treturn isGroupFieldDerivedFromDateExpression(pipeline, groupIndex, groupPaths);\n}\n\nfunction isAssistantGroupedAggregatePipeline(pipeline: Array<Record<string, any>>): boolean {\n\tif (!Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn false;\n\t}\n\treturn findAggregateGroupIndex(pipeline) !== -1;\n}\n\nfunction isAssistantDirectiveDated(directive: AssistantMongoDirective | null): boolean {\n\tif (!directive || directive.type !== 'aggregate') {\n\t\treturn false;\n\t}\n\tconst pipeline = Array.isArray(directive.payload?.pipeline) ? directive.payload.pipeline : [];\n\treturn isAssistantTimeGroupedAggregatePipeline(pipeline);\n}\n\nfunction isAssistantDirectiveGrouped(directive: AssistantMongoDirective | null): boolean {\n\tif (!directive || directive.type !== 'aggregate') {\n\t\treturn false;\n\t}\n\tconst pipeline = Array.isArray(directive.payload?.pipeline) ? directive.payload.pipeline : [];\n\treturn isAssistantGroupedAggregatePipeline(pipeline);\n}\n\nfunction findCommonPathPrefix(paths: string[]): string | null {\n\tif (!paths.length) {\n\t\treturn null;\n\t}\n\tconst splitPaths = paths.map(path => path.split('.').filter(Boolean));\n\tlet prefix = splitPaths[0] || [];\n\tfor (let i = 1; i < splitPaths.length; i += 1) {\n\t\tconst current = splitPaths[i];\n\t\tlet j = 0;\n\t\twhile (j < prefix.length && j < current.length && prefix[j] === current[j]) {\n\t\t\tj += 1;\n\t\t}\n\t\tprefix = prefix.slice(0, j);\n\t\tif (!prefix.length) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn prefix.length ? prefix.join('.') : splitPaths[0]?.[0] || null;\n}\n\nfunction pipelineHasUnwindPath(pipeline: Array<Record<string, any>>, path: string): boolean {\n\treturn (pipeline || []).some((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$unwind) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof stage.$unwind === 'string') {\n\t\t\treturn stage.$unwind === `$${path}`;\n\t\t}\n\t\tif (stage.$unwind && typeof stage.$unwind === 'object') {\n\t\t\treturn stage.$unwind.path === `$${path}`;\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction buildAggregateUnwindFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: { path: string; groupIndex: number }\n): Array<Record<string, any>> {\n\tconst before = pipeline.slice(0, fallback.groupIndex);\n\tconst after = pipeline.slice(fallback.groupIndex);\n\tconst unwindStage = {\n\t\t$unwind: {\n\t\t\tpath: `$${fallback.path}`,\n\t\t\tpreserveNullAndEmptyArrays: false\n\t\t}\n\t};\n\treturn [...before, unwindStage, ...after];\n}\n\nfunction isRegexMatchCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'object' && !Array.isArray(value)) {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction findRegexMatchInMatchObject(\n\tmatch: any,\n\tprefix = ''\n): { field: string; condition: any } | null {\n\tif (Array.isArray(match)) {\n\t\tfor (const entry of match) {\n\t\t\tconst found = findRegexMatchInMatchObject(entry, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn null;\n\t}\n\tconst keys = Object.keys(match);\n\tfor (const key of keys) {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findRegexMatchInMatchObject(value, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (isRegexMatchCondition(value)) {\n\t\t\treturn { field: currentPath, condition: value };\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst found = findRegexMatchInMatchObject(value, currentPath);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction expandNameFieldCandidates(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst leaf = parts[parts.length - 1] || normalized;\n\tconst prefix = parts.length > 1 ? parts.slice(0, -1).join('.') : '';\n\tconst withPrefix = (value: string) => (prefix ? `${prefix}.${value}` : value);\n\tconst candidates: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (value: string) => {\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(value)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(value);\n\t\tcandidates.push(value);\n\t};\n\tpush(normalized);\n\n\tconst leafLower = leaf.toLowerCase();\n\tconst genericVariants = ['name', 'title', 'label', 'display_name', 'displayName', 'description'];\n\tgenericVariants.forEach((variant) => push(withPrefix(variant)));\n\tif (!leafLower.endsWith('name')) {\n\t\tpush(withPrefix(`${leaf}_name`));\n\t\tpush(withPrefix(`${leaf}Name`));\n\t}\n\tif (leafLower.includes('chemical')) {\n\t\t[\n\t\t\t'chemical',\n\t\t\t'chemical_name',\n\t\t\t'chemicalName',\n\t\t\t'chem_name',\n\t\t\t'chemName',\n\t\t\t'product',\n\t\t\t'product_name',\n\t\t\t'productName',\n\t\t\t'material',\n\t\t\t'blend_name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t\tpush(withPrefix(`${leaf}.label`));\n\t\tpush(withPrefix(`${leaf}.product`));\n\t\tif (normalized.includes('blend_chemicals')) {\n\t\t\t['chemical', 'chemical_name', 'chemicalName', 'product', 'product_name', 'productName'].forEach(push);\n\t\t}\n\t}\n\tif (leafLower.includes('customer')) {\n\t\t[\n\t\t\t'customer',\n\t\t\t'customer_name',\n\t\t\t'customerName',\n\t\t\t'company',\n\t\t\t'company_name',\n\t\t\t'companyName',\n\t\t\t'account',\n\t\t\t'account_name',\n\t\t\t'accountName',\n\t\t\t'name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\tif (leafLower.includes('well')) {\n\t\t[\n\t\t\t'well',\n\t\t\t'well_name',\n\t\t\t'wellName',\n\t\t\t'name',\n\t\t\t'site',\n\t\t\t'site_name',\n\t\t\t'siteName',\n\t\t\t'pad',\n\t\t\t'pad_name',\n\t\t\t'padName',\n\t\t\t'api',\n\t\t\t'api_number',\n\t\t\t'apiNumber',\n\t\t\t'well_number',\n\t\t\t'wellNumber'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\treturn candidates.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n}\n\nfunction resolveAggregateNameMatchFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tcondition: any;\n\tfields: string[];\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst found = findRegexMatchInMatchObject(stage.$match);\n\t\tif (!found || !shouldApplyAssistantNameRegex(found.field)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst fields = expandNameFieldCandidates(found.field);\n\t\tif (fields.length <= 1) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: found.field,\n\t\t\tcondition: found.condition,\n\t\t\tfields\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction resolveReadNameMatchFallback(query: Record<string, any>): { query: any; field: string; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst found = findRegexMatchInMatchObject(query);\n\tif (!found || !shouldApplyAssistantNameRegex(found.field) || isAssistantIdField(found.field)) {\n\t\treturn null;\n\t}\n\tconst fields = expandNameFieldCandidates(found.field);\n\tif (fields.length <= 1) {\n\t\treturn null;\n\t}\n\tconst baseMatch = stripMatchField(query, found.field);\n\tconst orConditions = fields.map(field => ({ [field]: found.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn {\n\t\tquery: nextMatch,\n\t\tfield: found.field,\n\t\tfields\n\t};\n}\n\ntype AssistantRegexFieldCondition = {\n\tfield: string;\n\tcondition: any;\n};\n\nfunction collectRegexFieldConditions(match: any, prefix = ''): AssistantRegexFieldCondition[] {\n\tconst results: AssistantRegexFieldCondition[] = [];\n\tconst visit = (value: any, currentPrefix: string) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach((entry) => visit(entry, currentPrefix));\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tvisit(entry, currentPrefix);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentPath = currentPrefix ? `${currentPrefix}.${key}` : key;\n\t\t\tif (isRegexMatchCondition(entry)) {\n\t\t\t\tresults.push({\n\t\t\t\t\tfield: currentPath,\n\t\t\t\t\tcondition: entry\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tvisit(entry, currentPath);\n\t\t\t}\n\t\t});\n\t};\n\tvisit(match, prefix);\n\treturn results;\n}\n\nfunction isAssistantJobLikeFieldPath(field: string): boolean {\n\tconst normalized = normalizeLookupPath(field) || normalizeOptionalString(field);\n\tif (!normalized || isAssistantIdField(normalized)) {\n\t\treturn false;\n\t}\n\tconst tokens = tokenizeFieldKey(normalized);\n\tif (tokens.some(token => AI_ASSISTANT_JOB_LIKE_FIELD_TOKENS.has(token))) {\n\t\treturn true;\n\t}\n\tconst leaf = normalized.split('.').pop() || normalized;\n\tconst leafLower = leaf.toLowerCase();\n\treturn leafLower.startsWith('job_') || leafLower.includes('jobnumber');\n}\n\nfunction extractRegexConditionTokens(condition: any): string[] {\n\tconst regex = buildRegexFromCondition(condition);\n\tif (!regex) {\n\t\treturn [];\n\t}\n\tconst source = normalizeOptionalString(regex.source).toLowerCase();\n\tif (!source) {\n\t\treturn [];\n\t}\n\tconst rawTokens = source\n\t\t.replace(/\\\\u[0-9a-f]{4}/gi, ' ')\n\t\t.replace(/\\\\x[0-9a-f]{2}/gi, ' ')\n\t\t.replace(/\\\\./g, ' ')\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean)\n\t\t.filter((token) => {\n\t\t\tif (/^\\d+$/.test(token)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (token.length < 2) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn !AI_ASSISTANT_COLLECTION_STOPWORDS.has(token);\n\t\t});\n\treturn Array.from(new Set(rawTokens)).slice(0, AI_ASSISTANT_MULTI_TERM_NAME_FALLBACK_MAX_TERMS);\n}\n\nfunction resolveReadMultiTermRegexFallbackFields(\n\tsourceFields: string[],\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): string[] {\n\tconst normalizedSchemaFields = new Set(\n\t\t(Array.isArray(schemaFields) ? schemaFields : [])\n\t\t\t.map(field => normalizeLookupPath(field) || normalizeOptionalString(field))\n\t\t\t.filter(Boolean)\n\t);\n\tconst candidates: string[] = [];\n\tconst seen = new Set<string>();\n\tconst addCandidate = (value: string) => {\n\t\tconst normalized = normalizeLookupPath(value) || normalizeOptionalString(value);\n\t\tif (!normalized || seen.has(normalized) || isAssistantIdField(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tcandidates.push(normalized);\n\t};\n\tsourceFields.forEach((field) => {\n\t\taddCandidate(field);\n\t\texpandNameFieldCandidates(field).forEach(addCandidate);\n\t});\n\tAI_ASSISTANT_JOB_TEXT_FALLBACK_FIELDS.forEach(addCandidate);\n\tconst withProbeData = candidates.filter(field => hasNonEmptyValue(probeDocs || [], field, { treatObjectLikeAsEmpty: true }));\n\tif (withProbeData.length) {\n\t\treturn withProbeData.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n\t}\n\tconst withSchema = candidates.filter(field => normalizedSchemaFields.has(field));\n\tif (withSchema.length) {\n\t\treturn withSchema.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n\t}\n\treturn candidates.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n}\n\nfunction resolveReadMultiTermJobRegexFallback(\n\tquery: Record<string, any>,\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): { query: Record<string, any>; fields: string[]; sourceFields: string[]; terms: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst regexConditions = collectRegexFieldConditions(query)\n\t\t.filter(entry => isAssistantJobLikeFieldPath(entry.field));\n\tif (regexConditions.length < 2) {\n\t\treturn null;\n\t}\n\tconst sourceFields = Array.from(new Set(regexConditions\n\t\t.map(entry => normalizeLookupPath(entry.field) || normalizeOptionalString(entry.field))\n\t\t.filter(Boolean)));\n\tif (!sourceFields.length) {\n\t\treturn null;\n\t}\n\tconst orderedTerms: string[] = [];\n\tconst seenTerms = new Set<string>();\n\tregexConditions.forEach((entry) => {\n\t\textractRegexConditionTokens(entry.condition).forEach((token) => {\n\t\t\tif (!token || seenTerms.has(token)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tseenTerms.add(token);\n\t\t\torderedTerms.push(token);\n\t\t});\n\t});\n\tconst terms = orderedTerms.slice(0, AI_ASSISTANT_MULTI_TERM_NAME_FALLBACK_MAX_TERMS);\n\tif (terms.length < 2) {\n\t\treturn null;\n\t}\n\tconst fields = resolveReadMultiTermRegexFallbackFields(sourceFields, probeDocs, schemaFields)\n\t\t.filter(field => !isAssistantIdField(field));\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tconst baseMatch = stripMatchFields(query, sourceFields);\n\tconst termClauses = terms.map((token) => ({\n\t\t$or: fields.map(field => ({\n\t\t\t[field]: {\n\t\t\t\t$regex: escapeRegexValue(token),\n\t\t\t\t$options: 'i'\n\t\t\t}\n\t\t}))\n\t}));\n\tif (!termClauses.length) {\n\t\treturn null;\n\t}\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? (termClauses.length === 1 ? termClauses[0] : { $and: termClauses })\n\t\t: { $and: [baseMatch, ...termClauses] };\n\treturn {\n\t\tquery: nextMatch,\n\t\tfields,\n\t\tsourceFields,\n\t\tterms\n\t};\n}\n\nexport function resolveReadMultiTermJobRegexFallbackForTesting(\n\tquery: Record<string, any>,\n\tprobeDocs: any[] = [],\n\tschemaFields?: string[]\n): { query: Record<string, any>; fields: string[]; sourceFields: string[]; terms: string[] } | null {\n\treturn resolveReadMultiTermJobRegexFallback(query, probeDocs, schemaFields);\n}\n\nfunction isEmptyMatchValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripMatchField(match: any, field: string): any {\n\tconst hasPath = field.includes('.');\n\tconst stripValue = (value: any, prefix: string): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\tconst strippedArray = value\n\t\t\t\t.map(entry => stripValue(entry, prefix))\n\t\t\t\t.filter(entry => !isEmptyMatchValue(entry));\n\t\t\treturn strippedArray;\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tconst matches = hasPath ? currentPath === field : key === field;\n\t\t\tif (matches) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\tif (isEmptyMatchValue(stripped) && (key === '$and' || key === '$or')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult[key] = stripped;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tconst stripped = stripValue(entry, currentPath);\n\t\t\t\tif (!isEmptyMatchValue(stripped)) {\n\t\t\t\t\tresult[key] = stripped;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\treturn stripValue(match, '');\n}\n\n// eslint-disable-next-line no-unused-vars\ntype MatchFieldPredicate = (field: string, condition: any) => boolean;\n\nfunction collectMatchFieldsByCondition(\n\tmatch: any,\n\tpredicate: MatchFieldPredicate,\n\tprefix = ''\n): string[] {\n\tconst results: string[] = [];\n\tif (Array.isArray(match)) {\n\t\tmatch.forEach((entry) => {\n\t\t\tresults.push(...collectMatchFieldsByCondition(entry, predicate, prefix));\n\t\t});\n\t\treturn results;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn results;\n\t}\n\tObject.keys(match).forEach((key) => {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tresults.push(...collectMatchFieldsByCondition(value, predicate, prefix));\n\t\t\treturn;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (predicate(currentPath, value)) {\n\t\t\tresults.push(currentPath);\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresults.push(...collectMatchFieldsByCondition(value, predicate, currentPath));\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction findMatchConditionForField(match: any, targetField: string, prefix = ''): any {\n\tif (!match || typeof match !== 'object') {\n\t\treturn undefined;\n\t}\n\tif (Array.isArray(match)) {\n\t\tfor (const entry of match) {\n\t\t\tconst found = findMatchConditionForField(entry, targetField, prefix);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\tfor (const key of Object.keys(match)) {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findMatchConditionForField(value, targetField, prefix);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (currentPath === targetField) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst found = findMatchConditionForField(value, targetField, currentPath);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction stripMatchFields(match: any, fields: string[]): any {\n\tlet result = match;\n\tfields.forEach((field) => {\n\t\tresult = stripMatchField(result, field);\n\t});\n\treturn result;\n}\n\nfunction isDateCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'object' && !Array.isArray(value)) {\n\t\treturn hasDateRangeOperators(value);\n\t}\n\treturn false;\n}\n\nfunction isAssistantActiveFieldPath(field: string): boolean {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tconst leaf = normalized.split('.').pop() || normalized;\n\treturn ['status', 'state', 'active', 'is_active', 'isactive', 'enabled', 'is_enabled', 'isenabled'].includes(leaf);\n}\n\nconst AI_ASSISTANT_GEOGRAPHIC_STATE_VALUES = new Set([\n\t'alabama', 'al', 'alaska', 'ak', 'arizona', 'az', 'arkansas', 'ar',\n\t'california', 'ca', 'colorado', 'co', 'connecticut', 'ct', 'delaware', 'de',\n\t'district of columbia', 'dc', 'florida', 'fl', 'georgia', 'ga', 'hawaii', 'hi',\n\t'idaho', 'id', 'illinois', 'il', 'indiana', 'in', 'iowa', 'ia', 'kansas', 'ks',\n\t'kentucky', 'ky', 'louisiana', 'la', 'maine', 'me', 'maryland', 'md',\n\t'massachusetts', 'ma', 'michigan', 'mi', 'minnesota', 'mn', 'mississippi', 'ms',\n\t'missouri', 'mo', 'montana', 'mt', 'nebraska', 'ne', 'nevada', 'nv',\n\t'new hampshire', 'nh', 'new jersey', 'nj', 'new mexico', 'nm', 'new york', 'ny',\n\t'north carolina', 'nc', 'north dakota', 'nd', 'ohio', 'oh', 'oklahoma', 'ok',\n\t'oregon', 'or', 'pennsylvania', 'pa', 'rhode island', 'ri',\n\t'south carolina', 'sc', 'south dakota', 'sd', 'tennessee', 'tn', 'texas', 'tx',\n\t'utah', 'ut', 'vermont', 'vt', 'virginia', 'va', 'washington', 'wa',\n\t'west virginia', 'wv', 'wisconsin', 'wi', 'wyoming', 'wy',\n\t'puerto rico', 'pr'\n]);\n\nfunction isAssistantGeographicStateValue(value: any): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn !!normalized && AI_ASSISTANT_GEOGRAPHIC_STATE_VALUES.has(normalized);\n}\n\nfunction hasAssistantGeographicStateFieldData(probeDocs: any[], field: string): boolean {\n\tconst normalizedField = normalizeOptionalString(field).toLowerCase();\n\tif ((normalizedField.split('.').pop() || normalizedField) !== 'state') {\n\t\treturn false;\n\t}\n\tconst values: string[] = [];\n\t(probeDocs || []).slice(0, 12).forEach((doc) => {\n\t\tconst rawValue = getValueAtPath(doc, field);\n\t\tconst normalizedValue = normalizeOptionalString(rawValue);\n\t\tif (normalizedValue) {\n\t\t\tvalues.push(normalizedValue);\n\t\t}\n\t});\n\tif (!values.length) {\n\t\treturn false;\n\t}\n\tconst geographicMatches = values.filter(value => isAssistantGeographicStateValue(value)).length;\n\treturn geographicMatches >= Math.max(1, Math.ceil(values.length * 0.6));\n}\n\nfunction isAssistantActiveCondition(value: any): boolean {\n\tif (typeof value === 'boolean') {\n\t\treturn value === true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn /^active$/i.test(value.trim());\n\t}\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\tconst regexValue = (value as any).$regex;\n\tif (regexValue instanceof RegExp) {\n\t\treturn /active/i.test(regexValue.source);\n\t}\n\tif (typeof regexValue === 'string' && /active/i.test(regexValue)) {\n\t\treturn true;\n\t}\n\tconst eqValue = (value as any).$eq;\n\tif (typeof eqValue === 'boolean' && eqValue === true) {\n\t\treturn true;\n\t}\n\tif (typeof eqValue === 'string' && /^active$/i.test(eqValue.trim())) {\n\t\treturn true;\n\t}\n\tconst inValues = Array.isArray((value as any).$in) ? (value as any).$in : [];\n\tif (inValues.some((entry: any) => (typeof entry === 'boolean' && entry === true)\n\t\t|| (typeof entry === 'string' && /^active$/i.test(entry.trim())))) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction collectAssistantActiveMatchFields(query: any): string[] {\n\tconst fields = collectMatchFieldsByCondition(\n\t\tquery,\n\t\t(field, condition) => isAssistantActiveFieldPath(field) && isAssistantActiveCondition(condition)\n\t);\n\treturn Array.from(new Set(fields));\n}\n\nfunction collectAssistantActiveMatchFieldsFromPipeline(pipeline: Array<Record<string, any>>): string[] {\n\tconst fields = new Set<string>();\n\t(pipeline || []).forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tcollectAssistantActiveMatchFields(stage.$match).forEach(field => fields.add(field));\n\t});\n\treturn Array.from(fields);\n}\n\nfunction resolveReadActiveStatusFallback(\n\tquery: Record<string, any>,\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): { query: Record<string, any>; fields: string[] } | null {\n\tconst fields = collectAssistantActiveMatchFields(query);\n\tconst hasProbeDocs = Array.isArray(probeDocs) && probeDocs.length > 0;\n\tconst normalizedSchemaFields = Array.isArray(schemaFields)\n\t\t? new Set(\n\t\t\tschemaFields\n\t\t\t\t.map(field => normalizeOptionalString(field).toLowerCase())\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.map(field => field.split('.').pop() || field)\n\t\t)\n\t\t: new Set<string>();\n\tif (!fields.length || (!hasProbeDocs && !normalizedSchemaFields.size)) {\n\t\treturn null;\n\t}\n\tconst hasUsableFieldData = (field: string): boolean => {\n\t\tif (!hasProbeDocs) {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasAssistantGeographicStateFieldData(probeDocs, field)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn hasNonEmptyValue(probeDocs, field, { treatObjectLikeAsEmpty: true });\n\t};\n\tconst hasAnyFieldData = hasProbeDocs\n\t\t? fields.some(field => hasUsableFieldData(field))\n\t\t: false;\n\tif (hasAnyFieldData) {\n\t\treturn null;\n\t}\n\tconst stripped = stripQueryFieldPathsDeepWithMeta(query, fields);\n\tif (!stripped.changed || !stripped.value || typeof stripped.value !== 'object') {\n\t\treturn null;\n\t}\n\tconst fallbackActiveCandidates: Array<{ field: string; condition: any }> = [\n\t\t{ field: 'status', condition: { $regex: '^active$', $options: 'i' } },\n\t\t{ field: 'state', condition: { $regex: '^active$', $options: 'i' } },\n\t\t{ field: 'active', condition: true },\n\t\t{ field: 'is_active', condition: true },\n\t\t{ field: 'isactive', condition: true },\n\t\t{ field: 'enabled', condition: true },\n\t\t{ field: 'is_enabled', condition: true },\n\t\t{ field: 'isenabled', condition: true }\n\t].filter((entry) => {\n\t\tif (!entry.field || fields.includes(entry.field)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasAssistantGeographicStateFieldData(probeDocs, entry.field)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst hasProbeData = hasProbeDocs\n\t\t\t? (\n\t\t\t\thasNonEmptyValue(probeDocs, entry.field, { treatObjectLikeAsEmpty: true })\n\t\t\t)\n\t\t\t: false;\n\t\treturn hasProbeData || normalizedSchemaFields.has(entry.field);\n\t});\n\tif (fallbackActiveCandidates.length) {\n\t\tconst activeMatch = fallbackActiveCandidates.length === 1\n\t\t\t? { [fallbackActiveCandidates[0].field]: fallbackActiveCandidates[0].condition }\n\t\t\t: { $or: fallbackActiveCandidates.map(entry => ({ [entry.field]: entry.condition })) };\n\t\tconst baseQuery = stripped.value as Record<string, any>;\n\t\treturn {\n\t\t\tquery: Object.keys(baseQuery).length\n\t\t\t\t? { $and: [baseQuery, activeMatch] }\n\t\t\t\t: activeMatch,\n\t\t\tfields: [...fields, ...fallbackActiveCandidates.map(entry => entry.field)]\n\t\t};\n\t}\n\treturn {\n\t\tquery: stripped.value,\n\t\tfields\n\t};\n}\n\nfunction resolveAggregateActiveStatusFallback(\n\tpipeline: Array<Record<string, any>>,\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): { pipeline: Array<Record<string, any>>; fields: string[] } | null {\n\tif (!Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn null;\n\t}\n\tlet changed = false;\n\tconst fields = new Set<string>();\n\tconst nextPipeline = pipeline.map((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\treturn stage;\n\t\t}\n\t\tconst fallback = resolveReadActiveStatusFallback(stage.$match as Record<string, any>, probeDocs, schemaFields);\n\t\tif (!fallback) {\n\t\t\treturn stage;\n\t\t}\n\t\tchanged = true;\n\t\tfallback.fields.forEach(field => fields.add(field));\n\t\treturn {\n\t\t\t...stage,\n\t\t\t$match: fallback.query\n\t\t};\n\t});\n\tif (!changed) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tpipeline: nextPipeline,\n\t\tfields: Array.from(fields)\n\t};\n}\n\nfunction isChemicalFieldPath(field: string): boolean {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\treturn normalized.includes('chemical');\n}\n\nfunction detectIdLikeValue(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\treturn true;\n\t}\n\tif (isPlainObject(value)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction detectChemicalIdFromProbe(probeDocs: any[], fields: string[]): boolean {\n\tif (!Array.isArray(probeDocs) || !probeDocs.length) {\n\t\treturn false;\n\t}\n\tconst targets = fields.filter(field => isChemicalFieldPath(field));\n\tif (!targets.length) {\n\t\treturn false;\n\t}\n\tfor (const doc of probeDocs) {\n\t\tfor (const field of targets) {\n\t\t\tconst value = getValueAtPath(doc, field);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tif (value.some(entry => detectIdLikeValue(entry))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (detectIdLikeValue(value)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction isEmptyQueryValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripQueryFieldPathsDeepWithMeta(\n\tquery: any,\n\tfieldsToStrip: string[]\n): { value: any; changed: boolean } {\n\tconst fieldSet = new Set((fieldsToStrip || []).filter(Boolean));\n\tconst stripValue = (value: any, prefix: string): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value\n\t\t\t\t.map(entry => {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\treturn stripped.value;\n\t\t\t\t})\n\t\t\t\t.filter(entry => !isEmptyQueryValue(entry));\n\t\t\tif (nextArray.length !== value.length) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\treturn { value: nextArray, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tlet changed = false;\n\t\tconst keys = Object.keys(value);\n\t\tkeys.forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tif (Array.isArray(entry) && (key === '$and' || key === '$or' || key === '$nor')) {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tconst arrayValue = Array.isArray(stripped.value) ? stripped.value : [];\n\t\t\t\t\tif (arrayValue.length === 0) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (arrayValue.length !== entry.length || stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult[key] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tif (fieldSet.has(currentPath)) {\n\t\t\t\tchanged = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tconst stripped = stripValue(entry, currentPath);\n\t\t\t\tif (stripped.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (!isEmptyQueryValue(stripped.value)) {\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\tconst resultKeys = Object.keys(result);\n\t\tif (resultKeys.length === 1 && (resultKeys[0] === '$and' || resultKeys[0] === '$or')) {\n\t\t\tconst only = result[resultKeys[0]];\n\t\t\tif (Array.isArray(only) && only.length === 1) {\n\t\t\t\treturn { value: only[0], changed: true };\n\t\t\t}\n\t\t}\n\t\treturn { value: result, changed };\n\t};\n\treturn stripValue(query, '');\n}\n\nexport function stripQueryFieldPathsDeep(query: any, fieldsToStrip: string[]): any {\n\treturn stripQueryFieldPathsDeepWithMeta(query, fieldsToStrip).value;\n}\n\nfunction stripScopedFieldsFromPipelineWithMeta(\n\tpipeline: any[],\n\tfieldsToStrip: string[]\n): { pipeline: any[]; changed: boolean } {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn { pipeline: [], changed: false };\n\t}\n\tlet changed = false;\n\tconst nextPipeline = pipeline.map((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn stage;\n\t\t}\n\t\tlet nextStage = stage;\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$match, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = { ...nextStage, $match: stripped.value };\n\t\t}\n\t\tif (stage.$geoNear && typeof stage.$geoNear === 'object' && stage.$geoNear.query) {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$geoNear.query, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = {\n\t\t\t\t...nextStage,\n\t\t\t\t$geoNear: {\n\t\t\t\t\t...stage.$geoNear,\n\t\t\t\t\tquery: stripped.value\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn nextStage;\n\t});\n\treturn { pipeline: nextPipeline, changed };\n}\n\nexport function stripScopedFieldsFromPipeline(pipeline: any[], fieldsToStrip: string[]): any[] {\n\treturn stripScopedFieldsFromPipelineWithMeta(pipeline, fieldsToStrip).pipeline;\n}\n\nfunction isIdLookupCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !isObjectIdString(value.trim());\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction collectIdFieldConditions(match: any): Array<{ field: string; condition: any }> {\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tconst visit = (value: any, prefix: string) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(entry => visit(entry, prefix));\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tvisit(entry, prefix);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tif (isAssistantIdField(key) && isIdLookupCondition(entry)) {\n\t\t\t\tresults.push({ field: currentPath, condition: entry });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tvisit(entry, currentPath);\n\t\t\t}\n\t\t});\n\t};\n\tvisit(match, '');\n\treturn results;\n}\n\nfunction resolveLocalNameFieldFromDocs(docs: any[], baseToken: string): string | null {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tif (!normalizedBase || !Array.isArray(docs) || !docs.length) {\n\t\treturn null;\n\t}\n\tif (hasNonEmptyValue(docs, normalizedBase, { treatObjectLikeAsEmpty: true })) {\n\t\treturn normalizedBase;\n\t}\n\tconst aliases = resolveFieldAliases(docs, [normalizedBase]);\n\treturn aliases[normalizedBase] || null;\n}\n\nfunction buildIdFieldNameFallbackQuery(\n\tquery: Record<string, any>,\n\tidField: string,\n\tnameField: string,\n\tcondition: any\n): Record<string, any> {\n\tconst baseMatch = stripMatchField(query, idField);\n\tconst orConditions = [\n\t\t{ [idField]: condition },\n\t\t{ [nameField]: condition }\n\t];\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn nextMatch;\n}\n\nfunction buildChemicalIdFieldCandidates(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst leaf = parts[parts.length - 1] || normalized;\n\tconst prefix = parts.length > 1 ? parts.slice(0, -1).join('.') : '';\n\tconst withPrefix = (value: string) => (prefix ? `${prefix}.${value}` : value);\n\tconst candidates = new Set<string>();\n\tcandidates.add(normalized);\n\tif (!leaf.startsWith('id_')) {\n\t\tcandidates.add(withPrefix('id_chemical'));\n\t\tcandidates.add(withPrefix('chemical_id'));\n\t\tcandidates.add(withPrefix('chemicalId'));\n\t\tcandidates.add(withPrefix('idChemical'));\n\t}\n\treturn Array.from(candidates);\n}\n\nasync function applyChemicalNameLookupFallbackToQuery(params: {\n\tquery: Record<string, any>;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tprobeDocs?: any[];\n}): Promise<{ query: Record<string, any>; meta: Record<string, any> } | null> {\n\tconst { query, db, dbName, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst chemicalFields = collectMatchFieldsByCondition(query, (field, condition) => (\n\t\tisRegexMatchCondition(condition) && isChemicalFieldPath(field)\n\t));\n\tif (!chemicalFields.length) {\n\t\treturn null;\n\t}\n\tconst targetField = chemicalFields[0];\n\tconst condition = findMatchConditionForField(query, targetField);\n\tconst regex = buildRegexFromCondition(condition);\n\tif (!regex) {\n\t\treturn null;\n\t}\n\tconst sampleDocs = Array.isArray(probeDocs) ? probeDocs : [];\n\tif (!detectChemicalIdFromProbe(sampleDocs, [targetField])) {\n\t\treturn null;\n\t}\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\tconst candidates = resolveIdLookupCandidates('chemical', collectionNames);\n\tfor (const candidate of candidates) {\n\t\tif (!candidate) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst candidateHasClientScope = idClient\n\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t: false;\n\t\tconst candidateProbe = await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection: candidate,\n\t\t\tidClient,\n\t\t\tidCustomer,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: candidateHasClientScope\n\t\t});\n\t\tconst lookup = await lookupIdsForNameMatch({\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tcollection: candidate,\n\t\t\tbaseToken: 'chemical',\n\t\t\tregex,\n\t\t\tidClient,\n\t\t\tidCustomer,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: candidateProbe\n\t\t});\n\t\tif (lookup?.ids?.length) {\n\t\t\tconst idFields = buildChemicalIdFieldCandidates(targetField);\n\t\t\tconst baseMatch = stripMatchField(query, targetField);\n\t\t\tconst orConditions = idFields.map(field => ({ [field]: { $in: lookup.ids } }));\n\t\t\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t\t\t? { $or: orConditions }\n\t\t\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\t\t\treturn {\n\t\t\t\tquery: nextMatch,\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: targetField,\n\t\t\t\t\tstrategy: 'chemical_lookup',\n\t\t\t\t\tcollection: candidate,\n\t\t\t\t\tids: lookup.ids.length,\n\t\t\t\t\tfields: lookup.fields,\n\t\t\t\t\tidFields\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveIdLookupCandidates(baseToken: string, collectionNames: string[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken).toLowerCase();\n\tif (!normalizedBase || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst candidates = new Set<string>();\n\tconst hints = AI_ASSISTANT_ID_LOOKUP_HINTS[normalizedBase] || [];\n\thints.forEach((hint) => {\n\t\tif (collectionNames.includes(hint)) {\n\t\t\tcandidates.add(hint);\n\t\t}\n\t});\n\tconst tokens = tokenizeCollectionText(normalizedBase);\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT);\n\tranked.forEach(entry => candidates.add(entry.name));\n\treturn Array.from(candidates);\n}\n\nfunction buildNameLookupFields(baseToken: string, docs?: any[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tconst candidates = expandNameFieldCandidates(normalizedBase);\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn candidates;\n\t}\n\tconst available = collectFieldCandidates(docs);\n\tconst filtered = candidates.filter(field => {\n\t\tconst stats = available.get(field);\n\t\treturn !!stats && stats.nonEmpty > 0;\n\t});\n\treturn filtered.length ? filtered : candidates;\n}\n\nasync function lookupIdsForNameMatch(params: {\n\tdb: any;\n\tdbName: string;\n\tcollection: string;\n\tbaseToken: string;\n\tregex: RegExp;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tprobeDocs?: any[];\n}): Promise<{ ids: any[]; fields: string[] } | null> {\n\tconst { db, dbName, collection, baseToken, regex, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst fields = normalizeAggregateFieldList(\n\t\tbuildNameLookupFields(baseToken, probeDocs)\n\t\t\t.map(field => normalizeLookupPath(field) || normalizeOptionalString(field))\n\t\t\t.filter(Boolean)\n\t).filter(field => isAssistantProjectionKeyAllowed(field));\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet query: Record<string, any> = { $or: fields.map(field => ({ [field]: regex })) };\n\tif (!isSuperAdmin) {\n\t\tconst hasClient = await collectionHasClientIndex(db, dbName, collection);\n\t\tif (hasClient) {\n\t\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t\t}\n\t\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\t\tif (normalizedCustomer && collection !== 'customers') {\n\t\t\tconst hasCustomer = await collectionHasFieldIndex(db, dbName, collection, 'id_customer');\n\t\t\tif (hasCustomer) {\n\t\t\t\tquery = applyCustomerScopeFilter(query, collection, normalizedCustomer, isSuperAdmin);\n\t\t\t}\n\t\t}\n\t}\n\tconst rawProjection: Record<string, number | boolean> = { _id: 1 };\n\tfields.forEach((field) => {\n\t\trawProjection[field] = 1;\n\t});\n\tconst projection = sanitizeAssistantProjection(rawProjection);\n\tif (!projection || !Object.keys(projection).length) {\n\t\treturn null;\n\t}\n\tconst docs = await db.collection(collection)\n\t\t.find(query, {\n\t\t\tprojection,\n\t\t\tlimit: AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t})\n\t\t.toArray();\n\tconst ids = docs.map((doc: any) => doc?._id).filter(Boolean);\n\treturn ids.length ? { ids, fields } : null;\n}\n\nasync function applyIdLookupFallbackToQuery(params: {\n\tquery: Record<string, any>;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tcollectionNames?: string[];\n\tprobeDocs?: any[];\n}): Promise<{ query: Record<string, any>; meta: Record<string, any> } | null> {\n\tconst { query, db, dbName, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst conditions = collectIdFieldConditions(query);\n\tif (!conditions.length) {\n\t\treturn null;\n\t}\n\tconst collectionNames = params.collectionNames || await listAssistantCollections(db, dbName);\n\tfor (const condition of conditions) {\n\t\tconst regex = buildRegexFromCondition(condition.condition);\n\t\tif (!regex) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseToken = normalizeIdFieldBase(condition.field);\n\t\tif (!baseToken) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (baseToken === 'customer' && idCustomer) {\n\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\tlet nextValue: any = idCustomer;\n\t\t\tif (targetFieldType === 'objectId' && isObjectIdString(idCustomer)) {\n\t\t\t\ttry {\n\t\t\t\t\tnextValue = new ObjectId(idCustomer);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tnextValue = idCustomer;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, nextValue),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'customer_scope',\n\t\t\t\t\tvalue: idCustomer,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst localNameField = resolveLocalNameFieldFromDocs(probeDocs || [], baseToken);\n\t\tif (localNameField) {\n\t\t\treturn {\n\t\t\t\tquery: buildIdFieldNameFallbackQuery(query, condition.field, localNameField, regex),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'local_name',\n\t\t\t\t\tnameField: localNameField\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst candidates = resolveIdLookupCandidates(baseToken, collectionNames);\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!candidate) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t: false;\n\t\t\tconst candidateProbe = await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection: candidate,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: candidateHasClientScope\n\t\t\t});\n\t\t\tconst lookup = await lookupIdsForNameMatch({\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tcollection: candidate,\n\t\t\t\tbaseToken,\n\t\t\t\tregex,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: candidateProbe\n\t\t\t});\n\t\t\tif (lookup?.ids?.length) {\n\t\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\t\tconst normalizedIds = normalizeIdsForTargetField(\n\t\t\t\t\tlookup.ids,\n\t\t\t\t\tprobeDocs || [],\n\t\t\t\t\tcondition.field,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t);\n\t\t\t\tconst idsForQuery = normalizedIds.length ? normalizedIds : lookup.ids;\n\t\t\t\treturn {\n\t\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, { $in: idsForQuery }),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tfield: condition.field,\n\t\t\t\t\t\tstrategy: 'lookup',\n\t\t\t\t\t\tcollection: candidate,\n\t\t\t\t\t\tids: lookup.ids.length,\n\t\t\t\t\t\tidsNormalized: normalizedIds.length,\n\t\t\t\t\t\ttargetFieldType,\n\t\t\t\t\t\tfields: lookup.fields\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction buildAggregateNameMatchFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tcondition: any;\n\t\tfields: string[];\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst baseMatch = stripMatchField(matchStage, fallback.field);\n\tconst orConditions = fallback.fields.map(field => ({ [field]: fallback.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: nextMatch };\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction findAggregateDateField(pipeline: Array<Record<string, any>>): string | null {\n\tconst fields = new Set<string>();\n\t(pipeline || []).forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tcollectDateFieldsFromMatch(stage.$match, fields);\n\t\t}\n\t});\n\tif (fields.size !== 1) {\n\t\treturn null;\n\t}\n\treturn Array.from(fields)[0];\n}\n\nfunction collectDateFieldsFromMatch(value: any, fields: Set<string>) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectDateFieldsFromMatch(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (Object.prototype.hasOwnProperty.call(AI_ASSISTANT_DATE_FALLBACKS, key)) {\n\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\tfields.add(key);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tif (entry && typeof entry === 'object') {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t}\n\t});\n}\n\nfunction hasDateRangeOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.prototype.hasOwnProperty.call(value, '$gte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$gt')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lt');\n}\n\nfunction replaceAggregateDateField(\n\tpipeline: Array<Record<string, any>>,\n\tfromField: string,\n\ttoField: string\n): Array<Record<string, any>> {\n\tconst replacer = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => replacer(entry));\n\t\t}\n\t\tif (value instanceof Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst next: Record<string, any> = {};\n\t\t\tObject.keys(value).forEach((key) => {\n\t\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\t\tnext[nextKey] = replacer(value[key]);\n\t\t\t});\n\t\t\treturn next;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tconst fromRef = `$${fromField}`;\n\t\t\tif (value === fromRef) {\n\t\t\t\treturn `$${toField}`;\n\t\t\t}\n\t\t\tif (value.startsWith(`${fromRef}.`)) {\n\t\t\t\treturn `$${toField}${value.slice(fromRef.length)}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\treturn value;\n\t};\n\treturn replacer(pipeline);\n}\n\nfunction normalizeMongoQuery(query?: Record<string, any>) {\n\tconst normalized = query && typeof query === 'object' ? query : {};\n\tif (containsForbiddenMongoOperators(normalized)) {\n\t\tthrow new Error('AI assistant report builder bridge: Query contains restricted operators.');\n\t}\n\tconst rewritten = rewriteEmbeddedMatchObjects(normalized);\n\tconst exprRewritten = rewriteMatchExpressionsToExpr(rewritten);\n\tconst positionalRepaired = repairAssistantPositionalPathSegmentsInQuery(exprRewritten).query;\n\tconst nowNormalized = normalizeAssistantNowExprPlaceholdersDeep(positionalRepaired);\n\treturn applyAssistantNameRegexToQuery(nowNormalized);\n}\n\nfunction shouldApplyAssistantNameRegex(field: string): boolean {\n\tconst normalized = String(field || '').toLowerCase().trim();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized.startsWith('$')) {\n\t\treturn false;\n\t}\n\tif (isAssistantIdField(normalized)) {\n\t\treturn false;\n\t}\n\tif (normalized === 'id' || normalized.endsWith('_id')) {\n\t\treturn false;\n\t}\n\tconst tokens = normalized.split(/[^a-z0-9]+/g).filter(Boolean);\n\tconst targetTokens = new Set(['customer', 'well', 'chemical']);\n\tconst hasTargetToken = tokens.some(token => targetTokens.has(token));\n\tif (hasTargetToken) {\n\t\treturn true;\n\t}\n\tif (tokens.includes('name')) {\n\t\treturn true;\n\t}\n\treturn /(^|[._-])name$/i.test(normalized);\n}\n\nfunction escapeRegexValue(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildTokenizedRegex(value: string): RegExp {\n\tconst tokens = tokenizeFieldKey(value).filter(token => token.length);\n\tif (tokens.length <= 1) {\n\t\treturn new RegExp(escapeRegexValue(value), 'i');\n\t}\n\tconst tokenPattern = tokens.map(token => escapeRegexValue(token)).join('[\\\\s\\\\-_]*.*');\n\treturn new RegExp(tokenPattern, 'i');\n}\n\nfunction applyAssistantNameRegexToQuery(query: any, fieldContext?: string): any {\n\tif (Array.isArray(query)) {\n\t\tif (fieldContext && shouldApplyAssistantNameRegex(fieldContext)) {\n\t\t\treturn query.map((entry) => {\n\t\t\t\tif (typeof entry === 'string') {\n\t\t\t\t\tconst trimmed = entry.trim();\n\t\t\t\t\treturn trimmed ? buildTokenizedRegex(trimmed) : entry;\n\t\t\t\t}\n\t\t\t\treturn applyAssistantNameRegexToQuery(entry, fieldContext);\n\t\t\t});\n\t\t}\n\t\treturn query.map(entry => applyAssistantNameRegexToQuery(entry));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date || query instanceof RegExp || isMongoObjectId(query)) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst value = query[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value, fieldContext);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && shouldApplyAssistantNameRegex(key)) {\n\t\t\tconst trimmed = value.trim();\n\t\t\tresult[key] = trimmed ? buildTokenizedRegex(trimmed) : value;\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value, key);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction isObjectIdString(value: string): boolean {\n\treturn /^[a-f0-9]{24}$/i.test(value);\n}\n\nfunction isPlainMatchObject(value: any): boolean {\n\treturn isPlainObject(value)\n\t\t&& !isMongoObjectId(value)\n\t\t&& !(value instanceof Date)\n\t\t&& !(value instanceof RegExp);\n}\n\nfunction hasOperatorKeys(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn Object.keys(value).some(key => key.startsWith('$'));\n}\n\nexport function rewriteEmbeddedMatchObjects(query: any): any {\n\ttype RewriteContext = 'root' | 'logical' | 'fieldOperator';\n\tconst isLogicalOperatorKey = (key: string): boolean => key === '$or' || key === '$and' || key === '$nor';\n\tconst rewriteValue = (value: any, allowArrayRewrite: boolean, context: RewriteContext): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\tif (!allowArrayRewrite) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\treturn value.map(entry => rewriteValue(entry, true, context));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tconst nextContext: RewriteContext = isLogicalOperatorKey(key) ? 'logical' : 'fieldOperator';\n\t\t\t\tresult[key] = rewriteValue(entry, true, nextContext);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (context !== 'fieldOperator' && isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, key, context);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[key] = rewriteValue(entry, true, context);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[key] = allowArrayRewrite ? entry.map(item => rewriteValue(item, true, context)) : entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst flattenMatchObject = (value: any, prefix: string, context: RewriteContext): Record<string, any> => {\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value || {}).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tconst currentPath = `${prefix}.${key}`;\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, currentPath, context);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = rewriteValue(entry, true, context);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[currentPath] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\treturn rewriteValue(query, true, 'root');\n}\n\nfunction buildRegexFromCondition(condition: any): RegExp | null {\n\tif (!condition) {\n\t\treturn null;\n\t}\n\tif (condition instanceof RegExp) {\n\t\treturn condition;\n\t}\n\tif (typeof condition === 'string') {\n\t\tconst trimmed = condition.trim();\n\t\tif (!trimmed || isObjectIdString(trimmed)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new RegExp(escapeRegexValue(trimmed), 'i');\n\t}\n\tif (typeof condition === 'object') {\n\t\tconst raw = (condition as any).$regex;\n\t\tif (raw !== undefined) {\n\t\t\tconst source = String(raw);\n\t\t\tconst options = typeof (condition as any).$options === 'string'\n\t\t\t\t? (condition as any).$options\n\t\t\t\t: 'i';\n\t\t\ttry {\n\t\t\t\treturn new RegExp(source, options);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\treturn new RegExp(escapeRegexValue(source), 'i');\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction normalizeIdFieldBase(field: string): string {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst last = parts[parts.length - 1] || normalized;\n\tif (last.startsWith('id_')) {\n\t\treturn last.slice(3);\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn normalized.slice(3);\n\t}\n\treturn last;\n}\n\nfunction normalizeCollectionKey(value: string): string {\n\treturn String(value || '').toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n\nfunction normalizeCollectionToken(token: string): string[] {\n\tconst trimmed = token.trim();\n\tif (!trimmed) {\n\t\treturn [];\n\t}\n\tconst tokens = new Set<string>([trimmed]);\n\tif (\n\t\ttrimmed.length > 4\n\t\t&& trimmed.endsWith('s')\n\t\t&& !trimmed.endsWith('ss')\n\t\t&& !trimmed.endsWith('us')\n\t\t&& !trimmed.endsWith('is')\n\t) {\n\t\ttokens.add(trimmed.slice(0, -1));\n\t}\n\treturn Array.from(tokens);\n}\n\nfunction tokenizeCollectionText(value: string): string[] {\n\tconst rawTokens = String(value || '')\n\t\t.toLowerCase()\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst tokens: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!AI_ASSISTANT_COLLECTION_STOPWORDS.has(normalized)) {\n\t\t\t\ttokens.push(normalized);\n\t\t\t}\n\t\t});\n\t});\n\treturn Array.from(new Set(tokens));\n}\n\nfunction computeCollectionTokenWeights(tokens: string[]): { weights: Record<string, number>; hasDomain: boolean } {\n\tconst unique = Array.from(new Set(tokens));\n\tconst hasDomain = unique.some(token => AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS.has(token));\n\tconst weights: Record<string, number> = {};\n\tunique.forEach((token) => {\n\t\tif (hasDomain && AI_ASSISTANT_COLLECTION_GENERIC_TOKENS.has(token)) {\n\t\t\tweights[token] = 0.4;\n\t\t\treturn;\n\t\t}\n\t\tweights[token] = 1;\n\t});\n\treturn { weights, hasDomain };\n}\n\nfunction expandAssistantTermSynonyms(text: string): { expanded: string; matches: Array<{ term: string; expansions: string[] }> } {\n\tconst base = normalizeOptionalString(text);\n\tif (!base) {\n\t\treturn { expanded: '', matches: [] };\n\t}\n\tlet expanded = base;\n\tconst matches: Array<{ term: string; expansions: string[] }> = [];\n\tAI_ASSISTANT_TERM_SYNONYMS.forEach((entry) => {\n\t\tif (!entry.pattern.test(base)) {\n\t\t\treturn;\n\t\t}\n\t\tconst existing = expanded.toLowerCase();\n\t\tentry.expansions.forEach((expansion) => {\n\t\t\tif (expansion && !existing.includes(expansion.toLowerCase())) {\n\t\t\t\texpanded = `${expanded} ${expansion}`;\n\t\t\t}\n\t\t});\n\t\tmatches.push({ term: entry.label, expansions: entry.expansions });\n\t});\n\treturn { expanded, matches };\n}\n\nfunction listAssistantReportBuilderCollectionsFromManager(): string[] {\n\tconst manager = ResolveIOServer.getMongoManager?.();\n\tconst collectionModels = manager && typeof manager.collections === 'function'\n\t\t? manager.collections()\n\t\t: [];\n\tif (!Array.isArray(collectionModels) || !collectionModels.length) {\n\t\treturn [];\n\t}\n\tconst seen = new Set<string>();\n\tconst names: string[] = [];\n\tcollectionModels.forEach((model: any) => {\n\t\tif (!model?.useRB) {\n\t\t\treturn;\n\t\t}\n\t\tconst name = normalizeOptionalString(model?.collectionName);\n\t\tif (!name || seen.has(name)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(name);\n\t\tnames.push(name);\n\t});\n\treturn names;\n}\n\nfunction listAssistantConfiguredCollectionsFromManager(): string[] {\n\tconst manager = ResolveIOServer.getMongoManager?.();\n\tconst collectionModels = manager && typeof manager.collections === 'function'\n\t\t? manager.collections()\n\t\t: [];\n\tif (!Array.isArray(collectionModels) || !collectionModels.length) {\n\t\treturn [];\n\t}\n\tconst seen = new Set<string>();\n\tconst names: string[] = [];\n\tcollectionModels.forEach((model: any) => {\n\t\tconst name = normalizeOptionalString(model?.collectionName);\n\t\tif (!name || seen.has(name)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(name);\n\t\tnames.push(name);\n\t});\n\treturn names;\n}\n\nfunction resolveAssistantSurfaceFileCandidates(baseName: 'methods' | 'publications'): string[] {\n\tconst fileNames = [`${baseName}.ts`, `${baseName}.js`];\n\tconst roots = [\n\t\tnormalizeOptionalString(process.cwd()),\n\t\tnormalizeOptionalString(path.resolve(process.cwd(), 'resolveio-server-lib')),\n\t\tnormalizeOptionalString(path.resolve(__dirname, '..', '..', '..', '..')),\n\t\tnormalizeOptionalString(path.resolve(__dirname, '..', '..', '..')),\n\t\tnormalizeOptionalString(path.resolve(__dirname, '..', '..')),\n\t\tnormalizeOptionalString(path.resolve(__dirname, '..'))\n\t].filter(Boolean);\n\tconst candidates: string[] = [];\n\troots.forEach((root) => {\n\t\tfileNames.forEach((fileName) => {\n\t\t\tcandidates.push(path.resolve(root, fileName));\n\t\t});\n\t});\n\treturn Array.from(new Set(candidates.map(value => normalizeOptionalString(value)).filter(Boolean)));\n}\n\nasync function readFirstAssistantSurfaceFile(candidates: string[]): Promise<string> {\n\tfor (const candidate of candidates) {\n\t\tconst normalized = normalizeOptionalString(candidate);\n\t\tif (!normalized) {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\treturn await fs.readFile(normalized, 'utf8');\n\t\t}\n\t\tcatch {\n\t\t\t// Try next candidate.\n\t\t}\n\t}\n\treturn '';\n}\n\nfunction extractAssistantSurfaceNamesFromFile(source: string): string[] {\n\tconst text = normalizeOptionalString(source);\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst names: string[] = [];\n\tconst seen = new Set<string>();\n\tconst keyPattern = /^\\s*([A-Za-z_$][A-Za-z0-9_$]*)\\s*:\\s*\\(/gm;\n\tlet match: RegExpExecArray | null = keyPattern.exec(text);\n\twhile (match) {\n\t\tconst key = normalizeOptionalString(match[1]);\n\t\tif (key && !seen.has(key)) {\n\t\t\tseen.add(key);\n\t\t\tnames.push(key);\n\t\t}\n\t\tmatch = keyPattern.exec(text);\n\t}\n\treturn names;\n}\n\nasync function loadAssistantSurfaceIndex(): Promise<AssistantSurfaceIndex> {\n\tconst now = Date.now();\n\tif (\n\t\tcachedAssistantSurfaceIndex\n\t\t&& now - cachedAssistantSurfaceIndex.updatedAt < AI_ASSISTANT_SURFACE_INDEX_CACHE_TTL_MS\n\t) {\n\t\treturn cachedAssistantSurfaceIndex;\n\t}\n\tconst [methodsSource, publicationsSource] = await Promise.all([\n\t\treadFirstAssistantSurfaceFile(resolveAssistantSurfaceFileCandidates('methods')),\n\t\treadFirstAssistantSurfaceFile(resolveAssistantSurfaceFileCandidates('publications'))\n\t]);\n\tconst methods = extractAssistantSurfaceNamesFromFile(methodsSource);\n\tconst publications = extractAssistantSurfaceNamesFromFile(publicationsSource);\n\tconst index: AssistantSurfaceIndex = {\n\t\tmethods,\n\t\tpublications,\n\t\tupdatedAt: now\n\t};\n\tcachedAssistantSurfaceIndex = index;\n\treturn index;\n}\n\nfunction tokenizeAssistantSurfaceName(name: string): string[] {\n\tconst normalized = normalizeOptionalString(name);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\treturn mergeAssistantHintValues(\n\t\ttokenizeCollectionText(normalized),\n\t\ttokenizeFieldKey(normalized).flatMap(token => normalizeCollectionToken(token))\n\t);\n}\n\nfunction scoreAssistantSurfaceName(messageTokens: string[], surfaceName: string): number {\n\tconst requestTokens = Array.isArray(messageTokens) ? messageTokens.filter(Boolean) : [];\n\tconst normalizedSurface = normalizeOptionalString(surfaceName);\n\tif (!requestTokens.length || !normalizedSurface) {\n\t\treturn 0;\n\t}\n\tconst surfaceTokens = tokenizeAssistantSurfaceName(normalizedSurface);\n\tif (!surfaceTokens.length) {\n\t\treturn 0;\n\t}\n\tlet score = 0;\n\trequestTokens.forEach((token) => {\n\t\tif (surfaceTokens.includes(token)) {\n\t\t\tscore += 10;\n\t\t\treturn;\n\t\t}\n\t\tif (surfaceTokens.some(surfaceToken => surfaceToken.startsWith(token) || token.startsWith(surfaceToken))) {\n\t\t\tscore += 4;\n\t\t}\n\t});\n\tconst messageKey = normalizeCollectionKey(requestTokens.join(' '));\n\tconst surfaceKey = normalizeCollectionKey(normalizedSurface);\n\tif (messageKey && surfaceKey.includes(messageKey)) {\n\t\tscore += 18;\n\t}\n\telse if (messageKey && messageKey.includes(surfaceKey) && surfaceKey.length >= 5) {\n\t\tscore += 8;\n\t}\n\treturn score;\n}\n\nfunction rankAssistantSurfaceNames(queryText: string, names: string[], limit = AI_ASSISTANT_SURFACE_INDEX_MATCH_LIMIT): string[] {\n\tconst tokens = mergeAssistantHintValues(\n\t\ttokenizeCollectionText(queryText),\n\t\ttokenizeFieldKey(queryText).flatMap(token => normalizeCollectionToken(token))\n\t);\n\tif (!tokens.length || !Array.isArray(names) || !names.length || limit <= 0) {\n\t\treturn [];\n\t}\n\treturn names\n\t\t.map((name) => ({\n\t\t\tname,\n\t\t\tscore: scoreAssistantSurfaceName(tokens, name)\n\t\t}))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\tif (a.name.length !== b.name.length) {\n\t\t\t\treturn a.name.length - b.name.length;\n\t\t\t}\n\t\t\treturn a.name.localeCompare(b.name);\n\t\t})\n\t\t.slice(0, limit)\n\t\t.map(entry => entry.name);\n}\n\nfunction resolveAssistantCollectionHintsFromSurfaceNames(surfaceNames: string[], collectionNames: string[]): string[] {\n\tif (!Array.isArray(surfaceNames) || !surfaceNames.length || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst hints: string[] = [];\n\tsurfaceNames.forEach((surfaceName) => {\n\t\tconst tokens = tokenizeAssistantSurfaceName(surfaceName);\n\t\tif (!tokens.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst tokenHints = resolveCollectionHintsFromTokens(tokens, collectionNames, 2);\n\t\ttokenHints.forEach((hint) => {\n\t\t\tif (!hints.includes(hint)) {\n\t\t\t\thints.push(hint);\n\t\t\t}\n\t\t});\n\t\ttokens.forEach((token) => {\n\t\t\tconst aliasCandidates = resolveAssistantBridgeCollectionAliasCandidates(token);\n\t\t\taliasCandidates.forEach((aliasCandidate) => {\n\t\t\t\tif (collectionNames.includes(aliasCandidate) && !hints.includes(aliasCandidate)) {\n\t\t\t\t\thints.push(aliasCandidate);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\treturn hints.slice(0, AI_ASSISTANT_SURFACE_INDEX_COLLECTION_HINT_LIMIT);\n}\n\nasync function resolveAssistantSurfaceHints(\n\tmessage: string,\n\tcontextRoute: string,\n\tcollectionNames: string[]\n): Promise<AssistantSurfaceHintResult> {\n\tconst queryText = [message, contextRoute].filter(Boolean).join(' ');\n\tif (!normalizeOptionalString(queryText) || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn {\n\t\t\tcollectionHints: [],\n\t\t\tmethodHints: [],\n\t\t\tpublicationHints: []\n\t\t};\n\t}\n\tconst surfaceIndex = await loadAssistantSurfaceIndex();\n\tconst methodHints = rankAssistantSurfaceNames(queryText, surfaceIndex.methods, AI_ASSISTANT_SURFACE_INDEX_MATCH_LIMIT);\n\tconst publicationHints = rankAssistantSurfaceNames(queryText, surfaceIndex.publications, AI_ASSISTANT_SURFACE_INDEX_MATCH_LIMIT);\n\tconst collectionHints = resolveAssistantCollectionHintsFromSurfaceNames(\n\t\tmergeAssistantHintValues(methodHints, publicationHints),\n\t\tcollectionNames\n\t);\n\treturn {\n\t\tcollectionHints,\n\t\tmethodHints,\n\t\tpublicationHints\n\t};\n}\n\nasync function listAssistantCollections(db: any, dbName: string): Promise<string[]> {\n\tconst cacheKey = normalizeOptionalString(dbName) || 'default';\n\tconst cached = AI_ASSISTANT_COLLECTION_CACHE.get(cacheKey);\n\tconst now = Date.now();\n\tconst managerCollectionNames = mergeAssistantHintValues(\n\t\tlistAssistantConfiguredCollectionsFromManager(),\n\t\tlistAssistantReportBuilderCollectionsFromManager()\n\t);\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_COLLECTION_CACHE_TTL_MS) {\n\t\tconst mergedCachedNames = mergeAssistantHintValues(managerCollectionNames, cached.names)\n\t\t\t.sort((a, b) => a.localeCompare(b));\n\t\tif (mergedCachedNames.length !== cached.names.length) {\n\t\t\tAI_ASSISTANT_COLLECTION_CACHE.set(cacheKey, { names: mergedCachedNames, updatedAt: now });\n\t\t}\n\t\treturn mergedCachedNames;\n\t}\n\tconst seen = new Set<string>();\n\tconst merged: string[] = [];\n\tconst pushName = (name: string) => {\n\t\tconst normalized = normalizeOptionalString(name);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tmerged.push(normalized);\n\t};\n\tmanagerCollectionNames.forEach(pushName);\n\ttry {\n\t\tconst collections = await db.listCollections({}, { nameOnly: true }).toArray();\n\t\tif (Array.isArray(collections)) {\n\t\t\tcollections.forEach((entry) => {\n\t\t\t\tpushName(normalizeOptionalString(entry?.name));\n\t\t\t});\n\t\t}\n\t}\n\tcatch {\n\t\t// Ignore listCollections errors and fall back to manager/cached names.\n\t}\n\tconst names = merged.sort((a, b) => a.localeCompare(b));\n\tif (names.length) {\n\t\tAI_ASSISTANT_COLLECTION_CACHE.set(cacheKey, { names, updatedAt: now });\n\t\treturn names;\n\t}\n\treturn cached?.names || [];\n}\n\nfunction scoreCollectionMatch(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): number {\n\tif (!requestedTokens.length) {\n\t\treturn 0;\n\t}\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tif (!candidateTokens.length) {\n\t\treturn 0;\n\t}\n\tlet score = 0;\n\trequestedTokens.forEach((token) => {\n\t\tif (candidateTokens.includes(token)) {\n\t\t\tconst weight = tokenWeights?.[token] ?? 1;\n\t\t\tscore += 10 * weight;\n\t\t}\n\t});\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t}\n\tif (isVersionCollectionName(candidateName)) {\n\t\tscore -= 15;\n\t}\n\treturn score;\n}\n\nfunction scoreCollectionMatchDetailed(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): {\n\tscore: number;\n\ttokenMatches: string[];\n\tkeyMatch: 'exact' | 'partial' | null;\n\tcandidateTokens: string[];\n\ttokenScore: number;\n\ttokenWeights: Record<string, number>;\n} {\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tconst tokenMatches = requestedTokens.filter(token => candidateTokens.includes(token));\n\tconst weights = tokenWeights || {};\n\tconst tokenScore = tokenMatches.reduce((sum, token) => sum + 10 * (weights[token] ?? 1), 0);\n\tlet score = tokenScore;\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tlet keyMatch: 'exact' | 'partial' | null = null;\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t\tkeyMatch = 'exact';\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t\tkeyMatch = 'partial';\n\t}\n\tif (isVersionCollectionName(candidateName)) {\n\t\tscore -= 15;\n\t}\n\treturn {\n\t\tscore,\n\t\ttokenMatches,\n\t\tkeyMatch,\n\t\tcandidateTokens,\n\t\ttokenScore,\n\t\ttokenWeights: tokenMatches.reduce((acc, token) => {\n\t\t\tacc[token] = weights[token] ?? 1;\n\t\t\treturn acc;\n\t\t}, {} as Record<string, number>)\n\t};\n}\n\nfunction resolveCollectionHintsFromTokens(tokens: string[], collectionNames: string[], max = 5): string[] {\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\treturn collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0))\n\t\t.map(entry => entry.name);\n}\n\nfunction resolveCollectionHintsFromRanking(collectionRanking: Record<string, any> | null, max = 5): string[] {\n\tconst ranked = Array.isArray(collectionRanking?.ranked) ? collectionRanking?.ranked : [];\n\tif (!ranked.length || max <= 0) {\n\t\treturn [];\n\t}\n\treturn ranked\n\t\t.map((entry: any) => normalizeOptionalString(entry?.name))\n\t\t.filter(Boolean)\n\t\t.slice(0, max);\n}\n\nfunction buildAssistantCollectionProfile(collectionName: string): {\n\tnameTokens: string[];\n\tfieldTokens: string[];\n\tlookupFamilyTokens: string[];\n\tidBaseTokens: string[];\n} {\n\tconst normalized = normalizeOptionalString(collectionName);\n\tif (!normalized) {\n\t\treturn {\n\t\t\tnameTokens: [],\n\t\t\tfieldTokens: [],\n\t\t\tlookupFamilyTokens: [],\n\t\t\tidBaseTokens: []\n\t\t};\n\t}\n\tconst now = Date.now();\n\tconst cached = AI_ASSISTANT_COLLECTION_PROFILE_CACHE.get(normalized);\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_COLLECTION_PROFILE_CACHE_TTL_MS) {\n\t\treturn cached.profile;\n\t}\n\tconst metadata = getAssistantCollectionMetadata(normalized);\n\tconst fieldTokenCounts = new Map<string, number>();\n\tconst idBaseTokens = new Set<string>();\n\t(metadata.fields || []).forEach((fieldPath) => {\n\t\tconst normalizedPath = normalizeLookupPath(fieldPath);\n\t\tif (!normalizedPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst tokens = mergeAssistantHintValues(\n\t\t\ttokenizeFieldKey(normalizedPath).flatMap(token => normalizeCollectionToken(token)),\n\t\t\ttokenizeCollectionText(normalizedPath)\n\t\t);\n\t\ttokens.forEach((token) => {\n\t\t\tif (!token) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfieldTokenCounts.set(token, (fieldTokenCounts.get(token) || 0) + 1);\n\t\t});\n\t\tconst leaf = normalizedPath.split('.').pop() || normalizedPath;\n\t\tif (/^id_[a-z0-9_]+$/i.test(leaf)) {\n\t\t\tconst token = normalizeOptionalString(leaf.slice(3)).toLowerCase();\n\t\t\tif (token) {\n\t\t\t\tidBaseTokens.add(token);\n\t\t\t\tfieldTokenCounts.set(token, (fieldTokenCounts.get(token) || 0) + 2);\n\t\t\t}\n\t\t}\n\t});\n\tconst fieldTokens = Array.from(fieldTokenCounts.entries())\n\t\t.sort((a, b) => {\n\t\t\tif (a[1] !== b[1]) {\n\t\t\t\treturn b[1] - a[1];\n\t\t\t}\n\t\t\treturn a[0].localeCompare(b[0]);\n\t\t})\n\t\t.slice(0, AI_ASSISTANT_COLLECTION_PROFILE_FIELD_TOKEN_LIMIT)\n\t\t.map(entry => entry[0]);\n\tconst lookupFamilyTokens = mergeAssistantHintValues(\n\t\t(metadata.lookups || [])\n\t\t\t.map(mapping => normalizeAssistantCollectionFamilyName(mapping.lookupCollection))\n\t\t\t.filter(Boolean)\n\t\t\t.flatMap((family) => mergeAssistantHintValues(\n\t\t\t\t[family],\n\t\t\t\ttokenizeCollectionText(family),\n\t\t\t\tfamily.split(/[^a-z0-9]+/g).filter(Boolean)\n\t\t\t))\n\t);\n\tconst profile = {\n\t\tnameTokens: tokenizeCollectionText(normalized),\n\t\tfieldTokens,\n\t\tlookupFamilyTokens,\n\t\tidBaseTokens: Array.from(idBaseTokens)\n\t};\n\tAI_ASSISTANT_COLLECTION_PROFILE_CACHE.set(normalized, {\n\t\tprofile,\n\t\tupdatedAt: now\n\t});\n\treturn profile;\n}\n\nfunction buildCollectionRankingDebugFromSignals(\n\ttokens: string[],\n\tcollectionNames: string[],\n\tsignals?: AssistantCollectionRankingSignals,\n\tmax = 8\n): Record<string, any> {\n\tconst requestedTokens = Array.from(new Set(\n\t\tmergeAssistantHintValues(tokens || [], signals?.requestedTokens || [])\n\t));\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst { weights, hasDomain } = computeCollectionTokenWeights(requestedTokens);\n\tconst methodTokens = mergeAssistantHintValues(\n\t\t...(Array.isArray(signals?.methodHints) ? signals?.methodHints : [])\n\t\t\t.map(name => tokenizeAssistantSurfaceName(name))\n\t);\n\tconst publicationTokens = mergeAssistantHintValues(\n\t\t...(Array.isArray(signals?.publicationHints) ? signals?.publicationHints : [])\n\t\t\t.map(name => tokenizeAssistantSurfaceName(name))\n\t);\n\tconst routeTokens = mergeAssistantHintValues(\n\t\t...(Array.isArray(signals?.routeHints) ? signals?.routeHints : [])\n\t\t\t.map(route => tokenizeCollectionText(route))\n\t);\n\tconst boostedNames = new Set<string>(\n\t\t(Array.isArray(signals?.boostedCollections) ? signals?.boostedCollections : [])\n\t\t\t.map(value => normalizeOptionalString(value))\n\t\t\t.filter(Boolean)\n\t);\n\tconst boostedFamilies = new Set<string>(\n\t\tArray.from(boostedNames)\n\t\t\t.map(value => normalizeAssistantCollectionFamilyName(value))\n\t\t\t.filter(Boolean)\n\t);\n\tif (!requestedTokens.length || !collectionNames.length) {\n\t\treturn {\n\t\t\ttokens: requestedTokens,\n\t\t\trequestedKey,\n\t\t\thasDomain,\n\t\t\ttokenWeights: weights,\n\t\t\trankingMode: 'qualified',\n\t\t\tranked: []\n\t\t};\n\t}\n\tconst surfaceTokens = mergeAssistantHintValues(methodTokens, publicationTokens);\n\tconst ranked = collectionNames\n\t\t.map((name) => {\n\t\t\tconst base = scoreCollectionMatchDetailed(requestedTokens, name, weights);\n\t\t\tconst profile = buildAssistantCollectionProfile(name);\n\t\t\tconst profileTokenPool = new Set<string>([\n\t\t\t\t...profile.nameTokens,\n\t\t\t\t...profile.fieldTokens,\n\t\t\t\t...profile.lookupFamilyTokens,\n\t\t\t\t...profile.idBaseTokens\n\t\t\t]);\n\t\t\tconst profileTokenMatches = requestedTokens.filter(token => profileTokenPool.has(token));\n\t\t\tconst lookupMatches = requestedTokens.filter(token => profile.lookupFamilyTokens.includes(token));\n\t\t\tconst surfaceMatches = surfaceTokens.filter(token => profileTokenPool.has(token));\n\t\t\tconst routeMatches = routeTokens.filter(token => profile.nameTokens.includes(token) || profile.fieldTokens.includes(token));\n\t\t\tconst family = normalizeAssistantCollectionFamilyName(name);\n\t\t\tconst boosted = boostedNames.has(name) || (family ? boostedFamilies.has(family) : false);\n\t\t\tconst signalScore = (profileTokenMatches.length * 3)\n\t\t\t\t+ (lookupMatches.length * 4)\n\t\t\t\t+ (surfaceMatches.length * 2)\n\t\t\t\t+ (routeMatches.length * 3)\n\t\t\t\t+ (boosted ? 14 : 0);\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\tscore: base.score + signalScore,\n\t\t\t\tbaseScore: base.score,\n\t\t\t\tsignalScore,\n\t\t\t\ttokenMatches: base.tokenMatches,\n\t\t\t\tkeyMatch: base.keyMatch,\n\t\t\t\tcandidateTokens: base.candidateTokens,\n\t\t\t\ttokenScore: base.tokenScore,\n\t\t\t\ttokenWeights: base.tokenWeights,\n\t\t\t\tsignal: {\n\t\t\t\t\tprofileMatches: profileTokenMatches.slice(0, 8),\n\t\t\t\t\tlookupMatches: lookupMatches.slice(0, 6),\n\t\t\t\t\tsurfaceMatches: surfaceMatches.slice(0, 6),\n\t\t\t\t\trouteMatches: routeMatches.slice(0, 6),\n\t\t\t\t\tboosted\n\t\t\t\t}\n\t\t\t};\n\t\t})\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\tif (a.baseScore !== b.baseScore) {\n\t\t\t\treturn b.baseScore - a.baseScore;\n\t\t\t}\n\t\t\treturn a.name.localeCompare(b.name);\n\t\t})\n\t\t.slice(0, Math.max(max, 0));\n\treturn {\n\t\ttokens: requestedTokens,\n\t\trequestedKey,\n\t\thasDomain,\n\t\ttokenWeights: weights,\n\t\trankingMode: 'qualified',\n\t\tranked\n\t};\n}\n\nfunction mergeAssistantHintValues(...groups: Array<string[] | undefined | null>): string[] {\n\tconst result: string[] = [];\n\tconst seen = new Set<string>();\n\tgroups.forEach((group) => {\n\t\tif (!Array.isArray(group)) {\n\t\t\treturn;\n\t\t}\n\t\tgroup.forEach((value) => {\n\t\t\tconst normalized = normalizeOptionalString(value);\n\t\t\tif (!normalized || seen.has(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tseen.add(normalized);\n\t\t\tresult.push(normalized);\n\t\t});\n\t});\n\treturn result;\n}\n\nconst AI_ASSISTANT_HEURISTIC_ID_SCHEMA_HOURS_USER_TIME = 'schema_hours_user_time';\nconst AI_ASSISTANT_HEURISTIC_ID_APP_DATA_INTENT = 'app_data_intent';\n\nconst AI_ASSISTANT_DEFAULT_ENABLED_DETERMINISTIC_HEURISTICS = new Set<string>();\n\nlet aiAssistantAppHeuristicRegistryCache: { key: string; registry: AiAssistantAppHeuristicRegistry } | null = null;\nlet aiAssistantAppHeuristicRegistryWarningKey = '';\n\nfunction createAssistantEmptyHeuristicProfile(): AiAssistantAppHeuristicProfile {\n\treturn {\n\t\taliases: {},\n\t\taliasOptions: {},\n\t\tcollectionTermHints: [],\n\t\tdataIntents: [],\n\t\tenabledDeterministicHeuristics: new Set<string>(),\n\t\tdisabledDeterministicHeuristics: new Set<string>()\n\t};\n}\n\nfunction cloneAssistantHeuristicProfile(profile: AiAssistantAppHeuristicProfile): AiAssistantAppHeuristicProfile {\n\treturn {\n\t\tappId: normalizeOptionalString(profile?.appId),\n\t\taliases: { ...(profile?.aliases || {}) },\n\t\taliasOptions: Object.keys(profile?.aliasOptions || {}).reduce((acc, key) => {\n\t\t\tacc[key] = mergeAssistantHintValues((profile?.aliasOptions || {})[key] || []);\n\t\t\treturn acc;\n\t\t}, {} as Record<string, string[]>),\n\t\tcollectionTermHints: Array.isArray(profile?.collectionTermHints)\n\t\t\t? profile.collectionTermHints.map((entry) => ({\n\t\t\t\tterms: mergeAssistantHintValues(entry?.terms || []).map(term => term.toLowerCase()),\n\t\t\t\tcollections: mergeAssistantHintValues(entry?.collections || [])\n\t\t\t}))\n\t\t\t: [],\n\t\tdataIntents: Array.isArray(profile?.dataIntents)\n\t\t\t? profile.dataIntents.map((entry) => ({\n\t\t\t\tid: normalizeOptionalString(entry?.id),\n\t\t\t\tterms: mergeAssistantHintValues(entry?.terms || []).map(term => term.toLowerCase()),\n\t\t\t\texcludeTerms: mergeAssistantHintValues(entry?.excludeTerms || []).map(term => term.toLowerCase()),\n\t\t\t\tcollection: normalizeOptionalString(entry?.collection),\n\t\t\t\tpermissionView: normalizeOptionalString(entry?.permissionView) || undefined,\n\t\t\t\tdateField: normalizeOptionalString(entry?.dateField) || undefined,\n\t\t\t\tquantityField: normalizeOptionalString(entry?.quantityField) || undefined,\n\t\t\t\tmetricField: normalizeOptionalString(entry?.metricField) || undefined,\n\t\t\t\tfallbackCollections: mergeAssistantHintValues(entry?.fallbackCollections || []),\n\t\t\t\tprogress: mergeAssistantHintValues(entry?.progress || []),\n\t\t\t\tassumptions: mergeAssistantHintValues(entry?.assumptions || [])\n\t\t\t})).filter(entry => !!entry.id && !!entry.collection)\n\t\t\t: [],\n\t\tenabledDeterministicHeuristics: new Set<string>(Array.from(profile?.enabledDeterministicHeuristics || [])),\n\t\tdisabledDeterministicHeuristics: new Set<string>(Array.from(profile?.disabledDeterministicHeuristics || [])),\n\t\tdisplayDateFormat: profile?.displayDateFormat\n\t};\n}\n\nfunction mergeAssistantHeuristicProfiles(\n\tbase: AiAssistantAppHeuristicProfile,\n\toverride?: AiAssistantAppHeuristicProfile | null\n): AiAssistantAppHeuristicProfile {\n\tif (!override) {\n\t\treturn cloneAssistantHeuristicProfile(base);\n\t}\n\tconst merged = cloneAssistantHeuristicProfile(base);\n\tObject.keys(override.aliases || {}).forEach((key) => {\n\t\tconst normalizedKey = normalizeCollectionKey(key);\n\t\tconst normalizedValue = normalizeOptionalString((override.aliases || {})[key]);\n\t\tif (!normalizedKey || !normalizedValue) {\n\t\t\treturn;\n\t\t}\n\t\tmerged.aliases[normalizedKey] = normalizedValue;\n\t});\n\tObject.keys(override.aliasOptions || {}).forEach((key) => {\n\t\tconst normalizedKey = normalizeCollectionKey(key);\n\t\tconst values = mergeAssistantHintValues((override.aliasOptions || {})[key] || []);\n\t\tif (!normalizedKey || !values.length) {\n\t\t\treturn;\n\t\t}\n\t\tmerged.aliasOptions[normalizedKey] = values;\n\t});\n\tmerged.collectionTermHints = [\n\t\t...merged.collectionTermHints,\n\t\t...(Array.isArray(override.collectionTermHints) ? override.collectionTermHints : [])\n\t];\n\tmerged.dataIntents = [\n\t\t...merged.dataIntents,\n\t\t...(Array.isArray(override.dataIntents) ? override.dataIntents : [])\n\t];\n\tArray.from(override.enabledDeterministicHeuristics || []).forEach(value => merged.enabledDeterministicHeuristics.add(value));\n\tArray.from(override.disabledDeterministicHeuristics || []).forEach(value => merged.disabledDeterministicHeuristics.add(value));\n\tif (override.displayDateFormat) {\n\t\tmerged.displayDateFormat = override.displayDateFormat;\n\t}\n\treturn merged;\n}\n\nfunction normalizeAssistantDisplayDateFormat(value: any): AiAssistantDisplayDateFormat | undefined {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tconst compact = normalized.replace(/[^a-z0-9]/g, '');\n\tif (!compact) {\n\t\treturn undefined;\n\t}\n\tif (compact === 'iso' || compact === 'isodate' || compact === 'yearfirst' || compact === 'yyyymmdd') {\n\t\treturn 'iso';\n\t}\n\tif (compact === 'mdy' || compact === 'short' || compact === 'shortdate' || compact === 'mmddyyyy' || compact === 'datepipeshort') {\n\t\treturn 'mdy';\n\t}\n\treturn undefined;\n}\n\nfunction normalizeAssistantHeuristicStringList(value: any): string[] {\n\tif (Array.isArray(value)) {\n\t\treturn mergeAssistantHintValues(\n\t\t\tvalue.map(entry => normalizeOptionalString(entry).toLowerCase())\n\t\t);\n\t}\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn [];\n\t}\n\treturn mergeAssistantHintValues(\n\t\traw\n\t\t\t.split(',')\n\t\t\t.map(entry => normalizeOptionalString(entry).toLowerCase())\n\t);\n}\n\nfunction normalizeAssistantAliasMap(value: any): Record<string, string> {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn {};\n\t}\n\tconst map: Record<string, string> = {};\n\tObject.keys(value).forEach((rawKey) => {\n\t\tconst key = normalizeCollectionKey(rawKey);\n\t\tconst mapped = normalizeOptionalString((value as any)[rawKey]);\n\t\tif (!key || !mapped) {\n\t\t\treturn;\n\t\t}\n\t\tmap[key] = mapped;\n\t});\n\treturn map;\n}\n\nfunction normalizeAssistantAliasOptionsMap(value: any): Record<string, string[]> {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn {};\n\t}\n\tconst map: Record<string, string[]> = {};\n\tObject.keys(value).forEach((rawKey) => {\n\t\tconst key = normalizeCollectionKey(rawKey);\n\t\tconst values = normalizeAssistantHeuristicStringList((value as any)[rawKey]);\n\t\tif (!key || !values.length) {\n\t\t\treturn;\n\t\t}\n\t\tmap[key] = values;\n\t});\n\treturn map;\n}\n\nfunction normalizeAssistantCollectionTermHints(value: any): AiAssistantAppHeuristicTermHint[] {\n\tconst entries = Array.isArray(value) ? value : [];\n\tconst hints: AiAssistantAppHeuristicTermHint[] = [];\n\tentries.forEach((entry) => {\n\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\treturn;\n\t\t}\n\t\tconst terms = normalizeAssistantHeuristicStringList(\n\t\t\t(entry as any).terms || (entry as any).tokens || (entry as any).phrases || []\n\t\t).map(term => term.toLowerCase());\n\t\tconst collections = normalizeAssistantHeuristicStringList((entry as any).collections || (entry as any).targets || []);\n\t\tif (!terms.length || !collections.length) {\n\t\t\treturn;\n\t\t}\n\t\thints.push({ terms, collections });\n\t});\n\treturn hints;\n}\n\nfunction normalizeAssistantAppDataIntents(value: any): AiAssistantAppDataIntent[] {\n\tconst entries = Array.isArray(value) ? value : [];\n\tconst intents: AiAssistantAppDataIntent[] = [];\n\tentries.forEach((entry) => {\n\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\treturn;\n\t\t}\n\t\tconst id = normalizeOptionalString((entry as any).id || (entry as any).intent_id || (entry as any).intentId);\n\t\tconst collection = normalizeOptionalString((entry as any).collection || (entry as any).primary_collection || (entry as any).primaryCollection);\n\t\tconst terms = normalizeAssistantHeuristicStringList(\n\t\t\t(entry as any).terms || (entry as any).trigger_terms || (entry as any).triggerTerms || (entry as any).phrases || []\n\t\t).map(term => term.toLowerCase());\n\t\tif (!id || !collection || !terms.length) {\n\t\t\treturn;\n\t\t}\n\t\tintents.push({\n\t\t\tid,\n\t\t\tterms,\n\t\t\texcludeTerms: normalizeAssistantHeuristicStringList(\n\t\t\t\t(entry as any).exclude_terms || (entry as any).excludeTerms || []\n\t\t\t).map(term => term.toLowerCase()),\n\t\t\tcollection,\n\t\t\tpermissionView: normalizeOptionalString((entry as any).permission_view || (entry as any).permissionView) || undefined,\n\t\t\tdateField: normalizeOptionalString((entry as any).date_field || (entry as any).dateField) || undefined,\n\t\t\tquantityField: normalizeOptionalString((entry as any).quantity_field || (entry as any).quantityField || (entry as any).metric_field || (entry as any).metricField) || undefined,\n\t\t\tmetricField: normalizeOptionalString((entry as any).metric_field || (entry as any).metricField) || undefined,\n\t\t\tfallbackCollections: normalizeAssistantHeuristicStringList(\n\t\t\t\t(entry as any).fallback_collections || (entry as any).fallbackCollections || []\n\t\t\t),\n\t\t\tprogress: mergeAssistantHintValues(\n\t\t\t\tArray.isArray((entry as any).progress) ? (entry as any).progress : []\n\t\t\t),\n\t\t\tassumptions: mergeAssistantHintValues(\n\t\t\t\tArray.isArray((entry as any).assumptions) ? (entry as any).assumptions : []\n\t\t\t)\n\t\t});\n\t});\n\treturn intents;\n}\n\nfunction normalizeAssistantAppHeuristicProfile(value: any): AiAssistantAppHeuristicProfile {\n\tconst profile = createAssistantEmptyHeuristicProfile();\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn profile;\n\t}\n\tconst appId = normalizeOptionalString(\n\t\t(value as any).app_id\n\t\t|| (value as any).appId\n\t\t|| (value as any).id_app\n\t);\n\tif (appId) {\n\t\tprofile.appId = appId;\n\t}\n\tprofile.aliases = normalizeAssistantAliasMap(\n\t\t(value as any).collection_aliases\n\t\t|| (value as any).collectionAliases\n\t\t|| (value as any).aliases\n\t);\n\tprofile.aliasOptions = normalizeAssistantAliasOptionsMap(\n\t\t(value as any).collection_alias_options\n\t\t|| (value as any).collectionAliasOptions\n\t\t|| (value as any).alias_options\n\t\t|| (value as any).aliasOptions\n\t);\n\tprofile.collectionTermHints = normalizeAssistantCollectionTermHints(\n\t\t(value as any).collection_term_hints\n\t\t|| (value as any).collectionTermHints\n\t\t|| (value as any).term_hints\n\t\t|| (value as any).termHints\n\t);\n\tprofile.dataIntents = normalizeAssistantAppDataIntents(\n\t\t(value as any).data_intents\n\t\t|| (value as any).dataIntents\n\t\t|| (value as any).intents\n\t);\n\tprofile.displayDateFormat = normalizeAssistantDisplayDateFormat(\n\t\t(value as any).display_date_format\n\t\t|| (value as any).displayDateFormat\n\t\t|| (value as any).date_display_format\n\t\t|| (value as any).dateDisplayFormat\n\t\t|| (value as any).table_date_format\n\t\t|| (value as any).tableDateFormat\n\t);\n\tconst enabled = normalizeAssistantHeuristicStringList(\n\t\t(value as any).enabled_deterministic_heuristics\n\t\t|| (value as any).enabledDeterministicHeuristics\n\t\t|| (value as any).enabled_heuristics\n\t\t|| (value as any).enabledHeuristics\n\t);\n\tconst disabled = normalizeAssistantHeuristicStringList(\n\t\t(value as any).disabled_deterministic_heuristics\n\t\t|| (value as any).disabledDeterministicHeuristics\n\t\t|| (value as any).disabled_heuristics\n\t\t|| (value as any).disabledHeuristics\n\t);\n\tprofile.enabledDeterministicHeuristics = new Set<string>(enabled);\n\tprofile.disabledDeterministicHeuristics = new Set<string>(disabled);\n\treturn profile;\n}\n\nfunction normalizeAssistantAppHeuristicRegistry(value: any): AiAssistantAppHeuristicRegistry | null {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn null;\n\t}\n\tconst registry: AiAssistantAppHeuristicRegistry = {\n\t\tdefaultProfile: createAssistantEmptyHeuristicProfile(),\n\t\tappProfiles: new Map<string, AiAssistantAppHeuristicProfile>()\n\t};\n\tconst appsRaw = (value as any).apps;\n\tconst defaultsRaw = (value as any).defaults || (value as any).default;\n\tif (defaultsRaw && typeof defaultsRaw === 'object' && !Array.isArray(defaultsRaw)) {\n\t\tregistry.defaultProfile = normalizeAssistantAppHeuristicProfile(defaultsRaw);\n\t}\n\tif (appsRaw && typeof appsRaw === 'object' && !Array.isArray(appsRaw)) {\n\t\tObject.keys(appsRaw).forEach((rawAppKey) => {\n\t\t\tconst appKey = normalizeCollectionKey(rawAppKey);\n\t\t\tif (!appKey) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst profile = normalizeAssistantAppHeuristicProfile((appsRaw as any)[rawAppKey]);\n\t\t\tregistry.appProfiles.set(appKey, profile);\n\t\t});\n\t\treturn registry;\n\t}\n\tconst standaloneProfile = normalizeAssistantAppHeuristicProfile(value);\n\tif (Object.keys(standaloneProfile.aliases).length\n\t\t|| Object.keys(standaloneProfile.aliasOptions).length\n\t\t|| standaloneProfile.collectionTermHints.length\n\t\t|| standaloneProfile.dataIntents.length\n\t\t|| standaloneProfile.enabledDeterministicHeuristics.size\n\t\t|| standaloneProfile.disabledDeterministicHeuristics.size\n\t\t|| normalizeOptionalString(standaloneProfile.appId)) {\n\t\tconst explicitKey = normalizeCollectionKey(standaloneProfile.appId || '');\n\t\tif (explicitKey) {\n\t\t\tregistry.appProfiles.set(explicitKey, standaloneProfile);\n\t\t}\n\t\telse {\n\t\t\tregistry.defaultProfile = standaloneProfile;\n\t\t}\n\t\treturn registry;\n\t}\n\treturn null;\n}\n\nfunction mergeAssistantAppHeuristicRegistries(\n\tbase: AiAssistantAppHeuristicRegistry,\n\toverride: AiAssistantAppHeuristicRegistry\n): AiAssistantAppHeuristicRegistry {\n\tconst merged: AiAssistantAppHeuristicRegistry = {\n\t\tdefaultProfile: mergeAssistantHeuristicProfiles(base.defaultProfile, override.defaultProfile),\n\t\tappProfiles: new Map<string, AiAssistantAppHeuristicProfile>()\n\t};\n\tconst appKeys = new Set<string>([\n\t\t...Array.from(base.appProfiles.keys()),\n\t\t...Array.from(override.appProfiles.keys())\n\t]);\n\tappKeys.forEach((key) => {\n\t\tconst baseProfile = base.appProfiles.get(key);\n\t\tconst overrideProfile = override.appProfiles.get(key);\n\t\tif (baseProfile || overrideProfile) {\n\t\t\tmerged.appProfiles.set(\n\t\t\t\tkey,\n\t\t\t\tmergeAssistantHeuristicProfiles(\n\t\t\t\t\tbaseProfile || createAssistantEmptyHeuristicProfile(),\n\t\t\t\t\toverrideProfile || null\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t});\n\treturn merged;\n}\n\nfunction parseAssistantAppHeuristicRawValue(raw: any): any {\n\tif (typeof raw === 'string') {\n\t\tconst trimmed = raw.trim();\n\t\tif (!trimmed) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn JSON.parse(trimmed);\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n\tif (raw && typeof raw === 'object') {\n\t\treturn raw;\n\t}\n\treturn null;\n}\n\nfunction resolveAssistantConfiguredAppId(): string {\n\tconst serverConfig = ResolveIOServer.getServerConfig?.() || {};\n\tconst configured = normalizeOptionalString(\n\t\tserverConfig['AI_ASSISTANT_APP_ID']\n\t\t|| process.env.AI_ASSISTANT_APP_ID\n\t\t|| serverConfig['DATABASE']\n\t\t|| process.env.DATABASE\n\t\t|| serverConfig['CLIENT_NAME']\n\t\t|| process.env.CLIENT_NAME\n\t);\n\treturn normalizeCollectionKey(configured);\n}\n\nfunction buildAssistantAppHeuristicRegistryCacheKey(): string {\n\tconst serverConfig = ResolveIOServer.getServerConfig?.() || {};\n\tconst inlineRaw = serverConfig['AI_ASSISTANT_APP_HEURISTICS'] || process.env.AI_ASSISTANT_APP_HEURISTICS;\n\tconst fileRaw = serverConfig['AI_ASSISTANT_APP_HEURISTICS_FILE'] || process.env.AI_ASSISTANT_APP_HEURISTICS_FILE;\n\treturn JSON.stringify({\n\t\tinline: typeof inlineRaw === 'string' ? inlineRaw : (inlineRaw ? Object.keys(inlineRaw).sort() : ''),\n\t\tfile: normalizeOptionalString(fileRaw),\n\t\tappId: resolveAssistantConfiguredAppId()\n\t});\n}\n\nfunction resolveAssistantAppHeuristicFileCandidates(heuristicFile: string): string[] {\n\tconst normalizedFile = normalizeOptionalString(heuristicFile);\n\tif (!normalizedFile) {\n\t\treturn [];\n\t}\n\tif (path.isAbsolute(normalizedFile)) {\n\t\treturn [normalizedFile];\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig?.() || {};\n\tconst baseDirs = mergeAssistantHintValues(\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_APP_HEURISTICS_BASE_DIR'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_APP_HEURISTICS_BASE_DIR)\n\t\t],\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_SERVER_DIR'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_SERVER_DIR)\n\t\t],\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_CORPUS_SERVER_DIR'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_CORPUS_SERVER_DIR)\n\t\t],\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_PARITY_SERVER_DIR'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_PARITY_SERVER_DIR)\n\t\t],\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_EVAL_SERVER_DIR'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_EVAL_SERVER_DIR)\n\t\t],\n\t\t[\n\t\t\tnormalizeOptionalString(serverConfig['AI_ASSISTANT_WORKSPACE_ROOT'])\n\t\t\t\t|| normalizeOptionalString(process.env.AI_ASSISTANT_WORKSPACE_ROOT)\n\t\t],\n\t\t[process.cwd()]\n\t);\n\tconst candidates = baseDirs.map(baseDir => path.resolve(baseDir, normalizedFile));\n\tconst unique = new Set<string>();\n\tconst ordered: string[] = [];\n\tcandidates.forEach((candidate) => {\n\t\tif (!candidate || unique.has(candidate)) {\n\t\t\treturn;\n\t\t}\n\t\tunique.add(candidate);\n\t\tordered.push(candidate);\n\t});\n\treturn ordered;\n}\n\nfunction resolveAssistantAppHeuristicRegistry(): AiAssistantAppHeuristicRegistry {\n\tconst cacheKey = buildAssistantAppHeuristicRegistryCacheKey();\n\tif (aiAssistantAppHeuristicRegistryCache?.key === cacheKey) {\n\t\treturn aiAssistantAppHeuristicRegistryCache.registry;\n\t}\n\tconst baseRegistry = normalizeAssistantAppHeuristicRegistry(AI_ASSISTANT_CORE_HEURISTICS) || {\n\t\tdefaultProfile: createAssistantEmptyHeuristicProfile(),\n\t\tappProfiles: new Map<string, AiAssistantAppHeuristicProfile>()\n\t};\n\tconst serverConfig = ResolveIOServer.getServerConfig?.() || {};\n\tconst inlineRaw = serverConfig['AI_ASSISTANT_APP_HEURISTICS'] || process.env.AI_ASSISTANT_APP_HEURISTICS;\n\tconst heuristicFile = normalizeOptionalString(\n\t\tserverConfig['AI_ASSISTANT_APP_HEURISTICS_FILE']\n\t\t|| process.env.AI_ASSISTANT_APP_HEURISTICS_FILE\n\t);\n\tconst parsedRegistries: AiAssistantAppHeuristicRegistry[] = [];\n\tif (heuristicFile) {\n\t\ttry {\n\t\t\tconst candidates = resolveAssistantAppHeuristicFileCandidates(heuristicFile);\n\t\t\tconst absolutePath = candidates.find(candidate => existsSync(candidate)) || candidates[0];\n\t\t\tif (!absolutePath) {\n\t\t\t\tthrow new Error(`No path candidates for ${heuristicFile}`);\n\t\t\t}\n\t\t\tconst filePayload = JSON.parse(readFileSync(absolutePath, 'utf8'));\n\t\t\tconst parsedFromFile = normalizeAssistantAppHeuristicRegistry(filePayload);\n\t\t\tif (parsedFromFile) {\n\t\t\t\tparsedRegistries.push(parsedFromFile);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (aiAssistantAppHeuristicRegistryWarningKey !== `${cacheKey}:file`) {\n\t\t\t\taiAssistantAppHeuristicRegistryWarningKey = `${cacheKey}:file`;\n\t\t\t\tconsole.error('AI assistant app heuristics file load failed:', heuristicFile, (error as any)?.message || error);\n\t\t\t}\n\t\t}\n\t}\n\tconst parsedInline = normalizeAssistantAppHeuristicRegistry(parseAssistantAppHeuristicRawValue(inlineRaw));\n\tif (parsedInline) {\n\t\tparsedRegistries.push(parsedInline);\n\t}\n\tconst merged = parsedRegistries.reduce(\n\t\t(acc, next) => mergeAssistantAppHeuristicRegistries(acc, next),\n\t\tbaseRegistry\n\t);\n\taiAssistantAppHeuristicRegistryCache = {\n\t\tkey: cacheKey,\n\t\tregistry: merged\n\t};\n\treturn merged;\n}\n\nfunction resolveAssistantAppHeuristicProfile(appId?: string): AiAssistantAppHeuristicProfile {\n\tconst registry = resolveAssistantAppHeuristicRegistry();\n\tconst requestedApp = normalizeCollectionKey(normalizeOptionalString(appId) || resolveAssistantConfiguredAppId());\n\tconst base = cloneAssistantHeuristicProfile(registry.defaultProfile);\n\tif (!requestedApp) {\n\t\treturn base;\n\t}\n\tconst profile = registry.appProfiles.get(requestedApp);\n\treturn profile ? mergeAssistantHeuristicProfiles(base, profile) : base;\n}\n\nfunction resolveAssistantDeterministicHeuristicEnabled(heuristicId: string, appId?: string): boolean {\n\tconst id = normalizeOptionalString(heuristicId).toLowerCase();\n\tif (!id) {\n\t\treturn false;\n\t}\n\tconst profile = resolveAssistantAppHeuristicProfile(appId);\n\tconst enabled = new Set<string>(Array.from(AI_ASSISTANT_DEFAULT_ENABLED_DETERMINISTIC_HEURISTICS));\n\tArray.from(profile.enabledDeterministicHeuristics || []).forEach(value => enabled.add(value));\n\tArray.from(profile.disabledDeterministicHeuristics || []).forEach(value => enabled.delete(value));\n\treturn enabled.has(id);\n}\n\nfunction containsAssistantHeuristicTerm(messageText: string, term: string): boolean {\n\tconst normalizedTerm = normalizeOptionalString(term).toLowerCase();\n\tif (!normalizedTerm) {\n\t\treturn false;\n\t}\n\tconst escaped = escapeRegexValue(normalizedTerm).replace(/\\s+/g, '\\\\s+');\n\ttry {\n\t\tconst pattern = new RegExp(`\\\\b${escaped}\\\\b`, 'i');\n\t\treturn pattern.test(messageText);\n\t}\n\tcatch {\n\t\treturn messageText.includes(normalizedTerm);\n\t}\n}\n\nexport function resolveAssistantAppCollectionHintCandidates(message: string, appId?: string): string[] {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst profile = resolveAssistantAppHeuristicProfile(appId);\n\tconst hints: string[] = [];\n\tprofile.collectionTermHints.forEach((entry) => {\n\t\tconst terms = mergeAssistantHintValues(entry?.terms || []).map(term => term.toLowerCase());\n\t\tconst matches = terms.some(term => containsAssistantHeuristicTerm(text, term));\n\t\tif (!matches) {\n\t\t\treturn;\n\t\t}\n\t\tmergeAssistantHintValues(entry?.collections || []).forEach((collection) => {\n\t\t\tif (!hints.includes(collection)) {\n\t\t\t\thints.push(collection);\n\t\t\t}\n\t\t});\n\t});\n\treturn hints;\n}\n\nexport function isAssistantDeterministicHeuristicEnabledForApp(heuristicId: string, appId?: string): boolean {\n\treturn resolveAssistantDeterministicHeuristicEnabled(heuristicId, appId);\n}\n\nfunction hasAssistantDeliveryAliasTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(deliver(?:y|ies)|dispatch|driver|bols?|bills?\\s+of\\s+lading|pso(?:s)?|production\\s+sales\\s+orders?|sales\\s+orders?|truck[\\s_-]+treat(?:ing)?|treater[\\s_-]+truck|batch[\\s_-]+(?:treat(?:ing)?|jobs?)|specialty[\\s_-]+jobs?|continuous|ats|automated[\\s_-]+treatment[\\s_-]+system|isotanks?|chemical[\\s_-]+trailers?|vac[\\s_-]+trucks?|assets?|treatment[\\s_-]+plans?|treatments?)\\b/i.test(normalized);\n}\n\nfunction hasAssistantDeliveryAliasPathTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(deliver(?:y|ies)?|route|dispatch|driver|bols?|bills?[-_/ ]?of[-_/ ]?lading|pso(?:s)?|production[-_/ ]?sales[-_/ ]?orders?|sales[-_/ ]?orders?|truck[-_/ ]?treat(?:ing)?|treater[-_/ ]?truck|batch[-_/ ]?(?:treat(?:ing)?|jobs?)|specialty[-_/ ]?jobs?|continuous|ats|automated[-_/ ]?treatment[-_/ ]?system|isotanks?|chemical[-_/ ]?trailers?|vac[-_/ ]?trucks?|assets?|treatment[-_/ ]?plans?|treatments?)\\b/i.test(normalized);\n}\n\nfunction hasAssistantPurchaseOrderAliasTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(po(?:s)?|purchase[\\s_-]+orders?)\\b/i.test(normalized);\n}\n\nfunction hasAssistantPurchaseOrderAliasPathTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(po(?:s)?|purchase[-_/ ]?orders?)\\b/i.test(normalized);\n}\n\nfunction hasAssistantChemicalCatalogAliasTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\b(chemicals?|products?|items?)\\b/i.test(normalized);\n}\n\nfunction hasAssistantWorkOrderAliasTerms(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn /\\bwork[\\s_-]*orders?\\b/i.test(normalized);\n}\n\nfunction resolveCollectionHintsFromRoute(route: string | undefined, collectionNames: string[]): string[] {\n\tconst normalizedRoute = normalizeOptionalString(route);\n\tif (!normalizedRoute || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst parts = normalizedRoute.toLowerCase().split(/[/?#]+/g).filter(Boolean);\n\tconst hints: string[] = [];\n\tparts.forEach((part) => {\n\t\tconst cleaned = part.replace(/[^a-z0-9_-]/g, '');\n\t\tif (!cleaned) {\n\t\t\treturn;\n\t\t}\n\t\tconst base = cleaned.replace(/^-+|-+$/g, '');\n\t\tif (!base) {\n\t\t\treturn;\n\t\t}\n\t\tif (collectionNames.includes(base)) {\n\t\t\thints.push(base);\n\t\t}\n\t\tif (!base.endsWith('s') && collectionNames.includes(`${base}s`)) {\n\t\t\thints.push(`${base}s`);\n\t\t}\n\t\tif (collectionNames.includes(`report-${base}`)) {\n\t\t\thints.push(`report-${base}`);\n\t\t}\n\t\tif (!base.endsWith('s') && collectionNames.includes(`report-${base}s`)) {\n\t\t\thints.push(`report-${base}s`);\n\t\t}\n\t});\n\treturn mergeAssistantHintValues(hints);\n}\n\nfunction resolveCollectionHintsFromRoutes(routes: string[], collectionNames: string[]): string[] {\n\tif (!Array.isArray(routes) || !routes.length || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\treturn mergeAssistantHintValues(\n\t\t...routes.map(route => resolveCollectionHintsFromRoute(route, collectionNames))\n\t);\n}\n\nfunction resolveAssistantDefaultCollectionHints(message: string, appId?: string): string[] {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn [];\n\t}\n\treturn resolveAssistantAppCollectionHintCandidates(text, appId);\n}\n\nfunction buildCollectionRankingDebugFromTokens(tokens: string[], collectionNames: string[], max = 8): Record<string, any> {\n\tconst requestedKey = normalizeCollectionKey(tokens.join('-'));\n\tconst { weights, hasDomain } = computeCollectionTokenWeights(tokens);\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn {\n\t\t\ttokens,\n\t\t\trequestedKey,\n\t\t\thasDomain,\n\t\t\ttokenWeights: weights,\n\t\t\tranked: []\n\t\t};\n\t}\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, ...scoreCollectionMatchDetailed(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0));\n\treturn {\n\t\ttokens,\n\t\trequestedKey,\n\t\thasDomain,\n\t\ttokenWeights: weights,\n\t\tranked\n\t};\n}\n\nfunction buildCollectionSelectionDetail(tokens: string[], collection: string): Record<string, any> | null {\n\tconst trimmed = normalizeOptionalString(collection);\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\tconst detail = scoreCollectionMatchDetailed(tokens, trimmed, weights);\n\treturn {\n\t\tcollection: trimmed,\n\t\tscore: detail.score,\n\t\ttokenMatches: detail.tokenMatches,\n\t\tkeyMatch: detail.keyMatch,\n\t\tcandidateTokens: detail.candidateTokens,\n\t\ttokenScore: detail.tokenScore,\n\t\ttokenWeights: detail.tokenWeights\n\t};\n}\n\nfunction isVersionCollectionName(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized.endsWith('.versions') || normalized.endsWith('-versions') || normalized.includes('.versions.');\n}\n\nfunction stripVersionSuffix(value: string): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.endsWith('.versions')) {\n\t\treturn normalized.slice(0, -'.versions'.length);\n\t}\n\tif (normalized.endsWith('-versions')) {\n\t\treturn normalized.slice(0, -'-versions'.length);\n\t}\n\treturn normalized;\n}\n\nfunction shouldAllowVersionCollections(message: string): boolean {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (!normalized.includes('bug')) {\n\t\treturn false;\n\t}\n\treturn /(last\\s*(5|five)\\s+updates|version|history|audit)/i.test(normalized);\n}\n\nfunction resolveReportCollectionName(permissionView: string, collectionNames: string[], currentCollection: string): string | null {\n\tconst normalizedView = normalizeOptionalString(permissionView).toLowerCase();\n\tif (!normalizedView.startsWith('/report-builder')) {\n\t\treturn null;\n\t}\n\tconst current = stripVersionSuffix(normalizeOptionalString(currentCollection));\n\tconst reportCollection = current.startsWith('report-') ? current : `report-${current}`;\n\tif (collectionNames.includes(reportCollection)) {\n\t\treturn reportCollection;\n\t}\n\treturn null;\n}\n\nasync function resolveBaseCollectionFromReport(db: any, dbName: string, collection: string): Promise<string | null> {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (!normalized.startsWith('report-')) {\n\t\treturn null;\n\t}\n\tconst base = stripVersionSuffix(normalized.slice('report-'.length));\n\tif (!base) {\n\t\treturn null;\n\t}\n\tconst names = await listAssistantCollections(db, dbName);\n\treturn names.includes(base) ? base : null;\n}\n\nfunction resolveCollectionOverrideWithContext(params: {\n\tmessage: string;\n\tcollectionRanking: Record<string, any> | null;\n\trequestedCollection: string;\n\tpermissionView?: string;\n\tcollectionNames: string[];\n\tcollectionHints?: string[];\n}): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\tconst requested = normalizeOptionalString(params.requestedCollection);\n\tconst allowVersions = shouldAllowVersionCollections(params.message);\n\tconst collectionNames = Array.isArray(params.collectionNames) ? params.collectionNames : [];\n\tconst collectionHints = Array.isArray(params.collectionHints)\n\t\t? params.collectionHints.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tconst permissionView = normalizeOptionalString(params.permissionView);\n\tconst routeHintCollections = permissionView\n\t\t? resolveCollectionHintsFromRoute(permissionView, collectionNames)\n\t\t: [];\n\tif (permissionView) {\n\t\tconst reportPreferred = resolveReportCollectionName(permissionView, collectionNames, requested);\n\t\tif (reportPreferred && reportPreferred !== requested) {\n\t\t\treturn {\n\t\t\t\tfrom: requested,\n\t\t\t\tto: reportPreferred,\n\t\t\t\tfromScore: 0,\n\t\t\t\ttoScore: 0,\n\t\t\t\treason: 'report builder route preference'\n\t\t\t};\n\t\t}\n\t\tconst routePreferred = routeHintCollections.find(collection => {\n\t\t\treturn collectionNames.includes(collection) && !isVersionCollectionName(collection);\n\t\t});\n\t\tif (\n\t\t\troutePreferred\n\t\t\t&& requested\n\t\t\t&& !isAssistantCollectionInHintFamilies(requested, [routePreferred])\n\t\t) {\n\t\t\tconst routePreferredName = normalizeAssistantCollectionOverrideName(routePreferred);\n\t\t\tconst requestedIsWorkOrder = isAssistantWorkOrderCollectionOverrideCandidate(requested);\n\t\t\tif (shouldPreserveAssistantJobDomainCollectionForRoute(params.message, permissionView, routePreferredName, requested)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!(routePreferredName === 'orders' && requestedIsWorkOrder && hasAssistantWorkOrderAliasTerms(params.message))) {\n\t\t\t\treturn {\n\t\t\t\t\tfrom: requested,\n\t\t\t\t\tto: routePreferred,\n\t\t\t\t\tfromScore: 0,\n\t\t\t\t\ttoScore: 0,\n\t\t\t\t\treason: 'permission route collection match'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tif (!allowVersions && isVersionCollectionName(requested)) {\n\t\tconst base = stripVersionSuffix(requested);\n\t\tif (base && collectionNames.includes(base)) {\n\t\t\treturn {\n\t\t\t\tfrom: requested,\n\t\t\t\tto: base,\n\t\t\t\tfromScore: 0,\n\t\t\t\ttoScore: 0,\n\t\t\t\treason: 'avoid versions collection'\n\t\t\t};\n\t\t}\n\t}\n\tconst primaryCollectionHint = collectionHints[0] || '';\n\tconst requestedMatchesPermissionRoute = !!(\n\t\trequested\n\t\t&& permissionView\n\t\t&& (\n\t\t\tisAssistantCollectionInHintFamilies(requested, routeHintCollections)\n\t\t\t|| doesAssistantPermissionRouteMatchCollection(permissionView, requested)\n\t\t)\n\t);\n\tconst primaryHintMatchesPermissionRoute = !!(\n\t\tprimaryCollectionHint\n\t\t&& permissionView\n\t\t&& (\n\t\t\tisAssistantCollectionInHintFamilies(primaryCollectionHint, routeHintCollections)\n\t\t\t|| doesAssistantPermissionRouteMatchCollection(permissionView, primaryCollectionHint)\n\t\t)\n\t);\n\tif (requestedMatchesPermissionRoute && !primaryHintMatchesPermissionRoute) {\n\t\treturn null;\n\t}\n\tconst requestedHintIndex = requested\n\t\t? collectionHints.findIndex(collection => isAssistantCollectionInHintFamilies(requested, [collection]))\n\t\t: -1;\n\tif (\n\t\trequestedHintIndex > 0\n\t\t&& primaryCollectionHint\n\t\t&& !primaryHintMatchesPermissionRoute\n\t) {\n\t\tconst requestedScore = resolveAssistantCollectionScore(params.collectionRanking, requested);\n\t\tconst primaryScore = resolveAssistantCollectionScore(params.collectionRanking, primaryCollectionHint);\n\t\tconst scoreGap = primaryScore - requestedScore;\n\t\tif (\n\t\t\trequestedScore >= AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE\n\t\t\t&& primaryScore >= AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE\n\t\t\t&& scoreGap <= AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t}\n\tif (\n\t\tprimaryCollectionHint\n\t\t&& requested\n\t\t&& !isAssistantCollectionInHintFamilies(requested, [primaryCollectionHint])\n\t\t&& (\n\t\t\tisAssistantCollectionInHintFamilies(requested, collectionHints.slice(1))\n\t\t\t|| routeHintCollections.length > 0\n\t\t)\n\t) {\n\t\treturn {\n\t\t\tfrom: requested,\n\t\t\tto: primaryCollectionHint,\n\t\t\tfromScore: 0,\n\t\t\ttoScore: 0,\n\t\t\treason: 'ordered collection hint preference'\n\t\t};\n\t}\n\tif (\n\t\tprimaryCollectionHint\n\t\t&& requested\n\t\t&& isAssistantCollectionInHintFamilies(requested, [primaryCollectionHint])\n\t) {\n\t\treturn null;\n\t}\n\tconst rankingOverride = resolveAssistantCollectionOverride(params.collectionRanking, requested);\n\tif (rankingOverride) {\n\t\tconst requestedMatchesRouteHints = isAssistantCollectionInHintFamilies(requested, routeHintCollections);\n\t\tconst overrideMatchesRouteHints = isAssistantCollectionInHintFamilies(rankingOverride.to, routeHintCollections);\n\t\tif (requestedMatchesRouteHints && !overrideMatchesRouteHints) {\n\t\t\treturn null;\n\t\t}\n\t\tconst rankingOverrideTarget = normalizeAssistantCollectionOverrideName(rankingOverride.to);\n\t\tconst requestedIsWorkOrder = isAssistantWorkOrderCollectionOverrideCandidate(requested);\n\t\tif (rankingOverrideTarget === 'orders' && requestedIsWorkOrder && hasAssistantWorkOrderAliasTerms(params.message)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!allowVersions && isVersionCollectionName(rankingOverride.to)) {\n\t\t\tconst base = stripVersionSuffix(rankingOverride.to);\n\t\t\tif (base && collectionNames.includes(base)) {\n\t\t\t\treturn {\n\t\t\t\t\tfrom: requested,\n\t\t\t\t\tto: base,\n\t\t\t\t\tfromScore: rankingOverride.fromScore,\n\t\t\t\t\ttoScore: rankingOverride.toScore,\n\t\t\t\t\treason: 'avoid versions collection'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn rankingOverride;\n\t}\n\treturn null;\n}\n\nexport function resolveCollectionOverrideWithContextForTesting(params: {\n\tmessage: string;\n\tcollectionRanking: Record<string, any> | null;\n\trequestedCollection: string;\n\tpermissionView?: string;\n\tcollectionNames: string[];\n\tcollectionHints?: string[];\n}): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\treturn resolveCollectionOverrideWithContext(params);\n}\n\nfunction shouldPreserveAssistantJobDomainCollectionForRoute(\n\tmessage: string,\n\tpermissionView: string,\n\troutePreferredName: string,\n\trequestedCollection: string\n): boolean {\n\tconst route = normalizeOptionalString(permissionView).toLowerCase();\n\tconst requested = normalizeAssistantCollectionOverrideName(requestedCollection);\n\tif (!route || routePreferredName !== 'jobs') {\n\t\treturn false;\n\t}\n\tif (!/\\/(?:customer-info\\/jobs|job\\/list|jobs?)(?:\\/|$)/.test(route)) {\n\t\treturn false;\n\t}\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text || !/\\b(job|jobs|work\\s*orders?|wos?)\\b/.test(text)) {\n\t\treturn false;\n\t}\n\tif (requested === 'work-order-dynamics') {\n\t\treturn /\\b(chemical|chemicals|sent|shipped|shipment|delivered|work\\s*orders?|wos?)\\b/.test(text);\n\t}\n\tif (requested === 'invoices') {\n\t\treturn /\\b(invoice|invoices|billed|billing|revenue|charged|dollars?)\\b/.test(text);\n\t}\n\treturn requested === 'jobs';\n}\n\nfunction isAssistantWorkOrderCollectionOverrideCandidate(value: string): boolean {\n\tconst normalized = normalizeAssistantCollectionOverrideName(value);\n\treturn normalized === 'work-order-dynamics'\n\t\t|| normalized === 'work-orders'\n\t\t|| normalized === 'maintenance-orders'\n\t\t|| normalized === 'repair-orders';\n}\n\nfunction pickPreferredCollectionCandidate(\n\tranked: Array<{ name: string; score: number }>\n): { name: string; score: number } | null {\n\tif (!Array.isArray(ranked) || !ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = ranked[0];\n\tif (!top) {\n\t\treturn null;\n\t}\n\tif (!isVersionCollectionName(top.name)) {\n\t\treturn top;\n\t}\n\tconst nonVersion = ranked.find(entry => entry && !isVersionCollectionName(entry.name));\n\tif (nonVersion && nonVersion.score >= top.score - 5) {\n\t\treturn nonVersion;\n\t}\n\treturn top;\n}\n\nfunction normalizeAssistantCollectionOverrideName(value: string): string {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst withoutReportPrefix = normalized.startsWith('report-')\n\t\t? normalized.slice('report-'.length)\n\t\t: normalized;\n\treturn stripVersionSuffix(withoutReportPrefix);\n}\n\nfunction isAssistantGenericCollectionName(value: string): boolean {\n\tconst normalized = normalizeAssistantCollectionOverrideName(value);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn !normalized.includes('-') && !normalized.includes('_');\n}\n\nfunction isAssistantCollectionRefinementOf(currentCollection: string, genericCollection: string): boolean {\n\tconst current = normalizeAssistantCollectionOverrideName(currentCollection);\n\tconst generic = normalizeAssistantCollectionOverrideName(genericCollection);\n\tif (!current || !generic || current === generic) {\n\t\treturn false;\n\t}\n\treturn current.startsWith(`${generic}-`)\n\t\t|| current.endsWith(`-${generic}`)\n\t\t|| current.includes(`-${generic}-`)\n\t\t|| current.startsWith(`${generic}_`)\n\t\t|| current.endsWith(`_${generic}`)\n\t\t|| current.includes(`_${generic}_`);\n}\n\nfunction resolveAssistantCollectionScore(\n\tcollectionRanking: Record<string, any> | null,\n\tcollectionName: string\n): number {\n\tconst ranked = Array.isArray(collectionRanking?.ranked) ? collectionRanking?.ranked : [];\n\tconst rankedScore = ranked.find(entry => entry?.name === collectionName)?.score;\n\tif (typeof rankedScore === 'number') {\n\t\treturn rankedScore;\n\t}\n\tconst tokens = Array.isArray(collectionRanking?.tokens)\n\t\t? collectionRanking.tokens.filter((token: unknown) => typeof token === 'string' && !!token)\n\t\t: [];\n\tif (!tokens.length) {\n\t\treturn 0;\n\t}\n\tconst rankingWeights = collectionRanking?.tokenWeights;\n\tconst hasRankingWeights = rankingWeights && typeof rankingWeights === 'object';\n\tconst weights = hasRankingWeights\n\t\t? rankingWeights as Record<string, number>\n\t\t: computeCollectionTokenWeights(tokens).weights;\n\treturn scoreCollectionMatch(tokens, collectionName, weights);\n}\n\nexport function resolveAssistantCollectionOverride(\n\tcollectionRanking: Record<string, any> | null,\n\tcurrentCollection: string\n): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\tconst ranked = Array.isArray(collectionRanking?.ranked) ? collectionRanking?.ranked : [];\n\tif (!ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = pickPreferredCollectionCandidate(ranked);\n\tif (!top || top.score < AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE) {\n\t\treturn null;\n\t}\n\tconst current = normalizeOptionalString(currentCollection);\n\tif (!current) {\n\t\treturn {\n\t\t\tfrom: '',\n\t\t\tto: top.name,\n\t\t\tfromScore: 0,\n\t\t\ttoScore: top.score,\n\t\t\treason: 'no collection specified'\n\t\t};\n\t}\n\tif (current === top.name) {\n\t\treturn null;\n\t}\n\tconst currentScore = resolveAssistantCollectionScore(collectionRanking, current);\n\tif (\n\t\tcurrentScore >= AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE\n\t\t&& isAssistantGenericCollectionName(top.name)\n\t\t&& isAssistantCollectionRefinementOf(current, top.name)\n\t) {\n\t\treturn null;\n\t}\n\tif (\n\t\tcurrentScore >= AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE\n\t\t&& normalizeAssistantCollectionOverrideName(top.name) === 'orders'\n\t\t&& isAssistantWorkOrderCollectionOverrideCandidate(current)\n\t) {\n\t\treturn null;\n\t}\n\tconst scoreGap = top.score - currentScore;\n\tconst currentIsVersion = isVersionCollectionName(current);\n\tconst topIsVersion = isVersionCollectionName(top.name);\n\tif (scoreGap <= AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP && !(currentIsVersion && !topIsVersion)) {\n\t\treturn null;\n\t}\n\tconst reason = currentIsVersion && !topIsVersion\n\t\t? 'preferred non-version collection'\n\t\t: `higher score (${top.score} vs ${currentScore})`;\n\treturn {\n\t\tfrom: current,\n\t\tto: top.name,\n\t\tfromScore: currentScore,\n\t\ttoScore: top.score,\n\t\treason\n\t};\n}\n\nfunction findBestCollectionMatch(requested: string, collectionNames: string[]): { name: string; score: number } | null {\n\tconst requestedTokens = tokenizeCollectionText(requested);\n\tif (!requestedTokens.length || !collectionNames.length) {\n\t\treturn null;\n\t}\n\tlet best: { name: string; score: number } | null = null;\n\tcollectionNames.forEach((name) => {\n\t\tconst score = scoreCollectionMatch(requestedTokens, name);\n\t\tif (!best || score > best.score) {\n\t\t\tbest = { name, score };\n\t\t}\n\t});\n\treturn best;\n}\n\nasync function resolveAssistantCollectionName(\n\tdb: any,\n\tdbName: string,\n\trequested: string,\n\tappId?: string\n): Promise<{ name: string; matched: boolean; candidates: string[]; score: number }> {\n\tconst trimmed = normalizeOptionalString(requested);\n\tif (!trimmed) {\n\t\treturn { name: '', matched: false, candidates: [], score: 0 };\n\t}\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\tif (collectionNames.includes(trimmed)) {\n\t\treturn { name: trimmed, matched: true, candidates: [], score: 100 };\n\t}\n\tconst aliasCandidates = resolveAssistantBridgeCollectionAliasCandidates(trimmed, appId);\n\tconst matchedAlias = aliasCandidates.find(candidate => collectionNames.includes(candidate));\n\tif (matchedAlias) {\n\t\treturn { name: matchedAlias, matched: true, candidates: [], score: 95 };\n\t}\n\tconst best = findBestCollectionMatch(trimmed, collectionNames);\n\tif (best && best.score >= 20) {\n\t\treturn { name: best.name, matched: true, candidates: [], score: best.score };\n\t}\n\tconst candidates = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokenizeCollectionText(trimmed), name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, 5)\n\t\t.map(entry => entry.name);\n\treturn { name: trimmed, matched: false, candidates, score: best?.score || 0 };\n}\n\nexport async function resolveAssistantCollectionNameForTesting(\n\tdb: any,\n\tdbName: string,\n\trequested: string,\n\tappId?: string\n): Promise<{ name: string; matched: boolean; candidates: string[]; score: number }> {\n\treturn resolveAssistantCollectionName(db, dbName, requested, appId);\n}\n\nconst AI_ASSISTANT_BRIDGE_COLLECTION_ALIASES: Record<string, string> = {};\n\nconst AI_ASSISTANT_BRIDGE_COLLECTION_ALIAS_OPTIONS: Record<string, string[]> = {};\n\nconst AI_ASSISTANT_DIRECT_COLLECTION_FALLBACK_ALLOWLIST = new Set<string>([\n\t'customers',\n\t'clients'\n]);\n\nfunction normalizeAssistantCollectionFamilyName(value: string): string {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst withoutReport = normalized.startsWith('report-') ? normalized.slice('report-'.length) : normalized;\n\treturn stripVersionSuffix(withoutReport);\n}\n\nfunction isAssistantCollectionInHintFamilies(collection: string, hintCollections: string[]): boolean {\n\tconst candidateFamily = normalizeAssistantCollectionFamilyName(collection);\n\tif (!candidateFamily) {\n\t\treturn false;\n\t}\n\treturn (hintCollections || []).some((hintCollection) => {\n\t\tconst hintFamily = normalizeAssistantCollectionFamilyName(hintCollection);\n\t\treturn !!(hintFamily && hintFamily === candidateFamily);\n\t});\n}\n\nfunction shouldPreserveAssistantPrimaryHintCollection(\n\trequestedCollection: string,\n\tresolvedCollection: string,\n\trequestHints?: AiAssistantDirectiveHints\n): boolean {\n\tconst requested = normalizeOptionalString(requestedCollection);\n\tconst resolved = normalizeOptionalString(resolvedCollection);\n\tif (!requested || !resolved || requested === resolved || AI_ASSISTANT_BLOCKED_COLLECTIONS.has(requested)) {\n\t\treturn false;\n\t}\n\tconst primaryCollectionHint = normalizeOptionalString(requestHints?.collectionHints?.[0]);\n\treturn !!(\n\t\tprimaryCollectionHint\n\t\t&& isAssistantCollectionInHintFamilies(requested, [primaryCollectionHint])\n\t);\n}\n\nfunction shouldLockAssistantRequestedCollectionForExecution(\n\trequestedCollection: string,\n\tpermissionView?: string,\n\trequestHints?: AiAssistantDirectiveHints\n): boolean {\n\tconst requested = normalizeOptionalString(requestedCollection);\n\tif (!requested || AI_ASSISTANT_BLOCKED_COLLECTIONS.has(requested)) {\n\t\treturn false;\n\t}\n\tconst primaryCollectionHint = normalizeOptionalString(requestHints?.collectionHints?.[0]);\n\tif (primaryCollectionHint && isAssistantCollectionInHintFamilies(requested, [primaryCollectionHint])) {\n\t\treturn true;\n\t}\n\tconst normalizedPermissionView = normalizeOptionalString(permissionView);\n\treturn !!(\n\t\tnormalizedPermissionView\n\t\t&& doesAssistantPermissionRouteMatchCollection(normalizedPermissionView, requested)\n\t);\n}\n\nexport function shouldLockAssistantRequestedCollectionForExecutionForTesting(\n\trequestedCollection: string,\n\tpermissionView?: string,\n\trequestHints?: any\n): boolean {\n\treturn shouldLockAssistantRequestedCollectionForExecution(\n\t\trequestedCollection,\n\t\tpermissionView,\n\t\tnormalizeAssistantDirectiveHints(requestHints)\n\t);\n}\n\nfunction addAssistantCollectionToTriedSet(tried: Set<string>, collection: string): void {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (normalized) {\n\t\ttried.add(normalized);\n\t}\n\tconst family = normalizeAssistantCollectionFamilyName(collection);\n\tif (family) {\n\t\ttried.add(family);\n\t}\n}\n\nfunction buildAssistantTriedCollectionSet(triedCollections: any): Set<string> {\n\tconst tried = new Set<string>();\n\tconst values = Array.isArray(triedCollections) ? triedCollections : [];\n\tvalues.forEach((value) => {\n\t\tif (typeof value !== 'string') {\n\t\t\treturn;\n\t\t}\n\t\taddAssistantCollectionToTriedSet(tried, value);\n\t});\n\treturn tried;\n}\n\nfunction hasAssistantCollectionBeenTried(tried: Set<string>, collection: string): boolean {\n\tconst normalized = normalizeOptionalString(collection);\n\tconst family = normalizeAssistantCollectionFamilyName(collection);\n\treturn !!((normalized && tried.has(normalized)) || (family && tried.has(family)));\n}\n\nfunction buildAssistantRetryState(\n\tbaseState: AiAssistantCollectionRetryState | undefined,\n\ttriedCollections: Set<string>,\n\toptions?: {\n\t\trootCollection?: string;\n\t\tdisableCrossCollectionRetry?: boolean;\n\t}\n): AiAssistantCollectionRetryState {\n\tconst next: AiAssistantCollectionRetryState = {\n\t\ttriedCollections: Array.from(triedCollections)\n\t};\n\tconst rootCollection = normalizeOptionalString(options?.rootCollection || baseState?.rootCollection);\n\tif (rootCollection) {\n\t\tnext.rootCollection = rootCollection;\n\t}\n\tif (options?.disableCrossCollectionRetry === true || baseState?.disableCrossCollectionRetry === true) {\n\t\tnext.disableCrossCollectionRetry = true;\n\t}\n\treturn next;\n}\n\ntype AssistantCollectionRelationshipGraph = Map<string, Map<string, number>>;\n\nfunction addAssistantCollectionRelationshipEdge(\n\tgraph: AssistantCollectionRelationshipGraph,\n\tfromFamily: string,\n\ttoFamily: string,\n\tweight: number\n): void {\n\tconst from = normalizeAssistantCollectionFamilyName(fromFamily);\n\tconst to = normalizeAssistantCollectionFamilyName(toFamily);\n\tif (!from || !to || from === to || !Number.isFinite(weight) || weight <= 0) {\n\t\treturn;\n\t}\n\tlet neighbors = graph.get(from);\n\tif (!neighbors) {\n\t\tneighbors = new Map<string, number>();\n\t\tgraph.set(from, neighbors);\n\t}\n\tneighbors.set(to, (neighbors.get(to) || 0) + weight);\n}\n\nfunction buildAssistantCollectionGraphSignature(collectionNames: string[]): string {\n\tif (!Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn '';\n\t}\n\tconst normalized = collectionNames\n\t\t.map(name => normalizeOptionalString(name))\n\t\t.filter(Boolean)\n\t\t.sort((a, b) => a.localeCompare(b));\n\treturn normalized.join('|');\n}\n\nfunction buildAssistantCollectionRelationshipGraph(collectionNames: string[]): AssistantCollectionRelationshipGraph {\n\tconst graph: AssistantCollectionRelationshipGraph = new Map<string, Map<string, number>>();\n\tconst names = Array.isArray(collectionNames) ? collectionNames.map(name => normalizeOptionalString(name)).filter(Boolean) : [];\n\tif (!names.length) {\n\t\treturn graph;\n\t}\n\tconst signature = buildAssistantCollectionGraphSignature(names);\n\tif (signature) {\n\t\tconst cached = AI_ASSISTANT_RELATIONSHIP_GRAPH_CACHE.get(signature);\n\t\tconst now = Date.now();\n\t\tif (cached && now - cached.updatedAt < AI_ASSISTANT_RELATIONSHIP_GRAPH_CACHE_TTL_MS) {\n\t\t\treturn cached.graph;\n\t\t}\n\t}\n\tconst knownFamilies = new Set<string>(\n\t\tnames\n\t\t\t.map(name => normalizeAssistantCollectionFamilyName(name))\n\t\t\t.filter(Boolean)\n\t);\n\tnames.forEach((collectionName) => {\n\t\tconst fromFamily = normalizeAssistantCollectionFamilyName(collectionName);\n\t\tif (!fromFamily) {\n\t\t\treturn;\n\t\t}\n\t\tconst lookupMappings = getCollectionLookupMappings(collectionName);\n\t\tlookupMappings.forEach((mapping) => {\n\t\t\tconst toFamily = normalizeAssistantCollectionFamilyName(mapping.lookupCollection);\n\t\t\tif (!toFamily || !knownFamilies.has(toFamily)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taddAssistantCollectionRelationshipEdge(graph, fromFamily, toFamily, 6);\n\t\t\taddAssistantCollectionRelationshipEdge(graph, toFamily, fromFamily, 4);\n\t\t});\n\t\tconst schemaFields = getCollectionSchemaFieldNames(collectionName);\n\t\tschemaFields.forEach((field) => {\n\t\t\tconst normalizedPath = normalizeLookupPath(field);\n\t\t\tif (!normalizedPath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst leaf = normalizedPath.split('.').pop() || normalizedPath;\n\t\t\tif (!/^id_[a-z0-9_]+$/i.test(leaf)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst token = normalizeOptionalString(leaf.slice(3));\n\t\t\tif (!token) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst aliasCandidates = mergeAssistantHintValues(\n\t\t\t\tresolveAssistantBridgeCollectionAliasCandidates(token),\n\t\t\t\tresolveAssistantBridgeCollectionAliasCandidates(normalizeCollectionKey(token)),\n\t\t\t\t[token, `${token}s`]\n\t\t\t);\n\t\t\taliasCandidates.forEach((candidate) => {\n\t\t\t\tconst toFamily = normalizeAssistantCollectionFamilyName(candidate);\n\t\t\t\tif (!toFamily || !knownFamilies.has(toFamily)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\taddAssistantCollectionRelationshipEdge(graph, fromFamily, toFamily, 3);\n\t\t\t\taddAssistantCollectionRelationshipEdge(graph, toFamily, fromFamily, 2);\n\t\t\t});\n\t\t});\n\t});\n\tif (signature) {\n\t\tAI_ASSISTANT_RELATIONSHIP_GRAPH_CACHE.set(signature, {\n\t\t\tgraph,\n\t\t\tupdatedAt: Date.now()\n\t\t});\n\t}\n\treturn graph;\n}\n\nfunction resolveAssistantRelationshipFallbackCandidates(\n\tcollection: string,\n\tcollectionNames: string[],\n\ttriedCollections: Set<string>\n): string[] {\n\tconst currentFamily = normalizeAssistantCollectionFamilyName(collection);\n\tif (!currentFamily) {\n\t\treturn [];\n\t}\n\tconst graph = buildAssistantCollectionRelationshipGraph(collectionNames || []);\n\tconst familyScores = new Map<string, number>();\n\tconst depthByFamily = new Map<string, number>();\n\tconst queue: Array<{ family: string; depth: number }> = [{ family: currentFamily, depth: 0 }];\n\tdepthByFamily.set(currentFamily, 0);\n\twhile (queue.length) {\n\t\tconst current = queue.shift();\n\t\tif (!current) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (current.depth >= 2) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst neighbors = graph.get(current.family);\n\t\tif (!neighbors || !neighbors.size) {\n\t\t\tcontinue;\n\t\t}\n\t\tArray.from(neighbors.entries()).forEach(([neighborFamily, weight]) => {\n\t\t\tif (!neighborFamily || neighborFamily === currentFamily || !Number.isFinite(weight) || weight <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst nextDepth = current.depth + 1;\n\t\t\tconst currentBestDepth = depthByFamily.get(neighborFamily);\n\t\t\tif (typeof currentBestDepth !== 'number' || nextDepth < currentBestDepth) {\n\t\t\t\tdepthByFamily.set(neighborFamily, nextDepth);\n\t\t\t\tif (nextDepth < 2) {\n\t\t\t\t\tqueue.push({ family: neighborFamily, depth: nextDepth });\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst depthFactor = nextDepth === 1 ? 1 : 0.55;\n\t\t\tconst score = weight * depthFactor;\n\t\t\tif (score > (familyScores.get(neighborFamily) || 0)) {\n\t\t\t\tfamilyScores.set(neighborFamily, score);\n\t\t\t}\n\t\t});\n\t}\n\tconst preferredCollections = Array.from(familyScores.entries())\n\t\t.map(([family, score]) => {\n\t\t\tconst preferred = resolveAssistantPreferredCollectionForFamily(family, collectionNames || []);\n\t\t\treturn { family, score, preferred: normalizeOptionalString(preferred) };\n\t\t})\n\t\t.filter(entry => !!entry.preferred)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\treturn (a.preferred || '').localeCompare(b.preferred || '');\n\t\t})\n\t\t.map(entry => entry.preferred as string)\n\t\t.filter(preferred => !hasAssistantCollectionBeenTried(triedCollections, preferred));\n\treturn Array.from(new Set(preferredCollections));\n}\n\nexport function resolveAssistantCrossCollectionFallbackCandidates(collection: string): string[] {\n\tconst normalized = normalizeAssistantCollectionFamilyName(collection);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst candidates = new Set<string>();\n\tconst addCandidate = (value: string) => {\n\t\tconst candidate = normalizeOptionalString(value);\n\t\tif (!candidate) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates.add(candidate);\n\t};\n\tconst aliasCandidates = mergeAssistantHintValues(\n\t\tresolveAssistantBridgeCollectionAliasCandidates(normalized),\n\t\tresolveAssistantBridgeCollectionAliasCandidates(normalizeCollectionKey(normalized))\n\t);\n\taliasCandidates.forEach(addCandidate);\n\treturn Array.from(candidates);\n}\n\nfunction normalizeAssistantFieldHints(fieldHints: string[]): string[] {\n\tif (!Array.isArray(fieldHints) || !fieldHints.length) {\n\t\treturn [];\n\t}\n\tconst normalized = fieldHints\n\t\t.map(value => normalizeLookupPath(value))\n\t\t.filter(Boolean);\n\treturn Array.from(new Set(normalized));\n}\n\nfunction scoreAssistantFallbackCandidateFieldCoverage(candidate: string, fieldHints: string[]): number {\n\tconst hints = normalizeAssistantFieldHints(fieldHints || []);\n\tif (!hints.length) {\n\t\treturn 0;\n\t}\n\tconst fields = getCollectionSchemaFieldNames(candidate);\n\tif (!fields.length) {\n\t\treturn 0;\n\t}\n\tconst normalizedFields = fields\n\t\t.map(field => normalizeLookupPath(field))\n\t\t.filter(Boolean);\n\tconst fieldSet = new Set<string>(normalizedFields);\n\tconst leafSet = new Set<string>(normalizedFields.map(field => field.split('.').pop() || field));\n\tconst rootSet = new Set<string>(normalizedFields.map(field => field.split('.')[0] || field));\n\tlet score = 0;\n\thints.forEach((hint) => {\n\t\tif (fieldSet.has(hint)) {\n\t\t\tscore += 6;\n\t\t\treturn;\n\t\t}\n\t\tconst leaf = hint.split('.').pop() || hint;\n\t\tif (leafSet.has(leaf)) {\n\t\t\tscore += 3;\n\t\t\treturn;\n\t\t}\n\t\tconst root = hint.split('.')[0] || hint;\n\t\tif (rootSet.has(root)) {\n\t\t\tscore += 1;\n\t\t}\n\t\tif (/^id_[a-z0-9_]+$/i.test(leaf)) {\n\t\t\tconst idToken = normalizeOptionalString(leaf.slice(3)).toLowerCase();\n\t\t\tconst family = normalizeAssistantCollectionFamilyName(candidate);\n\t\t\tif (idToken && family && family.includes(idToken)) {\n\t\t\t\tscore += 2;\n\t\t\t}\n\t\t}\n\t});\n\tconst hintTokens = mergeAssistantHintValues(\n\t\t...hints.map(value => tokenizeCollectionText(value))\n\t);\n\tif (hintTokens.length) {\n\t\tscore += round(scoreCollectionMatch(hintTokens, candidate) / 4);\n\t}\n\treturn score;\n}\n\nfunction rankAssistantFallbackCandidatesByFieldHints(candidates: string[], fieldHints: string[]): string[] {\n\tconst normalizedCandidates = Array.isArray(candidates) ? candidates.filter(Boolean) : [];\n\tif (normalizedCandidates.length <= 1) {\n\t\treturn normalizedCandidates;\n\t}\n\tconst hints = normalizeAssistantFieldHints(fieldHints || []);\n\tif (!hints.length) {\n\t\treturn normalizedCandidates;\n\t}\n\treturn normalizedCandidates\n\t\t.map((candidate, index) => ({\n\t\t\tcandidate,\n\t\t\tcoverageScore: scoreAssistantFallbackCandidateFieldCoverage(candidate, hints),\n\t\t\toriginalIndex: index\n\t\t}))\n\t\t.sort((a, b) => {\n\t\t\tif (a.coverageScore !== b.coverageScore) {\n\t\t\t\treturn b.coverageScore - a.coverageScore;\n\t\t\t}\n\t\t\treturn a.originalIndex - b.originalIndex;\n\t\t})\n\t\t.map(entry => entry.candidate);\n}\n\nexport function resolveAssistantAvailableCrossCollectionFallbacksFromNames(\n\tcollection: string,\n\ttriedCollections: Set<string>,\n\tcollectionNames: string[],\n\toptions?: {\n\t\tfieldHints?: string[];\n\t}\n): string[] {\n\tconst candidates = resolveAssistantCrossCollectionFallbackCandidates(collection);\n\tconst namesByFamily = new Map<string, string[]>();\n\t(collectionNames || []).forEach((name) => {\n\t\tconst family = normalizeAssistantCollectionFamilyName(name);\n\t\tif (!family) {\n\t\t\treturn;\n\t\t}\n\t\tconst existing = namesByFamily.get(family) || [];\n\t\texisting.push(name);\n\t\tnamesByFamily.set(family, existing);\n\t});\n\tconst currentFamily = normalizeAssistantCollectionFamilyName(collection);\n\tconst available: string[] = [];\n\tconst pushPreferredCandidate = (candidate: string) => {\n\t\tconst family = normalizeAssistantCollectionFamilyName(candidate);\n\t\tif (!family || family === currentFamily || hasAssistantCollectionBeenTried(triedCollections, candidate)) {\n\t\t\treturn;\n\t\t}\n\t\tconst familyNames = namesByFamily.get(family) || [];\n\t\tlet preferred = familyNames.find(name => !name.startsWith('report-') && !isVersionCollectionName(name))\n\t\t\t|| familyNames.find(name => !name.startsWith('report-'))\n\t\t\t|| familyNames[0]\n\t\t\t|| '';\n\t\tif (!preferred && isAssistantDirectCollectionFallbackAllowed(candidate)) {\n\t\t\tpreferred = candidate;\n\t\t}\n\t\tif (!preferred || hasAssistantCollectionBeenTried(triedCollections, preferred) || available.includes(preferred)) {\n\t\t\treturn;\n\t\t}\n\t\tavailable.push(preferred);\n\t};\n\tconst relationshipCandidates = resolveAssistantRelationshipFallbackCandidates(\n\t\tcollection,\n\t\tcollectionNames || [],\n\t\ttriedCollections\n\t);\n\trelationshipCandidates.forEach(pushPreferredCandidate);\n\tcandidates.forEach(pushPreferredCandidate);\n\tconst collectionTokenSeed = normalizeAssistantCollectionFamilyName(collection) || normalizeOptionalString(collection);\n\tconst requestedTokens = tokenizeCollectionText(collectionTokenSeed);\n\tif (requestedTokens.length) {\n\t\t(collectionNames || [])\n\t\t\t.map(name => ({ name, score: scoreCollectionMatch(requestedTokens, name) }))\n\t\t\t.filter(entry => entry.score >= 10)\n\t\t\t.sort((a, b) => b.score - a.score)\n\t\t\t.slice(0, 8)\n\t\t\t.forEach(entry => pushPreferredCandidate(entry.name));\n\t}\n\tif (options?.fieldHints?.length) {\n\t\treturn rankAssistantFallbackCandidatesByFieldHints(available, options.fieldHints);\n\t}\n\treturn available;\n}\n\nasync function resolveAssistantAvailableCrossCollectionFallbacks(\n\tdb: any,\n\tdbName: string,\n\tcollection: string,\n\ttriedCollections: Set<string>,\n\toptions?: {\n\t\tfieldHints?: string[];\n\t}\n): Promise<string[]> {\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\treturn resolveAssistantAvailableCrossCollectionFallbacksFromNames(collection, triedCollections, collectionNames, options);\n}\n\nconst AI_ASSISTANT_FALLBACK_DIMENSION_EMPTY_VALUES = new Set([\n\t'',\n\t'-',\n\t'--',\n\t'n/a',\n\t'na',\n\t'none',\n\t'null',\n\t'unknown',\n\t'(unknown)',\n\t'not set',\n\t'unassigned'\n]);\n\ntype AssistantFallbackAcceptanceOptions = {\n\trequireDimensionFields?: boolean;\n\tminDimensionFillRate?: number;\n\tpreferredDimensionFields?: string[];\n};\n\nfunction isAssistantNumericLikeValue(value: any): boolean {\n\tif (typeof value === 'number') {\n\t\treturn Number.isFinite(value);\n\t}\n\tif (typeof value !== 'string') {\n\t\treturn false;\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\treturn false;\n\t}\n\tconst normalized = trimmed\n\t\t.replace(/[$,%\\s]/g, '')\n\t\t.replace(/,/g, '');\n\treturn /^[-+]?\\d+(\\.\\d+)?$/.test(normalized);\n}\n\nfunction isAssistantDateLikeValue(value: any): boolean {\n\tif (value instanceof Date) {\n\t\treturn !Number.isNaN(value.getTime());\n\t}\n\tif (typeof value !== 'string') {\n\t\treturn false;\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed || trimmed.length < 8) {\n\t\treturn false;\n\t}\n\tif (!/[-/]/.test(trimmed)) {\n\t\treturn false;\n\t}\n\tconst parsed = new Date(trimmed);\n\treturn !Number.isNaN(parsed.getTime());\n}\n\nfunction isAssistantNonEmptyDimensionValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn false;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst normalized = value.trim().toLowerCase();\n\t\treturn normalized ? !AI_ASSISTANT_FALLBACK_DIMENSION_EMPTY_VALUES.has(normalized) : false;\n\t}\n\tif (typeof value === 'number') {\n\t\treturn Number.isFinite(value);\n\t}\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value instanceof Date) {\n\t\treturn !Number.isNaN(value.getTime());\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn true;\n\t}\n\treturn true;\n}\n\nfunction resolveAssistantFallbackDimensionFields(documents: any[]): string[] {\n\tconst docs = Array.isArray(documents) ? documents : [];\n\tconst keys = new Set<string>();\n\tdocs.forEach((doc) => {\n\t\tif (!doc || typeof doc !== 'object' || Array.isArray(doc)) {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(doc).forEach((key) => {\n\t\t\tif (key && key !== '_id') {\n\t\t\t\tkeys.add(key);\n\t\t\t}\n\t\t});\n\t});\n\tconst dimensions: string[] = [];\n\tArray.from(keys).forEach((key) => {\n\t\tconst values = docs\n\t\t\t.map(doc => (doc && typeof doc === 'object' ? (doc as Record<string, any>)[key] : undefined))\n\t\t\t.filter(value => value !== null && value !== undefined);\n\t\tif (!values.length) {\n\t\t\tdimensions.push(key);\n\t\t\treturn;\n\t\t}\n\t\tconst allNumericLike = values.every(value => isAssistantNumericLikeValue(value));\n\t\tif (allNumericLike) {\n\t\t\treturn;\n\t\t}\n\t\tconst allDateLike = values.every(value => isAssistantDateLikeValue(value));\n\t\tif (allDateLike) {\n\t\t\treturn;\n\t\t}\n\t\tdimensions.push(key);\n\t});\n\treturn dimensions;\n}\n\nexport function evaluateAssistantFallbackDocumentsQuality(\n\tdocuments: any[],\n\toptions?: AssistantFallbackAcceptanceOptions\n): {\n\taccepted: boolean;\n\trowCount: number;\n\tdimensionFields: string[];\n\tbestField?: string;\n\tbestFillRate: number;\n\taverageFillRate: number;\n} {\n\tconst docs = Array.isArray(documents)\n\t\t? documents.filter(doc => doc && typeof doc === 'object' && !Array.isArray(doc))\n\t\t: [];\n\tif (!docs.length) {\n\t\treturn {\n\t\t\taccepted: false,\n\t\t\trowCount: 0,\n\t\t\tdimensionFields: [],\n\t\t\tbestFillRate: 0,\n\t\t\taverageFillRate: 0\n\t\t};\n\t}\n\tconst rowCount = docs.length;\n\tconst preferredFields = normalizeAggregateFieldList(\n\t\t(Array.isArray(options?.preferredDimensionFields) ? options?.preferredDimensionFields : [])\n\t\t\t.filter(field => field && docs.some(doc => Object.prototype.hasOwnProperty.call(doc, field)))\n\t);\n\tconst inferredFields = resolveAssistantFallbackDimensionFields(docs);\n\tconst dimensionFields = normalizeAggregateFieldList([...preferredFields, ...inferredFields]);\n\tconst requiresDimensions = options?.requireDimensionFields === true;\n\tif (!dimensionFields.length) {\n\t\treturn {\n\t\t\taccepted: !requiresDimensions,\n\t\t\trowCount,\n\t\t\tdimensionFields,\n\t\t\tbestFillRate: 0,\n\t\t\taverageFillRate: 0\n\t\t};\n\t}\n\tconst fillStats = dimensionFields.map((field) => {\n\t\tlet nonEmpty = 0;\n\t\tdocs.forEach((doc) => {\n\t\t\tif (isAssistantNonEmptyDimensionValue((doc as Record<string, any>)[field])) {\n\t\t\t\tnonEmpty += 1;\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tfield,\n\t\t\tfillRate: rowCount ? (nonEmpty / rowCount) : 0\n\t\t};\n\t});\n\tconst best = fillStats\n\t\t.slice()\n\t\t.sort((a, b) => b.fillRate - a.fillRate)[0];\n\tconst averageFillRate = fillStats.length\n\t\t? (fillStats.reduce((sum, current) => sum + current.fillRate, 0) / fillStats.length)\n\t\t: 0;\n\tconst defaultMinFillRate = requiresDimensions ? 0.35 : 0.1;\n\tconst minFillRate = typeof options?.minDimensionFillRate === 'number'\n\t\t? Math.min(Math.max(options.minDimensionFillRate, 0), 1)\n\t\t: defaultMinFillRate;\n\tconst accepted = !!best && best.fillRate >= minFillRate;\n\treturn {\n\t\taccepted,\n\t\trowCount,\n\t\tdimensionFields,\n\t\t...(best ? { bestField: best.field } : {}),\n\t\tbestFillRate: best ? best.fillRate : 0,\n\t\taverageFillRate\n\t};\n}\n\nexport function shouldAcceptAssistantFallbackDocuments(\n\tdocuments: any[],\n\toptions?: AssistantFallbackAcceptanceOptions\n): boolean {\n\treturn evaluateAssistantFallbackDocumentsQuality(documents, options).accepted;\n}\n\nfunction collectAggregateReferencedFieldPaths(pipeline: Array<Record<string, any>>): string[] {\n\tconst fields = new Set<string>();\n\t(pipeline || []).forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || Array.isArray(stage)) {\n\t\t\treturn;\n\t\t}\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\textractQueryFieldPaths(stage.$match).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$geoNear?.query && typeof stage.$geoNear.query === 'object') {\n\t\t\textractQueryFieldPaths(stage.$geoNear.query).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$group && typeof stage.$group === 'object') {\n\t\t\textractExpressionFieldPaths(stage.$group).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$project && typeof stage.$project === 'object') {\n\t\t\textractExpressionFieldPaths(stage.$project).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$addFields && typeof stage.$addFields === 'object') {\n\t\t\textractExpressionFieldPaths(stage.$addFields).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$set && typeof stage.$set === 'object') {\n\t\t\textractExpressionFieldPaths(stage.$set).forEach(field => fields.add(field));\n\t\t}\n\t\tif (stage.$sort && typeof stage.$sort === 'object') {\n\t\t\tObject.keys(stage.$sort)\n\t\t\t\t.filter(key => !key.startsWith('$'))\n\t\t\t\t.forEach(field => fields.add(field));\n\t\t}\n\t\tconst unwind = stage.$unwind;\n\t\tif (typeof unwind === 'string' && unwind.startsWith('$')) {\n\t\t\tfields.add(unwind.slice(1));\n\t\t}\n\t\tif (unwind && typeof unwind === 'object' && typeof unwind.path === 'string' && unwind.path.startsWith('$')) {\n\t\t\tfields.add(unwind.path.slice(1));\n\t\t}\n\t});\n\treturn Array.from(fields).filter(Boolean);\n}\n\nfunction resolveAggregateNestedPrefixes(pipeline: Array<Record<string, any>>): string[] {\n\tconst prefixCounts = new Map<string, number>();\n\tconst fields = collectAggregateReferencedFieldPaths(pipeline);\n\tfields.forEach((field) => {\n\t\tconst normalized = normalizeOptionalString(field);\n\t\tif (!normalized || !normalized.includes('.')) {\n\t\t\treturn;\n\t\t}\n\t\tconst prefix = normalized.split('.')[0];\n\t\tif (!prefix || prefix.startsWith('$') || prefix === '_id') {\n\t\t\treturn;\n\t\t}\n\t\tprefixCounts.set(prefix, (prefixCounts.get(prefix) || 0) + 1);\n\t});\n\treturn Array.from(prefixCounts.entries())\n\t\t.filter((entry) => entry[1] >= 2)\n\t\t.sort((a, b) => b[1] - a[1])\n\t\t.map(entry => entry[0]);\n}\n\nfunction rewriteAggregatePipelineForNestedPrefix(\n\tpipeline: Array<Record<string, any>>,\n\tprefix: string\n): { pipeline: Array<Record<string, any>>; changed: boolean; rewrittenFields: string[] } {\n\tconst normalizedPrefix = normalizeOptionalString(prefix);\n\tif (!normalizedPrefix || !Array.isArray(pipeline) || !pipeline.length) {\n\t\treturn { pipeline, changed: false, rewrittenFields: [] };\n\t}\n\tconst withoutPrefixUnwind = pipeline.filter((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$unwind) {\n\t\t\treturn true;\n\t\t}\n\t\tif (typeof stage.$unwind === 'string') {\n\t\t\treturn stage.$unwind !== `$${normalizedPrefix}`;\n\t\t}\n\t\tif (stage.$unwind && typeof stage.$unwind === 'object') {\n\t\t\treturn stage.$unwind.path !== `$${normalizedPrefix}`;\n\t\t}\n\t\treturn true;\n\t});\n\tconst rewriteFields = collectAggregateReferencedFieldPaths(withoutPrefixUnwind)\n\t\t.filter(field => field.startsWith(`${normalizedPrefix}.`))\n\t\t.sort((a, b) => b.length - a.length);\n\tif (!rewriteFields.length) {\n\t\treturn {\n\t\t\tpipeline: withoutPrefixUnwind,\n\t\t\tchanged: didAssistantValueChange(pipeline, withoutPrefixUnwind),\n\t\t\trewrittenFields: []\n\t\t};\n\t}\n\tconst dedupedFields = Array.from(new Set(rewriteFields));\n\tlet rewritten = withoutPrefixUnwind;\n\tdedupedFields.forEach((field) => {\n\t\tconst targetField = field.slice(normalizedPrefix.length + 1);\n\t\trewritten = replaceFieldPathDeep(rewritten, field, targetField);\n\t});\n\treturn {\n\t\tpipeline: rewritten,\n\t\tchanged: didAssistantValueChange(pipeline, rewritten),\n\t\trewrittenFields: dedupedFields\n\t};\n}\n\nfunction resolveAssistantPreferredCollectionForFamily(candidate: string, collectionNames: string[]): string | null {\n\tconst normalizedCandidate = normalizeOptionalString(candidate);\n\tif (!normalizedCandidate) {\n\t\treturn null;\n\t}\n\tconst family = normalizeAssistantCollectionFamilyName(normalizedCandidate);\n\tif (!family) {\n\t\treturn null;\n\t}\n\tconst familyNames = (collectionNames || []).filter((name) => normalizeAssistantCollectionFamilyName(name) === family);\n\tconst preferred = familyNames.find(name => !name.startsWith('report-') && !isVersionCollectionName(name))\n\t\t|| familyNames.find(name => !isVersionCollectionName(name))\n\t\t|| familyNames[0];\n\treturn preferred || null;\n}\n\nfunction resolveAssistantNestedPrefixCollectionCandidates(params: {\n\tprefix: string;\n\tcurrentCollection: string;\n\tcollectionNames: string[];\n\ttriedCollections: Set<string>;\n}): string[] {\n\tconst normalizedPrefix = normalizeOptionalString(params.prefix);\n\tif (!normalizedPrefix) {\n\t\treturn [];\n\t}\n\tconst currentFamily = normalizeAssistantCollectionFamilyName(params.currentCollection);\n\tconst candidates: string[] = [];\n\tconst push = (candidate: string) => {\n\t\tconst preferred = resolveAssistantPreferredCollectionForFamily(candidate, params.collectionNames);\n\t\tif (!preferred) {\n\t\t\treturn;\n\t\t}\n\t\tconst preferredFamily = normalizeAssistantCollectionFamilyName(preferred);\n\t\tif (!preferredFamily || preferredFamily === currentFamily) {\n\t\t\treturn;\n\t\t}\n\t\tif (hasAssistantCollectionBeenTried(params.triedCollections, preferred) || candidates.includes(preferred)) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates.push(preferred);\n\t};\n\tresolveAssistantBridgeCollectionAliasCandidates(normalizedPrefix).forEach(push);\n\tpush(normalizedPrefix);\n\tresolveAssistantAvailableCrossCollectionFallbacksFromNames(\n\t\tnormalizedPrefix,\n\t\tparams.triedCollections,\n\t\tparams.collectionNames\n\t).forEach(push);\n\tconst tokenizedPrefix = tokenizeCollectionText(normalizedPrefix);\n\tparams.collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokenizedPrefix, name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, 8)\n\t\t.forEach(entry => push(entry.name));\n\treturn candidates;\n}\n\ntype AssistantNestedAggregateFallback = {\n\tcollection: string;\n\tprefix: string;\n\tpipeline: Array<Record<string, any>>;\n\trewrittenFields: string[];\n};\n\nasync function resolveAssistantNestedAggregateFallbacks(params: {\n\tdb: any;\n\tdbName: string;\n\tcurrentCollection: string;\n\tpipeline: Array<Record<string, any>>;\n\ttriedCollections: Set<string>;\n}): Promise<AssistantNestedAggregateFallback[]> {\n\tconst prefixes = resolveAggregateNestedPrefixes(params.pipeline || []);\n\tif (!prefixes.length) {\n\t\treturn [];\n\t}\n\tconst collectionNames = await listAssistantCollections(params.db, params.dbName);\n\tif (!collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst fallbacks: AssistantNestedAggregateFallback[] = [];\n\tconst seen = new Set<string>();\n\tfor (const prefix of prefixes) {\n\t\tconst rewrite = rewriteAggregatePipelineForNestedPrefix(params.pipeline || [], prefix);\n\t\tif (!rewrite.changed || !rewrite.rewrittenFields.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst candidates = resolveAssistantNestedPrefixCollectionCandidates({\n\t\t\tprefix,\n\t\t\tcurrentCollection: params.currentCollection,\n\t\t\tcollectionNames,\n\t\t\ttriedCollections: params.triedCollections\n\t\t});\n\t\tfor (const candidate of candidates) {\n\t\t\tconst normalizedPipeline = normalizeAssistantAggregatePipeline(rewrite.pipeline, candidate);\n\t\t\tif (!normalizedPipeline.length || containsForbiddenMongoOperators(normalizedPipeline)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst key = `${prefix}|${candidate}`;\n\t\t\tif (seen.has(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(key);\n\t\t\tfallbacks.push({\n\t\t\t\tcollection: candidate,\n\t\t\t\tprefix,\n\t\t\t\tpipeline: normalizedPipeline,\n\t\t\t\trewrittenFields: rewrite.rewrittenFields\n\t\t\t});\n\t\t\tif (fallbacks.length >= 10) {\n\t\t\t\treturn fallbacks;\n\t\t\t}\n\t\t}\n\t}\n\treturn fallbacks;\n}\n\nfunction resolveAssistantBridgeCollectionAliasCandidates(value: string, appId?: string): string[] {\n\tconst key = normalizeCollectionKey(value);\n\tif (!key) {\n\t\treturn [];\n\t}\n\tconst profile = resolveAssistantAppHeuristicProfile(appId);\n\tconst candidates: string[] = [];\n\tconst push = (candidate: string) => {\n\t\tconst normalized = normalizeOptionalString(candidate);\n\t\tif (!normalized || candidates.includes(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates.push(normalized);\n\t};\n\tconst aliasOptions = profile.aliasOptions[key] || AI_ASSISTANT_BRIDGE_COLLECTION_ALIAS_OPTIONS[key];\n\tif (Array.isArray(aliasOptions)) {\n\t\taliasOptions.forEach(push);\n\t}\n\tpush(profile.aliases[key] || AI_ASSISTANT_BRIDGE_COLLECTION_ALIASES[key]);\n\treturn candidates;\n}\n\nfunction isAssistantDirectCollectionFallbackAllowed(collection: string): boolean {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_DIRECT_COLLECTION_FALLBACK_ALLOWLIST.has(normalized);\n}\n\nasync function doesAssistantCollectionExistInDb(db: any, collection: string): Promise<boolean> {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (!normalized || !db || typeof db.listCollections !== 'function') {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst collections = await db.listCollections({ name: normalized }, { nameOnly: true }).toArray();\n\t\treturn Array.isArray(collections)\n\t\t\t&& collections.some(entry => normalizeOptionalString(entry?.name) === normalized);\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction extractAssistantCollectionNamesFromHintLines(lines: string[]): string[] {\n\tif (!Array.isArray(lines) || !lines.length) {\n\t\treturn [];\n\t}\n\tconst names: string[] = [];\n\tlines.forEach((line) => {\n\t\tconst normalizedLine = normalizeOptionalString(line).toLowerCase();\n\t\tif (!normalizedLine) {\n\t\t\treturn;\n\t\t}\n\t\tconst matches: string[] = normalizedLine.match(/\\(([a-z0-9._-]+)\\)/g) || [];\n\t\tmatches.forEach((matchValue) => {\n\t\t\tconst candidate = normalizeOptionalString(matchValue.slice(1, -1));\n\t\t\tif (!candidate || !/^[a-z0-9._-]+$/.test(candidate)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnames.push(candidate);\n\t\t});\n\t});\n\treturn mergeAssistantHintValues(names);\n}\n\nfunction expandAssistantBridgeHintCollectionCandidates(value: string, appId?: string): string[] {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst base = stripVersionSuffix(\n\t\tnormalized.startsWith('report-')\n\t\t\t? normalized.slice('report-'.length)\n\t\t\t: normalized\n\t);\n\tconst reportCollection = base ? `report-${base}` : '';\n\treturn mergeAssistantHintValues(\n\t\t[normalized],\n\t\tresolveAssistantBridgeCollectionAliasCandidates(normalized, appId),\n\t\tbase ? [base] : [],\n\t\treportCollection ? [reportCollection] : []\n\t);\n}\n\nfunction resolveAssistantBridgeCollectionHintCandidates(\n\trequestedCollection: string,\n\trequestHints?: AiAssistantDirectiveHints,\n\tappId?: string\n): string[] {\n\tconst normalizedHints = normalizeAssistantDirectiveHints(requestHints);\n\tif (!normalizedHints) {\n\t\treturn [];\n\t}\n\tconst hintCollections = mergeAssistantHintValues(\n\t\tnormalizedHints.collectionHints || [],\n\t\tnormalizedHints.rankedCollections || [],\n\t\textractAssistantCollectionNamesFromHintLines(normalizedHints.fieldHints || []),\n\t\textractAssistantCollectionNamesFromHintLines(normalizedHints.schemaHints || [])\n\t).slice(0, 12);\n\tif (!hintCollections.length) {\n\t\treturn [];\n\t}\n\tconst expandedCandidates = mergeAssistantHintValues(\n\t\t...hintCollections.map(value => expandAssistantBridgeHintCollectionCandidates(value, appId))\n\t);\n\tif (!expandedCandidates.length) {\n\t\treturn [];\n\t}\n\tconst requestedTokens = tokenizeCollectionText(requestedCollection);\n\tif (!requestedTokens.length) {\n\t\treturn expandedCandidates.slice(0, 12);\n\t}\n\tconst { weights } = computeCollectionTokenWeights(requestedTokens);\n\tconst ranked = expandedCandidates\n\t\t.map((candidate, index) => ({\n\t\t\tcandidate,\n\t\t\tindex,\n\t\t\tscore: scoreCollectionMatch(requestedTokens, candidate, weights)\n\t\t}))\n\t\t.filter(entry => entry.score >= 10)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\treturn a.index - b.index;\n\t\t})\n\t\t.map(entry => entry.candidate);\n\tif (ranked.length) {\n\t\treturn ranked.slice(0, 12);\n\t}\n\treturn [];\n}\n\nexport async function resolveAssistantReportBuilderBridgeCollection(\n\tcollection: string,\n\tdb?: any,\n\tdbName = '',\n\toptions?: {\n\t\trequestHints?: AiAssistantDirectiveHints;\n\t\tappId?: string;\n\t}\n): Promise<{\n\tcollection: string;\n\tfallbackFrom?: string;\n\tmode: 'report-builder' | 'direct-mongo';\n\tresolutionPath: string[];\n}> {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (!normalized) {\n\t\tthrow new Error('AI assistant report builder bridge: Collection is required.');\n\t}\n\tconst resolutionPath: string[] = [];\n\tconst pushResolutionStep = (value: string) => {\n\t\tconst step = normalizeOptionalString(value);\n\t\tif (!step || resolutionPath.includes(step)) {\n\t\t\treturn;\n\t\t}\n\t\tresolutionPath.push(step);\n\t};\n\tconst finalizeResolution = (\n\t\tresolvedCollection: string,\n\t\tmode: 'report-builder' | 'direct-mongo',\n\t\treason: string\n\t) => {\n\t\tpushResolutionStep(reason);\n\t\treturn {\n\t\t\tcollection: resolvedCollection,\n\t\t\t...(resolvedCollection !== normalized ? { fallbackFrom: normalized } : {}),\n\t\t\tmode,\n\t\t\tresolutionPath: resolutionPath.slice(0, 10)\n\t\t};\n\t};\n\tpushResolutionStep(`requested:${normalized}`);\n\tconst requestHints = normalizeAssistantDirectiveHints(options?.requestHints);\n\tconst appId = normalizeOptionalString(options?.appId);\n\tconst requestedTokens = tokenizeCollectionText(normalized);\n\tconst requestedTokenWeights = requestedTokens.length\n\t\t? computeCollectionTokenWeights(requestedTokens).weights\n\t\t: undefined;\n\tconst aliasCandidates = resolveAssistantBridgeCollectionAliasCandidates(normalized, appId);\n\tif (aliasCandidates.length) {\n\t\tpushResolutionStep(`aliases:${aliasCandidates.join(',')}`);\n\t}\n\tconst hintCandidates = resolveAssistantBridgeCollectionHintCandidates(normalized, requestHints, appId);\n\tif (hintCandidates.length) {\n\t\tpushResolutionStep(`hints:${hintCandidates.slice(0, 6).join(',')}`);\n\t}\n\tconst alias = aliasCandidates[0] || '';\n\tconst manager = ResolveIOServer.getMongoManager?.();\n\tconst hasManager = !!(manager && typeof manager.collection === 'function');\n\tconst configuredCollectionNames = listAssistantConfiguredCollectionsFromManager();\n\tconst isConfiguredCollection = (name: string) => {\n\t\tconst value = normalizeOptionalString(name);\n\t\treturn !!value && configuredCollectionNames.includes(value);\n\t};\n\tconst candidates: string[] = [];\n\tconst pushCandidate = (name: string) => {\n\t\tconst value = normalizeOptionalString(name);\n\t\tif (!value || candidates.includes(value)) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates.push(value);\n\t};\n\tpushCandidate(normalized);\n\taliasCandidates.forEach(pushCandidate);\n\tconst base = stripVersionSuffix(normalized.startsWith('report-') ? normalized.slice('report-'.length) : normalized);\n\tif (base && base !== normalized) {\n\t\tpushCandidate(base);\n\t}\n\tconst reportCandidate = base ? `report-${base}` : '';\n\tif (reportCandidate && reportCandidate !== normalized) {\n\t\tpushCandidate(reportCandidate);\n\t}\n\thintCandidates.forEach(pushCandidate);\n\n\tif (hasManager) {\n\t\tfor (const candidate of candidates) {\n\t\t\tconst model = manager.collection(candidate);\n\t\t\tif (model?.useRB) {\n\t\t\t\treturn finalizeResolution(candidate, 'report-builder', `manager.useRB:${candidate}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (configuredCollectionNames.length) {\n\t\tfor (const candidate of candidates) {\n\t\t\tif (AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isConfiguredCollection(candidate)) {\n\t\t\t\treturn finalizeResolution(candidate, 'direct-mongo', `manager.configured:${candidate}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst primaryCollectionHint = normalizeOptionalString(requestHints?.collectionHints?.[0]);\n\tif (\n\t\tprimaryCollectionHint\n\t\t&& !AI_ASSISTANT_BLOCKED_COLLECTIONS.has(normalized)\n\t\t&& isAssistantCollectionInHintFamilies(normalized, [primaryCollectionHint])\n\t) {\n\t\treturn finalizeResolution(normalized, 'direct-mongo', `hints.primary:${primaryCollectionHint}`);\n\t}\n\n\tif (db && dbName) {\n\t\tconst resolverTargets = mergeAssistantHintValues(\n\t\t\talias ? [alias] : [],\n\t\t\t[normalized],\n\t\t\thintCandidates\n\t\t).slice(0, 10);\n\t\tlet resolverErrorLogged = false;\n\t\tfor (const resolverTarget of resolverTargets) {\n\t\t\ttry {\n\t\t\t\tconst resolved = await resolveAssistantCollectionName(db, dbName, resolverTarget, appId);\n\t\t\t\tconst resolvedName = normalizeOptionalString(resolved?.name);\n\t\t\t\tif (!resolvedName) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (resolvedName !== resolverTarget && requestedTokens.length) {\n\t\t\t\t\tconst resolvedScore = scoreCollectionMatch(requestedTokens, resolvedName, requestedTokenWeights);\n\t\t\t\t\tif (resolvedScore < 10) {\n\t\t\t\t\t\tpushResolutionStep(`resolver.skip:${resolverTarget}->${resolvedName}:${resolvedScore}`);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpushCandidate(resolvedName);\n\t\t\t\tpushResolutionStep(\n\t\t\t\t\tresolvedName === resolverTarget\n\t\t\t\t\t\t? `resolver:${resolvedName}`\n\t\t\t\t\t\t: `resolver:${resolverTarget}->${resolvedName}`\n\t\t\t\t);\n\t\t\t\tconst resolvedModel = hasManager ? manager.collection(resolvedName) : null;\n\t\t\t\tif (resolvedModel?.useRB) {\n\t\t\t\t\treturn finalizeResolution(resolvedName, 'report-builder', `resolver.useRB:${resolvedName}`);\n\t\t\t\t}\n\t\t\t\tif (isAssistantDirectCollectionFallbackAllowed(resolvedName)) {\n\t\t\t\t\treturn finalizeResolution(resolvedName, 'direct-mongo', `allowlist:${resolvedName}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tif (!resolverErrorLogged) {\n\t\t\t\t\tpushResolutionStep('resolver:error');\n\t\t\t\t\tresolverErrorLogged = true;\n\t\t\t\t}\n\t\t\t\t// Ignore collection-name resolution errors and continue fallback checks.\n\t\t\t}\n\t\t}\n\t}\n\n\tif (db) {\n\t\tfor (const candidate of candidates) {\n\t\t\tif (AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (await doesAssistantCollectionExistInDb(db, candidate)) {\n\t\t\t\treturn finalizeResolution(candidate, 'direct-mongo', `db.exists:${candidate}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const candidate of candidates) {\n\t\tif (isAssistantDirectCollectionFallbackAllowed(candidate)) {\n\t\t\treturn finalizeResolution(candidate, 'direct-mongo', `allowlist:${candidate}`);\n\t\t}\n\t}\n\tthrow new Error('AI assistant report builder bridge: No queryable collection could be resolved.');\n}\n\nfunction findQueryDateField(query: any): string | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tif (Array.isArray(query)) {\n\t\tfor (const entry of query) {\n\t\t\tconst found = findQueryDateField(entry);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tfor (const key of Object.keys(query)) {\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findQueryDateField(query[key]);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (AI_ASSISTANT_DATE_FALLBACKS[key]) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction replaceQueryField(query: any, fromField: string, toField: string): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => replaceQueryField(entry, fromField, toField));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst nextKey = key === fromField ? toField : key;\n\t\tresult[nextKey] = replaceQueryField((query as any)[key], fromField, toField);\n\t});\n\treturn result;\n}\n\nfunction extractDateRangeConditions(query: any): Array<{ field: string; condition: any }> {\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn [];\n\t}\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tObject.keys(query).forEach((key) => {\n\t\tif (key.startsWith('$')) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (query as any)[key];\n\t\tif (value instanceof Date) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object' && hasDateRangeOperators(value)) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction expandQueryDateFallbacks(\n\tquery: any,\n\tschemaFields?: string[]\n): { query: any; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst addedFields: string[] = [];\n\tconst pushField = (field: string) => {\n\t\tif (!field) {\n\t\t\treturn;\n\t\t}\n\t\tif (addedFields.includes(field)) {\n\t\t\treturn;\n\t\t}\n\t\taddedFields.push(field);\n\t};\n\n\t\tconst expandOrArray = (orArray: any[]): any[] => {\n\t\t\tconst existingFields = new Set<string>();\n\t\t\torArray.forEach((entry) => {\n\t\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t\tlet extended = [...orArray];\n\t\t\torArray.forEach((entry) => {\n\t\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dateConditions = extractDateRangeConditions(entry);\n\t\t\t\tdateConditions.forEach((condition) => {\n\t\t\t\t\tconst expansions = buildDateFieldExpansionList(condition.field, schemaFields);\n\t\t\t\t\texpansions.forEach((field) => {\n\t\t\t\t\t\tif (existingFields.has(field)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\textended = [...extended, replaceQueryField(entry, condition.field, field)];\n\t\t\t\t\t\texistingFields.add(field);\n\t\t\t\t\t\tpushField(field);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn extended;\n\t\t};\n\n\tconst visit = (value: any): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value.map((entry) => {\n\t\t\t\tconst visited = visit(entry);\n\t\t\t\tif (visited.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn visited.value;\n\t\t\t});\n\t\t\treturn { value: changed ? nextArray : value, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tlet changed = false;\n\t\tconst next: Record<string, any> = { ...value };\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tif (key === '$or' && Array.isArray(value.$or)) {\n\t\t\t\tconst expanded = expandOrArray(value.$or);\n\t\t\t\tif (expanded.length !== value.$or.length) {\n\t\t\t\t\tnext.$or = expanded;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst visited = visit(value[key]);\n\t\t\tif (visited.changed) {\n\t\t\t\tnext[key] = visited.value;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn { value: changed ? next : value, changed };\n\t};\n\n\tconst result = visit(query);\n\tif (!result.changed || !addedFields.length) {\n\t\treturn null;\n\t}\n\treturn { query: result.value, fields: addedFields };\n}\n\nfunction buildDateFieldExpansionList(field: string, schemaFields?: string[]): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst normalizedLower = normalized.toLowerCase();\n\tconst expansions = new Set<string>();\n\tconst add = (value: string) => {\n\t\tif (value && value !== normalized) {\n\t\t\texpansions.add(value);\n\t\t}\n\t};\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[normalized];\n\tif (fallback) {\n\t\tadd(fallback);\n\t}\n\tif (\n\t\tnormalizedLower.startsWith('date_')\n\t\t|| normalizedLower === 'date'\n\t\t|| normalizedLower.endsWith('_date')\n\t\t|| normalizedLower.includes('_date_')\n\t) {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\tif (normalizedLower === 'createdat' || normalizedLower === 'updatedat') {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\tconst normalizedSchemaFields = Array.isArray(schemaFields)\n\t\t? schemaFields\n\t\t\t.map(value => normalizeOptionalString(value))\n\t\t\t.filter(Boolean)\n\t\t: [];\n\tif (normalizedSchemaFields.length) {\n\t\tconst dateFieldPattern = /(^|\\.)(date($|_)|createdat$|updatedat$|[a-z0-9_]+_at$|[a-z0-9_]+_date$|[a-z0-9_]+_date_[a-z0-9_]*$)/i;\n\t\tlet addedFromSchema = 0;\n\t\tnormalizedSchemaFields.forEach((schemaField) => {\n\t\t\tif (addedFromSchema >= AI_ASSISTANT_DATE_EXPANSION_SCHEMA_MAX_FIELDS) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (schemaField.includes('$')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!dateFieldPattern.test(schemaField)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (schemaField === normalized) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst beforeSize = expansions.size;\n\t\t\tadd(schemaField);\n\t\t\tif (expansions.size > beforeSize) {\n\t\t\t\taddedFromSchema += 1;\n\t\t\t}\n\t\t});\n\t}\n\treturn Array.from(expansions);\n}\n\nfunction expandAggregateDateMatchFallback(\n\tpipeline: Array<Record<string, any>>,\n\tschemaFields?: string[]\n): { pipeline: Array<Record<string, any>>; fields: string[] } | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tconst addedFields = new Set<string>();\n\tconst expandOrArray = (orArray: any[]): { value: any[]; changed: boolean } => {\n\t\tconst existingFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet changed = false;\n\t\tlet expanded = [...orArray];\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst conditions = extractDateRangeConditions(entry);\n\t\t\tconditions.forEach((condition) => {\n\t\t\t\tconst expansions = buildDateFieldExpansionList(condition.field, schemaFields);\n\t\t\t\texpansions.forEach((field) => {\n\t\t\t\t\tif (existingFields.has(field)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\texpanded = [...expanded, replaceQueryField(entry, condition.field, field)];\n\t\t\t\t\texistingFields.add(field);\n\t\t\t\t\taddedFields.add(field);\n\t\t\t\t\tchanged = true;\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\treturn { value: changed ? expanded : orArray, changed };\n\t};\n\tconst visit = (value: any): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value.map((entry) => {\n\t\t\t\tconst visited = visit(entry);\n\t\t\t\tif (visited.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn visited.value;\n\t\t\t});\n\t\t\treturn { value: changed ? nextArray : value, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tlet changed = false;\n\t\tconst next: Record<string, any> = { ...value };\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tif (key === '$or' && Array.isArray((value as any).$or)) {\n\t\t\t\tconst nested = visit((value as any).$or);\n\t\t\t\tconst expanded = expandOrArray(nested.value as any[]);\n\t\t\t\tif (nested.changed || expanded.changed) {\n\t\t\t\t\tnext.$or = expanded.value;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst visited = visit((value as any)[key]);\n\t\t\tif (visited.changed) {\n\t\t\t\tnext[key] = visited.value;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn { value: changed ? next : value, changed };\n\t};\n\tlet pipelineChanged = false;\n\tconst updated = pipeline.map((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\treturn stage;\n\t\t}\n\t\tconst visited = visit(stage.$match);\n\t\tif (!visited.changed) {\n\t\t\treturn stage;\n\t\t}\n\t\tpipelineChanged = true;\n\t\treturn {\n\t\t\t...stage,\n\t\t\t$match: visited.value\n\t\t};\n\t});\n\tif (!pipelineChanged || !addedFields.size) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tpipeline: updated,\n\t\tfields: Array.from(addedFields)\n\t};\n}\n\nexport function expandAggregateDateMatchFallbackForTesting(\n\tpipeline: Array<Record<string, any>>,\n\tschemaFields?: string[]\n): { pipeline: Array<Record<string, any>>; fields: string[] } | null {\n\treturn expandAggregateDateMatchFallback(pipeline, schemaFields);\n}\n\nfunction resolveQueryDateFieldFallback(query: any): { from: string; to: string } | null {\n\tconst dateField = findQueryDateField(query);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction containsForbiddenMongoOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => containsForbiddenMongoOperators(entry));\n\t}\n\tfor (const key of Object.keys(value)) {\n\t\tconst normalized = key.toLowerCase();\n\t\tif (normalized === '$where' || normalized === '$function' || normalized === '$accumulator') {\n\t\t\treturn true;\n\t\t}\n\t\tif (containsForbiddenMongoOperators(value[key])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction buildClientScopeCacheKey(dbName: string, collection: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}`;\n}\n\nfunction buildFieldIndexCacheKey(dbName: string, collection: string, field: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst normalizedField = normalizeOptionalString(field).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}:${normalizedField}`;\n}\n\nasync function collectionHasFieldIndex(db: any, dbName: string, collection: string, field: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tconst normalizedField = normalizeOptionalString(field);\n\tif (!normalizedCollection || !normalizedField) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildFieldIndexCacheKey(dbName, normalizedCollection, normalizedField);\n\tconst cached = AI_ASSISTANT_FIELD_INDEX_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst indexes = await db.collection(normalizedCollection).indexes();\n\t\tconst hasIndex = Array.isArray(indexes)\n\t\t\t&& indexes.some((entry: any) => entry?.key && Object.prototype.hasOwnProperty.call(entry.key, normalizedField));\n\t\tAI_ASSISTANT_FIELD_INDEX_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function collectionHasClientIndex(db: any, dbName: string, collection: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tif (!normalizedCollection) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildClientScopeCacheKey(dbName, normalizedCollection);\n\tconst cached = AI_ASSISTANT_CLIENT_SCOPE_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst hasIndex = await collectionHasFieldIndex(db, dbName, normalizedCollection, 'id_client');\n\t\tAI_ASSISTANT_CLIENT_SCOPE_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction applyClientScopeFilter(query: Record<string, any>, idClient?: string, isSuperAdmin = false): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedClient = normalizeOptionalString(idClient);\n\tif (!normalizedClient) {\n\t\treturn query;\n\t}\n\treturn {\n\t\t$and: [query, { id_client: normalizedClient }]\n\t};\n}\n\nfunction applyCustomerScopeFilter(\n\tquery: Record<string, any>,\n\tcollection: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false\n): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\tif (!normalizedCustomer) {\n\t\treturn query;\n\t}\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst customerField = normalizedCollection === 'users' || normalizedCollection === 'user-versions'\n\t\t? 'other.id_customer'\n\t\t: 'id_customer';\n\treturn {\n\t\t$and: [query, { [customerField]: normalizedCustomer }]\n\t};\n}\n\nfunction buildAssistantProbeQuery(\n\tcollection: string,\n\tidClient?: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false,\n\tincludeClientScope = false\n): Record<string, any> {\n\tlet query: Record<string, any> = {};\n\tif (includeClientScope) {\n\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t}\n\treturn applyCustomerScopeFilter(query, collection, idCustomer, isSuperAdmin);\n}\n\nfunction fetchAssistantProbeDocs(params: {\n\tdb: any;\n\tcollection: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tincludeClientScope: boolean;\n\tmaxTimeMS?: number;\n}): Promise<any[]> {\n\tconst { db, collection, idClient, idCustomer, isSuperAdmin, includeClientScope, maxTimeMS } = params;\n\tconst probeQuery = buildAssistantProbeQuery(collection, idClient, idCustomer, isSuperAdmin, includeClientScope);\n\tconst resolvedMaxTimeMS = resolveAssistantEffectiveMongoMaxTimeMs({\n\t\trequestedMaxTimeMS: maxTimeMS\n\t});\n\treturn db.collection(collection)\n\t\t.find(probeQuery, {\n\t\t\tlimit: AI_ASSISTANT_PROBE_LIMIT,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE,\n\t\t\t...(resolvedMaxTimeMS ? { maxTimeMS: resolvedMaxTimeMS } : {})\n\t\t})\n\t\t.toArray();\n}\n\nconst AI_ASSISTANT_PERMISSION_ACTION_TOKENS = new Set([\n\t'list',\n\t'detail',\n\t'new',\n\t'edit',\n\t'delete',\n\t'create',\n\t'dashboard',\n\t'report',\n\t'reports',\n\t'calendar',\n\t'board',\n\t'timeline',\n\t'settings',\n\t'setting',\n\t'view'\n]);\n\nfunction tokenizeAssistantPermissionScope(value: string): string[] {\n\tconst normalizedRoute = normalizeRouteMatchKey(value);\n\tif (!normalizedRoute) {\n\t\treturn [];\n\t}\n\tconst rawTokens = normalizedRoute\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst tokens: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!normalized) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttokens.push(normalized);\n\t\t});\n\t});\n\treturn Array.from(new Set(tokens));\n}\n\nfunction splitAssistantPermissionTokenSets(value: string): {\n\ttokens: Set<string>;\n\tdomainTokens: Set<string>;\n\tactionTokens: Set<string>;\n} {\n\tconst tokens = tokenizeAssistantPermissionScope(value);\n\tconst actionTokens = new Set<string>();\n\tconst domainTokens = new Set<string>();\n\ttokens.forEach((token) => {\n\t\tif (AI_ASSISTANT_PERMISSION_ACTION_TOKENS.has(token)) {\n\t\t\tactionTokens.add(token);\n\t\t\treturn;\n\t\t}\n\t\tdomainTokens.add(token);\n\t});\n\treturn {\n\t\ttokens: new Set(tokens),\n\t\tdomainTokens,\n\t\tactionTokens\n\t};\n}\n\nfunction isAssistantTokenSetSubset(subset: Set<string>, superset: Set<string>): boolean {\n\tif (!subset.size) {\n\t\treturn false;\n\t}\n\tfor (const token of subset) {\n\t\tif (!superset.has(token)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction buildAssistantPermissionRegex(value: string): RegExp | null {\n\tconst tokens = tokenizeAssistantPermissionScope(value);\n\tif (!tokens.length) {\n\t\treturn null;\n\t}\n\tconst [first, ...rest] = tokens;\n\tlet pattern = `(?:^|[^a-z0-9])${escapeRegexValue(first)}s?`;\n\trest.forEach((token) => {\n\t\tpattern += `(?:[^a-z0-9]+${escapeRegexValue(token)}s?)`;\n\t});\n\tpattern += '(?:$|[^a-z0-9])';\n\treturn new RegExp(pattern, 'i');\n}\n\nfunction isAssistantViewPermissionMatch(grantedPermission: string, requestedView: string): boolean {\n\tconst grantedRoute = normalizeRouteMatchKey(grantedPermission);\n\tconst requestedRoute = normalizeRouteMatchKey(requestedView);\n\tif (!grantedRoute || !requestedRoute) {\n\t\treturn false;\n\t}\n\tif (\n\t\tgrantedRoute === requestedRoute\n\t\t|| grantedRoute.startsWith(`${requestedRoute}/`)\n\t\t|| requestedRoute.startsWith(`${grantedRoute}/`)\n\t) {\n\t\treturn true;\n\t}\n\tconst grantedTokens = splitAssistantPermissionTokenSets(grantedRoute);\n\tconst requestedTokens = splitAssistantPermissionTokenSets(requestedRoute);\n\tif (!grantedTokens.tokens.size || !requestedTokens.tokens.size) {\n\t\treturn false;\n\t}\n\tif (grantedTokens.actionTokens.size && requestedTokens.actionTokens.size) {\n\t\tconst hasSharedAction = Array.from(requestedTokens.actionTokens)\n\t\t\t.some(token => grantedTokens.actionTokens.has(token));\n\t\tif (!hasSharedAction) {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif (!grantedTokens.domainTokens.size || !requestedTokens.domainTokens.size) {\n\t\treturn false;\n\t}\n\tif (isAssistantTokenSetSubset(requestedTokens.domainTokens, grantedTokens.domainTokens)) {\n\t\treturn true;\n\t}\n\tif (\n\t\trequestedTokens.domainTokens.size > 1\n\t\t&& grantedTokens.domainTokens.size > 1\n\t\t&& isAssistantTokenSetSubset(grantedTokens.domainTokens, requestedTokens.domainTokens)\n\t) {\n\t\treturn true;\n\t}\n\tlet sharedTokenCount = 0;\n\trequestedTokens.tokens.forEach((token) => {\n\t\tif (grantedTokens.tokens.has(token)) {\n\t\t\tsharedTokenCount += 1;\n\t\t}\n\t});\n\tconst requestedCoverage = requestedTokens.tokens.size\n\t\t? sharedTokenCount / requestedTokens.tokens.size\n\t\t: 0;\n\tif (sharedTokenCount >= 2 && requestedCoverage >= 0.8) {\n\t\treturn true;\n\t}\n\tconst requestedRegex = buildAssistantPermissionRegex(requestedRoute);\n\tif (requestedRegex && requestedRegex.test(grantedRoute)) {\n\t\treturn true;\n\t}\n\tconst grantedRegex = buildAssistantPermissionRegex(grantedRoute);\n\tif (grantedRegex && grantedRegex.test(requestedRoute)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction userHasViewPermission(user: any, view: string): boolean {\n\tif (!user || !view) {\n\t\treturn false;\n\t}\n\tif (user.roles?.super_admin) {\n\t\treturn true;\n\t}\n\tconst permissions = collectUserViewPermissions(user);\n\tif (permissions.some(permission => isAssistantViewPermissionMatch(permission, view))) {\n\t\treturn true;\n\t}\n\tconst groups = Array.isArray(user.roles?.groups) ? user.roles.groups : [];\n\treturn groups.some(group => isAssistantViewPermissionMatch(normalizeOptionalString(group?.name), view));\n}\n\nexport function collectUserViewPermissions(user: any): string[] {\n\tif (!user) {\n\t\treturn [];\n\t}\n\tconst groups = Array.isArray(user.roles?.groups) ? user.roles.groups : [];\n\tconst miscs = Array.isArray(user.roles?.miscs) ? user.roles.miscs : [];\n\tconst collected: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (value: any) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tcollected.push(normalized);\n\t};\n\tgroups.forEach((group) => {\n\t\tconst views = Array.isArray(group?.views) ? group.views : [];\n\t\tviews.forEach(push);\n\t});\n\tmiscs.forEach(push);\n\treturn collected;\n}\n\nfunction userHasViewTokenPermission(user: any, tokenRegex: RegExp): boolean {\n\tif (!user || !tokenRegex) {\n\t\treturn false;\n\t}\n\tif (user.roles?.super_admin) {\n\t\treturn true;\n\t}\n\tconst permissions = collectUserViewPermissions(user);\n\treturn permissions.some((view) => tokenRegex.test(view));\n}\n\nexport function userHasInvoiceAccess(user: any): boolean {\n\treturn userHasViewTokenPermission(user, AI_ASSISTANT_INVOICE_PERMISSION_PATTERN);\n}\n\nexport function resolveAssistantUserAccessTier(user: any): 'super_admin' | 'customer_portal' | 'client_user' {\n\tif (user?.roles?.super_admin) {\n\t\treturn 'super_admin';\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\treturn customerId ? 'customer_portal' : 'client_user';\n}\n\nfunction requiresInvoicePermission(collection: string): boolean {\n\tconst normalized = normalizeOptionalString(collection).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_INVOICE_PERMISSION_PATTERN.test(normalized);\n}\n\nfunction resolveAssistantPrimaryModuleFromText(text: string): AssistantChangeModule | null {\n\tconst modules = resolveAssistantChangeModulesFromText(text)\n\t\t.filter(module => module !== 'general' && module !== 'internal');\n\treturn modules.length ? modules[0] : null;\n}\n\nfunction formatAssistantModulePermissionLabel(module: AssistantChangeModule): string {\n\tconst normalized = normalizeOptionalString(module).replace(/[_-]+/g, ' ').trim();\n\treturn normalized || 'module';\n}\n\nfunction resolveAssistantIntentDeniedModule(params: {\n\tuser: any;\n\tisSuperAdmin?: boolean;\n\tmessage: string;\n}): AssistantChangeModule | null {\n\tif (!params?.user || params?.isSuperAdmin) {\n\t\treturn null;\n\t}\n\tconst requestedModule = resolveAssistantPrimaryModuleFromText(params?.message || '');\n\tif (!requestedModule) {\n\t\treturn null;\n\t}\n\tif (userHasAssistantChangeModuleAccess(params.user, requestedModule)) {\n\t\treturn null;\n\t}\n\treturn requestedModule;\n}\n\nfunction redactSensitiveFields(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => redactSensitiveFields(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(value).forEach((key) => {\n\t\tif (shouldRedactField(key)) {\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = redactSensitiveFields(value[key]);\n\t});\n\treturn result;\n}\n\nfunction shouldRedactField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_SENSITIVE_FIELDS.some((field) => normalized === field || normalized.includes(field));\n}\n\nfunction resolveCodexTimeoutMs(): number {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(config['AI_ASSISTANT_CODEX_TIMEOUT_MS'] || process.env.AI_ASSISTANT_CODEX_TIMEOUT_MS);\n\tif (raw && raw > 0) {\n\t\treturn round(raw);\n\t}\n\treturn DEFAULT_CODEX_TIMEOUT_MS;\n}\n\nfunction resolveAssistantFastModeEnabled(config?: any): boolean {\n\tconst override = normalizeOptionalBoolean(\n\t\tconfig?.fast_mode\n\t\t|| config?.fastMode\n\t);\n\tif (typeof override === 'boolean') {\n\t\treturn override;\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalBoolean(\n\t\tserverConfig['AI_ASSISTANT_FAST_MODE_ENABLED']\n\t\t\t|| process.env.AI_ASSISTANT_FAST_MODE_ENABLED\n\t);\n\treturn raw === undefined ? false : raw === true;\n}\n\nfunction resolveAssistantAlwaysAllowProbeEnabled(config?: any): boolean {\n\tconst override = normalizeOptionalBoolean(\n\t\tconfig?.always_allow_probe\n\t\t|| config?.alwaysAllowProbe\n\t);\n\tif (typeof override === 'boolean') {\n\t\treturn override;\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalBoolean(\n\t\tserverConfig['AI_ASSISTANT_ALWAYS_ALLOW_PROBE']\n\t\t\t|| process.env.AI_ASSISTANT_ALWAYS_ALLOW_PROBE\n\t);\n\treturn raw === undefined ? false : raw === true;\n}\n\nfunction resolveAssistantRunBudgetMs(config?: any): number {\n\tconst override = normalizeOptionalNumber(\n\t\tconfig?.run_budget_ms\n\t\t|| config?.runBudgetMs\n\t);\n\tif (override && override > 0) {\n\t\treturn Math.max(round(override), 5000);\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(\n\t\tserverConfig['AI_ASSISTANT_RUN_BUDGET_MS']\n\t\t\t|| process.env.AI_ASSISTANT_RUN_BUDGET_MS\n\t);\n\tif (raw && raw > 0) {\n\t\treturn Math.max(round(raw), 5000);\n\t}\n\treturn DEFAULT_AI_ASSISTANT_RUN_BUDGET_MS;\n}\n\nfunction resolveAssistantMongoDefaultMaxTimeMs(config?: any): number {\n\tconst override = normalizeOptionalNumber(\n\t\tconfig?.mongo_max_time_ms\n\t\t|| config?.mongoMaxTimeMs\n\t);\n\tif (override && override > 0) {\n\t\treturn Math.max(round(override), 250);\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(\n\t\tserverConfig['AI_ASSISTANT_MONGO_MAX_TIME_MS']\n\t\t\t|| process.env.AI_ASSISTANT_MONGO_MAX_TIME_MS\n\t);\n\tif (raw && raw > 0) {\n\t\treturn Math.max(round(raw), 250);\n\t}\n\treturn DEFAULT_AI_ASSISTANT_MONGO_MAX_TIME_MS;\n}\n\nfunction resolveAssistantSystemPrompt(config?: any, runtimeContext?: {\n\tmessage?: string;\n\tattachmentText?: string;\n\thistoryText?: string;\n\tcontextText?: string;\n}): string {\n\tconst override = normalizeOptionalString(config?.system_prompt || config?.systemPrompt);\n\tif (override) {\n\t\treturn override;\n\t}\n\tif (!runtimeContext) {\n\t\treturn AI_ASSISTANT_SYSTEM_PROMPT;\n\t}\n\treturn buildAssistantSystemPromptText(\n\t\tbuildAssistantPlatformIntelligencePrompt(runtimeContext)\n\t);\n}\n\nfunction normalizeAssistantRuntimeControl(value: any): AiAssistantRuntimeControl | null {\n\tif (!value || typeof value !== 'object') {\n\t\treturn null;\n\t}\n\tconst deadlineRaw = normalizeOptionalNumber((value as any).deadlineMs);\n\tconst maxTimeRaw = normalizeOptionalNumber((value as any).maxTimeMS);\n\tconst fastModeRaw = normalizeOptionalBoolean((value as any).fastMode);\n\tconst next: AiAssistantRuntimeControl = {};\n\tif (deadlineRaw && deadlineRaw > 0) {\n\t\tnext.deadlineMs = round(deadlineRaw);\n\t}\n\tif (maxTimeRaw && maxTimeRaw > 0) {\n\t\tnext.maxTimeMS = round(maxTimeRaw);\n\t}\n\tif (typeof fastModeRaw === 'boolean') {\n\t\tnext.fastMode = fastModeRaw;\n\t}\n\treturn Object.keys(next).length ? next : null;\n}\n\nfunction resolveAssistantRuntimeRemainingMs(runtime: AiAssistantRuntimeControl | null | undefined): number | null {\n\tconst deadline = normalizeOptionalNumber(runtime?.deadlineMs);\n\tif (!deadline || deadline <= 0) {\n\t\treturn null;\n\t}\n\treturn Math.max(round(deadline) - Date.now(), 0);\n}\n\nfunction hasAssistantRuntimeBudget(\n\truntime: AiAssistantRuntimeControl | null | undefined,\n\tminimumMs = AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS\n): boolean {\n\tconst remaining = resolveAssistantRuntimeRemainingMs(runtime);\n\tif (remaining === null) {\n\t\treturn true;\n\t}\n\treturn remaining >= Math.max(round(minimumMs || 0), 1);\n}\n\nfunction resolveAssistantEffectiveMongoMaxTimeMs(params?: {\n\trequestedMaxTimeMS?: number;\n\truntime?: AiAssistantRuntimeControl | null;\n}): number | undefined {\n\tconst requested = normalizeOptionalNumber(params?.requestedMaxTimeMS);\n\tconst runtimeMax = normalizeOptionalNumber(params?.runtime?.maxTimeMS);\n\tconst configured = resolveAssistantMongoDefaultMaxTimeMs();\n\tlet resolved = requested && requested > 0\n\t\t? round(requested)\n\t\t: configured;\n\tif (runtimeMax && runtimeMax > 0) {\n\t\tresolved = Math.min(resolved, round(runtimeMax));\n\t}\n\tconst remaining = resolveAssistantRuntimeRemainingMs(params?.runtime || null);\n\tif (remaining !== null) {\n\t\tif (remaining < AI_ASSISTANT_MONGO_MIN_STAGE_BUDGET_MS) {\n\t\t\treturn undefined;\n\t\t}\n\t\tresolved = Math.min(resolved, remaining);\n\t}\n\treturn resolved > 0 ? Math.max(round(resolved), 50) : undefined;\n}\n\nfunction resolveCodexWorkerThreadEnabled(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_USE_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_USE_WORKER_THREAD\n\t\t|| config['AI_ASSISTANT_CODEX_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_WORKER_THREAD\n\t);\n\tconst normalized = normalizeOptionalBoolean(raw);\n\tif (typeof normalized === 'boolean') {\n\t\treturn normalized;\n\t}\n\treturn process.env.IS_WORKER_INSTANCE !== 'true';\n}\n\nfunction normalizeCodexModelList(value: any): string[] {\n\tif (Array.isArray(value)) {\n\t\treturn value\n\t\t\t.map(entry => normalizeOptionalString(entry))\n\t\t\t.filter(Boolean);\n\t}\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn [];\n\t}\n\treturn raw\n\t\t.split(',')\n\t\t.map(entry => normalizeOptionalString(entry))\n\t\t.filter(Boolean);\n}\n\nfunction resolveCodexModel(config?: any): string {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig?.model\n\t\t|| config?.codex_model\n\t\t|| serverConfig['AI_ASSISTANT_CODEX_MODEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_MODEL\n\t\t|| serverConfig['AI_TERMINAL_CODEX_MODEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_MODEL\n\t\t|| serverConfig['AI_DASHBOARD_CODEX_MODEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_MODEL\n\t);\n\treturn raw;\n}\n\nfunction resolveCodexFallbackModels(config?: any, primaryModel?: string): string[] {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst primary = normalizeOptionalString(primaryModel || resolveCodexModel(config));\n\tconst models: string[] = [];\n\tconst push = (value: any) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized || normalized === primary || models.includes(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tmodels.push(normalized);\n\t};\n\tnormalizeCodexModelList(config?.fallback_models).forEach(push);\n\tnormalizeCodexModelList(config?.fallbackModels).forEach(push);\n\tpush(config?.fallback_model);\n\tpush(config?.fallbackModel);\n\tnormalizeCodexModelList(serverConfig['AI_ASSISTANT_CODEX_FALLBACK_MODELS'] || process.env.AI_ASSISTANT_CODEX_FALLBACK_MODELS).forEach(push);\n\tpush(serverConfig['AI_ASSISTANT_CODEX_FALLBACK_MODEL'] || process.env.AI_ASSISTANT_CODEX_FALLBACK_MODEL);\n\tnormalizeCodexModelList(serverConfig['AI_TERMINAL_CODEX_FALLBACK_MODELS'] || process.env.AI_TERMINAL_CODEX_FALLBACK_MODELS).forEach(push);\n\tpush(serverConfig['AI_TERMINAL_CODEX_FALLBACK_MODEL'] || process.env.AI_TERMINAL_CODEX_FALLBACK_MODEL);\n\tnormalizeCodexModelList(serverConfig['AI_DASHBOARD_CODEX_FALLBACK_MODELS'] || process.env.AI_DASHBOARD_CODEX_FALLBACK_MODELS).forEach(push);\n\tpush(serverConfig['AI_DASHBOARD_CODEX_FALLBACK_MODEL'] || process.env.AI_DASHBOARD_CODEX_FALLBACK_MODEL);\n\treturn models;\n}\n\nconst CODEX_THOUGHT_LEVEL_VALUES = ['minimal', 'low', 'medium', 'high', 'xhigh'] as const;\ntype CodexThoughtLevel = typeof CODEX_THOUGHT_LEVEL_VALUES[number];\n\nfunction normalizeCodexThoughtLevel(value: any): CodexThoughtLevel | undefined {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif ((CODEX_THOUGHT_LEVEL_VALUES as readonly string[]).includes(normalized)) {\n\t\treturn normalized as CodexThoughtLevel;\n\t}\n\treturn undefined;\n}\n\nfunction resolveConfiguredCodexAutoThoughtLevel(kind: 'simple' | 'complex'): CodexThoughtLevel {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst levelKey = kind === 'simple' ? 'SIMPLE' : 'COMPLEX';\n\tconst fallbackLevel: CodexThoughtLevel = kind === 'simple' ? 'low' : 'high';\n\tconst configured = normalizeCodexThoughtLevel(\n\t\tconfig[`AI_ASSISTANT_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t\t|| process.env[`AI_ASSISTANT_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t\t|| config[`AI_TERMINAL_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t\t|| process.env[`AI_TERMINAL_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t\t|| config[`AI_DASHBOARD_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t\t|| process.env[`AI_DASHBOARD_CODEX_${levelKey}_THOUGHT_LEVEL`]\n\t);\n\treturn configured || fallbackLevel;\n}\n\nexport function resolveCodexThoughtLevel(params?: {\n\tmessage?: string;\n\tattachmentText?: string;\n\trequestType?: AssistantRequestType;\n}): 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_TERMINAL_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_DASHBOARD_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_THOUGHT_LEVEL\n\t);\n\tconst normalized = (raw || '').trim().toLowerCase();\n\tconst explicitLevel = normalizeCodexThoughtLevel(normalized);\n\tconst isBugIssueRequest = params?.requestType === 'bug_issue';\n\tif (!isBugIssueRequest) {\n\t\tif (explicitLevel) {\n\t\t\treturn explicitLevel === 'high' || explicitLevel === 'xhigh'\n\t\t\t\t? 'medium'\n\t\t\t\t: explicitLevel;\n\t\t}\n\t\treturn resolveConfiguredCodexAutoThoughtLevel('simple');\n\t}\n\tif (explicitLevel) {\n\t\treturn explicitLevel;\n\t}\n\tif (normalized === 'auto' || !normalized) {\n\t\treturn resolveConfiguredCodexAutoThoughtLevel('complex');\n\t}\n\treturn 'high';\n}\n\nfunction resolveCodexSettings(options?: { model?: string; fallbackModels?: string[] }): CodexConfig {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst apiKey = (serverConfig['OPENAI_API_KEY'] || process.env.OPENAI_API_KEY || '').trim();\n\tif (!apiKey) {\n\t\tthrow new Error('AI API key missing. Add an AI API key to server config.');\n\t}\n\tconst model = normalizeOptionalString(options?.model) || resolveCodexModel();\n\tconst fallbackModels = resolveCodexFallbackModels(\n\t\t{ fallbackModels: options?.fallbackModels },\n\t\tmodel\n\t);\n\treturn {\n\t\tapiKey,\n\t\tbaseUrl: (serverConfig['OPENAI_BASE_URL'] || process.env.OPENAI_BASE_URL || '').trim() || undefined,\n\t\t...(model ? { model } : {}),\n\t\t...(fallbackModels.length ? { fallbackModel: fallbackModels[0], fallbackModels } : {}),\n\t\tmaxRetries: normalizeOptionalNumber(serverConfig['OPENAI_MAX_RETRIES'] || process.env.OPENAI_MAX_RETRIES),\n\t\tretryDelayMs: normalizeOptionalNumber(serverConfig['OPENAI_RETRY_DELAY_MS'] || process.env.OPENAI_RETRY_DELAY_MS)\n\t};\n}\n\nfunction resolveAssistantFollowupCodexEnabled(config?: any): boolean {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalBoolean(\n\t\tconfig?.followup_enabled\n\t\t|| config?.followupEnabled\n\t\t|| serverConfig['AI_ASSISTANT_CODEX_FOLLOWUP_ENABLED']\n\t\t|| process.env.AI_ASSISTANT_CODEX_FOLLOWUP_ENABLED\n\t\t|| serverConfig['AI_TERMINAL_CODEX_FOLLOWUP_ENABLED']\n\t\t|| process.env.AI_TERMINAL_CODEX_FOLLOWUP_ENABLED\n\t\t|| serverConfig['AI_DASHBOARD_CODEX_FOLLOWUP_ENABLED']\n\t\t|| process.env.AI_DASHBOARD_CODEX_FOLLOWUP_ENABLED\n\t);\n\treturn raw === true;\n}\n\nfunction buildAssistantCodexClientCacheKey(config: CodexConfig): string {\n\treturn JSON.stringify({\n\t\tapiKey: normalizeOptionalString(config?.apiKey),\n\t\tbaseUrl: normalizeOptionalString(config?.baseUrl),\n\t\tmodel: normalizeOptionalString(config?.model),\n\t\tfallbackModel: normalizeOptionalString(config?.fallbackModel),\n\t\tfallbackModels: normalizeCodexModelList(config?.fallbackModels),\n\t\tmaxRetries: config?.maxRetries ?? null,\n\t\tretryDelayMs: config?.retryDelayMs ?? null\n\t});\n}\n\nfunction getAssistantCodexClient(config?: CodexConfig): CodexClient {\n\tconst resolved = config || resolveCodexSettings();\n\tconst key = buildAssistantCodexClientCacheKey(resolved);\n\tconst existing = assistantCodexClientByConfig.get(key);\n\tif (existing) {\n\t\treturn existing;\n\t}\n\tconst client = new CodexClient(resolved);\n\tassistantCodexClientByConfig.set(key, client);\n\treturn client;\n}\n\nclass CodexWorkerBootstrapError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'CodexWorkerBootstrapError';\n\t}\n}\n\nfunction applyCodexStreamStatusHandler(\n\trunOptions: CodexRunOptions,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): CodexRunOptions {\n\tif (!streamStatusHandler) {\n\t\treturn runOptions;\n\t}\n\tconst existing = runOptions?.onStreamEvent;\n\treturn {\n\t\t...runOptions,\n\t\tonStreamEvent: async (event: any) => {\n\t\t\tif (existing) {\n\t\t\t\tawait existing(event);\n\t\t\t}\n\t\t\tconst status = deriveAssistantStreamStatus(event);\n\t\t\tif (status) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t}\n\t};\n}\n\nasync function waitForCodexWorkerMessage(\n\tworker: Worker,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<CodexWorkerResponse> {\n\tfor await (const [message] of on(worker, 'message')) {\n\t\tconst payload = message as CodexWorkerResponse;\n\t\tif (payload?.type === 'stream') {\n\t\t\tconst status = normalizeOptionalString(payload.status);\n\t\t\tif (status && streamStatusHandler) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn payload;\n\t}\n\tthrow new CodexWorkerBootstrapError('AI worker exited before completing.');\n}\n\nasync function runCodexInWorkerThread(\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst streamedOptions = applyCodexStreamStatusHandler(runOptions, streamStatusHandler);\n\tconst normalizedThreadKey = normalizeOptionalString(runOptions?.threadKey);\n\tconst shouldForceInProcessThreadReuse = !!(normalizedThreadKey && runOptions?.reuseThread !== false);\n\tif (shouldForceInProcessThreadReuse) {\n\t\tconst codexClient = getAssistantCodexClient(config);\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\tif (!resolveCodexWorkerThreadEnabled()) {\n\t\tconst codexClient = getAssistantCodexClient(config);\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\tconst workerPath = await resolveCodexWorkerPath();\n\tif (!workerPath) {\n\t\tconst codexClient = getAssistantCodexClient(config);\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\ttry {\n\t\treturn await runCodexInWorkerThreadInternal(workerPath, prompt, runOptions, config, streamStatusHandler);\n\t}\n\tcatch (error) {\n\t\tif (!(error instanceof CodexWorkerBootstrapError)) {\n\t\t\tthrow error;\n\t\t}\n\t\tconsole.error('AI worker bootstrap failed, falling back to in-process run.', error);\n\t\tconst codexClient = getAssistantCodexClient(config);\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n}\n\nasync function runCodexInWorkerThreadInternal(\n\tworkerPath: string,\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst sanitizedOptions = sanitizeCodexRunOptions(runOptions);\n\tlet worker: Worker;\n\n\ttry {\n\t\tworker = new Worker(workerPath, {\n\t\t\tworkerData: {\n\t\t\t\tprompt,\n\t\t\t\trunOptions: sanitizedOptions,\n\t\t\t\tconfig,\n\t\t\t\tstreamStatus: !!streamStatusHandler\n\t\t\t}\n\t\t});\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst wrapped = new CodexWorkerBootstrapError('Failed to start AI worker.');\n\t\t\tif (error instanceof Error && error.stack) {\n\t\t\t\twrapped.stack = error.stack;\n\t\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tconst timeoutMs = (sanitizedOptions?.timeoutMs || resolveCodexTimeoutMs()) + 15000;\n\tconst timeoutController = new AbortController();\n\tconst timeoutPromise = (async () => {\n\t\ttry {\n\t\t\tawait sleepTimeout(timeoutMs, null, { signal: timeoutController.signal });\n\t\t\treturn { type: 'timeout' as const };\n\t\t}\n\t\tcatch (error: any) {\n\t\t\tif (error?.name === 'AbortError') {\n\t\t\t\treturn { type: 'aborted' as const };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t})();\n\n\tconst messagePromise = (async () => {\n\t\tconst message = await waitForCodexWorkerMessage(worker, streamStatusHandler);\n\t\treturn { type: 'message' as const, message };\n\t})();\n\tconst errorPromise = (async () => {\n\t\tconst [error] = await once(worker, 'error');\n\t\treturn { type: 'error' as const, error: error as Error };\n\t})();\n\tconst exitPromise = (async () => {\n\t\tconst [code] = await once(worker, 'exit');\n\t\treturn { type: 'exit' as const, code: code as number };\n\t})();\n\n\tlet outcome: { type: 'message'; message: CodexWorkerResponse }\n\t\t| { type: 'error'; error: Error }\n\t\t| { type: 'exit'; code: number }\n\t\t| { type: 'timeout' }\n\t\t| { type: 'aborted' };\n\n\ttry {\n\t\toutcome = await Promise.race([messagePromise, errorPromise, exitPromise, timeoutPromise]);\n\t}\n\tfinally {\n\t\ttimeoutController.abort();\n\t\tworker.removeAllListeners('error');\n\t\tworker.removeAllListeners('exit');\n\t}\n\n\tif (outcome.type === 'message') {\n\t\tawait terminateWorker(worker);\n\t\tif (outcome.message && outcome.message.ok) {\n\t\t\treturn outcome.message.result || '';\n\t\t}\n\t\tthrow new Error(outcome.message?.error || 'AI worker failed.');\n\t}\n\n\tif (outcome.type === 'timeout') {\n\t\tawait terminateWorker(worker);\n\t\tthrow new CodexWorkerBootstrapError('AI worker timed out.');\n\t}\n\n\tif (outcome.type === 'error') {\n\t\tawait terminateWorker(worker);\n\t\tconst wrapped = new CodexWorkerBootstrapError('AI worker errored before completing.');\n\t\tif (outcome.error?.stack) {\n\t\t\twrapped.stack = outcome.error.stack;\n\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tif (outcome.type === 'exit') {\n\t\tthrow new CodexWorkerBootstrapError(`AI worker exited before completing (code ${outcome.code}).`);\n\t}\n\n\tthrow new CodexWorkerBootstrapError('AI worker aborted before completing.');\n}\n\nasync function terminateWorker(worker: Worker): Promise<void> {\n\ttry {\n\t\tawait worker.terminate();\n\t}\n\tcatch {\n\t\t// Ignore termination errors.\n\t}\n}\n\nfunction sanitizeCodexRunOptions(options: CodexRunOptions): CodexRunOptions {\n\tif (!options) {\n\t\treturn {};\n\t}\n\treturn {\n\t\ttimeoutMs: options.timeoutMs,\n\t\tthreadOptions: options.threadOptions,\n\t\tthreadKey: options.threadKey,\n\t\treuseThread: options.reuseThread,\n\t\tfallbackModels: options.fallbackModels\n\t};\n}\n\nasync function resolveCodexWorkerPath(): Promise<string | null> {\n\tconst jsPath = path.join(__dirname, '../workers/codex-runner.worker.js');\n\tif (await pathExists(jsPath)) {\n\t\treturn jsPath;\n\t}\n\tconst tsPath = path.join(__dirname, '../workers/codex-runner.worker.ts');\n\tif (await pathExists(tsPath)) {\n\t\treturn tsPath;\n\t}\n\treturn null;\n}\n\nasync function pathExists(target: string): Promise<boolean> {\n\ttry {\n\t\tconst stat = await fs.stat(target);\n\t\treturn stat.isFile();\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function directoryExists(target: string): Promise<boolean> {\n\ttry {\n\t\tconst stat = await fs.stat(target);\n\t\treturn stat.isDirectory();\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction parseAssistantPathList(value: any): string[] {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\treturn normalized\n\t\t.split(/[\\n,;]+/g)\n\t\t.map(entry => normalizeOptionalString(entry))\n\t\t.filter(Boolean);\n}\n\nfunction resolveAssistantConfiguredWorkspaceRoots(\n\tserverConfigParam?: Record<string, any>,\n\tenvParam?: Record<string, any>\n): string[] {\n\tconst serverConfig = serverConfigParam || ResolveIOServer.getServerConfig() || {};\n\tconst env = envParam || process.env || {};\n\treturn mergeAssistantHintValues(\n\t\tparseAssistantPathList(serverConfig['AI_ASSISTANT_WORKSPACE_ROOTS']),\n\t\tparseAssistantPathList(env['AI_ASSISTANT_WORKSPACE_ROOTS']),\n\t\tparseAssistantPathList(serverConfig['AI_ASSISTANT_GIT_ROOTS']),\n\t\tparseAssistantPathList(env['AI_ASSISTANT_GIT_ROOTS']),\n\t\tparseAssistantPathList(serverConfig['AI_ASSISTANT_WORKSPACE_ROOT']),\n\t\tparseAssistantPathList(env['AI_ASSISTANT_WORKSPACE_ROOT']),\n\t\tparseAssistantPathList(serverConfig['AI_ASSISTANT_ROOT_WORKSPACE']),\n\t\tparseAssistantPathList(env['AI_ASSISTANT_ROOT_WORKSPACE']),\n\t\tparseAssistantPathList(serverConfig['AI_TERMINAL_WORKSPACE_ROOT']),\n\t\tparseAssistantPathList(env['AI_TERMINAL_WORKSPACE_ROOT']),\n\t\tparseAssistantPathList(serverConfig['AI_DASHBOARD_WORKSPACE_ROOT']),\n\t\tparseAssistantPathList(env['AI_DASHBOARD_WORKSPACE_ROOT'])\n\t);\n}\n\nfunction buildAssistantParentDirectoryCandidates(basePath: string, maxDepth = 4): string[] {\n\tconst normalized = normalizeOptionalString(basePath);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst results: string[] = [];\n\tlet current = path.resolve(normalized);\n\tfor (let depth = 0; depth < Math.max(maxDepth, 0); depth += 1) {\n\t\tconst parent = path.dirname(current);\n\t\tif (!parent || parent === current) {\n\t\t\tbreak;\n\t\t}\n\t\tresults.push(parent);\n\t\tcurrent = parent;\n\t}\n\treturn results;\n}\n\nexport function buildAssistantWorkspaceRootCandidates(params?: {\n\tserverConfig?: Record<string, any>;\n\tenv?: Record<string, any>;\n\tcwd?: string;\n\tdirname?: string;\n}): string[] {\n\tconst serverConfig = params?.serverConfig || ResolveIOServer.getServerConfig() || {};\n\tconst env = params?.env || process.env || {};\n\tconst cwdValue = normalizeOptionalString(params?.cwd || process.cwd());\n\tconst dirnameValue = normalizeOptionalString(params?.dirname || __dirname);\n\tconst homeDir = normalizeOptionalString(os.homedir());\n\tconst configuredRoots = resolveAssistantConfiguredWorkspaceRoots(serverConfig, env);\n\tconst pathCandidates = [\n\t\tserverConfig['AI_ASSISTANT_WORKSPACE_ROOT'],\n\t\tenv['AI_ASSISTANT_WORKSPACE_ROOT'],\n\t\tserverConfig['AI_ASSISTANT_ROOT_WORKSPACE'],\n\t\tenv['AI_ASSISTANT_ROOT_WORKSPACE'],\n\t\tserverConfig['AI_TERMINAL_WORKSPACE_ROOT'],\n\t\tenv['AI_TERMINAL_WORKSPACE_ROOT'],\n\t\tserverConfig['AI_DASHBOARD_WORKSPACE_ROOT'],\n\t\tenv['AI_DASHBOARD_WORKSPACE_ROOT'],\n\t\t'/var/app/current',\n\t\tcwdValue,\n\t\tdirnameValue ? path.resolve(dirnameValue, '../../..') : '',\n\t\tdirnameValue ? path.resolve(dirnameValue, '../../../..') : '',\n\t\thomeDir ? path.resolve(homeDir, 'ResolveIO') : '',\n\t\thomeDir ? path.resolve(homeDir, 'workspace') : '',\n\t\t...configuredRoots,\n\t\t...buildAssistantParentDirectoryCandidates(cwdValue, 5),\n\t\t...buildAssistantParentDirectoryCandidates(dirnameValue, 5)\n\t];\n\tconst seen = new Set<string>();\n\tconst candidates: string[] = [];\n\tpathCandidates.forEach((value) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tconst resolved = path.resolve(normalized);\n\t\tif (!resolved || seen.has(resolved)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(resolved);\n\t\tcandidates.push(resolved);\n\t});\n\treturn candidates;\n}\n\nasync function resolveAssistantWorkspaceRoot(): Promise<string> {\n\tconst candidates = buildAssistantWorkspaceRootCandidates();\n\tlet firstExisting = '';\n\tlet firstNestedGitRoot = '';\n\tfor (const candidate of candidates) {\n\t\tif (!candidate || !(await directoryExists(candidate))) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!firstExisting) {\n\t\t\tfirstExisting = candidate;\n\t\t}\n\t\tconst gitRoot = await resolveAssistantGitRoot(candidate);\n\t\tif (gitRoot) {\n\t\t\treturn gitRoot;\n\t\t}\n\t\tif (!firstNestedGitRoot) {\n\t\t\tconst nestedGitRoots = await resolveAssistantWorkspaceGitRoots(candidate);\n\t\t\tif (nestedGitRoots.length) {\n\t\t\t\tfirstNestedGitRoot = nestedGitRoots[0];\n\t\t\t}\n\t\t}\n\t}\n\tif (firstNestedGitRoot) {\n\t\treturn firstNestedGitRoot;\n\t}\n\tif (firstExisting) {\n\t\treturn firstExisting;\n\t}\n\tthrow new Error('AI assistant workspace root not found.');\n}\n\nconst AI_ASSISTANT_DATA_REQUEST_PATTERNS = [\n\t/\\bshow\\b/,\n\t/\\blist\\b/,\n\t/\\bsummarize\\b/,\n\t/\\bsummary\\b/,\n\t/\\bsnapshot\\b/,\n\t/\\bhow many\\b/,\n\t/\\bcount\\b/,\n\t/\\btotal\\b/,\n\t/\\bnumber of\\b/,\n\t/\\blast\\b/,\n\t/\\brecent\\b/,\n\t/\\bthis week\\b/,\n\t/\\blast month\\b/,\n\t/\\boverdue\\b/,\n\t/\\bopen\\b/,\n\t/\\bclosed\\b/,\n\t/\\bcompleted\\b/,\n\t/\\bmissing\\b/,\n\t/\\bgroup(ed)? by\\b/,\n\t/\\bbreakdown\\b/,\n\t/\\bbreak\\s+up\\b/,\n\t/\\b(by|per)\\s+(user|customer|client|status|driver|assignee|owner|location|type|priority)\\b/,\n\t/\\bby day\\b/,\n\t/\\bby week\\b/,\n\t/\\bby month\\b/,\n\t/\\bby quarter\\b/,\n\t/\\bby year\\b/,\n\t/\\bby (time|date)\\s+period\\b/,\n\t/\\bper day\\b/,\n\t/\\bper week\\b/,\n\t/\\bper month\\b/,\n\t/\\bper quarter\\b/,\n\t/\\bper year\\b/,\n\t/\\bover the last\\b/,\n\t/\\bpast\\s+\\d+\\b/\n];\n\nconst AI_ASSISTANT_NAVIGATION_REQUEST_PATTERNS = [\n\t/\\bwhere\\b/,\n\t/\\bhow do i\\b/,\n\t/\\bhow to\\b/,\n\t/\\bnavigate\\b/,\n\t/\\bgo to\\b/,\n\t/\\bwhich screen\\b/,\n\t/\\bwhich page\\b/,\n\t/\\bwhat menu\\b/,\n\t/\\broute\\b/,\n\t/\\bpath\\b/,\n\t/\\bfind\\b/\n];\n\nconst AI_ASSISTANT_ROUTE_LOOKUP_PATTERNS = [\n\t/\\broute\\s+link\\b/,\n\t/\\broutes?\\s+(?:path|screen|page)\\b/,\n\t/\\bwhat(?:['’]s| is)\\s+the\\s+route\\b/,\n\t/\\bwhere\\b.*\\b(route|screen|page)\\b/,\n\t/\\bwhere\\b.*\\b(list|detail|dashboard|menu)\\b/,\n\t/\\bwhere do i\\s+(?:go|find|open)\\b/,\n\t/\\bwhere can i\\s+(?:go|find|open)\\b/,\n\t/\\bpath\\b/,\n\t/\\bscreen\\b/,\n\t/\\bpage\\b/,\n\t/\\bmenu\\b/,\n\t/\\bnavigation\\b/,\n\t/\\bgo to\\b/,\n\t/\\bnavigate\\b/,\n\t/(?:^|[^a-z0-9])\\/[a-z0-9][a-z0-9/_-]*/i\n];\n\nconst AI_ASSISTANT_STRONG_DATA_PATTERNS = [\n\t/\\bhow many\\b/,\n\t/\\bcount\\b/,\n\t/\\btotal\\b/,\n\t/\\bsum\\b/,\n\t/\\baverage\\b/,\n\t/\\bavg\\b/,\n\t/\\bbreakdown\\b/,\n\t/\\bbreak\\s+up\\b/,\n\t/\\bgroup(ed)? by\\b/,\n\t/\\b(by|per)\\s+(user|customer|client|status|driver|assignee|owner|location|type|priority)\\b/,\n\t/\\bby day\\b/,\n\t/\\bby week\\b/,\n\t/\\bby month\\b/,\n\t/\\bby quarter\\b/,\n\t/\\bby year\\b/,\n\t/\\bper day\\b/,\n\t/\\bper week\\b/,\n\t/\\bper month\\b/,\n\t/\\bper quarter\\b/,\n\t/\\bper year\\b/,\n\t/\\bover the last\\b/,\n\t/\\bpast\\s+\\d+\\b/,\n\t/\\binvoice totals?\\b/,\n\t/\\bpaid totals?\\b/\n];\n\nconst AI_ASSISTANT_FEATURE_INFO_PATTERNS = [\n\t/\\bwhat is\\b/,\n\t/\\bhow does\\b/,\n\t/\\bhow .* work\\b/,\n\t/\\bfeature\\b/,\n\t/\\bworkflow\\b/,\n\t/\\bprocess\\b/,\n\t/\\bexplain\\b/,\n\t/\\bdifference between\\b/,\n\t/\\bwhat\\s+changed\\b/,\n\t/\\brecent\\s+changes?\\b/,\n\t/\\blatest\\s+changes?\\b/,\n\t/\\bwhat\\s+did\\s+(?:the\\s+)?last\\s+(?:system\\s+)?update\\s+(?:just\\s+)?do\\b/i,\n\t/\\blast\\s+system\\s+update\\b/i,\n\t/\\blast\\s+update\\b[\\s\\S]{0,30}\\bdo\\b/i,\n\t/\\bchangelog\\b/,\n\t/\\brelease\\s+notes?\\b/\n];\n\nconst AI_ASSISTANT_BUG_ISSUE_PATTERNS = [\n\t/\\bbug\\b/,\n\t/\\bissue\\b/,\n\t/\\berror\\b/,\n\t/\\bexception\\b(?!\\s+list\\b)/,\n\t/\\bfail(?:ed|ing|ure)?\\b/,\n\t/\\bbroken\\b/,\n\t/\\bnot working\\b/,\n\t/\\bdoesn['’]t work\\b/,\n\t/\\bwhy is this happening\\b/,\n\t/\\broot cause\\b/,\n\t/\\bdebug\\b/,\n\t/\\binvestigat(?:e|ion)\\b/,\n\t/\\bfix\\b/,\n\t/\\bcrash(?:ed|ing)?\\b/,\n\t/\\bgrey(?:ed)?\\s*out\\b/,\n\t/\\bgray(?:ed)?\\s*out\\b/,\n\t/\\bdisabled\\b/,\n\t/\\bwon['’]t\\s+let\\s+me\\b/,\n\t/\\bcan['’]?t\\s+close\\b/,\n\t/\\bwhy\\s+don['’]t\\s+i\\s+see\\b/,\n\t/\\bmissing\\b[\\s\\S]{0,30}\\bdropdown\\b/i,\n\t/\\bdropdown\\b[\\s\\S]{0,30}\\bmissing\\b/i,\n\t/\\bsubmit\\s+button\\b[\\s\\S]{0,60}\\b(red|disabled|grey|gray)\\b/i\n];\n\nfunction isAssistantDataQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tif (isAssistantChangeHistoryQuestion(text)) {\n\t\treturn false;\n\t}\n\tconst hasDataPattern = AI_ASSISTANT_DATA_REQUEST_PATTERNS.some(pattern => pattern.test(text));\n\tif (!hasDataPattern) {\n\t\treturn false;\n\t}\n\tif (isAssistantRouteLookupQuestion(text) && !isAssistantStrongDataQuestion(text)) {\n\t\treturn false;\n\t}\n\tif (isAssistantNavigationQuestion(text) && !isAssistantStrongDataQuestion(text)) {\n\t\treturn false;\n\t}\n\tif (isAssistantBugIssueQuestion(text) && !isAssistantStrongDataQuestion(text)) {\n\t\treturn false;\n\t}\n\tif (isAssistantFeatureInfoQuestion(text) && !isAssistantStrongDataQuestion(text)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isAssistantNavigationQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_NAVIGATION_REQUEST_PATTERNS.some(pattern => pattern.test(text));\n}\n\nfunction isAssistantRouteLookupQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_ROUTE_LOOKUP_PATTERNS.some(pattern => pattern.test(text));\n}\n\nfunction isAssistantStrongDataQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_STRONG_DATA_PATTERNS.some(pattern => pattern.test(text));\n}\n\nfunction isAssistantFeatureInfoQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_FEATURE_INFO_PATTERNS.some(pattern => pattern.test(text));\n}\n\nfunction isAssistantBugIssueQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_BUG_ISSUE_PATTERNS.some(pattern => pattern.test(text));\n}\n\nfunction normalizeAssistantPlannerIntentType(value: string): AssistantRequestType | null {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (normalized === 'data') {\n\t\treturn 'data';\n\t}\n\tif (normalized === 'navigation') {\n\t\treturn 'navigation';\n\t}\n\tif (normalized === 'mixed') {\n\t\treturn 'mixed';\n\t}\n\tif (normalized === 'feature_info' || normalized === 'program_explain') {\n\t\treturn 'feature_info';\n\t}\n\tif (normalized === 'bug_issue') {\n\t\treturn 'bug_issue';\n\t}\n\treturn null;\n}\n\nfunction classifyAssistantRequestByHeuristics(message: string): AssistantRequestClassification {\n\tconst isData = isAssistantDataQuestion(message);\n\tconst isNavigation = isAssistantNavigationQuestion(message);\n\tconst isChangeHistory = isAssistantChangeHistoryQuestion(message);\n\tconst isBug = isAssistantBugIssueQuestion(message);\n\tconst isFeatureInfo = isAssistantFeatureInfoQuestion(message);\n\tlet type: AssistantRequestType = 'unknown';\n\tif (isData && isNavigation) {\n\t\ttype = 'mixed';\n\t}\n\telse if (isData) {\n\t\ttype = 'data';\n\t}\n\telse if (isNavigation) {\n\t\ttype = 'navigation';\n\t}\n\telse if (isChangeHistory) {\n\t\ttype = 'feature_info';\n\t}\n\telse if (isBug) {\n\t\ttype = 'bug_issue';\n\t}\n\telse if (isFeatureInfo) {\n\t\ttype = 'feature_info';\n\t}\n\treturn {\n\t\ttype,\n\t\tdataQuestion: type === 'data' || type === 'mixed',\n\t\tsource: 'heuristic'\n\t};\n}\n\nexport function classifyAssistantRequestType(message: string, plannerOutput?: any): AssistantRequestClassification {\n\tconst heuristic = classifyAssistantRequestByHeuristics(message);\n\tconst plannerIntentRaw = normalizeOptionalString(plannerOutput?.intent?.type).toLowerCase();\n\tconst plannerIntent = normalizeAssistantPlannerIntentType(plannerIntentRaw);\n\tconst plannerShouldFetch = plannerOutput?.dataPlan?.shouldFetchData === true;\n\tif (!plannerIntent) {\n\t\tif (plannerShouldFetch) {\n\t\t\treturn {\n\t\t\t\ttype: heuristic.type === 'navigation' ? 'mixed' : 'data',\n\t\t\t\tdataQuestion: true,\n\t\t\t\tsource: heuristic.type === 'navigation' ? 'merged' : 'planner',\n\t\t\t\tplannerIntentType: plannerIntentRaw || undefined\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t...heuristic,\n\t\t\tplannerIntentType: plannerIntentRaw || undefined\n\t\t};\n\t}\n\tlet resolvedType = plannerIntent;\n\tlet source: AssistantRequestTypeSource = 'planner';\n\tif (plannerShouldFetch && resolvedType !== 'data' && resolvedType !== 'mixed') {\n\t\tresolvedType = resolvedType === 'navigation' ? 'mixed' : 'data';\n\t\tsource = 'merged';\n\t}\n\tif (heuristic.dataQuestion && (resolvedType === 'navigation' || resolvedType === 'feature_info' || resolvedType === 'bug_issue')) {\n\t\tresolvedType = 'mixed';\n\t\tsource = 'merged';\n\t}\n\tconst dataQuestion = plannerShouldFetch || resolvedType === 'data' || resolvedType === 'mixed';\n\treturn {\n\t\ttype: resolvedType,\n\t\tdataQuestion,\n\t\tsource,\n\t\tplannerIntentType: plannerIntentRaw || undefined\n\t};\n}\n\nexport function shouldRunAssistantPlanner(params: {\n\tplannerEnabled: boolean;\n\trequestClassification: AssistantRequestClassification;\n\thasDeterministicHeuristicFastPath: boolean;\n}): boolean {\n\tif (!params?.plannerEnabled) {\n\t\treturn false;\n\t}\n\tif (params?.hasDeterministicHeuristicFastPath) {\n\t\treturn false;\n\t}\n\tconst requestClassification = params?.requestClassification;\n\tif (requestClassification?.dataQuestion) {\n\t\treturn true;\n\t}\n\tconst type = requestClassification?.type || 'unknown';\n\treturn type === 'unknown' || type === 'mixed';\n}\n\nfunction resolveAssistantRequestedTimeGrain(message: string, plannerOutput?: any): AssistantTimeGrain {\n\tconst plannerGrain = normalizeOptionalString(plannerOutput?.dataPlan?.timeRange?.grain).toLowerCase();\n\tif (plannerGrain === 'day' || plannerGrain === 'week' || plannerGrain === 'month' || plannerGrain === 'quarter' || plannerGrain === 'year') {\n\t\treturn plannerGrain as AssistantTimeGrain;\n\t}\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn null;\n\t}\n\tconst mapping: Array<{ grain: Exclude<AssistantTimeGrain, null>; pattern: RegExp }> = [\n\t\t{ grain: 'quarter', pattern: /\\b(quarter|quarters|quarterly|qoq)\\b/i },\n\t\t{ grain: 'month', pattern: /\\b(month|months|monthly|mom)\\b/i },\n\t\t{ grain: 'week', pattern: /\\b(week|weeks|weekly|wow)\\b/i },\n\t\t{ grain: 'day', pattern: /\\b(day|days|daily)\\b/i },\n\t\t{ grain: 'year', pattern: /\\b(year|years|yearly|yoy)\\b/i }\n\t];\n\tconst match = mapping.find(entry => entry.pattern.test(text));\n\treturn match?.grain || null;\n}\n\nfunction hasAssistantDatedLanguage(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tconst patterns = [\n\t\t/\\b(by|per)\\s+(day|week|month|quarter|year|time\\s*period|date\\s*period)\\b/i,\n\t\t/\\b(over|across)\\s+time\\b/i,\n\t\t/\\btime\\s*series\\b/i,\n\t\t/\\btrend(?:ing|s)?\\b/i,\n\t\t/\\b(daily|weekly|monthly|quarterly|yearly)\\b/i,\n\t\t/\\b(each|every)\\s+(day|week|month|quarter|year)\\b/i,\n\t\t/\\bmonth\\s+over\\s+month\\b/i,\n\t\t/\\bquarter\\s+over\\s+quarter\\b/i,\n\t\t/\\byear\\s+over\\s+year\\b/i\n\t];\n\treturn patterns.some(pattern => pattern.test(text));\n}\n\nconst AI_ASSISTANT_BREAKDOWN_DIMENSION_STOPWORDS = new Set([\n\t'of',\n\t'in',\n\t'for',\n\t'with',\n\t'to',\n\t'from',\n\t'over',\n\t'across',\n\t'within',\n\t'between',\n\t'into',\n\t'onto',\n\t'through',\n\t'during',\n\t'and',\n\t'or',\n\t'that',\n\t'which',\n\t'who',\n\t'what',\n\t'when',\n\t'where',\n\t'while',\n\t'than',\n\t'then',\n\t'as',\n\t'is',\n\t'are',\n\t'was',\n\t'were',\n\t'be',\n\t'been',\n\t'being',\n\t'last',\n\t'past',\n\t'previous',\n\t'recent',\n\t'current',\n\t'next',\n\t'this',\n\t'these',\n\t'those',\n\t'now',\n\t'today',\n\t'tomorrow',\n\t'yesterday',\n\t'me',\n\t'my',\n\t'our',\n\t'your',\n\t'their',\n\t'by'\n]);\n\nfunction normalizeAssistantBreakdownDimension(value: string): string {\n\tconst normalized = normalizeOptionalString(value)\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_\\s-]+/g, ' ')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst tokens = normalized\n\t\t.split(/\\s+/g)\n\t\t.filter(Boolean)\n\t\t.filter(token => !['the', 'a', 'an', 'each'].includes(token));\n\tif (!tokens.length) {\n\t\treturn '';\n\t}\n\tconst kept: string[] = [];\n\tfor (const token of tokens) {\n\t\tif (AI_ASSISTANT_BREAKDOWN_DIMENSION_STOPWORDS.has(token)) {\n\t\t\tbreak;\n\t\t}\n\t\tif (/^\\d+$/.test(token)) {\n\t\t\tbreak;\n\t\t}\n\t\tkept.push(token);\n\t\tif (kept.length >= 3) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!kept.length) {\n\t\treturn '';\n\t}\n\treturn kept.join(' ').trim();\n}\n\nfunction extractAssistantRequestedBreakdownDimensions(message: string): string[] {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst results: string[] = [];\n\tconst seen = new Set<string>();\n\tconst add = (value: string) => {\n\t\tconst normalized = normalizeAssistantBreakdownDimension(value);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tresults.push(normalized);\n\t};\n\tconst patterns = [\n\t\t/\\bgroup(?:ed)?\\s+by\\s+([a-z0-9_-]+(?:\\s+[a-z0-9_-]+){0,2})(?=\\s+(?:by|per|for|of|in|with|and|or)\\b|[,.!?;]|$)/gi,\n\t\t/\\bbreak(?:\\s+up|\\s*down)?\\b[\\s\\S]{0,80}?\\bby\\s+([a-z0-9_-]+(?:\\s+[a-z0-9_-]+){0,2})(?=\\s+(?:by|per|for|of|in|with|and|or)\\b|[,.!?;]|$)/gi,\n\t\t/\\b(?:by|per)\\s+(?:each\\s+)?([a-z0-9_-]+(?:\\s+[a-z0-9_-]+){0,2})(?=\\s+(?:by|per|for|of|in|with|and|or)\\b|[,.!?;]|$)/gi,\n\t\t/\\bfor\\s+each\\s+([a-z0-9_-]+(?:\\s+[a-z0-9_-]+){0,2})(?=\\s+(?:by|per|for|of|in|with|and|or)\\b|[,.!?;]|$)/gi\n\t];\n\tpatterns.forEach((pattern) => {\n\t\tlet match: RegExpExecArray | null = pattern.exec(text);\n\t\twhile (match) {\n\t\t\tadd(String(match[1] || ''));\n\t\t\tmatch = pattern.exec(text);\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction hasAssistantGroupingMetricCue(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn /\\b(total|count|number|sum|avg|average|hours?|revenue|sales|billing|volume|throughput|breakdown|rank|ranking|top|how\\s+many)\\b/.test(text)\n\t\t|| /\\b(last|recent)\\s+\\d+\\b/.test(text);\n}\n\nfunction hasAssistantGroupedLanguage(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tconst patterns = [\n\t\t/\\bbreakdown\\b/i,\n\t\t/\\bbreak\\s+up\\b/i,\n\t\t/\\bgroup(?:ed)?\\s+by\\b/i,\n\t\t/\\bby\\s+(day|week|month|quarter|year)\\b/i,\n\t\t/\\bper\\s+(day|week|month|quarter|year)\\b/i,\n\t\t/\\bover\\s+time\\b/i,\n\t\t/\\btime\\s*series\\b/i,\n\t\t/\\btrend(?:ing|s)?\\b/i,\n\t\t/\\bmonth\\s+over\\s+month\\b/i,\n\t\t/\\bquarter\\s+over\\s+quarter\\b/i,\n\t\t/\\byear\\s+over\\s+year\\b/i,\n\t\t/\\btop\\s+\\d+\\b[\\s\\S]{0,60}\\bby\\b/i\n\t];\n\tif (patterns.some(pattern => pattern.test(text))) {\n\t\treturn true;\n\t}\n\tconst dimensions = extractAssistantRequestedBreakdownDimensions(text);\n\tif (!dimensions.length) {\n\t\treturn false;\n\t}\n\tif (dimensions.length >= 2) {\n\t\treturn true;\n\t}\n\treturn hasAssistantGroupingMetricCue(text);\n}\n\nfunction shouldPreferAssistantListDirective(\n\tmessage: string,\n\tplannerOutput: any,\n\trequestClassification: AssistantRequestClassification\n): boolean {\n\tif (!requestClassification?.dataQuestion) {\n\t\treturn false;\n\t}\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tif (hasAssistantGroupedLanguage(text)) {\n\t\treturn false;\n\t}\n\tconst plannerGroupBy = normalizeOptionalString(plannerOutput?.dataPlan?.queryPlan?.groupBy).toLowerCase();\n\tif (plannerGroupBy && plannerGroupBy !== 'none' && plannerGroupBy !== 'null') {\n\t\treturn false;\n\t}\n\tconst plannerMetric = normalizeOptionalString(plannerOutput?.dataPlan?.metric).toLowerCase();\n\tconst plannerLimit = normalizeOptionalNumber(plannerOutput?.dataPlan?.queryPlan?.limit) || 0;\n\tconst hasListVerb = /\\b(show|list|display|give|get)\\b/i.test(text);\n\tconst hasLimitCue = /\\b(last|latest|recent|top)\\s+\\d+\\b/i.test(text) || plannerLimit > 0;\n\tconst hasWindowCue = /\\b(this\\s+(day|week|month|quarter|year)|last\\s+\\d+\\s+(day|days|week|weeks|month|months)|past\\s+\\d+\\s+(day|days|week|weeks|month|months))\\b/i.test(text);\n\tif (plannerMetric.startsWith('last_') && plannerGroupBy !== 'none') {\n\t\treturn true;\n\t}\n\treturn hasListVerb && (hasLimitCue || hasWindowCue);\n}\n\nfunction isAssistantTemporalGroupByValue(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized === 'day'\n\t\t|| normalized === 'week'\n\t\t|| normalized === 'month'\n\t\t|| normalized === 'quarter'\n\t\t|| normalized === 'year'\n\t\t|| normalized === 'date';\n}\n\nexport function shouldEnforceAssistantDatedDirective(\n\tmessage: string,\n\tplannerOutput: any,\n\trequestClassification: AssistantRequestClassification\n): boolean {\n\tif (!requestClassification?.dataQuestion) {\n\t\treturn false;\n\t}\n\tif (shouldPreferAssistantListDirective(message, plannerOutput, requestClassification)) {\n\t\treturn false;\n\t}\n\tconst plannerGroupBy = normalizeOptionalString(plannerOutput?.dataPlan?.queryPlan?.groupBy);\n\tif (isAssistantTemporalGroupByValue(plannerGroupBy)) {\n\t\treturn true;\n\t}\n\treturn hasAssistantDatedLanguage(message);\n}\n\nfunction shouldEnforceAssistantGroupedDirective(\n\tmessage: string,\n\tplannerOutput: any,\n\trequestClassification: AssistantRequestClassification\n): boolean {\n\tif (!requestClassification?.dataQuestion) {\n\t\treturn false;\n\t}\n\tconst plannerGroupBy = normalizeOptionalString(plannerOutput?.dataPlan?.queryPlan?.groupBy).toLowerCase();\n\tif (plannerGroupBy && plannerGroupBy !== 'none' && plannerGroupBy !== 'null') {\n\t\treturn true;\n\t}\n\treturn hasAssistantGroupedLanguage(message);\n}\n\nfunction buildAssistantDirectiveStyleHint(params: {\n\tenforceDated: boolean;\n\tenforceGrouped?: boolean;\n\trequestedTimeGrain: AssistantTimeGrain;\n\trequestedBreakdowns?: string[];\n\tpreferList?: boolean;\n\tstrict?: boolean;\n}): string {\n\tif (params.preferList && !params.enforceDated) {\n\t\treturn [\n\t\t\t'Report style intent: List.',\n\t\t\t'- Prefer REPORT_BUILDER_READ for record-level results (not grouped counts).',\n\t\t\t'- Apply date window filters and sort by the primary date field descending.',\n\t\t\t'- If user asks for location, include location name fields (location/location_name) and id_location for lookup fallback; do not return only location_type unless explicitly requested.'\n\t\t].join('\\n');\n\t}\n\tconst breakdowns = (Array.isArray(params.requestedBreakdowns) ? params.requestedBreakdowns : [])\n\t\t.map(value => normalizeOptionalString(value))\n\t\t.filter(Boolean);\n\tif (!params.enforceDated && params.enforceGrouped) {\n\t\treturn [\n\t\t\t'Report style intent: Grouped.',\n\t\t\t'- Return REPORT_BUILDER_AGG (not REPORT_BUILDER_READ).',\n\t\t\tbreakdowns.length ? `- Requested breakdown dimensions: ${breakdowns.join(', ')}.` : '- Requested breakdown dimensions must be preserved exactly.',\n\t\t\tparams.strict ? '- STRICT: do not return a flat list when grouped dimensions are requested.' : ''\n\t\t].filter(Boolean).join('\\n');\n\t}\n\tif (!params.enforceDated) {\n\t\treturn '';\n\t}\n\tconst grainLabel = params.requestedTimeGrain || 'time period';\n\treturn [\n\t\t'Report style intent: Dated.',\n\t\t`Requested time grain: ${grainLabel}.`,\n\t\t'- Return REPORT_BUILDER_AGG (not REPORT_BUILDER_READ).',\n\t\tbreakdowns.length ? `- Requested breakdown dimensions: ${breakdowns.join(', ')}.` : '- Preserve all explicitly requested breakdown dimensions.',\n\t\t'- Ensure the pipeline groups by the requested time grain and requested breakdown dimensions.',\n\t\t'- For \"last/past N\" windows, use full completed calendar-period bounds in UTC unless the user asks for period-to-date.',\n\t\tparams.strict ? '- STRICT: if unsure, still prefer REPORT_BUILDER_AGG.' : ''\n\t].filter(Boolean).join('\\n');\n}\n\nfunction buildAssistantCodexDirectivePrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText?: string,\n\tdirectiveStyleHintText?: string,\n\tmode: AssistantDirectivePromptMode = 'any',\n\tsystemPromptText = AI_ASSISTANT_SYSTEM_PROMPT\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst trimmedStyleHint = normalizeOptionalString(directiveStyleHintText);\n\tconst styleHintBlock = trimmedStyleHint ? `\\n\\nDirective style hints:\\n${trimmedStyleHint}` : '';\n\tconst instruction = mode === 'aggregate_only'\n\t\t? '\\n\\nInstruction:\\nReturn ONLY a single REPORT_BUILDER_AGG directive line. Do not include any other text.'\n\t\t: '\\n\\nInstruction:\\nReturn ONLY a single REPORT_BUILDER_READ or REPORT_BUILDER_AGG directive line. Do not include any other text.';\n\treturn `System:\\n${systemPromptText}${contextBlock}${historyBlock}${styleHintBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${instruction}`.trim();\n}\n\nfunction buildAssistantCodexPrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText?: string,\n\tsystemPromptText = AI_ASSISTANT_SYSTEM_PROMPT\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\treturn `System:\\n${systemPromptText}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}`.trim();\n}\n\nfunction resolveAssistantPlannerEnabled(config?: any): boolean {\n\tconst override = normalizeOptionalBoolean(\n\t\tconfig?.planner_enabled\n\t\t|| config?.plannerEnabled\n\t);\n\tif (typeof override === 'boolean') {\n\t\treturn override;\n\t}\n\tconst serverConfig = ResolveIOServer.getServerConfig?.() || {};\n\tconst raw = normalizeOptionalBoolean(\n\t\tserverConfig['AI_ASSISTANT_CODEX_PLANNER_ENABLED']\n\t\t\t|| process.env.AI_ASSISTANT_CODEX_PLANNER_ENABLED\n\t);\n\treturn raw === undefined ? false : raw === true;\n}\n\nfunction resolveAssistantPlannerKnownRoutes(user?: any, isSuperAdmin = false): string[] {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tconst unique = new Set<string>();\n\tfor (const route of routes) {\n\t\tconst normalized = normalizeRouteKey(route);\n\t\tif (normalized) {\n\t\t\tunique.add(normalized);\n\t\t}\n\t}\n\tconst normalizedRoutes = Array.from(unique);\n\tconst allowedRoutes = collectAssistantAllowedRoutesForUser(\n\t\tuser,\n\t\tnormalizedRoutes,\n\t\tisSuperAdmin\n\t);\n\tif (allowedRoutes.length) {\n\t\treturn allowedRoutes.slice(0, AI_ASSISTANT_PLANNER_MAX_ROUTES);\n\t}\n\treturn normalizedRoutes.slice(0, AI_ASSISTANT_PLANNER_MAX_ROUTES);\n}\n\nfunction buildAssistantPlannerUserSnapshot(user: any, inputClientId?: string): Record<string, any> {\n\tconst groups = Array.isArray(user?.roles?.groups)\n\t\t? user.roles.groups.map((group: any) => ({\n\t\t\tname: normalizeOptionalString(group?.name) || undefined,\n\t\t\tviews: Array.isArray(group?.views) ? group.views.filter(Boolean) : []\n\t\t}))\n\t\t: [];\n\tconst miscs = Array.isArray(user?.roles?.miscs)\n\t\t? user.roles.miscs.filter(Boolean)\n\t\t: [];\n\tconst other: Record<string, any> = {};\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tif (customerId) {\n\t\tother.id_customer = customerId;\n\t}\n\tconst clientId = normalizeOptionalString(inputClientId) || normalizeOptionalString(user?.other?.id_client);\n\tconst snapshot: Record<string, any> = {\n\t\t_id: user?._id ? String(user._id) : undefined,\n\t\tusername: normalizeOptionalString(user?.username) || undefined,\n\t\tfullname: normalizeOptionalString(user?.fullname) || undefined,\n\t\troles: {\n\t\t\tsuper_admin: !!user?.roles?.super_admin,\n\t\t\tgroups,\n\t\t\tmiscs\n\t\t}\n\t};\n\tif (Object.keys(other).length) {\n\t\tsnapshot.other = other;\n\t}\n\tif (clientId) {\n\t\tsnapshot.id_client = clientId;\n\t}\n\treturn snapshot;\n}\n\nfunction buildAssistantPlannerPrompt(params: {\n\tmessage: string;\n\tattachmentText?: string;\n\tcontextRoute?: string | null;\n\tknownRoutes: string[];\n\tuser: any;\n\tcollectionHints: string[];\n\tfieldHints: string[];\n\tschemaHints?: string[];\n\tmethodHints?: string[];\n\tpublicationHints?: string[];\n\tinputClientId?: string;\n}): string {\n\tconst todayIso = new Date().toISOString().slice(0, 10);\n\tconst userMessage = `${params.message || ''}${params.attachmentText || ''}`.trim();\n\tconst currentRoute = normalizeOptionalString(params.contextRoute || '') || 'null';\n\tconst userSnapshot = buildAssistantPlannerUserSnapshot(params.user, params.inputClientId);\n\tconst templateData = {\n\t\ttoday_iso: todayIso,\n\t\tuser_message: userMessage || '',\n\t\tcurrent_route: currentRoute,\n\t\tknown_routes_json_array: JSON.stringify(params.knownRoutes || []),\n\t\tuser_json: JSON.stringify(userSnapshot || {}),\n\t\tcollection_hints_json_array: JSON.stringify(params.collectionHints || []),\n\t\tfield_hints_json_array: JSON.stringify(params.fieldHints || []),\n\t\tschema_hints_json_array: JSON.stringify(params.schemaHints || []),\n\t\tmethod_hints_json_array: JSON.stringify(params.methodHints || []),\n\t\tpublication_hints_json_array: JSON.stringify(params.publicationHints || [])\n\t};\n\tconst userPrompt = applyTemplate(AI_ASSISTANT_PLANNER_USER_PROMPT_TEMPLATE, templateData);\n\treturn `System:\\n${AI_ASSISTANT_PLANNER_SYSTEM_PROMPT}\\n\\nUser:\\n${userPrompt}`.trim();\n}\n\nfunction hasAssistantRunnerQaConfig(config?: any): boolean {\n\tif (!config || typeof config !== 'object') {\n\t\treturn false;\n\t}\n\treturn [\n\t\t'qa_repair_enabled',\n\t\t'qaRepairEnabled',\n\t\t'qa_evidence_required',\n\t\t'qaEvidenceRequired',\n\t\t'qa_distinct_screenshot_required',\n\t\t'qaDistinctScreenshotRequired',\n\t\t'qa_fail_fast_compile',\n\t\t'qaFailFastCompile',\n\t\t'qa_live_data_required',\n\t\t'qaLiveDataRequired',\n\t\t'qa_self_repair_max_waves',\n\t\t'qaSelfRepairMaxWaves',\n\t\t'qa_policy_instructions',\n\t\t'qaPolicyInstructions'\n\t].some(key => config[key] !== undefined);\n}\n\nfunction shouldIncludeAssistantRunnerContract(input: AiCodexRunInput): boolean {\n\tconst config = input?.config || {};\n\tif (hasAssistantRunnerQaConfig(config)) {\n\t\treturn true;\n\t}\n\tif (normalizeOptionalString(input?.id_app)) {\n\t\treturn true;\n\t}\n\tconst message = normalizeOptionalString(input?.message).toLowerCase();\n\treturn /\\b(fix|change|update|build|implement|bug|qa|test|screenshot|click|page|screen|button|route|data|publication|method)\\b/.test(message);\n}\n\nfunction normalizeAssistantQaPolicyInstructions(config?: any): string[] {\n\tconst raw = Array.isArray(config?.qa_policy_instructions)\n\t\t? config.qa_policy_instructions\n\t\t: (Array.isArray(config?.qaPolicyInstructions) ? config.qaPolicyInstructions : []);\n\treturn raw\n\t\t.map((entry: any) => normalizeOptionalString(entry))\n\t\t.filter(Boolean)\n\t\t.slice(0, 8);\n}\n\nfunction buildAssistantRunnerContractLines(input: AiCodexRunInput): string[] {\n\tif (!shouldIncludeAssistantRunnerContract(input)) {\n\t\treturn [];\n\t}\n\tconst config = input?.config || {};\n\tconst rules = buildResolveIORunnerBasicsRules({\n\t\tcontext: 'ai_terminal',\n\t\tincludeDevServerRules: true,\n\t\tmaxContextBullets: 6,\n\t\tqaRepairEnabled: normalizeOptionalBoolean(config.qa_repair_enabled ?? config.qaRepairEnabled),\n\t\tqaEvidenceRequired: normalizeOptionalBoolean(config.qa_evidence_required ?? config.qaEvidenceRequired),\n\t\tqaDistinctScreenshotRequired: normalizeOptionalBoolean(config.qa_distinct_screenshot_required ?? config.qaDistinctScreenshotRequired),\n\t\tqaFailFastCompile: normalizeOptionalBoolean(config.qa_fail_fast_compile ?? config.qaFailFastCompile),\n\t\tqaLiveDataRequired: normalizeOptionalBoolean(config.qa_live_data_required ?? config.qaLiveDataRequired),\n\t\tqaSelfRepairMaxWaves: normalizeOptionalNumber(config.qa_self_repair_max_waves ?? config.qaSelfRepairMaxWaves),\n\t\tcurrentRoute: normalizeOptionalString(input?.context?.route),\n\t\tcurrentContextMode: normalizeOptionalString(input?.context?.mode),\n\t\tcustomInstructions: normalizeAssistantQaPolicyInstructions(config)\n\t});\n\treturn [\n\t\t'Shared AI runner/QA contract:',\n\t\t...rules.map(rule => `- ${rule}`)\n\t];\n}\n\nfunction buildAssistantContext(\n\tinput: AiCodexRunInput,\n\tuserContext?: {\n\t\tisSuperAdmin?: boolean;\n\t\thasInvoiceAccess?: boolean;\n\t\tcustomerId?: string;\n\t\tcollectionHints?: string[];\n\t\ttermHints?: string[];\n\t\tfieldHints?: string[];\n\t\tschemaHints?: string[];\n\t\tmethodHints?: string[];\n\t\tpublicationHints?: string[];\n\t\trecentToolError?: string;\n\t\tchangeHistoryFastPathBypassedReason?: string;\n\t}\n): string {\n\tconst lines: string[] = [];\n\tconst idApp = normalizeOptionalString(input?.id_app);\n\tif (idApp) {\n\t\tlines.push(`Current app id: ${idApp}`);\n\t}\n\tif (typeof userContext?.isSuperAdmin === 'boolean') {\n\t\tlines.push(`User is super admin: ${userContext.isSuperAdmin ? 'yes' : 'no'}`);\n\t}\n\tif (typeof userContext?.hasInvoiceAccess === 'boolean') {\n\t\tlines.push(`User has invoice access: ${userContext.hasInvoiceAccess ? 'yes' : 'no'}`);\n\t}\n\tconst customerId = normalizeOptionalString(userContext?.customerId);\n\tif (customerId) {\n\t\tlines.push('Customer portal scope: yes');\n\t\tlines.push(`Customer id: ${customerId}`);\n\t}\n\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\tif (contextMode) {\n\t\tlines.push(`Context scope: ${contextMode === 'current' ? 'current page' : contextMode}`);\n\t}\n\tif (contextRoute) {\n\t\tlines.push(`Current page route: ${contextRoute}`);\n\t}\n\tconst runnerContractLines = buildAssistantRunnerContractLines(input);\n\tif (runnerContractLines.length) {\n\t\tlines.push(...runnerContractLines);\n\t}\n\tconst collectionHints = Array.isArray(userContext?.collectionHints)\n\t\t? userContext?.collectionHints.filter(Boolean)\n\t\t: [];\n\tif (collectionHints.length) {\n\t\tlines.push(`Collection hints: ${collectionHints.join(', ')}`);\n\t\tlines.push('Collection hints are candidate roots and related collections; the first hint can be a measured/detail collection. Choose the root collection that owns the primary business object in the request, then join related collections for details/metrics.');\n\t}\n\tconst termHints = Array.isArray(userContext?.termHints)\n\t\t? userContext?.termHints.filter(Boolean)\n\t\t: [];\n\tif (termHints.length) {\n\t\tlines.push(`Term hints: ${termHints.join('; ')}`);\n\t}\n\tconst fieldHints = Array.isArray(userContext?.fieldHints)\n\t\t? userContext.fieldHints.filter(Boolean)\n\t\t: [];\n\tif (fieldHints.length) {\n\t\tfieldHints.forEach((hint) => {\n\t\t\tlines.push(hint);\n\t\t});\n\t}\n\tconst schemaHints = Array.isArray(userContext?.schemaHints)\n\t\t? userContext.schemaHints.filter(Boolean)\n\t\t: [];\n\tif (schemaHints.length) {\n\t\tschemaHints.forEach((hint) => {\n\t\t\tlines.push(hint);\n\t\t});\n\t}\n\tconst methodHints = Array.isArray(userContext?.methodHints)\n\t\t? userContext.methodHints.filter(Boolean)\n\t\t: [];\n\tif (methodHints.length) {\n\t\tlines.push(`Method hints: ${methodHints.join(', ')}`);\n\t}\n\tconst publicationHints = Array.isArray(userContext?.publicationHints)\n\t\t? userContext.publicationHints.filter(Boolean)\n\t\t: [];\n\tif (publicationHints.length) {\n\t\tlines.push(`Publication hints: ${publicationHints.join(', ')}`);\n\t}\n\tconst recentToolError = normalizeOptionalString(userContext?.recentToolError);\n\tif (recentToolError) {\n\t\tlines.push(`Most recent data-query error: ${recentToolError}`);\n\t}\n\tconst changeHistoryBypassReason = normalizeOptionalString(userContext?.changeHistoryFastPathBypassedReason);\n\tif (changeHistoryBypassReason) {\n\t\tlines.push(`Change history fast path unavailable: ${changeHistoryBypassReason}`);\n\t\tlines.push('For change-history requests, do not conclude unavailable. Ask for manual git output with a GIT_TOOL_REQUEST directive.');\n\t}\n\tconst mongoDb = normalizeOptionalString(input?.mongo?.database);\n\tconst mongoDbs = Array.isArray(input?.mongo?.databases)\n\t\t? input.mongo.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tconst mongoAccess = normalizeOptionalString(input?.mongo?.access)\n\t\t|| (input?.mongo?.readonly === true ? 'read' : '');\n\tif (mongoDb) {\n\t\tlines.push(`Mongo database: ${mongoDb}`);\n\t}\n\tif (mongoDbs.length) {\n\t\tlines.push(`Mongo databases allowed: ${mongoDbs.join(', ')}`);\n\t}\n\tif (mongoAccess) {\n\t\tlines.push(`Mongo access: ${mongoAccess}`);\n\t}\n\treturn lines.join('\\n');\n}\n\nfunction buildAssistantFieldHints(\n\tmessage: string,\n\tcollectionNames: string[],\n\toptions?: { maxCollections?: number; maxFields?: number }\n): string[] {\n\tconst normalizedMessage = normalizeOptionalString(message);\n\tif (!normalizedMessage || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst maxCollections = typeof options?.maxCollections === 'number'\n\t\t? Math.max(options.maxCollections, 0)\n\t\t: AI_ASSISTANT_CONTEXT_MAX_COLLECTIONS;\n\tconst maxFields = typeof options?.maxFields === 'number'\n\t\t? Math.max(options.maxFields, 0)\n\t\t: AI_ASSISTANT_CONTEXT_MAX_FIELDS_PER_COLLECTION;\n\tif (!maxCollections || !maxFields) {\n\t\treturn [];\n\t}\n\tconst baseTokens = tokenizeFieldKey(normalizedMessage);\n\tconst expandedTokens = expandFieldTokens(baseTokens);\n\tconst tokenSet = new Set(expandedTokens);\n\t[\n\t\t'date',\n\t\t'status',\n\t\t'total',\n\t\t'amount',\n\t\t'paid',\n\t\t'balance',\n\t\t'grand',\n\t\t'subtotal',\n\t\t'invoice',\n\t\t'revenue',\n\t\t'sales',\n\t\t'billing',\n\t\t'payment'\n\t].forEach((token) => tokenSet.add(token));\n\n\tconst hints: string[] = [];\n\tconst candidates = collectionNames.filter(Boolean).slice(0, maxCollections);\n\tcandidates.forEach((collection) => {\n\t\tconst fields = getCollectionSchemaFieldNames(collection);\n\t\tif (!fields.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst scored = fields\n\t\t\t.filter(field => field && !shouldRedactField(field))\n\t\t\t.map((field) => {\n\t\t\t\tconst tokens = tokenizeFieldKey(field);\n\t\t\t\tif (!tokens.length) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet score = tokens.filter(token => tokenSet.has(token)).length;\n\t\t\t\tconst hasDate = tokens.includes('date');\n\t\t\t\tconst hasStatus = tokens.includes('status');\n\t\t\t\tconst hasTotal = tokens.includes('total') || tokens.includes('amount') || tokens.includes('paid') || tokens.includes('balance');\n\t\t\t\tif (score === 0 && (hasDate || hasStatus || hasTotal)) {\n\t\t\t\t\tscore = 1;\n\t\t\t\t}\n\t\t\t\tif (score <= 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (isAssistantIdField(field)) {\n\t\t\t\t\tscore -= 1;\n\t\t\t\t}\n\t\t\t\tif (field.includes('.$.') && score < 2) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn { field, score };\n\t\t\t})\n\t\t\t.filter((entry): entry is { field: string; score: number } => !!entry)\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (a.score !== b.score) {\n\t\t\t\t\treturn b.score - a.score;\n\t\t\t\t}\n\t\t\t\treturn a.field.localeCompare(b.field);\n\t\t\t})\n\t\t\t.slice(0, maxFields)\n\t\t\t.map(entry => entry.field);\n\n\t\tif (scored.length) {\n\t\t\thints.push(`Field hints (${collection}): ${scored.join(', ')}`);\n\t\t}\n\t});\n\treturn hints;\n}\n\nfunction formatAssistantLookupMappingHint(mapping: {\n\tlocalKey: string;\n\tlookupCollection: string;\n\tlookupKey: string;\n}): string {\n\tconst localKey = normalizeLookupPath(mapping?.localKey || '')\n\t\t|| normalizeOptionalString(mapping?.localKey);\n\tconst lookupCollection = normalizeOptionalString(mapping?.lookupCollection);\n\tconst lookupKey = normalizeLookupPath(mapping?.lookupKey || '')\n\t\t|| normalizeOptionalString(mapping?.lookupKey)\n\t\t|| '_id';\n\tif (!localKey || !lookupCollection || !lookupKey) {\n\t\treturn '';\n\t}\n\tif (shouldRedactField(localKey) || shouldRedactField(lookupKey)) {\n\t\treturn '';\n\t}\n\treturn `${localKey}->${lookupCollection}.${lookupKey}`;\n}\n\nexport function buildAssistantSchemaHints(\n\tcollectionNames: string[],\n\toptions?: { maxCollections?: number; maxFields?: number; maxLookups?: number }\n): string[] {\n\tif (!Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst maxCollections = typeof options?.maxCollections === 'number'\n\t\t? Math.max(options.maxCollections, 0)\n\t\t: AI_ASSISTANT_CONTEXT_MAX_COLLECTIONS;\n\tconst maxFields = typeof options?.maxFields === 'number'\n\t\t? Math.max(options.maxFields, 0)\n\t\t: AI_ASSISTANT_CONTEXT_MAX_SCHEMA_FIELDS_PER_COLLECTION;\n\tconst maxLookups = typeof options?.maxLookups === 'number'\n\t\t? Math.max(options.maxLookups, 0)\n\t\t: AI_ASSISTANT_CONTEXT_MAX_LOOKUPS_PER_COLLECTION;\n\tif (!maxCollections || (!maxFields && !maxLookups)) {\n\t\treturn [];\n\t}\n\tconst hints: string[] = [];\n\tconst candidates = collectionNames.filter(Boolean).slice(0, maxCollections);\n\tcandidates.forEach((collection) => {\n\t\tconst metadata = getAssistantCollectionMetadata(collection);\n\t\tconst fields = Array.isArray(metadata?.fields) ? metadata.fields : [];\n\t\tconst lookups = Array.isArray(metadata?.lookups) ? metadata.lookups : [];\n\t\tconst schemaFields = maxFields\n\t\t\t? fields\n\t\t\t\t.map(field => normalizeLookupPath(field) || normalizeOptionalString(field))\n\t\t\t\t.filter(field => !!field && !shouldRedactField(field))\n\t\t\t\t.slice(0, maxFields)\n\t\t\t: [];\n\t\tconst lookupMappings = maxLookups\n\t\t\t? mergeAssistantHintValues(\n\t\t\t\tlookups\n\t\t\t\t\t.map(mapping => formatAssistantLookupMappingHint(mapping))\n\t\t\t\t\t.filter(Boolean)\n\t\t\t).slice(0, maxLookups)\n\t\t\t: [];\n\t\tif (!schemaFields.length && !lookupMappings.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst sections: string[] = [];\n\t\tif (schemaFields.length) {\n\t\t\tsections.push(`fields: ${schemaFields.join(', ')}`);\n\t\t}\n\t\tif (lookupMappings.length) {\n\t\t\tsections.push(`report-builder lookups: ${lookupMappings.join(', ')}`);\n\t\t}\n\t\thints.push(`Schema hints (${collection}): ${sections.join(' | ')}`);\n\t});\n\treturn hints;\n}\n\ntype ClientRouteIndex = {\n\tset: Set<string>;\n\tmap: Map<string, string>;\n\tsize: number;\n};\n\nlet cachedClientRouteIndex: ClientRouteIndex | null = null;\n\nfunction normalizeRouteKey(value: string): string {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;\n\treturn withSlash.replace(/\\/+$/, '');\n}\n\nfunction normalizeRouteMatchKey(value: string): string {\n\treturn normalizeRouteKey(value).toLowerCase();\n}\n\nfunction buildClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tconst set = new Set<string>();\n\tconst map = new Map<string, string>();\n\tfor (const route of routes) {\n\t\tconst normalized = normalizeRouteKey(route);\n\t\tif (!normalized) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchKey = normalized.toLowerCase();\n\t\tset.add(matchKey);\n\t\tif (!map.has(matchKey)) {\n\t\t\tmap.set(matchKey, normalized);\n\t\t}\n\t}\n\treturn { set, map, size: routes.length };\n}\n\nfunction getClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tif (cachedClientRouteIndex && cachedClientRouteIndex.size === routes.length) {\n\t\treturn cachedClientRouteIndex;\n\t}\n\tcachedClientRouteIndex = buildClientRouteIndex();\n\treturn cachedClientRouteIndex;\n}\n\nconst AI_ASSISTANT_ROUTE_TOKEN_STOPWORDS = new Set([\n\t'the',\n\t'a',\n\t'an',\n\t'to',\n\t'for',\n\t'of',\n\t'in',\n\t'on',\n\t'at',\n\t'and',\n\t'or',\n\t'i',\n\t'me',\n\t'my',\n\t'we',\n\t'us',\n\t'you',\n\t'our',\n\t'please',\n\t'this',\n\t'that',\n\t'these',\n\t'those',\n\t'is',\n\t'are',\n\t'do',\n\t'did',\n\t'can',\n\t'could',\n\t'would',\n\t'should',\n\t'what',\n\t'where',\n\t'which',\n\t'how',\n\t'route',\n\t'path',\n\t'link',\n\t'screen',\n\t'page',\n\t'menu',\n\t'navigation',\n\t'navigate',\n\t'go',\n\t'open'\n]);\n\nfunction extractAssistantRouteMentions(message: string): string[] {\n\tconst raw = normalizeOptionalString(message);\n\tconst pattern = /(?:^|[^a-z0-9])(\\/[a-z0-9][a-z0-9/_-]*)/gi;\n\tconst matches: string[] = [];\n\tlet match: RegExpExecArray | null;\n\twhile ((match = pattern.exec(raw))) {\n\t\tconst route = normalizeOptionalString(match?.[1]);\n\t\tif (route) {\n\t\t\tmatches.push(route);\n\t\t}\n\t}\n\tconst unique = new Set<string>();\n\tconst routes: string[] = [];\n\tmatches.forEach((entry) => {\n\t\tconst normalized = normalizeRouteKey(entry);\n\t\tif (!normalized || unique.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tunique.add(normalized);\n\t\troutes.push(normalized);\n\t});\n\treturn routes;\n}\n\nfunction tokenizeAssistantRouteQuery(message: string): string[] {\n\tconst rawTokens = normalizeOptionalString(message)\n\t\t.toLowerCase()\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst tokens: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!normalized || AI_ASSISTANT_ROUTE_TOKEN_STOPWORDS.has(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttokens.push(normalized);\n\t\t});\n\t});\n\treturn Array.from(new Set(tokens));\n}\n\nfunction formatAssistantRouteLabel(route: string): string {\n\tconst parts = normalizeRouteKey(route).split('/').filter(Boolean);\n\tif (!parts.length) {\n\t\treturn 'Route';\n\t}\n\tconst pretty = parts\n\t\t.slice(-2)\n\t\t.map((segment) => segment.replace(/[-_]+/g, ' ').replace(/\\b[a-z]/g, (char) => char.toUpperCase()));\n\treturn pretty.join(' / ');\n}\n\nfunction isAssistantRouteAllowed(route: string, allowedRoutes: string[]): boolean {\n\tconst normalized = normalizeRouteMatchKey(route);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn allowedRoutes.some((allowedRoute) => {\n\t\tconst allowedKey = normalizeRouteMatchKey(allowedRoute);\n\t\tif (!allowedKey) {\n\t\t\treturn false;\n\t\t}\n\t\treturn allowedKey === normalized\n\t\t\t|| allowedKey.startsWith(`${normalized}/`)\n\t\t\t|| normalized.startsWith(`${allowedKey}/`);\n\t});\n}\n\nfunction resolveAssistantBestAllowedRoute(route: string, allowedRoutes: string[]): string | null {\n\tconst normalized = normalizeRouteMatchKey(route);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst exact = allowedRoutes.find(candidate => normalizeRouteMatchKey(candidate) === normalized);\n\tif (exact) {\n\t\treturn exact;\n\t}\n\tconst prefix = allowedRoutes.find((candidate) => {\n\t\tconst candidateKey = normalizeRouteMatchKey(candidate);\n\t\tif (!candidateKey) {\n\t\t\treturn false;\n\t\t}\n\t\treturn candidateKey.startsWith(`${normalized}/`) || normalized.startsWith(`${candidateKey}/`);\n\t});\n\treturn prefix || null;\n}\n\nexport function collectAssistantAllowedRoutesForUser(user: any, allRoutes: string[], isSuperAdmin: boolean): string[] {\n\tconst normalizedRoutes = Array.isArray(allRoutes)\n\t\t? allRoutes.map(route => normalizeRouteKey(route)).filter(Boolean)\n\t\t: [];\n\tif (isSuperAdmin) {\n\t\treturn mergeAssistantHintValues(normalizedRoutes);\n\t}\n\tconst views = collectUserViewPermissions(user)\n\t\t.map(value => normalizeRouteKey(value))\n\t\t.filter(value => value.startsWith('/'));\n\tif (!views.length) {\n\t\treturn [];\n\t}\n\tconst allowed: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (route: string) => {\n\t\tconst normalized = normalizeRouteKey(route);\n\t\tif (!normalized || seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tallowed.push(normalized);\n\t};\n\tconst allRouteEntries = normalizedRoutes.map((route) => ({ route }));\n\tviews.forEach((view) => {\n\t\tconst canonical = normalizedRoutes.find(route => normalizeRouteMatchKey(route) === normalizeRouteMatchKey(view));\n\t\tif (canonical) {\n\t\t\tpush(canonical);\n\t\t}\n\t\tlet matched = false;\n\t\tallRouteEntries.forEach((entry) => {\n\t\t\tif (isAssistantViewPermissionMatch(view, entry.route)) {\n\t\t\t\tpush(entry.route);\n\t\t\t\tmatched = true;\n\t\t\t}\n\t\t});\n\t\tif (!canonical && !matched) {\n\t\t\tpush(view);\n\t\t}\n\t});\n\treturn allowed;\n}\n\nfunction resolveAssistantAllowedRoutesForUser(user: any, isSuperAdmin: boolean): string[] {\n\tconst index = getClientRouteIndex();\n\tconst allRoutes = Array.from(index.map.values());\n\treturn collectAssistantAllowedRoutesForUser(user, allRoutes, isSuperAdmin);\n}\n\nexport function rankAssistantNavigationRoutes(message: string, routes: string[], limit = 3): string[] {\n\tconst normalizedMessage = normalizeOptionalString(message).toLowerCase();\n\tif (!normalizedMessage || !Array.isArray(routes) || !routes.length || limit <= 0) {\n\t\treturn [];\n\t}\n\tconst dedupedRoutes = Array.from(new Set(routes.map(route => normalizeRouteKey(route)).filter(Boolean)));\n\tif (!dedupedRoutes.length) {\n\t\treturn [];\n\t}\n\tconst explicitRoutes = extractAssistantRouteMentions(normalizedMessage);\n\tconst queryTokens = tokenizeAssistantRouteQuery(normalizedMessage);\n\tconst scored = dedupedRoutes\n\t\t.map((route) => {\n\t\t\tconst routeKey = route.toLowerCase();\n\t\t\tconst routeTokens = routeKey.split(/[^a-z0-9]+/g).filter(Boolean);\n\t\t\tlet score = 0;\n\t\t\tif (explicitRoutes.some(value => routeKey === value.toLowerCase())) {\n\t\t\t\tscore += 220;\n\t\t\t}\n\t\t\telse if (explicitRoutes.some((value) => routeKey.startsWith(`${value.toLowerCase()}/`) || value.toLowerCase().startsWith(`${routeKey}/`))) {\n\t\t\t\tscore += 130;\n\t\t\t}\n\t\t\tif (normalizedMessage.includes(routeKey)) {\n\t\t\t\tscore += 90;\n\t\t\t}\n\t\t\tqueryTokens.forEach((token) => {\n\t\t\t\tif (routeTokens.includes(token)) {\n\t\t\t\t\tscore += 14;\n\t\t\t\t}\n\t\t\t\telse if (routeTokens.some(routeToken => routeToken.startsWith(token) || routeToken.includes(token))) {\n\t\t\t\t\tscore += 7;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (/\\blist\\b/.test(normalizedMessage) && routeTokens.includes('list')) {\n\t\t\t\tscore += 8;\n\t\t\t}\n\t\t\tif (/\\bdetail\\b/.test(normalizedMessage) && routeTokens.includes('detail')) {\n\t\t\t\tscore += 8;\n\t\t\t}\n\t\t\tif (/\\bnew\\b/.test(normalizedMessage) && routeTokens.includes('new')) {\n\t\t\t\tscore += 8;\n\t\t\t}\n\t\t\tif (/\\bedit\\b/.test(normalizedMessage) && routeTokens.includes('edit')) {\n\t\t\t\tscore += 8;\n\t\t\t}\n\t\t\tif (/\\bdashboard\\b/.test(normalizedMessage) && routeTokens.includes('dashboard')) {\n\t\t\t\tscore += 6;\n\t\t\t}\n\t\t\treturn { route, score };\n\t\t})\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => {\n\t\t\tif (a.score !== b.score) {\n\t\t\t\treturn b.score - a.score;\n\t\t\t}\n\t\t\tif (a.route.length !== b.route.length) {\n\t\t\t\treturn a.route.length - b.route.length;\n\t\t\t}\n\t\t\treturn a.route.localeCompare(b.route);\n\t\t});\n\treturn scored.slice(0, limit).map(entry => entry.route);\n}\n\nexport function shouldUseAssistantNavigationFastPath(message: string, hasAttachments = false): boolean {\n\tif (hasAttachments) {\n\t\treturn false;\n\t}\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tif (isAssistantChangeHistoryQuestion(text)) {\n\t\treturn false;\n\t}\n\tif (isAssistantBugIssueQuestion(text)) {\n\t\treturn false;\n\t}\n\tif (!isAssistantRouteLookupQuestion(text)) {\n\t\treturn false;\n\t}\n\treturn !isAssistantStrongDataQuestion(text);\n}\n\nexport function evaluateAssistantNavigationFastPathWithRoutes(params: {\n\tmessage: string;\n\thasAttachments: boolean;\n\tallowedRoutes: string[];\n\tcontextRoute?: string;\n}): AssistantNavigationFastPathResult | null {\n\tif (!shouldUseAssistantNavigationFastPath(params.message, params.hasAttachments)) {\n\t\treturn null;\n\t}\n\tconst allowedRoutes = mergeAssistantHintValues(params.allowedRoutes || []);\n\tif (!allowedRoutes.length) {\n\t\treturn {\n\t\t\tresponse: 'I couldn’t find any in-app routes assigned to your account. Ask an admin to grant a view permission.',\n\t\t\troutes: [],\n\t\t\treason: 'no_access'\n\t\t};\n\t}\n\tconst explicitRoutes = extractAssistantRouteMentions(params.message);\n\tconst explicitAllowed = explicitRoutes\n\t\t.map(route => resolveAssistantBestAllowedRoute(route, allowedRoutes))\n\t\t.filter((route): route is string => !!route);\n\tif (explicitRoutes.length && explicitAllowed.length) {\n\t\tconst resolved = mergeAssistantHintValues(explicitAllowed).slice(0, 3);\n\t\tconst lines = [resolved.length === 1 ? 'Use this in-app route:' : 'Use one of these in-app routes:'];\n\t\tresolved.forEach((route, index) => {\n\t\t\tif (resolved.length > 1) {\n\t\t\t\tlines.push(`${index + 1}. ${formatAssistantRouteLabel(route)}`);\n\t\t\t}\n\t\t\tlines.push(route);\n\t\t});\n\t\treturn {\n\t\t\tresponse: lines.join('\\n'),\n\t\t\troutes: resolved,\n\t\t\treason: 'explicit'\n\t\t};\n\t}\n\tif (explicitRoutes.length && !explicitAllowed.length) {\n\t\tconst fallback = rankAssistantNavigationRoutes(params.message, allowedRoutes, 1);\n\t\tconst lines = ['I can’t open that route with your current permissions.'];\n\t\tif (fallback.length) {\n\t\t\tlines.push('Closest route you can access:');\n\t\t\tlines.push(fallback[0]);\n\t\t}\n\t\tlines.push('If you need access to a different route, ask an admin to add the matching view permission.');\n\t\treturn {\n\t\t\tresponse: lines.join('\\n'),\n\t\t\troutes: fallback,\n\t\t\treason: 'permission_denied'\n\t\t};\n\t}\n\tlet ranked = rankAssistantNavigationRoutes(params.message, allowedRoutes, 3);\n\tif (!ranked.length) {\n\t\tconst contextRoute = normalizeRouteKey(params.contextRoute || '');\n\t\tif (contextRoute && isAssistantRouteAllowed(contextRoute, allowedRoutes)) {\n\t\t\tranked = [resolveAssistantBestAllowedRoute(contextRoute, allowedRoutes) || contextRoute];\n\t\t}\n\t}\n\tif (!ranked.length) {\n\t\tranked = allowedRoutes.slice(0, 3);\n\t}\n\tif (!ranked.length) {\n\t\treturn null;\n\t}\n\tconst lines = [ranked.length === 1 ? 'Use this in-app route:' : 'Best matching in-app routes:'];\n\tranked.forEach((route, index) => {\n\t\tif (ranked.length > 1) {\n\t\t\tlines.push(`${index + 1}. ${formatAssistantRouteLabel(route)}`);\n\t\t}\n\t\tlines.push(route);\n\t});\n\treturn {\n\t\tresponse: lines.join('\\n'),\n\t\troutes: ranked,\n\t\treason: 'ranked'\n\t};\n}\n\nfunction resolveAssistantNavigationFastPathResponse(params: {\n\tmessage: string;\n\thasAttachments: boolean;\n\tuser: any;\n\tisSuperAdmin: boolean;\n\tcontextRoute?: string;\n}): AssistantNavigationFastPathResult | null {\n\tconst allowedRoutes = resolveAssistantAllowedRoutesForUser(params.user, params.isSuperAdmin);\n\treturn evaluateAssistantNavigationFastPathWithRoutes({\n\t\tmessage: params.message,\n\t\thasAttachments: params.hasAttachments,\n\t\tallowedRoutes,\n\t\tcontextRoute: params.contextRoute\n\t});\n}\n\nconst AI_ASSISTANT_CHANGE_HISTORY_PATTERNS = [\n\t/\\bwhat\\s+changed\\b/i,\n\t/\\bwhat\\s+changed\\s+on\\b/i,\n\t/\\bwhat\\s+changed\\s+on\\s+(?:this|that|the)\\s+page\\b/i,\n\t/\\bmost\\s+recent\\s+change\\b/i,\n\t/\\blatest\\s+changes?\\b/i,\n\t/\\brecent\\s+changes?\\b/i,\n\t/\\bchanged\\s+recently\\b/i,\n\t/\\bwhen\\s+was\\b[\\s\\S]{0,80}\\bupdated\\b/i,\n\t/\\blast\\s+time\\b[\\s\\S]{0,80}\\bupdated\\b/i,\n\t/\\bwhen\\s+did\\b[\\s\\S]{0,80}\\bget\\s+added\\b/i,\n\t/\\bwhen\\s+was\\b[\\s\\S]{0,80}\\badded\\b/i,\n\t/\\bwhen\\s+does\\b[\\s\\S]{0,80}\\bget\\s+added\\b/i,\n\t/\\bwhat\\s+did\\s+(?:the\\s+)?last\\s+(?:system\\s+)?update\\s+(?:just\\s+)?do\\b/i,\n\t/\\blast\\s+system\\s+update\\b[\\s\\S]{0,40}\\bdo\\b/i,\n\t/\\bhow\\s+long\\b.*\\bbeen\\s+(this|that)\\s+way\\b/i,\n\t/\\bhow\\s+long\\b[\\s\\S]{0,120}\\bbeen\\s+on\\s+(?:this|that|the)\\s+(?:page|screen|dashboard|menu|route)\\b/i,\n\t/\\bhow\\s+long\\b[\\s\\S]{0,120}\\bbeen\\s+on\\s+here\\b/i,\n\t/\\bhow\\s+long\\b[\\s\\S]{0,80}\\bbeen\\s+around\\b/i,\n\t/\\bsince\\s+when\\b/i,\n\t/\\bwhen\\s+was\\b[\\s\\S]{0,80}\\bintroduced\\b/i,\n\t/\\bchangelog\\b/i,\n\t/\\brelease\\s+notes?\\b/i,\n\t/\\bgithub\\b/i,\n\t/\\bcommits?\\b/i,\n\t/\\bupdate\\s+history\\b/i\n];\n\nconst AI_ASSISTANT_CHANGE_HISTORY_TOKEN_STOPWORDS = new Set([\n\t'the',\n\t'a',\n\t'an',\n\t'to',\n\t'for',\n\t'of',\n\t'in',\n\t'on',\n\t'at',\n\t'and',\n\t'or',\n\t'i',\n\t'me',\n\t'my',\n\t'we',\n\t'us',\n\t'you',\n\t'our',\n\t'is',\n\t'are',\n\t'do',\n\t'did',\n\t'does',\n\t'can',\n\t'could',\n\t'would',\n\t'should',\n\t'what',\n\t'when',\n\t'where',\n\t'which',\n\t'why',\n\t'how',\n\t'long',\n\t'has',\n\t'have',\n\t'had',\n\t'been',\n\t'this',\n\t'that',\n\t'these',\n\t'those',\n\t'it',\n\t'new',\n\t'changed',\n\t'change',\n\t'recent',\n\t'recently',\n\t'latest',\n\t'last',\n\t'time',\n\t'updated',\n\t'update',\n\t'updates',\n\t'added',\n\t'around',\n\t'page',\n\t'screen',\n\t'feature',\n\t'features',\n\t'history',\n\t'list',\n\t'dashboard',\n\t'server',\n\t'management',\n\t'system',\n\t'release',\n\t'notes',\n\t'github',\n\t'commits',\n\t'commit'\n]);\n\nfunction isAssistantChangeHistoryQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_CHANGE_HISTORY_PATTERNS.some(pattern => pattern.test(text));\n}\n\nexport function shouldUseAssistantChangeHistoryFastPath(message: string, hasAttachments = false): boolean {\n\tif (hasAttachments) {\n\t\treturn false;\n\t}\n\treturn isAssistantChangeHistoryQuestion(message);\n}\n\nfunction resolveAssistantChangeHistoryLimit(message: string): number {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn AI_ASSISTANT_CHANGE_HISTORY_DEFAULT_LIMIT;\n\t}\n\tconst explicit = text.match(/\\b(?:last|latest|recent|past)\\s+(\\d+)\\s+(?:changes?|commits?)\\b/i);\n\tif (explicit?.[1]) {\n\t\tconst parsed = Number(explicit[1]);\n\t\tif (Number.isFinite(parsed) && parsed > 0) {\n\t\t\treturn Math.min(Math.max(round(parsed), 1), AI_ASSISTANT_CHANGE_HISTORY_MAX_LIMIT);\n\t\t}\n\t}\n\tif (/\\bmost\\s+recent\\b|\\blatest\\s+change\\b/i.test(text)) {\n\t\treturn 1;\n\t}\n\treturn AI_ASSISTANT_CHANGE_HISTORY_DEFAULT_LIMIT;\n}\n\nfunction resolveAssistantChangeHistoryDepth(message: string, limit: number): number {\n\tconst normalizedLimit = Math.min(Math.max(round(limit || 0), 1), AI_ASSISTANT_CHANGE_HISTORY_MAX_LIMIT);\n\tif (isAssistantChangeDurationQuestion(message)) {\n\t\treturn Math.min(\n\t\t\tMath.max(normalizedLimit * 40, AI_ASSISTANT_CHANGE_HISTORY_MAX_DEPTH),\n\t\t\tAI_ASSISTANT_CHANGE_HISTORY_DURATION_MAX_DEPTH\n\t\t);\n\t}\n\treturn Math.min(\n\t\tMath.max(normalizedLimit * 8, AI_ASSISTANT_CHANGE_HISTORY_MIN_DEPTH),\n\t\tAI_ASSISTANT_CHANGE_HISTORY_MAX_DEPTH\n\t);\n}\n\nfunction resolveAssistantChangeHistoryFetchEnabled(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst normalized = normalizeOptionalBoolean(\n\t\tconfig['AI_ASSISTANT_GIT_FETCH_ENABLED']\n\t\t|| process.env.AI_ASSISTANT_GIT_FETCH_ENABLED\n\t\t|| config['AI_ASSISTANT_GITHUB_FETCH_ENABLED']\n\t\t|| process.env.AI_ASSISTANT_GITHUB_FETCH_ENABLED\n\t);\n\treturn normalized === true;\n}\n\nfunction shouldAssistantFetchGitRemote(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn /\\b(github|latest|newest|up to date|up-to-date|pull|remote)\\b/i.test(text);\n}\n\nfunction resolveAssistantChangeHistoryKeywords(message: string): string[] {\n\tconst rawTokens = normalizeOptionalString(message)\n\t\t.toLowerCase()\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst keywords: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!normalized || normalized.length < 4 || AI_ASSISTANT_CHANGE_HISTORY_TOKEN_STOPWORDS.has(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tkeywords.push(normalized);\n\t\t});\n\t});\n\treturn Array.from(new Set(keywords));\n}\n\nfunction scoreAssistantChangeHistoryCommitByKeywords(commit: AssistantChangeHistoryCommit, keywords: string[]): number {\n\tif (!Array.isArray(keywords) || !keywords.length) {\n\t\treturn 0;\n\t}\n\tconst subject = normalizeOptionalString(commit?.subject).toLowerCase();\n\tconst files = Array.isArray(commit?.files)\n\t\t? commit.files.map(file => normalizeOptionalString(file).toLowerCase()).filter(Boolean).join(' ')\n\t\t: '';\n\tconst haystack = `${subject} ${files}`.trim();\n\tif (!haystack) {\n\t\treturn 0;\n\t}\n\tlet score = 0;\n\tkeywords.forEach((keyword) => {\n\t\tif (keyword && haystack.includes(keyword)) {\n\t\t\tscore += keyword.length >= 8 ? 2 : 1;\n\t\t}\n\t});\n\treturn score;\n}\n\nfunction resolveAssistantChangeModulesFromText(message: string): AssistantChangeModule[] {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst modules: AssistantChangeModule[] = [];\n\tconst push = (value: AssistantChangeModule) => {\n\t\tif (!modules.includes(value)) {\n\t\t\tmodules.push(value);\n\t\t}\n\t};\n\tif (/\\b(invoice|invoices|invoicing|revenue|billing|payment|payments|paid)\\b/i.test(text)) {\n\t\tpush('invoice');\n\t}\n\tif (/\\b(work[\\s-]*order|wo)\\b/i.test(text) || hasAssistantPurchaseOrderAliasTerms(text)) {\n\t\tpush('work_order');\n\t}\n\tif (/\\broute\\b/i.test(text) || hasAssistantDeliveryAliasTerms(text)) {\n\t\tpush('delivery');\n\t}\n\tif (/\\b(blend|blending)\\b/i.test(text)) {\n\t\tpush('blend');\n\t}\n\tif (hasAssistantChemicalCatalogAliasTerms(text)) {\n\t\tpush('chemical');\n\t}\n\tif (/\\b(job|jobs)\\b/i.test(text)) {\n\t\tpush('job');\n\t}\n\tif (/\\bcustomer[\\s-]*portal\\b/i.test(text)) {\n\t\tpush('portal');\n\t}\n\tif (/\\b(customer|client|account)\\b/i.test(text)) {\n\t\tpush('customer');\n\t}\n\treturn modules;\n}\n\nfunction resolveAssistantChangeModulesFromPath(filePath: string): AssistantChangeModule[] {\n\tconst normalized = normalizeOptionalString(filePath).toLowerCase();\n\tif (!normalized) {\n\t\treturn ['internal'];\n\t}\n\tconst modules: AssistantChangeModule[] = [];\n\tconst push = (value: AssistantChangeModule) => {\n\t\tif (!modules.includes(value)) {\n\t\t\tmodules.push(value);\n\t\t}\n\t};\n\tif (/\\binvoices?\\b/.test(normalized)) {\n\t\tpush('invoice');\n\t}\n\tif (/\\bwork[-_/ ]?order|wo[-_/ ]|orders?\\b/.test(normalized) || hasAssistantPurchaseOrderAliasPathTerms(normalized)) {\n\t\tpush('work_order');\n\t}\n\tif (hasAssistantDeliveryAliasPathTerms(normalized)) {\n\t\tpush('delivery');\n\t}\n\tif (/\\bblend\\b/.test(normalized)) {\n\t\tpush('blend');\n\t}\n\tif (/\\b(chemical|product|item)\\b/.test(normalized)) {\n\t\tpush('chemical');\n\t}\n\tif (/\\bjobs?\\b/.test(normalized)) {\n\t\tpush('job');\n\t}\n\tif (/\\bcustomer[-_/ ]portal\\b/.test(normalized)) {\n\t\tpush('portal');\n\t}\n\tif (/\\bcustomer|client|account\\b/.test(normalized)) {\n\t\tpush('customer');\n\t}\n\tif (/\\breadme|docs?|changelog|release\\b/.test(normalized)) {\n\t\tpush('general');\n\t}\n\tif (!modules.length) {\n\t\tpush('internal');\n\t}\n\treturn modules;\n}\n\nfunction userHasAssistantChangeModuleAccess(user: any, module: AssistantChangeModule): boolean {\n\tif (!user) {\n\t\treturn false;\n\t}\n\tif (user?.roles?.super_admin) {\n\t\treturn true;\n\t}\n\tswitch (module) {\n\t\tcase 'invoice':\n\t\t\treturn userHasInvoiceAccess(user);\n\t\tcase 'work_order':\n\t\t\treturn userHasViewTokenPermission(user, /work[-_/ ]?order|dispatch|operations|field|delivery|route|bol|pso|sales[-_/ ]?order|purchase[-_/ ]?order|\\bpo\\b|\\bpos\\b|continuous|ats|treat(?:ment|ing)|asset/i);\n\t\tcase 'delivery':\n\t\t\treturn userHasViewTokenPermission(user, /delivery|route|dispatch|work[-_/ ]?order|bol|pso|sales[-_/ ]?order|truck[-_/ ]?treat(?:ing)?|treater|specialty|batch[-_/ ]?(?:treat(?:ing)?|job)|continuous|ats|automated[-_/ ]?treatment[-_/ ]?system|isotank|chemical[-_/ ]?trailer|vac[-_/ ]?truck|asset|treatment[-_/ ]?plan|treatments?/i);\n\t\tcase 'blend':\n\t\t\treturn userHasViewTokenPermission(user, /blend|mix/i);\n\t\tcase 'chemical':\n\t\t\treturn userHasViewTokenPermission(user, /chemical|blend|product|item|inventory/i);\n\t\tcase 'job':\n\t\t\treturn userHasViewTokenPermission(user, /job|work[-_/ ]?order/i);\n\t\tcase 'portal':\n\t\t\treturn userHasViewTokenPermission(user, /customer[-_/ ]?portal|customer/i);\n\t\tcase 'customer':\n\t\t\treturn userHasViewTokenPermission(user, /customer|client|account|portal/i);\n\t\tcase 'general':\n\t\t\treturn true;\n\t\tcase 'internal':\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nfunction isAssistantChangeDurationQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\treturn /\\b(how long|since when|been this way|for a while)\\b/i.test(text);\n}\n\nfunction formatAssistantChangeDate(value: string): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parsed = new Date(normalized);\n\tif (Number.isNaN(parsed.getTime())) {\n\t\treturn normalized.slice(0, 10);\n\t}\n\treturn parsed.toISOString().slice(0, 10);\n}\n\nfunction sanitizeAssistantChangeSubject(value: string): string {\n\tconst normalized = normalizeOptionalString(value)\n\t\t.replace(/\\s+/g, ' ')\n\t\t.replace(/^\\[[^\\]]+\\]\\s*/, '')\n\t\t.trim();\n\tif (!normalized) {\n\t\treturn 'Updated internal logic';\n\t}\n\tconst trimmed = normalized.replace(/[.]+$/, '');\n\tif (trimmed.length <= 120) {\n\t\treturn trimmed;\n\t}\n\treturn `${trimmed.slice(0, 117).trim()}...`;\n}\n\nfunction summarizeAssistantChangeThemes(commits: AssistantChangeHistoryCommit[]): string[] {\n\tconst score = new Map<string, number>();\n\tconst add = (label: string) => {\n\t\tscore.set(label, (score.get(label) || 0) + 1);\n\t};\n\t(Array.isArray(commits) ? commits : []).forEach((commit) => {\n\t\tconst subject = normalizeOptionalString(commit?.subject).toLowerCase();\n\t\tif (!subject) {\n\t\t\treturn;\n\t\t}\n\t\tif (/\\b(fix|fixed|bug|issue|error|hotfix|patch)\\b/i.test(subject)) {\n\t\t\tadd('bug fixes');\n\t\t\treturn;\n\t\t}\n\t\tif (/\\b(perf|performance|optimi[sz]e|latency|speed)\\b/i.test(subject)) {\n\t\t\tadd('performance improvements');\n\t\t\treturn;\n\t\t}\n\t\tif (/\\b(feature|add|added|new|support|enable|enabled)\\b/i.test(subject)) {\n\t\t\tadd('feature updates');\n\t\t\treturn;\n\t\t}\n\t\tif (/\\b(refactor|cleanup|restructure|rename)\\b/i.test(subject)) {\n\t\t\tadd('code cleanup');\n\t\t\treturn;\n\t\t}\n\t\tadd('maintenance updates');\n\t});\n\treturn Array.from(score.entries())\n\t\t.sort((a, b) => b[1] - a[1])\n\t\t.slice(0, 3)\n\t\t.map(entry => entry[0]);\n}\n\nasync function resolveAssistantGitRoot(startDir: string): Promise<string> {\n\tlet current = normalizeOptionalString(startDir);\n\tif (!current) {\n\t\treturn '';\n\t}\n\tcurrent = path.resolve(current);\n\twhile (current) {\n\t\tconst gitPath = path.join(current, '.git');\n\t\tif (await directoryExists(gitPath) || await pathExists(gitPath)) {\n\t\t\treturn current;\n\t\t}\n\t\tconst parent = path.dirname(current);\n\t\tif (!parent || parent === current) {\n\t\t\tbreak;\n\t\t}\n\t\tcurrent = parent;\n\t}\n\treturn '';\n}\n\nfunction shouldSkipAssistantGitDiscoveryDirectory(name: string): boolean {\n\tconst normalized = normalizeOptionalString(name).toLowerCase();\n\tif (!normalized) {\n\t\treturn true;\n\t}\n\tconst skipNames = new Set([\n\t\t'node_modules',\n\t\t'dist',\n\t\t'build',\n\t\t'tmp',\n\t\t'temp',\n\t\t'coverage',\n\t\t'logs',\n\t\t'log',\n\t\t'.next',\n\t\t'.nuxt'\n\t]);\n\treturn normalized.startsWith('.') || skipNames.has(normalized);\n}\n\nasync function resolveAssistantWorkspaceGitRoots(workspaceRoot: string): Promise<string[]> {\n\tconst roots: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (value: string) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tconst resolved = path.resolve(normalized);\n\t\tif (!resolved || seen.has(resolved)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(resolved);\n\t\troots.push(resolved);\n\t};\n\tpush(await resolveAssistantGitRoot(workspaceRoot));\n\tconst configuredRoots = resolveAssistantConfiguredWorkspaceRoots();\n\tfor (const configuredRoot of configuredRoots) {\n\t\tif (roots.length >= AI_ASSISTANT_GIT_DISCOVERY_MAX_ROOTS) {\n\t\t\tbreak;\n\t\t}\n\t\tpush(await resolveAssistantGitRoot(configuredRoot));\n\t}\n\tconst queue: Array<{ dir: string; depth: number }> = [];\n\tconst queued = new Set<string>();\n\tconst enqueue = (dir: string, depth: number) => {\n\t\tconst normalized = normalizeOptionalString(dir);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tconst resolved = path.resolve(normalized);\n\t\tif (queued.has(resolved)) {\n\t\t\treturn;\n\t\t}\n\t\tqueued.add(resolved);\n\t\tqueue.push({ dir: resolved, depth });\n\t};\n\tenqueue(workspaceRoot, 0);\n\tconfiguredRoots.forEach(root => enqueue(root, 0));\n\twhile (queue.length && roots.length < AI_ASSISTANT_GIT_DISCOVERY_MAX_ROOTS) {\n\t\tconst next = queue.shift();\n\t\tif (!next) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet entries: Array<{ name: string; isDirectory?: () => boolean }> = [];\n\t\ttry {\n\t\t\tentries = await fs.readdir(next.dir, { withFileTypes: true });\n\t\t}\n\t\tcatch {\n\t\t\tentries = [];\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (roots.length >= AI_ASSISTANT_GIT_DISCOVERY_MAX_ROOTS) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!entry?.isDirectory?.()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst childName = normalizeOptionalString(entry.name);\n\t\t\tif (shouldSkipAssistantGitDiscoveryDirectory(childName)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst candidate = path.join(next.dir, childName);\n\t\t\tconst gitPath = path.join(candidate, '.git');\n\t\t\tif (await directoryExists(gitPath) || await pathExists(gitPath)) {\n\t\t\t\tpush(candidate);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (next.depth + 1 < AI_ASSISTANT_GIT_DISCOVERY_MAX_DEPTH) {\n\t\t\t\tenqueue(candidate, next.depth + 1);\n\t\t\t}\n\t\t}\n\t}\n\treturn roots;\n}\n\nasync function runAssistantGitCommand(gitRoot: string, args: string[]): Promise<string> {\n\tconst result = await execFileAsync('git', args, {\n\t\tcwd: gitRoot,\n\t\ttimeout: AI_ASSISTANT_GIT_COMMAND_TIMEOUT_MS,\n\t\tmaxBuffer: 1024 * 1024 * 4\n\t});\n\treturn String((result as any)?.stdout || '').trim();\n}\n\nfunction parseAssistantGitLogOutput(raw: string): AssistantChangeHistoryCommit[] {\n\tconst text = String(raw || '');\n\tif (!text) {\n\t\treturn [];\n\t}\n\tconst records = text\n\t\t.split('\\x1e')\n\t\t.map(entry => entry.trim())\n\t\t.filter(Boolean);\n\tconst commits: AssistantChangeHistoryCommit[] = [];\n\trecords.forEach((record) => {\n\t\tconst lines = record\n\t\t\t.split(/\\r?\\n/g)\n\t\t\t.map(line => line.trim())\n\t\t\t.filter(Boolean);\n\t\tif (!lines.length) {\n\t\t\treturn;\n\t\t}\n\t\tconst [dateRaw, subjectRaw] = String(lines[0] || '').split('\\x1f');\n\t\tconst subject = sanitizeAssistantChangeSubject(subjectRaw || '');\n\t\tif (!subject) {\n\t\t\treturn;\n\t\t}\n\t\tconst files = lines.slice(1).filter(Boolean);\n\t\tconst moduleSet = new Set<AssistantChangeModule>();\n\t\tfiles.forEach((file) => {\n\t\t\tresolveAssistantChangeModulesFromPath(file).forEach((module) => moduleSet.add(module));\n\t\t});\n\t\tif (!moduleSet.size) {\n\t\t\tresolveAssistantChangeModulesFromText(subject).forEach((module) => moduleSet.add(module));\n\t\t}\n\t\tif (!moduleSet.size) {\n\t\t\tmoduleSet.add('general');\n\t\t}\n\t\tcommits.push({\n\t\t\tdate: normalizeOptionalString(dateRaw),\n\t\t\tsubject,\n\t\t\tfiles,\n\t\t\tmodules: Array.from(moduleSet)\n\t\t});\n\t});\n\treturn commits;\n}\n\nexport function buildAssistantChangeHistorySummaryFromCommits(params: {\n\tmessage: string;\n\tuser: any;\n\tisSuperAdmin: boolean;\n\tcommits: AssistantChangeHistoryCommit[];\n\tbranch?: string;\n\trepositoryName?: string;\n\tnow?: Date;\n}): AssistantChangeHistoryFastPathResult {\n\tconst message = normalizeOptionalString(params.message);\n\tconst branch = normalizeOptionalString(params.branch);\n\tconst repositoryName = normalizeOptionalString(params.repositoryName).toLowerCase();\n\tconst isLibraryRepository = /(?:^|[-_/])(resolveio[-_/])?(server[-_/]?lib|client[-_/]?lib)(?:$|[-_/])/i.test(repositoryName);\n\tconst now = params.now instanceof Date && !Number.isNaN(params.now.getTime()) ? params.now : new Date();\n\tconst commits = Array.isArray(params.commits) ? params.commits : [];\n\tconst requestedModules = resolveAssistantChangeModulesFromText(message);\n\tconst hasRequestedScope = requestedModules.length > 0;\n\tconst requestedScopeAllowed = !hasRequestedScope\n\t\t|| params.isSuperAdmin\n\t\t|| requestedModules.some(module => userHasAssistantChangeModuleAccess(params.user, module));\n\tconst scopedCommits = hasRequestedScope\n\t\t? commits.filter(commit => commit.modules.some(module => requestedModules.includes(module)))\n\t\t: commits;\n\tconst permittedCommits = params.isSuperAdmin\n\t\t? scopedCommits\n\t\t: scopedCommits.filter(commit => (\n\t\t\tcommit.modules.some(module => userHasAssistantChangeModuleAccess(params.user, module))\n\t\t));\n\tconst asksDuration = isAssistantChangeDurationQuestion(message);\n\tconst title = `Recent change summary${branch ? ` (${branch})` : ''}:`;\n\tif (!requestedScopeAllowed || !permittedCommits.length) {\n\t\tconst lines = [\n\t\t\ttitle,\n\t\t\t'- I can only share a high-level summary for your access level.',\n\t\t\t'- Recent updates included bug fixes, reliability improvements, and maintenance tasks.'\n\t\t];\n\t\tif (asksDuration) {\n\t\t\tlines.push('- This area appears stable over recent history, but detailed timelines require additional access.');\n\t\t}\n\t\treturn {\n\t\t\tresponse: lines.join('\\n'),\n\t\t\treason: 'generic',\n\t\t\tcommitCount: 0,\n\t\t\tgeneric: true,\n\t\t\t...(branch ? { branch } : {})\n\t\t};\n\t}\n\tconst featureKeywords = resolveAssistantChangeHistoryKeywords(message);\n\tconst keywordScopedCommits = featureKeywords.length\n\t\t? permittedCommits\n\t\t\t.map((commit, index) => ({\n\t\t\t\tcommit,\n\t\t\t\tindex,\n\t\t\t\tscore: scoreAssistantChangeHistoryCommitByKeywords(commit, featureKeywords)\n\t\t\t}))\n\t\t\t.filter(entry => entry.score > 0)\n\t\t\t.sort((a, b) => (b.score - a.score) || (a.index - b.index))\n\t\t\t.map(entry => entry.commit)\n\t\t: [];\n\tconst relevantCommits = keywordScopedCommits.length ? keywordScopedCommits : permittedCommits;\n\tconst themes = summarizeAssistantChangeThemes(relevantCommits);\n\tconst limit = resolveAssistantChangeHistoryLimit(message);\n\tconst topCommits = relevantCommits.slice(0, Math.max(limit, 1));\n\tconst lines = [title];\n\tif (themes.length) {\n\t\tlines.push(`- Themes: ${themes.join(', ')}.`);\n\t}\n\ttopCommits.forEach((commit) => {\n\t\tconst dateText = formatAssistantChangeDate(commit.date) || 'recent';\n\t\tif (isLibraryRepository) {\n\t\t\tlines.push(`- ${dateText}: Platform/library update.`);\n\t\t\treturn;\n\t\t}\n\t\tlines.push(`- ${dateText}: ${sanitizeAssistantChangeSubject(commit.subject)}.`);\n\t});\n\tif (asksDuration) {\n\t\tif (featureKeywords.length && !keywordScopedCommits.length) {\n\t\t\tlines.push('- I could not find exact feature-term matches in recent commits, so this estimate uses the closest available history.');\n\t\t}\n\t\tconst datedCommits = relevantCommits\n\t\t\t.map(commit => ({ commit, date: new Date(commit.date) }))\n\t\t\t.filter(entry => !Number.isNaN(entry.date.getTime()));\n\t\tif (datedCommits.length) {\n\t\t\tconst oldest = datedCommits\n\t\t\t\t.map(entry => entry.date)\n\t\t\t\t.reduce((acc, current) => (current.getTime() < acc.getTime() ? current : acc), datedCommits[0].date);\n\t\t\tconst days = Math.max(0, Math.floor((now.getTime() - oldest.getTime()) / (24 * 60 * 60 * 1000)));\n\t\t\tlines.push(`- Based on available history, this appears to have been in place since at least ${formatAssistantChangeDate(oldest.toISOString())} (~${days} days).`);\n\t\t}\n\t}\n\tif (!params.isSuperAdmin) {\n\t\tlines.push('- This summary includes only areas available to your current permissions.');\n\t}\n\treturn {\n\t\tresponse: lines.join('\\n'),\n\t\treason: 'detailed',\n\t\tcommitCount: topCommits.length,\n\t\tgeneric: false,\n\t\t...(branch ? { branch } : {})\n\t};\n}\n\nfunction buildAssistantChangeHistoryUnavailableResponse(\n\tmessage: string,\n\treason: 'no_repo' | 'error'\n): AssistantChangeHistoryFastPathResult {\n\tconst asksDuration = isAssistantChangeDurationQuestion(message);\n\tconst lines = ['Recent change summary:'];\n\tif (reason === 'error') {\n\t\tlines.push('- I could not read repository history in this environment right now, so exact rollout dates are unavailable.');\n\t}\n\telse {\n\t\tlines.push('- I could not locate a readable git repository from configured workspace paths, so exact rollout dates are unavailable right now.');\n\t}\n\tlines.push('- I can still explain current behavior now, and provide exact dates once repository history is reachable.');\n\tif (asksDuration) {\n\t\tlines.push('- Best-known timing: unable to confirm exact first release date from this runtime.');\n\t}\n\treturn {\n\t\tresponse: lines.join('\\n'),\n\t\treason,\n\t\tcommitCount: 0,\n\t\tgeneric: true\n\t};\n}\n\nfunction shouldReturnAssistantChangeHistoryUnavailableFastPath(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalBoolean(\n\t\tconfig['AI_ASSISTANT_CHANGE_HISTORY_UNAVAILABLE_FAST_PATH']\n\t\t|| process.env.AI_ASSISTANT_CHANGE_HISTORY_UNAVAILABLE_FAST_PATH\n\t);\n\treturn configured === true;\n}\n\nfunction shouldReturnAssistantGitToolRequestFastPath(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalBoolean(\n\t\tconfig['AI_ASSISTANT_GIT_TOOL_REQUEST_FAST_PATH']\n\t\t|| process.env.AI_ASSISTANT_GIT_TOOL_REQUEST_FAST_PATH\n\t);\n\tif (typeof configured === 'boolean') {\n\t\treturn configured;\n\t}\n\treturn true;\n}\n\nfunction buildAssistantGitToolRequestResponse(params: { message: string; reason: 'no_repo' | 'error' }): string {\n\tconst message = normalizeOptionalString(params.message);\n\tconst limit = Math.max(resolveAssistantChangeHistoryLimit(message), 8);\n\tconst historyDepth = Math.max(resolveAssistantChangeHistoryDepth(message, limit), 120);\n\tconst keywordHints = resolveAssistantChangeHistoryKeywords(message).slice(0, 6);\n\tconst commands = [\n\t\t'git rev-parse --show-toplevel',\n\t\t'git rev-parse --abbrev-ref HEAD',\n\t\t`git log -n ${historyDepth} --date=iso-strict --no-merges --pretty=format:'%x1e%ad%x1f%s' --name-only`,\n\t\t`git show --name-only --date=iso-strict --pretty=format:'%h%x09%ad%x09%s' -n ${limit}`\n\t];\n\tconst payload: Record<string, any> = {\n\t\tpurpose: 'change_history',\n\t\treason: params.reason,\n\t\tcommands,\n\t\treply_prefix: AI_ASSISTANT_GIT_TOOL_RESULT_PREFIX\n\t};\n\tif (keywordHints.length) {\n\t\tpayload.keyword_hints = keywordHints;\n\t}\n\tconst lines = [\n\t\t'I need local git history from your runtime to answer this accurately.',\n\t\t'- Run the commands below in the Git tool from your project root.',\n\t\t`- Paste the full outputs back in this chat, starting your reply with \"${AI_ASSISTANT_GIT_TOOL_RESULT_PREFIX}\".`,\n\t\t`GIT_TOOL_REQUEST: ${JSON.stringify(payload)}`\n\t];\n\treturn lines.join('\\n');\n}\n\nfunction resolveAssistantChangeHistoryGitRepoUrls(): string[] {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst rawValues = [\n\t\tserverConfig['AI_ASSISTANT_CHANGE_HISTORY_GIT_REPO_URL'],\n\t\tprocess.env.AI_ASSISTANT_CHANGE_HISTORY_GIT_REPO_URL,\n\t\tserverConfig['AI_ASSISTANT_GIT_REPO_URL'],\n\t\tprocess.env.AI_ASSISTANT_GIT_REPO_URL,\n\t\tserverConfig['AI_ASSISTANT_CHANGE_HISTORY_GIT_REPO_URLS'],\n\t\tprocess.env.AI_ASSISTANT_CHANGE_HISTORY_GIT_REPO_URLS,\n\t\tserverConfig['AI_ASSISTANT_GIT_REPO_URLS'],\n\t\tprocess.env.AI_ASSISTANT_GIT_REPO_URLS\n\t];\n\tconst urls = mergeAssistantHintValues(...rawValues.map(value => parseAssistantPathList(value)));\n\treturn urls.filter((url) => /^https?:\\/\\//i.test(url) || /^git@/i.test(url) || /^ssh:\\/\\//i.test(url));\n}\n\nfunction resolveAssistantGitMirrorRootDir(): string {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(\n\t\tserverConfig['AI_ASSISTANT_GIT_MIRROR_ROOT']\n\t\t|| process.env.AI_ASSISTANT_GIT_MIRROR_ROOT\n\t);\n\tif (configured) {\n\t\treturn path.resolve(configured);\n\t}\n\treturn path.resolve(os.tmpdir(), 'resolveio-ai-assistant-git-mirrors');\n}\n\nfunction buildAssistantGitMirrorName(repoUrl: string): string {\n\tconst normalized = normalizeOptionalString(repoUrl);\n\tif (!normalized) {\n\t\treturn 'repo';\n\t}\n\tconst withoutSuffix = normalized.replace(/\\.git$/i, '');\n\tconst tail = withoutSuffix.split(/[/:]/g).filter(Boolean).slice(-2).join('-');\n\tconst slug = normalizeOptionalString(tail)\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_-]+/g, '-')\n\t\t.replace(/-+/g, '-')\n\t\t.replace(/^-|-$/g, '');\n\treturn slug || 'repo';\n}\n\nasync function syncAssistantGitMirror(repoUrl: string): Promise<string> {\n\tconst normalizedUrl = normalizeOptionalString(repoUrl);\n\tif (!normalizedUrl) {\n\t\treturn '';\n\t}\n\tconst now = Date.now();\n\tconst cached = assistantGitMirrorCache.get(normalizedUrl);\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_GIT_MIRROR_CACHE_TTL_MS) {\n\t\tif (await directoryExists(path.join(cached.root, '.git')) || await pathExists(path.join(cached.root, '.git'))) {\n\t\t\treturn cached.root;\n\t\t}\n\t}\n\tconst mirrorRoot = resolveAssistantGitMirrorRootDir();\n\ttry {\n\t\tawait fs.mkdir(mirrorRoot, { recursive: true });\n\t}\n\tcatch {\n\t\treturn '';\n\t}\n\tconst targetRoot = path.join(mirrorRoot, buildAssistantGitMirrorName(normalizedUrl));\n\tconst hasGitDir = await directoryExists(path.join(targetRoot, '.git')) || await pathExists(path.join(targetRoot, '.git'));\n\ttry {\n\t\tif (!hasGitDir) {\n\t\t\tawait execFileAsync('git', ['clone', '--depth', '400', '--no-single-branch', normalizedUrl, targetRoot], {\n\t\t\t\ttimeout: AI_ASSISTANT_GIT_COMMAND_TIMEOUT_MS * 6,\n\t\t\t\tmaxBuffer: 1024 * 1024 * 6\n\t\t\t});\n\t\t}\n\t\telse if (resolveAssistantChangeHistoryFetchEnabled()) {\n\t\t\tawait execFileAsync('git', ['fetch', '--all', '--prune', '--quiet'], {\n\t\t\t\tcwd: targetRoot,\n\t\t\t\ttimeout: AI_ASSISTANT_GIT_COMMAND_TIMEOUT_MS * 2,\n\t\t\t\tmaxBuffer: 1024 * 1024 * 6\n\t\t\t});\n\t\t}\n\t}\n\tcatch {\n\t\treturn '';\n\t}\n\tconst resolvedRoot = await resolveAssistantGitRoot(targetRoot);\n\tif (!resolvedRoot) {\n\t\treturn '';\n\t}\n\tassistantGitMirrorCache.set(normalizedUrl, {\n\t\troot: resolvedRoot,\n\t\tupdatedAt: now\n\t});\n\treturn resolvedRoot;\n}\n\nasync function resolveAssistantChangeHistoryGitRoots(workspaceRoot: string): Promise<string[]> {\n\tconst roots = await resolveAssistantWorkspaceGitRoots(workspaceRoot);\n\tif (roots.length) {\n\t\treturn roots;\n\t}\n\tconst repoUrls = resolveAssistantChangeHistoryGitRepoUrls();\n\tif (!repoUrls.length) {\n\t\treturn [];\n\t}\n\tconst mirroredRoots: string[] = [];\n\tfor (const repoUrl of repoUrls) {\n\t\tconst mirrorRoot = await syncAssistantGitMirror(repoUrl);\n\t\tif (mirrorRoot && !mirroredRoots.includes(mirrorRoot)) {\n\t\t\tmirroredRoots.push(mirrorRoot);\n\t\t}\n\t}\n\treturn mirroredRoots;\n}\n\nasync function resolveAssistantChangeHistoryFastPathResponse(params: {\n\tmessage: string;\n\thasAttachments: boolean;\n\tuser: any;\n\tisSuperAdmin: boolean;\n}): Promise<AssistantChangeHistoryFastPathResult | null> {\n\tif (!shouldUseAssistantChangeHistoryFastPath(params.message, params.hasAttachments)) {\n\t\treturn null;\n\t}\n\tlet workspaceRoot = '';\n\ttry {\n\t\tworkspaceRoot = await resolveAssistantWorkspaceRoot();\n\t}\n\tcatch {\n\t\tworkspaceRoot = '';\n\t}\n\tif (!workspaceRoot) {\n\t\treturn buildAssistantChangeHistoryUnavailableResponse(params.message, 'no_repo');\n\t}\n\tconst gitRoots = await resolveAssistantChangeHistoryGitRoots(workspaceRoot);\n\tif (!gitRoots.length) {\n\t\treturn buildAssistantChangeHistoryUnavailableResponse(params.message, 'no_repo');\n\t}\n\tconst featureKeywords = resolveAssistantChangeHistoryKeywords(params.message);\n\tlet sawExecutionError = false;\n\tlet bestFallback: AssistantChangeHistoryFastPathResult | null = null;\n\tfor (const gitRoot of gitRoots) {\n\t\ttry {\n\t\t\tif (resolveAssistantChangeHistoryFetchEnabled() && shouldAssistantFetchGitRemote(params.message)) {\n\t\t\t\ttry {\n\t\t\t\t\tawait runAssistantGitCommand(gitRoot, ['fetch', '--all', '--prune', '--quiet']);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\t// Continue with local history when remote fetch fails.\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet branch = '';\n\t\t\ttry {\n\t\t\t\tbranch = normalizeOptionalString(await runAssistantGitCommand(gitRoot, ['rev-parse', '--abbrev-ref', 'HEAD']))\n\t\t\t\t\t.split(/\\r?\\n/g)[0]\n\t\t\t\t\t.trim();\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tbranch = '';\n\t\t\t}\n\t\t\tconst limit = resolveAssistantChangeHistoryLimit(params.message);\n\t\t\tconst historyDepth = resolveAssistantChangeHistoryDepth(params.message, limit);\n\t\t\tconst rawHistory = await runAssistantGitCommand(gitRoot, [\n\t\t\t\t'log',\n\t\t\t\t'-n',\n\t\t\t\tString(historyDepth),\n\t\t\t\t'--date=iso-strict',\n\t\t\t\t'--no-merges',\n\t\t\t\t'--pretty=format:%x1e%ad%x1f%s',\n\t\t\t\t'--name-only'\n\t\t\t]);\n\t\t\tconst commits = parseAssistantGitLogOutput(rawHistory);\n\t\t\tif (!commits.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst summary = buildAssistantChangeHistorySummaryFromCommits({\n\t\t\t\tmessage: params.message,\n\t\t\t\tuser: params.user,\n\t\t\t\tisSuperAdmin: params.isSuperAdmin,\n\t\t\t\tcommits,\n\t\t\t\tbranch,\n\t\t\t\trepositoryName: path.basename(gitRoot)\n\t\t\t});\n\t\t\tconst hasKeywordMatches = !featureKeywords.length\n\t\t\t\t|| commits.some(commit => scoreAssistantChangeHistoryCommitByKeywords(commit, featureKeywords) > 0);\n\t\t\tif (hasKeywordMatches && summary.reason === 'detailed') {\n\t\t\t\treturn summary;\n\t\t\t}\n\t\t\tif (!bestFallback) {\n\t\t\t\tbestFallback = summary;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (summary.reason === 'detailed' && bestFallback.reason !== 'detailed') {\n\t\t\t\tbestFallback = summary;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (summary.reason === bestFallback.reason && summary.commitCount > bestFallback.commitCount) {\n\t\t\t\tbestFallback = summary;\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\tsawExecutionError = true;\n\t\t\tcontinue;\n\t\t}\n\t}\n\tif (bestFallback) {\n\t\treturn bestFallback;\n\t}\n\tif (sawExecutionError) {\n\t\treturn buildAssistantChangeHistoryUnavailableResponse(params.message, 'error');\n\t}\n\treturn buildAssistantChangeHistoryUnavailableResponse(params.message, 'no_repo');\n}\n\nfunction splitRouteSuffix(value: string): { base: string; suffix: string } {\n\tconst matchIndex = value.search(/[?#]/);\n\tif (matchIndex === -1) {\n\t\treturn { base: value, suffix: '' };\n\t}\n\treturn { base: value.slice(0, matchIndex), suffix: value.slice(matchIndex) };\n}\n\nfunction isClientRoute(value: string, index: ClientRouteIndex): boolean {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (index.set.has(normalized)) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\twhile (parts.length > 1) {\n\t\tparts.pop();\n\t\tconst prefix = `/${parts.join('/')}`;\n\t\tif (index.set.has(prefix)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getCanonicalRoute(value: string, index: ClientRouteIndex): string | null {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\treturn index.map.get(normalized) || null;\n}\n\nfunction swapTwoSegmentRoute(value: string): string | null {\n\tconst normalized = normalizeRouteKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\tif (parts.length !== 2) {\n\t\treturn null;\n\t}\n\treturn `/${parts[1]}/${parts[0]}`;\n}\n\nfunction normalizeAssistantRoutes(value: string): string {\n\tconst index = getClientRouteIndex();\n\tif (!index.set.size) {\n\t\treturn value;\n\t}\n\tconst routePattern = /\\/[a-z0-9][a-z0-9/_-]*(?:\\?[a-z0-9=&%._-]+)?(?:#[a-z0-9._-]+)?/gi;\n\treturn value.replace(routePattern, (match) => {\n\t\tconst { base, suffix } = splitRouteSuffix(match);\n\t\tif (isClientRoute(base, index)) {\n\t\t\tconst canonical = getCanonicalRoute(base, index);\n\t\t\treturn canonical ? `${canonical}${suffix}` : match;\n\t\t}\n\t\tconst swapped = swapTwoSegmentRoute(base);\n\t\tif (!swapped || !isClientRoute(swapped, index)) {\n\t\t\treturn match;\n\t\t}\n\t\tconst canonical = getCanonicalRoute(swapped, index) || swapped;\n\t\treturn `${canonical}${suffix}`;\n\t});\n}\n\nfunction stripAssistantEmptyMarkdownTableRows(value: string): string {\n\tconst lines = String(value || '').split('\\n');\n\tconst output: string[] = [];\n\tlet index = 0;\n\twhile (index < lines.length) {\n\t\tconst header = String(lines[index] || '').trim();\n\t\tconst separator = String(lines[index + 1] || '').trim();\n\t\tconst isTableHeader = /^\\|.+\\|$/.test(header);\n\t\tconst isTableSeparator = /^\\|?\\s*:?-{3,}:?\\s*(\\|\\s*:?-{3,}:?\\s*)+\\|?\\s*$/.test(separator);\n\t\tif (!isTableHeader || !isTableSeparator) {\n\t\t\toutput.push(lines[index]);\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tableStart = output.length;\n\t\toutput.push(lines[index]);\n\t\toutput.push(lines[index + 1]);\n\t\tindex += 2;\n\n\t\tlet keptRows = 0;\n\t\twhile (index < lines.length) {\n\t\t\tconst line = String(lines[index] || '');\n\t\t\tif (!line.trim() || !line.includes('|')) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst cells = line.split('|').map(cell => cell.trim()).filter(Boolean);\n\t\t\tconst hasContent = cells.some(cell => cell !== '-' && cell !== '---');\n\t\t\tif (hasContent) {\n\t\t\t\toutput.push(line);\n\t\t\t\tkeptRows += 1;\n\t\t\t}\n\t\t\tindex += 1;\n\t\t}\n\n\t\tif (keptRows === 0) {\n\t\t\toutput.splice(tableStart, 2);\n\t\t}\n\t}\n\n\treturn output.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim();\n}\n\nfunction sanitizeAssistantResponse(value: string): string {\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn 'I could not generate a response. Please try again.';\n\t}\n\tconst withoutBlocks = raw.replace(/```[\\s\\S]*?```/g, '').replace(/`([^`]+)`/g, '$1').trim();\n\tconst stripEstimated = (line: string) => line.replace(/\\bEstimated (human )?hours:\\s*.*$/i, '').trimEnd();\n\tconst isTentativeQueryLine = (line: string) => {\n\t\tconst normalized = line.trim().replace(/^[-*•]+\\s*/, '');\n\t\tif (/^(pulling|running|fetching|querying|retrieving|gathering)\\b/i.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /^i\\s+(can|will|['’]ll|am going to|['’]m going to)\\s+(pull|run|query|get|fetch|look up|retrieve|grab)\\b/i.test(normalized);\n\t};\n\tconst isInternalPlanLine = (line: string) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed || trimmed.length > 120) {\n\t\t\treturn false;\n\t\t}\n\t\tconst normalized = trimmed.toLowerCase();\n\t\tconst hasPhrase = /schema[-\\s]?probe|query rewrite|id[-\\s]?lookup|collection override|probe read|tiny probe|fallback plan/i.test(normalized);\n\t\tif (!hasPhrase) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isBulletish = /^[-*•]+\\s+/.test(trimmed);\n\t\tconst isPlanish = /^(plan|planning|approach|strategy|steps?|todo|checklist)\\b/i.test(trimmed);\n\t\treturn isBulletish || isPlanish;\n\t};\n\tconst cleanedLines: string[] = [];\n\twithoutBlocks.split('\\n').forEach((line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) {\n\t\t\tcleanedLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tif (isTentativeQueryLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (isInternalPlanLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^work ticket summary:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^estimated (human )?hours:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^customer-facing summary:/i.test(trimmed)) {\n\t\t\tconst stripped = line.replace(/^(\\s*)customer-facing summary:\\s*/i, '$1');\n\t\t\tconst cleaned = stripEstimated(stripped);\n\t\t\tif (cleaned.trim()) {\n\t\t\t\tcleanedLines.push(cleaned);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcleanedLines.push(stripEstimated(line));\n\t});\n\tconst cleaned = cleanedLines.join('\\n').trim();\n\tif (!cleaned) {\n\t\treturn 'I can’t share code, but I can point you to files or explain behavior at a high level.';\n\t}\n\tconst tableCleaned = stripAssistantEmptyMarkdownTableRows(cleaned);\n\tconst normalizedCurrency = normalizeAssistantCurrencyText(tableCleaned || cleaned);\n\treturn normalizeAssistantRoutes(normalizedCurrency);\n}\n\nfunction evaluateAssistantGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst identityGuardrail = evaluateAssistantIdentityDisclosureGuardrail(normalized);\n\tif (identityGuardrail?.blocked) {\n\t\treturn identityGuardrail;\n\t}\n\tconst patterns: Array<{ pattern: RegExp; reason: string; response: string }> = [\n\t\t{\n\t\t\tpattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|snippet|file|function|class|script|sql)\\b/i,\n\t\t\treason: 'Code sharing is restricted.',\n\t\t\tresponse: 'I can’t share code or file contents. All code is proprietary. I can explain behavior and point you to screens or routes.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i,\n\t\t\treason: 'Credentials and secrets are restricted.',\n\t\t\tresponse: 'I can’t help with credentials or secrets. If you need access, please contact support.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(delete|drop|truncate)\\s+(database|db|schema)\\b/i,\n\t\t\treason: 'Database operations are restricted.',\n\t\t\tresponse: 'I can’t help with database operations. I can explain system behavior or file locations.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(rm\\s+-rf\\s+\\/|mkfs|reboot|shutdown|halt)\\b/i,\n\t\t\treason: 'Destructive system operations are restricted.',\n\t\t\tresponse: 'I can’t help with destructive system operations.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos|hack)\\b/i,\n\t\t\treason: 'Security abuse is restricted.',\n\t\t\tresponse: 'I can’t assist with that request.'\n\t\t}\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: entry.response\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function evaluateAssistantGuardrailsForTesting(message: string): GuardrailResult | null {\n\treturn evaluateAssistantGuardrails(message);\n}\n\nexport function buildAssistantSystemPromptForTesting(): string {\n\treturn AI_ASSISTANT_SYSTEM_PROMPT;\n}\n\nfunction buildAiFormSystemPrompt(): string {\n\treturn AI_FORM_PATCH_SYSTEM_PROMPT;\n}\n\nfunction buildAiFormUserPrompt(\n\tmessage: string,\n\tfields: Array<AiFormField>,\n\tpatchFormat?: string,\n\troute?: string\n): string {\n\tconst lines: string[] = [];\n\tlines.push(`User request: ${message}`);\n\tconst normalizedRoute = normalizeOptionalString(route);\n\tif (normalizedRoute) {\n\t\tlines.push(`Current route: ${normalizedRoute}`);\n\t}\n\tif (patchFormat) {\n\t\tlines.push('Patch format:');\n\t\tlines.push(patchFormat);\n\t}\n\tlines.push('Allowed fields:');\n\tfields.forEach((field) => {\n\t\tconst name = field.name || '';\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\t\tconst parts = [name];\n\t\tif (field.type) {\n\t\t\tparts.push(`type=${field.type}`);\n\t\t}\n\t\tif (field.label) {\n\t\t\tparts.push(`label=\"${field.label}\"`);\n\t\t}\n\t\tif (Array.isArray(field.enums) && field.enums.length) {\n\t\t\tparts.push(`enums=${field.enums.join('|')}`);\n\t\t}\n\t\tlines.push(`- ${parts.join(' ')}`);\n\t});\n\tlines.push('Return JSON only.');\n\treturn lines.join('\\n');\n}\n\nfunction normalizeAiFormFields(fields: any): Array<AiFormField> {\n\tif (!Array.isArray(fields)) {\n\t\treturn [];\n\t}\n\treturn fields\n\t\t.map((field) => {\n\t\t\tif (!field || typeof field !== 'object') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst name = normalizeOptionalString(field.name) || normalizeOptionalString(field.path);\n\t\t\tif (!name) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst type = normalizeOptionalString(field.type);\n\t\t\tconst label = normalizeOptionalString(field.label);\n\t\t\tconst enums = Array.isArray(field.enums)\n\t\t\t\t? field.enums.map((value: any) => normalizeOptionalString(value)).filter(Boolean)\n\t\t\t\t: undefined;\n\t\t\tconst normalizedField: AiFormField = { name };\n\t\t\tif (type) {\n\t\t\t\tnormalizedField.type = type;\n\t\t\t}\n\t\t\tif (label) {\n\t\t\t\tnormalizedField.label = label;\n\t\t\t}\n\t\t\tif (enums && enums.length) {\n\t\t\t\tnormalizedField.enums = enums;\n\t\t\t}\n\t\t\treturn normalizedField;\n\t\t})\n\t\t.filter((field): field is AiFormField => !!field);\n}\n\nfunction tokenizeArithmeticExpression(expression: string): string[] | null {\n\tconst tokens: string[] = [];\n\tlet i = 0;\n\twhile (i < expression.length) {\n\t\tconst char = expression[i];\n\t\tif (/\\s/.test(char)) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/[()+\\-*/]/.test(char)) {\n\t\t\ttokens.push(char);\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\d|\\./.test(char)) {\n\t\t\tlet j = i + 1;\n\t\t\twhile (j < expression.length && /[\\d.]/.test(expression[j])) {\n\t\t\t\tj += 1;\n\t\t\t}\n\t\t\ttokens.push(expression.slice(i, j));\n\t\t\ti = j;\n\t\t\tcontinue;\n\t\t}\n\t\treturn null;\n\t}\n\treturn tokens;\n}\n\nfunction evaluateArithmeticExpression(expression: string): number | null {\n\tconst tokens = tokenizeArithmeticExpression(expression);\n\tif (!tokens || !tokens.length) {\n\t\treturn null;\n\t}\n\tconst output: string[] = [];\n\tconst ops: string[] = [];\n\tconst precedence: Record<string, number> = { '+': 1, '-': 1, '*': 2, '/': 2 };\n\tlet prevToken = '';\n\tconst pushOperator = (op: string) => {\n\t\twhile (ops.length) {\n\t\t\tconst top = ops[ops.length - 1];\n\t\t\tif (top === '(') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ((precedence[top] || 0) >= (precedence[op] || 0)) {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tops.push(op);\n\t};\n\tfor (const token of tokens) {\n\t\tif (token === '(') {\n\t\t\tops.push(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === ')') {\n\t\t\twhile (ops.length && ops[ops.length - 1] !== '(') {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t}\n\t\t\tif (!ops.length) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tops.pop();\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (precedence[token]) {\n\t\t\tif (!prevToken || prevToken === '(' || precedence[prevToken]) {\n\t\t\t\toutput.push('0');\n\t\t\t}\n\t\t\tpushOperator(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!/^\\d+(\\.\\d+)?$/.test(token)) {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(token);\n\t\tprevToken = token;\n\t}\n\twhile (ops.length) {\n\t\tconst op = ops.pop() as string;\n\t\tif (op === '(' || op === ')') {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(op);\n\t}\n\tconst stack: number[] = [];\n\tfor (const token of output) {\n\t\tif (precedence[token]) {\n\t\t\tif (stack.length < 2) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst b = stack.pop() as number;\n\t\t\tconst a = stack.pop() as number;\n\t\t\tswitch (token) {\n\t\t\t\tcase '+':\n\t\t\t\t\tstack.push(a + b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\tstack.push(a - b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '*':\n\t\t\t\t\tstack.push(a * b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/':\n\t\t\t\t\tstack.push(a / b);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tstack.push(Number(token));\n\t}\n\tif (stack.length !== 1 || Number.isNaN(stack[0])) {\n\t\treturn null;\n\t}\n\treturn stack[0];\n}\n\nfunction resolveDateExpression(expression: string): string | null {\n\tconst trimmed = String(expression || '').trim();\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst quotedMatch = trimmed.match(/^['\"](.+?)['\"]$/);\n\tif (quotedMatch) {\n\t\tconst date = new Date(quotedMatch[1]);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\tif (trimmed === 'Date.now()') {\n\t\treturn new Date(Date.now()).toISOString();\n\t}\n\tconst nowMatch = trimmed.match(/^Date\\.now\\(\\)\\s*([+-])\\s*(.+)$/);\n\tif (nowMatch) {\n\t\tconst delta = evaluateArithmeticExpression(nowMatch[2]);\n\t\tif (delta === null) {\n\t\t\treturn null;\n\t\t}\n\t\tconst base = Date.now();\n\t\tconst computed = nowMatch[1] === '-' ? base - delta : base + delta;\n\t\treturn new Date(computed).toISOString();\n\t}\n\tconst numeric = evaluateArithmeticExpression(trimmed);\n\tif (numeric !== null) {\n\t\tconst date = new Date(numeric);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\treturn null;\n}\n\nfunction replaceNewDateExpressions(input: string): string {\n\tlet output = '';\n\tlet index = 0;\n\twhile (index < input.length) {\n\t\tconst start = input.indexOf('new Date(', index);\n\t\tif (start === -1) {\n\t\t\toutput += input.slice(index);\n\t\t\tbreak;\n\t\t}\n\t\toutput += input.slice(index, start);\n\t\tlet cursor = start + 'new Date('.length;\n\t\tlet depth = 1;\n\t\twhile (cursor < input.length && depth > 0) {\n\t\t\tconst char = input[cursor];\n\t\t\tif (char === '(') {\n\t\t\t\tdepth += 1;\n\t\t\t}\n\t\t\telse if (char === ')') {\n\t\t\t\tdepth -= 1;\n\t\t\t}\n\t\t\tcursor += 1;\n\t\t}\n\t\tif (depth !== 0) {\n\t\t\toutput += input.slice(start);\n\t\t\tbreak;\n\t\t}\n\t\tconst inner = input.slice(start + 'new Date('.length, cursor - 1);\n\t\tconst iso = resolveDateExpression(inner);\n\t\tif (iso) {\n\t\t\toutput += `{\\\"$date\\\":\\\"${iso}\\\"}`;\n\t\t}\n\t\telse {\n\t\t\toutput += input.slice(start, cursor);\n\t\t}\n\t\tindex = cursor;\n\t}\n\treturn output;\n}\n\nfunction replaceIsoDateExpressions(input: string): string {\n\treturn input.replace(/ISODate\\(([^)]+)\\)/g, (_match, inner) => {\n\t\tconst iso = resolveDateExpression(inner);\n\t\treturn iso ? `{\\\"$date\\\":\\\"${iso}\\\"}` : _match;\n\t});\n}\n\nfunction preprocessJsonLike(content: string): string {\n\tlet normalized = content;\n\tnormalized = replaceNewDateExpressions(normalized);\n\tnormalized = replaceIsoDateExpressions(normalized);\n\treturn normalized;\n}\n\nfunction convertExtendedDates(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => convertExtendedDates(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst keys = Object.keys(value);\n\tif (keys.length === 1 && keys[0] === '$date') {\n\t\tconst raw = (value as any).$date;\n\t\tconst date = new Date(raw);\n\t\treturn Number.isNaN(date.getTime()) ? value : date;\n\t}\n\tconst output: Record<string, any> = {};\n\tkeys.forEach((key) => {\n\t\toutput[key] = convertExtendedDates(value[key]);\n\t});\n\treturn output;\n}\n\nfunction parseJsonObject(content: string): any | null {\n\tif (!content || typeof content !== 'string') {\n\t\treturn null;\n\t}\n\tconst normalized = preprocessJsonLike(content);\n\ttry {\n\t\treturn convertExtendedDates(JSON.parse(normalized));\n\t}\n\tcatch {\n\t\tconst match = normalized.match(/\\{[\\s\\S]*\\}/);\n\t\tif (!match) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn convertExtendedDates(JSON.parse(match[0]));\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nfunction resolveUploadLimits(): { maxFileBytes: number; maxFileMb: number; maxTotalBytes: number; maxTotalMb: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxFileMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_FILE_MB'] || process.env.AI_TERMINAL_MAX_FILE_MB) || DEFAULT_MAX_FILE_MB;\n\tconst maxTotalMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_MB'] || process.env.AI_TERMINAL_MAX_TOTAL_MB) || DEFAULT_MAX_TOTAL_MB;\n\treturn {\n\t\tmaxFileBytes: round(maxFileMb * 1024 * 1024),\n\t\tmaxFileMb,\n\t\tmaxTotalBytes: round(maxTotalMb * 1024 * 1024),\n\t\tmaxTotalMb\n\t};\n}\n\nfunction resolveUploadRoot(): string {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(config['AI_TERMINAL_UPLOAD_ROOT'] || process.env.AI_TERMINAL_UPLOAD_ROOT);\n\tif (configured) {\n\t\treturn configured;\n\t}\n\treturn path.join(os.tmpdir(), 'resolveio-ai-terminal-uploads');\n}\n\nasync function handleCodexUpload(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\tconst limits = resolveUploadLimits();\n\tif (size > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tconst safeName = sanitizeFilename(file_name);\n\tconst uploadRoot = resolveUploadRoot();\n\tconst targetDir = path.join(uploadRoot, id_conversation);\n\tawait fs.mkdir(targetDir, { recursive: true });\n\tconst targetPath = path.join(targetDir, safeName);\n\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\tconst data = new Uint8Array(dataBuffer);\n\tif (data.byteLength > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tawait fs.writeFile(targetPath, data);\n\treturn {\n\t\tid_file: objectIdHexString(),\n\t\tname: safeName,\n\t\tsize: data.byteLength,\n\t\ttype: normalizeOptionalString(content_type),\n\t\tlocal_path: targetPath\n\t};\n}\n\nasync function readAttachmentContents(attachments: AttachmentInput[]): Promise<{ promptText: string; attachments: AttachmentInput[] }> {\n\tif (!attachments || !attachments.length) {\n\t\treturn { promptText: '', attachments: [] };\n\t}\n\tconst limits = resolveAttachmentLimits();\n\tlet totalBytes = 0;\n\tlet totalChars = 0;\n\tconst chunks: string[] = [];\n\tconst cleaned: AttachmentInput[] = [];\n\n\tfor (const attachment of attachments) {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, resolveUploadRoot());\n\t\tif (!safe) {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst stat = await fs.stat(localPath);\n\t\t\tif (!stat.isFile()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttotalBytes += stat.size;\n\t\t\tif (totalBytes > limits.maxTotalBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst ext = path.extname(localPath).toLowerCase();\n\t\t\tconst name = normalizeOptionalString(attachment.name) || path.basename(localPath);\n\t\t\tconst type = normalizeOptionalString(attachment.type);\n\t\t\tconst readable = isReadableAttachment(type, ext);\n\t\t\tlet content = '';\n\t\t\tif (readable) {\n\t\t\t\tcontent = await fs.readFile(localPath, 'utf8');\n\t\t\t\tif (content.length > limits.maxAttachmentChars) {\n\t\t\t\t\tcontent = content.slice(0, limits.maxAttachmentChars) + '\\n[...truncated]';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontent = `[${name} attached; binary content omitted]`;\n\t\t\t}\n\t\t\ttotalChars += content.length;\n\t\t\tif (totalChars > limits.maxTotalAttachmentChars) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tchunks.push(`File: ${name}\\n${content}`);\n\t\t\tcleaned.push({\n\t\t\t\tid: attachment.id,\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\tsize: stat.size,\n\t\t\t\tlocal_path: localPath\n\t\t\t});\n\t\t}\n\t\tcatch {}\n\t}\n\n\treturn {\n\t\tpromptText: chunks.length ? `\\n\\nAttachments:\\n${chunks.join('\\n\\n')}` : '',\n\t\tattachments: cleaned\n\t};\n}\n\nfunction resolveAttachmentLimits(): { maxAttachmentChars: number; maxTotalAttachmentChars: number; maxTotalBytes: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_ATTACHMENT_CHARS;\n\tconst maxTotalAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS;\n\tconst limits = resolveUploadLimits();\n\treturn {\n\t\tmaxAttachmentChars,\n\t\tmaxTotalAttachmentChars,\n\t\tmaxTotalBytes: limits.maxTotalBytes\n\t};\n}\n\nfunction buildUserPrompt(template: string | undefined, inputText: string, attachmentText: string): string {\n\tconst data = {\n\t\tinput: inputText || '',\n\t\ttoday: new Date().toISOString().slice(0, 10)\n\t};\n\tif (template) {\n\t\treturn applyTemplate(template, data).trim() + attachmentText;\n\t}\n\treturn `${inputText || ''}${attachmentText}`.trim();\n}\n\nfunction buildCodexChatPrompt(messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }>): string {\n\tconst systemParts: string[] = [];\n\tconst dialogParts: string[] = [];\n\t(messages || []).forEach((message) => {\n\t\tconst content = normalizeOptionalString(message?.content);\n\t\tif (!content) {\n\t\t\treturn;\n\t\t}\n\t\tif (message.role === 'system') {\n\t\t\tsystemParts.push(content);\n\t\t\treturn;\n\t\t}\n\t\tconst label = message.role === 'assistant' ? 'Assistant' : 'User';\n\t\tdialogParts.push(`${label}:\\n${content}`);\n\t});\n\tconst systemPrompt = systemParts.length\n\t\t? systemParts.join('\\n\\n')\n\t\t: 'You are a helpful AI assistant.';\n\tconst dialogPrompt = dialogParts.length\n\t\t? dialogParts.join('\\n\\n')\n\t\t: 'User:\\nContinue.';\n\treturn `System:\\n${systemPrompt}\\n\\n${dialogPrompt}`.trim();\n}\n\nfunction applyTemplate(template: string, data: Record<string, string>): string {\n\tlet output = template;\n\tObject.keys(data).forEach(key => {\n\t\tconst value = data[key] || '';\n\t\tconst pattern = new RegExp(`{{\\\\s*${key}\\\\s*}}`, 'gi');\n\t\toutput = output.replace(pattern, value);\n\t});\n\treturn output;\n}\n\nfunction sanitizeConfig(source: any): any {\n\tconst fallbackModels = Array.isArray(source?.fallback_models)\n\t\t? source.fallback_models\n\t\t: (Array.isArray(source?.fallbackModels) ? source.fallbackModels : []);\n\treturn {\n\t\tmode: normalizeOptionalString(source?.mode),\n\t\tmodel: normalizeOptionalString(source?.model),\n\t\tcodex_model: normalizeOptionalString(source?.codex_model),\n\t\tfallback_model: normalizeOptionalString(source?.fallback_model || source?.fallbackModel),\n\t\tfallback_models: fallbackModels\n\t\t\t.map((entry: any) => normalizeOptionalString(entry))\n\t\t\t.filter(Boolean),\n\t\tsystem_prompt: normalizeOptionalString(source?.system_prompt),\n\t\tuser_prompt_template: normalizeOptionalString(source?.user_prompt_template),\n\t\tresponse_format: normalizeOptionalString(source?.response_format),\n\t\ttemperature: normalizeOptionalNumber(source?.temperature),\n\t\tmax_tokens: normalizeOptionalNumber(source?.max_tokens),\n\t\tqa_repair_enabled: normalizeOptionalBoolean(source?.qa_repair_enabled ?? source?.qaRepairEnabled),\n\t\tqa_evidence_required: normalizeOptionalBoolean(source?.qa_evidence_required ?? source?.qaEvidenceRequired),\n\t\tqa_distinct_screenshot_required: normalizeOptionalBoolean(source?.qa_distinct_screenshot_required ?? source?.qaDistinctScreenshotRequired),\n\t\tqa_fail_fast_compile: normalizeOptionalBoolean(source?.qa_fail_fast_compile ?? source?.qaFailFastCompile),\n\t\tqa_live_data_required: normalizeOptionalBoolean(source?.qa_live_data_required ?? source?.qaLiveDataRequired),\n\t\tqa_self_repair_max_waves: normalizeOptionalNumber(source?.qa_self_repair_max_waves ?? source?.qaSelfRepairMaxWaves),\n\t\tqa_policy_instructions: (Array.isArray(source?.qa_policy_instructions)\n\t\t\t? source.qa_policy_instructions\n\t\t\t: (Array.isArray(source?.qaPolicyInstructions) ? source.qaPolicyInstructions : []))\n\t\t\t.map((entry: any) => normalizeOptionalString(entry))\n\t\t\t.filter(Boolean)\n\t\t\t.slice(0, 8)\n\t};\n}\n\nfunction isLikelyObjectId(value: any): boolean {\n\tconst normalized = normalizeOptionalString(value);\n\treturn /^[a-f0-9]{24}$/i.test(normalized);\n}\n\nasync function resolveClientIdFromConfig(explicit?: string, contextUserId?: string): Promise<string> {\n\tconst explicitValue = normalizeOptionalString(explicit);\n\tif (isLikelyObjectId(explicitValue)) {\n\t\treturn explicitValue;\n\t}\n\n\tif (contextUserId) {\n\t\ttry {\n\t\t\tconst user = await Users.findById(contextUserId);\n\t\t\tconst userClientId = normalizeOptionalString(user?.other?.id_client);\n\t\t\tif (userClientId) {\n\t\t\t\treturn userClientId;\n\t\t\t}\n\t\t}\n\t\tcatch {}\n\t}\n\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\tconst configClientId = normalizeOptionalString(config['CLIENT_ID'] || config['client_id'] || process.env.CLIENT_ID || '');\n\tif (configClientId) {\n\t\treturn configClientId;\n\t}\n\n\treturn explicitValue;\n}\n\nasync function ensureConversation(input: AiTerminalRunInput, mode: 'openai' | 'codex', contextUserId?: string): Promise<AiTerminalConversationModel> {\n\tconst idUser = normalizeOptionalString(contextUserId);\n\tif (!idUser) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\tconst idConversation = normalizeOptionalString(input.id_conversation);\n\tif (idConversation) {\n\t\tconst existing = await AiTerminalConversations.findById(idConversation);\n\t\tif (existing) {\n\t\t\tconst existingUserId = normalizeOptionalString(existing.id_user);\n\t\t\tif (existingUserId && existingUserId === idUser) {\n\t\t\t\treturn existing as AiTerminalConversationModel;\n\t\t\t}\n\t\t\tif (existingUserId && existingUserId !== idUser) {\n\t\t\t\tthrow new Error('Conversation access denied.');\n\t\t\t}\n\t\t}\n\t}\n\tconst now = new Date();\n\tconst resolvedClientId = await resolveClientIdFromConfig(input.id_client, idUser);\n\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\tid_user: idUser,\n\t\tid_client: resolvedClientId,\n\t\tid_app: normalizeOptionalString(input.id_app),\n\t\ttitle: 'New Conversation',\n\t\tmode,\n\t\tbranch_enabled: mode === 'codex',\n\t\tstatus: normalizeConversationStatus('active'),\n\t\tprofile_id: normalizeOptionalString(input.profile_id),\n\t\tmetadata: {},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\treturn result as AiTerminalConversationModel;\n}\n\nfunction isAssistantTransactionCommittedError(error: any): boolean {\n\tif (!error) {\n\t\treturn false;\n\t}\n\tconst code = normalizeOptionalNumber(error?.code);\n\tif (code === 256) {\n\t\treturn true;\n\t}\n\tconst message = normalizeOptionalString(error?.message || error?.errmsg);\n\tif (!message) {\n\t\treturn false;\n\t}\n\treturn /transaction with \\{ txnnumber:\\s*\\d+ \\} has been committed/i.test(message);\n}\n\nfunction resolveAssistantDatabaseNameForSystemCollections(): string {\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\treturn normalizeOptionalString(config.DATABASE) || 'resolveio';\n}\n\nasync function updateAssistantMessageWithFallback(messageId: any, setPayload: Record<string, any>): Promise<void> {\n\tif (!messageId || !setPayload || typeof setPayload !== 'object') {\n\t\treturn;\n\t}\n\tconst safeSetPayload = sanitizeAssistantMessageSetPayload(setPayload);\n\tconst fallbackId = normalizeOptionalString(typeof messageId === 'string' ? messageId : String(messageId));\n\tconst debugEnabled = shouldLogAssistantFinalizeDebug();\n\ttry {\n\t\tlet result = await AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId },\n\t\t\t{ $set: safeSetPayload },\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tfalse,\n\t\t\ttrue\n\t\t);\n\t\tif (result?.matchedCount === 0 && fallbackId && fallbackId !== messageId) {\n\t\t\tresult = await AiTerminalMessages.updateOne(\n\t\t\t\t{ _id: fallbackId },\n\t\t\t\t{ $set: safeSetPayload },\n\t\t\t\tundefined,\n\t\t\t\tfalse,\n\t\t\t\tfalse,\n\t\t\t\ttrue\n\t\t\t);\n\t\t}\n\t\tif (!result || result.matchedCount === 0) {\n\t\t\tconsole.warn(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update no-match', {\n\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\tvia: 'collection_manager'\n\t\t\t});\n\t\t}\n\t\tif (debugEnabled) {\n\t\t\tconsole.log(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update', {\n\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\tmatchedCount: result?.matchedCount ?? 0,\n\t\t\t\tmodifiedCount: result?.modifiedCount ?? 0,\n\t\t\t\tvia: 'collection_manager'\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\tcatch (error) {\n\t\tif (!isAssistantTransactionCommittedError(error)) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (debugEnabled) {\n\t\t\tconsole.log(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update fallback triggered', {\n\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\treason: normalizeOptionalString((error as any)?.message) || 'transaction_committed'\n\t\t\t});\n\t\t}\n\t\tconst dbName = resolveAssistantDatabaseNameForSystemCollections();\n\t\ttry {\n\t\t\tconst messagesCollection = ResolveIOServer.getMongoConnection()\n\t\t\t\t.db(dbName)\n\t\t\t\t.collection<{ _id: string; [key: string]: any }>('ai-terminal-messages');\n\t\t\tlet result = await messagesCollection\n\t\t\t\t.updateOne({ _id: String(messageId) }, { $set: safeSetPayload });\n\t\t\tif (result?.matchedCount === 0 && fallbackId && fallbackId !== messageId) {\n\t\t\t\tresult = await messagesCollection\n\t\t\t\t\t.updateOne({ _id: fallbackId }, { $set: safeSetPayload });\n\t\t\t}\n\t\t\tif (!result || result.matchedCount === 0) {\n\t\t\t\tconsole.warn(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update no-match', {\n\t\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\t\tvia: 'direct_mongo_fallback'\n\t\t\t\t});\n\t\t\t}\n\t\t\tawait notifyAiTerminalCollectionUpdate('ai-terminal-messages', fallbackId || messageId);\n\t\t\tif (debugEnabled) {\n\t\t\t\tconsole.log(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update', {\n\t\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\t\tmatchedCount: result?.matchedCount ?? 0,\n\t\t\t\t\tmodifiedCount: result?.modifiedCount ?? 0,\n\t\t\t\t\tvia: 'direct_mongo_fallback'\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore direct fallback errors and retry once through the collection manager.\n\t\t}\n\t\tawait sleepTimeout(15);\n\t\tlet retryResult = await AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId },\n\t\t\t{ $set: safeSetPayload },\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tfalse,\n\t\t\ttrue\n\t\t);\n\t\tif (retryResult?.matchedCount === 0 && fallbackId && fallbackId !== messageId) {\n\t\t\tretryResult = await AiTerminalMessages.updateOne(\n\t\t\t\t{ _id: fallbackId },\n\t\t\t\t{ $set: safeSetPayload },\n\t\t\t\tundefined,\n\t\t\t\tfalse,\n\t\t\t\tfalse,\n\t\t\t\ttrue\n\t\t\t);\n\t\t}\n\t\tif (!retryResult || retryResult.matchedCount === 0) {\n\t\t\tconsole.warn(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update no-match', {\n\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\tvia: 'collection_manager_retry'\n\t\t\t});\n\t\t}\n\t\tif (debugEnabled) {\n\t\t\tconsole.log(new Date(), '[AI-Dashboard][AI-Assistant] message finalize update', {\n\t\t\t\tmessageId: fallbackId || messageId,\n\t\t\t\tmatchedCount: retryResult?.matchedCount ?? 0,\n\t\t\t\tmodifiedCount: retryResult?.modifiedCount ?? 0,\n\t\t\t\tvia: 'collection_manager_retry'\n\t\t\t});\n\t\t}\n\t}\n}\n\nasync function touchConversation(idConversation: string, timestamp: Date, lastMessageId?: string): Promise<void> {\n\tconst update: any = {\n\t\tupdatedAt: timestamp,\n\t\tlast_message_at: timestamp\n\t};\n\tif (lastMessageId) {\n\t\tupdate.last_message_id = lastMessageId;\n\t}\n\ttry {\n\t\tconst result = await AiTerminalConversations.updateOne(\n\t\t\t{ _id: idConversation },\n\t\t\t{ $set: update },\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tfalse,\n\t\t\ttrue\n\t\t);\n\t\tif (!result || result.matchedCount === 0) {\n\t\t\tconsole.warn(new Date(), '[AI-Dashboard][AI-Assistant] conversation touch no-match', {\n\t\t\t\tidConversation,\n\t\t\t\tvia: 'collection_manager'\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\tcatch (error) {\n\t\tif (!isAssistantTransactionCommittedError(error)) {\n\t\t\tthrow error;\n\t\t}\n\t\tconst dbName = resolveAssistantDatabaseNameForSystemCollections();\n\t\tconst conversationsCollection = ResolveIOServer.getMongoConnection()\n\t\t\t.db(dbName)\n\t\t\t.collection<{ _id: string; [key: string]: any }>('ai-terminal-conversations');\n\t\tconst fallbackResult = await conversationsCollection.updateOne({ _id: idConversation }, { $set: update });\n\t\tif (!fallbackResult || fallbackResult.matchedCount === 0) {\n\t\t\tconsole.warn(new Date(), '[AI-Dashboard][AI-Assistant] conversation touch no-match', {\n\t\t\t\tidConversation,\n\t\t\t\tvia: 'direct_mongo_fallback'\n\t\t\t});\n\t\t}\n\t\tawait notifyAiTerminalCollectionUpdate('ai-terminal-conversations', idConversation);\n\t}\n}\n\nfunction shouldLogAssistantFinalizeDebug(): boolean {\n\treturn parseDebugFlag(process.env.AI_DASHBOARD_DEBUG)\n\t\t|| parseDebugFlag(process.env.AI_ASSISTANT_WORKER_DEBUG);\n}\n\nasync function notifyAiTerminalCollectionUpdate(collection: string, documentId?: any): Promise<void> {\n\ttry {\n\t\tResolveIOServer.getMongoManager().invalidateQueryCache(collection, true);\n\t}\n\tcatch {}\n\ttry {\n\t\tconst subManager: any = ResolveIOServer.getMainServer()?.getSubscriptionManager?.();\n\t\tif (subManager && typeof subManager.invalidatePubsCache === 'function') {\n\t\t\tawait subManager.invalidatePubsCache(collection, 'update', documentId);\n\t\t}\n\t}\n\tcatch {}\n}\n\nfunction sanitizeAssistantMessageSetPayload(setPayload: Record<string, any>): Record<string, any> {\n\tconst next: Record<string, any> = {\n\t\t...setPayload\n\t};\n\tif (next.metadata && typeof next.metadata === 'object') {\n\t\tnext.metadata = sanitizeMongoSafeObject(next.metadata);\n\t}\n\treturn next;\n}\n\nfunction sanitizeMongoSafeObject(value: any): any {\n\tif (value === null || value === undefined) {\n\t\treturn value;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map((entry) => sanitizeMongoSafeObject(entry));\n\t}\n\tif (value instanceof Date) {\n\t\treturn value;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (!isPlainObject(value)) {\n\t\treturn value;\n\t}\n\tconst out: Record<string, any> = {};\n\tfor (const [rawKey, rawValue] of Object.entries(value)) {\n\t\tconst key = sanitizeMongoKey(rawKey);\n\t\tout[key] = sanitizeMongoSafeObject(rawValue);\n\t}\n\treturn out;\n}\n\nfunction restoreMongoSafeObject(value: any): any {\n\tif (value === null || value === undefined) {\n\t\treturn value;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map((entry) => restoreMongoSafeObject(entry));\n\t}\n\tif (value instanceof Date) {\n\t\treturn value;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (!isPlainObject(value)) {\n\t\treturn value;\n\t}\n\tconst out: Record<string, any> = {};\n\tfor (const [rawKey, rawValue] of Object.entries(value)) {\n\t\tconst key = restoreMongoKey(rawKey);\n\t\tout[key] = restoreMongoSafeObject(rawValue);\n\t}\n\treturn out;\n}\n\nfunction sanitizeMongoKey(rawKey: string): string {\n\tconst key = String(rawKey || '');\n\tif (!key) {\n\t\treturn '_';\n\t}\n\tlet sanitized = key.replace(/\\./g, '__dot__');\n\tif (sanitized.startsWith('$')) {\n\t\tsanitized = `_dollar_${sanitized.slice(1)}`;\n\t}\n\treturn sanitized || '_';\n}\n\nfunction restoreMongoKey(rawKey: string): string {\n\tconst key = String(rawKey || '');\n\tif (!key) {\n\t\treturn '';\n\t}\n\tlet restored = key.replace(/__dot__/g, '.');\n\tif (restored.startsWith('_dollar_')) {\n\t\trestored = `$${restored.slice('_dollar_'.length)}`;\n\t}\n\treturn restored;\n}\n\nfunction normalizeOptionalString(value: any): string {\n\tconst raw = typeof value === 'string' ? value.trim() : '';\n\treturn raw || '';\n}\n\nfunction resolveSingleWorkerTarget(value: any): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split(',').map(part => part.trim()).filter(Boolean);\n\tif (parts.length !== 1) {\n\t\treturn '';\n\t}\n\treturn parts[0];\n}\n\nfunction normalizeConversationMode(value: any): AiTerminalMode {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'codex') {\n\t\treturn 'codex';\n\t}\n\tif (normalized === 'openai') {\n\t\treturn 'codex';\n\t}\n\treturn 'codex';\n}\n\nfunction normalizeConversationStatus(value: any): AiTerminalConversationStatus {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'archived') {\n\t\treturn 'archived';\n\t}\n\treturn 'active';\n}\n\nfunction normalizeOptionalNumber(value: any): number | undefined {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction normalizeOptionalBoolean(value: any): boolean | undefined {\n\tif (typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {\n\t\treturn true;\n\t}\n\tif (['false', '0', 'no', 'n', 'off'].includes(normalized)) {\n\t\treturn false;\n\t}\n\treturn undefined;\n}\n\nfunction normalizeHistoryLimit(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed)) {\n\t\treturn 12;\n\t}\n\treturn Math.min(Math.max(round(parsed), 0), 30);\n}\n\nasync function resolveClientId(conversation: AiTerminalConversationModel, inputClientId?: string, contextUserId?: string): Promise<string> {\n\tconst inputValue = normalizeOptionalString(inputClientId);\n\tif (isLikelyObjectId(inputValue)) {\n\t\treturn inputValue;\n\t}\n\n\tconst conversationValue = normalizeOptionalString(conversation?.id_client);\n\tif (isLikelyObjectId(conversationValue)) {\n\t\treturn conversationValue;\n\t}\n\n\treturn await resolveClientIdFromConfig(inputValue || conversationValue, contextUserId);\n}\n\nfunction estimateUsage(messages: Array<{ role: string; content: string }>, responseText: string, model?: string) {\n\tconst inputTokens = countChatTokens(messages, model);\n\tconst outputTokens = countTokens(responseText || '', model);\n\treturn {\n\t\tinputTokens,\n\t\toutputTokens,\n\t\ttotalTokens: inputTokens + outputTokens\n\t};\n}\n\nfunction buildAssistantAIRunUsageLedgerEntry(input: {\n\tidClient?: string;\n\tmodel?: string;\n\tinputTokens?: number;\n\toutputTokens?: number;\n\ttotalTokens?: number;\n\tcategory: string;\n\tconversationId?: string;\n\trequestId?: string;\n\tusagePhase: string;\n\tidApp?: string;\n\tmetadata?: Record<string, any>;\n}): OpenAIUsageRecordInput {\n\treturn {\n\t\tid_client: normalizeOptionalString(input.idClient),\n\t\tmodel: normalizeOptionalString(input.model) || 'unknown',\n\t\tinput_tokens: Number(input.inputTokens || 0),\n\t\toutput_tokens: Number(input.outputTokens || 0),\n\t\ttotal_tokens: Number(input.totalTokens || 0),\n\t\tcategory: input.category,\n\t\tid_request: normalizeOptionalString(input.requestId) || undefined,\n\t\tid_conversation: normalizeOptionalString(input.conversationId) || undefined,\n\t\tusage_source: 'ai_assistant',\n\t\tusage_surface: 'assistant',\n\t\tusage_phase: input.usagePhase,\n\t\tcost_basis: 'estimated_tokens',\n\t\tid_app: normalizeOptionalString(input.idApp),\n\t\tmetadata: input.metadata\n\t};\n}\n\nfunction buildAssistantAIRunId(prefix: string, parts: any[]): string {\n\tconst normalizedParts = parts\n\t\t.map((part) => normalizeOptionalString(part))\n\t\t.filter(Boolean);\n\tif (normalizedParts.length) {\n\t\treturn `ai-run:ai_assistant:${prefix}:${normalizedParts.join(':')}`;\n\t}\n\tconst digest = createHash('sha1').update(`${prefix}:${Date.now()}:${Math.random()}`).digest('hex').slice(0, 20);\n\treturn `ai-run:ai_assistant:${prefix}:${digest}`;\n}\n\nasync function recordAssistantAnswerAIRun(input: {\n\trunId: string;\n\trequestId?: string;\n\tmessageId?: string;\n\tconversation?: Record<string, any>;\n\tuserMessage?: Record<string, any>;\n\tassistantMessage: Record<string, any>;\n\tusageLedgerEntry?: Record<string, any>;\n\tcorrectnessChecks?: Array<Record<string, any>>;\n\tanswerQuality?: Record<string, any>;\n\tnow?: Date;\n}): Promise<void> {\n\ttry {\n\t\tconst messages = [\n\t\t\tinput.userMessage,\n\t\t\tinput.assistantMessage\n\t\t].filter((message): message is Record<string, any> => !!message);\n\t\tconst run = buildAssistantAIRunFromEvidence({\n\t\t\trunId: input.runId,\n\t\t\trequestId: input.requestId,\n\t\t\tmessageId: input.messageId,\n\t\t\tconversation: input.conversation || {},\n\t\t\tmessages,\n\t\t\tusageLedger: input.usageLedgerEntry ? [input.usageLedgerEntry] : [],\n\t\t\tcorrectnessChecks: input.correctnessChecks || [],\n\t\t\tanswerQuality: input.answerQuality || {},\n\t\t\tnow: input.now || new Date()\n\t\t});\n\t\tawait AIRunEvidenceManager.upsertRuns([run]);\n\t}\n\tcatch (error) {\n\t\tconsole.error(new Date(), 'Failed to record AI assistant AIRun evidence', error);\n\t}\n}\n\nfunction evaluateGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst identityGuardrail = evaluateAssistantIdentityDisclosureGuardrail(normalized);\n\tif (identityGuardrail?.blocked) {\n\t\treturn identityGuardrail;\n\t}\n\tconst patterns: Array<{ pattern: RegExp; reason: string }> = [\n\t\t{ pattern: /\\b(source\\s*code|full\\s*code|entire\\s*code|repo\\s*dump|repository|git\\s*clone)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|file|contents|snippet)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i, reason: 'Credentials and secrets are restricted.' },\n\t\t{ pattern: /\\b(delete|drop)\\s+(database|db|schema)\\b/i, reason: 'Database operations are restricted.' },\n\t\t{ pattern: /\\b(shell|terminal|ssh|sudo|rm\\s+-rf|chmod|chown)\\b/i, reason: 'Server operations are restricted.' },\n\t\t{ pattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos)\\b/i, reason: 'Security abuse is restricted.' }\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: 'I can’t help with that request because it could expose proprietary code or protected information. If you need a change, describe the outcome and I can help within approved workflows.'\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction evaluateAssistantIdentityDisclosureGuardrail(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst patterns: RegExp[] = [\n\t\t/\\b(?:what|which)\\s+(?:ai|model|llm)\\b/i,\n\t\t/\\b(?:what|which)\\s+(?:model|engine|provider)\\s+(?:are|is)\\s+(?:you|this|it)\\s+using\\b/i,\n\t\t/\\b(?:are\\s+you|is\\s+(?:this|it))\\s+(?:codex|gpt|openai)\\b/i,\n\t\t/\\b(?:run(?:ning)?\\s+locally|local(?:ly)?\\s+(?:model|runtime|instance))\\b/i,\n\t\t/\\b(?:model|ai|assistant)\\s+version\\b/i,\n\t\t/\\bwhat\\s+version\\s+are\\s+you\\b/i,\n\t\t/\\bwhat\\s+version\\s+is\\s+(?:this|it)\\b/i,\n\t\t/\\bsystem\\s+prompt\\b/i\n\t];\n\tif (!patterns.some((pattern) => pattern.test(normalized))) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tblocked: true,\n\t\treason: 'Assistant identity/runtime details are restricted.',\n\t\tresponse: 'I can’t share details about the underlying AI model, provider, runtime environment, or version.'\n\t};\n}\n\nfunction isAssistantDebugUser(user: any): boolean {\n\tconst username = normalizeOptionalString(user?.username).toLowerCase();\n\treturn username === 'admin';\n}\n\nasync function resolveIsSuperAdmin(id_user?: string): Promise<boolean> {\n\tif (!id_user) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst user = await Users.findById(id_user);\n\t\treturn !!user?.roles?.super_admin;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction sanitizeFilename(value: string): string {\n\tconst trimmed = (value || '').trim();\n\tconst base = path.basename(trimmed);\n\treturn base.replace(/[^\\w.\\-]/g, '_') || `upload_${Date.now()}`;\n}\n\nfunction isReadableAttachment(type: string, ext: string): boolean {\n\tconst normalizedType = (type || '').toLowerCase();\n\tif (normalizedType.startsWith('text/')) {\n\t\treturn true;\n\t}\n\tif (['application/json', 'application/xml', 'application/csv'].includes(normalizedType)) {\n\t\treturn true;\n\t}\n\treturn ['.txt', '.md', '.json', '.csv', '.xml', '.log', '.yml', '.yaml', '.ts', '.tsx', '.js', '.jsx', '.css', '.scss', '.html', '.htm', '.sql'].includes(ext);\n}\n\nfunction ensurePathUnderRoot(targetPath: string, root: string): boolean {\n\tconst resolvedRoot = path.resolve(root);\n\tconst resolvedTarget = path.resolve(targetPath);\n\treturn resolvedTarget.startsWith(resolvedRoot);\n}\n\nasync function cleanupAttachments(attachments: AttachmentInput[]): Promise<void> {\n\tif (!attachments || !attachments.length) {\n\t\treturn;\n\t}\n\tconst uploadRoot = resolveUploadRoot();\n\tconst removals = attachments.map(async (attachment) => {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, uploadRoot);\n\t\tif (!safe) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait fs.rm(localPath, { force: true });\n\t\t}\n\t\tcatch {}\n\t});\n\tawait Promise.all(removals);\n}\n"]}
|