@resolveio/server-lib 22.3.221 → 22.3.222
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/assistant-core-heuristics.d.ts +11 -0
- package/ai/assistant-core-heuristics.js +356 -0
- package/ai/assistant-core-heuristics.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
- package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
- package/ai/resolveio-platform-intelligence-memory.js +341 -0
- package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
- package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
- package/ai/resolveio-platform-intelligence-types.js +4 -0
- package/ai/resolveio-platform-intelligence-types.js.map +1 -0
- package/ai/resolveio-platform-intelligence.d.ts +6 -0
- package/ai/resolveio-platform-intelligence.js +463 -0
- package/ai/resolveio-platform-intelligence.js.map +1 -0
- package/client-server-app.d.ts +1 -0
- package/client-server-app.js +68 -0
- package/client-server-app.js.map +1 -0
- package/collections/ai-run.collection.d.ts +3 -0
- package/collections/ai-run.collection.js +170 -0
- package/collections/ai-run.collection.js.map +1 -0
- package/collections/ai-terminal-conversation.collection.d.ts +2 -0
- package/collections/ai-terminal-conversation.collection.js +140 -0
- package/collections/ai-terminal-conversation.collection.js.map +1 -0
- package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
- package/collections/ai-terminal-issue-report.collection.js +148 -0
- package/collections/ai-terminal-issue-report.collection.js.map +1 -0
- package/collections/ai-terminal-message.collection.d.ts +2 -0
- package/collections/ai-terminal-message.collection.js +121 -0
- package/collections/ai-terminal-message.collection.js.map +1 -0
- package/collections/app-setting.collection.d.ts +3 -0
- package/collections/app-setting.collection.js +103 -0
- package/collections/app-setting.collection.js.map +1 -0
- package/collections/app-status.collection.d.ts +3 -0
- package/collections/app-status.collection.js +57 -0
- package/collections/app-status.collection.js.map +1 -0
- package/collections/communication-metric.collection.d.ts +2 -0
- package/collections/communication-metric.collection.js +133 -0
- package/collections/communication-metric.collection.js.map +1 -0
- package/collections/counter.collection.d.ts +3 -0
- package/collections/counter.collection.js +56 -0
- package/collections/counter.collection.js.map +1 -0
- package/collections/cron-job-history.collection.d.ts +3 -0
- package/collections/cron-job-history.collection.js +137 -0
- package/collections/cron-job-history.collection.js.map +1 -0
- package/collections/cron-job.collection.d.ts +3 -0
- package/collections/cron-job.collection.js +92 -0
- package/collections/cron-job.collection.js.map +1 -0
- package/collections/customer-notification.collection.d.ts +3 -0
- package/collections/customer-notification.collection.js +130 -0
- package/collections/customer-notification.collection.js.map +1 -0
- package/collections/customer-portal-password.collection.d.ts +3 -0
- package/collections/customer-portal-password.collection.js +75 -0
- package/collections/customer-portal-password.collection.js.map +1 -0
- package/collections/email-history.collection.d.ts +3 -0
- package/collections/email-history.collection.js +134 -0
- package/collections/email-history.collection.js.map +1 -0
- package/collections/email-verified.collection.d.ts +3 -0
- package/collections/email-verified.collection.js +62 -0
- package/collections/email-verified.collection.js.map +1 -0
- package/collections/file.collection.d.ts +3 -0
- package/collections/file.collection.js +74 -0
- package/collections/file.collection.js.map +1 -0
- package/collections/flag-update.collection.d.ts +3 -0
- package/collections/flag-update.collection.js +57 -0
- package/collections/flag-update.collection.js.map +1 -0
- package/collections/flag.collection.d.ts +3 -0
- package/collections/flag.collection.js +57 -0
- package/collections/flag.collection.js.map +1 -0
- package/collections/log-method-latency.collection.d.ts +3 -0
- package/collections/log-method-latency.collection.js +77 -0
- package/collections/log-method-latency.collection.js.map +1 -0
- package/collections/log-subscription.collection.d.ts +3 -0
- package/collections/log-subscription.collection.js +80 -0
- package/collections/log-subscription.collection.js.map +1 -0
- package/collections/log.collection.d.ts +3 -0
- package/collections/log.collection.js +93 -0
- package/collections/log.collection.js.map +1 -0
- package/collections/logged-in-users.collection.d.ts +3 -0
- package/collections/logged-in-users.collection.js +67 -0
- package/collections/logged-in-users.collection.js.map +1 -0
- package/collections/monitor-cpu.collection.d.ts +3 -0
- package/collections/monitor-cpu.collection.js +65 -0
- package/collections/monitor-cpu.collection.js.map +1 -0
- package/collections/monitor-function.collection.d.ts +3 -0
- package/collections/monitor-function.collection.js +74 -0
- package/collections/monitor-function.collection.js.map +1 -0
- package/collections/monitor-memory.collection.d.ts +3 -0
- package/collections/monitor-memory.collection.js +77 -0
- package/collections/monitor-memory.collection.js.map +1 -0
- package/collections/monitor-mongo.collection.d.ts +3 -0
- package/collections/monitor-mongo.collection.js +71 -0
- package/collections/monitor-mongo.collection.js.map +1 -0
- package/collections/notification.collection.d.ts +3 -0
- package/collections/notification.collection.js +57 -0
- package/collections/notification.collection.js.map +1 -0
- package/collections/openai-usage-ledger.collection.d.ts +2 -0
- package/collections/openai-usage-ledger.collection.js +188 -0
- package/collections/openai-usage-ledger.collection.js.map +1 -0
- package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
- package/collections/report-builder-dashboard-builder.collection.js +109 -0
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
- package/collections/report-builder-library.collection.d.ts +3 -0
- package/collections/report-builder-library.collection.js +87 -0
- package/collections/report-builder-library.collection.js.map +1 -0
- package/collections/report-builder-report.collection.d.ts +4 -0
- package/collections/report-builder-report.collection.js +184 -0
- package/collections/report-builder-report.collection.js.map +1 -0
- package/collections/user-group.collection.d.ts +4 -0
- package/collections/user-group.collection.js +89 -0
- package/collections/user-group.collection.js.map +1 -0
- package/collections/user-guide.collection.d.ts +3 -0
- package/collections/user-guide.collection.js +57 -0
- package/collections/user-guide.collection.js.map +1 -0
- package/collections/user.collection.d.ts +4 -0
- package/collections/user.collection.js +180 -0
- package/collections/user.collection.js.map +1 -0
- package/cron/cron.d.ts +14 -0
- package/cron/cron.js +216 -0
- package/cron/cron.js.map +1 -0
- package/fixtures/cron-jobs.d.ts +1 -0
- package/fixtures/cron-jobs.js +150 -0
- package/fixtures/cron-jobs.js.map +1 -0
- package/fixtures/init.d.ts +1 -0
- package/fixtures/init.js +91 -0
- package/fixtures/init.js.map +1 -0
- package/http/auth.d.ts +2 -0
- package/http/auth.js +951 -0
- package/http/auth.js.map +1 -0
- package/http/health.d.ts +1 -0
- package/http/health.js +11 -0
- package/http/health.js.map +1 -0
- package/http/home.d.ts +1 -0
- package/http/home.js +134 -0
- package/http/home.js.map +1 -0
- package/http/slow-query-publication.d.ts +2 -0
- package/http/slow-query-publication.js +99 -0
- package/http/slow-query-publication.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +19 -0
- package/index.js.map +1 -0
- package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
- package/managers/ai-assistant-codex-manager.manager.js +1113 -0
- package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
- package/managers/ai-run-evidence.manager.d.ts +36 -0
- package/managers/ai-run-evidence.manager.js +377 -0
- package/managers/ai-run-evidence.manager.js.map +1 -0
- package/managers/communication-metric.manager.d.ts +16 -0
- package/managers/communication-metric.manager.js +134 -0
- package/managers/communication-metric.manager.js.map +1 -0
- package/managers/cron.manager.d.ts +20 -0
- package/managers/cron.manager.js +534 -0
- package/managers/cron.manager.js.map +1 -0
- package/managers/customer-notification-content.manager.d.ts +55 -0
- package/managers/customer-notification-content.manager.js +158 -0
- package/managers/customer-notification-content.manager.js.map +1 -0
- package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
- package/managers/diagnostic-manager-bootstrap.js +260 -0
- package/managers/diagnostic-manager-bootstrap.js.map +1 -0
- package/managers/error-auto-fix.manager.d.ts +149 -0
- package/managers/error-auto-fix.manager.js +3064 -0
- package/managers/error-auto-fix.manager.js.map +1 -0
- package/managers/local-log.manager.d.ts +18 -0
- package/managers/local-log.manager.js +88 -0
- package/managers/local-log.manager.js.map +1 -0
- package/managers/method.manager.d.ts +84 -0
- package/managers/method.manager.js +1964 -0
- package/managers/method.manager.js.map +1 -0
- package/managers/mongo.manager.d.ts +224 -0
- package/managers/mongo.manager.js +5000 -0
- package/managers/mongo.manager.js.map +1 -0
- package/managers/monitor.manager.d.ts +70 -0
- package/managers/monitor.manager.js +550 -0
- package/managers/monitor.manager.js.map +1 -0
- package/managers/openai-usage-ledger.manager.d.ts +30 -0
- package/managers/openai-usage-ledger.manager.js +142 -0
- package/managers/openai-usage-ledger.manager.js.map +1 -0
- package/managers/slow-query-verifier.manager.d.ts +144 -0
- package/managers/slow-query-verifier.manager.js +3857 -0
- package/managers/slow-query-verifier.manager.js.map +1 -0
- package/managers/slow-query.manager.d.ts +28 -0
- package/managers/slow-query.manager.js +468 -0
- package/managers/slow-query.manager.js.map +1 -0
- package/managers/subscription.manager.d.ts +169 -0
- package/managers/subscription.manager.js +3434 -0
- package/managers/subscription.manager.js.map +1 -0
- package/managers/websocket.manager.d.ts +73 -0
- package/managers/websocket.manager.js +673 -0
- package/managers/websocket.manager.js.map +1 -0
- package/managers/worker-dispatcher.manager.d.ts +120 -0
- package/managers/worker-dispatcher.manager.js +1266 -0
- package/managers/worker-dispatcher.manager.js.map +1 -0
- package/managers/worker-server.manager.d.ts +35 -0
- package/managers/worker-server.manager.js +582 -0
- package/managers/worker-server.manager.js.map +1 -0
- package/methods/accounts.d.ts +2 -0
- package/methods/accounts.js +624 -0
- package/methods/accounts.js.map +1 -0
- package/methods/ai-terminal.d.ts +458 -0
- package/methods/ai-terminal.js +27991 -0
- package/methods/ai-terminal.js.map +1 -0
- package/methods/app-settings.d.ts +2 -0
- package/methods/app-settings.js +169 -0
- package/methods/app-settings.js.map +1 -0
- package/methods/aws.d.ts +2 -0
- package/methods/aws.js +877 -0
- package/methods/aws.js.map +1 -0
- package/methods/collections.d.ts +2 -0
- package/methods/collections.js +719 -0
- package/methods/collections.js.map +1 -0
- package/methods/counters.d.ts +2 -0
- package/methods/counters.js +113 -0
- package/methods/counters.js.map +1 -0
- package/methods/cron-jobs.d.ts +2 -0
- package/methods/cron-jobs.js +2475 -0
- package/methods/cron-jobs.js.map +1 -0
- package/methods/customer-notifications.d.ts +2 -0
- package/methods/customer-notifications.js +528 -0
- package/methods/customer-notifications.js.map +1 -0
- package/methods/diagnostics.d.ts +2 -0
- package/methods/diagnostics.js +703 -0
- package/methods/diagnostics.js.map +1 -0
- package/methods/flag-updates.d.ts +2 -0
- package/methods/flag-updates.js +8 -0
- package/methods/flag-updates.js.map +1 -0
- package/methods/flags.d.ts +2 -0
- package/methods/flags.js +8 -0
- package/methods/flags.js.map +1 -0
- package/methods/logs.d.ts +2 -0
- package/methods/logs.js +751 -0
- package/methods/logs.js.map +1 -0
- package/methods/mongo-explorer.d.ts +2 -0
- package/methods/mongo-explorer.js +1808 -0
- package/methods/mongo-explorer.js.map +1 -0
- package/methods/monitor.d.ts +2 -0
- package/methods/monitor.js +543 -0
- package/methods/monitor.js.map +1 -0
- package/methods/pdf.d.ts +2 -0
- package/methods/pdf.js +1216 -0
- package/methods/pdf.js.map +1 -0
- package/methods/publications.d.ts +1 -0
- package/methods/publications.js +183 -0
- package/methods/publications.js.map +1 -0
- package/methods/report-builder.d.ts +2 -0
- package/methods/report-builder.js +3094 -0
- package/methods/report-builder.js.map +1 -0
- package/methods/support.d.ts +2 -0
- package/methods/support.js +430 -0
- package/methods/support.js.map +1 -0
- package/models/ai-run.model.d.ts +19 -0
- package/models/ai-run.model.js +4 -0
- package/models/ai-run.model.js.map +1 -0
- package/models/ai-terminal-conversation.model.d.ts +17 -0
- package/models/ai-terminal-conversation.model.js +4 -0
- package/models/ai-terminal-conversation.model.js.map +1 -0
- package/models/ai-terminal-issue-report.model.d.ts +19 -0
- package/models/ai-terminal-issue-report.model.js +4 -0
- package/models/ai-terminal-issue-report.model.js.map +1 -0
- package/models/ai-terminal-message.model.d.ts +22 -0
- package/models/ai-terminal-message.model.js +4 -0
- package/models/ai-terminal-message.model.js.map +1 -0
- package/models/app-setting.model.d.ts +16 -0
- package/models/app-setting.model.js +4 -0
- package/models/app-setting.model.js.map +1 -0
- package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
- package/models/app-status.model.js +4 -0
- package/models/app-status.model.js.map +1 -0
- package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
- package/models/billing-logged-in-users.model.js +4 -0
- package/models/billing-logged-in-users.model.js.map +1 -0
- package/models/collection-document.model.d.ts +21 -0
- package/models/collection-document.model.js +4 -0
- package/models/collection-document.model.js.map +1 -0
- package/models/communication-metric.model.d.ts +20 -0
- package/models/communication-metric.model.js +4 -0
- package/models/communication-metric.model.js.map +1 -0
- package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
- package/models/counter.model.js +4 -0
- package/models/counter.model.js.map +1 -0
- package/models/cron-job-history.model.d.ts +15 -0
- package/models/cron-job-history.model.js +4 -0
- package/models/cron-job-history.model.js.map +1 -0
- package/models/cron-job.model.d.ts +14 -0
- package/models/cron-job.model.js +4 -0
- package/models/cron-job.model.js.map +1 -0
- package/models/customer-notification.model.d.ts +26 -0
- package/models/customer-notification.model.js +4 -0
- package/models/customer-notification.model.js.map +1 -0
- package/models/customer-portal-password.model.d.ts +11 -0
- package/models/customer-portal-password.model.js +4 -0
- package/models/customer-portal-password.model.js.map +1 -0
- package/models/dialog.model.d.ts +23 -0
- package/models/dialog.model.js +4 -0
- package/models/dialog.model.js.map +1 -0
- package/models/email-history.model.d.ts +32 -0
- package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
- package/models/email-history.model.js.map +1 -0
- package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
- package/models/email-verified.model.js +4 -0
- package/models/email-verified.model.js.map +1 -0
- package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
- package/models/file.model.js +4 -0
- package/models/file.model.js.map +1 -0
- package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
- package/models/flag-update.model.js +4 -0
- package/models/flag-update.model.js.map +1 -0
- package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
- package/models/flag.model.js +4 -0
- package/models/flag.model.js.map +1 -0
- package/models/log-method-latency.model.d.ts +10 -0
- package/models/log-method-latency.model.js +4 -0
- package/models/log-method-latency.model.js.map +1 -0
- package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
- package/models/log-subscription.model.js +4 -0
- package/models/log-subscription.model.js.map +1 -0
- package/models/log.model.d.ts +17 -0
- package/models/log.model.js +4 -0
- package/models/log.model.js.map +1 -0
- package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
- package/models/logged-in-users.model.js +4 -0
- package/models/logged-in-users.model.js.map +1 -0
- package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
- package/models/method-response.model.js +4 -0
- package/models/method-response.model.js.map +1 -0
- package/models/method.model.d.ts +26 -0
- package/models/method.model.js +4 -0
- package/models/method.model.js.map +1 -0
- package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
- package/models/monitor-cpu.model.js +4 -0
- package/models/monitor-cpu.model.js.map +1 -0
- package/models/monitor-function.model.d.ts +14 -0
- package/models/monitor-function.model.js +4 -0
- package/models/monitor-function.model.js.map +1 -0
- package/models/monitor-memory.model.d.ts +15 -0
- package/models/monitor-memory.model.js +4 -0
- package/models/monitor-memory.model.js.map +1 -0
- package/models/monitor-mongo.model.d.ts +13 -0
- package/models/monitor-mongo.model.js +4 -0
- package/models/monitor-mongo.model.js.map +1 -0
- package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
- package/models/notification.model.js +4 -0
- package/models/notification.model.js.map +1 -0
- package/models/openai-usage-ledger.model.d.ts +30 -0
- package/models/openai-usage-ledger.model.js +4 -0
- package/models/openai-usage-ledger.model.js.map +1 -0
- package/models/pagination.model.d.ts +11 -0
- package/models/pagination.model.js +28 -0
- package/models/pagination.model.js.map +1 -0
- package/models/permission.model.d.ts +12 -0
- package/models/permission.model.js +4 -0
- package/models/permission.model.js.map +1 -0
- package/models/report-builder-dashboard-builder.model.d.ts +25 -0
- package/models/report-builder-dashboard-builder.model.js +4 -0
- package/models/report-builder-dashboard-builder.model.js.map +1 -0
- package/models/report-builder-library.model.d.ts +17 -0
- package/models/report-builder-library.model.js +4 -0
- package/models/report-builder-library.model.js.map +1 -0
- package/models/report-builder-report.model.d.ts +121 -0
- package/models/report-builder-report.model.js +4 -0
- package/models/report-builder-report.model.js.map +1 -0
- package/models/report-builder.model.d.ts +61 -0
- package/models/report-builder.model.js +4 -0
- package/models/report-builder.model.js.map +1 -0
- package/models/select-data-label.model.d.ts +9 -0
- package/models/select-data-label.model.js +4 -0
- package/models/select-data-label.model.js.map +1 -0
- package/models/server-message.model.d.ts +32 -0
- package/models/server-message.model.js +4 -0
- package/models/server-message.model.js.map +1 -0
- package/models/slow-query-report.model.d.ts +23 -0
- package/models/slow-query-report.model.js +4 -0
- package/models/slow-query-report.model.js.map +1 -0
- package/models/subscription.model.d.ts +31 -0
- package/models/subscription.model.js +4 -0
- package/models/subscription.model.js.map +1 -0
- package/models/support-ticket.model.d.ts +87 -0
- package/models/support-ticket.model.js +4 -0
- package/models/support-ticket.model.js.map +1 -0
- package/models/user-group.model.d.ts +20 -0
- package/models/user-group.model.js +4 -0
- package/models/user-group.model.js.map +1 -0
- package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
- package/models/user-guide.model.js +4 -0
- package/models/user-guide.model.js.map +1 -0
- package/models/user.model.d.ts +84 -0
- package/models/user.model.js +4 -0
- package/models/user.model.js.map +1 -0
- package/package.json +1 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +127 -0
- package/public_api.js.map +1 -0
- package/publications/ai-terminal.d.ts +1 -0
- package/publications/ai-terminal.js +122 -0
- package/publications/ai-terminal.js.map +1 -0
- package/publications/app-settings.d.ts +2 -0
- package/publications/app-settings.js +28 -0
- package/publications/app-settings.js.map +1 -0
- package/publications/app-status.d.ts +2 -0
- package/publications/app-status.js +16 -0
- package/publications/app-status.js.map +1 -0
- package/publications/cron-jobs.d.ts +2 -0
- package/publications/cron-jobs.js +88 -0
- package/publications/cron-jobs.js.map +1 -0
- package/publications/customer-notifications.d.ts +2 -0
- package/publications/customer-notifications.js +161 -0
- package/publications/customer-notifications.js.map +1 -0
- package/publications/files.d.ts +2 -0
- package/publications/files.js +36 -0
- package/publications/files.js.map +1 -0
- package/publications/flags-update.d.ts +2 -0
- package/publications/flags-update.js +22 -0
- package/publications/flags-update.js.map +1 -0
- package/publications/flags.d.ts +2 -0
- package/publications/flags.js +22 -0
- package/publications/flags.js.map +1 -0
- package/publications/logs.d.ts +2 -0
- package/publications/logs.js +164 -0
- package/publications/logs.js.map +1 -0
- package/publications/notifications.d.ts +2 -0
- package/publications/notifications.js +16 -0
- package/publications/notifications.js.map +1 -0
- package/publications/report-builder-dashboard-builders.d.ts +2 -0
- package/publications/report-builder-dashboard-builders.js +42 -0
- package/publications/report-builder-dashboard-builders.js.map +1 -0
- package/publications/report-builder-libraries.d.ts +2 -0
- package/publications/report-builder-libraries.js +90 -0
- package/publications/report-builder-libraries.js.map +1 -0
- package/publications/report-builder-reports.d.ts +2 -0
- package/publications/report-builder-reports.js +50 -0
- package/publications/report-builder-reports.js.map +1 -0
- package/publications/super-admin.d.ts +2 -0
- package/publications/super-admin.js +16 -0
- package/publications/super-admin.js.map +1 -0
- package/publications/user-groups.d.ts +1 -0
- package/publications/user-groups.js +16 -0
- package/publications/user-groups.js.map +1 -0
- package/publications/user-guides.d.ts +1 -0
- package/publications/user-guides.js +16 -0
- package/publications/user-guides.js.map +1 -0
- package/resolveio-server-app.d.ts +70 -0
- package/resolveio-server-app.js +801 -0
- package/resolveio-server-app.js.map +1 -0
- package/server-app.d.ts +228 -0
- package/server-app.js +3566 -0
- package/server-app.js.map +1 -0
- package/services/codex-client.d.ts +128 -0
- package/services/codex-client.js +1629 -0
- package/services/codex-client.js.map +1 -0
- package/services/openai-client.d.ts +46 -0
- package/services/openai-client.js +318 -0
- package/services/openai-client.js.map +1 -0
- package/types/error-report.d.ts +25 -0
- package/types/error-report.js +4 -0
- package/types/error-report.js.map +1 -0
- package/types/slow-query-report.d.ts +27 -0
- package/types/slow-query-report.js +6 -0
- package/types/slow-query-report.js.map +1 -0
- package/util/ai-qa-policy.d.ts +124 -0
- package/util/ai-qa-policy.js +736 -0
- package/util/ai-qa-policy.js.map +1 -0
- package/util/ai-run-evidence-adapters.d.ts +109 -0
- package/util/ai-run-evidence-adapters.js +7234 -0
- package/util/ai-run-evidence-adapters.js.map +1 -0
- package/util/ai-run-evidence-dashboard.d.ts +88 -0
- package/util/ai-run-evidence-dashboard.js +343 -0
- package/util/ai-run-evidence-dashboard.js.map +1 -0
- package/util/ai-run-evidence-eval.d.ts +86 -0
- package/util/ai-run-evidence-eval.js +1018 -0
- package/util/ai-run-evidence-eval.js.map +1 -0
- package/util/ai-run-evidence.d.ts +244 -0
- package/util/ai-run-evidence.js +1096 -0
- package/util/ai-run-evidence.js.map +1 -0
- package/util/ai-runner-artifacts.d.ts +82 -0
- package/util/ai-runner-artifacts.js +713 -0
- package/util/ai-runner-artifacts.js.map +1 -0
- package/util/ai-runner-manager-autopilot.d.ts +210 -0
- package/util/ai-runner-manager-autopilot.js +642 -0
- package/util/ai-runner-manager-autopilot.js.map +1 -0
- package/util/ai-runner-manager-policy.d.ts +807 -0
- package/util/ai-runner-manager-policy.js +3501 -0
- package/util/ai-runner-manager-policy.js.map +1 -0
- package/util/ai-runner-qa-auth.d.ts +5 -0
- package/util/ai-runner-qa-auth.js +839 -0
- package/util/ai-runner-qa-auth.js.map +1 -0
- package/util/ai-runner-qa-tools.d.ts +26 -0
- package/util/ai-runner-qa-tools.js +3520 -0
- package/util/ai-runner-qa-tools.js.map +1 -0
- package/util/aicoder-runner-v6.d.ts +426 -0
- package/util/aicoder-runner-v6.js +2464 -0
- package/util/aicoder-runner-v6.js.map +1 -0
- package/util/common.d.ts +31 -0
- package/util/common.js +683 -0
- package/util/common.js.map +1 -0
- package/util/customer-portal-password.d.ts +13 -0
- package/util/customer-portal-password.js +209 -0
- package/util/customer-portal-password.js.map +1 -0
- package/util/error-reporter.d.ts +52 -0
- package/util/error-reporter.js +326 -0
- package/util/error-reporter.js.map +1 -0
- package/util/error-tracking.d.ts +13 -0
- package/util/error-tracking.js +120 -0
- package/util/error-tracking.js.map +1 -0
- package/util/openai-usage-cost.d.ts +6 -0
- package/util/openai-usage-cost.js +103 -0
- package/util/openai-usage-cost.js.map +1 -0
- package/util/report-builder-unwinds.d.ts +15 -0
- package/util/report-builder-unwinds.js +156 -0
- package/util/report-builder-unwinds.js.map +1 -0
- package/util/runner-process-janitor.d.ts +27 -0
- package/util/runner-process-janitor.js +208 -0
- package/util/runner-process-janitor.js.map +1 -0
- package/util/schema-report-builder.d.ts +6 -0
- package/util/schema-report-builder.js +481 -0
- package/util/schema-report-builder.js.map +1 -0
- package/util/slow-query-reporter.d.ts +28 -0
- package/util/slow-query-reporter.js +226 -0
- package/util/slow-query-reporter.js.map +1 -0
- package/util/subscription-dependency-context.d.ts +34 -0
- package/util/subscription-dependency-context.js +1283 -0
- package/util/subscription-dependency-context.js.map +1 -0
- package/util/support-runner-v5.d.ts +1426 -0
- package/util/support-runner-v5.js +7643 -0
- package/util/support-runner-v5.js.map +1 -0
- package/util/tokenizer.d.ts +5 -0
- package/util/tokenizer.js +41 -0
- package/util/tokenizer.js.map +1 -0
- package/workers/codex-runner.worker.d.ts +1 -0
- package/workers/codex-runner.worker.js +192 -0
- package/workers/codex-runner.worker.js.map +1 -0
- package/.nodemon.json +0 -5
- package/.vscode/settings.json +0 -21
- package/AGENTS.md +0 -195
- package/README.md +0 -22
- package/build_package.sh +0 -5
- package/compileDTS.pl +0 -64
- package/docs/ai-assistant-nightly-eval.md +0 -65
- package/docs/ai-assistant-preflight-checklist.md +0 -23
- package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
- package/eslint-plugin-custom/index.js +0 -7
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
- package/eslint.config.js +0 -103
- package/gulpfile.js +0 -216
- package/methodAndPublicationListGenerator.py +0 -375
- package/mongodbensurers.js +0 -2
- package/mongostop.js +0 -3
- package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
- package/settings.development.json +0 -25
- package/settings.development.redacted.json +0 -25
- package/src/.env +0 -12
- package/src/ai/assistant-core-heuristics.ts +0 -379
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
- package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
- package/src/ai/resolveio-platform-intelligence.ts +0 -462
- package/src/client-server-app.ts +0 -12
- package/src/collections/ai-run.collection.ts +0 -117
- package/src/collections/ai-terminal-conversation.collection.ts +0 -91
- package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
- package/src/collections/ai-terminal-message.collection.ts +0 -77
- package/src/collections/app-setting.collection.ts +0 -104
- package/src/collections/app-status.collection.ts +0 -58
- package/src/collections/communication-metric.collection.ts +0 -84
- package/src/collections/counter.collection.ts +0 -56
- package/src/collections/cron-job-history.collection.ts +0 -94
- package/src/collections/cron-job.collection.ts +0 -92
- package/src/collections/customer-notification.collection.ts +0 -131
- package/src/collections/customer-portal-password.collection.ts +0 -76
- package/src/collections/email-history.collection.ts +0 -134
- package/src/collections/email-verified.collection.ts +0 -62
- package/src/collections/file.collection.ts +0 -74
- package/src/collections/flag-update.collection.ts +0 -57
- package/src/collections/flag.collection.ts +0 -57
- package/src/collections/log-method-latency.collection.ts +0 -77
- package/src/collections/log-subscription.collection.ts +0 -80
- package/src/collections/log.collection.ts +0 -93
- package/src/collections/logged-in-users.collection.ts +0 -67
- package/src/collections/monitor-cpu.collection.ts +0 -65
- package/src/collections/monitor-function.collection.ts +0 -74
- package/src/collections/monitor-memory.collection.ts +0 -77
- package/src/collections/monitor-mongo.collection.ts +0 -71
- package/src/collections/notification.collection.ts +0 -57
- package/src/collections/openai-usage-ledger.collection.ts +0 -131
- package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
- package/src/collections/report-builder-library.collection.ts +0 -89
- package/src/collections/report-builder-report.collection.ts +0 -184
- package/src/collections/user-group.collection.ts +0 -89
- package/src/collections/user-guide.collection.ts +0 -57
- package/src/collections/user.collection.ts +0 -181
- package/src/cron/cron.ts +0 -117
- package/src/fixtures/cron-jobs.ts +0 -95
- package/src/fixtures/init.ts +0 -35
- package/src/http/auth.ts +0 -818
- package/src/http/health.ts +0 -7
- package/src/http/home.ts +0 -90
- package/src/http/slow-query-publication.ts +0 -49
- package/src/index.ts +0 -1
- package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
- package/src/managers/ai-run-evidence.manager.ts +0 -264
- package/src/managers/communication-metric.manager.ts +0 -82
- package/src/managers/cron.manager.ts +0 -333
- package/src/managers/customer-notification-content.manager.ts +0 -236
- package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
- package/src/managers/error-auto-fix.manager.ts +0 -2767
- package/src/managers/local-log.manager.ts +0 -113
- package/src/managers/method.manager.ts +0 -1857
- package/src/managers/mongo.manager.ts +0 -4575
- package/src/managers/monitor.manager.ts +0 -507
- package/src/managers/openai-usage-ledger.manager.ts +0 -112
- package/src/managers/slow-query-verifier.manager.ts +0 -3590
- package/src/managers/slow-query.manager.ts +0 -519
- package/src/managers/subscription.manager.ts +0 -3128
- package/src/managers/websocket.manager.ts +0 -746
- package/src/managers/worker-dispatcher.manager.ts +0 -1360
- package/src/managers/worker-server.manager.ts +0 -536
- package/src/methods/accounts.ts +0 -532
- package/src/methods/ai-terminal.ts +0 -29070
- package/src/methods/app-settings.ts +0 -114
- package/src/methods/aws.ts +0 -649
- package/src/methods/collections.ts +0 -641
- package/src/methods/counters.ts +0 -69
- package/src/methods/cron-jobs.ts +0 -2614
- package/src/methods/customer-notifications.ts +0 -458
- package/src/methods/diagnostics.ts +0 -616
- package/src/methods/flag-updates.ts +0 -7
- package/src/methods/flags.ts +0 -7
- package/src/methods/logs.ts +0 -657
- package/src/methods/mongo-explorer.ts +0 -1880
- package/src/methods/monitor.ts +0 -540
- package/src/methods/pdf.ts +0 -1236
- package/src/methods/publications.ts +0 -129
- package/src/methods/report-builder.ts +0 -3300
- package/src/methods/support.ts +0 -335
- package/src/models/ai-run.model.ts +0 -27
- package/src/models/ai-terminal-conversation.model.ts +0 -19
- package/src/models/ai-terminal-issue-report.model.ts +0 -21
- package/src/models/ai-terminal-message.model.ts +0 -24
- package/src/models/app-setting.model.ts +0 -17
- package/src/models/collection-document.model.ts +0 -24
- package/src/models/communication-metric.model.ts +0 -23
- package/src/models/cron-job-history.model.ts +0 -16
- package/src/models/cron-job.model.ts +0 -15
- package/src/models/customer-notification.model.ts +0 -28
- package/src/models/customer-portal-password.model.ts +0 -12
- package/src/models/dialog.model.ts +0 -25
- package/src/models/log-method-latency.model.ts +0 -11
- package/src/models/log.model.ts +0 -19
- package/src/models/method.model.ts +0 -25
- package/src/models/monitor-function.model.ts +0 -16
- package/src/models/monitor-memory.model.ts +0 -17
- package/src/models/monitor-mongo.model.ts +0 -15
- package/src/models/openai-usage-ledger.model.ts +0 -56
- package/src/models/pagination.model.ts +0 -35
- package/src/models/permission.model.ts +0 -14
- package/src/models/report-builder-dashboard-builder.model.ts +0 -29
- package/src/models/report-builder-library.model.ts +0 -20
- package/src/models/report-builder-report.model.ts +0 -136
- package/src/models/report-builder.model.ts +0 -68
- package/src/models/select-data-label.model.ts +0 -9
- package/src/models/server-message.model.ts +0 -31
- package/src/models/slow-query-report.model.ts +0 -23
- package/src/models/subscription.model.ts +0 -73
- package/src/models/support-ticket.model.ts +0 -104
- package/src/models/user-group.model.ts +0 -24
- package/src/models/user.model.ts +0 -96
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +0 -73
- package/src/publications/app-settings.ts +0 -25
- package/src/publications/app-status.ts +0 -13
- package/src/publications/cron-jobs.ts +0 -40
- package/src/publications/customer-notifications.ts +0 -101
- package/src/publications/files.ts +0 -33
- package/src/publications/flags-update.ts +0 -19
- package/src/publications/flags.ts +0 -19
- package/src/publications/logs.ts +0 -163
- package/src/publications/notifications.ts +0 -13
- package/src/publications/report-builder-dashboard-builders.ts +0 -39
- package/src/publications/report-builder-libraries.ts +0 -41
- package/src/publications/report-builder-reports.ts +0 -47
- package/src/publications/super-admin.ts +0 -13
- package/src/publications/user-groups.ts +0 -12
- package/src/publications/user-guides.ts +0 -12
- package/src/resolveio-server-app.ts +0 -617
- package/src/server-app.ts +0 -3354
- package/src/services/codex-client.ts +0 -1231
- package/src/services/openai-client.ts +0 -265
- package/src/types/error-report.ts +0 -26
- package/src/types/js-tiktoken.d.ts +0 -11
- package/src/types/slow-query-report.ts +0 -28
- package/src/util/ai-qa-policy.ts +0 -925
- package/src/util/ai-run-evidence-adapters.ts +0 -8347
- package/src/util/ai-run-evidence-dashboard.ts +0 -323
- package/src/util/ai-run-evidence-eval.ts +0 -1057
- package/src/util/ai-run-evidence.ts +0 -1430
- package/src/util/ai-runner-artifacts.ts +0 -586
- package/src/util/ai-runner-manager-autopilot.ts +0 -961
- package/src/util/ai-runner-manager-policy.ts +0 -5011
- package/src/util/ai-runner-qa-auth.ts +0 -838
- package/src/util/ai-runner-qa-tools.ts +0 -3536
- package/src/util/aicoder-runner-v6.ts +0 -3121
- package/src/util/common.ts +0 -649
- package/src/util/customer-portal-password.ts +0 -183
- package/src/util/error-reporter.ts +0 -332
- package/src/util/error-tracking.ts +0 -79
- package/src/util/openai-usage-cost.ts +0 -114
- package/src/util/report-builder-unwinds.ts +0 -180
- package/src/util/runner-process-janitor.ts +0 -219
- package/src/util/schema-report-builder.ts +0 -448
- package/src/util/slow-query-reporter.ts +0 -216
- package/src/util/subscription-dependency-context.ts +0 -1096
- package/src/util/support-runner-v5.ts +0 -10040
- package/src/util/tokenizer.ts +0 -38
- package/src/workers/codex-runner.worker.ts +0 -142
- package/start_server.sh +0 -5
- package/tests/ai-assistant-corpus-build.ts +0 -484
- package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
- package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
- package/tests/ai-assistant-eval-triage.ts +0 -831
- package/tests/ai-assistant-openai-e2e.ts +0 -1061
- package/tests/ai-assistant-openai-git-e2e.ts +0 -155
- package/tests/ai-assistant-preflight-matrix.ts +0 -215
- package/tests/ai-assistant-routing-eval.test.ts +0 -585
- package/tests/ai-assistant-snf-live-eval.ts +0 -975
- package/tests/ai-assistant-utils.test.ts +0 -4834
- package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
- package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1383
- package/tests/ai-run-eval.test.ts +0 -132
- package/tests/ai-run-evidence.test.ts +0 -3773
- package/tests/ai-runner-contract.test.ts +0 -515
- package/tests/aicoder-runner-v6.test.ts +0 -822
- package/tests/error-reporter.test.ts +0 -145
- package/tests/method-publication-generator.test.ts +0 -46
- package/tests/report-builder-linking.test.ts +0 -79
- package/tests/resolveio-platform-intelligence.test.ts +0 -352
- package/tests/server-app-cron-owner.test.ts +0 -127
- package/tests/subscription-connect-race.test.ts +0 -158
- package/tests/subscription-dependency-context.test.ts +0 -324
- package/tests/subscription-manager-collection-tracking.test.ts +0 -86
- package/tests/subscription-manager-invalidation.test.ts +0 -86
- package/tests/support-runner-v5.test.ts +0 -3201
- package/tsconfig.json +0 -34
- /package/{src/private → private}/email-templates/enrollment.html +0 -0
- /package/{src/private → private}/email-templates/forgot-password.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
- /package/{src/private → private}/email-templates/support-ticket.html +0 -0
- /package/{src/public_api.ts → public_api.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server-app.ts"],"names":[],"mappings":"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","file":"server-app.js","sourcesContent":["import * as express from 'express';\nimport * as xmlParser from 'express-xml-bodyparser';\nimport { createServer, Server } from 'http';\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport * as jwt from 'jsonwebtoken';\nimport * as moment from 'moment-timezone';\nimport { unpack } from 'msgpackr';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { monitorEventLoopDelay } from 'perf_hooks';\nimport * as inspector from 'inspector';\nimport { execFile } from 'child_process';\nimport { URL } from 'url';\nimport * as WebSocket from 'ws';\n\nimport { Logs } from './collections/log.collection';\nimport { Users } from './collections/user.collection';\nimport { CronManager } from './managers/cron.manager';\nimport { MethodManager } from './managers/method.manager';\nimport { MonitorManager, MonitorManagerFunction } from './managers/monitor.manager';\nimport { SubscriptionManager } from './managers/subscription.manager';\nimport { ServerResponseModel } from './models/server-message.model';\nimport { dateReviver, getBinarySize, isAllowedOrigin, objectIdHexString, round } from './util/common';\nimport { ErrorReporter } from './util/error-reporter';\nimport { ensureErrorWithCorrelation } from './util/error-tracking';\n\nimport { MongoNetworkTimeoutError } from 'mongodb';\nimport { setupAuthRoutes } from './http/auth';\nimport { setupHealthRoutes } from './http/health';\nimport { setupHomeRoutes } from './http/home';\nimport { setupSlowQueryPublicationRoutes } from './http/slow-query-publication';\n\nimport { WebSocketManager } from './managers/websocket.manager';\nimport { WorkerDispatcherManager } from './managers/worker-dispatcher.manager';\nimport { WorkerServerManager } from './managers/worker-server.manager';\nimport { AiAssistantCodexManager } from './managers/ai-assistant-codex-manager.manager';\nimport { ResolveIOServer } from './resolveio-server-app';\n\nconst CLIENT_REQUEST_LOG_SKIP_LIST = new Set([\n\t'reportBuilderGetResults',\n\t'reportBuilderGetDistinctValue',\n\t'reportBuilderBuildTree',\n\t'generatePDF',\n\t'getWOOfflineData',\n\t'countQuery',\n\t'countWithQuery',\n\t'countCollectionWithQuery',\n\t'find',\n\t'findOne',\n\t'findWithOptions',\n\t'getDrivers',\n\t'processAirdropDistribution',\n\t'qbHandleResponse',\n\t'getSignedUrls',\n\t'getSignedUrl',\n\t'getSignedUrlWithId',\n\t'getSignedUrlsAndFilesWithId',\n\t'updateDocumentProps',\n\t'insertDocument',\n\t'updateDocument',\n\t'uploadFileAndSave'\n]);\n\nfunction isCorsPreflightRequest(req: express.Request): boolean {\n\treturn req.method === 'OPTIONS' && !!req.headers.origin && !!req.headers['access-control-request-method'];\n}\n\nfunction shouldWriteClientRequestLog(methodName: string): boolean {\n\treturn !CLIENT_REQUEST_LOG_SKIP_LIST.has(methodName);\n}\n\ninterface ProcessSnapshot {\n\tpid: number;\n\tppid: number;\n\tageSeconds: number;\n\tcpuPct: number;\n\trssKb: number;\n\tcommand: string;\n\targs: string;\n}\n\nexport class ResolveIOMainServer {\n\tprivate _app: express.Application;\n\tprivate _serverHTTP: Server;\n\tprivate _portHTTP: number;\n\tprivate _serverWSS: WebSocket.Server;\n\tprivate _offlineUpdates = [];\n\tpublic sesMail = false;\n\tprivate publicProgram = false;\n\tprivate _rebootFlag = false;\n\n\tprivate LOGGER = 'ERROR'; //ERROR / DEBUG\n\n\tprivate _websocketManager: WebSocketManager;\n\tprivate _monitorManager: MonitorManager;\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\tprivate _subscriptionManager: SubscriptionManager;\n\tprivate _methodManager: MethodManager;\n\tprivate _cronManager: CronManager;\n\tprivate _clientRoutes: string[] = [];\n\tprivate _workerDispatcherManager: WorkerDispatcherManager;\n\tprivate _workerServerManager: WorkerServerManager;\n\tprivate _aiAssistantCodexManager: AiAssistantCodexManager | null = null;\n\tprivate _httpServerClosePromise: Promise<void> | null = null;\n\tprivate _websocketServerClosePromise: Promise<void> | null = null;\n\tprivate _wsConnectDebug = false;\n\tprivate _perfDebug = false;\n\tprivate _perfDebugIntervalMs = 2000;\n\tprivate _perfDebugTimer: NodeJS.Timeout | null = null;\n\tprivate _perfDebugLastCpu: NodeJS.CpuUsage | null = null;\n\tprivate _perfDebugLastTs = 0;\n\tprivate _eventLoopHistogram: ReturnType<typeof monitorEventLoopDelay> | null = null;\n\tprivate _cpuProfileOnStart = false;\n\tprivate _cpuProfileAuto = false;\n\tprivate _cpuProfileDurationMs = 15000;\n\tprivate _cpuProfileThresholdPct = 90;\n\tprivate _cpuProfileTriggerCount = 3;\n\tprivate _cpuProfileHighCount = 0;\n\tprivate _cpuProfileDir: string | null = null;\n\tprivate _cpuProfileSession: inspector.Session | null = null;\n\tprivate _timerDebug = false;\n\tprivate _timerDebugThresholdMs = 50;\n\tprivate _timerDebugMinDelayMs = 5;\n\tprivate _timerDebugSampleRate = 1;\n\tprivate _timerDebugLogLimit = 100;\n\tprivate _timerDebugLogCount = 0;\n\tprivate _aiWorkerDebug = false;\n\tprivate _standaloneNodeReaperEnabled = false;\n\tprivate _standaloneNodeReaperIntervalMs = 60000;\n\tprivate _standaloneNodeReaperMinAgeSeconds = 300;\n\tprivate _standaloneNodeReaperMaxKillsPerSignature = 1;\n\tprivate _standaloneNodeReaperKillWindowMs = 60 * 60 * 1000;\n\tprivate _standaloneNodeReaperIncludeSystemdServices = false;\n\tprivate _standaloneNodeReaperHighCpuPct = 85;\n\tprivate _standaloneNodeReaperHighRssMb = 4096;\n\tprivate _standaloneNodeReaperHighMinAgeSeconds = 60;\n\tprivate _standaloneNodeReaperHighConsecutiveScans = 2;\n\tprivate _standaloneNodeReaperDryRun = false;\n\tprivate _standaloneNodeReaperAlertWindowMs = 60 * 60 * 1000;\n\tprivate _standaloneNodeReaperTimer: NodeJS.Timeout | null = null;\n\tprivate _standaloneNodeReaperRunning = false;\n\tprivate _standaloneNodeReaperKillCounts = new Map<string, { count: number; windowStartMs: number }>();\n\tprivate _standaloneNodeReaperSuppressedSignatures = new Set<string>();\n\tprivate _standaloneNodeReaperResourceHits = new Map<string, { count: number; lastSeenMs: number }>();\n\tprivate _standaloneNodeReaperAlertTimes = new Map<string, number>();\n\n\tprivate _serverStartTime: Date;\n\tprivate _lastErrorMsg: Date = null;\n\n\tprivate _debugMsgRecv = 0;\n\tprivate _debugMsgQueue = 0;\n\n\tprivate _isWorkersEnabled = false;\n\tprivate _isWorkerInstance = false;\n\n\tprivate _safeShutdown = false;\n\tprivate _dynamicAppGatewayEnabled = false;\n\tprivate _dynamicAppGatewayCache = new Map<string, { expiresAt: number; app: any }>();\n\tprivate _socketTier = '';\n\tprivate _maxClientSockets = 0;\n\tprivate _singleIpPerUser = false;\n\tprivate _socketPolicyUpgradeUrl = '';\n\n\tprivate readonly _clientHeartbeatIntervalMs = 20000;\n\tprivate readonly _clientHeartbeatInitialDelayMs = 5000;\n\tprivate readonly _clientHeartbeatBackpressureBytes = 5 * 1024 * 1024;\n\tprivate readonly _dynamicAppGatewayCacheMs = 30 * 1000;\n\n\tconstructor() {}\n\n\tstatic async create() {\n\t\tconst resolveioMainServer = new ResolveIOMainServer();\n\t\tawait resolveioMainServer.initialize();\n\t\treturn resolveioMainServer;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._serverStartTime = new Date();\n\t\tthis._lastErrorMsg = null;\n\t\tthis._wsConnectDebug = this.resolveConnectDebug();\n\t\tthis._perfDebug = this.resolvePerfDebug();\n\t\tthis._cpuProfileOnStart = this.resolveCpuProfileOnStart();\n\t\tthis._cpuProfileAuto = this.resolveCpuProfileAuto();\n\t\tthis._cpuProfileDurationMs = this.resolveCpuProfileDurationMs();\n\t\tthis._cpuProfileThresholdPct = this.resolveCpuProfileThresholdPct();\n\t\tthis._cpuProfileTriggerCount = this.resolveCpuProfileTriggerCount();\n\t\tthis._cpuProfileDir = this.resolveCpuProfileDir();\n\t\tthis._timerDebug = this.resolveTimerDebug();\n\t\tthis._timerDebugThresholdMs = this.resolveTimerDebugThresholdMs();\n\t\tthis._timerDebugMinDelayMs = this.resolveTimerDebugMinDelayMs();\n\t\t\tthis._timerDebugSampleRate = this.resolveTimerDebugSampleRate();\n\t\t\tthis._timerDebugLogLimit = this.resolveTimerDebugLogLimit();\n\t\t\tthis._aiWorkerDebug = this.parseDebugFlag(process.env.AI_ASSISTANT_WORKER_DEBUG);\n\t\t\tthis._standaloneNodeReaperEnabled = this.resolveStandaloneNodeReaperEnabled();\n\t\t\tthis._standaloneNodeReaperIntervalMs = this.resolveStandaloneNodeReaperIntervalMs();\n\t\t\tthis._standaloneNodeReaperMinAgeSeconds = this.resolveStandaloneNodeReaperMinAgeSeconds();\n\t\t\tthis._standaloneNodeReaperMaxKillsPerSignature = this.resolveStandaloneNodeReaperMaxKillsPerSignature();\n\t\t\tthis._standaloneNodeReaperKillWindowMs = this.resolveStandaloneNodeReaperKillWindowMs();\n\t\t\tthis._standaloneNodeReaperIncludeSystemdServices = this.resolveStandaloneNodeReaperIncludeSystemdServices();\n\t\t\tthis._standaloneNodeReaperHighCpuPct = this.resolveStandaloneNodeReaperHighCpuPct();\n\t\t\tthis._standaloneNodeReaperHighRssMb = this.resolveStandaloneNodeReaperHighRssMb();\n\t\t\tthis._standaloneNodeReaperHighMinAgeSeconds = this.resolveStandaloneNodeReaperHighMinAgeSeconds();\n\t\t\tthis._standaloneNodeReaperHighConsecutiveScans = this.resolveStandaloneNodeReaperHighConsecutiveScans();\n\t\t\tthis._standaloneNodeReaperDryRun = this.resolveStandaloneNodeReaperDryRun();\n\t\t\tthis._standaloneNodeReaperAlertWindowMs = this.resolveStandaloneNodeReaperAlertWindowMs();\n\t\t\tthis._dynamicAppGatewayEnabled = this.resolveDynamicAppGatewayEnabled();\n\t\t\tthis._socketTier = this.resolveSocketTier();\n\t\t\tthis._maxClientSockets = this.resolveMaxClientSockets(this._socketTier);\n\t\t\tthis._singleIpPerUser = this.resolveSingleIpPerUserPolicy(this._socketTier);\n\t\t\tthis._socketPolicyUpgradeUrl = this.resolveSocketPolicyUpgradeUrl();\n\t\t\tif (this._maxClientSockets > 0 || this._singleIpPerUser) {\n\t\t\t\tconsole.info(new Date(), '[Socket Policy] configured', {\n\t\t\t\t\ttier: this._socketTier || 'none',\n\t\t\t\t\tmaxClientSockets: this._maxClientSockets,\n\t\t\t\t\tsingleIpPerUser: this._singleIpPerUser\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._monitorManager = await MonitorManager.create();\n\t\tthis._monitorManagerFunction = new MonitorManagerFunction();\n\t\tthis.installTimerDebug();\n\t\tthis.startPerfDebug();\n\t\tif (this._cpuProfileOnStart) {\n\t\t\tthis.startCpuProfile('on-start');\n\t\t}\n\n\t\t// Check for workers and decide what to start\n\t\tthis._isWorkersEnabled = process.env.IS_WORKERS_ENABLED === 'true';\n\t\tthis._isWorkerInstance = process.env.IS_WORKER_INSTANCE === 'true';\n\t\tthis.startStandaloneNodeReaper();\n\n\t\tsetInterval(() => {\n\t\t\tif (this._methodManager && this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Server App', 'Msg Recv Hits', this._debugMsgRecv);\n\t\t\t\tconsole.log(new Date(), 'Server App', 'Msg Queue Hits', this._debugMsgQueue);\n\t\t\t}\n\n\t\t\tthis._debugMsgQueue = 0;\n\t\t\tthis._debugMsgRecv = 0;\n\t\t}, 60000);\n\n\t\tprocess.removeAllListeners('unhandledRejection');\n\n\t\tprocess.on('unhandledRejection', async (error, rej) => {\n\t\t\tconst { error: normalizedError, correlationId } = ensureErrorWithCorrelation(error);\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.error(new Date(), 'ERROR DETECTED w/ Debug Flag Active: unhandledRejection', [normalizedError, rej, { correlationId }]);\n\t\t\t}\n\n\t\t\t// Condition to filter out the MongoError with specific codes\n\t\t\tif (normalizedError && normalizedError['name'] === 'MongoError' && (normalizedError['code'] === 48 || normalizedError['code'] === 26 || normalizedError['code'] === 11000 || normalizedError['code'] === 251)) {\n\t\t\t\treturn; // Simply return without doing anything further\n\t\t\t}\n\n\t\t\t// if (normalizedError && normalizedError['name'] === 'MongoServerError' && (!initServerFlag || normalizedError['code'] === 26 || normalizedError['code'] === 11000 || normalizedError['code'] === 86 || normalizedError['code'] === 251)) {\n\t\t\t// \treturn; // Simply return without doing anything further\n\t\t\t// }\n\n\t\t\tif (normalizedError && normalizedError['name'] === 'MongoServerError') {\n\t\t\t\treturn; // Simply return without doing anything further\n\t\t\t}\n\n\t\t\tconst errorDetails = {\n\t\t\t\tid: correlationId,\n\t\t\t\tname: normalizedError?.name,\n\t\t\t\tmessage: normalizedError?.message,\n\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\tcode: normalizedError?.code,\n\t\t\t\tcodeName: normalizedError?.codeName\n\t\t\t};\n\n\t\t\tconsole.error(new Date(), 'Unhandled Rejection at Promise', [errorDetails]);\n\t\t\t\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\t// If this is a MongoNetworkTimeoutError, handle it specifically\n\t\t\tif (normalizedError && (normalizedError['name'] === 'MongoNetworkTimeoutError' || normalizedError instanceof MongoNetworkTimeoutError)) {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\t// Exiting the process\n\t\t\t\t\tprocess.exit(1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (normalizedError && normalizedError['name'] === 'MongoError' && normalizedError['message'] === 'not master') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (normalizedError && normalizedError['name'] === 'MongoError' && normalizedError['message'] === 'not master and slaveOk=false') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (normalizedError && normalizedError['name'] !== 'StatusError' && normalizedError['message'] !== '') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this.reportServerError(\n\t\t\t\t\t\t'SERVER - Unhandled Rejection - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\terrorDetails,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontext: 'unhandledRejection',\n\t\t\t\t\t\t\tscenario: 'General'\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tprocess.on('uncaughtException', async error => {\n\t\t\tconst { error: normalizedError, correlationId } = ensureErrorWithCorrelation(error);\n\t\t\tconsole.error(normalizedError, 'Uncaught Exception thrown', { correlationId });\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t}, 60000);\n\t\t\t\t\n\t\t\t\tconst errorDetails = {\n\t\t\t\t\tid: correlationId,\n\t\t\t\t\tname: normalizedError?.name,\n\t\t\t\t\tmessage: normalizedError?.message,\n\t\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\t\tcode: normalizedError?.code,\n\t\t\t\t\tcodeName: normalizedError?.codeName\n\t\t\t\t};\n\n\t\t\t\tawait this.reportServerError(\n\t\t\t\t\t'SERVER - Unhandled Exception - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'],\n\t\t\t\t\tcorrelationId,\n\t\t\t\t\terrorDetails,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontext: 'uncaughtException'\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t//PM2 wants to reboot/restart\n\t\tprocess.on('SIGINT', async () => {\n\t\t\tthis._rebootFlag = true;\n\t\t\ttry {\n\t\t\t\tawait this.shutdownNetworkServers();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'Error closing network servers (SIGINT)', error);\n\t\t\t}\n\t\t\tawait this.safeShutdown();\n\t\t});\n\n\t\tprocess.on('SIGTERM', async () => {\n\t\t\tthis._rebootFlag = true;\n\t\t\ttry {\n\t\t\t\tawait this.shutdownNetworkServers();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'Error closing network servers (SIGTERM)', error);\n\t\t\t}\n\t\t\tawait this.safeShutdown();\n\t\t});\n\n\t\tprocess.on('SIGQUIT', async () => {\n\t\t\tthis._rebootFlag = true;\n\t\t\ttry {\n\t\t\t\tawait this.shutdownNetworkServers();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'Error closing network servers (SIGQUIT)', error);\n\t\t\t}\n\t\t\tawait this.safeShutdown();\n\t\t});\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Starting ResolveIO Server');\n\t\t}\n\n\t\tif (this._isWorkersEnabled) {\n\t\t\tif (this._isWorkerInstance) {\n\t\t\t\tconst workerRole = this.resolveWorkerRole();\n\t\t\t\tconst workerIndex = this.normalizeWorkerSelectorValue(process.env.WORKER_INDEX) || 'UNKNOWN';\n\t\t\t\tconst workerInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE) || 'UNKNOWN';\n\t\t\t\tconsole.log(`Running as Worker: ${workerRole}`, workerIndex, workerInstance);\n\t\t\t\tthis._methodManager = MethodManager.create(null, this._monitorManagerFunction, this._isWorkersEnabled, this._isWorkerInstance);\n\t\t\t\tthis._subscriptionManager = SubscriptionManager.createPublicationRegistry(ResolveIOServer.getServerConfig());\n\t\t\t\tconst skipWorkerServerConnection = this.parseDebugFlag(process.env.DISABLE_WORKER_SERVER_CONNECTION)\n\t\t\t\t\t|| this.parseDebugFlag(process.env.SUPPORT_CODEX_MANAGER_PROCESS_ONLY)\n\t\t\t\t\t|| this.parseDebugFlag(process.env.SUPPORT_AUTO_MANAGER_PROCESS_ONLY)\n\t\t\t\t\t|| this.parseDebugFlag(process.env.AI_ASSISTANT_CODEX_MANAGER_PROCESS_ONLY);\n\t\t\t\tif (skipWorkerServerConnection) {\n\t\t\t\t\tconsole.log(new Date(), 'Worker server connection disabled for process-only runtime', {\n\t\t\t\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\t\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null\n\t\t\t\t\t});\n\t\t\t\t\tthis._workerServerManager = null;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._workerServerManager = WorkerServerManager.create(this._methodManager, this.getServerConfig());\n\t\t\t\t}\n\n\t\t\t\tconst skipCronForProcessOnly = this.parseDebugFlag(process.env.SUPPORT_CODEX_MANAGER_PROCESS_ONLY)\n\t\t\t\t\t|| this.parseDebugFlag(process.env.SUPPORT_AUTO_MANAGER_PROCESS_ONLY)\n\t\t\t\t\t|| this.parseDebugFlag(process.env.AI_ASSISTANT_CODEX_MANAGER_PROCESS_ONLY);\n\t\t\t\tif (this.shouldStartCronManagerForWorker() && !skipCronForProcessOnly) {\n\t\t\t\t\tthis._cronManager = CronManager.create();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.log('Running as a Server instance', process.env.NODE_APP_INSTANCE);\n\t\t\t\tthis._websocketManager = WebSocketManager.create(this);\n\t\t\t\tthis._methodManager = MethodManager.create(this._websocketManager, this._monitorManagerFunction, this._isWorkersEnabled, this._isWorkerInstance);\n\t\t\t\tthis._workerDispatcherManager = WorkerDispatcherManager.create(this._websocketManager, this._methodManager);\n\t\t\t\tthis._subscriptionManager = SubscriptionManager.create(this._serverWSS, ResolveIOServer.getServerConfig(), this._monitorManagerFunction);\n\t\t\t\tthis.startServerInstance();\n\t\t\t\tthis.listen();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconsole.log('Running with Workers Disabled', process.env.NODE_APP_INSTANCE);\n\t\t\tthis._websocketManager = WebSocketManager.create(this);\n\t\t\tthis._methodManager = MethodManager.create(this._websocketManager, this._monitorManagerFunction, this._isWorkersEnabled, this._isWorkerInstance);\n\t\t\tthis._subscriptionManager = SubscriptionManager.create(this._serverWSS, ResolveIOServer.getServerConfig(), this._monitorManagerFunction);\n\t\t\tthis._cronManager = CronManager.create();\n\t\t\tthis.startServerInstance();\n\t\t\tthis.listen();\n\t\t}\n\n\t\tthis.startAiAssistantCodexManagerIfEnabled();\n\t}\n\n\tprivate startAiAssistantCodexManagerIfEnabled(): void {\n\t\ttry {\n\t\t\tthis._aiAssistantCodexManager = AiAssistantCodexManager.createIfEnabled({\n\t\t\t\tisWorkersEnabled: this._isWorkersEnabled,\n\t\t\t\tisWorkerInstance: this._isWorkerInstance,\n\t\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null\n\t\t\t});\n\t\t\tResolveIOServer['AiAssistantCodexManager'] = this._aiAssistantCodexManager;\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), 'Failed to start AI Assistant Codex Manager', error);\n\t\t\tResolveIOServer['AiAssistantCodexManager'] = null;\n\t\t}\n\t}\n\n\tprivate startStandaloneNodeReaper(): void {\n\t\tif (!this._standaloneNodeReaperEnabled || this._standaloneNodeReaperTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (process.platform !== 'linux' || !this.isPm2ManagedRuntime() || !this.isPrimaryPm2Instance()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst initialDelayMs = Math.min(30000, this._standaloneNodeReaperIntervalMs);\n\t\tconst firstRunTimer = setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.reapStandaloneNodeProcesses();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), '[Standalone Node Reaper] failed', error);\n\t\t\t}\n\t\t}, initialDelayMs);\n\t\tfirstRunTimer.unref?.();\n\n\t\tthis._standaloneNodeReaperTimer = setInterval(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.reapStandaloneNodeProcesses();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), '[Standalone Node Reaper] failed', error);\n\t\t\t}\n\t\t}, this._standaloneNodeReaperIntervalMs);\n\t\tthis._standaloneNodeReaperTimer.unref?.();\n\n\t\tconsole.log(new Date(), '[Standalone Node Reaper] enabled', {\n\t\t\tintervalMs: this._standaloneNodeReaperIntervalMs,\n\t\t\tminAgeSeconds: this._standaloneNodeReaperMinAgeSeconds,\n\t\t\tmaxKillsPerSignature: this._standaloneNodeReaperMaxKillsPerSignature,\n\t\t\tkillWindowMs: this._standaloneNodeReaperKillWindowMs,\n\t\t\thighCpuPct: this._standaloneNodeReaperHighCpuPct,\n\t\t\thighRssMb: this._standaloneNodeReaperHighRssMb,\n\t\t\thighMinAgeSeconds: this._standaloneNodeReaperHighMinAgeSeconds,\n\t\t\thighConsecutiveScans: this._standaloneNodeReaperHighConsecutiveScans,\n\t\t\talertWindowMs: this._standaloneNodeReaperAlertWindowMs,\n\t\t\tdryRun: this._standaloneNodeReaperDryRun\n\t\t});\n\t}\n\n\tprivate async reapStandaloneNodeProcesses(): Promise<void> {\n\t\tif (this._standaloneNodeReaperRunning) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._standaloneNodeReaperRunning = true;\n\t\ttry {\n\t\t\tconst processes = await this.listSystemProcesses();\n\t\t\tconst protectedPids = this.resolvePm2ProtectedPids(processes);\n\t\t\tfor (const proc of processes) {\n\t\t\t\tif (!this.shouldReapStandaloneNodeProcess(proc, protectedPids)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst signature = this.resolveStandaloneNodeProcessSignature(proc);\n\t\t\t\tif (!this.canReapStandaloneNodeSignature(signature)) {\n\t\t\t\t\tthis.logStandaloneNodeReaperSuppressed(proc, signature);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst reason = this.resolveStandaloneNodeReaperReason(proc);\n\t\t\t\tif (this._standaloneNodeReaperDryRun) {\n\t\t\t\t\tthis.recordStandaloneNodeReaperKill(signature);\n\t\t\t\t\tconst details = this.createStandaloneNodeReaperDetails(proc, reason, 'dry-run');\n\t\t\t\t\tconsole.warn(new Date(), '[Standalone Node Reaper] dry-run would terminate stale node process', details);\n\t\t\t\t\tawait this.reportStandaloneNodeReaperAction(proc, reason, 'dry-run');\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tprocess.kill(proc.pid, 'SIGTERM');\n\t\t\t\t\tthis.recordStandaloneNodeReaperKill(signature);\n\t\t\t\t\tconst details = this.createStandaloneNodeReaperDetails(proc, reason, 'terminated');\n\t\t\t\t\tconsole.warn(new Date(), '[Standalone Node Reaper] terminated stale node process', details);\n\t\t\t\t\tawait this.reportStandaloneNodeReaperAction(proc, reason, 'terminated');\n\n\t\t\t\t\tconst killTimer = setTimeout(async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tprocess.kill(proc.pid, 0);\n\t\t\t\t\t\t\tprocess.kill(proc.pid, 'SIGKILL');\n\t\t\t\t\t\t\tconsole.warn(new Date(), '[Standalone Node Reaper] force killed stale node process', {\n\t\t\t\t\t\t\t\tpid: proc.pid,\n\t\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\t\tcommand: proc.args\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tawait this.reportStandaloneNodeReaperAction(proc, reason, 'force-killed');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t}, 10000);\n\t\t\t\t\tkillTimer.unref?.();\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tif (error?.['code'] !== 'ESRCH') {\n\t\t\t\t\t\tconsole.error(new Date(), '[Standalone Node Reaper] kill failed', {\n\t\t\t\t\t\t\tpid: proc.pid,\n\t\t\t\t\t\t\tcommand: proc.args,\n\t\t\t\t\t\t\terror: error?.['message'] || error\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis._standaloneNodeReaperRunning = false;\n\t\t}\n\t}\n\n\tprivate createStandaloneNodeReaperDetails(proc: ProcessSnapshot, reason: string, action: string): Record<string, any> {\n\t\treturn {\n\t\t\taction,\n\t\t\tpid: proc.pid,\n\t\t\tppid: proc.ppid,\n\t\t\tageSeconds: proc.ageSeconds,\n\t\t\tcpuPct: proc.cpuPct,\n\t\t\trssMb: round(proc.rssKb / 1024),\n\t\t\treason,\n\t\t\tcommand: proc.args\n\t\t};\n\t}\n\n\tprivate async reportStandaloneNodeReaperAction(proc: ProcessSnapshot, reason: string, action: string): Promise<void> {\n\t\tconst signature = this.resolveStandaloneNodeProcessSignature(proc);\n\t\tconst alertKey = `${action}|${signature}`;\n\t\tconst now = Date.now();\n\t\tconst lastReportedAt = this._standaloneNodeReaperAlertTimes.get(alertKey);\n\t\tif (lastReportedAt && (now - lastReportedAt) < this._standaloneNodeReaperAlertWindowMs) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.reportServerError(\n\t\t\t\t`SERVER - Standalone Node Reaper ${action} process - ${ResolveIOServer.getServerConfig()?.['CLIENT_NAME'] || ResolveIOServer.getClientName()}`,\n\t\t\t\tcrypto.randomUUID(),\n\t\t\t\t{\n\t\t\t\t\t...this.createStandaloneNodeReaperDetails(proc, reason, action),\n\t\t\t\t\thost: os.hostname(),\n\t\t\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null,\n\t\t\t\t\tdryRun: this._standaloneNodeReaperDryRun,\n\t\t\t\t\talertWindowMs: this._standaloneNodeReaperAlertWindowMs\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontext: 'standaloneNodeReaper',\n\t\t\t\t\taction,\n\t\t\t\t\treason,\n\t\t\t\t\tsignature\n\t\t\t\t},\n\t\t\t\t'warning'\n\t\t\t);\n\t\t\tthis._standaloneNodeReaperAlertTimes.set(alertKey, now);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), '[Standalone Node Reaper] alert failed', {\n\t\t\t\taction,\n\t\t\t\tpid: proc.pid,\n\t\t\t\terror: error?.['message'] || error\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async listSystemProcesses(): Promise<ProcessSnapshot[]> {\n\t\tconst output = await this.execFileText('ps', ['-eo', 'pid=,ppid=,etimes=,pcpu=,rss=,comm=,args='], 5000);\n\t\treturn output\n\t\t\t.split('\\n')\n\t\t\t.map(line => line.trim())\n\t\t\t.filter(Boolean)\n\t\t\t.map(line => this.parseProcessSnapshot(line))\n\t\t\t.filter((proc): proc is ProcessSnapshot => proc !== null);\n\t}\n\n\tprivate parseProcessSnapshot(line: string): ProcessSnapshot | null {\n\t\tconst match = line.match(/^(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+([\\d.]+)\\s+(\\d+)\\s+(\\S+)\\s+(.*)$/);\n\t\tif (!match) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tpid: parseInt(match[1], 10),\n\t\t\tppid: parseInt(match[2], 10),\n\t\t\tageSeconds: parseInt(match[3], 10),\n\t\t\tcpuPct: parseFloat(match[4]),\n\t\t\trssKb: parseInt(match[5], 10),\n\t\t\tcommand: match[6],\n\t\t\targs: match[7] || ''\n\t\t};\n\t}\n\n\tprivate execFileText(command: string, args: string[], timeoutMs: number): Promise<string> {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise((resolve, reject) => {\n\t\t\texecFile(command, args, { timeout: timeoutMs, maxBuffer: 1024 * 1024 }, (error, stdout) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve(stdout || '');\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate resolvePm2ProtectedPids(processes: ProcessSnapshot[]): Set<number> {\n\t\tconst byPid = new Map<number, ProcessSnapshot>();\n\t\tconst children = new Map<number, number[]>();\n\t\tfor (const proc of processes) {\n\t\t\tbyPid.set(proc.pid, proc);\n\t\t\tif (!children.has(proc.ppid)) {\n\t\t\t\tchildren.set(proc.ppid, []);\n\t\t\t}\n\t\t\tchildren.get(proc.ppid).push(proc.pid);\n\t\t}\n\n\t\tconst protectedPids = new Set<number>();\n\t\tconst addWithDescendants = (pid: number) => {\n\t\t\tif (protectedPids.has(pid)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprotectedPids.add(pid);\n\t\t\tfor (const childPid of children.get(pid) || []) {\n\t\t\t\taddWithDescendants(childPid);\n\t\t\t}\n\t\t};\n\n\t\tfor (const proc of processes) {\n\t\t\tif (proc.args.includes('pm2-runtime') || proc.args.includes('/pm2/')) {\n\t\t\t\taddWithDescendants(proc.pid);\n\t\t\t}\n\t\t}\n\n\t\tlet currentPid = process.pid;\n\t\twhile (currentPid && byPid.has(currentPid)) {\n\t\t\tprotectedPids.add(currentPid);\n\t\t\tcurrentPid = byPid.get(currentPid).ppid;\n\t\t}\n\n\t\treturn protectedPids;\n\t}\n\n\tprivate shouldReapStandaloneNodeProcess(proc: ProcessSnapshot, protectedPids: Set<number>): boolean {\n\t\tif (proc.pid === process.pid || proc.ppid !== 1 || protectedPids.has(proc.pid)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.isNodeProcess(proc) || !this.isSameUidProcess(proc.pid)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._standaloneNodeReaperIncludeSystemdServices && this.isProtectedSystemdServiceProcess(proc)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.isResolveIOAppProcess(proc)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (proc.ageSeconds >= this._standaloneNodeReaperMinAgeSeconds) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (proc.ageSeconds < this._standaloneNodeReaperHighMinAgeSeconds || !this.hasHighStandaloneNodeResourceUsage(proc)) {\n\t\t\tthis.clearStandaloneNodeResourceHit(proc);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.recordStandaloneNodeResourceHit(proc) >= this._standaloneNodeReaperHighConsecutiveScans;\n\t}\n\n\tprivate resolveStandaloneNodeReaperReason(proc: ProcessSnapshot): string {\n\t\tif (proc.ageSeconds >= this._standaloneNodeReaperMinAgeSeconds) {\n\t\t\treturn `orphan_age_seconds_gte_${this._standaloneNodeReaperMinAgeSeconds}`;\n\t\t}\n\n\t\tconst rssMb = proc.rssKb / 1024;\n\t\tif (proc.cpuPct >= this._standaloneNodeReaperHighCpuPct && rssMb >= this._standaloneNodeReaperHighRssMb) {\n\t\t\treturn `orphan_high_cpu_and_rss_for_${this._standaloneNodeReaperHighConsecutiveScans}_scans`;\n\t\t}\n\t\tif (proc.cpuPct >= this._standaloneNodeReaperHighCpuPct) {\n\t\t\treturn `orphan_high_cpu_for_${this._standaloneNodeReaperHighConsecutiveScans}_scans`;\n\t\t}\n\t\tif (rssMb >= this._standaloneNodeReaperHighRssMb) {\n\t\t\treturn `orphan_high_rss_for_${this._standaloneNodeReaperHighConsecutiveScans}_scans`;\n\t\t}\n\t\treturn 'orphan_stale_node_process';\n\t}\n\n\tprivate isNodeProcess(proc: ProcessSnapshot): boolean {\n\t\treturn proc.command === 'node' || proc.command.startsWith('node ') || proc.args === 'node' || proc.args.startsWith('node ');\n\t}\n\n\tprivate isResolveIOAppProcess(proc: ProcessSnapshot): boolean {\n\t\tconst normalizedArgs = proc.args || '';\n\t\tconst appDirs = this.resolveCurrentAppDirs();\n\t\tfor (const appDir of appDirs) {\n\t\t\tif (normalizedArgs.includes(appDir)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (normalizedArgs.includes('server-app.js') && normalizedArgs.includes('require(')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst cwd = this.resolveProcessCwd(proc.pid);\n\t\treturn cwd !== null && appDirs.has(cwd) && /\\b(index|server-app)\\.js\\b/.test(normalizedArgs);\n\t}\n\n\tprivate hasHighStandaloneNodeResourceUsage(proc: ProcessSnapshot): boolean {\n\t\tconst rssMb = proc.rssKb / 1024;\n\t\treturn proc.cpuPct >= this._standaloneNodeReaperHighCpuPct || rssMb >= this._standaloneNodeReaperHighRssMb;\n\t}\n\n\tprivate recordStandaloneNodeResourceHit(proc: ProcessSnapshot): number {\n\t\tconst signature = this.resolveStandaloneNodeProcessSignature(proc);\n\t\tconst now = Date.now();\n\t\tconst current = this._standaloneNodeReaperResourceHits.get(signature);\n\t\tif (!current || (now - current.lastSeenMs) > (this._standaloneNodeReaperIntervalMs * 3)) {\n\t\t\tthis._standaloneNodeReaperResourceHits.set(signature, { count: 1, lastSeenMs: now });\n\t\t\treturn 1;\n\t\t}\n\n\t\tcurrent.count += 1;\n\t\tcurrent.lastSeenMs = now;\n\t\treturn current.count;\n\t}\n\n\tprivate clearStandaloneNodeResourceHit(proc: ProcessSnapshot): void {\n\t\tthis._standaloneNodeReaperResourceHits.delete(this.resolveStandaloneNodeProcessSignature(proc));\n\t}\n\n\tprivate resolveStandaloneNodeProcessSignature(proc: ProcessSnapshot): string {\n\t\tconst cwd = this.resolveProcessCwd(proc.pid) || '';\n\t\treturn `${cwd}|${proc.args}`;\n\t}\n\n\tprivate canReapStandaloneNodeSignature(signature: string): boolean {\n\t\tconst now = Date.now();\n\t\tconst current = this._standaloneNodeReaperKillCounts.get(signature);\n\t\tif (!current || (now - current.windowStartMs) > this._standaloneNodeReaperKillWindowMs) {\n\t\t\tthis._standaloneNodeReaperKillCounts.set(signature, { count: 0, windowStartMs: now });\n\t\t\tthis._standaloneNodeReaperSuppressedSignatures.delete(signature);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn current.count < this._standaloneNodeReaperMaxKillsPerSignature;\n\t}\n\n\tprivate recordStandaloneNodeReaperKill(signature: string): void {\n\t\tconst now = Date.now();\n\t\tconst current = this._standaloneNodeReaperKillCounts.get(signature);\n\t\tif (!current || (now - current.windowStartMs) > this._standaloneNodeReaperKillWindowMs) {\n\t\t\tthis._standaloneNodeReaperKillCounts.set(signature, { count: 1, windowStartMs: now });\n\t\t\tthis._standaloneNodeReaperSuppressedSignatures.delete(signature);\n\t\t\treturn;\n\t\t}\n\n\t\tcurrent.count += 1;\n\t}\n\n\tprivate logStandaloneNodeReaperSuppressed(proc: ProcessSnapshot, signature: string): void {\n\t\tif (this._standaloneNodeReaperSuppressedSignatures.has(signature)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._standaloneNodeReaperSuppressedSignatures.add(signature);\n\t\tconsole.warn(new Date(), '[Standalone Node Reaper] suppressing recurring stale node process', {\n\t\t\tpid: proc.pid,\n\t\t\tppid: proc.ppid,\n\t\t\tageSeconds: proc.ageSeconds,\n\t\t\tcpuPct: proc.cpuPct,\n\t\t\trssMb: round(proc.rssKb / 1024),\n\t\t\tmaxKillsPerSignature: this._standaloneNodeReaperMaxKillsPerSignature,\n\t\t\tkillWindowMs: this._standaloneNodeReaperKillWindowMs,\n\t\t\tcommand: proc.args\n\t\t});\n\t}\n\n\tprivate resolveCurrentAppDirs(): Set<string> {\n\t\tconst dirs = new Set<string>();\n\t\tfor (const value of [process.cwd(), ResolveIOServer.getClientDir?.()]) {\n\t\t\tif (!value) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst resolved = this.safeRealpath(value);\n\t\t\tif (resolved) {\n\t\t\t\tdirs.add(resolved);\n\t\t\t}\n\t\t}\n\t\treturn dirs;\n\t}\n\n\tprivate resolveProcessCwd(pid: number): string | null {\n\t\treturn this.safeRealpath(`/proc/${pid}/cwd`);\n\t}\n\n\tprivate safeRealpath(value: string): string | null {\n\t\ttry {\n\t\t\treturn fs.realpathSync(value);\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate isSameUidProcess(pid: number): boolean {\n\t\tif (typeof process.getuid !== 'function') {\n\t\t\treturn true;\n\t\t}\n\n\t\ttry {\n\t\t\tconst status = fs.readFileSync(`/proc/${pid}/status`, 'utf8');\n\t\t\tconst uidLine = status.split('\\n').find(line => line.startsWith('Uid:'));\n\t\t\tif (!uidLine) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst uid = parseInt(uidLine.split(/\\s+/)[1], 10);\n\t\t\treturn uid === process.getuid();\n\t\t}\n\t\tcatch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate isProtectedSystemdServiceProcess(proc: ProcessSnapshot): boolean {\n\t\tconst serviceName = this.resolveSystemdServiceName(proc.pid);\n\t\tif (!serviceName) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn /\\bindex\\.js\\b/.test(proc.args);\n\t}\n\n\tprivate resolveSystemdServiceName(pid: number): string | null {\n\t\ttry {\n\t\t\tconst cgroup = fs.readFileSync(`/proc/${pid}/cgroup`, 'utf8');\n\t\t\tconst serviceLine = cgroup.split('\\n').find(line => line.includes('/system.slice/') && line.includes('.service'));\n\t\t\tif (!serviceLine) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst match = serviceLine.match(/\\/system\\.slice\\/([^/]+\\.service)/);\n\t\t\treturn match ? match[1] : null;\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async shutdownNetworkServers() {\n\t\tawait this.closeWebSocketServerGracefully();\n\t\tawait this.closeHttpServerGracefully();\n\t}\n\n\tprivate async closeHttpServerGracefully() {\n\t\tif (!this._serverHTTP) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._httpServerClosePromise !== null) {\n\t\t\tawait this._httpServerClosePromise;\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tthis._httpServerClosePromise = new Promise(resolve => {\n\t\t\ttry {\n\t\t\t\tthis._serverHTTP.close(error => {\n\t\t\t\t\tif (error && error['code'] !== 'ERR_SERVER_NOT_RUNNING') {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error closing HTTP server before shutdown', error);\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tif (error && error['code'] !== 'ERR_SERVER_NOT_RUNNING') {\n\t\t\t\t\tconsole.error(new Date(), 'Error closing HTTP server before shutdown', error);\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\n\t\tawait this._httpServerClosePromise;\n\t}\n\n\tprivate async closeWebSocketServerGracefully() {\n\t\tif (!this._serverWSS) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._websocketServerClosePromise !== null) {\n\t\t\tawait this._websocketServerClosePromise;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._serverWSS.clients.forEach(ws => {\n\t\t\ttry {\n\t\t\t\tws.close(1001, 'Server restarting');\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'Error closing WebSocket client before shutdown', error);\n\t\t\t}\n\t\t});\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tthis._websocketServerClosePromise = new Promise(resolve => {\n\t\t\ttry {\n\t\t\t\tthis._serverWSS.close(error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error closing WebSocket server before shutdown', error);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'Error closing WebSocket server before shutdown', error);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\n\t\tawait this._websocketServerClosePromise;\n\t}\n\n\tprivate startServerInstance() {\n\t\t// Start express app\n\t\tthis._app = express();\n\n\t\t// Use built-in express JSON parser\n\t\tthis._app.use(express.json({\n\t\t\tlimit: '50mb',\n\t\t\treviver: dateReviver // Note: 'reviver' is an option for JSON.parse, which can be passed here\n\t\t}));\n\n\t\t// Use built-in express URL-encoded parser\n\t\tthis._app.use(express.urlencoded({\n\t\t\tlimit: '50mb',\n\t\t\textended: true, // `extended` must be explicitly true or false\n\t\t\tparameterLimit: 1000000\n\t\t}));\n\n\n\t\tthis._app.use(xmlParser());\n\t\t\n\t\t// Set port\n\t\tthis._portHTTP = process.env.NODE_APP_INSTANCE ? parseInt('808' + process.env.NODE_APP_INSTANCE) : 8080;\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup ports');\n\t\t}\n\n\t\t// Create http server and websock server\n\t\tthis.createServer();\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Create server');\n\t\t}\n\n\t\t// Set CORS\n\t\tthis._app.use((req, res, next) => {\n\t\t\tconst requestOrigin = String(req.headers.origin || '').trim();\n\t\t\tif (requestOrigin && isAllowedOrigin(requestOrigin, ResolveIOServer.getServerConfig())) {\n\t\t\t\tres.setHeader('Access-Control-Allow-Origin', requestOrigin);\n\t\t\t\tres.setHeader('Vary', 'Origin');\n\t\t\t\tres.setHeader('Access-Control-Allow-Credentials', 'true');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tres.setHeader('Access-Control-Allow-Origin', '*');\n\t\t\t\tres.setHeader('Access-Control-Allow-Credentials', 'false');\n\t\t\t}\n\t\t\tres.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');\n\t\t\tres.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Rio-Token, X-API-Key, X-AI-Coder-App-Token, X-AI-Coder-Session');\n\t\t\tres.setHeader('Access-Control-Allow-Private-Network', 'true');\n\t\t\tif (isCorsPreflightRequest(req)) {\n\t\t\t\tres.status(204).end();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnext();\n\t\t});\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup cors');\n\t\t}\n\n\t\tthis.installDynamicAppGatewayMiddleware();\n\n\t\t// Set up http login route\n\t\tsetupAuthRoutes(this, this._app, ResolveIOServer.getServerConfig());\n\t\tsetupHealthRoutes(this._app);\n\t\tsetupSlowQueryPublicationRoutes(this._app);\n\n\t\tif (ResolveIOServer.getServerConfig()['CLIENT_NAME'] === 'ResolveIO' || this.publicProgram) {\n\t\t\tsetupHomeRoutes(this, this._app, ResolveIOServer.getServerConfig());\n\t\t}\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup express routes');\n\t\t}\n\t}\n\n\tprivate installDynamicAppGatewayMiddleware(): void {\n\t\tif (!this._dynamicAppGatewayEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._app.use(async (req, res, next) => {\n\t\t\tconst appId = this.extractDynamicAppGatewayId(req);\n\t\t\tif (!appId) {\n\t\t\t\tnext();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst appDoc = await this.resolveCachedDynamicAppGatewayApp(appId);\n\t\t\t\tif (!appDoc) {\n\t\t\t\t\tres.status(404).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'App not found.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst allowedHosts = this.resolveDynamicAppAllowedHosts(appDoc);\n\t\t\t\tconst controlHosts = this.resolveDynamicAppControlHosts();\n\t\t\t\tconst requestHost = this.normalizeHostname(\n\t\t\t\t\tthis.normalizeHeaderValue(req.headers?.['x-forwarded-host'])\n\t\t\t\t\t|| this.normalizeHeaderValue(req.headers?.host)\n\t\t\t\t);\n\t\t\t\tconst originHeader = this.normalizeHeaderValue(req.headers?.origin);\n\t\t\t\tconst originHost = this.resolveOriginHostname(originHeader);\n\n\t\t\t\tif (requestHost && controlHosts.has(requestHost) && !this.isLocalHostname(requestHost)) {\n\t\t\t\t\tres.status(403).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'App API must be requested from an app domain.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (requestHost && !allowedHosts.has(requestHost) && !this.isLocalHostname(requestHost)) {\n\t\t\t\t\tres.status(403).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Host not allowed for app API.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (originHost && controlHosts.has(originHost) && !this.isLocalHostname(originHost)) {\n\t\t\t\t\tres.status(403).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'App API origin must be an app domain.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (originHost && !allowedHosts.has(originHost)) {\n\t\t\t\t\tres.status(403).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Origin not allowed for app API.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (originHeader) {\n\t\t\t\t\tthis.applyDynamicAppGatewayCorsHeaders(res, originHeader);\n\t\t\t\t}\n\n\t\t\t\tif (isCorsPreflightRequest(req)) {\n\t\t\t\t\tres.status(204).end();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst expectedToken = this.normalizeHeaderValue(appDoc?.rio_token);\n\t\t\t\tif (!expectedToken) {\n\t\t\t\t\tres.status(500).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'App token is not configured.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst providedToken = this.resolveDynamicAppGatewayToken(req);\n\t\t\t\tif (!providedToken || providedToken !== expectedToken) {\n\t\t\t\t\tres.status(401).send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid or missing RIO token.'\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnext();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), '[DynamicAppGateway] middleware failure', error);\n\t\t\t\tres.status(500).send(JSON.stringify({\n\t\t\t\t\terror: true,\n\t\t\t\t\tresult: (error as Error)?.message || 'Dynamic app gateway error.'\n\t\t\t\t}));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate resolveDynamicAppGatewayEnabled(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = config['AI_CODER_DYNAMIC_APP_GATEWAY'] ?? process.env.AI_CODER_DYNAMIC_APP_GATEWAY;\n\t\tif (raw !== undefined && raw !== null && `${raw}`.trim() !== '') {\n\t\t\treturn this.parseDebugFlag(raw);\n\t\t}\n\n\t\tconst urls = [\n\t\t\tconfig['ROOT_URL'],\n\t\t\tconfig['SEC_ROOT_URL'],\n\t\t\tconfig['SERVER_URL'],\n\t\t\tprocess.env.ROOT_URL,\n\t\t\tprocess.env.SEC_ROOT_URL,\n\t\t\tprocess.env.SERVER_URL\n\t\t]\n\t\t\t.map(value => `${value || ''}`.trim().toLowerCase())\n\t\t\t.filter(Boolean);\n\n\t\treturn urls.some(value => value.includes('aicoder'));\n\t}\n\n\tprivate extractDynamicAppGatewayId(req: express.Request): string {\n\t\tconst rawPath = `${req.originalUrl || req.url || req.path || ''}`;\n\t\tconst normalizedPath = rawPath.split('?')[0];\n\t\tif (!normalizedPath.startsWith('/api/apps/')) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst parts = normalizedPath.split('/').filter(Boolean);\n\t\tif (parts.length < 3) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn `${parts[2] || ''}`.trim();\n\t}\n\n\tprivate resolveDynamicAppGatewayToken(req: express.Request): string {\n\t\tconst authHeader = this.normalizeHeaderValue(req.headers?.authorization || req.headers?.Authorization);\n\t\tif (authHeader) {\n\t\t\tconst bearerMatch = authHeader.match(/^bearer\\s+(.+)$/i);\n\t\t\tif (bearerMatch && bearerMatch[1]) {\n\t\t\t\treturn bearerMatch[1].trim();\n\t\t\t}\n\t\t}\n\n\t\tconst headerCandidates = [\n\t\t\treq.headers?.['x-rio-token'],\n\t\t\treq.headers?.['x-app-token'],\n\t\t\treq.headers?.['x-api-key']\n\t\t];\n\t\tfor (const candidate of headerCandidates) {\n\t\t\tconst value = this.normalizeHeaderValue(candidate);\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tconst body: any = req.body || {};\n\t\tconst query: any = req.query || {};\n\t\tconst bodyCandidates = [body.rioToken, body.rio_token, body.apiKey, body.token];\n\t\tfor (const candidate of bodyCandidates) {\n\t\t\tconst value = this.normalizeHeaderValue(candidate);\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tconst queryCandidates = [query.rioToken, query.rio_token, query.apiKey, query.token];\n\t\tfor (const candidate of queryCandidates) {\n\t\t\tconst value = this.normalizeHeaderValue(candidate);\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tprivate normalizeHeaderValue(value: any): string {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => `${entry || ''}`.trim()).filter(Boolean).join(',');\n\t\t}\n\t\treturn `${value || ''}`.trim();\n\t}\n\n\tprivate normalizeHostname(value: string): string {\n\t\tconst raw = `${value || ''}`.trim();\n\t\tif (!raw) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet candidate = raw.split(',')[0].trim();\n\t\tif (!candidate) {\n\t\t\treturn '';\n\t\t}\n\n\t\ttry {\n\t\t\tif (candidate.startsWith('http://') || candidate.startsWith('https://')) {\n\t\t\t\treturn new URL(candidate).hostname.toLowerCase();\n\t\t\t}\n\t\t\tif (candidate.includes('/')) {\n\t\t\t\treturn new URL(`http://${candidate}`).hostname.toLowerCase();\n\t\t\t}\n\t\t}\n\t\tcatch {}\n\n\t\tcandidate = candidate.replace(/^\\[/, '').replace(/\\]$/, '');\n\t\tconst lastColon = candidate.lastIndexOf(':');\n\t\tif (lastColon > -1 && candidate.indexOf(':') === lastColon) {\n\t\t\tcandidate = candidate.slice(0, lastColon);\n\t\t}\n\t\treturn candidate.toLowerCase();\n\t}\n\n\tprivate resolveOriginHostname(origin: string): string {\n\t\tconst raw = `${origin || ''}`.trim();\n\t\tif (!raw) {\n\t\t\treturn '';\n\t\t}\n\t\ttry {\n\t\t\treturn new URL(raw).hostname.toLowerCase();\n\t\t}\n\t\tcatch {\n\t\t\treturn this.normalizeHostname(raw);\n\t\t}\n\t}\n\n\tprivate isLocalHostname(hostname: string): boolean {\n\t\tconst normalized = this.normalizeHostname(hostname);\n\t\treturn normalized === 'localhost' || normalized === '127.0.0.1' || normalized === '::1';\n\t}\n\n\tprivate resolveDynamicAppControlHosts(): Set<string> {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\tconst hosts = new Set<string>();\n\t\tconst candidates = [\n\t\t\tconfig['ROOT_URL'],\n\t\t\tconfig['SEC_ROOT_URL'],\n\t\t\tconfig['SERVER_URL'],\n\t\t\tprocess.env.ROOT_URL,\n\t\t\tprocess.env.SEC_ROOT_URL,\n\t\t\tprocess.env.SERVER_URL,\n\t\t\tprocess.env.AI_CODER_ROOT_URL,\n\t\t\tprocess.env.AI_CODER_SEC_ROOT_URL,\n\t\t\tprocess.env.AI_CODER_SERVER_URL\n\t\t];\n\t\tfor (const candidate of candidates) {\n\t\t\tconst normalized = this.normalizeHostname(`${candidate || ''}`);\n\t\t\tif (normalized) {\n\t\t\t\thosts.add(normalized);\n\t\t\t}\n\t\t}\n\t\treturn hosts;\n\t}\n\n\tprivate resolveDynamicAppAllowedHosts(appDoc: any): Set<string> {\n\t\tconst hosts = new Set<string>();\n\t\tconst candidates = [\n\t\t\tappDoc?.domain,\n\t\t\tappDoc?.backend_domain\n\t\t];\n\t\tif (appDoc?.subdomain && appDoc?.domain_base) {\n\t\t\tcandidates.push(`${appDoc.subdomain}.${appDoc.domain_base}`);\n\t\t}\n\n\t\tfor (const candidate of candidates) {\n\t\t\tconst normalized = this.normalizeHostname(`${candidate || ''}`);\n\t\t\tif (normalized) {\n\t\t\t\thosts.add(normalized);\n\t\t\t}\n\t\t}\n\t\treturn hosts;\n\t}\n\n\tprivate applyDynamicAppGatewayCorsHeaders(res: express.Response, origin: string): void {\n\t\tres.setHeader('Access-Control-Allow-Origin', origin);\n\t\tres.setHeader('Vary', 'Origin');\n\t\tres.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');\n\t\tres.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Rio-Token, X-API-Key, X-AI-Coder-App-Token, X-AI-Coder-Session');\n\t\tres.setHeader('Access-Control-Allow-Credentials', 'true');\n\t\tres.setHeader('Access-Control-Allow-Private-Network', 'true');\n\t\tres.setHeader('Access-Control-Max-Age', '600');\n\t}\n\n\tprivate async resolveCachedDynamicAppGatewayApp(appId: string): Promise<any | null> {\n\t\tconst now = Date.now();\n\t\tconst cached = this._dynamicAppGatewayCache.get(appId);\n\t\tif (cached && cached.expiresAt > now) {\n\t\t\treturn cached.app;\n\t\t}\n\n\t\tconst db = ResolveIOServer.getMainDB();\n\t\tif (!db) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst appCollection: any = db.collection('ai-coder-apps');\n\t\tconst appDoc = await appCollection.findOne(\n\t\t\t{ _id: appId },\n\t\t\t{\n\t\t\t\tprojection: {\n\t\t\t\t\t_id: 1,\n\t\t\t\t\tdomain: 1,\n\t\t\t\t\tbackend_domain: 1,\n\t\t\t\t\tsubdomain: 1,\n\t\t\t\t\tdomain_base: 1,\n\t\t\t\t\trio_token: 1\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tif (!appDoc) {\n\t\t\tthis._dynamicAppGatewayCache.delete(appId);\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.normalizeHeaderValue(appDoc.rio_token)) {\n\t\t\tconst generated = crypto.randomBytes(32).toString('hex');\n\t\t\tawait appCollection.updateOne(\n\t\t\t\t{ _id: appId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\trio_token: generated,\n\t\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tappDoc.rio_token = generated;\n\t\t}\n\n\t\tthis._dynamicAppGatewayCache.set(appId, {\n\t\t\texpiresAt: now + this._dynamicAppGatewayCacheMs,\n\t\t\tapp: appDoc\n\t\t});\n\t\treturn appDoc;\n\t}\n\n\tprivate async safeShutdown() {\n\t\tif (!this._safeShutdown) {\n\t\t\tconsole.log(new Date(), 'Safe Shutdown Command Received');\n\t\t}\n\n\t\tif (\n\t\t\t!this._monitorManagerFunction.getActiveMonitorFunctions().length\n\t\t\t&& !this._offlineUpdates.length && (!this._workerDispatcherManager || this._workerDispatcherManager.isSafeShutdown())\n\t\t) {\n\t\t\tif (ResolveIOServer.getMongoConnection()) {\n\t\t\t\ttry {\n\t\t\t\t\tawait ResolveIOServer.getMongoConnection().close(false);\n\t\t\t\t\tconsole.log(new Date(), 'Safe Exit Complete, Process Exit');\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t\tcatch { \n\t\t\t\t\tprocess.exit(1); \n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (!this._safeShutdown) {\n\t\t\t\tthis._safeShutdown = true;\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._safeShutdown = false;\n\t\t\t\t}, 1000);\n\n\t\t\t\tconsole.log(new Date(), 'Safe Exit In Progress', \n\t\t\t\t\tthis._monitorManagerFunction.getActiveMonitorFunctions().length,\n\t\t\t\t\tthis._offlineUpdates.length\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetImmediate(async () => {\n\t\t\t\tawait this.safeShutdown();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetIsWorkersEnabled() {\n\t\treturn this._isWorkersEnabled;\n\t}\n\n\tgetIsWorkerInstance() {\n\t\treturn this._isWorkerInstance;\n\t}\n\n\tpublic getWSList() {\n\t\tlet res = [];\n\t\tthis._serverWSS.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_socket']);\n\t\t});\n\t\treturn res;\n\t}\n\n\tpublic getWSUserList() {\n\t\tlet res = [];\n\t\tthis._serverWSS.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_user']);\n\t\t});\n\t\treturn res;\n\t}\n\n\tpublic getHTTPServer() {\n\t\treturn this._serverHTTP;\n\t}\n\n\tpublic getCronManager() {\n\t\treturn this._cronManager;\n\t}\n\n\tprivate async reportServerError(\n\t\tsubject: string,\n\t\tcorrelationId: string,\n\t\tcontext: Record<string, any>,\n\t\tmeta?: Record<string, any>,\n\t\tseverity = 'error',\n\t\tstackOverride?: string\n\t) {\n\t\tconst config = ResolveIOServer.getServerConfig();\n\t\tconst metadata = Object.assign({}, meta || {});\n\t\tif (correlationId && !metadata.correlationId) {\n\t\t\tmetadata.correlationId = correlationId;\n\t\t}\n\n\t\tawait ErrorReporter.report({\n\t\t\tsourceApp: 'server-app',\n\t\t\tmessage: subject,\n\t\t\tenvironment: config?.ROOT_URL || process.env.NODE_ENV || 'unknown',\n\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\tclientName: config?.CLIENT_NAME,\n\t\t\tseverity,\n\t\t\tstack: stackOverride || (typeof context?.stack === 'string' ? context.stack : undefined),\n\t\t\tcontext,\n\t\t\tmetadata,\n\t\t\tcorrelationId\n\t\t});\n\t}\n\n\tpublic getMethodManager() {\n\t\treturn this._methodManager;\n\t}\n\n\tpublic getSubscriptionManager() {\n\t\treturn this._subscriptionManager;\n\t}\n\n\tpublic getMonitorManager() {\n\t\treturn this._monitorManager;\n\t}\n\n\tpublic getRebootFlag() {\n\t\treturn this._rebootFlag;\n\t}\n\n\tpublic getWebSocketManager(): WebSocketManager {\n\t\treturn this._websocketManager;\n\t}\n\n\tprivate createServer(): void {\n\t\tthis._serverHTTP = createServer(this._app);\n\t\tthis._serverHTTP.keepAliveTimeout = 65000;\n\t\tthis._serverHTTP.headersTimeout = 66000;\n\n\t\tthis._serverWSS = new WebSocket.Server({\n\t\t\tserver: this._serverHTTP,\n\t\t\tverifyClient: this.publicProgram ? null : (info, cb) => {\n\t\t\t\tif (this._rebootFlag) {\n\t\t\t\t\tcb(false, 409, 'Unable To Process');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\t\tconsole.log('Verify Client', info, cb);\n\t\t\t\t\t}\n\n\t\t\t\t\t// If it's a worker, we might skip token checks or do a simple check:\n\t\t\t\t\tif (info.req.url && info.req.url.includes('workerToken=')) {\n\t\t\t\t\t\tlet requestUrl: URL;\n\t\t\t\t\t\tlet rootUrl = ResolveIOServer.getServerConfig()['ROOT_URL'] || 'http://localhost';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\trequestUrl = new URL(info.req.url, rootUrl);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\tcb(false, 400, 'Bad Request');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet workerToken = requestUrl.searchParams.get('workerToken') || '';\n\t\t\t\t\t\tlet workerIndex = this.normalizeWorkerSelectorValue(requestUrl.searchParams.get('workerIndex'));\n\t\t\t\t\t\tlet workerInstance = this.normalizeWorkerSelectorValue(requestUrl.searchParams.get('workerInstance'));\n\t\t\t\t\t\tlet expectedWorkerToken = String(ResolveIOServer.getServerConfig()['WORKER_TOKEN'] || '');\n\n\t\t\t\t\t\tif (!workerIndex || !workerInstance) {\n\t\t\t\t\t\t\tcb(false, 400, 'Missing worker identity');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (workerToken === expectedWorkerToken) {\n\t\t\t\t\t\t\tinfo.req['workerIndex'] = workerIndex;\n\t\t\t\t\t\t\tinfo.req['workerInstance'] = workerInstance;\n\t\t\t\t\t\t\tcb(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst protocolsHeader = info.req.headers['sec-websocket-protocol'];\n\t\t\t\t\tif (!protocolsHeader || typeof protocolsHeader !== 'string') {\n\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet infoData = protocolsHeader.split(/,/);\n\n\t\t\t\t\tif (!isAllowedOrigin(info.origin, ResolveIOServer.getServerConfig())) {\n\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet token = infoData[0];\n\t\t\t\t\t\tif (!token) {\n\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tjwt.verify(token, ResolveIOServer.getServerConfig()['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\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\tinfo.req['id_user'] = decoded['id_user'];\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tlet user = await Users.findById(decoded['id_user']);\n\t\t\t\t\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst socketAdmission = await this.evaluateClientSocketAdmission(decoded['id_user'], info.req);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!socketAdmission.allowed) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcb(false, socketAdmission.statusCode, socketAdmission.message || 'Socket connection rejected.');\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tinfo.req['user'] = user.fullname;\n\t\t\t\t\t\t\t\t\t\t\t\tinfo.req['user_readonly'] = user.readonly || false;\n\t\t\t\t\t\t\t\t\t\t\t\tinfo.req['doc_user'] = user;\n\t\t\t\t\t\t\t\t\t\t\t\tinfo.req['client_ip'] = socketAdmission.clientIp;\n\t\t\t\t\t\t\t\t\t\t\t\tcb(true);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Listen for connections from clients or workers.\n\t */\n\tprivate listen(): void {\n\t\tconst host = process.env.RESOLVEIO_BIND_HOST || '127.0.0.1';\n\t\tthis._serverHTTP.listen(this._portHTTP, host, () => {\n\t\t\tconsole.log('Running HTTP/WS server on port %s', this._portHTTP);\n\t\t});\n\n\t\t\tthis._serverWSS.on('connection', async (ws, req) => {\n\t\t\t\tif (req.url && req.url.includes('workerToken=')) {\n\t\t\t\t\t// It's a WORKER\n\t\t\t\t\tlet workerId = objectIdHexString();\n\t\t\t\t\tws['id_worker'] = workerId;\n\t\t\t\t\tlet workerIndex = null;\n\t\t\t\t\tlet workerInstance = null;\n\t\t\t\t\tws['supportsBinary'] = true;\n\n\t\t\t\t\tif (req.url) {\n\t\t\t\t\t\tlet rootUrl = ResolveIOServer.getServerConfig()['ROOT_URL'] || 'http://localhost';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet requestUrl = new URL(req.url, rootUrl);\n\t\t\t\t\t\t\tworkerIndex = requestUrl.searchParams.get('workerIndex');\n\t\t\t\t\t\t\tworkerInstance = requestUrl.searchParams.get('workerInstance');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\tworkerIndex = null;\n\t\t\t\t\t\t\tworkerInstance = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!workerIndex && req['workerIndex']) {\n\t\t\t\t\t\tworkerIndex = req['workerIndex'];\n\t\t\t\t\t}\n\t\t\t\t\tif (!workerInstance && req['workerInstance']) {\n\t\t\t\t\t\tworkerInstance = req['workerInstance'];\n\t\t\t\t\t}\n\n\t\t\t\t\tworkerIndex = this.normalizeWorkerSelectorValue(workerIndex);\n\t\t\t\t\tworkerInstance = this.normalizeWorkerSelectorValue(workerInstance);\n\n\t\t\t\t\tif (!workerIndex || !workerInstance) {\n\t\t\t\t\t\tconsole.warn(new Date(), 'Rejected worker connection with missing identity', {\n\t\t\t\t\t\t\tworkerId,\n\t\t\t\t\t\t\tworkerIndex: workerIndex || null,\n\t\t\t\t\t\t\tworkerInstance: workerInstance || null\n\t\t\t\t\t\t});\n\t\t\t\t\t\tws.close(1008, 'Missing worker identity');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tws['workerIndex'] = workerIndex;\n\t\t\t\t\tws['workerInstance'] = workerInstance;\n\n\t\t\t\t\tlet workerIndexForLog = ws['workerIndex'] || 'UNKNOWN';\n\t\t\t\t\tlet workerInstanceForLog = ws['workerInstance'] || 'UNKNOWN';\n\t\t\t\t\tconsole.log(new Date(), 'Worker Connected', workerIndexForLog, workerInstanceForLog);\n\n\t\t\t\t\tthis._workerDispatcherManager.addWorker(ws);\n\n\t\t\t\tlet interval = null;\n\t\t\t\tlet lastComm = new Date();\n\t\t\t\tlet missedPongs = 0;\n\t\t\t\tconst heartbeatIntervalMs = 30000;\n\t\t\t\tconst maxMissedPongs = 2;\n\t\t\t\tconst maxSilenceMs = heartbeatIntervalMs * (maxMissedPongs + 1);\n\n\t\t\t\tthis._workerDispatcherManager.sendWorkerPayload(ws, 'ping');\n\t\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\tconst last = lastComm ? lastComm.getTime() : 0;\n\t\t\t\t\tconst silenceMs = last ? now - last : maxSilenceMs + 1;\n\t\t\t\t\tif (silenceMs > maxSilenceMs || missedPongs > maxMissedPongs) {\n\t\t\t\t\t\tthis._workerDispatcherManager.disconnectWorker(ws['id_worker']);\n\t\t\t\t\t\tws.close();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tmissedPongs += 1;\n\t\t\t\t\tthis._workerDispatcherManager.sendWorkerPayload(ws, 'ping');\n\t\t\t\t}, heartbeatIntervalMs);\n\n\t\t\t\t\tws.on('message', (message: WebSocket.RawData) => {\n\t\t\t\t\t\tlastComm = new Date();\n\t\t\t\t\t\tif (typeof message === 'string') {\n\t\t\t\t\t\t\tif (message === 'ping') {\n\t\t\t\t\t\t\t\tthis._workerDispatcherManager.sendWorkerPayload(ws, 'pong');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (message === 'pong') {\n\t\t\t\t\t\t\t\tmissedPongs = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._workerDispatcherManager.handleWorkerMessage(ws['id_worker'], message);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet buffer: Buffer;\n\n\t\t\t\t\t\tif (Buffer.isBuffer(message)) {\n\t\t\t\t\t\t\tbuffer = message;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Array.isArray(message)) {\n\t\t\t\t\t\t\tconst chunks = message as unknown as ReadonlyArray<Uint8Array>;\n\t\t\t\t\t\t\tbuffer = Buffer.concat(chunks);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (message instanceof ArrayBuffer) {\n\t\t\t\t\t\t\tbuffer = Buffer.from(message);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (ArrayBuffer.isView(message)) {\n\t\t\t\t\t\t\tconst view = message as NodeJS.ArrayBufferView;\n\t\t\t\t\t\t\tbuffer = Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbuffer = Buffer.from(message as any);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (buffer.length === 4) {\n\t\t\t\t\t\t\tlet heartbeat = buffer.toString('utf8');\n\n\t\t\t\t\t\t\tif (heartbeat === 'ping') {\n\t\t\t\t\t\t\t\tthis._workerDispatcherManager.sendWorkerPayload(ws, 'pong');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (heartbeat === 'pong') {\n\t\t\t\t\t\t\t\tmissedPongs = 0;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._workerDispatcherManager.handleWorkerMessage(ws['id_worker'], buffer);\n\t\t\t\t\t});\n\n\t\t\t\tws.on('close', () => {\n\t\t\t\t\tthis._workerDispatcherManager.disconnectWorker(ws['id_worker']);\n\n\t\t\t\t\tconsole.log(new Date(), 'Worker disconnected:', workerId);\n\t\t\t\t\t\n\t\t\t\t\tif (interval) {\n\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tws.on('error', (error) => {\n\t\t\t\t\tthis._workerDispatcherManager.disconnectWorker(ws['id_worker']);\n\n\t\t\t\t\tconsole.error('Error on WS Worker', error);\n\t\t\t\t\tws.close();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Normal client\n\t\t\t\t\tws['id_socket'] = objectIdHexString();\n\t\t\t\t\tws['supportsBinary'] = true;\n\t\t\t\t\tws['id_user'] = req['id_user'];\n\t\t\t\t\tws['user'] = req['user'];\n\t\t\t\t\tws['user_readonly'] = req['user_readonly'];\n\t\t\t\t\tws['doc_user'] = req['doc_user'];\n\t\t\t\t\tws['client_ip'] = this.resolveClientIp(req);\n\n\t\t\t\t\tlet socketAdmission: { allowed: boolean, statusCode: number, message: string, clientIp: string };\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsocketAdmission = await this.evaluateClientSocketAdmission(ws['id_user'], req);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (socketPolicyError) {\n\t\t\t\t\t\tthis.logConnectDebug('WS socket policy evaluation failed', {\n\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\tip: ws['client_ip'],\n\t\t\t\t\t\t\terror: (socketPolicyError as Error)?.message || socketPolicyError\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tws.close(1011, 'Socket policy error');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!socketAdmission.allowed) {\n\t\t\t\t\t\tthis.logConnectDebug('WS client rejected', {\n\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\tip: ws['client_ip'],\n\t\t\t\t\t\t\treason: socketAdmission.message\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tws.close(1008, this.buildSocketLimitCloseReason());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tws['client_ip'] = socketAdmission.clientIp || ws['client_ip'];\n\n\t\t\t\t\tthis._websocketManager.addWebSocket(ws);\n\n\t\t\t\tthis.logConnectDebug('WS client connected', {\n\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\turl: req?.url,\n\t\t\t\t\t\tip: ws['client_ip'],\n\t\t\t\t\t\torigin: req?.headers?.origin\n\t\t\t\t\t});\n\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tawait this.triggerClientHeartbeat(ws);\n\t\t\t\t}, this._clientHeartbeatInitialDelayMs);\n\n\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\tconsole.log('Connection from user: ' + req['user']);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tws['isAlive'] = true;\n\t\t\t\tws['retryCnt'] = 0;\n\t\t\t\tws.on('pong', () => {\n\t\t\t\t\tws['isAlive'] = true;\n\t\t\t\t\tws['pongTime'] = new Date();\n\t\t\t\t\tif (ws['pingTime']) {\n\t\t\t\t\t\tws['latency'] = moment.duration(moment(ws['pongTime']).diff(ws['pingTime'])).asMilliseconds();\n\t\t\t\t\t\tthis._subscriptionManager.loggedInLatency(ws);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tws.on('message', async (message: WebSocket.RawData) => {\n\t\t\t\t\tthis._debugMsgRecv += 1;\n\t\t\t\t\tlet socketData = [];\n\t\t\t\t\tlet usedBinary = false;\n\t\t\t\t\tlet bufferPayload: Buffer;\n\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (typeof message === 'string') {\n\t\t\t\t\t\t\tif (message === 'ping' || message === 'pong') {\n\t\t\t\t\t\t\t\tsocketData = message;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tsocketData = JSON.parse(message, dateReviver);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Buffer.isBuffer(message)) {\n\t\t\t\t\t\t\tbufferPayload = message;\n\t\t\t\t\t\t\tlet decodeResult = this.decodeBufferPayload(bufferPayload);\n\t\t\t\t\t\t\tsocketData = decodeResult.data;\n\t\t\t\t\t\t\tusedBinary = decodeResult.usedBinary;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Array.isArray(message)) {\n\t\t\t\t\t\t\tbufferPayload = Buffer.concat(message as unknown as ReadonlyArray<Uint8Array>);\n\t\t\t\t\t\t\tlet decodeResult = this.decodeBufferPayload(bufferPayload);\n\t\t\t\t\t\t\tsocketData = decodeResult.data;\n\t\t\t\t\t\t\tusedBinary = decodeResult.usedBinary;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (message instanceof ArrayBuffer) {\n\t\t\t\t\t\t\tbufferPayload = Buffer.from(message);\n\t\t\t\t\t\t\tlet decodeResult = this.decodeBufferPayload(bufferPayload);\n\t\t\t\t\t\t\tsocketData = decodeResult.data;\n\t\t\t\t\t\t\tusedBinary = decodeResult.usedBinary;\n\t\t\t\t\t\t}\n\t\t\t\t\telse if (ArrayBuffer.isView(message)) {\n\t\t\t\t\t\tconst view = message as NodeJS.ArrayBufferView;\n\t\t\t\t\t\tbufferPayload = Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n\t\t\t\t\t\tlet decodeResult = this.decodeBufferPayload(bufferPayload);\n\t\t\t\t\t\tsocketData = decodeResult.data;\n\t\t\t\t\t\tusedBinary = decodeResult.usedBinary;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Unsupported WebSocket message type: ' + typeof message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\tconsole.log('Error - WS message parse', e);\n\t\t\t\t\tconst correlationId = objectIdHexString();\n\t\t\t\t\tconst context = {\n\t\t\t\t\t\trawBinary: bufferPayload ? bufferPayload.toString('base64') : undefined,\n\t\t\t\t\t\trawMessage: typeof message === 'string' ? message : undefined,\n\t\t\t\t\t\terror: e instanceof Error ? { name: e.name, message: e.message, stack: e.stack } : e\n\t\t\t\t\t};\n\t\t\t\t\tawait this.reportServerError(\n\t\t\t\t\t\t'SERVER - JSON Parse Error - ' + ResolveIOServer.getServerConfig()['CLIENT_NAME'],\n\t\t\t\t\t\tcorrelationId,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t{ context: 'websocket-message-parse' },\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\te instanceof Error ? e.stack : undefined\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t\tif (usedBinary) {\n\t\t\t\t\t\tws['supportsBinary'] = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// call our existing processSocketMessage\n\t\t\t\t\tawait this.processSocketMessage(ws, socketData);\n\t\t\t\t})\n\t\t\t\t.on('end', () => {\n\t\t\t\t\tws.close();\n\t\t\t\t})\n\t\t\t\t.on('error', () => {\n\t\t\t\t\tws.close()\n\t\t\t\t})\n\t\t\t\t.on('close', async () => {\n\t\t\t\t\tthis.logConnectDebug('WS client closed', {\n\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tuser: ws['user']\n\t\t\t\t\t});\n\t\t\t\t\tawait this.unsubscribeWS(ws);\n\t\t\t\t});\n\n\t\t\t\t// Do not block message handler registration on DB write; this avoids losing\n\t\t\t\t// very-early subscription messages sent immediately after websocket open.\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this._subscriptionManager.createLoggedInUser(ws['id_socket']);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconsole.error(new Date(), 'Error creating logged-in user', ws['id_socket'], error);\n\t\t\t\t\t\tthis.logConnectDebug('Create logged-in user failed', {\n\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\terror: error?.message || error\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, 0);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Keep alive timer\n\t\tsetInterval(async () => {\n\t\t\tfor (let ws of this._serverWSS.clients) {\n\t\t\t\tif (ws['pingTime'] && Date.now() - ws['pingTime'].getTime() >= this._clientHeartbeatIntervalMs) {\n\t\t\t\t\tif (this.shouldDeferHeartbeat(ws)) {\n\t\t\t\t\t\tws['isAlive'] = true;\n\t\t\t\t\t\tws['retryCnt'] = 0;\n\t\t\t\t\t\tws['pingTime'] = new Date();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ws['isAlive'] === false) {\n\t\t\t\t\t\tws['retryCnt']++;\n\t\t\t\t\t\tif (ws['retryCnt'] >= 3) {\n\t\t\t\t\t\t\tawait this.unsubscribeWS(ws);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this.triggerClientHeartbeat(ws);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tws['retryCnt'] = 0;\n\t\t\t\t\t\tws['isAlive'] = false;\n\t\t\t\t\t\tawait this.triggerClientHeartbeat(ws);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._clientHeartbeatIntervalMs);\n\t}\n\n\tprivate async processSocketMessage(ws: WebSocket, socketData: any) {\n\t\tif (typeof socketData === 'string' && socketData === 'ping') {\n\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\tws.send('pong');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\telse if (typeof socketData === 'string' && socketData === 'pong') {\n\t\t\tws['isAlive'] = true;\n\t\t\tws['pongTime'] = new Date();\n\t\t\tws['latency'] = moment.duration(moment(ws['pongTime']).diff(ws['pingTime'])).asMilliseconds();\n\t\t\tthis._subscriptionManager.loggedInLatency(ws);\n\t\t\treturn;\n\t\t}\n\n\t\t// If the top level is not an array, let's skip\n\t\tif (!Array.isArray(socketData[0])) {\n\t\t\tconsole.log('Invalid message format (expected array of arrays)', socketData);\n\t\t\tthis.logConnectDebug('Invalid message format', {\n\t\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\t\tuser: ws ? ws['user'] : null,\n\t\t\t\tpreview: Array.isArray(socketData) ? socketData.slice(0, 3) : socketData\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle each sub-message\n\t\tfor (let message of socketData) {\n\t\t\tawait this.handleClientMessage(ws, message);\n\t\t}\n\t}\n\n\tprivate decodeBufferPayload(buffer: Buffer): { data: any; usedBinary: boolean } {\n\t\tconst textPayload = buffer.toString('utf8');\n\n\t\tif (this.looksLikeTextPayload(textPayload)) {\n\t\t\ttry {\n\t\t\t\treturn { data: this.parseTextFallback(textPayload), usedBinary: false };\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// fall through to attempt MessagePack decode\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\treturn { data: unpack(buffer), usedBinary: true };\n\t\t}\n\t\tcatch (binaryErr) {\n\t\t\ttry {\n\t\t\t\treturn { data: this.parseTextFallback(textPayload), usedBinary: false };\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tthrow binaryErr;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseTextFallback(rawMessage: string): any {\n\t\tif (rawMessage === 'ping' || rawMessage === 'pong') {\n\t\t\treturn rawMessage;\n\t\t}\n\n\t\ttry {\n\t\t\treturn JSON.parse(rawMessage, dateReviver);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tprivate looksLikeTextPayload(text: string): boolean {\n\t\tif (!text) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst first = trimmed[0];\n\t\treturn first === '[' || first === '{' || first === '\"' || first === 'p' || first === 'P';\n\t}\n\n\tprivate resolveConnectDebug(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.WS_CONNECT_DEBUG\n\t\t\t?? process.env.CONNECT_DEBUG\n\t\t\t?? config?.['WS_CONNECT_DEBUG']\n\t\t\t?? config?.['CONNECT_DEBUG'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolvePerfDebug(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.PERF_DEBUG\n\t\t\t?? process.env.CPU_DEBUG\n\t\t\t?? config?.['PERF_DEBUG']\n\t\t\t?? config?.['CPU_DEBUG'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveCpuProfileOnStart(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_ON_START\n\t\t\t?? process.env.CPU_PROFILE_START\n\t\t\t?? config?.['CPU_PROFILE_ON_START']\n\t\t\t?? config?.['CPU_PROFILE_START'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveCpuProfileAuto(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_AUTO\n\t\t\t?? config?.['CPU_PROFILE_AUTO'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveCpuProfileDurationMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_DURATION_MS\n\t\t\t?? process.env.PERF_PROFILE_DURATION_MS\n\t\t\t?? config?.['CPU_PROFILE_DURATION_MS']\n\t\t\t?? config?.['PERF_PROFILE_DURATION_MS'];\n\t\treturn this.parsePositiveInt(raw, this._cpuProfileDurationMs);\n\t}\n\n\tprivate resolveCpuProfileThresholdPct(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_THRESHOLD_PCT\n\t\t\t?? process.env.PERF_PROFILE_THRESHOLD_PCT\n\t\t\t?? config?.['CPU_PROFILE_THRESHOLD_PCT']\n\t\t\t?? config?.['PERF_PROFILE_THRESHOLD_PCT'];\n\t\treturn this.parsePositiveFloat(raw, this._cpuProfileThresholdPct);\n\t}\n\n\tprivate resolveCpuProfileTriggerCount(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_TRIGGER_COUNT\n\t\t\t?? config?.['CPU_PROFILE_TRIGGER_COUNT'];\n\t\treturn this.parsePositiveInt(raw, this._cpuProfileTriggerCount);\n\t}\n\n\tprivate resolveCpuProfileDir(): string | null {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.CPU_PROFILE_DIR\n\t\t\t?? config?.['CPU_PROFILE_DIR'];\n\t\treturn typeof raw === 'string' && raw.trim() ? raw.trim() : null;\n\t}\n\n\tprivate resolveTimerDebug(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.TIMER_DEBUG\n\t\t\t?? config?.['TIMER_DEBUG'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveTimerDebugThresholdMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.TIMER_DEBUG_THRESHOLD_MS\n\t\t\t?? config?.['TIMER_DEBUG_THRESHOLD_MS'];\n\t\treturn this.parsePositiveFloat(raw, this._timerDebugThresholdMs);\n\t}\n\n\tprivate resolveTimerDebugMinDelayMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.TIMER_DEBUG_MIN_DELAY_MS\n\t\t\t?? config?.['TIMER_DEBUG_MIN_DELAY_MS'];\n\t\treturn this.parsePositiveFloat(raw, this._timerDebugMinDelayMs);\n\t}\n\n\tprivate resolveTimerDebugSampleRate(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.TIMER_DEBUG_SAMPLE_RATE\n\t\t\t?? config?.['TIMER_DEBUG_SAMPLE_RATE'];\n\t\tconst parsed = parseFloat(raw ?? '');\n\t\tif (Number.isFinite(parsed) && parsed > 0 && parsed <= 1) {\n\t\t\treturn parsed;\n\t\t}\n\t\treturn this._timerDebugSampleRate;\n\t}\n\n\tprivate resolveTimerDebugLogLimit(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.TIMER_DEBUG_LOG_LIMIT\n\t\t\t?? config?.['TIMER_DEBUG_LOG_LIMIT'];\n\t\treturn this.parsePositiveInt(raw, this._timerDebugLogLimit);\n\t}\n\n\tprivate resolveStandaloneNodeReaperEnabled(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_ENABLED\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_ENABLED\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_ENABLED']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_ENABLED'];\n\t\tconst configured = this.parseOptionalBoolean(raw);\n\t\tif (configured !== null) {\n\t\t\treturn configured;\n\t\t}\n\n\t\treturn this.isPm2ManagedRuntime() && !this.isLocalRuntime();\n\t}\n\n\tprivate resolveStandaloneNodeReaperIntervalMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_INTERVAL_MS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_INTERVAL_MS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_INTERVAL_MS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_INTERVAL_MS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperIntervalMs);\n\t}\n\n\tprivate resolveStandaloneNodeReaperMinAgeSeconds(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_MIN_AGE_SECONDS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_MIN_AGE_SECONDS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_MIN_AGE_SECONDS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_MIN_AGE_SECONDS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperMinAgeSeconds);\n\t}\n\n\tprivate resolveStandaloneNodeReaperMaxKillsPerSignature(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_MAX_KILLS_PER_SIGNATURE\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_MAX_KILLS_PER_SIGNATURE\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_MAX_KILLS_PER_SIGNATURE']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_MAX_KILLS_PER_SIGNATURE'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperMaxKillsPerSignature);\n\t}\n\n\tprivate resolveStandaloneNodeReaperKillWindowMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_KILL_WINDOW_MS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_KILL_WINDOW_MS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_KILL_WINDOW_MS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_KILL_WINDOW_MS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperKillWindowMs);\n\t}\n\n\tprivate resolveStandaloneNodeReaperIncludeSystemdServices(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_INCLUDE_SYSTEMD_SERVICES\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_INCLUDE_SYSTEMD_SERVICES\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_INCLUDE_SYSTEMD_SERVICES']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_INCLUDE_SYSTEMD_SERVICES'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveStandaloneNodeReaperHighCpuPct(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_CPU_PCT\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_HIGH_CPU_PCT\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_CPU_PCT']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_HIGH_CPU_PCT'];\n\t\treturn this.parsePositiveFloat(raw, this._standaloneNodeReaperHighCpuPct);\n\t}\n\n\tprivate resolveStandaloneNodeReaperHighRssMb(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_RSS_MB\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_HIGH_RSS_MB\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_RSS_MB']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_HIGH_RSS_MB'];\n\t\treturn this.parsePositiveFloat(raw, this._standaloneNodeReaperHighRssMb);\n\t}\n\n\tprivate resolveStandaloneNodeReaperHighMinAgeSeconds(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_MIN_AGE_SECONDS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_HIGH_MIN_AGE_SECONDS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_MIN_AGE_SECONDS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_HIGH_MIN_AGE_SECONDS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperHighMinAgeSeconds);\n\t}\n\n\tprivate resolveStandaloneNodeReaperHighConsecutiveScans(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_CONSECUTIVE_SCANS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_HIGH_CONSECUTIVE_SCANS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_HIGH_CONSECUTIVE_SCANS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_HIGH_CONSECUTIVE_SCANS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperHighConsecutiveScans);\n\t}\n\n\tprivate resolveStandaloneNodeReaperDryRun(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_DRY_RUN\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_DRY_RUN\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_DRY_RUN']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_DRY_RUN'];\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveStandaloneNodeReaperAlertWindowMs(): number {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst raw = process.env.RESOLVEIO_STANDALONE_NODE_REAPER_ALERT_WINDOW_MS\n\t\t\t?? process.env.STANDALONE_NODE_REAPER_ALERT_WINDOW_MS\n\t\t\t?? config?.['RESOLVEIO_STANDALONE_NODE_REAPER_ALERT_WINDOW_MS']\n\t\t\t?? config?.['STANDALONE_NODE_REAPER_ALERT_WINDOW_MS'];\n\t\treturn this.parsePositiveInt(raw, this._standaloneNodeReaperAlertWindowMs);\n\t}\n\n\tprivate isPm2ManagedRuntime(): boolean {\n\t\treturn Boolean(\n\t\t\tprocess.env.pm_id\n\t\t\t|| process.env.PM2_HOME\n\t\t\t|| process.env.NODE_APP_INSTANCE\n\t\t\t|| `${process.env._ || ''}`.includes('pm2')\n\t\t);\n\t}\n\n\tprivate isPrimaryPm2Instance(): boolean {\n\t\tconst appInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE);\n\t\treturn !appInstance || appInstance === '0';\n\t}\n\n\tprivate isLocalRuntime(): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig ? ResolveIOServer.getServerConfig() : null;\n\t\tconst rootUrl = `${process.env.ROOT_URL || config?.['ROOT_URL'] || ''}`.trim().toLowerCase();\n\t\tconst serverUrl = `${process.env.SERVER_URL || config?.['SERVER_URL'] || ''}`.trim().toLowerCase();\n\t\treturn rootUrl.includes('localhost') || rootUrl.includes('127.0.0.1') || serverUrl.includes('localhost') || serverUrl.includes('127.0.0.1');\n\t}\n\n\tprivate normalizeWorkerSelectorValue(value?: string | number | null): string | null {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalized = String(value).trim();\n\t\treturn normalized.length ? normalized : null;\n\t}\n\n\tprivate shouldStartCronManagerForWorker(): boolean {\n\t\tconst workerIndex = this.normalizeWorkerSelectorValue(process.env.WORKER_INDEX);\n\t\tconst workerInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE) || '0';\n\t\tconst hasExplicitServerManagerOwner = process.env.SERVER_MANAGER_WORKER_INDEX !== undefined\n\t\t\t|| process.env.SERVER_MANAGER_WORKER_INSTANCE !== undefined\n\t\t\t|| process.env.SERVER_MANAGER_NODE_APP_INSTANCE !== undefined;\n\n\t\tif (!hasExplicitServerManagerOwner) {\n\t\t\treturn workerIndex === '0';\n\t\t}\n\n\t\tconst serverManagerWorkerIndex = this.normalizeWorkerSelectorValue(process.env.SERVER_MANAGER_WORKER_INDEX) || '0';\n\t\tconst serverManagerWorkerInstance = this.normalizeWorkerSelectorValue(\n\t\t\tprocess.env.SERVER_MANAGER_WORKER_INSTANCE || process.env.SERVER_MANAGER_NODE_APP_INSTANCE\n\t\t) || '0';\n\n\t\treturn workerIndex === serverManagerWorkerIndex && workerInstance === serverManagerWorkerInstance;\n\t}\n\n\tprivate parseWorkerSelector(value: any): Set<string> | null {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst raw = Array.isArray(value) ? value.join(',') : String(value);\n\t\tconst parts = raw.split(',').map(part => part.trim()).filter(Boolean);\n\t\tif (!parts.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Set(parts);\n\t}\n\n\tprivate workerMatchesSelector(\n\t\tworkerIndex: string | null,\n\t\tworkerInstance: string | null,\n\t\tindexes: Set<string> | null,\n\t\tinstances: Set<string> | null\n\t): boolean {\n\t\tif (!indexes && !instances) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst indexMatch = indexes ? (workerIndex ? indexes.has(workerIndex) : false) : true;\n\t\tconst instanceMatch = instances ? (workerInstance ? instances.has(workerInstance) : false) : true;\n\t\treturn indexMatch && instanceMatch;\n\t}\n\n\tprivate resolveWorkerRole(): 'Codex' | 'Subscription' | 'Other' {\n\t\tconst workerIndex = this.normalizeWorkerSelectorValue(process.env.WORKER_INDEX);\n\t\tconst workerInstance = this.normalizeWorkerSelectorValue(process.env.NODE_APP_INSTANCE);\n\t\tconst publicationIndexes = this.parseWorkerSelector(\n\t\t\tprocess.env.PUBLICATION_WORKER_INDEX\n\t\t\t|| process.env.SUBSCRIPTION_WORKER_INDEX\n\t\t\t|| process.env.WORKER_PUBLICATION_INDEX\n\t\t);\n\t\tconst publicationInstances = this.parseWorkerSelector(\n\t\t\tprocess.env.PUBLICATION_WORKER_INSTANCE\n\t\t\t|| process.env.SUBSCRIPTION_WORKER_INSTANCE\n\t\t\t|| process.env.WORKER_PUBLICATION_INSTANCE\n\t\t);\n\t\tconst codexIndexes = this.parseWorkerSelector(\n\t\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INDEX\n\t\t\t|| process.env.CODEX_WORKER_INDEX\n\t\t\t|| process.env.WORKER_CODEX_INDEX\n\t\t);\n\t\tconst codexInstances = this.parseWorkerSelector(\n\t\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INSTANCE\n\t\t\t|| process.env.CODEX_WORKER_INSTANCE\n\t\t\t|| process.env.WORKER_CODEX_INSTANCE\n\t\t);\n\n\t\tif (this.workerMatchesSelector(workerIndex, workerInstance, publicationIndexes, publicationInstances)) {\n\t\t\treturn 'Subscription';\n\t\t}\n\n\t\tif (this.workerMatchesSelector(workerIndex, workerInstance, codexIndexes, codexInstances)) {\n\t\t\treturn 'Codex';\n\t\t}\n\n\t\treturn 'Other';\n\t}\n\n\tprivate parsePositiveInt(value: any, fallback: number): number {\n\t\tconst parsed = parseInt(value ?? '', 10);\n\t\tif (Number.isNaN(parsed) || parsed <= 0) {\n\t\t\treturn fallback;\n\t\t}\n\t\treturn parsed;\n\t}\n\n\tprivate parsePositiveFloat(value: any, fallback: number): number {\n\t\tconst parsed = parseFloat(value ?? '');\n\t\tif (Number.isNaN(parsed) || parsed <= 0) {\n\t\t\treturn fallback;\n\t\t}\n\t\treturn parsed;\n\t}\n\n\tprivate startPerfDebug(): void {\n\t\tif (!this._perfDebug || this._perfDebugTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._perfDebugIntervalMs = this.parsePositiveInt(\n\t\t\tprocess.env.PERF_DEBUG_INTERVAL_MS ?? process.env.CPU_DEBUG_INTERVAL_MS,\n\t\t\tthis._perfDebugIntervalMs\n\t\t);\n\n\t\tthis._perfDebugLastCpu = process.cpuUsage();\n\t\tthis._perfDebugLastTs = Date.now();\n\t\tthis._eventLoopHistogram = monitorEventLoopDelay({ resolution: 20 });\n\t\tthis._eventLoopHistogram.enable();\n\n\t\tthis._perfDebugTimer = setInterval(() => {\n\t\t\tconst now = Date.now();\n\t\t\tconst elapsedMs = now - this._perfDebugLastTs;\n\t\t\tconst cpuDiff = this._perfDebugLastCpu ? process.cpuUsage(this._perfDebugLastCpu) : process.cpuUsage();\n\t\t\tconst cpuMs = (cpuDiff.user + cpuDiff.system) / 1000;\n\t\t\tconst cpuPct = elapsedMs > 0 ? (cpuMs / elapsedMs) * 100 : 0;\n\n\t\t\tconst mem = process.memoryUsage();\n\t\t\tconst heapUsedMb = round((mem.heapUsed / 1024 / 1024) * 10) / 10;\n\t\t\tconst rssMb = round((mem.rss / 1024 / 1024) * 10) / 10;\n\n\t\t\tconst handles = typeof (process as any)._getActiveHandles === 'function'\n\t\t\t\t? (process as any)._getActiveHandles().length\n\t\t\t\t: null;\n\t\t\tconst requests = typeof (process as any)._getActiveRequests === 'function'\n\t\t\t\t? (process as any)._getActiveRequests().length\n\t\t\t\t: null;\n\n\t\t\tconst histogram = this._eventLoopHistogram;\n\t\t\tconst eventLoop = histogram ? {\n\t\t\t\tmeanMs: round((histogram.mean / 1e6) * 100) / 100,\n\t\t\t\tp50Ms: round((histogram.percentile(50) / 1e6) * 100) / 100,\n\t\t\t\tp95Ms: round((histogram.percentile(95) / 1e6) * 100) / 100,\n\t\t\t\tp99Ms: round((histogram.percentile(99) / 1e6) * 100) / 100,\n\t\t\t\tmaxMs: round((histogram.max / 1e6) * 100) / 100\n\t\t\t} : null;\n\t\t\thistogram?.reset();\n\n\t\t\tconsole.log(new Date(), '[Perf Debug]', JSON.stringify({\n\t\t\t\tcpuPct: round(cpuPct * 10) / 10,\n\t\t\t\tcpuMs: round(cpuMs),\n\t\t\t\telapsedMs,\n\t\t\t\teventLoop,\n\t\t\t\theapUsedMb,\n\t\t\t\trssMb,\n\t\t\t\tactiveHandles: handles,\n\t\t\t\tactiveRequests: requests,\n\t\t\t\tmsgRecv: this._debugMsgRecv,\n\t\t\t\tmsgQueue: this._debugMsgQueue\n\t\t\t}));\n\n\t\t\tif (this._cpuProfileAuto) {\n\t\t\t\tif (cpuPct >= this._cpuProfileThresholdPct) {\n\t\t\t\t\tthis._cpuProfileHighCount += 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._cpuProfileHighCount = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this._cpuProfileHighCount >= this._cpuProfileTriggerCount) {\n\t\t\t\t\tthis._cpuProfileHighCount = 0;\n\t\t\t\t\tthis.startCpuProfile('auto-high-cpu');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._perfDebugLastCpu = process.cpuUsage();\n\t\t\tthis._perfDebugLastTs = now;\n\t\t}, this._perfDebugIntervalMs);\n\t}\n\n\tprivate installTimerDebug(): void {\n\t\tif (!this._timerDebug) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst g = global as unknown as { __resolveioTimerDebugInstalled?: boolean };\n\t\tif (g.__resolveioTimerDebugInstalled) {\n\t\t\treturn;\n\t\t}\n\t\tg.__resolveioTimerDebugInstalled = true;\n\n\t\tconst originalSetTimeout = global.setTimeout;\n\t\tconst originalSetInterval = global.setInterval;\n\t\tconst thresholdMs = this._timerDebugThresholdMs;\n\t\tconst minDelayMs = this._timerDebugMinDelayMs;\n\t\tconst sampleRate = this._timerDebugSampleRate;\n\n\t\tconst shouldSample = () => sampleRate >= 1 || Math.random() <= sampleRate;\n\n\t\tconst logTimer = (type: string, durationMs: number, delayMs: number | undefined, createdStack: string | undefined) => {\n\t\t\tif (this._timerDebugLogLimit > 0 && this._timerDebugLogCount >= this._timerDebugLogLimit) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._timerDebugLogCount += 1;\n\t\t\tconst stackLines = createdStack\n\t\t\t\t? createdStack.split('\\n').slice(1, 6).map(line => line.trim()).join(' | ')\n\t\t\t\t: undefined;\n\t\t\tconsole.log(new Date(), '[Timer Debug]', JSON.stringify({\n\t\t\t\ttype,\n\t\t\t\tdurationMs: round(durationMs * 10) / 10,\n\t\t\t\tdelayMs: delayMs ?? null,\n\t\t\t\tcreatedAt: stackLines\n\t\t\t}));\n\t\t};\n\n\t\tconst wrapTimer = (handler: any, type: string, delayMs?: number) => {\n\t\t\tif (typeof handler !== 'function') {\n\t\t\t\treturn handler;\n\t\t\t}\n\n\t\t\tconst createdStack = new Error().stack;\n\t\t\tconst shouldFlagShortDelay = typeof delayMs === 'number' && delayMs <= minDelayMs;\n\n\t\t\treturn function wrappedTimer(this: any, ...args: any[]) {\n\t\t\t\tconst start = process.hrtime.bigint();\n\t\t\t\ttry {\n\t\t\t\t\treturn handler.apply(this, args);\n\t\t\t\t}\n\t\t\t\tfinally {\n\t\t\t\t\tconst elapsedMs = Number(process.hrtime.bigint() - start) / 1e6;\n\t\t\t\t\tif (shouldSample() && (elapsedMs >= thresholdMs || shouldFlagShortDelay)) {\n\t\t\t\t\t\tlogTimer(type, elapsedMs, delayMs, createdStack);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tglobal.setTimeout = ((handler: any, timeout?: number, ...args: any[]) => {\n\t\t\treturn originalSetTimeout(wrapTimer(handler, 'setTimeout', timeout), timeout as any, ...args);\n\t\t}) as typeof setTimeout;\n\n\t\tglobal.setInterval = ((handler: any, timeout?: number, ...args: any[]) => {\n\t\t\treturn originalSetInterval(wrapTimer(handler, 'setInterval', timeout), timeout as any, ...args);\n\t\t}) as typeof setInterval;\n\t}\n\n\tprivate startCpuProfile(trigger: string): void {\n\t\tif (this._cpuProfileSession) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst session = new inspector.Session();\n\t\t\tsession.connect();\n\t\t\tsession.post('Profiler.enable', () => {\n\t\t\t\tsession.post('Profiler.start', () => {\n\t\t\t\t\tthis._cpuProfileSession = session;\n\t\t\t\t\tconsole.log(new Date(), '[Perf Debug]', 'CPU profile started', trigger);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.stopCpuProfile(trigger);\n\t\t\t\t\t}, this._cpuProfileDurationMs);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), '[Perf Debug]', 'CPU profile start failed', error);\n\t\t}\n\t}\n\n\tprivate stopCpuProfile(trigger: string): void {\n\t\tconst session = this._cpuProfileSession;\n\t\tif (!session) {\n\t\t\treturn;\n\t\t}\n\n\t\tsession.post('Profiler.stop', (err, res: { profile?: unknown }) => {\n\t\t\tif (err) {\n\t\t\t\tconsole.error(new Date(), '[Perf Debug]', 'CPU profile stop failed', err);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttry {\n\t\t\t\t\tconst dir = this.resolveWritableProfileDir();\n\t\t\t\t\tconst filename = `resolveio-cpuprofile-${process.pid}-${Date.now()}.cpuprofile`;\n\t\t\t\t\tconst filePath = path.join(dir, filename);\n\t\t\t\t\tfs.writeFileSync(filePath, JSON.stringify(res?.profile ?? {}));\n\t\t\t\t\tconsole.log(new Date(), '[Perf Debug]', 'CPU profile saved', filePath, trigger);\n\t\t\t\t}\n\t\t\t\tcatch (writeErr) {\n\t\t\t\t\tconsole.error(new Date(), '[Perf Debug]', 'CPU profile write failed', writeErr);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tsession.disconnect();\n\t\t\t}\n\t\t\tcatch {}\n\n\t\t\tthis._cpuProfileSession = null;\n\t\t});\n\t}\n\n\tprivate resolveWritableProfileDir(): string {\n\t\tconst preferred = this._cpuProfileDir;\n\t\tif (preferred) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(preferred, { recursive: true });\n\t\t\t\treturn preferred;\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\n\t\treturn os.tmpdir();\n\t}\n\n\tprivate parseDebugFlag(value: any): boolean {\n\t\tif (value === true) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === false || value === null || value === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof value === 'number') {\n\t\t\treturn value === 1;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\treturn ['1', 'true', 'yes', 'y', 'on'].includes(normalized);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate parseOptionalBoolean(value: any): boolean | null {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\tconst normalized = `${value}`.trim();\n\t\tif (!normalized) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseDebugFlag(normalized);\n\t}\n\n\tprivate parseNonNegativeInt(value: any, fallback: number): number {\n\t\tconst parsed = parseInt(`${value ?? ''}`, 10);\n\t\tif (Number.isNaN(parsed) || parsed < 0) {\n\t\t\treturn fallback;\n\t\t}\n\t\treturn parsed;\n\t}\n\n\tprivate resolveSocketTier(): string {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\treturn `${process.env.AI_CODER_PLAN_TIER || config['AI_CODER_PLAN_TIER'] || ''}`.trim().toLowerCase();\n\t}\n\n\tprivate resolveSocketTierKeySuffix(planTier: string): string {\n\t\treturn `${planTier || ''}`\n\t\t\t.trim()\n\t\t\t.toUpperCase()\n\t\t\t.replace(/[^A-Z0-9]+/g, '_');\n\t}\n\n\tprivate resolveMaxClientSockets(planTier: string): number {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\tconst explicitLimit = this.parseNonNegativeInt(\n\t\t\tconfig['AI_CODER_MAX_SOCKETS'] ?? process.env.AI_CODER_MAX_SOCKETS,\n\t\t\t-1\n\t\t);\n\t\tif (explicitLimit >= 0) {\n\t\t\treturn explicitLimit;\n\t\t}\n\n\t\tconst normalizedTier = `${planTier || ''}`.trim().toLowerCase();\n\t\tconst tierKeySuffix = this.resolveSocketTierKeySuffix(normalizedTier);\n\t\tif (tierKeySuffix) {\n\t\t\tconst tierLimitKey = `AI_CODER_MAX_SOCKETS_${tierKeySuffix}`;\n\t\t\tconst tierLimit = this.parseNonNegativeInt(\n\t\t\t\tconfig[tierLimitKey] ?? process.env[tierLimitKey],\n\t\t\t\t-1\n\t\t\t);\n\t\t\tif (tierLimit >= 0) {\n\t\t\t\treturn tierLimit;\n\t\t\t}\n\t\t}\n\n\t\tconst maxUsers = this.parseNonNegativeInt(\n\t\t\tconfig['AI_CODER_MAX_USERS'] ?? process.env.AI_CODER_MAX_USERS,\n\t\t\t-1\n\t\t);\n\t\tif (maxUsers > 0) {\n\t\t\treturn maxUsers === 1 ? 1 : maxUsers * 2;\n\t\t}\n\n\t\tif (normalizedTier === 'tool') {\n\t\t\treturn 1;\n\t\t}\n\t\tif (normalizedTier === 'small') {\n\t\t\treturn 10;\n\t\t}\n\t\tif (normalizedTier === 'medium') {\n\t\t\treturn 50;\n\t\t}\n\t\tif (normalizedTier === 'large') {\n\t\t\treturn 200;\n\t\t}\n\t\tif (normalizedTier === 'enterprise') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tprivate resolveSingleIpPerUserPolicy(planTier: string): boolean {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\tconst normalizedTier = `${planTier || ''}`.trim().toLowerCase();\n\t\tconst tierKeySuffix = this.resolveSocketTierKeySuffix(normalizedTier);\n\t\tif (tierKeySuffix) {\n\t\t\tconst tierPolicyKey = `AI_CODER_SINGLE_IP_PER_USER_${tierKeySuffix}`;\n\t\t\tconst tierPolicy = this.parseOptionalBoolean(\n\t\t\t\tconfig[tierPolicyKey] ?? process.env[tierPolicyKey]\n\t\t\t);\n\t\t\tif (tierPolicy !== null) {\n\t\t\t\treturn tierPolicy;\n\t\t\t}\n\t\t}\n\n\t\tconst policy = this.parseOptionalBoolean(\n\t\t\tconfig['AI_CODER_SINGLE_IP_PER_USER'] ?? process.env.AI_CODER_SINGLE_IP_PER_USER\n\t\t);\n\t\tif (policy !== null) {\n\t\t\treturn policy;\n\t\t}\n\n\t\treturn !!normalizedTier;\n\t}\n\n\tprivate resolveSocketPolicyUpgradeUrl(): string {\n\t\tconst config = ResolveIOServer.getServerConfig() || {};\n\t\tconst direct = `${config['AI_CODER_SOCKET_UPGRADE_URL'] || process.env.AI_CODER_SOCKET_UPGRADE_URL || ''}`.trim();\n\t\tif (direct) {\n\t\t\treturn direct.replace(/\\/$/, '');\n\t\t}\n\n\t\tconst dashboard = `${config['AI_CODER_CLIENT_DASHBOARD_URL'] || process.env.AI_CODER_CLIENT_DASHBOARD_URL || ''}`.trim();\n\t\tif (dashboard) {\n\t\t\treturn dashboard.replace(/\\/$/, '');\n\t\t}\n\n\t\tconst root = `${config['AI_CODER_ROOT_URL'] || process.env.AI_CODER_ROOT_URL || config['ROOT_URL'] || process.env.ROOT_URL || ''}`.trim();\n\t\tif (!root) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn `${root.replace(/\\/$/, '')}/dashboard/client`;\n\t}\n\n\tprivate resolveSocketUpgradeUrlWithAppId(): string {\n\t\tconst base = `${this._socketPolicyUpgradeUrl || ''}`.trim();\n\t\tif (!base) {\n\t\t\treturn '';\n\t\t}\n\t\tconst appId = `${process.env.AI_CODER_APP_ID || ''}`.trim();\n\t\tif (!appId) {\n\t\t\treturn base;\n\t\t}\n\t\tconst separator = base.includes('?') ? '&' : '?';\n\t\treturn `${base}${separator}appId=${encodeURIComponent(appId)}`;\n\t}\n\n\tprivate normalizeIpAddress(value: any): string {\n\t\tlet ip = `${value || ''}`.trim();\n\t\tif (!ip) {\n\t\t\treturn '';\n\t\t}\n\t\tif (ip.includes(',')) {\n\t\t\tip = ip.split(',')[0].trim();\n\t\t}\n\t\tif (ip.startsWith('::ffff:')) {\n\t\t\tip = ip.slice(7);\n\t\t}\n\t\tif (/^\\d+\\.\\d+\\.\\d+\\.\\d+:\\d+$/.test(ip)) {\n\t\t\tip = ip.split(':')[0].trim();\n\t\t}\n\t\tif (ip === '::1') {\n\t\t\treturn '127.0.0.1';\n\t\t}\n\t\treturn ip.toLowerCase();\n\t}\n\n\tprivate resolveClientIp(req: any): string {\n\t\tconst forwardedFor = this.normalizeHeaderValue(req?.headers?.['x-forwarded-for']);\n\t\tif (forwardedFor) {\n\t\t\treturn this.normalizeIpAddress(forwardedFor);\n\t\t}\n\t\tconst realIp = this.normalizeHeaderValue(req?.headers?.['x-real-ip']);\n\t\tif (realIp) {\n\t\t\treturn this.normalizeIpAddress(realIp);\n\t\t}\n\t\tconst socketIp = req?.socket?.remoteAddress || req?.connection?.remoteAddress || req?.ip || '';\n\t\treturn this.normalizeIpAddress(socketIp);\n\t}\n\n\tprivate buildSocketLimitMessage(activeSockets: number): string {\n\t\tconst tierLabel = this._socketTier ? this._socketTier[0].toUpperCase() + this._socketTier.slice(1) : 'Current';\n\t\tconst upgradeUrl = this.resolveSocketUpgradeUrlWithAppId();\n\t\tconst base = `Socket connection limit reached (${activeSockets}/${this._maxClientSockets}) for the ${tierLabel} tier.`;\n\t\tif (!upgradeUrl) {\n\t\t\treturn `${base} Upgrade to increase capacity.`;\n\t\t}\n\t\treturn `${base} Upgrade at ${upgradeUrl}.`;\n\t}\n\n\tprivate buildSocketLimitCloseReason(): string {\n\t\treturn `Socket limit reached (${this._maxClientSockets})`;\n\t}\n\n\tprivate async disconnectUserSocketsFromDifferentIps(idUser: string, incomingIp: string): Promise<number> {\n\t\tif (!this._websocketManager) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst normalizedUser = `${idUser || ''}`.trim();\n\t\tconst normalizedIncomingIp = this.normalizeIpAddress(incomingIp);\n\t\tif (!normalizedUser || !normalizedIncomingIp) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst userSockets = this._websocketManager.getUserWebSockets(normalizedUser);\n\t\tlet disconnected = 0;\n\t\tfor (const existingSocket of userSockets) {\n\t\t\tconst existingIp = this.normalizeIpAddress(existingSocket?.['client_ip']);\n\t\t\tif (!existingIp || existingIp === normalizedIncomingIp) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.logConnectDebug('WS single-ip enforcement disconnect', {\n\t\t\t\tid_socket: existingSocket?.['id_socket'],\n\t\t\t\tid_user: normalizedUser,\n\t\t\t\texistingIp,\n\t\t\t\tincomingIp: normalizedIncomingIp\n\t\t\t});\n\n\t\t\tawait this.unsubscribeWS(existingSocket);\n\t\t\tif (existingSocket.readyState === WebSocket.OPEN || existingSocket.readyState === WebSocket.CONNECTING) {\n\t\t\t\ttry {\n\t\t\t\t\texistingSocket.close(1008, 'Signed in from another IP');\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tdisconnected += 1;\n\t\t}\n\n\t\treturn disconnected;\n\t}\n\n\tprivate async evaluateClientSocketAdmission(idUser: string, req: any): Promise<{ allowed: boolean, statusCode: number, message: string, clientIp: string }> {\n\t\tconst normalizedUser = `${idUser || ''}`.trim();\n\t\tconst clientIp = this.resolveClientIp(req);\n\n\t\tif (this._singleIpPerUser) {\n\t\t\tawait this.disconnectUserSocketsFromDifferentIps(normalizedUser, clientIp);\n\t\t}\n\n\t\tif (this._maxClientSockets > 0 && this._websocketManager) {\n\t\t\tconst activeSockets = this._websocketManager.getActiveWebSocketCount();\n\t\t\tif (activeSockets >= this._maxClientSockets) {\n\t\t\t\tconst message = this.buildSocketLimitMessage(activeSockets);\n\t\t\t\tthis.logConnectDebug('WS socket limit blocked', {\n\t\t\t\t\tid_user: normalizedUser,\n\t\t\t\t\tclientIp,\n\t\t\t\t\tactiveSockets,\n\t\t\t\t\tmaxClientSockets: this._maxClientSockets\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\tstatusCode: 429,\n\t\t\t\t\tmessage,\n\t\t\t\t\tclientIp\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tallowed: true,\n\t\t\tstatusCode: 200,\n\t\t\tmessage: '',\n\t\t\tclientIp\n\t\t};\n\t}\n\n\tprivate logConnectDebug(message: string, details?: Record<string, unknown>): void {\n\t\tif (!this._wsConnectDebug) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (details) {\n\t\t\tconsole.log(new Date(), '[Connect Debug]', message, JSON.stringify(details));\n\t\t}\n\t\telse {\n\t\t\tconsole.log(new Date(), '[Connect Debug]', message);\n\t\t}\n\t}\n\n\tprivate async triggerClientHeartbeat(ws: WebSocket): Promise<void> {\n\t\tif (!ws || ws.readyState !== WebSocket.OPEN) {\n\t\t\treturn;\n\t\t}\n\n\t\tws['pingTime'] = new Date();\n\n\t\ttry {\n\t\t\tif (typeof ws.ping === 'function') {\n\t\t\t\tws.ping();\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tif (this._methodManager?.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Server App', 'Error WS Ping Frame', err);\n\t\t\t}\n\t\t\tawait this.unsubscribeWS(ws);\n\t\t\treturn;\n\t\t}\n\n\t\tws.send('ping', async (error) => {\n\t\t\tif (error) {\n\t\t\t\tif (this._methodManager?.getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'Server App', 'Error WS Ping');\n\t\t\t\t}\n\t\t\t\tawait this.unsubscribeWS(ws);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate shouldDeferHeartbeat(ws: WebSocket): boolean {\n\t\tif (!ws || ws.readyState !== WebSocket.OPEN) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst bufferedAmount = typeof ws.bufferedAmount === 'number' ? ws.bufferedAmount : 0;\n\t\treturn bufferedAmount >= this._clientHeartbeatBackpressureBytes;\n\t}\n\n\tprivate async handleClientMessage(ws: WebSocket, msg: any[]): Promise<void> {\n\t\t// This is basically your old logic from processSocketMessage,\n\t\t// but we'll insert our worker-queue logic for \"method\" calls.\n\t\ttry {\n\t\t\tlet messageRoute = msg[0];\n\t\t\tlet messageDate = msg[1];\n\t\t\tlet messageId = msg[2];\n\t\t\tlet type = msg[3];\n\n\t\t\tif (!this.publicProgram && this._clientRoutes.some(a => messageRoute.includes(a)) && !ws['doc_user'].roles.groups.some(a => a.views.some(b => messageRoute.includes(b) || b.includes(messageRoute))) && !ws['doc_user'].roles.super_admin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (type === 'subscription') {\n\t\t\t\tlet subType = msg[4];\n\t\t\t\tlet pub = msg[5];\n\t\t\t\tthis.logConnectDebug('Subscription message', {\n\t\t\t\t\tsubType,\n\t\t\t\t\tpublication: pub,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tmessageRoute,\n\t\t\t\t\targs: Math.max(0, msg.length - 6),\n\t\t\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\t\t\tuser: ws ? ws['user'] : null\n\t\t\t\t});\n\n\t\t\t\tif (subType === 'sub') {\n\t\t\t\t\tawait this._subscriptionManager.subscribe(messageRoute, messageDate, ws, messageId, pub, msg.slice(6));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._subscriptionManager.unsubscribe(messageRoute, messageDate, ws, messageId, pub, msg.slice(6));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!this.publicProgram && type === 'offline') {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: 'ACK'\n\t\t\t\t};\n\n\t\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\tthis._websocketManager.send(ws, serverRes);\n\t\t\t\t}\n\n\t\t\t\tthis._offlineUpdates.push(ws);\n\t\t\t\tlet offlineUpdates = msg[4];\n\n\t\t\t\tfor (let i = 0; i < offlineUpdates.length; i++) {\n\t\t\t\t\tlet update = offlineUpdates[i];\n\n\t\t\t\t\tlet data = update.data;\n\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\t\tlet updateRoute = data.shift();\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\t\tlet updateDate = data.shift();\n\t\t\t\t\tlet updateMessageId = data.shift();\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\t\tlet updateType = data.shift();\n\t\t\t\t\tlet method = data.shift();\n\n\t\t\t\t\tlet serverResMethod: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: updateMessageId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: 'ACK'\n\t\t\t\t\t};\n\n\t\t\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\tthis._websocketManager.send(ws, serverResMethod);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (method === 'insertDocument' && data[0] === 'driver-gps') {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (shouldWriteClientRequestLog(method)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([data])) < 1000000 ? JSON.stringify([data], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([data])) < 1000000 ? JSON.stringify([data], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0'\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._methodManager._methods[method]) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this._methodManager.callMethod.call(Object.assign({}, this._methodManager, MethodManager.prototype, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), method, ...data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(new Date(), 'Offline Error', JSON.stringify(err, null, 2));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (method === 'updateDocumentOffline' || method === 'updateDocumentPropsOffline') {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(data[0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.log('Offline - Could not find method: ' + method);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._offlineUpdates.splice(this._offlineUpdates.map(a => a['id_socket']).indexOf(ws['id_socket']), 1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// It's presumably a 'method' or something else\n\t\t\t\tlet dataCopy = [...msg];\n\n\t\t\t\tdataCopy.shift();\n\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\tlet date = dataCopy.shift();\n\t\t\t\tlet msgId = dataCopy.shift();\n\t\t\t\tlet msgType = dataCopy.shift();\n\t\t\t\t\n\t\t\t\tif (msgType === 'method') {\n\t\t\t\t\tlet methodName = dataCopy.shift();\n\n\t\t\t\t\tif (ws['user_readonly']) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shouldWriteClientRequestLog(methodName)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tResolveIOServer.shouldWriteLogsOffline()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tResolveIOServer.getLocalLogManager().writeLog({\n\t\t\t\t\t\t\t\ttype: 'log',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([dataCopy])) < 1000000 ? JSON.stringify([dataCopy], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait Logs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([dataCopy])) < 1000000 ? JSON.stringify([dataCopy], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\t\tid_user: ws['id_user'] || '',\n\t\t\t\t\t\t\t\tuser: ws['user'] || '',\n\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\tclient: 'ResolveIO',\n\t\t\t\t\t\t\t\tinstance: ResolveIOServer.getInstanceHost(),\n\t\t\t\t\t\t\t\tinstance_index: process.env.NODE_APP_INSTANCE || '0'\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// Immediately ACK\n\t\t\t\t\tlet ack: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: msgId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: 'ACK'\n\t\t\t\t\t};\n\n\t\t\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\tthis._websocketManager.send(ws, ack);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet method = this._methodManager.getMethod(methodName);\n\t\t\t\t\tconst forceWorker = this._isWorkersEnabled && !!method?.forceWorker;\n\t\t\t\t\tconst targetWorkerIndex = this._isWorkersEnabled && method ? method.targetWorkerIndex : null;\n\t\t\t\t\tconst targetWorkerInstance = this._isWorkersEnabled && method ? method.targetWorkerInstance : null;\n\t\t\t\t\tconst hasWorkerForMethod = this._workerDispatcherManager ? this._workerDispatcherManager.hasWorkersForMethod(methodName) : false;\n\t\t\t\t\tconst isAiCodex = methodName === 'aiCoderTerminalRunCodex' || methodName === 'aiCoderAppRunCodex';\n\t\t\t\t\tconst isExcludedFromWorker = (\n\t\t\t\t\t\tmethodName === 'find' ||\n\t\t\t\t\t\tmethodName === 'insertDocument' ||\n\t\t\t\t\t\tmethodName === 'countWithQuery' ||\n\t\t\t\t\t\tmethodName === 'findOne' ||\n\t\t\t\t\t\tmethodName === 'updateDocumentProps' ||\n\t\t\t\t\t\tmethodName === 'findWithOptions' ||\n\t\t\t\t\t\tmethodName === 'updateDocument' ||\n\t\t\t\t\t\tmethodName === 'insertErrorLog' ||\n\t\t\t\t\t\tmethodName === 'removeDocument' ||\n\t\t\t\t\t\tmethodName === 'supportCreateBillingUser' ||\n\t\t\t\t\t\tmethodName === 'getSignedUrl' ||\n\t\t\t\t\t\tmethodName === 'getSignedUrls' ||\n\t\t\t\t\t\tmethodName === 'getSignedUrlWithId' ||\n\t\t\t\t\t\tmethodName === 'incorrectUser' ||\n\t\t\t\t\t\tmethodName === 'reloadWS' ||\n\t\t\t\t\t\tmethodName === 'reconnectWS' ||\n\t\t\t\t\t\tmethodName === 'disconnectWS'\n\t\t\t\t\t);\n\n\t\t\t\t\tif ((targetWorkerIndex || targetWorkerInstance || forceWorker) && this._isWorkersEnabled && !hasWorkerForMethod && this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.warn(new Date(), '[WorkerDispatcher] Worker unavailable, running method locally', {\n\t\t\t\t\t\t\tmethod: methodName,\n\t\t\t\t\t\t\ttargetWorkerIndex: targetWorkerIndex || null,\n\t\t\t\t\t\t\ttargetWorkerInstance: targetWorkerInstance || null,\n\t\t\t\t\t\t\tforceWorker\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst shouldDispatchToWorker = (\n\t\t\t\t\t\tmethod &&\n\t\t\t\t\t\t!method.skipWorker &&\n\t\t\t\t\t\tthis._isWorkersEnabled &&\n\t\t\t\t\t\tthis._workerDispatcherManager &&\n\t\t\t\t\t\thasWorkerForMethod &&\n\t\t\t\t\t\t(forceWorker || !isExcludedFromWorker)\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isAiCodex && this._aiWorkerDebug) {\n\t\t\t\t\t\tconst queueSnapshot = this._workerDispatcherManager ? this._workerDispatcherManager.getQueueSnapshot() : null;\n\t\t\t\t\t\tconsole.log(new Date(), '[AI Worker Debug] dispatch check', {\n\t\t\t\t\t\t\tisWorkersEnabled: this._isWorkersEnabled,\n\t\t\t\t\t\t\tisWorkerInstance: this._isWorkerInstance,\n\t\t\t\t\t\t\tforceWorker,\n\t\t\t\t\t\t\thasWorkerForMethod,\n\t\t\t\t\t\t\ttargetWorkerIndex: targetWorkerIndex || null,\n\t\t\t\t\t\t\ttargetWorkerInstance: targetWorkerInstance || null,\n\t\t\t\t\t\t\tshouldDispatchToWorker,\n\t\t\t\t\t\t\tqueueSnapshot\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shouldDispatchToWorker) {\n\t\t\t\t\t\tthis._workerDispatcherManager.sendClientTask(msgId, methodName, dataCopy, {\n\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\tid_ws: ws['id_socket']\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// No worker available: do method locally\n\t\t\t\t\t\tif (methodName === 'aiCoderTerminalRunCodex' || methodName === 'aiCoderAppRunCodex') {\n\t\t\t\t\t\t\tif (this._aiWorkerDebug) {\n\t\t\t\t\t\t\t\tconsole.warn(new Date(), '[AI Worker Debug] AI execution running locally', {\n\t\t\t\t\t\t\t\t\tisWorkersEnabled: this._isWorkersEnabled,\n\t\t\t\t\t\t\t\t\tisWorkerInstance: this._isWorkerInstance,\n\t\t\t\t\t\t\t\t\ttargetWorkerIndex: targetWorkerIndex || null,\n\t\t\t\t\t\t\t\t\ttargetWorkerInstance: targetWorkerInstance || null,\n\t\t\t\t\t\t\t\t\thasWorkerForMethod\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.callMethodLocally(ws, msgId, methodName, dataCopy);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.error(new Date(), 'AI execution run failed:', error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this.callMethodLocally(ws, msgId, methodName, dataCopy);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t/**\n\t * callMethodLocally is your old approach for invoking the method in-process.\n\t */\n\tprivate async callMethodLocally(ws: WebSocket, messageId: number, method: string, params: any[]) {\n\t\tlet serverRes: ServerResponseModel = {\n\t\t\tmessageId: messageId,\n\t\t\thasError: false,\n\t\t\tdata: null\n\t\t};\n\t\ttry {\n\t\t\t// You can keep your logging code (LogMethodLatencies, Logs.insertOne, etc.)\n\t\t\tlet result = await this._methodManager.callMethod.call(\n\t\t\t\tObject.assign({}, this._methodManager, MethodManager.prototype, {\n\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\tid_ws: ws['id_socket']\n\t\t\t\t}),\n\t\t\t\tmethod,\n\t\t\t\t...params\n\t\t\t);\n\n\t\t\tserverRes.data = result;\n\t\t\tif (this._aiWorkerDebug && typeof method === 'string' && method.startsWith('ai')) {\n\t\t\t\tlet resultBytes: number | null = null;\n\t\t\t\ttry {\n\t\t\t\t\tresultBytes = Buffer.byteLength(JSON.stringify(result));\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tresultBytes = null;\n\t\t\t\t}\n\t\t\t\tconsole.log(new Date(), '[AI Worker Debug] local method result', {\n\t\t\t\t\tmethod,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\t\t\tid_user: ws ? ws['id_user'] : null,\n\t\t\t\t\tresultBytes\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tserverRes.hasError = true;\n\t\t\tserverRes.data = err || 'Unknown error';\n\t\t}\n\n\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\tthis._websocketManager.send(ws, serverRes);\n\t\t}\n\t}\n\n\t\n\n\t/**\n\t * Cleanly remove a client from the subscription manager, etc.\n\t */\n\tpublic async unsubscribeWS(ws: WebSocket) {\n\t\tif (this._subscriptionManager && this._methodManager.getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Server App', 'Unsub WS', ws['user'], ws['id_socket']);\n\t\t}\n\t\tthis.logConnectDebug('WS unsubscribe', {\n\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\tid_user: ws ? ws['id_user'] : null,\n\t\t\tuser: ws ? ws['user'] : null\n\t\t});\n\t\tawait this._subscriptionManager.unsubscribeAll(ws);\n\t\tws.removeAllListeners();\n\t\tws = null;\n\t}\n\n\tpublic getApp() {\n\t\treturn this._app;\n\t}\n\n\tpublic getServerConfig() {\n\t\treturn ResolveIOServer.getServerConfig();\n\t}\n\n\tpublic getWorkerDispatcherManager() {\n\t\treturn this._workerDispatcherManager;\n\t}\n\n\tpublic getWorkerServerManager() {\n\t\treturn this._workerServerManager;\n\t}\n}\n"]}
|