@resolveio/server-lib 22.3.220 → 22.3.221
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nodemon.json +5 -0
- package/.vscode/settings.json +21 -0
- package/AGENTS.md +195 -0
- package/README.md +22 -0
- package/build_package.sh +5 -0
- package/compileDTS.pl +64 -0
- package/docs/ai-assistant-nightly-eval.md +65 -0
- package/docs/ai-assistant-preflight-checklist.md +23 -0
- package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
- package/eslint-plugin-custom/index.js +7 -0
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
- package/eslint.config.js +103 -0
- package/gulpfile.js +216 -0
- package/methodAndPublicationListGenerator.py +375 -0
- package/mongodbensurers.js +2 -0
- package/mongostop.js +3 -0
- package/package.json +1 -1
- package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
- package/settings.development.json +25 -0
- package/settings.development.redacted.json +25 -0
- package/src/.env +12 -0
- package/src/ai/assistant-core-heuristics.ts +379 -0
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
- package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
- package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
- package/src/ai/resolveio-platform-intelligence.ts +462 -0
- package/src/client-server-app.ts +12 -0
- package/src/collections/ai-run.collection.ts +117 -0
- package/src/collections/ai-terminal-conversation.collection.ts +91 -0
- package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
- package/src/collections/ai-terminal-message.collection.ts +77 -0
- package/src/collections/app-setting.collection.ts +104 -0
- package/src/collections/app-status.collection.ts +58 -0
- package/src/collections/communication-metric.collection.ts +84 -0
- package/src/collections/counter.collection.ts +56 -0
- package/src/collections/cron-job-history.collection.ts +94 -0
- package/src/collections/cron-job.collection.ts +92 -0
- package/src/collections/customer-notification.collection.ts +131 -0
- package/src/collections/customer-portal-password.collection.ts +76 -0
- package/src/collections/email-history.collection.ts +134 -0
- package/src/collections/email-verified.collection.ts +62 -0
- package/src/collections/file.collection.ts +74 -0
- package/src/collections/flag-update.collection.ts +57 -0
- package/src/collections/flag.collection.ts +57 -0
- package/src/collections/log-method-latency.collection.ts +77 -0
- package/src/collections/log-subscription.collection.ts +80 -0
- package/src/collections/log.collection.ts +93 -0
- package/src/collections/logged-in-users.collection.ts +67 -0
- package/src/collections/monitor-cpu.collection.ts +65 -0
- package/src/collections/monitor-function.collection.ts +74 -0
- package/src/collections/monitor-memory.collection.ts +77 -0
- package/src/collections/monitor-mongo.collection.ts +71 -0
- package/src/collections/notification.collection.ts +57 -0
- package/src/collections/openai-usage-ledger.collection.ts +131 -0
- package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
- package/src/collections/report-builder-library.collection.ts +89 -0
- package/src/collections/report-builder-report.collection.ts +184 -0
- package/src/collections/user-group.collection.ts +89 -0
- package/src/collections/user-guide.collection.ts +57 -0
- package/src/collections/user.collection.ts +181 -0
- package/src/cron/cron.ts +117 -0
- package/src/fixtures/cron-jobs.ts +95 -0
- package/src/fixtures/init.ts +35 -0
- package/src/http/auth.ts +818 -0
- package/src/http/health.ts +7 -0
- package/src/http/home.ts +90 -0
- package/src/http/slow-query-publication.ts +49 -0
- package/src/index.ts +1 -0
- package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
- package/src/managers/ai-run-evidence.manager.ts +264 -0
- package/src/managers/communication-metric.manager.ts +82 -0
- package/src/managers/cron.manager.ts +333 -0
- package/src/managers/customer-notification-content.manager.ts +236 -0
- package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
- package/src/managers/error-auto-fix.manager.ts +2767 -0
- package/src/managers/local-log.manager.ts +113 -0
- package/src/managers/method.manager.ts +1857 -0
- package/src/managers/mongo.manager.ts +4575 -0
- package/src/managers/monitor.manager.ts +507 -0
- package/src/managers/openai-usage-ledger.manager.ts +112 -0
- package/src/managers/slow-query-verifier.manager.ts +3590 -0
- package/src/managers/slow-query.manager.ts +519 -0
- package/src/managers/subscription.manager.ts +3128 -0
- package/src/managers/websocket.manager.ts +746 -0
- package/src/managers/worker-dispatcher.manager.ts +1360 -0
- package/src/managers/worker-server.manager.ts +536 -0
- package/src/methods/accounts.ts +532 -0
- package/src/methods/ai-terminal.ts +29070 -0
- package/src/methods/app-settings.ts +114 -0
- package/src/methods/aws.ts +649 -0
- package/src/methods/collections.ts +641 -0
- package/src/methods/counters.ts +69 -0
- package/src/methods/cron-jobs.ts +2614 -0
- package/src/methods/customer-notifications.ts +458 -0
- package/src/methods/diagnostics.ts +616 -0
- package/src/methods/flag-updates.ts +7 -0
- package/src/methods/flags.ts +7 -0
- package/src/methods/logs.ts +657 -0
- package/src/methods/mongo-explorer.ts +1880 -0
- package/src/methods/monitor.ts +540 -0
- package/src/methods/pdf.ts +1236 -0
- package/src/methods/publications.ts +129 -0
- package/src/methods/report-builder.ts +3300 -0
- package/src/methods/support.ts +335 -0
- package/src/models/ai-run.model.ts +27 -0
- package/src/models/ai-terminal-conversation.model.ts +19 -0
- package/src/models/ai-terminal-issue-report.model.ts +21 -0
- package/src/models/ai-terminal-message.model.ts +24 -0
- package/src/models/app-setting.model.ts +17 -0
- package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
- package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
- package/src/models/collection-document.model.ts +24 -0
- package/src/models/communication-metric.model.ts +23 -0
- package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
- package/src/models/cron-job-history.model.ts +16 -0
- package/src/models/cron-job.model.ts +15 -0
- package/src/models/customer-notification.model.ts +28 -0
- package/src/models/customer-portal-password.model.ts +12 -0
- package/src/models/dialog.model.ts +25 -0
- package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
- package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
- package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
- package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
- package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
- package/src/models/log-method-latency.model.ts +11 -0
- package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
- package/src/models/log.model.ts +19 -0
- package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
- package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
- package/src/models/method.model.ts +25 -0
- package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
- package/src/models/monitor-function.model.ts +16 -0
- package/src/models/monitor-memory.model.ts +17 -0
- package/src/models/monitor-mongo.model.ts +15 -0
- package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
- package/src/models/openai-usage-ledger.model.ts +56 -0
- package/src/models/pagination.model.ts +35 -0
- package/src/models/permission.model.ts +14 -0
- package/src/models/report-builder-dashboard-builder.model.ts +29 -0
- package/src/models/report-builder-library.model.ts +20 -0
- package/src/models/report-builder-report.model.ts +136 -0
- package/src/models/report-builder.model.ts +68 -0
- package/src/models/select-data-label.model.ts +9 -0
- package/src/models/server-message.model.ts +31 -0
- package/src/models/slow-query-report.model.ts +23 -0
- package/src/models/subscription.model.ts +73 -0
- package/src/models/support-ticket.model.ts +104 -0
- package/src/models/user-group.model.ts +24 -0
- package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
- package/src/models/user.model.ts +96 -0
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +73 -0
- package/src/publications/app-settings.ts +25 -0
- package/src/publications/app-status.ts +13 -0
- package/src/publications/cron-jobs.ts +40 -0
- package/src/publications/customer-notifications.ts +101 -0
- package/src/publications/files.ts +33 -0
- package/src/publications/flags-update.ts +19 -0
- package/src/publications/flags.ts +19 -0
- package/src/publications/logs.ts +163 -0
- package/src/publications/notifications.ts +13 -0
- package/src/publications/report-builder-dashboard-builders.ts +39 -0
- package/src/publications/report-builder-libraries.ts +41 -0
- package/src/publications/report-builder-reports.ts +47 -0
- package/src/publications/super-admin.ts +13 -0
- package/src/publications/user-groups.ts +12 -0
- package/src/publications/user-guides.ts +12 -0
- package/src/resolveio-server-app.ts +617 -0
- package/src/server-app.ts +3354 -0
- package/src/services/codex-client.ts +1231 -0
- package/src/services/openai-client.ts +265 -0
- package/src/types/error-report.ts +26 -0
- package/src/types/js-tiktoken.d.ts +11 -0
- package/src/types/slow-query-report.ts +28 -0
- package/src/util/ai-qa-policy.ts +925 -0
- package/src/util/ai-run-evidence-adapters.ts +8347 -0
- package/src/util/ai-run-evidence-dashboard.ts +323 -0
- package/src/util/ai-run-evidence-eval.ts +1057 -0
- package/src/util/ai-run-evidence.ts +1430 -0
- package/src/util/ai-runner-artifacts.ts +586 -0
- package/src/util/ai-runner-manager-autopilot.ts +961 -0
- package/src/util/ai-runner-manager-policy.ts +5011 -0
- package/src/util/ai-runner-qa-auth.ts +838 -0
- package/src/util/ai-runner-qa-tools.ts +3536 -0
- package/src/util/aicoder-runner-v6.ts +3121 -0
- package/src/util/common.ts +649 -0
- package/src/util/customer-portal-password.ts +183 -0
- package/src/util/error-reporter.ts +332 -0
- package/src/util/error-tracking.ts +79 -0
- package/src/util/openai-usage-cost.ts +114 -0
- package/src/util/report-builder-unwinds.ts +180 -0
- package/src/util/runner-process-janitor.ts +219 -0
- package/src/util/schema-report-builder.ts +448 -0
- package/src/util/slow-query-reporter.ts +216 -0
- package/src/util/subscription-dependency-context.ts +1096 -0
- package/src/util/support-runner-v5.ts +10040 -0
- package/src/util/tokenizer.ts +38 -0
- package/src/workers/codex-runner.worker.ts +142 -0
- package/start_server.sh +5 -0
- package/tests/ai-assistant-corpus-build.ts +484 -0
- package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
- package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
- package/tests/ai-assistant-eval-triage.ts +831 -0
- package/tests/ai-assistant-openai-e2e.ts +1061 -0
- package/tests/ai-assistant-openai-git-e2e.ts +155 -0
- package/tests/ai-assistant-preflight-matrix.ts +215 -0
- package/tests/ai-assistant-routing-eval.test.ts +585 -0
- package/tests/ai-assistant-snf-live-eval.ts +975 -0
- package/tests/ai-assistant-utils.test.ts +4834 -0
- package/tests/ai-manager-autopilot-snapshot.test.ts +193 -0
- package/tests/ai-manager-recovery-checkpoint.test.ts +1383 -0
- package/tests/ai-run-eval.test.ts +132 -0
- package/tests/ai-run-evidence.test.ts +3773 -0
- package/tests/ai-runner-contract.test.ts +515 -0
- package/tests/aicoder-runner-v6.test.ts +822 -0
- package/tests/error-reporter.test.ts +145 -0
- package/tests/method-publication-generator.test.ts +46 -0
- package/tests/report-builder-linking.test.ts +79 -0
- package/tests/resolveio-platform-intelligence.test.ts +352 -0
- package/tests/server-app-cron-owner.test.ts +127 -0
- package/tests/subscription-connect-race.test.ts +158 -0
- package/tests/subscription-dependency-context.test.ts +324 -0
- package/tests/subscription-manager-collection-tracking.test.ts +86 -0
- package/tests/subscription-manager-invalidation.test.ts +86 -0
- package/tests/support-runner-v5.test.ts +3201 -0
- package/tsconfig.json +34 -0
- package/ai/assistant-core-heuristics.d.ts +0 -11
- package/ai/assistant-core-heuristics.js +0 -356
- package/ai/assistant-core-heuristics.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
- package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
- package/ai/resolveio-platform-intelligence-memory.js +0 -341
- package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
- package/ai/resolveio-platform-intelligence-types.js +0 -4
- package/ai/resolveio-platform-intelligence-types.js.map +0 -1
- package/ai/resolveio-platform-intelligence.d.ts +0 -6
- package/ai/resolveio-platform-intelligence.js +0 -463
- package/ai/resolveio-platform-intelligence.js.map +0 -1
- package/client-server-app.d.ts +0 -1
- package/client-server-app.js +0 -68
- package/client-server-app.js.map +0 -1
- package/collections/ai-run.collection.d.ts +0 -3
- package/collections/ai-run.collection.js +0 -170
- package/collections/ai-run.collection.js.map +0 -1
- package/collections/ai-terminal-conversation.collection.d.ts +0 -2
- package/collections/ai-terminal-conversation.collection.js +0 -140
- package/collections/ai-terminal-conversation.collection.js.map +0 -1
- package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
- package/collections/ai-terminal-issue-report.collection.js +0 -148
- package/collections/ai-terminal-issue-report.collection.js.map +0 -1
- package/collections/ai-terminal-message.collection.d.ts +0 -2
- package/collections/ai-terminal-message.collection.js +0 -121
- package/collections/ai-terminal-message.collection.js.map +0 -1
- package/collections/app-setting.collection.d.ts +0 -3
- package/collections/app-setting.collection.js +0 -103
- package/collections/app-setting.collection.js.map +0 -1
- package/collections/app-status.collection.d.ts +0 -3
- package/collections/app-status.collection.js +0 -57
- package/collections/app-status.collection.js.map +0 -1
- package/collections/communication-metric.collection.d.ts +0 -2
- package/collections/communication-metric.collection.js +0 -133
- package/collections/communication-metric.collection.js.map +0 -1
- package/collections/counter.collection.d.ts +0 -3
- package/collections/counter.collection.js +0 -56
- package/collections/counter.collection.js.map +0 -1
- package/collections/cron-job-history.collection.d.ts +0 -3
- package/collections/cron-job-history.collection.js +0 -137
- package/collections/cron-job-history.collection.js.map +0 -1
- package/collections/cron-job.collection.d.ts +0 -3
- package/collections/cron-job.collection.js +0 -92
- package/collections/cron-job.collection.js.map +0 -1
- package/collections/customer-notification.collection.d.ts +0 -3
- package/collections/customer-notification.collection.js +0 -130
- package/collections/customer-notification.collection.js.map +0 -1
- package/collections/customer-portal-password.collection.d.ts +0 -3
- package/collections/customer-portal-password.collection.js +0 -75
- package/collections/customer-portal-password.collection.js.map +0 -1
- package/collections/email-history.collection.d.ts +0 -3
- package/collections/email-history.collection.js +0 -134
- package/collections/email-history.collection.js.map +0 -1
- package/collections/email-verified.collection.d.ts +0 -3
- package/collections/email-verified.collection.js +0 -62
- package/collections/email-verified.collection.js.map +0 -1
- package/collections/file.collection.d.ts +0 -3
- package/collections/file.collection.js +0 -74
- package/collections/file.collection.js.map +0 -1
- package/collections/flag-update.collection.d.ts +0 -3
- package/collections/flag-update.collection.js +0 -57
- package/collections/flag-update.collection.js.map +0 -1
- package/collections/flag.collection.d.ts +0 -3
- package/collections/flag.collection.js +0 -57
- package/collections/flag.collection.js.map +0 -1
- package/collections/log-method-latency.collection.d.ts +0 -3
- package/collections/log-method-latency.collection.js +0 -77
- package/collections/log-method-latency.collection.js.map +0 -1
- package/collections/log-subscription.collection.d.ts +0 -3
- package/collections/log-subscription.collection.js +0 -80
- package/collections/log-subscription.collection.js.map +0 -1
- package/collections/log.collection.d.ts +0 -3
- package/collections/log.collection.js +0 -93
- package/collections/log.collection.js.map +0 -1
- package/collections/logged-in-users.collection.d.ts +0 -3
- package/collections/logged-in-users.collection.js +0 -67
- package/collections/logged-in-users.collection.js.map +0 -1
- package/collections/monitor-cpu.collection.d.ts +0 -3
- package/collections/monitor-cpu.collection.js +0 -65
- package/collections/monitor-cpu.collection.js.map +0 -1
- package/collections/monitor-function.collection.d.ts +0 -3
- package/collections/monitor-function.collection.js +0 -74
- package/collections/monitor-function.collection.js.map +0 -1
- package/collections/monitor-memory.collection.d.ts +0 -3
- package/collections/monitor-memory.collection.js +0 -77
- package/collections/monitor-memory.collection.js.map +0 -1
- package/collections/monitor-mongo.collection.d.ts +0 -3
- package/collections/monitor-mongo.collection.js +0 -71
- package/collections/monitor-mongo.collection.js.map +0 -1
- package/collections/notification.collection.d.ts +0 -3
- package/collections/notification.collection.js +0 -57
- package/collections/notification.collection.js.map +0 -1
- package/collections/openai-usage-ledger.collection.d.ts +0 -2
- package/collections/openai-usage-ledger.collection.js +0 -188
- package/collections/openai-usage-ledger.collection.js.map +0 -1
- package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
- package/collections/report-builder-dashboard-builder.collection.js +0 -109
- package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
- package/collections/report-builder-library.collection.d.ts +0 -3
- package/collections/report-builder-library.collection.js +0 -87
- package/collections/report-builder-library.collection.js.map +0 -1
- package/collections/report-builder-report.collection.d.ts +0 -4
- package/collections/report-builder-report.collection.js +0 -184
- package/collections/report-builder-report.collection.js.map +0 -1
- package/collections/user-group.collection.d.ts +0 -4
- package/collections/user-group.collection.js +0 -89
- package/collections/user-group.collection.js.map +0 -1
- package/collections/user-guide.collection.d.ts +0 -3
- package/collections/user-guide.collection.js +0 -57
- package/collections/user-guide.collection.js.map +0 -1
- package/collections/user.collection.d.ts +0 -4
- package/collections/user.collection.js +0 -180
- package/collections/user.collection.js.map +0 -1
- package/cron/cron.d.ts +0 -14
- package/cron/cron.js +0 -216
- package/cron/cron.js.map +0 -1
- package/fixtures/cron-jobs.d.ts +0 -1
- package/fixtures/cron-jobs.js +0 -150
- package/fixtures/cron-jobs.js.map +0 -1
- package/fixtures/init.d.ts +0 -1
- package/fixtures/init.js +0 -91
- package/fixtures/init.js.map +0 -1
- package/http/auth.d.ts +0 -2
- package/http/auth.js +0 -951
- package/http/auth.js.map +0 -1
- package/http/health.d.ts +0 -1
- package/http/health.js +0 -11
- package/http/health.js.map +0 -1
- package/http/home.d.ts +0 -1
- package/http/home.js +0 -134
- package/http/home.js.map +0 -1
- package/http/slow-query-publication.d.ts +0 -2
- package/http/slow-query-publication.js +0 -99
- package/http/slow-query-publication.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -19
- package/index.js.map +0 -1
- package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
- package/managers/ai-assistant-codex-manager.manager.js +0 -1113
- package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
- package/managers/ai-run-evidence.manager.d.ts +0 -36
- package/managers/ai-run-evidence.manager.js +0 -377
- package/managers/ai-run-evidence.manager.js.map +0 -1
- package/managers/communication-metric.manager.d.ts +0 -16
- package/managers/communication-metric.manager.js +0 -134
- package/managers/communication-metric.manager.js.map +0 -1
- package/managers/cron.manager.d.ts +0 -20
- package/managers/cron.manager.js +0 -534
- package/managers/cron.manager.js.map +0 -1
- package/managers/customer-notification-content.manager.d.ts +0 -55
- package/managers/customer-notification-content.manager.js +0 -158
- package/managers/customer-notification-content.manager.js.map +0 -1
- package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
- package/managers/diagnostic-manager-bootstrap.js +0 -260
- package/managers/diagnostic-manager-bootstrap.js.map +0 -1
- package/managers/error-auto-fix.manager.d.ts +0 -149
- package/managers/error-auto-fix.manager.js +0 -3064
- package/managers/error-auto-fix.manager.js.map +0 -1
- package/managers/local-log.manager.d.ts +0 -18
- package/managers/local-log.manager.js +0 -88
- package/managers/local-log.manager.js.map +0 -1
- package/managers/method.manager.d.ts +0 -84
- package/managers/method.manager.js +0 -1964
- package/managers/method.manager.js.map +0 -1
- package/managers/mongo.manager.d.ts +0 -224
- package/managers/mongo.manager.js +0 -5000
- package/managers/mongo.manager.js.map +0 -1
- package/managers/monitor.manager.d.ts +0 -70
- package/managers/monitor.manager.js +0 -550
- package/managers/monitor.manager.js.map +0 -1
- package/managers/openai-usage-ledger.manager.d.ts +0 -30
- package/managers/openai-usage-ledger.manager.js +0 -142
- package/managers/openai-usage-ledger.manager.js.map +0 -1
- package/managers/slow-query-verifier.manager.d.ts +0 -144
- package/managers/slow-query-verifier.manager.js +0 -3857
- package/managers/slow-query-verifier.manager.js.map +0 -1
- package/managers/slow-query.manager.d.ts +0 -28
- package/managers/slow-query.manager.js +0 -468
- package/managers/slow-query.manager.js.map +0 -1
- package/managers/subscription.manager.d.ts +0 -169
- package/managers/subscription.manager.js +0 -3434
- package/managers/subscription.manager.js.map +0 -1
- package/managers/websocket.manager.d.ts +0 -73
- package/managers/websocket.manager.js +0 -673
- package/managers/websocket.manager.js.map +0 -1
- package/managers/worker-dispatcher.manager.d.ts +0 -120
- package/managers/worker-dispatcher.manager.js +0 -1266
- package/managers/worker-dispatcher.manager.js.map +0 -1
- package/managers/worker-server.manager.d.ts +0 -35
- package/managers/worker-server.manager.js +0 -582
- package/managers/worker-server.manager.js.map +0 -1
- package/methods/accounts.d.ts +0 -2
- package/methods/accounts.js +0 -624
- package/methods/accounts.js.map +0 -1
- package/methods/ai-terminal.d.ts +0 -458
- package/methods/ai-terminal.js +0 -27991
- package/methods/ai-terminal.js.map +0 -1
- package/methods/app-settings.d.ts +0 -2
- package/methods/app-settings.js +0 -169
- package/methods/app-settings.js.map +0 -1
- package/methods/aws.d.ts +0 -2
- package/methods/aws.js +0 -877
- package/methods/aws.js.map +0 -1
- package/methods/collections.d.ts +0 -2
- package/methods/collections.js +0 -719
- package/methods/collections.js.map +0 -1
- package/methods/counters.d.ts +0 -2
- package/methods/counters.js +0 -113
- package/methods/counters.js.map +0 -1
- package/methods/cron-jobs.d.ts +0 -2
- package/methods/cron-jobs.js +0 -2475
- package/methods/cron-jobs.js.map +0 -1
- package/methods/customer-notifications.d.ts +0 -2
- package/methods/customer-notifications.js +0 -528
- package/methods/customer-notifications.js.map +0 -1
- package/methods/diagnostics.d.ts +0 -2
- package/methods/diagnostics.js +0 -703
- package/methods/diagnostics.js.map +0 -1
- package/methods/flag-updates.d.ts +0 -2
- package/methods/flag-updates.js +0 -8
- package/methods/flag-updates.js.map +0 -1
- package/methods/flags.d.ts +0 -2
- package/methods/flags.js +0 -8
- package/methods/flags.js.map +0 -1
- package/methods/logs.d.ts +0 -2
- package/methods/logs.js +0 -751
- package/methods/logs.js.map +0 -1
- package/methods/mongo-explorer.d.ts +0 -2
- package/methods/mongo-explorer.js +0 -1808
- package/methods/mongo-explorer.js.map +0 -1
- package/methods/monitor.d.ts +0 -2
- package/methods/monitor.js +0 -543
- package/methods/monitor.js.map +0 -1
- package/methods/pdf.d.ts +0 -2
- package/methods/pdf.js +0 -1216
- package/methods/pdf.js.map +0 -1
- package/methods/publications.d.ts +0 -1
- package/methods/publications.js +0 -183
- package/methods/publications.js.map +0 -1
- package/methods/report-builder.d.ts +0 -2
- package/methods/report-builder.js +0 -3094
- package/methods/report-builder.js.map +0 -1
- package/methods/support.d.ts +0 -2
- package/methods/support.js +0 -430
- package/methods/support.js.map +0 -1
- package/models/ai-run.model.d.ts +0 -19
- package/models/ai-run.model.js +0 -4
- package/models/ai-run.model.js.map +0 -1
- package/models/ai-terminal-conversation.model.d.ts +0 -17
- package/models/ai-terminal-conversation.model.js +0 -4
- package/models/ai-terminal-conversation.model.js.map +0 -1
- package/models/ai-terminal-issue-report.model.d.ts +0 -19
- package/models/ai-terminal-issue-report.model.js +0 -4
- package/models/ai-terminal-issue-report.model.js.map +0 -1
- package/models/ai-terminal-message.model.d.ts +0 -22
- package/models/ai-terminal-message.model.js +0 -4
- package/models/ai-terminal-message.model.js.map +0 -1
- package/models/app-setting.model.d.ts +0 -16
- package/models/app-setting.model.js +0 -4
- package/models/app-setting.model.js.map +0 -1
- package/models/app-status.model.js +0 -4
- package/models/app-status.model.js.map +0 -1
- package/models/billing-logged-in-users.model.js +0 -4
- package/models/billing-logged-in-users.model.js.map +0 -1
- package/models/collection-document.model.d.ts +0 -21
- package/models/collection-document.model.js +0 -4
- package/models/collection-document.model.js.map +0 -1
- package/models/communication-metric.model.d.ts +0 -20
- package/models/communication-metric.model.js +0 -4
- package/models/communication-metric.model.js.map +0 -1
- package/models/counter.model.js +0 -4
- package/models/counter.model.js.map +0 -1
- package/models/cron-job-history.model.d.ts +0 -15
- package/models/cron-job-history.model.js +0 -4
- package/models/cron-job-history.model.js.map +0 -1
- package/models/cron-job.model.d.ts +0 -14
- package/models/cron-job.model.js +0 -4
- package/models/cron-job.model.js.map +0 -1
- package/models/customer-notification.model.d.ts +0 -26
- package/models/customer-notification.model.js +0 -4
- package/models/customer-notification.model.js.map +0 -1
- package/models/customer-portal-password.model.d.ts +0 -11
- package/models/customer-portal-password.model.js +0 -4
- package/models/customer-portal-password.model.js.map +0 -1
- package/models/dialog.model.d.ts +0 -23
- package/models/dialog.model.js +0 -4
- package/models/dialog.model.js.map +0 -1
- package/models/email-history.model.d.ts +0 -32
- package/models/email-history.model.js.map +0 -1
- package/models/email-verified.model.js +0 -4
- package/models/email-verified.model.js.map +0 -1
- package/models/file.model.js +0 -4
- package/models/file.model.js.map +0 -1
- package/models/flag-update.model.js +0 -4
- package/models/flag-update.model.js.map +0 -1
- package/models/flag.model.js +0 -4
- package/models/flag.model.js.map +0 -1
- package/models/log-method-latency.model.d.ts +0 -10
- package/models/log-method-latency.model.js +0 -4
- package/models/log-method-latency.model.js.map +0 -1
- package/models/log-subscription.model.js +0 -4
- package/models/log-subscription.model.js.map +0 -1
- package/models/log.model.d.ts +0 -17
- package/models/log.model.js +0 -4
- package/models/log.model.js.map +0 -1
- package/models/logged-in-users.model.js +0 -4
- package/models/logged-in-users.model.js.map +0 -1
- package/models/method-response.model.js +0 -4
- package/models/method-response.model.js.map +0 -1
- package/models/method.model.d.ts +0 -26
- package/models/method.model.js +0 -4
- package/models/method.model.js.map +0 -1
- package/models/monitor-cpu.model.js +0 -4
- package/models/monitor-cpu.model.js.map +0 -1
- package/models/monitor-function.model.d.ts +0 -14
- package/models/monitor-function.model.js +0 -4
- package/models/monitor-function.model.js.map +0 -1
- package/models/monitor-memory.model.d.ts +0 -15
- package/models/monitor-memory.model.js +0 -4
- package/models/monitor-memory.model.js.map +0 -1
- package/models/monitor-mongo.model.d.ts +0 -13
- package/models/monitor-mongo.model.js +0 -4
- package/models/monitor-mongo.model.js.map +0 -1
- package/models/notification.model.js +0 -4
- package/models/notification.model.js.map +0 -1
- package/models/openai-usage-ledger.model.d.ts +0 -30
- package/models/openai-usage-ledger.model.js +0 -4
- package/models/openai-usage-ledger.model.js.map +0 -1
- package/models/pagination.model.d.ts +0 -11
- package/models/pagination.model.js +0 -28
- package/models/pagination.model.js.map +0 -1
- package/models/permission.model.d.ts +0 -12
- package/models/permission.model.js +0 -4
- package/models/permission.model.js.map +0 -1
- package/models/report-builder-dashboard-builder.model.d.ts +0 -25
- package/models/report-builder-dashboard-builder.model.js +0 -4
- package/models/report-builder-dashboard-builder.model.js.map +0 -1
- package/models/report-builder-library.model.d.ts +0 -17
- package/models/report-builder-library.model.js +0 -4
- package/models/report-builder-library.model.js.map +0 -1
- package/models/report-builder-report.model.d.ts +0 -121
- package/models/report-builder-report.model.js +0 -4
- package/models/report-builder-report.model.js.map +0 -1
- package/models/report-builder.model.d.ts +0 -61
- package/models/report-builder.model.js +0 -4
- package/models/report-builder.model.js.map +0 -1
- package/models/select-data-label.model.d.ts +0 -9
- package/models/select-data-label.model.js +0 -4
- package/models/select-data-label.model.js.map +0 -1
- package/models/server-message.model.d.ts +0 -32
- package/models/server-message.model.js +0 -4
- package/models/server-message.model.js.map +0 -1
- package/models/slow-query-report.model.d.ts +0 -23
- package/models/slow-query-report.model.js +0 -4
- package/models/slow-query-report.model.js.map +0 -1
- package/models/subscription.model.d.ts +0 -31
- package/models/subscription.model.js +0 -4
- package/models/subscription.model.js.map +0 -1
- package/models/support-ticket.model.d.ts +0 -87
- package/models/support-ticket.model.js +0 -4
- package/models/support-ticket.model.js.map +0 -1
- package/models/user-group.model.d.ts +0 -20
- package/models/user-group.model.js +0 -4
- package/models/user-group.model.js.map +0 -1
- package/models/user-guide.model.js +0 -4
- package/models/user-guide.model.js.map +0 -1
- package/models/user.model.d.ts +0 -84
- package/models/user.model.js +0 -4
- package/models/user.model.js.map +0 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +0 -127
- package/public_api.js.map +0 -1
- package/publications/ai-terminal.d.ts +0 -1
- package/publications/ai-terminal.js +0 -122
- package/publications/ai-terminal.js.map +0 -1
- package/publications/app-settings.d.ts +0 -2
- package/publications/app-settings.js +0 -28
- package/publications/app-settings.js.map +0 -1
- package/publications/app-status.d.ts +0 -2
- package/publications/app-status.js +0 -16
- package/publications/app-status.js.map +0 -1
- package/publications/cron-jobs.d.ts +0 -2
- package/publications/cron-jobs.js +0 -88
- package/publications/cron-jobs.js.map +0 -1
- package/publications/customer-notifications.d.ts +0 -2
- package/publications/customer-notifications.js +0 -161
- package/publications/customer-notifications.js.map +0 -1
- package/publications/files.d.ts +0 -2
- package/publications/files.js +0 -36
- package/publications/files.js.map +0 -1
- package/publications/flags-update.d.ts +0 -2
- package/publications/flags-update.js +0 -22
- package/publications/flags-update.js.map +0 -1
- package/publications/flags.d.ts +0 -2
- package/publications/flags.js +0 -22
- package/publications/flags.js.map +0 -1
- package/publications/logs.d.ts +0 -2
- package/publications/logs.js +0 -164
- package/publications/logs.js.map +0 -1
- package/publications/notifications.d.ts +0 -2
- package/publications/notifications.js +0 -16
- package/publications/notifications.js.map +0 -1
- package/publications/report-builder-dashboard-builders.d.ts +0 -2
- package/publications/report-builder-dashboard-builders.js +0 -42
- package/publications/report-builder-dashboard-builders.js.map +0 -1
- package/publications/report-builder-libraries.d.ts +0 -2
- package/publications/report-builder-libraries.js +0 -90
- package/publications/report-builder-libraries.js.map +0 -1
- package/publications/report-builder-reports.d.ts +0 -2
- package/publications/report-builder-reports.js +0 -50
- package/publications/report-builder-reports.js.map +0 -1
- package/publications/super-admin.d.ts +0 -2
- package/publications/super-admin.js +0 -16
- package/publications/super-admin.js.map +0 -1
- package/publications/user-groups.d.ts +0 -1
- package/publications/user-groups.js +0 -16
- package/publications/user-groups.js.map +0 -1
- package/publications/user-guides.d.ts +0 -1
- package/publications/user-guides.js +0 -16
- package/publications/user-guides.js.map +0 -1
- package/resolveio-server-app.d.ts +0 -70
- package/resolveio-server-app.js +0 -801
- package/resolveio-server-app.js.map +0 -1
- package/server-app.d.ts +0 -228
- package/server-app.js +0 -3566
- package/server-app.js.map +0 -1
- package/services/codex-client.d.ts +0 -128
- package/services/codex-client.js +0 -1629
- package/services/codex-client.js.map +0 -1
- package/services/openai-client.d.ts +0 -46
- package/services/openai-client.js +0 -318
- package/services/openai-client.js.map +0 -1
- package/types/error-report.d.ts +0 -25
- package/types/error-report.js +0 -4
- package/types/error-report.js.map +0 -1
- package/types/slow-query-report.d.ts +0 -27
- package/types/slow-query-report.js +0 -6
- package/types/slow-query-report.js.map +0 -1
- package/util/ai-qa-policy.d.ts +0 -124
- package/util/ai-qa-policy.js +0 -736
- package/util/ai-qa-policy.js.map +0 -1
- package/util/ai-run-evidence-adapters.d.ts +0 -109
- package/util/ai-run-evidence-adapters.js +0 -7234
- package/util/ai-run-evidence-adapters.js.map +0 -1
- package/util/ai-run-evidence-dashboard.d.ts +0 -88
- package/util/ai-run-evidence-dashboard.js +0 -343
- package/util/ai-run-evidence-dashboard.js.map +0 -1
- package/util/ai-run-evidence-eval.d.ts +0 -86
- package/util/ai-run-evidence-eval.js +0 -1018
- package/util/ai-run-evidence-eval.js.map +0 -1
- package/util/ai-run-evidence.d.ts +0 -244
- package/util/ai-run-evidence.js +0 -1096
- package/util/ai-run-evidence.js.map +0 -1
- package/util/ai-runner-artifacts.d.ts +0 -82
- package/util/ai-runner-artifacts.js +0 -713
- package/util/ai-runner-artifacts.js.map +0 -1
- package/util/ai-runner-manager-autopilot.d.ts +0 -210
- package/util/ai-runner-manager-autopilot.js +0 -642
- package/util/ai-runner-manager-autopilot.js.map +0 -1
- package/util/ai-runner-manager-policy.d.ts +0 -807
- package/util/ai-runner-manager-policy.js +0 -3501
- package/util/ai-runner-manager-policy.js.map +0 -1
- package/util/ai-runner-qa-auth.d.ts +0 -5
- package/util/ai-runner-qa-auth.js +0 -839
- package/util/ai-runner-qa-auth.js.map +0 -1
- package/util/ai-runner-qa-tools.d.ts +0 -26
- package/util/ai-runner-qa-tools.js +0 -3520
- package/util/ai-runner-qa-tools.js.map +0 -1
- package/util/aicoder-runner-v6.d.ts +0 -426
- package/util/aicoder-runner-v6.js +0 -2464
- package/util/aicoder-runner-v6.js.map +0 -1
- package/util/common.d.ts +0 -31
- package/util/common.js +0 -683
- package/util/common.js.map +0 -1
- package/util/customer-portal-password.d.ts +0 -13
- package/util/customer-portal-password.js +0 -209
- package/util/customer-portal-password.js.map +0 -1
- package/util/error-reporter.d.ts +0 -52
- package/util/error-reporter.js +0 -326
- package/util/error-reporter.js.map +0 -1
- package/util/error-tracking.d.ts +0 -13
- package/util/error-tracking.js +0 -120
- package/util/error-tracking.js.map +0 -1
- package/util/openai-usage-cost.d.ts +0 -6
- package/util/openai-usage-cost.js +0 -103
- package/util/openai-usage-cost.js.map +0 -1
- package/util/report-builder-unwinds.d.ts +0 -15
- package/util/report-builder-unwinds.js +0 -156
- package/util/report-builder-unwinds.js.map +0 -1
- package/util/runner-process-janitor.d.ts +0 -27
- package/util/runner-process-janitor.js +0 -208
- package/util/runner-process-janitor.js.map +0 -1
- package/util/schema-report-builder.d.ts +0 -6
- package/util/schema-report-builder.js +0 -481
- package/util/schema-report-builder.js.map +0 -1
- package/util/slow-query-reporter.d.ts +0 -28
- package/util/slow-query-reporter.js +0 -226
- package/util/slow-query-reporter.js.map +0 -1
- package/util/subscription-dependency-context.d.ts +0 -34
- package/util/subscription-dependency-context.js +0 -1283
- package/util/subscription-dependency-context.js.map +0 -1
- package/util/support-runner-v5.d.ts +0 -1426
- package/util/support-runner-v5.js +0 -7631
- package/util/support-runner-v5.js.map +0 -1
- package/util/tokenizer.d.ts +0 -5
- package/util/tokenizer.js +0 -41
- package/util/tokenizer.js.map +0 -1
- package/workers/codex-runner.worker.d.ts +0 -1
- package/workers/codex-runner.worker.js +0 -192
- package/workers/codex-runner.worker.js.map +0 -1
- /package/{private → src/private}/email-templates/enrollment.html +0 -0
- /package/{private → src/private}/email-templates/forgot-password.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket.html +0 -0
- /package/{public_api.d.ts → src/public_api.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/report-builder.ts"],"names":[],"mappings":"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","file":"report-builder.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ReportBuilderReports } from '../collections/report-builder-report.collection';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { recordOpenAIUsage } from '../managers/openai-usage-ledger.manager';\nimport { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';\nimport { ReportBuilderCollectionJoin } from '../models/report-builder-report.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { CodexClient, CodexConfig, CodexRunOptions, CodexThreadOptions } from '../services/codex-client';\nimport { deepCopy, round, toTitleCase } from '../util/common';\nimport { applyLinkFieldUnwinds, ensureLookupLocalKeyUnwinds, normalizeLookupField } from '../util/report-builder-unwinds';\nimport { buildTree, getReportLookupSchemas, mongoCommand } from '../util/schema-report-builder';\nimport { countChatTokens, countTokens } from '../util/tokenizer';\nimport { executeAiAssistantMongoRead, AiAssistantMongoReadInput } from './ai-terminal';\n\nconst DEFAULT_REPORT_BUILDER_CODEX_TIMEOUT_MS = 60000;\n\nlet reportBuilderCodexClient: CodexClient | null = null;\n\nexport function loadReportBuilderMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\treportBuilderAiSuggest: {\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: any) {\n\t\t\t\treturn await executeReportBuilderAi(payload || {}, this);\n\t\t\t}\n\t\t},\n\t\treportbuilderreportWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id: string) {\n\t\t\t\treturn ReportBuilderReports.findOne({_id: id});\n\t\t\t}\n\t\t},\n\t\treportBuilderBuildTree: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection_root: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcollectionJoins: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'collectionJoins.$': {\n\t\t\t\t\ttype: Object\n\t\t\t\t},\n\t\t\t\t'collectionJoins.$.collection': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\t'collectionJoins.$.alias': {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'collectionJoins.$.local_key': {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'collectionJoins.$.foreign_key': {\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: function(collection_root: string, collectionJoins: any[] = []) {\n\t\t\t\tlet baseRootTree = buildCollectionTree(collection_root);\n\n\t\t\t\tlet collectionTrees: any[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\tcollection: collection_root,\n\t\t\t\t\t\talias: toTitleCase(collection_root.replace(/\\_/g, ' ').replace(/-/g, ' ')),\n\t\t\t\t\t\tlookup_as: '',\n\t\t\t\t\t\ttree: deepCopy(baseRootTree)\n\t\t\t\t\t}\n\t\t\t\t];\n\n\t\t\t\tlet rootTree = baseRootTree;\n\n\t\t\t\t(collectionJoins || []).forEach((join, joinIndex) => {\n\t\t\t\t\tconst joinLocalKey = join.local_key && join.local_key.trim().length ? join.local_key : '_id';\n\t\t\t\t\tconst joinForeignKey = join.foreign_key && join.foreign_key.trim().length ? join.foreign_key : '_id';\n\n\t\t\t\t\tlet joinAlias = buildJoinAlias(join, joinIndex);\n\t\t\t\t\tlet joinNode = buildJoinLookupNode(collection_root, {...join, local_key: joinLocalKey, foreign_key: joinForeignKey}, joinAlias);\n\n\t\t\t\t\tlet joinTree = buildCollectionTree(join.collection, joinNode);\n\t\t\t\t\tjoinNode.children = joinTree.children;\n\t\t\t\t\tjoinNode.is_join = true;\n\n\t\t\t\t\trootTree.children.push(joinNode);\n\n\t\t\t\t\tcollectionTrees.push({\n\t\t\t\t\t\tcollection: join.collection,\n\t\t\t\t\t\talias: joinAlias,\n\t\t\t\t\t\tlookup_as: joinNode.lookup_as,\n\t\t\t\t\t\ttree: deepCopy(joinTree)\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tisLeaf: false,\n\t\t\t\t\tchildren: rootTree.children,\n\t\t\t\t\ttrees: collectionTrees\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetDistinctValue: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\ttreeLeaf: {\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(treeLeaf) {\n\t\t\t\tif (treeLeaf.fieldType === 'String') {\n\t\t\t\t\tconst fieldPath = (treeLeaf && typeof treeLeaf.fieldPath === 'string') ? treeLeaf.fieldPath : '';\n\t\t\t\t\tif (fieldPath.includes('(Lookup') || treeLeaf.lookup_collection) {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, fieldPath.replace(/^.+\\(.+\\) \\(Lookup.*\\)\\.\\$\\./g, '').replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, fieldPath.replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\treportBuilderGetResults: {\n\t\t\tbypassSession: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\treportType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\trootCollectionName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrays: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrays.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrayFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrayFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tselectedFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'selectedFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tcustomFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'customFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tgroupsRow: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'groupsRow.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsTotal: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsTotal.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsLink: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsLink.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdate_field: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdate_interval: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdisplayType: {\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(reportType: string, rootCollectionName: string, rootOptions: PaginationOptions, filters: any[] = [], filterArrays: any[] = [], filterArrayFields: any[] = [], selectedFields: any[] = [], customFields: any[] = [], groupsRow: any[] = [], fieldsTotal: any[] = [], fieldsLink: any[] = [], date_field = '', date_interval = '', displayType = '') {\n\t\t\t\tlet modelCollection = ResolveIOServer.getMongoManager().collection(rootCollectionName);\n\n\t\t\t\tif (!modelCollection) {\n\t\t\t\t\tthrow new Error('Error in Report builder get results: Invalid collection');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfilters = expandLayoutColumnFilters(filters, selectedFields);\n\t\t\t\t\tfilterArrays = expandLayoutColumnFilters(filterArrays, selectedFields);\n\t\t\t\t\tconst datePaths = collectRootDatePaths(rootCollectionName);\n\t\t\t\t\tif (datePaths.size) {\n\t\t\t\t\t\tcoerceDateFilters(filters, datePaths);\n\t\t\t\t\t\tcoerceDateFilters(filterArrays, datePaths);\n\t\t\t\t\t}\n\t\t\t\t\tconst reportBuilderTimezone = process.env.TZ_CLIENT || 'America/Chicago';\n\n\t\t\t\t\tconst lookupAliases = collectLookupAliases(selectedFields, filterArrayFields, groupsRow);\n\t\t\t\t\tconst {rootFilters, lookupFilters} = splitFiltersByLookup(filters, lookupAliases);\n\n\t\t\t\t\t// Union-based join mode (no local/foreign key): build per-collection pipelines and union them\n\t\t\t\t\t// Union-based join mode should only apply when a \"joined\" collection has no join keys.\n\t\t\t\t\t// Standard lookups (with local/foreign keys) must use the aggregation $lookup pipeline below,\n\t\t\t\t\t// otherwise we'd return unrelated docs from the foreign collection (and root fields like \"well\" go blank).\n\t\t\t\t\tconst additionalCollectionsMap = new Map<string, {collection: string, alias: string}>();\n\t\t\t\t\t(selectedFields || [])\n\t\t\t\t\t\t.filter(f =>\n\t\t\t\t\t\t\tf &&\n\t\t\t\t\t\t\tf.lookup_collection &&\n\t\t\t\t\t\t\t(!f.lookup_local_key || !f.lookup_foreign_key)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.forEach(f => {\n\t\t\t\t\t\t\tconst alias = f.lookup_as || f.lookup_collection;\n\t\t\t\t\t\t\tconst key = `${f.lookup_collection}::${alias}`;\n\t\t\t\t\t\t\tif (!additionalCollectionsMap.has(key)) {\n\t\t\t\t\t\t\t\tadditionalCollectionsMap.set(key, {collection: f.lookup_collection, alias});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\tconst additionalCollections = Array.from(additionalCollectionsMap.values());\n\n\t\t\t\t\tif (additionalCollections.length) {\n\t\t\t\t\t\tlet unionQuery: any[] = buildCollectionPipeline(rootCollectionName, '', selectedFields, filters.concat(rootFilters || []), filterArrays.concat(lookupFilters || []), true);\n\n\t\t\t\t\t\tadditionalCollections.forEach(cfg => {\n\t\t\t\t\t\t\tunionQuery.push({\n\t\t\t\t\t\t\t\t$unionWith: {\n\t\t\t\t\t\t\t\t\tcoll: cfg.collection,\n\t\t\t\t\t\t\t\t\tpipeline: buildCollectionPipeline(cfg.collection, cfg.alias, selectedFields, filters.concat(rootFilters || []), filterArrays.concat(lookupFilters || []), false)\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\n\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\tconst {sortSpec: sortToUse, addFields: layoutSortAdd} = buildLayoutSortSpec(rootOptions.sort, selectedFields);\n\t\t\t\t\t\t\tif (Object.keys(layoutSortAdd).length) {\n\t\t\t\t\t\t\t\tunionQuery.push({$addFields: layoutSortAdd});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tappendSafeSort(unionQuery, sortToUse, selectedFields, customFields);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Apply remapped filters on projected field ids after union\n\t\t\t\t\t\tconst remappedFilters = remapFiltersToIds(filters.concat(rootFilters || []), selectedFields);\n\t\t\t\t\t\tconst remappedArrayFilters = remapFiltersToIds(filterArrays.concat(lookupFilters || []), selectedFields);\n\t\t\t\t\t\tconst postMatchAnd: any[] = [];\n\t\t\t\t\t\tif (remappedFilters.length) {\n\t\t\t\t\t\t\tpostMatchAnd.push(...remappedFilters);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (remappedArrayFilters.length) {\n\t\t\t\t\t\t\tpostMatchAnd.push(...remappedArrayFilters);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (postMatchAnd.length) {\n\t\t\t\t\t\t\tunionQuery.push({$match: {$and: postMatchAnd}});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst readPreference = this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary';\n\t\t\t\t\t\tlet queryResult = {\n\t\t\t\t\t\t\tcount: 0,\n\t\t\t\t\t\t\tresults: [],\n\t\t\t\t\t\t\ttotals: {}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tqueryResult = await executeReportBuilderQuery(modelCollection, unionQuery, rootOptions, fieldsTotal, selectedFields, customFields, readPreference);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\t\tcount: queryResult.count,\n\t\t\t\t\t\t\tresults: queryResult.results,\n\t\t\t\t\t\t\ttotals: queryResult.totals\n\t\t\t\t\t\t}];\n\n\t\t\t\t\t\treturn tmpRes;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Query\n\t\t\t\t\tlet query = [];\n\t\t\t\t\t\n\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\n\t\t\t\t\t// \t\t]\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\tif (rootFilters.length) {\n\t\t\t\t\t\trootFilters.forEach(filter => initialQueryMatchCondition['$and'].push(filter));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add filter to query\n\t\t\t\t\t// if (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length || selectedFields.filter(a => !a.fieldPath.includes('(Lookup')).length) {\n\t\t\t\t\tif (initialQueryMatchCondition['$and'].length) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add count\n\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\tlet fieldData = filterField.fieldPath.split('.$');\n\n\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\tif (filterField.lookup_collection || fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup')) {\n\t\t\t\t\t\t\t\tensureLookupLocalKeyUnwinds({\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tsizes,\n\t\t\t\t\t\t\t\t\tlookupLocalKey: filterField.lookup_local_key || '',\n\t\t\t\t\t\t\t\t\tlookupAs: filterField.lookup_as || ''\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tconst lookupAs = filterField.lookup_as.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === lookupAs)) {\n\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\tfrom: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\tlocalField: normalizeLookupField(filterField.lookup_local_key),\n\t\t\t\t\t\t\t\t\t\tforeignField: normalizeLookupField(filterField.lookup_foreign_key),\n\t\t\t\t\t\t\t\t\t\tas: lookupAs\n\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\tconst lookupSizeKey = filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_');\n\t\t\t\t\t\t\t\t\tsizes.push(lookupSizeKey);\n\t\t\t\t\t\t\t\t\tconst lookupSourceExpr = '$' + lookupAs;\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + lookupSizeKey]: {$size: {$cond: [{$isArray: lookupSourceExpr}, lookupSourceExpr, []]}}}});\n\n\t\t\t\t\t\t\t\t\tconst unwindPath = '$' + lookupAs;\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: unwindPath, preserveNullAndEmptyArrays: 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\telse {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tconst sourceExpr = '$' + fieldPath;\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$cond: [{$isArray: sourceExpr}, sourceExpr, []]}}}});\n\n\t\t\t\t\t\t\t\t\tconst unwindPath = '$' + fieldPath;\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: unwindPath, preserveNullAndEmptyArrays: 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});\n\n\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\tconst rowField = (row && typeof row.field === 'string') ? row.field : '';\n\t\t\t\t\t\tif (rowField.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = rowField.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tconst lastSegment = fieldPath.split('.$')[fieldPath.split('.$').length - 1];\n\t\t\t\t\t\t\t\tconst hasLookup = !!row.treeItem?.lookup_collection || (lastSegment || '').includes('(Lookup');\n\n\t\t\t\t\t\t\t\tif (hasLookup && row.treeItem?.lookup_collection && row.treeItem?.lookup_as) {\n\t\t\t\t\t\t\t\t\tensureLookupLocalKeyUnwinds({\n\t\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\t\tsizes,\n\t\t\t\t\t\t\t\t\t\tlookupLocalKey: row.treeItem.lookup_local_key || '',\n\t\t\t\t\t\t\t\t\t\tlookupAs: row.treeItem.lookup_as || ''\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tconst lookupAsRaw = row.treeItem.lookup_as || '';\n\t\t\t\t\t\t\t\t\tconst lookupAs = lookupAsRaw.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === lookupAs)) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: row.treeItem.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: normalizeLookupField(row.treeItem.lookup_local_key || ''),\n\t\t\t\t\t\t\t\t\t\t\tforeignField: normalizeLookupField(row.treeItem.lookup_foreign_key || ''),\n\t\t\t\t\t\t\t\t\t\t\tas: lookupAs\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tconst sizeKey = lookupAsRaw.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_');\n\t\t\t\t\t\t\t\t\t\tsizes.push(sizeKey);\n\t\t\t\t\t\t\t\t\t\tconst sourceExpr = '$' + lookupAs;\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + sizeKey]: {$size: {$cond: [{$isArray: sourceExpr}, sourceExpr, []]}}}});\n\n\t\t\t\t\t\t\t\t\t\tconst unwindPath = '$' + lookupAs;\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: unwindPath, preserveNullAndEmptyArrays: true}});\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\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tconst sizeKey = fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_');\n\t\t\t\t\t\t\t\t\t\tsizes.push(sizeKey);\n\t\t\t\t\t\t\t\t\t\tconst sourceExpr = '$' + fieldPath.replace(/\\.\\$\\./g, '.');\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + sizeKey]: {$size: {$cond: [{$isArray: sourceExpr}, sourceExpr, []]}}}});\n\t\t\t\t\t\t\t\t\t\tconst unwindPath = '$' + fieldPath.replace(/\\.\\$\\./g, '.');\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: unwindPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfieldPath += '.$';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tapplyLinkFieldUnwinds({\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tsizes,\n\t\t\t\t\t\tfieldsLink,\n\t\t\t\t\t\tselectedFields,\n\t\t\t\t\t\tfilterArrayFields,\n\t\t\t\t\t\tgroupsRow\n\t\t\t\t\t});\n\n\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\t// NOTE: lookup-based unwinds are no longer needed for joins; union handled below\n\n\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\t\tif (!fieldPath && field.leafValueType !== 'Count') {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tif (!fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\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\tsizes.filter(a => !fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\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 (multFields.length) {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\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\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: [buildArrayAwareNumericFieldExpr(fieldPath), {$multiply: multFields}]\n\t\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 {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\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\tdivFields.$addFields[total.id + '_' + field.id] = buildArrayAwareNumericFieldExpr(fieldPath);\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\n\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\tif (!fieldPath) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\tsizes.filter(a => !fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => (b.field || '').replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields[fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: [buildArrayAwareNumericFieldExpr(fieldPath), {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\tif (!fieldPath) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\tsizes.filter(a => !fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => (b.field || '').replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields['count_' + fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\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\tif (reportType !== 'Dated' && sizes.filter(a => fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\t\t\t\t\t\t\tsizes.filter(a => fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).forEach(size => {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\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\tdivFields.$addFields['count_' + fieldPath.replace(/\\.\\$/g, '')] = '$count';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'avg').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\t\tif (!fieldPath && field.leafValueType !== 'Count') {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = buildArrayAwareNumericFieldExpr(fieldPath);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\t\t\t\t\tquery.push({$addFields: {[link.id]: {$cmp: ['$' + link.field_first.replace(/\\.\\$/g, ''), '$' + link.field_second.replace(/\\.\\$/g, '')]}}});\n\t\t\t\t\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t});\n\n\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\tcust.operations.filter(a => a.operation && !a.fields.some(b => (b.field === null || b.field === '') && b.value === null)).forEach((operation, opIndex) => {\n\t\t\t\t\t\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\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\tcondCheck.push({$eq: [field.value, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + field.field.replace(/\\.\\$/g, ''));\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\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t$cond: { if: { $or: condCheck }, then: 0, else: {['$' + operation.operation]: tmpOperationFields} }\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\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $eq: ['$' + cust.selFieldId, null] }, then: 0, else: '$' + cust.selFieldId}});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\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\tcondOr.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: '$' + field.field.replace(/\\.\\$/g, '')}});\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\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: field.value}});\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\n\t\t\t\t\t\t\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif (lookupFilters.length) {\n\t\t\t\t\t\tlookupFilters.forEach(filter => queryMatchConditionLookup['$and'].push(filter));\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Group\n\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t_id: {}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\tqueryGroup._id = '$_id';\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (rootOptions.sort) { \n\t\t\t\t\t\t\t\tlet groupedSorts = {};\n\t\t\t\t\t\t\t\tObject.keys(rootOptions.sort).forEach(sortField => {\n\t\t\t\t\t\t\t\t\tlet selField = selectedFields.find(a => a.id === sortField);\n\t\n\t\t\t\t\t\t\t\t\tif (selField) {\n\t\t\t\t\t\t\t\t\t\tconst sortPath = (selField && typeof selField.fieldPath === 'string') ? selField.fieldPath.replace(/\\.\\$/g, '') : '';\n\t\t\t\t\t\t\t\t\t\tif (sortPath) {\n\t\t\t\t\t\t\t\t\t\t\tgroupedSorts[sortPath] = rootOptions.sort[sortField];\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\tif (Object.keys(groupedSorts).length > 0) {\n\t\t\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t\t\t$sort: groupedSorts\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\n\t\t\t\t\t\t\tif (groupsRow.length && date_field && date_interval) {\n\t\t\t\t\t\t\t\tconst dateFieldPath = (typeof date_field === 'string') ? date_field.replace(/\\.\\$/g, '') : '';\n\t\t\t\t\t\t\t\tif (dateFieldPath) {\n\t\t\t\t\t\t\t\t\tconst dateFieldExpr = '$' + dateFieldPath;\n\t\t\t\t\t\t\t\t\tconst utcHourExpr = {'$hour': {date: dateFieldExpr, timezone: 'UTC'}};\n\t\t\t\t\t\t\t\t\tconst utcMinuteExpr = {'$minute': {date: dateFieldExpr, timezone: 'UTC'}};\n\t\t\t\t\t\t\t\t\tconst utcSecondExpr = {'$second': {date: dateFieldExpr, timezone: 'UTC'}};\n\t\t\t\t\t\t\t\t\tconst utcDayExpr = {'$dayOfMonth': {date: dateFieldExpr, timezone: 'UTC'}};\n\t\t\t\t\t\t\t\t\tconst tzDayExpr = {'$dayOfMonth': {date: dateFieldExpr, timezone: reportBuilderTimezone}};\n\t\t\t\t\t\t\t\t\tconst useUtcForDateOnlyExpr = {\n\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t{$eq: [utcHourExpr, 0]},\n\t\t\t\t\t\t\t\t\t\t\t{$eq: [utcMinuteExpr, 0]},\n\t\t\t\t\t\t\t\t\t\t\t{$eq: [utcSecondExpr, 0]},\n\t\t\t\t\t\t\t\t\t\t\t{$ne: [utcDayExpr, tzDayExpr]}\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\tconst groupingTimezoneExpr = {$cond: [useUtcForDateOnlyExpr, 'UTC', reportBuilderTimezone]};\n\n\t\t\t\t\t\t\t\t\tif (date_interval === 'Seconds') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['second'] = {'$second' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Minutes') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Hours') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['week'] = {'$isoWeek' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': dateFieldExpr, 'timezone': groupingTimezoneExpr}};\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\n\t\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\t\tconst rowField = (row && typeof row.field === 'string') ? row.field : '';\n\t\t\t\t\t\t\t\tif (!rowField || !row?.id) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + rowField.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\t\t\tif (!fieldPath) {\n\t\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': 1 };\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': buildArrayAwareNumericFieldExpr(fieldPath)};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': '$count_' + fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'First') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$first': '$' + fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + fieldPath.replace(/\\.\\$/g, '')};\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\tqueryGroup[field.id] = {'$push': {$ifNull: ['$' + fieldPath.replace(/\\.\\$/g, ''), null]}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\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\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\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 (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\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\tqueryGroup[cust.selFieldId] = {'$push': {$ifNull: ['$' + cust.selFieldId, null]}};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Totals\n\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.id] = {['$' + total.type] : '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\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\n\t\t\t\t\t\tquery.push({$group: queryGroup});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t//Projection\n\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tconst fieldPath = (field && typeof field.fieldPath === 'string') ? field.fieldPath : '';\n\t\t\t\t\t\t\t\tif (!fieldPath && field.leafValueType !== 'Count') {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = buildArrayAwareAverageFieldExpr(fieldPath);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = buildArrayAwareNumericFieldExpr(fieldPath);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + fieldPath.replace(/\\.\\$/g, '')};\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\tqueryProjection[field.id] = '$' + fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = '$' + cust.selFieldId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//Totals\n\t\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\t\tconst totalFieldPath = total.id + '_' + field.id;\n\t\t\t\t\t\t\t\t\t\tif (total.type === 'sum') {\n\t\t\t\t\t\t\t\t\t\t\tqueryProjection[totalFieldPath] = buildArrayAwareNumericFieldExpr(totalFieldPath);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (total.type === 'avg') {\n\t\t\t\t\t\t\t\t\t\t\tqueryProjection[totalFieldPath] = buildArrayAwareAverageFieldExpr(totalFieldPath);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tqueryProjection[totalFieldPath] = {['$' + total.type]: '$' + totalFieldPath};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\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\n\t\t\t\t\t\tquery.push({$project: queryProjection});\n\t\t\t\t\t}\n\n\t\t\t\t\t// SORT\n\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\tappendSafeSort(query, rootOptions.sort, selectedFields, customFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.id] = '$' + field.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.selFieldId] = '$' + field.selFieldId;\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\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + selField.id] = '$' + totField.id + '_' + selField.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + field.selFieldId] = '$' + totField.id + '_' + field.selFieldId;\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\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + field.selFieldId] = {['$' + totField.type]: '$' + totField.id + '_' + field.selFieldId};\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\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (sortKeys.includes('_id.gr_' + (groupIndex + 1))) {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\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\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsortKeys.filter(a => !a.startsWith('_id.gr_')).forEach(key => {\n\t\t\t\t\t\t\t\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tappendSafeSort(query, sort, selectedFields, customFields);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\t\t\tconsole.log('_____________ query __________'); console.log(JSON.stringify(query, null, 2));\n\t\t\t\t\t}\n\n\t\t\t\t\t\tconst readPreference = this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary';\n\t\t\t\t\t\tlet queryResult = {\n\t\t\t\t\t\t\tcount: 0,\n\t\t\t\t\t\t\tresults: [],\n\t\t\t\t\t\t\ttotals: {}\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tqueryResult = await executeReportBuilderQuery(modelCollection, query, rootOptions, fieldsTotal, selectedFields, customFields, readPreference);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\t\tcount: queryResult.count,\n\t\t\t\t\t\t\tresults: queryResult.results,\n\t\t\t\t\t\t\ttotals: queryResult.totals\n\t\t\t\t\t\t}];\n\n\t\t\t\t\treturn tmpRes;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t}\n\t});\n}\n\nfunction coerceReportBuilderNumeric(value: any): number {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(v => coerceReportBuilderNumeric(v)).reduce((a, b) => a + b, 0);\n\t}\n\n\tconst num = typeof value === 'number' ? value : (value !== null && value !== undefined ? Number(value) : 0);\n\treturn isNaN(num) ? 0 : num;\n}\n\nfunction buildReportBuilderTotalsFieldKeySets(fieldsTotal: any[] = [], selectedFields: any[] = [], customFields: any[] = []) {\n\tconst numericSelectedFields = selectedFields.filter(field => field?.fieldType === 'Number' || field?.leafValueType === 'Count');\n\tconst sumKeys = new Set<string>();\n\tconst avgKeys = new Set<string>();\n\n\tfieldsTotal.forEach(totalField => {\n\t\tnumericSelectedFields.forEach(selectedField => {\n\t\t\tconst key = `${totalField.id}_${selectedField.id}`;\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (totalField.type === 'sum') {\n\t\t\t\tsumKeys.add(key);\n\t\t\t}\n\t\t\telse if (totalField.type === 'avg') {\n\t\t\t\tavgKeys.add(key);\n\t\t\t}\n\t\t});\n\n\t\tcustomFields.forEach(customField => {\n\t\t\tconst customId = customField?.selFieldId;\n\t\t\tif (!customId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst key = `${totalField.id}_${customId}`;\n\t\t\tif (totalField.type === 'sum') {\n\t\t\t\tsumKeys.add(key);\n\t\t\t}\n\t\t\telse if (totalField.type === 'avg') {\n\t\t\t\tavgKeys.add(key);\n\t\t\t}\n\t\t});\n\t});\n\n\treturn {sumKeys, avgKeys};\n}\n\nfunction buildReportBuilderTotalsFromSums(fieldsTotal: any[] = [], selectedFields: any[] = [], customFields: any[] = [], sumValues: Record<string, number> = {}, count = 0) {\n\tconst numericSelectedFields = selectedFields.filter(field => field?.fieldType === 'Number' || field?.leafValueType === 'Count');\n\tconst totals = {};\n\n\tfieldsTotal.forEach(totalField => {\n\t\tnumericSelectedFields.forEach(selectedField => {\n\t\t\tconst key = `${totalField.id}_${selectedField.id}`;\n\t\t\tconst sum = coerceReportBuilderNumeric(sumValues[key]);\n\n\t\t\tif (totalField.type === 'sum') {\n\t\t\t\ttotals[key] = sum;\n\t\t\t}\n\t\t\telse if (totalField.type === 'avg') {\n\t\t\t\ttotals[key] = count ? round(sum / count) : 0;\n\t\t\t}\n\t\t});\n\n\t\tcustomFields.forEach(customField => {\n\t\t\tconst customId = customField?.selFieldId;\n\t\t\tif (!customId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst key = `${totalField.id}_${customId}`;\n\t\t\tconst sum = coerceReportBuilderNumeric(sumValues[key]);\n\n\t\t\tif (totalField.type === 'sum') {\n\t\t\t\ttotals[key] = sum;\n\t\t\t}\n\t\t\telse if (totalField.type === 'avg') {\n\t\t\t\ttotals[key] = count ? round(sum / count) : 0;\n\t\t\t}\n\t\t});\n\t});\n\n\treturn totals;\n}\n\nfunction buildReportBuilderNumericSumExpr(fieldKey: string) {\n\tconst fieldExpr = '$' + fieldKey;\n\n\treturn {\n\t\t$cond: [\n\t\t\t{$isArray: fieldExpr},\n\t\t\t{\n\t\t\t\t$reduce: {\n\t\t\t\t\tinput: fieldExpr,\n\t\t\t\t\tinitialValue: 0,\n\t\t\t\t\tin: {\n\t\t\t\t\t\t$add: [\n\t\t\t\t\t\t\t'$$value',\n\t\t\t\t\t\t\t{$convert: {input: '$$this', to: 'double', onError: 0, onNull: 0}}\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\t{$convert: {input: fieldExpr, to: 'double', onError: 0, onNull: 0}}\n\t\t]\n\t};\n}\n\nasync function executeReportBuilderQuery(modelCollection: any, query: any[], rootOptions: PaginationOptions, fieldsTotal: any[] = [], selectedFields: any[] = [], customFields: any[] = [], readPreference: string = 'primary') {\n\tconst aggregateOptions = {\n\t\tallowDiskUse: true,\n\t\treadPreference\n\t};\n\n\tconst {sumKeys, avgKeys} = buildReportBuilderTotalsFieldKeySets(fieldsTotal, selectedFields, customFields);\n\tconst allTotalKeys = new Set<string>([...sumKeys, ...avgKeys]);\n\n\tif (rootOptions?.limit && rootOptions.limit > 0) {\n\t\tconst resultsFacet: any[] = [];\n\t\tif (rootOptions.skip && rootOptions.skip > 0) {\n\t\t\tresultsFacet.push({$skip: rootOptions.skip});\n\t\t}\n\t\tresultsFacet.push({$limit: rootOptions.limit});\n\n\t\tconst facet: any = {\n\t\t\tresults: resultsFacet,\n\t\t\tcount: [{$count: 'count'}],\n\t\t\ttotals: []\n\t\t};\n\n\t\tif (allTotalKeys.size) {\n\t\t\tconst totalsGroup = {\n\t\t\t\t_id: null,\n\t\t\t\t__count: {$sum: 1}\n\t\t\t};\n\n\t\t\tArray.from(allTotalKeys).forEach(key => {\n\t\t\t\ttotalsGroup[key] = {$sum: buildReportBuilderNumericSumExpr(key)};\n\t\t\t});\n\n\t\t\tfacet.totals = [\n\t\t\t\t{$group: totalsGroup}\n\t\t\t];\n\t\t}\n\n\t\tconst facetedQuery = query.concat([\n\t\t\t{$facet: facet}\n\t\t]);\n\t\tconst facetedResult = await modelCollection.aggregate(facetedQuery, aggregateOptions, true);\n\t\tconst facetDoc = Array.isArray(facetedResult) && facetedResult.length ? facetedResult[0] : {};\n\t\tconst count = facetDoc?.count?.[0]?.count || 0;\n\t\tconst results = Array.isArray(facetDoc?.results) ? facetDoc.results : [];\n\t\tconst totalsDoc = facetDoc?.totals?.[0] || {};\n\t\tconst sumValues = {};\n\n\t\tArray.from(allTotalKeys).forEach(key => {\n\t\t\tsumValues[key] = coerceReportBuilderNumeric(totalsDoc[key]);\n\t\t});\n\n\t\tconst totals = buildReportBuilderTotalsFromSums(fieldsTotal, selectedFields, customFields, sumValues, count);\n\n\t\treturn {count, results, totals};\n\t}\n\n\tconst fullResult = await modelCollection.aggregate(query, aggregateOptions, true);\n\tconst rows = Array.isArray(fullResult) ? fullResult : [];\n\tconst sumValues = {};\n\n\tArray.from(allTotalKeys).forEach(key => {\n\t\tsumValues[key] = rows.map(row => coerceReportBuilderNumeric(row ? row[key] : 0)).reduce((a, b) => a + b, 0);\n\t});\n\n\tlet results = rows;\n\tif (rootOptions?.skip && rootOptions.skip > 0) {\n\t\tresults = results.slice(rootOptions.skip);\n\t}\n\tif (rootOptions?.limit && rootOptions.limit > 0) {\n\t\tresults = results.slice(0, rootOptions.limit);\n\t}\n\n\tconst totals = buildReportBuilderTotalsFromSums(fieldsTotal, selectedFields, customFields, sumValues, rows.length);\n\n\treturn {\n\t\tcount: rows.length,\n\t\tresults,\n\t\ttotals\n\t};\n}\n\nfunction buildCollectionTree(collectionName: string, lookupNode?: any) {\n\tlet lookupSchemaData = getReportLookupSchemas(collectionName).sort((a, b) => a.collection_name.localeCompare(b.collection_name));\n\tlet lookupSchemaTree = lookupSchemaData.find(a => a.is_root === true)?.tree || {};\n\n\tlet treeItems = buildTree(collectionName, lookupSchemaTree, lookupNode);\n\n\tattachLookupChildren(treeItems, lookupSchemaData, lookupSchemaTree);\n\n\treturn {isLeaf: false, children: treeItems};\n}\n\nfunction attachLookupChildren(treeItems: any[], lookupSchemaData: any[], lookupSchemaTree: any) {\n\tObject.keys(lookupSchemaTree || {}).filter(a => a.endsWith('(Lookup)')).forEach(lookup => {\n\t\tlet field = findFieldByPath(treeItems, lookup);\n\n\t\tif (field) {\n\t\t\tlet lookupTree = lookupSchemaData.find(a => a.collection_name === lookupSchemaTree[lookup].lookup_collection);\n\n\t\t\tif (lookupTree) {\n\t\t\t\tlet childTree = buildTree(lookupSchemaTree[lookup].lookup_collection, lookupTree.tree, field);\n\t\t\t\tattachLookupChildren(childTree, lookupSchemaData, lookupTree.tree);\n\t\t\t\tfield.children = childTree;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction findFieldByPath(treeItems: any[], lookupPath: string) {\n\tlet fieldPath = lookupPath.split('.');\n\tlet field = null;\n\n\tfieldPath.forEach(path => {\n\t\tif (!field) {\n\t\t\tfield = treeItems.find(a => a.fieldName === path);\n\t\t}\n\t\telse if (field.children) {\n\t\t\tfield = field.children.find(a => a.fieldName === path);\n\t\t}\n\t});\n\n\treturn field;\n}\n\nfunction buildJoinLookupNode(collection_root: string, join: ReportBuilderCollectionJoin, alias: string) {\n\treturn {\n\t\tcollection_name: collection_root,\n\t\tcolumnName: alias,\n\t\tfieldName: alias,\n\t\tfieldType: 'Lookup',\n\t\tfieldTypeName: 'Lookup',\n\t\tdistinctFieldValues: [],\n\t\tfieldPath: alias,\n\t\tfieldPathName: alias,\n\t\tpath: alias,\n\t\tlookup_collection: join.collection,\n\t\tlookup_local_key: join.local_key,\n\t\tlookup_foreign_key: join.foreign_key,\n\t\tlookup_as: alias,\n\t\ttext: alias,\n\t\tvalue: alias,\n\t\tisLeaf: false,\n\t\tisActive: false,\n\t\tisSelected: false,\n\t\tis_join: false,\n\t\tdepth: 0,\n\t\tleafValueType: '',\n\t\tleafFormatType: '',\n\t\tchildren: []\n\t};\n}\n\nfunction buildJoinAlias(join: ReportBuilderCollectionJoin, joinIndex: number) {\n\tif (join.alias && join.alias.trim()) {\n\t\treturn join.alias.trim();\n\t}\n\n\tlet joinName = toTitleCase(join.collection.replace(/\\_/g, ' ').replace(/-/g, ' '));\n\tlet joinPath = toTitleCase(join.local_key.replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ').replace(/\\_/g, ' '));\n\n\treturn `${joinName} (${joinPath || 'Join'}) (Lookup ${joinIndex + 1})`;\n}\n\nfunction buildArrayAwareNumericFieldExpr(fieldPath: string) {\n\tconst normalizedFieldPath = (fieldPath || '').replace(/\\.\\$/g, '');\n\tif (!normalizedFieldPath) {\n\t\treturn 0;\n\t}\n\tconst fieldExpr = '$' + normalizedFieldPath;\n\n\treturn {\n\t\t$cond: [\n\t\t\t{$isArray: fieldExpr},\n\t\t\t{$sum: {$ifNull: [fieldExpr, []]}},\n\t\t\t{$ifNull: [fieldExpr, 0]}\n\t\t]\n\t};\n}\n\nfunction buildArrayAwareAverageFieldExpr(fieldPath: string) {\n\tconst normalizedFieldPath = (fieldPath || '').replace(/\\.\\$/g, '');\n\tif (!normalizedFieldPath) {\n\t\treturn 0;\n\t}\n\tconst fieldExpr = '$' + normalizedFieldPath;\n\n\treturn {\n\t\t$cond: [\n\t\t\t{$isArray: fieldExpr},\n\t\t\t{\n\t\t\t\t$cond: [\n\t\t\t\t\t{$gt: [{$size: {$ifNull: [fieldExpr, []]}}, 0]},\n\t\t\t\t\t{$avg: {$ifNull: [fieldExpr, []]}},\n\t\t\t\t\t0\n\t\t\t\t]\n\t\t\t},\n\t\t\t{$ifNull: [fieldExpr, 0]}\n\t\t]\n\t};\n}\n\nfunction appendSafeSort(query: any[], sortSpec: any, selectedFields: any[] = [], customFields: any[] = []) {\n\tif (!sortSpec || !Object.keys(sortSpec).length) {\n\t\treturn;\n\t}\n\n\tconst safeAddFields = {};\n\tconst safeSort = {};\n\n\tObject.keys(sortSpec).forEach(key => {\n\t\tif (key.startsWith('_id.')) {\n\t\t\tsafeSort[key] = sortSpec[key];\n\t\t\treturn;\n\t\t}\n\n\t\tif (isArrayLikeField(key, selectedFields, customFields)) {\n\t\t\tconst safeKey = 'sort_' + key.replace(/\\./g, '_');\n\t\t\tsafeAddFields[safeKey] = {\n\t\t\t\t$cond: [\n\t\t\t\t\t{$isArray: '$' + key},\n\t\t\t\t\t{$size: {$ifNull: ['$' + key, []]}},\n\t\t\t\t\t'$' + key\n\t\t\t\t]\n\t\t\t};\n\t\t\tsafeSort[safeKey] = sortSpec[key];\n\t\t}\n\t\telse {\n\t\t\tsafeSort[key] = sortSpec[key];\n\t\t}\n\t});\n\n\tif (Object.keys(safeAddFields).length) {\n\t\tquery.push({$addFields: safeAddFields});\n\t}\n\n\tif (Object.keys(safeSort).length) {\n\t\tquery.push({$sort: safeSort});\n\t}\n}\n\nfunction isArrayLikeField(sortKey: string, selectedFields: any[] = [], customFields: any[] = []) {\n\tconst field = selectedFields.find(a => a.id === sortKey);\n\tconst custom = customFields.find(a => a.selFieldId === sortKey);\n\n\tconst leafValueType = field ? field.leafValueType : (custom ? custom.leafValueType : '');\n\n\treturn leafValueType !== 'Average' &&\n\t\tleafValueType !== 'Sum' &&\n\t\tleafValueType !== 'Count' &&\n\t\tleafValueType !== 'Minimum' &&\n\t\tleafValueType !== 'Maximum' &&\n\t\tleafValueType !== 'First' &&\n\t\tleafValueType !== 'Last' &&\n\t\tleafValueType !== 'Unique';\n}\n\nfunction collectLookupAliases(selectedFields: any[] = [], filterArrayFields: any[] = [], groupsRow: any[] = []) {\n\tconst aliases = new Set<string>();\n\n\tconst addAlias = (alias: string) => {\n\t\tconst normalized = normalizeLookupAlias(alias);\n\t\tif (normalized) {\n\t\t\taliases.add(normalized);\n\t\t}\n\t};\n\n\t(selectedFields || []).forEach(field => {\n\t\tif (field && (field.lookup_collection || (field.fieldPath && field.fieldPath.includes('(Lookup')))) {\n\t\t\taddAlias(field.lookup_as || extractLookupAlias(field.fieldPath));\n\t\t}\n\t});\n\n\t(filterArrayFields || []).forEach(field => {\n\t\tif (field && (field.lookup_collection || (field.fieldPath && field.fieldPath.includes('(Lookup')))) {\n\t\t\taddAlias(field.lookup_as || extractLookupAlias(field.fieldPath));\n\t\t}\n\t});\n\n\t(groupsRow || []).forEach(group => {\n\t\tif (group?.treeItem && (group.treeItem.lookup_collection || (group.treeItem.fieldPath && group.treeItem.fieldPath.includes('(Lookup')))) {\n\t\t\taddAlias(group.treeItem.lookup_as || extractLookupAlias(group.treeItem.fieldPath));\n\t\t}\n\t});\n\n\treturn aliases;\n}\n\nfunction splitFiltersByLookup(filters: any[] = [], lookupAliases: Set<string> = new Set()) {\n\tconst rootFilters = [];\n\tconst lookupFilters = [];\n\n\t(filters || []).forEach(filter => {\n\t\tconst summary = summarizeFilterTargets(filter, lookupAliases);\n\n\t\tif (summary.hasLookup) {\n\t\t\t// If the filter mixes root + lookup, keep it together in lookupFilters so it stays a single $match/$or\n\t\t\tlookupFilters.push(filter);\n\t\t}\n\t\telse {\n\t\t\trootFilters.push(filter);\n\t\t}\n\t});\n\n\treturn {rootFilters, lookupFilters};\n}\n\nfunction summarizeFilterTargets(filter: any, lookupAliases: Set<string>) {\n\tconst result = {hasLookup: false, hasRoot: false};\n\n\tif (!filter || typeof filter !== 'object') {\n\t\treturn result;\n\t}\n\n\tObject.keys(filter).forEach(key => {\n\t\tif (key === '$or' || key === '$and') {\n\t\t\tconst branch = filter[key];\n\t\t\tif (Array.isArray(branch)) {\n\t\t\t\tbranch.forEach(child => {\n\t\t\t\t\tconst childSummary = summarizeFilterTargets(child, lookupAliases);\n\t\t\t\t\tresult.hasLookup = result.hasLookup || childSummary.hasLookup;\n\t\t\t\t\tresult.hasRoot = result.hasRoot || childSummary.hasRoot;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst isLookup = isLookupPath(key, lookupAliases);\n\t\t\tif (isLookup) {\n\t\t\t\tresult.hasLookup = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult.hasRoot = true;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn result;\n}\n\nfunction isLookupPath(path: string, lookupAliases: Set<string>) {\n\tif (!path) {\n\t\treturn false;\n\t}\n\n\tconst normalizedPath = path.replace(/\\.\\$/g, '');\n\n\tif (normalizedPath.includes('(Lookup')) {\n\t\treturn true;\n\t}\n\n\tconst rootKey = normalizedPath.split('.')[0];\n\treturn lookupAliases.has(rootKey);\n}\n\nfunction extractLookupAlias(path: string) {\n\tif (!path || !path.includes('(Lookup')) {\n\t\treturn '';\n\t}\n\n\treturn path.replace(/\\.\\$/g, '').split('.')[0];\n}\n\nfunction normalizeLookupAlias(alias: string) {\n\treturn (alias || '').replace(/\\.\\$/g, '').trim();\n}\n\nfunction collectRootDatePaths(collectionName: string) {\n\tconst out = new Set<string>();\n\tconst collection = ResolveIOServer.getMongoManager().collection(collectionName);\n\tconst schema = collection?.rbSchema || {};\n\n\tObject.keys(schema).forEach(path => {\n\t\tif (schema[path]?.rbType === 'Date') {\n\t\t\tout.add(path.replace(/\\.\\$/g, ''));\n\t\t}\n\t});\n\n\treturn out;\n}\n\nfunction coerceDateFilters(filters: any[] = [], datePaths: Set<string>) {\n\tconst coerceDateValue = (value: any): any => {\n\t\tif (value instanceof Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(coerceDateValue);\n\t\t}\n\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\tconst parsed = new Date(value);\n\t\t\tif (!isNaN(parsed.getTime())) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t};\n\n\tconst coerceFilterObject = (obj: any): any => {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (Array.isArray(obj)) {\n\t\t\tobj.forEach(coerceFilterObject);\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (obj.$or) {\n\t\t\tobj.$or = obj.$or.map(coerceFilterObject).filter(Boolean);\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (obj.$and) {\n\t\t\tobj.$and = obj.$and.map(coerceFilterObject).filter(Boolean);\n\t\t\treturn obj;\n\t\t}\n\n\t\tObject.keys(obj).forEach(key => {\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst normalizedKey = key.replace(/\\.\\$/g, '');\n\t\t\tif (!datePaths.has(normalizedKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = obj[key];\n\t\t\tif (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n\t\t\t\tObject.keys(value).forEach(op => {\n\t\t\t\t\tif (op.startsWith('$')) {\n\t\t\t\t\t\tvalue[op] = coerceDateValue(value[op]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tobj[key] = coerceDateValue(value);\n\t\t\t}\n\t\t});\n\n\t\treturn obj;\n\t};\n\n\t(filters || []).forEach(coerceFilterObject);\n}\n\n// Helpers to support union-based joins (collection_joins without local/foreign key)\nfunction stripAliasFromPath(path: string, alias: string) {\n\tif (!path) {\n\t\treturn path;\n\t}\n\n\tconst cleanAlias = alias.replace(/\\.\\$/g, '');\n\tconst cleanPath = path.replace(/\\.\\$/g, '');\n\n\tif (cleanPath.startsWith(cleanAlias + '.')) {\n\t\treturn cleanPath.substring(cleanAlias.length + 1);\n\t}\n\n\treturn cleanPath;\n}\n\nfunction buildCollectionPipeline(collectionName: string, alias: string, selectedFields: any[] = [], filters: any[] = [], filterArrays: any[] = [], isRoot = false) {\n\tconst pipeline: any[] = [];\n\tconst matchClauses: any[] = [];\n\tconst matchArrayClauses: any[] = [];\n\n\tconst targetAlias = isRoot ? '' : alias.replace(/\\.\\$/g, '');\n\n\tconst mapFilterForCollection = (filterObj: any, toArray: boolean) => {\n\t\tif (!filterObj || typeof filterObj !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mapped = mapFilterPaths(filterObj, targetAlias, isRoot);\n\t\tif (mapped) {\n\t\t\t(toArray ? matchArrayClauses : matchClauses).push(mapped);\n\t\t}\n\t};\n\n\t(filters || []).forEach(f => mapFilterForCollection(f, false));\n\t(filterArrays || []).forEach(f => mapFilterForCollection(f, true));\n\n\tif (matchClauses.length || matchArrayClauses.length) {\n\t\tconst match: any = {$and: [...matchClauses, ...matchArrayClauses]};\n\t\tpipeline.push({$match: match});\n\n\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\tconsole.info('RB debug: collection pipeline match', {\n\t\t\t\tcollection: collectionName,\n\t\t\t\talias: targetAlias || collectionName,\n\t\t\t\tmatchJson: JSON.stringify(match, null, 2)\n\t\t\t});\n\t\t}\n\t}\n\n\t// Projection mapping selected fields for this collection\n\tconst projection: any = {_id: 1, __rb_collection: targetAlias || collectionName};\n\t(selectedFields || [])\n\t\t.filter(f => isFieldForCollection(f, collectionName, targetAlias))\n\t\t\t.forEach(f => {\n\t\t\t\tconst mappedPath = stripAliasFromPath(f.fieldPath || '', targetAlias || f.lookup_as || '');\n\t\t\t\tif (f.leafValueType === 'Average') {\n\t\t\t\t\tprojection[f.id] = buildArrayAwareAverageFieldExpr(mappedPath);\n\t\t\t\t}\n\t\t\t\telse if (f.leafValueType === 'Sum') {\n\t\t\t\t\tprojection[f.id] = buildArrayAwareNumericFieldExpr(mappedPath);\n\t\t\t\t}\n\t\t\telse if (f.leafValueType === 'Count') {\n\t\t\t\tprojection[f.id] = {$sum: 1};\n\t\t\t}\n\t\t\telse if (f.leafValueType === 'Minimum') {\n\t\t\t\tprojection[f.id] = {$min: '$' + mappedPath};\n\t\t\t}\n\t\t\telse if (f.leafValueType === 'Maximum') {\n\t\t\t\tprojection[f.id] = {$max: '$' + mappedPath};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprojection[f.id] = '$' + mappedPath;\n\t\t\t}\n\t\t});\n\n\tpipeline.push({$project: projection});\n\n\treturn pipeline;\n}\n\nfunction isFieldForCollection(field: any, collectionName: string, alias: string) {\n\tif (!field) {\n\t\treturn false;\n\t}\n\n\t// Root collection check\n\tif (!alias) {\n\t\treturn field.collection_name === collectionName && (!field.lookup_collection || field.lookup_collection === '');\n\t}\n\n\t// Joined collection check\n\treturn field.lookup_collection === collectionName || (field.lookup_as && field.lookup_as.replace(/\\.\\$/g, '') === alias);\n}\n\nfunction mapFilterPaths(filter: any, alias: string, isRoot: boolean) {\n\tif (!filter || typeof filter !== 'object') {\n\t\treturn null;\n\t}\n\n\tif (Array.isArray(filter)) {\n\t\treturn filter.map(f => mapFilterPaths(f, alias, isRoot));\n\t}\n\n\tif (filter.$or) {\n\t\tconst mapped = filter.$or.map(f => mapFilterPaths(f, alias, isRoot)).filter(Boolean);\n\t\treturn mapped.length ? {$or: mapped} : null;\n\t}\n\n\tif (filter.$and) {\n\t\tconst mapped = filter.$and.map(f => mapFilterPaths(f, alias, isRoot)).filter(Boolean);\n\t\treturn mapped.length ? {$and: mapped} : null;\n\t}\n\n\tconst out: any = {};\n\tObject.keys(filter).forEach(key => {\n\t\tconst cleanKey = key.replace(/\\.\\$/g, '');\n\n\t\tif (!alias) {\n\t\t\t// root collection: ignore keys that start with a lookup alias\n\t\t\tif (cleanKey.includes('(Lookup')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (lookupAliasMatches(cleanKey, alias)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tout[cleanKey] = filter[key];\n\t\t}\n\t\telse {\n\t\t\tif (cleanKey.startsWith(alias + '.')) {\n\t\t\t\tout[cleanKey.substring(alias.length + 1)] = filter[key];\n\t\t\t}\n\t\t}\n\t});\n\n\treturn Object.keys(out).length ? out : null;\n}\n\nfunction lookupAliasMatches(path: string, alias: string) {\n\tif (!path || !alias) {\n\t\treturn false;\n\t}\n\treturn path.startsWith(alias + '.') || path === alias;\n}\n\nfunction buildLayoutSortSpec(sortSpec: any = {}, selectedFields: any[] = []) {\n\tconst outSort: any = {...sortSpec};\n\tconst addFields: any = {};\n\n\tObject.keys(sortSpec || {}).forEach(key => {\n\t\tif (!key.startsWith('layout_col_')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst normalized = key.replace(/^layout_col_/, '');\n\t\tconst parts = normalized.split('_');\n\t\tconst idx = parseInt(parts[parts.length - 1], 10);\n\n\t\tif (isNaN(idx)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst layoutFields = (selectedFields || []).filter(f => typeof f?.layoutColumnIndex !== 'undefined' && f.layoutColumnIndex === idx).map(f => f.id).filter(Boolean);\n\n\t\tif (!layoutFields.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Build nested $ifNull chain to coalesce across layout column targets\n\t\tlet coalesce: any = '';\n\t\tfor (let i = layoutFields.length - 1; i >= 0; i--) {\n\t\t\tconst fieldPath = '$' + layoutFields[i];\n\t\t\tif (i === layoutFields.length - 1) {\n\t\t\t\tcoalesce = fieldPath;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcoalesce = {$ifNull: [fieldPath, coalesce]};\n\t\t\t}\n\t\t}\n\n\t\tconst sortKey = 'sort_' + key;\n\t\taddFields[sortKey] = coalesce;\n\n\t\tdelete outSort[key];\n\t\toutSort[sortKey] = sortSpec[key];\n\t});\n\n\treturn {sortSpec: outSort, addFields};\n}\n\nfunction remapFiltersToIds(filters: any[] = [], selectedFields: any[] = []) {\n\tconst byPath = new Map<string, string>();\n\tconst layoutMap = new Map<number, string[]>();\n\t(selectedFields || []).forEach(f => {\n\t\tif (f?.fieldPath && f?.id) {\n\t\t\tbyPath.set(f.fieldPath.replace(/\\.\\$/g, ''), f.id);\n\t\t}\n\n\t\tif (typeof f?.layoutColumnIndex !== 'undefined') {\n\t\t\tconst arr = layoutMap.get(f.layoutColumnIndex) || [];\n\t\t\tarr.push(f.id);\n\t\t\tlayoutMap.set(f.layoutColumnIndex, arr);\n\t\t}\n\t});\n\n\tconst remapObj = (obj: any): any => {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(remapObj);\n\t\t}\n\n\t\tif (obj.$or) {\n\t\t\tconst mapped = obj.$or.map(remapObj).filter(Boolean);\n\t\t\treturn mapped.length ? {$or: mapped} : null;\n\t\t}\n\n\t\tif (obj.$and) {\n\t\t\tconst mapped = obj.$and.map(remapObj).filter(Boolean);\n\t\t\treturn mapped.length ? {$and: mapped} : null;\n\t\t}\n\n\t\tconst out: any = {};\n\t\tObject.keys(obj).forEach(key => {\n\t\t\tconst cleanKey = key.replace(/\\.\\$/g, '');\n\t\t\tif (cleanKey.startsWith('layout_col_')) {\n\t\t\t\t// map to all field ids in that layout column index\n\t\t\t\tconst normalized = cleanKey.replace(/^layout_col_/, '');\n\t\t\t\tconst parts = normalized.split('_');\n\t\t\t\tconst idx = parseInt(parts[parts.length - 1], 10);\n\t\t\t\tconst targets = layoutMap.get(idx) || [];\n\n\t\t\t\tif (targets.length) {\n\t\t\t\t\tconst mappedVal = remapObj(obj[key]);\n\t\t\t\t\tout.$or = targets.map(id => ({[id]: mappedVal}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst mappedKey = byPath.get(cleanKey) || cleanKey;\n\t\t\tout[mappedKey] = remapObj(obj[key]);\n\t\t});\n\n\t\treturn Object.keys(out).length ? out : null;\n\t};\n\n\treturn (filters || []).map(remapObj).filter(Boolean);\n}\n\nfunction expandLayoutColumnFilters(filters: any[] = [], selectedFields: any[] = []) {\n\tconst layoutCache: {[key: string]: string[]} = {};\n\n\tconst resolveLayoutPaths = (layoutKey: string) => {\n\t\tif (layoutCache[layoutKey]) {\n\t\t\treturn layoutCache[layoutKey];\n\t\t}\n\n\t\tlet paths: string[] = [];\n\t\tconst normalized = (layoutKey || '').replace(/^layout_col_/, '');\n\t\tconst parts = normalized.split('_');\n\t\tconst idx = parseInt(parts[parts.length - 1], 10);\n\n\t\tif (!isNaN(idx)) {\n\t\t\tpaths = (selectedFields || [])\n\t\t\t\t.filter(f => f && (f.layoutColumnIndex === idx || (f.id || '').includes(`f_layout_${idx}_`)))\n\t\t\t\t.map(f => f.fieldPath ? f.fieldPath.replace(/\\.\\$/g, '') : '')\n\t\t\t\t.filter(p => !!p);\n\t\t}\n\n\t\tlayoutCache[layoutKey] = paths;\n\t\treturn paths;\n\t};\n\n\tconst expandFilterObject = (obj: any): any => {\n\t\tif (!obj || typeof obj !== 'object' || Array.isArray(obj)) {\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (obj.$or) {\n\t\t\treturn {$or: obj.$or.map(expandFilterObject)};\n\t\t}\n\n\t\tif (obj.$and) {\n\t\t\treturn {$and: obj.$and.map(expandFilterObject)};\n\t\t}\n\n\t\tlet expanded: any = {};\n\t\tlet replaced = false;\n\n\t\tObject.keys(obj).forEach(key => {\n\t\t\tconst val = obj[key];\n\n\t\t\tif (key.startsWith('layout_col_')) {\n\t\t\t\tconst paths = resolveLayoutPaths(key);\n\n\t\t\t\tif (paths.length) {\n\t\t\t\t\treplaced = true;\n\t\t\t\t\texpanded.$or = paths.map(path => ({[path]: val}));\n\t\t\t\t\t// Use console to trace layout filter expansion without requiring a logger on ResolveIOServer\n\t\t\t\t\tconsole.info('RB layout filter expansion', {layoutKey: key, paths});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.warn('RB layout filter expansion failed', {layoutKey: key, selectedFields});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\texpanded[key] = val;\n\t\t\t}\n\t\t});\n\n\t\treturn replaced ? expanded : obj;\n\t};\n\n\treturn (filters || []).map(expandFilterObject);\n}\n\ntype ReportBuilderAiPayload = {\n\tprompt?: string;\n\treport_type?: string;\n\treport_name?: string;\n\tcollection_root?: string;\n\tcollection_joins?: Array<{ collection?: string; alias?: string }>;\n\tid_date_field?: string;\n\tdate_interval?: string;\n\tpermission_view?: string;\n\tallow_mongo_read?: boolean;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\tavailable_fields?: Array<{\n\t\tfield_path?: string;\n\t\tfield_path_name?: string;\n\t\tfield_type?: string;\n\t\tcollection_name?: string;\n\t}>;\n\tavailable_collections?: Array<{ collection?: string; name?: string }>;\n\tid_client?: string;\n\tguardrails?: boolean;\n\tconfig?: {\n\t\tmodel?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t\tresponse_format?: string;\n\t\treasoning_effort?: string;\n\t\ttimeout_ms?: number;\n\t};\n\tfield_limit?: number;\n};\n\ntype ReportBuilderAiResult = {\n\tblocked?: boolean;\n\tresponse?: string;\n\treason?: string;\n\tpatch?: any;\n\tnotes?: string;\n\tusage?: {\n\t\tinput_tokens: number;\n\t\toutput_tokens: number;\n\t\ttotal_tokens: number;\n\t};\n\tmodel?: string;\n};\n\ntype GuardrailResult = { blocked: boolean; response: string; reason: string };\ntype ReportTypeResolution = {\n\treportType: string;\n\tinferenceReason: string;\n\tinferredDateInterval: string;\n};\n\nasync function executeReportBuilderAi(payload: ReportBuilderAiPayload, context: any): Promise<ReportBuilderAiResult> {\n\tconst input = payload || {};\n\tconst prompt = normalizeOptionalString(input.prompt);\n\tif (!prompt) {\n\t\tthrow new Error('Prompt is required.');\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 = evaluateReportBuilderGuardrails(prompt);\n\t\tif (guardrail?.blocked) {\n\t\t\treturn guardrail;\n\t\t}\n\t}\n\n\tconst reportTypeResolution = resolveReportTypeForPrompt(input.report_type, prompt);\n\tconst reportType = reportTypeResolution.reportType;\n\tconst collectionRoot = normalizeOptionalString(input.collection_root);\n\tconst collectionJoins = Array.isArray(input.collection_joins) ? input.collection_joins : [];\n\tconst idDateField = normalizeOptionalString(input.id_date_field);\n\tconst dateInterval = normalizeDateInterval(input.date_interval) || reportTypeResolution.inferredDateInterval;\n\n\tconst collections = sanitizeCollections(input.available_collections || []);\n\tconst fieldLimit = normalizeFieldLimit(input.field_limit);\n\tlet resolvedFields = sanitizeFields(input.available_fields || []);\n\tlet usedFallbackFields = false;\n\n\tif (!resolvedFields.length && collections.length) {\n\t\tconst derivedFields = deriveFieldsFromCollections(collections);\n\t\tresolvedFields = sanitizeFields(derivedFields);\n\t\tusedFallbackFields = resolvedFields.length > 0;\n\t}\n\n\tconst trimmedFields = trimFieldsForPrompt(resolvedFields, fieldLimit, usedFallbackFields);\n\tconst arraySummary = buildArrayFieldSummary(trimmedFields.fields);\n\n\tconst systemPrompt = buildReportBuilderSystemPrompt(reportType);\n\tlet userPrompt = buildReportBuilderUserPrompt({\n\t\tprompt,\n\t\treportType,\n\t\treportName: normalizeOptionalString(input.report_name),\n\t\tcollectionRoot,\n\t\tcollectionJoins,\n\t\tidDateField,\n\t\tdateInterval,\n\t\tcollections,\n\t\tfields: trimmedFields.fields,\n\t\tfieldMeta: {\n\t\t\ttruncated: trimmedFields.truncated,\n\t\t\ttotal: trimmedFields.total,\n\t\t\tused: trimmedFields.fields.length\n\t\t},\n\t\tarraySummary\n\t});\n\n\tconst codexModel = resolveReportBuilderCodexModel(input.config);\n\tconst codexClient = getReportBuilderCodexClient();\n\tconst runOptions: CodexRunOptions = {\n\t\ttimeoutMs: resolveReportBuilderCodexTimeoutMs(input.config),\n\t\tthreadOptions: resolveReportBuilderCodexThreadOptions(input.config, codexModel)\n\t};\n\n\tlet responseText = await codexClient.run(buildReportBuilderCodexPrompt(systemPrompt, userPrompt), runOptions);\n\tlet usage = estimateUsage(\n\t\t[\n\t\t\t{ role: 'system', content: systemPrompt },\n\t\t\t{ role: 'user', content: userPrompt }\n\t\t],\n\t\tresponseText,\n\t\tcodexModel\n\t);\n\n\tlet parsed: any = safeJsonParse(responseText);\n\tconst allowMongoRead = input.allow_mongo_read === true;\n\tif (allowMongoRead && parsed && typeof parsed === 'object' && parsed.mongo_read) {\n\t\tconst mongoPayload = resolveMongoReadPayload(parsed.mongo_read, input, collections);\n\t\tif (mongoPayload) {\n\t\t\tlet mongoReadResult: any = null;\n\t\t\ttry {\n\t\t\t\tmongoReadResult = await executeAiAssistantMongoRead(mongoPayload, context);\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Mongo read failed.');\n\t\t\t\tmongoReadResult = { error: message };\n\t\t\t}\n\t\t\tconst mongoContext = buildMongoReadContext(mongoPayload, mongoReadResult);\n\t\t\tuserPrompt = buildReportBuilderUserPrompt({\n\t\t\t\tprompt,\n\t\t\t\treportType,\n\t\t\t\treportName: normalizeOptionalString(input.report_name),\n\t\t\t\tcollectionRoot,\n\t\t\t\tcollectionJoins,\n\t\t\t\tidDateField,\n\t\t\t\tdateInterval,\n\t\t\t\tcollections,\n\t\t\t\tfields: trimmedFields.fields,\n\t\t\t\tfieldMeta: {\n\t\t\t\t\ttruncated: trimmedFields.truncated,\n\t\t\t\t\ttotal: trimmedFields.total,\n\t\t\t\t\tused: trimmedFields.fields.length\n\t\t\t\t},\n\t\t\t\tarraySummary,\n\t\t\t\tmongoReadResult: mongoContext\n\t\t\t});\n\t\t\tresponseText = await codexClient.run(buildReportBuilderCodexPrompt(systemPrompt, userPrompt), runOptions);\n\t\t\tconst usage2 = estimateUsage(\n\t\t\t\t[\n\t\t\t\t\t{ role: 'system', content: systemPrompt },\n\t\t\t\t\t{ role: 'user', content: userPrompt }\n\t\t\t\t],\n\t\t\t\tresponseText,\n\t\t\t\tcodexModel\n\t\t\t);\n\t\t\tusage = {\n\t\t\t\tinputTokens: usage.inputTokens + usage2.inputTokens,\n\t\t\t\toutputTokens: usage.outputTokens + usage2.outputTokens,\n\t\t\t\ttotalTokens: usage.totalTokens + usage2.totalTokens\n\t\t\t};\n\t\t\tparsed = safeJsonParse(responseText);\n\t\t}\n\t}\n\n\tif (!parsed || typeof parsed !== 'object') {\n\t\tthrow new Error('AI response was not valid JSON.');\n\t}\n\n\tconst sanitizeContext = buildSanitizerContext(collections, resolvedFields);\n\tconst patch = sanitizeReportBuilderPatch(parsed, sanitizeContext);\n\tpatch.report_type = reportType;\n\tif (reportType === 'Dated' && !patch.date_interval && dateInterval) {\n\t\tpatch.date_interval = dateInterval;\n\t}\n\n\tconst summaryNotes = buildPatchNotes(patch, {\n\t\treportType,\n\t\ttruncated: trimmedFields.truncated,\n\t\ttotalFields: trimmedFields.total,\n\t\tusedFields: trimmedFields.fields.length,\n\t\tinferenceReason: reportTypeResolution.inferenceReason\n\t});\n\n\tconst idClient = await resolveClientId(input.id_client, context?.id_user);\n\tawait recordOpenAIUsage({\n\t\tid_client: idClient || '',\n\t\tmodel: codexModel || 'unknown',\n\t\tinput_tokens: usage.inputTokens,\n\t\toutput_tokens: usage.outputTokens,\n\t\ttotal_tokens: usage.totalTokens,\n\t\tcategory: 'report-builder-ai',\n\t\tid_request: ''\n\t});\n\n\treturn {\n\t\tpatch,\n\t\tnotes: summaryNotes,\n\t\tusage: {\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\tmodel: codexModel\n\t};\n}\n\nfunction buildReportBuilderSystemPrompt(reportType: string): string {\n\treturn [\n\t\t'You are a report builder configuration assistant.',\n\t\t'Return ONLY a JSON object (no markdown).',\n\t\t'Schema keys:',\n\t\t'- report_name (string)',\n\t\t'- collection_root (string)',\n\t\t'- collection_joins (array of { collection, alias })',\n\t\t'- layout_columns (array of { header, field_path, collection, mode, text, leaf_value_type, leaf_format_type, show })',\n\t\t'- groups_row (array of field_path strings)',\n\t\t'- filters (array of { field_path, condition, value, high_value, boolean_value, is_rolling, rolling_interval })',\n\t\t'- sort (array of { field_path, order })',\n\t\t'- totals (array of { type, fields })',\n\t\t'- links (array of { field_first, field_second })',\n\t\t'- id_date_field (string)',\n\t\t'- date_interval (Seconds|Minutes|Hours|Daily|Weekly|Monthly|Quarterly|Yearly)',\n\t\t'- notes (string)',\n\t\t'Use only provided collections and field_path values (they reflect the current models/collections).',\n\t\t'Always set collection_root to the best matching collection from available_collections.',\n\t\t'When available_fields spans multiple collections, choose collection_root first and then select fields whose collection_name matches collection_root or a join alias.',\n\t\t'Prefer exact field_path values from available_fields; never invent field paths.',\n\t\t'Translate the request into concrete layout_columns, groups_row, sort, totals, filters, and links whenever possible.',\n\t\t'Every layout column must be complete: include a header plus at least one mapping with a valid field_path (or text mode with non-empty text). Do not return columns without mapped fields.',\n\t\t'Unless the user explicitly asks for a different order, add sort entries for the primary grouping/identifier fields (groups_row or the first key layout_columns) using ascending order so results are alphabetical.',\n\t\t'Always prioritize sort on popular business keys when available: name, company, item (fallback: title, label, customer). Keep ascending unless user asks otherwise.',\n\t\t'If no popular key exists, add stable fallback sort using createdAt/date_created then _id.',\n\t\t'Use filters with explicit boolean logic: $and for required constraints and $or for alternate matches.',\n\t\t'Use custom fields when the request asks for derived metrics (ratios, percentages, margins, computed totals).',\n\t\t'If the request specifies a time grain (daily/weekly/monthly/etc), set date_interval and id_date_field to the best matching date field.',\n\t\t'Treat requests like \"over the last X\", \"by month\", \"by quarter\", and \"by <time period>\" as Dated report intent.',\n\t\t'If you need sample records to confirm field choices, you may return JSON with {\"mongo_read\": { \"collection\": \"<collection>\", \"query\": {}, \"options\": {\"limit\": 5} }, \"notes\": \"why you need data\"} .',\n\t\t'Only request mongo_read when necessary and only use collections from available_collections.',\n\t\t'When mongo_read_result is present in the user context, use it to finalize the patch and do not request another read.',\n\t\t'Use field_type to guide filters/totals (numeric fields for totals, date fields for date_interval, boolean fields for boolean_value).',\n\t\t'If field_summary.truncated is true, only use provided fields and note missing needs in notes.',\n\t\t'If you need joined data, add collection_joins with an alias and use the alias in field_path.',\n\t\t'When fields require related records, use lookup paths and joins rather than guessing flat field names.',\n\t\t'array_summary lists array roots and candidate key_fields for linking arrays.',\n\t\t'If you select fields from multiple array roots, add links that align arrays using shared identifiers (_id or id_<x> style keys).',\n\t\t'Avoid mixing unrelated array roots without links; prefer a single array root or non-array fields to prevent duplicate rows.',\n\t\t'Return a single valid JSON object with double quotes and no trailing commas.',\n\t\t'Omit keys you cannot confidently fill.',\n\t\t'Conditions allowed: eq, ne, lt, lte, gt, gte, bw, nnull, null, regex.',\n\t\t`Report type: ${reportType || 'List'}. Ensure groups_row is set for Group/Dated reports.`,\n\t\t'If unsure, leave a section empty instead of guessing.'\n\t].join('\\n');\n}\n\nfunction buildReportBuilderUserPrompt(input: {\n\tprompt: string;\n\treportType: string;\n\treportName: string;\n\tcollectionRoot: string;\n\tcollectionJoins: Array<{ collection?: string; alias?: string }>;\n\tidDateField: string;\n\tdateInterval: string;\n\tcollections: Array<{ collection: string; name: string }>;\n\tfields: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }>;\n\tfieldMeta?: { truncated: boolean; total: number; used: number };\n\tarraySummary?: Array<{ root_path: string; key_fields: string[]; sample_fields: string[] }>;\n\tmongoReadResult?: any;\n}): string {\n\tconst context = {\n\t\treport_type: input.reportType || 'List',\n\t\tcurrent: {\n\t\t\treport_name: input.reportName || '',\n\t\t\tcollection_root: input.collectionRoot || '',\n\t\t\tcollection_joins: input.collectionJoins || [],\n\t\t\tid_date_field: input.idDateField || '',\n\t\t\tdate_interval: input.dateInterval || ''\n\t\t},\n\t\tavailable_collections: input.collections || [],\n\t\tavailable_fields: input.fields || [],\n\t\tfield_summary: input.fieldMeta || undefined,\n\t\tarray_summary: input.arraySummary || [],\n\t\tmongo_read_result: input.mongoReadResult || undefined,\n\t\trequest: input.prompt\n\t};\n\treturn JSON.stringify(context);\n}\n\nfunction resolveReportBuilderCodexTimeoutMs(config?: any): number {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(\n\t\tconfig?.timeout_ms\n\t\t|| serverConfig['REPORT_BUILDER_CODEX_TIMEOUT_MS']\n\t\t|| process.env.REPORT_BUILDER_CODEX_TIMEOUT_MS\n\t);\n\tif (raw && raw > 0) {\n\t\treturn round(raw);\n\t}\n\treturn DEFAULT_REPORT_BUILDER_CODEX_TIMEOUT_MS;\n}\n\nfunction resolveReportBuilderCodexModel(config?: any): string {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst overrideModel = normalizeOptionalString(config?.model);\n\tconst raw = overrideModel\n\t\t|| normalizeOptionalString(serverConfig['REPORT_BUILDER_CODEX_MODEL'] || process.env.REPORT_BUILDER_CODEX_MODEL)\n\t\t|| normalizeOptionalString(serverConfig['AI_DASHBOARD_CODEX_MODEL'] || process.env.AI_DASHBOARD_CODEX_MODEL)\n\t\t|| normalizeOptionalString(serverConfig['AI_TERMINAL_CODEX_MODEL'] || process.env.AI_TERMINAL_CODEX_MODEL)\n\t\t|| normalizeOptionalString(serverConfig['AI_ASSISTANT_CODEX_MODEL'] || process.env.AI_ASSISTANT_CODEX_MODEL);\n\treturn raw;\n}\n\nfunction resolveReportBuilderCodexFallbackModels(model?: string): string[] {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst primary = normalizeOptionalString(model || resolveReportBuilderCodexModel());\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\tconst parseList = (value: any) => normalizeOptionalString(value)\n\t\t.split(',')\n\t\t.map(entry => normalizeOptionalString(entry))\n\t\t.filter(Boolean)\n\t\t.forEach(push);\n\n\tparseList(serverConfig['REPORT_BUILDER_CODEX_FALLBACK_MODELS'] || process.env.REPORT_BUILDER_CODEX_FALLBACK_MODELS);\n\tpush(serverConfig['REPORT_BUILDER_CODEX_FALLBACK_MODEL'] || process.env.REPORT_BUILDER_CODEX_FALLBACK_MODEL);\n\tparseList(serverConfig['AI_DASHBOARD_CODEX_FALLBACK_MODELS'] || process.env.AI_DASHBOARD_CODEX_FALLBACK_MODELS);\n\tpush(serverConfig['AI_DASHBOARD_CODEX_FALLBACK_MODEL'] || process.env.AI_DASHBOARD_CODEX_FALLBACK_MODEL);\n\tparseList(serverConfig['AI_TERMINAL_CODEX_FALLBACK_MODELS'] || process.env.AI_TERMINAL_CODEX_FALLBACK_MODELS);\n\tpush(serverConfig['AI_TERMINAL_CODEX_FALLBACK_MODEL'] || process.env.AI_TERMINAL_CODEX_FALLBACK_MODEL);\n\tparseList(serverConfig['AI_ASSISTANT_CODEX_FALLBACK_MODELS'] || process.env.AI_ASSISTANT_CODEX_FALLBACK_MODELS);\n\tpush(serverConfig['AI_ASSISTANT_CODEX_FALLBACK_MODEL'] || process.env.AI_ASSISTANT_CODEX_FALLBACK_MODEL);\n\treturn models;\n}\n\nfunction resolveReportBuilderCodexSettings(): 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 = resolveReportBuilderCodexModel();\n\tconst fallbackModels = resolveReportBuilderCodexFallbackModels(model);\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 resolveReportBuilderCodexThreadOptions(config?: any, model?: string): CodexThreadOptions {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst effort = normalizeReasoningEffort(\n\t\tconfig?.reasoning_effort\n\t\t|| serverConfig['REPORT_BUILDER_CODEX_REASONING_EFFORT']\n\t\t|| process.env.REPORT_BUILDER_CODEX_REASONING_EFFORT\n\t) || 'low';\n\treturn {\n\t\t...(model ? { model } : {}),\n\t\tsandboxMode: 'read-only',\n\t\tskipGitRepoCheck: true,\n\t\tmodelReasoningEffort: effort,\n\t\tnetworkAccessEnabled: false,\n\t\twebSearchMode: 'disabled',\n\t\twebSearchEnabled: false,\n\t\tapprovalPolicy: 'never'\n\t};\n}\n\nfunction getReportBuilderCodexClient(): CodexClient {\n\tif (!reportBuilderCodexClient) {\n\t\treportBuilderCodexClient = new CodexClient(resolveReportBuilderCodexSettings());\n\t}\n\treturn reportBuilderCodexClient;\n}\n\nfunction buildReportBuilderCodexPrompt(systemPrompt: string, userPrompt: string): string {\n\treturn `System:\\n${systemPrompt}\\n\\nUser:\\n${userPrompt}`.trim();\n}\n\nfunction resolveReportTypeForPrompt(inputType: string | undefined, prompt: string): ReportTypeResolution {\n\tconst requestedType = normalizeReportType(inputType);\n\tconst inferredInterval = inferDateIntervalFromPrompt(prompt);\n\tif (!isDatedPrompt(prompt)) {\n\t\treturn {\n\t\t\treportType: requestedType,\n\t\t\tinferenceReason: '',\n\t\t\tinferredDateInterval: inferredInterval\n\t\t};\n\t}\n\tconst reason = requestedType !== 'Dated'\n\t\t? 'Auto-inferred Dated report from time-period language in the request.'\n\t\t: '';\n\treturn {\n\t\treportType: 'Dated',\n\t\tinferenceReason: reason,\n\t\tinferredDateInterval: inferredInterval\n\t};\n}\n\nfunction isDatedPrompt(prompt: string): boolean {\n\tconst text = normalizeOptionalString(prompt).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|hour|minute|second)s?\\b/i,\n\t\t/\\b(daily|weekly|monthly|quarterly|yearly)\\b/i,\n\t\t/\\b(last|past|previous|recent)\\s+(?:\\d+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)\\s+(day|week|month|quarter|year|hour|minute|second)s?\\b/i,\n\t\t/\\bover\\s+the\\s+last\\s+(?:\\d+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)\\s+(day|week|month|quarter|year|hour|minute|second)s?\\b/i,\n\t\t/\\b(month|quarter|year)\\s+over\\s+(month|quarter|year)\\b/i,\n\t\t/\\b(over\\s+time|time\\s*series|trend(?:ing|s)?)\\b/i,\n\t\t/\\bby\\s+(?:a\\s+)?(?:time|date)\\s+period\\b/i,\n\t\t/\\bby\\s+period\\b/i\n\t];\n\treturn patterns.some(pattern => pattern.test(text));\n}\n\nfunction inferDateIntervalFromPrompt(prompt: string): string {\n\tconst text = normalizeOptionalString(prompt).toLowerCase();\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst mapping: Array<{ interval: string; pattern: RegExp }> = [\n\t\t{ interval: 'Quarterly', pattern: /\\b(quarter|quarters|quarterly|qoq)\\b/i },\n\t\t{ interval: 'Monthly', pattern: /\\b(month|months|monthly|mom)\\b/i },\n\t\t{ interval: 'Weekly', pattern: /\\b(week|weeks|weekly|wow)\\b/i },\n\t\t{ interval: 'Daily', pattern: /\\b(day|days|daily)\\b/i },\n\t\t{ interval: 'Yearly', pattern: /\\b(year|years|yearly|yoy)\\b/i },\n\t\t{ interval: 'Hours', pattern: /\\b(hour|hours|hourly)\\b/i },\n\t\t{ interval: 'Minutes', pattern: /\\b(minute|minutes)\\b/i },\n\t\t{ interval: 'Seconds', pattern: /\\b(second|seconds)\\b/i }\n\t];\n\tconst matched = mapping.find(entry => entry.pattern.test(text));\n\treturn matched?.interval || '';\n}\n\nfunction normalizeReportType(value?: string): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (normalized.toLowerCase() === 'group') {\n\t\treturn 'Group';\n\t}\n\tif (normalized.toLowerCase() === 'dated') {\n\t\treturn 'Dated';\n\t}\n\treturn normalized ? toTitleCase(normalized) : 'List';\n}\n\nfunction normalizeOptionalString(value: any): string {\n\tconst raw = typeof value === 'string' ? value.trim() : '';\n\treturn raw || '';\n}\n\nfunction normalizeOptionalNumber(value: any): number | undefined {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction normalizeReasoningEffort(value: any): CodexThreadOptions['modelReasoningEffort'] | undefined {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tconst allowed = new Set(['minimal', 'low', 'medium', 'high', 'xhigh']);\n\treturn allowed.has(normalized) ? (normalized as CodexThreadOptions['modelReasoningEffort']) : undefined;\n}\n\nfunction normalizeFieldLimit(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed)) {\n\t\treturn 600;\n\t}\n\treturn Math.max(50, Math.min(round(parsed), 2000));\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 sanitizeCollections(raw: Array<{ collection?: string; name?: string }>): Array<{ collection: string; name: string }> {\n\tconst out: Array<{ collection: string; name: string }> = [];\n\tconst seen = new Set<string>();\n\t(raw || []).forEach(entry => {\n\t\tconst collection = normalizeOptionalString(entry?.collection);\n\t\tif (!collection) {\n\t\t\treturn;\n\t\t}\n\t\tconst key = collection.toLowerCase();\n\t\tif (seen.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(key);\n\t\tout.push({\n\t\t\tcollection,\n\t\t\tname: normalizeOptionalString(entry?.name) || toTitleCase(collection.replace(/[-_]/g, ' '))\n\t\t});\n\t});\n\treturn out;\n}\n\nfunction sanitizeFields(raw: Array<any>): Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }> {\n\tconst out: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }> = [];\n\tconst seen = new Set<string>();\n\t(raw || []).forEach(entry => {\n\t\tconst fieldPath = normalizeOptionalString(entry?.field_path || entry?.fieldPath);\n\t\tif (!fieldPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst key = fieldPath.toLowerCase();\n\t\tif (seen.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(key);\n\t\tout.push({\n\t\t\tfield_path: fieldPath,\n\t\t\tfield_path_name: normalizeOptionalString(entry?.field_path_name || entry?.fieldPathName || entry?.field_name) || fieldPath,\n\t\t\tfield_type: normalizeOptionalString(entry?.field_type || entry?.fieldType || entry?.field_type_name || entry?.fieldTypeName) || 'String',\n\t\t\tcollection_name: normalizeOptionalString(entry?.collection_name || entry?.collectionName || entry?.collection) || ''\n\t\t});\n\t});\n\treturn out;\n}\n\nfunction resolveCollectionNameFromList(value: any, collections: Array<{ collection: string; name: string }>): string {\n\tconst key = normalizeKey(value);\n\tif (!key) {\n\t\treturn '';\n\t}\n\tfor (const col of collections || []) {\n\t\tif (normalizeKey(col.collection) === key || normalizeKey(col.name) === key) {\n\t\t\treturn col.collection;\n\t\t}\n\t}\n\treturn '';\n}\n\nfunction resolveMongoReadPayload(raw: any, input: ReportBuilderAiPayload, collections: Array<{ collection: string; name: string }>): AiAssistantMongoReadInput | null {\n\tif (!raw || typeof raw !== 'object') {\n\t\treturn null;\n\t}\n\tconst collection = resolveCollectionNameFromList(raw.collection || raw.collection_name || raw.collectionName, collections);\n\tif (!collection) {\n\t\treturn null;\n\t}\n\tconst query = raw.query && typeof raw.query === 'object' && !Array.isArray(raw.query) ? raw.query : {};\n\tconst optionsRaw = raw.options && typeof raw.options === 'object' ? raw.options : {};\n\tconst limitRaw = normalizeOptionalNumber(optionsRaw.limit);\n\tconst skipRaw = normalizeOptionalNumber(optionsRaw.skip);\n\tconst permissionView = normalizeOptionalString((input as any).permission_view || (input as any).permissionView) || '/report-builder';\n\tconst request: AiAssistantMongoReadInput = {\n\t\tcollection,\n\t\tdatabase: normalizeOptionalString(raw.database) || undefined,\n\t\tquery,\n\t\toptions: {\n\t\t\tprojection: optionsRaw.projection && typeof optionsRaw.projection === 'object' ? optionsRaw.projection : undefined,\n\t\t\tsort: optionsRaw.sort && typeof optionsRaw.sort === 'object' ? optionsRaw.sort : undefined,\n\t\t\tlimit: limitRaw ? Math.min(Math.max(round(limitRaw), 1), 10) : 5,\n\t\t\tskip: skipRaw ? Math.max(round(skipRaw), 0) : undefined,\n\t\t\tincludeTotal: optionsRaw.includeTotal === true\n\t\t},\n\t\tpermissionView: permissionView || undefined,\n\t\tid_client: normalizeOptionalString(input.id_client) || undefined,\n\t\tmongo: input.mongo\n\t};\n\treturn request;\n}\n\nfunction buildMongoReadContext(request: AiAssistantMongoReadInput, response: any) {\n\tconst documents = Array.isArray(response?.documents) ? response.documents : [];\n\tconst total = typeof response?.total === 'number' ? response.total : null;\n\tconst sample = summarizeMongoDocuments(documents);\n\treturn {\n\t\trequest: {\n\t\t\tcollection: request.collection,\n\t\t\tquery: request.query || {},\n\t\t\toptions: request.options || {}\n\t\t},\n\t\tresult: {\n\t\t\ttotal,\n\t\t\tsample,\n\t\t\tfields: extractMongoSampleFields(sample)\n\t\t}\n\t};\n}\n\nfunction summarizeMongoDocuments(documents: any[]) {\n\tconst maxDocs = 5;\n\treturn (documents || []).slice(0, maxDocs).map(doc => pruneMongoValue(doc, 0));\n}\n\nfunction pruneMongoValue(value: any, depth: number): any {\n\tconst maxDepth = 3;\n\tconst maxKeys = 30;\n\tconst maxArray = 8;\n\tconst maxString = 200;\n\n\tif (depth >= maxDepth) {\n\t\treturn '[Truncated]';\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.slice(0, maxArray).map(item => pruneMongoValue(item, depth + 1));\n\t}\n\tif (value && typeof value === 'object') {\n\t\tconst keys = Object.keys(value);\n\t\tconst trimmedKeys = keys.slice(0, maxKeys);\n\t\tconst result: any = {};\n\t\ttrimmedKeys.forEach(key => {\n\t\t\tresult[key] = pruneMongoValue(value[key], depth + 1);\n\t\t});\n\t\tif (keys.length > trimmedKeys.length) {\n\t\t\tresult.__truncated__ = true;\n\t\t}\n\t\treturn result;\n\t}\n\tif (typeof value === 'string' && value.length > maxString) {\n\t\treturn value.slice(0, maxString) + '...';\n\t}\n\treturn value;\n}\n\nfunction extractMongoSampleFields(samples: any[]): string[] {\n\tconst fields = new Set<string>();\n\t(samples || []).forEach(sample => {\n\t\tif (!sample || typeof sample !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(sample).forEach(key => fields.add(key));\n\t});\n\treturn Array.from(fields);\n}\n\nfunction collectTreeLeaves(items: any[], res: any[]) {\n\t(items || []).forEach(item => {\n\t\tif (item?.isLeaf) {\n\t\t\tres.push(item);\n\t\t\treturn;\n\t\t}\n\t\tif (item?.children?.length) {\n\t\t\tcollectTreeLeaves(item.children, res);\n\t\t}\n\t});\n}\n\nfunction deriveFieldsFromCollections(collections: Array<{ collection: string; name: string }>) {\n\tconst fields: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }> = [];\n\tconst seen = new Set<string>();\n\n\t(collections || []).forEach(col => {\n\t\tconst collectionName = normalizeOptionalString(col?.collection);\n\t\tif (!collectionName) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet tree: any;\n\t\ttry {\n\t\t\ttree = buildCollectionTree(collectionName);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tconsole.warn('RB AI field derivation failed', {collection: collectionName, error: message});\n\t\t\treturn;\n\t\t}\n\n\t\tconst leaves: any[] = [];\n\t\tcollectTreeLeaves(tree?.children || [], leaves);\n\n\t\tleaves.forEach(leaf => {\n\t\t\tconst fieldPath = normalizeOptionalString(leaf?.fieldPath);\n\t\t\tif (!fieldPath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst key = fieldPath.toLowerCase();\n\t\t\tif (seen.has(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tseen.add(key);\n\t\t\tfields.push({\n\t\t\t\tfield_path: fieldPath,\n\t\t\t\tfield_path_name: normalizeOptionalString(leaf?.fieldPathName) || fieldPath,\n\t\t\t\tfield_type: normalizeOptionalString(leaf?.fieldType) || 'String',\n\t\t\t\tcollection_name: normalizeOptionalString(leaf?.collection_name || leaf?.collection) || collectionName\n\t\t\t});\n\t\t});\n\t});\n\n\treturn fields;\n}\n\nfunction trimFieldsForPrompt(\n\tfields: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }>,\n\tlimit: number,\n\tbalanceByCollection = false\n) {\n\tif (!fields || !fields.length) {\n\t\treturn { fields: [], truncated: false, total: 0 };\n\t}\n\tif (fields.length <= limit) {\n\t\treturn { fields, truncated: false, total: fields.length };\n\t}\n\n\tif (balanceByCollection) {\n\t\tconst buckets = new Map<string, Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }>>();\n\t\tconst order: string[] = [];\n\n\t\tfields.forEach(field => {\n\t\t\tconst key = normalizeOptionalString(field?.collection_name) || 'unknown';\n\t\t\tif (!buckets.has(key)) {\n\t\t\t\tbuckets.set(key, []);\n\t\t\t\torder.push(key);\n\t\t\t}\n\t\t\tbuckets.get(key)?.push(field);\n\t\t});\n\n\t\tif (buckets.size > 1) {\n\t\t\tconst trackers = order.map(key => ({\n\t\t\t\tkey,\n\t\t\t\tlist: buckets.get(key) || [],\n\t\t\t\tindex: 0\n\t\t\t}));\n\t\t\tconst trimmed: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }> = [];\n\t\t\tlet added = true;\n\n\t\t\twhile (trimmed.length < limit && added) {\n\t\t\t\tadded = false;\n\t\t\t\tfor (const tracker of trackers) {\n\t\t\t\t\tif (trimmed.length >= limit) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (tracker.index < tracker.list.length) {\n\t\t\t\t\t\ttrimmed.push(tracker.list[tracker.index]);\n\t\t\t\t\t\ttracker.index += 1;\n\t\t\t\t\t\tadded = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { fields: trimmed, truncated: true, total: fields.length };\n\t\t}\n\t}\n\n\tconst trimmed = fields.slice(0, limit);\n\treturn { fields: trimmed, truncated: true, total: fields.length };\n}\n\nfunction buildArrayFieldSummary(\n\tfields: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }>\n): Array<{ root_path: string; key_fields: string[]; sample_fields: string[] }> {\n\tconst roots = new Map<string, { root_path: string; key_fields: string[]; sample_fields: string[] }>();\n\t(fields || []).forEach(field => {\n\t\tconst fieldPath = normalizeOptionalString(field?.field_path);\n\t\tif (!fieldPath || !fieldPath.includes('.$')) {\n\t\t\treturn;\n\t\t}\n\t\tconst root = resolveArrayRoot(fieldPath);\n\t\tif (!root) {\n\t\t\treturn;\n\t\t}\n\t\tlet entry = roots.get(root);\n\t\tif (!entry) {\n\t\t\tentry = { root_path: root, key_fields: [], sample_fields: [] };\n\t\t\troots.set(root, entry);\n\t\t}\n\t\tif (!entry.sample_fields.includes(fieldPath) && entry.sample_fields.length < 8) {\n\t\t\tentry.sample_fields.push(fieldPath);\n\t\t}\n\t\tif (isLinkCandidateFieldPath(fieldPath) && !entry.key_fields.includes(fieldPath) && entry.key_fields.length < 8) {\n\t\t\tentry.key_fields.push(fieldPath);\n\t\t}\n\t});\n\treturn Array.from(roots.values());\n}\n\nfunction buildSanitizerContext(\n\tcollections: Array<{ collection: string; name: string }>,\n\tfields: Array<{ field_path: string; field_path_name: string; field_type: string; collection_name: string }>\n) {\n\tconst collectionIndex = new Map<string, { collection: string; name: string }>();\n\tconst fieldIndex = new Map<string, { field_path: string; field_path_name: string; field_type: string; collection_name: string }>();\n\tconst fieldNameIndex = new Map<string, string>();\n\n\tcollections.forEach(col => {\n\t\tconst key = normalizeKey(col.collection);\n\t\tif (key) {\n\t\t\tcollectionIndex.set(key, col);\n\t\t}\n\t\tconst nameKey = normalizeKey(col.name);\n\t\tif (nameKey) {\n\t\t\tcollectionIndex.set(nameKey, col);\n\t\t}\n\t});\n\n\tfields.forEach(field => {\n\t\tconst pathKey = normalizePathKey(field.field_path);\n\t\tif (pathKey) {\n\t\t\tfieldIndex.set(pathKey, field);\n\t\t}\n\t\tconst nameKey = normalizeKey(field.field_path_name);\n\t\tif (nameKey && !fieldNameIndex.has(nameKey)) {\n\t\t\tfieldNameIndex.set(nameKey, field.field_path);\n\t\t}\n\t});\n\n\treturn { collectionIndex, fieldIndex, fieldNameIndex };\n}\n\nfunction sanitizeReportBuilderPatch(raw: any, ctx: ReturnType<typeof buildSanitizerContext>) {\n\tconst patch: any = {};\n\tif (!raw || typeof raw !== 'object') {\n\t\treturn patch;\n\t}\n\n\tconst reportName = normalizeOptionalString(raw.report_name || raw.reportName || raw.title);\n\tif (reportName) {\n\t\tpatch.report_name = reportName.slice(0, 120);\n\t}\n\n\tconst collectionRoot = resolveCollectionName(raw.collection_root || raw.collectionRoot, ctx);\n\tif (collectionRoot) {\n\t\tpatch.collection_root = collectionRoot;\n\t}\n\n\tconst joinsRaw = Array.isArray(raw.collection_joins || raw.joins) ? (raw.collection_joins || raw.joins) : [];\n\tconst joins: Array<{ collection: string; alias?: string }> = [];\n\tjoinsRaw.forEach((join: any) => {\n\t\tconst collection = resolveCollectionName(join?.collection || join?.name, ctx);\n\t\tif (!collection) {\n\t\t\treturn;\n\t\t}\n\t\tconst alias = sanitizeAlias(join?.alias);\n\t\tjoins.push({ collection, ...(alias ? { alias } : {}) });\n\t});\n\tif (joins.length) {\n\t\tpatch.collection_joins = joins;\n\t}\n\n\tconst layoutColumnsRaw = Array.isArray(raw.layout_columns || raw.columns || raw.layout) ? (raw.layout_columns || raw.columns || raw.layout) : [];\n\tconst layoutColumns: any[] = [];\n\tlayoutColumnsRaw.forEach((col: any) => {\n\t\tif (!col || typeof col !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tlet header = normalizeOptionalString(col.header || col.title || col.name);\n\t\tlet fieldPath = resolveFieldPath(col.field_path || col.fieldPath || col.field || col.field_name || col.fieldName || col.path, ctx);\n\t\tif (!fieldPath && header) {\n\t\t\tfieldPath = resolveFieldPath(header, ctx);\n\t\t}\n\t\tconst mappingsRaw = Array.isArray(col.mappings) ? col.mappings : [];\n\t\tconst mappings: any[] = [];\n\t\tmappingsRaw.forEach((map: any) => {\n\t\t\tconst mappedField = resolveFieldPath(map?.field_path || map?.fieldPath || map?.field || map?.field_name || map?.fieldName || map?.path || map?.name, ctx);\n\t\t\tconst mode = normalizeLayoutMode(map?.mode);\n\t\t\tconst text = normalizeOptionalString(map?.text);\n\t\t\tconst collection = resolveCollectionName(map?.collection, ctx);\n\t\t\tif (mode === 'text') {\n\t\t\t\tif (text) {\n\t\t\t\t\tmappings.push({\n\t\t\t\t\t\tmode,\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\tcollection\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (mappedField) {\n\t\t\t\tmappings.push({\n\t\t\t\t\tmode,\n\t\t\t\t\tfield_path: mappedField,\n\t\t\t\t\tcollection,\n\t\t\t\t\tleaf_value_type: normalizeOptionalString(map?.leaf_value_type || map?.leafValueType),\n\t\t\t\t\tleaf_format_type: normalizeOptionalString(map?.leaf_format_type || map?.leafFormatType),\n\t\t\t\t\tshow: typeof map?.show === 'boolean' ? map.show : undefined\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif (!mappings.length) {\n\t\t\tif (fieldPath) {\n\t\t\t\tmappings.push({ field_path: fieldPath, mode: normalizeLayoutMode(col.mode) });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst text = normalizeOptionalString(col.text);\n\t\t\t\tconst mode = normalizeLayoutMode(col.mode);\n\t\t\t\tif ((mode === 'text' || text) && text) {\n\t\t\t\t\tmappings.push({\n\t\t\t\t\t\tmode: 'text',\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\tcollection: resolveCollectionName(col.collection, ctx)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!fieldPath) {\n\t\t\tconst firstMapped = mappings.find(mapping => !!mapping?.field_path);\n\t\t\tif (firstMapped?.field_path) {\n\t\t\t\tfieldPath = firstMapped.field_path;\n\t\t\t}\n\t\t}\n\n\t\tif (!header && fieldPath) {\n\t\t\tconst meta = ctx.fieldIndex.get(normalizePathKey(fieldPath));\n\t\t\theader = normalizeOptionalString(meta?.field_path_name);\n\t\t}\n\n\t\tif (!mappings.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlayoutColumns.push({\n\t\t\theader: header || '',\n\t\t\tfield_path: fieldPath || '',\n\t\t\tcollection: resolveCollectionName(col.collection, ctx),\n\t\t\tmode: normalizeLayoutMode(col.mode),\n\t\t\ttext: normalizeOptionalString(col.text),\n\t\t\tmappings\n\t\t});\n\t});\n\n\tif (!layoutColumns.length && Array.isArray(raw.selected_fields)) {\n\t\t(raw.selected_fields || []).forEach((field: any) => {\n\t\t\tconst fieldPath = resolveFieldPath(field, ctx);\n\t\t\tif (!fieldPath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlayoutColumns.push({\n\t\t\t\theader: '',\n\t\t\t\tfield_path: fieldPath,\n\t\t\t\tmappings: [{ field_path: fieldPath }]\n\t\t\t});\n\t\t});\n\t}\n\n\tif (layoutColumns.length) {\n\t\tpatch.layout_columns = layoutColumns;\n\t}\n\n\tconst groupsRowRaw = Array.isArray(raw.groups_row) ? raw.groups_row : [];\n\tconst groupsRow = groupsRowRaw.map((entry: any) => resolveFieldPath(entry, ctx)).filter(Boolean);\n\tif (groupsRow.length) {\n\t\tpatch.groups_row = groupsRow;\n\t}\n\n\tconst filtersRaw = Array.isArray(raw.filters) ? raw.filters : [];\n\tconst filters: any[] = [];\n\tfiltersRaw.forEach((filter: any) => {\n\t\tconst fieldPath = resolveFieldPath(filter?.field_path || filter?.fieldPath, ctx);\n\t\tif (!fieldPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst fieldMeta = ctx.fieldIndex.get(normalizePathKey(fieldPath));\n\t\tconst condition = normalizeFilterCondition(filter?.condition);\n\t\tif (!condition) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = normalizeFilterValue(filter?.value, fieldMeta?.field_type);\n\t\tconst highValue = normalizeFilterValue(filter?.high_value, fieldMeta?.field_type);\n\t\tconst booleanValue = normalizeBooleanValue(filter?.boolean_value);\n\t\tfilters.push({\n\t\t\tfield_path: fieldPath,\n\t\t\tcondition,\n\t\t\tvalue,\n\t\t\thigh_value: highValue,\n\t\t\tboolean_value: booleanValue,\n\t\t\tis_rolling: typeof filter?.is_rolling === 'boolean' ? filter.is_rolling : undefined,\n\t\t\trolling_interval: normalizeOptionalString(filter?.rolling_interval)\n\t\t});\n\t});\n\tif (filters.length) {\n\t\tpatch.filters = filters;\n\t}\n\n\tconst sortRaw = Array.isArray(raw.sort) ? raw.sort : [];\n\tconst sort: any[] = [];\n\tsortRaw.forEach((entry: any) => {\n\t\tconst fieldPath = resolveFieldPath(entry?.field_path || entry?.fieldPath, ctx);\n\t\tif (!fieldPath) {\n\t\t\treturn;\n\t\t}\n\t\tsort.push({\n\t\t\tfield_path: fieldPath,\n\t\t\torder: normalizeSortOrder(entry?.order)\n\t\t});\n\t});\n\tif (sort.length) {\n\t\tpatch.sort = sort;\n\t}\n\telse {\n\t\tconst defaultSortFields = buildDefaultSortFields(groupsRow, layoutColumns);\n\t\tif (defaultSortFields.length) {\n\t\t\tpatch.sort = defaultSortFields.map(field_path => ({ field_path, order: 'asc' }));\n\t\t}\n\t}\n\n\tconst totalsRaw = Array.isArray(raw.totals) ? raw.totals : [];\n\tconst totals: any[] = [];\n\ttotalsRaw.forEach((total: any) => {\n\t\tconst type = normalizeTotalType(total?.type);\n\t\tconst fields = Array.isArray(total?.fields) ? total.fields : [];\n\t\tconst mappedFields = fields.map((field: any) => resolveFieldPath(field, ctx)).filter(Boolean);\n\t\tif (!type || !mappedFields.length) {\n\t\t\treturn;\n\t\t}\n\t\ttotals.push({ type, fields: mappedFields });\n\t});\n\tif (totals.length) {\n\t\tpatch.totals = totals;\n\t}\n\n\tconst linksRaw = Array.isArray(raw.links) ? raw.links : [];\n\tconst links: any[] = [];\n\tlinksRaw.forEach((link: any) => {\n\t\tconst first = resolveFieldPath(link?.field_first || link?.fieldFirst, ctx);\n\t\tconst second = resolveFieldPath(link?.field_second || link?.fieldSecond, ctx);\n\t\tif (!first || !second) {\n\t\t\treturn;\n\t\t}\n\t\tlinks.push({ field_first: first, field_second: second });\n\t});\n\tif (links.length) {\n\t\tpatch.links = links;\n\t}\n\n\tconst dateField = resolveFieldPath(raw.id_date_field || raw.date_field || raw.dateField, ctx);\n\tif (dateField) {\n\t\tpatch.id_date_field = dateField;\n\t}\n\n\tconst dateInterval = normalizeDateInterval(raw.date_interval || raw.dateInterval);\n\tif (dateInterval) {\n\t\tpatch.date_interval = dateInterval;\n\t}\n\n\tconst notes = normalizeOptionalString(raw.notes || raw.summary || raw.message);\n\tif (notes) {\n\t\tpatch.notes = notes.slice(0, 400);\n\t}\n\n\treturn patch;\n}\n\nfunction buildDefaultSortFields(groupsRow: string[], layoutColumns: any[]): string[] {\n\tconst fields: string[] = [];\n\tconst addField = (fieldPath?: string) => {\n\t\tconst normalized = normalizeOptionalString(fieldPath);\n\t\tif (normalized && !fields.includes(normalized)) {\n\t\t\tfields.push(normalized);\n\t\t}\n\t};\n\n\t(groupsRow || []).forEach(addField);\n\tif (fields.length) {\n\t\treturn fields;\n\t}\n\n\t(layoutColumns || []).forEach((col: any) => {\n\t\tif (!col || typeof col !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tlet fieldPath = '';\n\t\tconst mappings = Array.isArray(col.mappings) ? col.mappings : [];\n\t\tfor (const mapping of mappings) {\n\t\t\tif (mapping?.field_path) {\n\t\t\t\tfieldPath = mapping.field_path;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!fieldPath && col.field_path) {\n\t\t\tfieldPath = col.field_path;\n\t\t}\n\t\taddField(fieldPath);\n\t});\n\n\treturn fields;\n}\n\nfunction buildPatchNotes(\n\tpatch: any,\n\tmeta: { reportType: string; truncated: boolean; totalFields: number; usedFields: number; inferenceReason?: string }\n) {\n\tconst columns = Array.isArray(patch?.layout_columns) ? patch.layout_columns.length : 0;\n\tconst groups = Array.isArray(patch?.groups_row) ? patch.groups_row.length : 0;\n\tconst filters = Array.isArray(patch?.filters) ? patch.filters.length : 0;\n\tconst joins = Array.isArray(patch?.collection_joins) ? patch.collection_joins.length : 0;\n\tconst parts = [\n\t\t`AI suggested ${columns} column${columns === 1 ? '' : 's'}`,\n\t\tgroups ? `${groups} group${groups === 1 ? '' : 's'}` : '',\n\t\tfilters ? `${filters} filter${filters === 1 ? '' : 's'}` : '',\n\t\tjoins ? `${joins} join${joins === 1 ? '' : 's'}` : ''\n\t].filter(Boolean);\n\tlet note = parts.length ? parts.join(', ') + '.' : 'AI suggestions ready.';\n\tif (patch?.notes) {\n\t\tnote += ` ${patch.notes}`;\n\t}\n\tif (meta.inferenceReason) {\n\t\tnote += ` ${meta.inferenceReason}`;\n\t}\n\tif (meta.truncated) {\n\t\tnote += ` Field list trimmed to ${meta.usedFields} of ${meta.totalFields} available fields.`;\n\t}\n\treturn note;\n}\n\nfunction normalizeLayoutMode(value: any): 'variable' | 'text' {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized === 'text' ? 'text' : 'variable';\n}\n\nfunction normalizeFilterCondition(value: any): string {\n\tconst allowed = new Set(['eq', 'ne', 'lt', 'lte', 'gt', 'gte', 'bw', 'nnull', 'null', 'regex']);\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn allowed.has(normalized) ? normalized : '';\n}\n\nfunction normalizeSortOrder(value: any): string {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized === 'dsc' || normalized === 'desc' ? 'dsc' : 'asc';\n}\n\nfunction normalizeTotalType(value: any): string {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'avg' || normalized === 'sum') {\n\t\treturn normalized;\n\t}\n\treturn '';\n}\n\nfunction normalizeDateInterval(value: any): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst map: Record<string, string> = {\n\t\tseconds: 'Seconds',\n\t\tminutes: 'Minutes',\n\t\thours: 'Hours',\n\t\tdaily: 'Daily',\n\t\tweekly: 'Weekly',\n\t\tmonthly: 'Monthly',\n\t\tquarterly: 'Quarterly',\n\t\tyearly: 'Yearly'\n\t};\n\tconst key = normalized.toLowerCase();\n\treturn map[key] || '';\n}\n\nfunction normalizeFilterValue(value: any, fieldType?: string): any {\n\tif (fieldType === 'Number') {\n\t\tconst num = Number(value);\n\t\treturn Number.isFinite(num) ? num : value;\n\t}\n\tif (fieldType === 'Boolean') {\n\t\tif (value === true || value === false) {\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\treturn value.toLowerCase() === 'true';\n\t\t}\n\t\treturn value;\n\t}\n\tif (fieldType === 'Date') {\n\t\tif (value instanceof Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tconst parsed = new Date(value);\n\t\t\treturn isNaN(parsed.getTime()) ? value : parsed.toISOString();\n\t\t}\n\t}\n\treturn value;\n}\n\nfunction normalizeBooleanValue(value: any): boolean | undefined {\n\tif (value === true || value === false) {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\tif (value.toLowerCase() === 'true') {\n\t\t\treturn true;\n\t\t}\n\t\tif (value.toLowerCase() === 'false') {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction resolveCollectionName(value: any, ctx: ReturnType<typeof buildSanitizerContext>): string {\n\tconst key = normalizeKey(value);\n\tif (!key) {\n\t\treturn '';\n\t}\n\tconst found = ctx.collectionIndex.get(key);\n\treturn found ? found.collection : '';\n}\n\nfunction resolveFieldPath(value: any, ctx: ReturnType<typeof buildSanitizerContext>): string {\n\tconst pathKey = normalizePathKey(value);\n\tif (pathKey && ctx.fieldIndex.has(pathKey)) {\n\t\treturn ctx.fieldIndex.get(pathKey)?.field_path || '';\n\t}\n\tconst nameKey = normalizeKey(value);\n\tif (nameKey && ctx.fieldNameIndex.has(nameKey)) {\n\t\treturn ctx.fieldNameIndex.get(nameKey) || '';\n\t}\n\treturn '';\n}\n\nfunction sanitizeAlias(value: any): string {\n\tconst alias = normalizeOptionalString(value);\n\tif (!alias) {\n\t\treturn '';\n\t}\n\treturn alias.replace(/[^\\w\\- ]/g, '').trim().slice(0, 40);\n}\n\nfunction normalizeKey(value: any): string {\n\treturn normalizeOptionalString(value).toLowerCase().replace(/[^a-z0-9]+/g, '');\n}\n\nfunction normalizePathKey(value: any): string {\n\treturn normalizeOptionalString(value).toLowerCase();\n}\n\nfunction resolveArrayRoot(path: string): string {\n\tconst raw = normalizeOptionalString(path);\n\tif (!raw) {\n\t\treturn '';\n\t}\n\tconst idx = raw.indexOf('.$');\n\tif (idx === -1) {\n\t\treturn '';\n\t}\n\treturn raw.slice(0, idx);\n}\n\nfunction isLinkCandidateFieldPath(path: string): boolean {\n\tconst normalized = normalizeOptionalString(path).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tconst last = (normalized.split('.').pop() || '').replace(/\\$/g, '');\n\tif (!last) {\n\t\treturn false;\n\t}\n\tif (last === 'id' || last === '_id') {\n\t\treturn true;\n\t}\n\tif (last.endsWith('_id') || last.endsWith('_uuid') || last.endsWith('_guid')) {\n\t\treturn true;\n\t}\n\tif (last.startsWith('id_')) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction safeJsonParse(value: string): any {\n\tif (!value) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn JSON.parse(value);\n\t}\n\tcatch {\n\t\tconst match = value.match(/\\{[\\s\\S]*\\}/);\n\t\tif (!match) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn JSON.parse(match[0]);\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nfunction evaluateReportBuilderGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\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(credentials?|passwords?|secrets?|tokens?)\\b/i, reason: 'Credentials and secrets are restricted.' },\n\t\t{ pattern: /\\b(delete|drop|truncate)\\s+(database|db|schema|table)\\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|sql\\s*injection)\\b/i, reason: 'Security abuse is restricted.' },\n\t\t{ pattern: /\\b(credit\\s*card|social\\s*security|ssn|bank\\s*account)\\b/i, reason: 'Sensitive personal data 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 access restricted systems or data. Please describe the report you need (fields, filters, timeframe) and I can configure it safely.'\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\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\nasync function resolveClientId(idClientInput?: string, idUser?: string): Promise<string> {\n\tconst normalized = normalizeOptionalString(idClientInput);\n\tif (normalized) {\n\t\treturn normalized;\n\t}\n\tif (!idUser) {\n\t\treturn '';\n\t}\n\ttry {\n\t\tconst user = await Users.findById(idUser);\n\t\tconst fromOther = normalizeOptionalString(user?.other?.id_client || user?.other?.idClient);\n\t\treturn fromOther;\n\t}\n\tcatch {\n\t\treturn '';\n\t}\n}\n"]}
|
package/methods/support.d.ts
DELETED