@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/managers/worker-dispatcher.manager.ts"],"names":[],"mappings":"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","file":"worker-dispatcher.manager.js","sourcesContent":["import * as WebSocket from 'ws';\nimport { ServerResponseModel, TaskPayload, TaskResponse } from '../models/server-message.model';\nimport { dateReviver, objectIdHexString, round } from '../util/common';\nimport { MethodManager } from './method.manager';\nimport { WebSocketManager } from './websocket.manager';\nimport { pack, unpack } from 'msgpackr';\n\nexport interface WorkerConnection {\n\tid: string;\n\tws: WebSocket.WebSocket;\n\tactiveTasks: {\n\t\ttaskId: string;\n\t\tweight: number;\n\t\tmethod?: string;\n\t\tstartedAt?: number;\n\t\tmessageId?: number;\n\t\tuserContext?: { id_user?: string; user?: string; id_ws?: string };\n\t}[];\n\tworkerIndex?: string;\n\tworkerInstance?: string;\n}\n\ninterface PendingTask {\n\ttimeout: NodeJS.Timeout;\n\tpromise?: {\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tresolve: (value: any) => void;\n\t\t// eslint-disable-next-line no-unused-vars\n\t\treject: (reason?: any) => void;\n\t};\n\tmethod?: string;\n\tresolveRaw?: boolean;\n}\n\n// eslint-disable-next-line no-unused-vars\ntype TaskMatcher = (task: TaskPayload) => boolean;\n\nexport class WorkerDispatcherManager {\n\tprivate _websocketManager: WebSocketManager;\n\tprivate _methodManager: MethodManager;\n\tprivate _workers: WorkerConnection[] = [];\n\tprivate _taskQueue: TaskPayload[] = [];\n\tprivate _clientRequests: { [taskId: string]: string } = {};\n\tprivate _pendingTasks: Map<string, PendingTask> = new Map();\n\tprivate _debugNoWorkerTaskIds: Set<string> = new Set();\n\tprivate _debugCodexTaskIds: Set<string> = new Set();\n\tprivate _taskTimings: Map<string, {\n\t\tqueuedAt: number;\n\t\tdispatchedAt?: number;\n\t\tmethod?: string;\n\t\tmessageId?: number;\n\t\tuserContext?: { id_user?: string; user?: string; id_ws?: string };\n\t\tparams?: any[];\n\t}> = new Map();\n\tprivate _dispatchRetryTimer: NodeJS.Timeout | null = null;\n\tprivate _dispatchRetryDelayMs = 25;\n\tprivate _nonCodexReserve = 0;\n\tprivate _publicationWorkerIndexes: Set<string> | null = null;\n\tprivate _publicationWorkerInstances: Set<string> | null = null;\n\tprivate _codexWorkerIndexes: Set<string> | null = null;\n\tprivate _codexWorkerInstances: Set<string> | null = null;\n\n\tprivate MAX_CONCURRENCY = 10;\n\tprivate WORKER_TASK_LOG_THRESHOLD_MS = 200;\n\tprivate WORKER_PUBLICATION_SLOW_MS = 20000;\n\tprivate _workerTaskDebug = false;\n\tprivate _aiWorkerDebug = false;\n\n\tconstructor() {}\n\n\tstatic create(websocketManager: WebSocketManager, methodManager: MethodManager) {\n\t\tconst workerDispatcherManager = new WorkerDispatcherManager();\n\t\tworkerDispatcherManager.initialize(websocketManager, methodManager);\n\t\treturn workerDispatcherManager;\n\t}\n\n\tpublic initialize(websocketManager: WebSocketManager, methodManager: MethodManager) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._methodManager = methodManager;\n\t\tthis._workerTaskDebug = this.parseDebugFlag(process.env.WORKER_TASK_DEBUG ?? process.env.WORKER_DISPATCH_DEBUG);\n\t\tthis._aiWorkerDebug = this.parseDebugFlag(process.env.AI_ASSISTANT_WORKER_DEBUG);\n\t\tconst slowPublicationMs = parseInt(process.env.WORKER_PUBLICATION_SLOW_MS ?? '', 10);\n\t\tif (!Number.isNaN(slowPublicationMs) && slowPublicationMs > 0) {\n\t\t\tthis.WORKER_PUBLICATION_SLOW_MS = slowPublicationMs;\n\t\t}\n\t\tthis._nonCodexReserve = this.parsePositiveInt(\n\t\t\tprocess.env.WORKER_NON_CODEX_RESERVE ?? process.env.WORKER_RESERVED_SLOTS,\n\t\t\t0\n\t\t);\n\t\tthis._publicationWorkerIndexes = 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\tthis._publicationWorkerInstances = 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\tthis._codexWorkerIndexes = 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\tthis._codexWorkerInstances = 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\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 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 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 parts: string[] = [];\n\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const item of value) {\n\t\t\t\tconst entry = String(item ?? '').split(',');\n\t\t\t\tfor (const chunk of entry) {\n\t\t\t\t\tconst trimmed = String(chunk ?? '').trim();\n\t\t\t\t\tif (trimmed) {\n\t\t\t\t\t\tparts.push(trimmed);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst entry = String(value ?? '').split(',');\n\t\t\tfor (const chunk of entry) {\n\t\t\t\tconst trimmed = String(chunk ?? '').trim();\n\t\t\t\tif (trimmed) {\n\t\t\t\t\tparts.push(trimmed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\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 selectorToArray(value: Set<string> | null): string[] | null {\n\t\tif (!value) {\n\t\t\treturn null;\n\t\t}\n\t\treturn Array.from(value.values());\n\t}\n\n\tprivate hasWorkerSelector(indexes: Set<string> | null, instances: Set<string> | null): boolean {\n\t\treturn !!(indexes && indexes.size) || !!(instances && instances.size);\n\t}\n\n\tprivate workerMatchesSelector(worker: WorkerConnection, indexes: Set<string> | null, instances: Set<string> | null): boolean {\n\t\tif (!this.hasWorkerSelector(indexes, instances)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst normalizedIndex = this.normalizeWorkerIndex(worker.workerIndex);\n\t\tconst normalizedInstance = this.normalizeWorkerIndex(worker.workerInstance);\n\t\tconst indexMatch = indexes ? (normalizedIndex ? indexes.has(normalizedIndex) : false) : true;\n\t\tconst instanceMatch = instances ? (normalizedInstance ? instances.has(normalizedInstance) : false) : true;\n\n\t\treturn indexMatch && instanceMatch;\n\t}\n\n\tprivate resolveTaskQueue(methodName: string): 'publication' | 'codex' | 'default' {\n\t\tconst method = this._methodManager?.getMethod(methodName);\n\t\tconst queue = method?.workerQueue;\n\t\tif (queue === 'publication' || queue === 'codex') {\n\t\t\treturn queue;\n\t\t}\n\t\treturn 'default';\n\t}\n\n\tprivate summarizePublicationValue(value: any): any {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst valueType = typeof value;\n\t\tif (valueType === 'string' || valueType === 'number' || valueType === 'boolean') {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn `[Array(${value.length})]`;\n\t\t}\n\n\t\tif (valueType === 'object') {\n\t\t\treturn `[Object keys=${Object.keys(value).length}]`;\n\t\t}\n\n\t\treturn `[${valueType}]`;\n\t}\n\n\tprivate getPublicationLogInfo(method?: string, params?: any[]): Record<string, any> | null {\n\t\tif (method !== 'runPublication' || !Array.isArray(params)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst publication = typeof params[0] === 'string' ? params[0] : null;\n\t\tconst subscriptionData = Array.isArray(params[1]) ? params[1] : [];\n\t\tconst userId = typeof params[2] === 'string' ? params[2] : null;\n\t\tconst subscriptionDataPreview = subscriptionData.slice(0, 3).map((item) => this.summarizePublicationValue(item));\n\n\t\treturn {\n\t\t\tpublication,\n\t\t\tsubscriptionDataCount: subscriptionData.length,\n\t\t\tsubscriptionDataPreview,\n\t\t\tuserId\n\t\t};\n\t}\n\n\tpublic isSafeShutdown() {\n\t\treturn !this._taskQueue.length && !this._pendingTasks.size;\n\t}\n\n\tpublic addWorker(ws: WebSocket.WebSocket) {\n\t\tthis._workers.push({\n\t\t\tid: ws['id_worker'],\n\t\t\tws: ws,\n\t\t\tactiveTasks: [],\n\t\t\tworkerIndex: ws['workerIndex'],\n\t\t\tworkerInstance: ws['workerInstance']\n\t\t});\n\n\t\tsetInterval(() => {\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(JSON.stringify(this._workers.map(a => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: a.id,\n\t\t\t\t\t\tactiveTasks: a.activeTasks\n\t\t\t\t\t}\n\t\t\t\t}), null, 2));\n\t\t\t}\n\t\t}, 5000);\n\n\t\tif (this._taskQueue.length) {\n\t\t\tthis.dispatchQueue();\n\t\t}\n\t}\n\n\tprivate failActiveWorkerTask(task: WorkerConnection['activeTasks'][number], reason: string) {\n\t\tif (!task || !task.taskId) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet pendingTask = this._pendingTasks.get(task.taskId);\n\t\tif (pendingTask) {\n\t\t\tclearTimeout(pendingTask.timeout);\n\t\t\tif (pendingTask.promise) {\n\t\t\t\tpendingTask.promise.reject(reason);\n\t\t\t}\n\t\t\tthis._pendingTasks.delete(task.taskId);\n\t\t}\n\n\t\tthis._taskTimings.delete(task.taskId);\n\n\t\tif (this._clientRequests[task.taskId]) {\n\t\t\tdelete this._clientRequests[task.taskId];\n\t\t}\n\n\t\tif (!task.userContext?.id_ws || task.messageId === undefined || task.messageId === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet clientWS = this._websocketManager ? this._websocketManager.getWebSocket(task.userContext.id_ws) : null;\n\t\tif (!clientWS) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet response: ServerResponseModel = {\n\t\t\tmessageId: task.messageId,\n\t\t\thasError: true,\n\t\t\tdata: reason\n\t\t};\n\n\t\tthis._websocketManager.send(clientWS, response);\n\t}\n\n\tpublic disconnectWorker(workerId: string, reason = 'Worker disconnected.') {\n\t\tlet worker = this._workers.find(w => w.id === workerId);\n\t\tthis._workers = this._workers.filter(w => w.id !== workerId);\n\n\t\tif (!worker || !worker.activeTasks?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet activeTasks = [...worker.activeTasks];\n\t\tworker.activeTasks = [];\n\n\t\tfor (const activeTask of activeTasks) {\n\t\t\tthis.failActiveWorkerTask(activeTask, reason);\n\t\t}\n\t}\n\n\tpublic hasWorkers() {\n\t\treturn this._workers.length > 0;\n\t}\n\n\tpublic getQueueSnapshot() {\n\t\tconst activeTasks = this._workers.reduce((total, worker) => total + (worker.activeTasks ? worker.activeTasks.length : 0), 0);\n\t\treturn {\n\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\tpendingTasks: this._pendingTasks.size,\n\t\t\tworkerCount: this._workers.length,\n\t\t\tactiveTasks,\n\t\t\tworkers: this._workers.map(worker => ({\n\t\t\t\tid: worker.id,\n\t\t\t\tindex: worker.workerIndex,\n\t\t\t\tinstance: worker.workerInstance,\n\t\t\t\tactiveTasks: worker.activeTasks ? worker.activeTasks.length : 0\n\t\t\t}))\n\t\t};\n\t}\n\n\tpublic hasWorkersForMethod(methodName: string) {\n\t\tif (!this._workers.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst method = this._methodManager.getMethod(methodName);\n\t\tconst taskQueue = this.resolveTaskQueue(methodName);\n\t\tconst targetWorkerIndex = this.normalizeWorkerIndex(method?.targetWorkerIndex);\n\t\tconst targetWorkerInstance = this.normalizeWorkerIndex(method?.targetWorkerInstance);\n\t\tconst hasExplicitTarget = !!targetWorkerIndex || !!targetWorkerInstance;\n\n\t\tlet candidates = this.filterGeneralPurposeWorkers([...this._workers], hasExplicitTarget);\n\n\t\tconst hasPublicationSelector = this.hasWorkerSelector(this._publicationWorkerIndexes, this._publicationWorkerInstances);\n\t\tif (hasPublicationSelector && !hasExplicitTarget) {\n\t\t\tif (taskQueue === 'publication') {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\tthis.workerMatchesSelector(worker, this._publicationWorkerIndexes, this._publicationWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\t!this.workerMatchesSelector(worker, this._publicationWorkerIndexes, this._publicationWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst hasCodexSelector = this.hasWorkerSelector(this._codexWorkerIndexes, this._codexWorkerInstances);\n\t\tif (hasCodexSelector) {\n\t\t\tif (taskQueue === 'codex') {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\tthis.workerMatchesSelector(worker, this._codexWorkerIndexes, this._codexWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t\telse if (!hasExplicitTarget) {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\t!this.workerMatchesSelector(worker, this._codexWorkerIndexes, this._codexWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (targetWorkerIndex) {\n\t\t\tcandidates = candidates.filter(worker => this.normalizeWorkerIndex(worker.workerIndex) === targetWorkerIndex);\n\t\t}\n\t\tif (targetWorkerInstance) {\n\t\t\tcandidates = candidates.filter(worker => this.normalizeWorkerIndex(worker.workerInstance) === targetWorkerInstance);\n\t\t}\n\n\t\treturn candidates.length > 0;\n\t}\n\n\t/**\n\t * Add a new task to our in-memory queue and try to dispatch.\n\t */\n\tpublic sendClientTask(messageId: number, method: string, params: any[], userContext?: { id_user?: string; user?: string; id_ws?: string }) {\n\t\tlet taskId = 'task-' + objectIdHexString();\n\t\tconst queuedAt = Date.now();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmessageId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tuserContext,\n\t\t\tqueuedAt\n\t\t});\n\n\t\tthis._taskTimings.set(taskId, {\n\t\t\tqueuedAt,\n\t\t\tmethod,\n\t\t\tmessageId,\n\t\t\tuserContext,\n\t\t\tparams\n\t\t});\n\n\t\tif (userContext && userContext.id_ws) {\n\t\t\tthis._clientRequests[taskId] = userContext.id_ws;\n\t\t}\n\n\t\tif (this.shouldDebug()) {\n\t\t\tconst publicationInfo = this.getPublicationLogInfo(method, params);\n\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\ttaskId,\n\t\t\t\tmethod,\n\t\t\t\tmessageId,\n\t\t\t\tpriority: method === 'runPublication' ? 'publication' : 'method',\n\t\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\t\tuserContext\n\t\t\t};\n\t\t\tif (publicationInfo) {\n\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t}\n\t\t\tthis.logWorkerEvent('workerTaskQueued', logPayload);\n\t\t}\n\n\t\tthis.dispatchQueue();\n\t}\n\n\t/**\n\t * Same as sendInternalTask but returns a Promise so you can `await` it.\n\t */\n\tpublic sendInternalPromise(method: string, params: any[] = []): Promise<any> {\n\t\tif (!Array.isArray(params)) {\n\t\t\tparams = [params];\n\t\t}\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet taskId = 'task-' + objectIdHexString();\n\t\t\tconst queuedAt = Date.now();\n\n\t\t\tthis._taskQueue.push({\n\t\t\t\ttype: 'task',\n\t\t\t\ttaskId,\n\t\t\t\tmethod,\n\t\t\t\tparams,\n\t\t\t\tmessageId: 0,\n\t\t\t\tuserContext: {\n\t\t\t\t\tuser: 'Internal System'\n\t\t\t\t},\n\t\t\t\tqueuedAt\n\t\t\t});\n\n\t\t\tthis._taskTimings.set(taskId, {\n\t\t\t\tqueuedAt,\n\t\t\t\tmethod,\n\t\t\t\tmessageId: 0,\n\t\t\t\tuserContext: { user: 'Internal System' },\n\t\t\t\tparams\n\t\t\t});\n\n\t\t\tthis._pendingTasks.set(taskId, {\n\t\t\t\ttimeout: null,\n\t\t\t\tpromise: { resolve, reject }\n\t\t\t});\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Send Internal Promise', this._taskQueue);\n\t\t\t}\n\n\t\t\tif (this.shouldDebug()) {\n\t\t\t\tconst publicationInfo = this.getPublicationLogInfo(method, params);\n\t\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\t\ttaskId,\n\t\t\t\t\tmethod,\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\tpriority: method === 'runPublication' ? 'publication' : 'method',\n\t\t\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\t\t\tuserContext: { user: 'Internal System' }\n\t\t\t\t};\n\t\t\t\tif (publicationInfo) {\n\t\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t\t}\n\t\t\t\tthis.logWorkerEvent('workerTaskQueued', logPayload);\n\t\t\t}\n\n\t\t\tthis.dispatchQueue();\n\t\t});\n\t}\n\n\t/**\n\t * Send a task internally and resolve with the raw TaskResponse (includes packedResult/meta).\n\t */\n\tpublic sendInternalPromiseRaw(method: string, params: any[] = []): Promise<TaskResponse> {\n\t\tif (!Array.isArray(params)) {\n\t\t\tparams = [params];\n\t\t}\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet taskId = 'task-' + objectIdHexString();\n\t\t\tconst queuedAt = Date.now();\n\n\t\t\tthis._taskQueue.push({\n\t\t\t\ttype: 'task',\n\t\t\t\ttaskId,\n\t\t\t\tmethod,\n\t\t\t\tparams,\n\t\t\t\tmessageId: 0,\n\t\t\t\tuserContext: {\n\t\t\t\t\tuser: 'Internal System'\n\t\t\t\t},\n\t\t\t\tqueuedAt\n\t\t\t});\n\n\t\t\tthis._taskTimings.set(taskId, {\n\t\t\t\tqueuedAt,\n\t\t\t\tmethod,\n\t\t\t\tmessageId: 0,\n\t\t\t\tuserContext: { user: 'Internal System' },\n\t\t\t\tparams\n\t\t\t});\n\n\t\t\tthis._pendingTasks.set(taskId, {\n\t\t\t\ttimeout: null,\n\t\t\t\tpromise: { resolve, reject },\n\t\t\t\tresolveRaw: true\n\t\t\t});\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Send Internal Raw Promise', this._taskQueue);\n\t\t\t}\n\n\t\t\tif (this.shouldDebug()) {\n\t\t\t\tconst publicationInfo = this.getPublicationLogInfo(method, params);\n\t\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\t\ttaskId,\n\t\t\t\t\tmethod,\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\tpriority: method === 'runPublication' ? 'publication' : 'method',\n\t\t\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\t\t\tuserContext: { user: 'Internal System' }\n\t\t\t\t};\n\t\t\t\tif (publicationInfo) {\n\t\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t\t}\n\t\t\t\tthis.logWorkerEvent('workerTaskQueued', logPayload);\n\t\t\t}\n\n\t\t\tthis.dispatchQueue();\n\t\t});\n\t}\n\n\t/**\n\t * Send a task internally without returning a promise.\n\t */\n\tpublic sendInternalTask(method: string, params = []) {\n\t\tif (!Array.isArray(params)) {\n\t\t\tparams = [params];\n\t\t}\n\n\t\tlet taskId = 'task-' + objectIdHexString();\n\t\tconst queuedAt = Date.now();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tmessageId: 0,\n\t\t\tuserContext: {\n\t\t\t\tuser: 'Internal System'\n\t\t\t},\n\t\t\tqueuedAt\n\t\t});\n\n\t\tthis._taskTimings.set(taskId, {\n\t\t\tqueuedAt,\n\t\t\tmethod,\n\t\t\tmessageId: 0,\n\t\t\tuserContext: { user: 'Internal System' },\n\t\t\tparams\n\t\t});\n\n\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Send Internal Task', this._taskQueue);\n\t\t}\n\n\t\tif (this.shouldDebug()) {\n\t\t\tconst publicationInfo = this.getPublicationLogInfo(method, params);\n\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\ttaskId,\n\t\t\t\tmethod,\n\t\t\t\tmessageId: 0,\n\t\t\t\tpriority: method === 'runPublication' ? 'publication' : 'method',\n\t\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\t\tuserContext: { user: 'Internal System' }\n\t\t\t};\n\t\t\tif (publicationInfo) {\n\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t}\n\t\t\tthis.logWorkerEvent('workerTaskQueued', logPayload);\n\t\t}\n\n\t\tthis.dispatchQueue();\n\t}\n\n\t/**\n\t * The main loop that assigns tasks from _taskQueue to any worker that has capacity.\n\t */\n\tprivate dispatchQueue() {\n\t\tif (!this._taskQueue.length) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this._workers.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst priorityMatchers: TaskMatcher[] = [\n\t\t\t(task) => this.resolveTaskQueue(task.method) === 'publication',\n\t\t\t(task) => this.resolveTaskQueue(task.method) === 'default',\n\t\t\t(task) => this.resolveTaskQueue(task.method) === 'codex'\n\t\t];\n\n\t\tconst tryAssignTask = (matcher: TaskMatcher): boolean => {\n\t\t\tfor (let i = 0; i < this._taskQueue.length; i++) {\n\t\t\t\tlet task = this._taskQueue[i];\n\t\t\t\tif (!matcher(task)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet targetWorker = this.findWorkerForTask(task);\n\n\t\t\t\tif (targetWorker) {\n\t\t\t\t\tthis._taskQueue.splice(i, 1);\n\t\t\t\t\tthis.assignTaskToWorker(targetWorker, task);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\twhile (this._taskQueue.length > 0) {\n\t\t\tlet assigned = false;\n\t\t\tfor (const matcher of priorityMatchers) {\n\t\t\t\tif (tryAssignTask(matcher)) {\n\t\t\t\t\tassigned = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!assigned) {\n\t\t\t\tthis.logNoWorkerAvailability();\n\t\t\t\tthis.scheduleDispatchRetry();\n\n\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'No Worker Available', JSON.stringify(this._workers, null, 2));\n\t\t\t\t}\n\n\t\t\t\treturn; // nothing can run right now due to per-worker limits\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate scheduleDispatchRetry(delayMs: number = this._dispatchRetryDelayMs) {\n\t\tif (this._dispatchRetryTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._dispatchRetryTimer = setTimeout(() => {\n\t\t\tthis._dispatchRetryTimer = null;\n\t\t\tthis.dispatchQueue();\n\t\t}, delayMs);\n\t}\n\n\t/**\n\t * Returns the worker with the fewest activeTasks that is under maxConcurrency and per-method limit.\n\t */\n\tprivate findWorkerForTask(task: TaskPayload): WorkerConnection | null {\n\t\tlet method = this._methodManager.getMethod(task.method);\n\t\tconst taskQueue = this.resolveTaskQueue(task.method);\n\t\tlet methodLimit = method && method.maxConcurrency && method.maxConcurrency > 0 ? method.maxConcurrency : null;\n\t\tlet methodLimitPerInstance = method && method.maxConcurrencyPerInstance && method.maxConcurrencyPerInstance > 0\n\t\t\t? method.maxConcurrencyPerInstance\n\t\t\t: null;\n\t\tlet targetWorkerIndex = this.normalizeWorkerIndex(method?.targetWorkerIndex);\n\t\tlet targetWorkerInstance = this.normalizeWorkerIndex(method?.targetWorkerInstance);\n\t\tconst hasExplicitTarget = !!targetWorkerIndex || !!targetWorkerInstance;\n\t\tconst preferNonZero = !targetWorkerIndex;\n\t\tconst debugCodex = this._aiWorkerDebug && taskQueue === 'codex';\n\t\tconst debugState: Record<string, any> | null = debugCodex ? {\n\t\t\ttaskId: task.taskId,\n\t\t\tmethod: task.method,\n\t\t\tqueueDepth: this._taskQueue.length,\n\t\t\ttargetWorkerIndex: targetWorkerIndex || null,\n\t\t\ttargetWorkerInstance: targetWorkerInstance || null,\n\t\t\tworkerCount: this._workers.length,\n\t\t\tpublicationSelector: {\n\t\t\t\tindexes: this.selectorToArray(this._publicationWorkerIndexes),\n\t\t\t\tinstances: this.selectorToArray(this._publicationWorkerInstances)\n\t\t\t},\n\t\t\tcodexSelector: {\n\t\t\t\tindexes: this.selectorToArray(this._codexWorkerIndexes),\n\t\t\t\tinstances: this.selectorToArray(this._codexWorkerInstances)\n\t\t\t},\n\t\t\tmaxConcurrency: this.MAX_CONCURRENCY,\n\t\t\tnonCodexReserve: this._nonCodexReserve\n\t\t} : null;\n\n\t\tlet candidates = this._workers.filter(x => x.activeTasks.length < this.MAX_CONCURRENCY);\n\t\tcandidates = this.filterGeneralPurposeWorkers(candidates, hasExplicitTarget);\n\t\tif (debugState) {\n\t\t\tdebugState.candidatesInitial = candidates.length;\n\t\t}\n\t\tconst hasPublicationSelector = this.hasWorkerSelector(this._publicationWorkerIndexes, this._publicationWorkerInstances);\n\t\tif (hasPublicationSelector && !hasExplicitTarget) {\n\t\t\tif (taskQueue === 'publication') {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\tthis.workerMatchesSelector(worker, this._publicationWorkerIndexes, this._publicationWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\t!this.workerMatchesSelector(worker, this._publicationWorkerIndexes, this._publicationWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (debugState) {\n\t\t\tdebugState.candidatesAfterPublicationFilter = candidates.length;\n\t\t\tdebugState.hasPublicationSelector = hasPublicationSelector;\n\t\t}\n\n\t\tconst hasCodexSelector = this.hasWorkerSelector(this._codexWorkerIndexes, this._codexWorkerInstances);\n\t\tif (hasCodexSelector) {\n\t\t\tif (taskQueue === 'codex') {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\tthis.workerMatchesSelector(worker, this._codexWorkerIndexes, this._codexWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t\telse if (!hasExplicitTarget) {\n\t\t\t\tcandidates = candidates.filter(worker =>\n\t\t\t\t\t!this.workerMatchesSelector(worker, this._codexWorkerIndexes, this._codexWorkerInstances)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (debugState) {\n\t\t\tdebugState.candidatesAfterCodexFilter = candidates.length;\n\t\t\tdebugState.hasCodexSelector = hasCodexSelector;\n\t\t}\n\t\tif (targetWorkerIndex) {\n\t\t\tcandidates = candidates.filter(worker => this.normalizeWorkerIndex(worker.workerIndex) === targetWorkerIndex);\n\t\t}\n\t\tif (targetWorkerInstance) {\n\t\t\tcandidates = candidates.filter(worker => this.normalizeWorkerIndex(worker.workerInstance) === targetWorkerInstance);\n\t\t}\n\t\tif (debugState) {\n\t\t\tdebugState.candidatesAfterTargetFilter = candidates.length;\n\t\t}\n\t\tif (!candidates.length) {\n\t\t\tthis.logCodexSelection(debugState, 'noCandidates');\n\t\t\treturn null;\n\t\t}\n\n\t\tlet eligible = candidates.filter((worker) => {\n\t\t\tif (!methodLimit) {\n\t\t\t\tif (!methodLimitPerInstance) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (methodLimitPerInstance) {\n\t\t\t\tconst currentInstance = worker.activeTasks.filter(a => a.method === task.method).length;\n\t\t\t\tif (currentInstance >= methodLimitPerInstance) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!methodLimit) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlet idx = worker.workerIndex || 'unknown';\n\t\t\tlet current = 0;\n\n\t\t\tthis._workers.forEach((w) => {\n\t\t\t\tif ((w.workerIndex || 'unknown') === idx) {\n\t\t\t\t\tcurrent += w.activeTasks.filter(a => a.method === task.method).length;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn current < methodLimit;\n\t\t});\n\n\t\tif (debugState) {\n\t\t\tdebugState.eligibleAfterLimits = eligible.length;\n\t\t}\n\t\tif (!eligible.length) {\n\t\t\tthis.logCodexSelection(debugState, 'limitsExceeded');\n\t\t\treturn null;\n\t\t}\n\n\t\tif (taskQueue === 'codex' && this._nonCodexReserve > 0) {\n\t\t\teligible = eligible.filter(worker => (this.MAX_CONCURRENCY - worker.activeTasks.length) > this._nonCodexReserve);\n\t\t}\n\n\t\tif (debugState) {\n\t\t\tdebugState.eligibleAfterReserve = eligible.length;\n\t\t}\n\t\tif (!eligible.length) {\n\t\t\tthis.logCodexSelection(debugState, 'reserveBlocked');\n\t\t\treturn null;\n\t\t}\n\n\t\teligible.sort((x, y) => {\n\t\t\tconst totalX = this.getWorkerLoad(x);\n\t\t\tconst totalY = this.getWorkerLoad(y);\n\t\t\tif (totalX !== totalY) {\n\t\t\t\treturn totalX - totalY;\n\t\t\t}\n\n\t\t\tif (preferNonZero) {\n\t\t\t\tconst xZero = this.isWorkerZero(x) ? 1 : 0;\n\t\t\t\tconst yZero = this.isWorkerZero(y) ? 1 : 0;\n\t\t\t\tif (xZero !== yZero) {\n\t\t\t\t\treturn xZero - yZero;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst idxX = this.normalizeWorkerIndex(x.workerIndex) || '';\n\t\t\tconst idxY = this.normalizeWorkerIndex(y.workerIndex) || '';\n\t\t\tconst idxCompare = idxX.localeCompare(idxY, undefined, { numeric: true, sensitivity: 'base' });\n\t\t\tif (idxCompare !== 0) {\n\t\t\t\treturn idxCompare;\n\t\t\t}\n\n\t\t\tconst instX = this.normalizeWorkerIndex(x.workerInstance) || '';\n\t\t\tconst instY = this.normalizeWorkerIndex(y.workerInstance) || '';\n\t\t\treturn instX.localeCompare(instY, undefined, { numeric: true, sensitivity: 'base' });\n\t\t});\n\n\t\t\tconst selected = eligible[0];\n\t\t\tif (this._aiWorkerDebug && taskQueue === 'codex') {\n\t\t\t\tconsole.log(new Date(), '[AI Worker Debug] AI worker selected', {\n\t\t\t\t\ttaskId: task.taskId,\n\t\t\t\t\tmethod: task.method,\n\t\t\t\t\tworkerIndex: selected?.workerIndex || null,\n\t\t\t\t\tworkerInstance: selected?.workerInstance || null,\n\t\t\t\tactiveTasks: selected?.activeTasks ? selected.activeTasks.length : 0,\n\t\t\t\tqueueDepth: this._taskQueue.length\n\t\t\t});\n\t\t}\n\t\treturn selected;\n\t}\n\n\tprivate logCodexSelection(debugState: Record<string, any> | null, reason: string): void {\n\t\tif (!debugState || !this._aiWorkerDebug) {\n\t\t\treturn;\n\t\t}\n\t\tconst taskId = String(debugState.taskId || '');\n\t\tif (!taskId || this._debugCodexTaskIds.has(taskId)) {\n\t\t\treturn;\n\t\t\t}\n\t\t\tthis._debugCodexTaskIds.add(taskId);\n\t\t\tconsole.warn(new Date(), '[AI Worker Debug] AI worker selection issue', {\n\t\t\t\treason,\n\t\t\t\t...debugState\n\t\t\t});\n\t\t}\n\n\tprivate normalizeWorkerIndex(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 isGeneralPurposeWorker(worker: WorkerConnection): boolean {\n\t\tconst normalizedIndex = this.normalizeWorkerIndex(worker?.workerIndex);\n\t\tconst normalizedInstance = this.normalizeWorkerIndex(worker?.workerInstance);\n\t\tif (!normalizedIndex || !normalizedInstance) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn /^[0-9]+$/.test(normalizedIndex) && /^[0-9]+$/.test(normalizedInstance);\n\t}\n\n\tprivate filterGeneralPurposeWorkers(candidates: WorkerConnection[], hasExplicitTarget: boolean): WorkerConnection[] {\n\t\tif (hasExplicitTarget) {\n\t\t\treturn candidates;\n\t\t}\n\n\t\treturn candidates.filter(worker => this.isGeneralPurposeWorker(worker));\n\t}\n\n\tprivate getWorkerLoad(worker: WorkerConnection): number {\n\t\treturn worker.activeTasks.reduce((sum, task) => sum + task.weight, 0);\n\t}\n\n\tprivate isWorkerZero(worker: WorkerConnection): boolean {\n\t\treturn this.normalizeWorkerIndex(worker.workerIndex) === '0';\n\t}\n\n\tprivate assignTaskToWorker(worker: WorkerConnection, task: TaskPayload) {\n\t\tlet method = this._methodManager.getMethod(task.method);\n\n\t\tif (!method) {\n\t\t\tconsole.error('Failed to send task to worker - Could not find method:', task.method);\n\t\t\tthis._taskTimings.delete(task.taskId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst dispatchedAt = Date.now();\n\t\tconst timing = this._taskTimings.get(task.taskId) || { queuedAt: dispatchedAt };\n\t\ttiming.dispatchedAt = dispatchedAt;\n\t\ttiming.method = task.method;\n\t\ttiming.messageId = task.messageId;\n\t\ttiming.userContext = task.userContext;\n\t\tif (!timing.params) {\n\t\t\ttiming.params = task.params;\n\t\t}\n\t\tthis._taskTimings.set(task.taskId, timing);\n\n\t\tworker.activeTasks.push({\n\t\t\ttaskId: task.taskId,\n\t\t\tweight: method && method.workerTaskWeight ? method.workerTaskWeight : 1,\n\t\t\tmethod: task.method,\n\t\t\tstartedAt: dispatchedAt,\n\t\t\tmessageId: task.messageId,\n\t\t\tuserContext: task.userContext\n\t\t});\n\t\tthis._debugNoWorkerTaskIds.delete(task.taskId);\n\n\t\tlet payload: TaskPayload = {\n\t\t\ttype: 'task',\n\t\t\ttaskId: task.taskId,\n\t\t\tmessageId: task.messageId,\n\t\t\tmethod: task.method,\n\t\t\tparams: task.params,\n\t\t\tuserContext: task.userContext || {},\n\t\t\tqueuedAt: timing.queuedAt,\n\t\t\tdispatchedAt\n\t\t};\n\n\t\tif (this.shouldDebug()) {\n\t\t\tconst publicationInfo = this.getPublicationLogInfo(task.method, task.params);\n\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\ttaskId: task.taskId,\n\t\t\t\tmethod: task.method,\n\t\t\t\tmessageId: task.messageId,\n\t\t\t\tpriority: task.method === 'runPublication' ? 'publication' : 'method',\n\t\t\t\tworker: {\n\t\t\t\t\tid: worker.id,\n\t\t\t\t\tindex: worker.workerIndex,\n\t\t\t\t\tinstance: worker.workerInstance\n\t\t\t\t},\n\t\t\t\tqueueDepth: this._taskQueue.length\n\t\t\t};\n\t\t\tif (publicationInfo) {\n\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t}\n\t\t\tthis.logWorkerEvent('workerTaskAssigned', logPayload);\n\t\t}\n\n\t\tlet timeoutHandle = setTimeout(() => {\n\t\t\tconst timeoutAt = Date.now();\n\t\t\tconst queuedAt = timing.queuedAt;\n\t\t\tconst queueWaitMs = queuedAt ? round(dispatchedAt - queuedAt) : null;\n\t\t\tconst dispatchToTimeoutMs = round(timeoutAt - dispatchedAt);\n\t\t\tconst timeoutMessage = 'Task timed out after 2m in WorkerDispatcherManager for method: ' + task.method;\n\n\t\t\tconst publicationInfo = this.getPublicationLogInfo(task.method, task.params);\n\t\t\tconst logPayload: Record<string, any> = {\n\t\t\t\ttaskId: task.taskId,\n\t\t\t\tmethod: task.method,\n\t\t\t\tmessageId: task.messageId,\n\t\t\t\tqueueWaitMs,\n\t\t\t\tdispatchToTimeoutMs,\n\t\t\t\tuserContext: task.userContext,\n\t\t\t\tworker: {\n\t\t\t\t\tid: worker.id,\n\t\t\t\t\tindex: worker.workerIndex,\n\t\t\t\t\tinstance: worker.workerInstance\n\t\t\t\t},\n\t\t\t\tworkers: this._workers.map(a => a.activeTasks)\n\t\t\t};\n\t\t\tif (publicationInfo) {\n\t\t\t\tObject.assign(logPayload, publicationInfo);\n\t\t\t}\n\t\t\tthis.logWorkerEvent('workerTaskTimeout', logPayload);\n\n\t\t\tthis.disconnectWorker(worker.id, timeoutMessage);\n\t\t\tif (worker.ws && worker.ws.readyState !== WebSocket.CLOSED) {\n\t\t\t\ttry {\n\t\t\t\t\tworker.ws.close();\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tworker.ws.terminate();\n\t\t\t\t\t}\n\t\t\t\t\tcatch {\n\t\t\t\t\t\t// Ignore socket cleanup errors after timeout.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, method.timeoutOverride || (1000 * 60 * 2));\n\n\t\t// If we already stored a promise for this task (from sendInternalPromise), add the timeout now\n\t\tlet existing = this._pendingTasks.get(task.taskId);\n\t\tif (!existing) {\n\t\t\texisting = { timeout: null, method: task.method };\n\t\t}\n\t\telse {\n\t\t\texisting.method = task.method;\n\t\t}\n\n\t\texisting.timeout = timeoutHandle;\n\t\tthis._pendingTasks.set(task.taskId, existing);\n\n\t\ttry {\n\t\t\tthis.sendWorkerPayload(worker.ws, payload);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Failed to send task to worker:', err);\n\n\t\t\tclearTimeout(timeoutHandle);\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== task.taskId);\n\n\t\t\t// Put task back in front\n\t\t\tthis._taskQueue.unshift(task);\n\t\t\tthis.dispatchQueue();\n\t\t}\n\t}\n\n\tprivate logNoWorkerAvailability() {\n\t\tif (!this.shouldDebug()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst workers = this._workers.map(worker => ({\n\t\t\tid: worker.id,\n\t\t\tindex: this.normalizeWorkerIndex(worker.workerIndex),\n\t\t\tinstance: this.normalizeWorkerIndex(worker.workerInstance),\n\t\t\tactiveTasks: worker.activeTasks.length\n\t\t}));\n\n\t\tfor (const task of this._taskQueue) {\n\t\t\tconst method = this._methodManager.getMethod(task.method);\n\t\t\tconst targetWorkerIndex = this.normalizeWorkerIndex(method?.targetWorkerIndex);\n\t\t\tconst targetWorkerInstance = this.normalizeWorkerIndex(method?.targetWorkerInstance);\n\n\t\t\tif (!targetWorkerIndex && !targetWorkerInstance) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (this._debugNoWorkerTaskIds.has(task.taskId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst hasMatch = this._workers.some(worker =>\n\t\t\t\t(!targetWorkerIndex || this.normalizeWorkerIndex(worker.workerIndex) === targetWorkerIndex) &&\n\t\t\t\t(!targetWorkerInstance || this.normalizeWorkerIndex(worker.workerInstance) === targetWorkerInstance)\n\t\t\t);\n\n\t\t\tif (!hasMatch) {\n\t\t\t\tthis._debugNoWorkerTaskIds.add(task.taskId);\n\t\t\t\tconsole.warn(new Date(), '[WorkerDispatcher] No matching worker for task', {\n\t\t\t\t\ttaskId: task.taskId,\n\t\t\t\t\tmethod: task.method,\n\t\t\t\t\ttargetWorkerIndex,\n\t\t\t\t\ttargetWorkerInstance,\n\t\t\t\t\tworkers\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate shouldDebug(): boolean {\n\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this._workerTaskDebug) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.parseDebugFlag(process.env.WORKER_TASK_DEBUG ?? process.env.WORKER_DISPATCH_DEBUG);\n\t}\n\n\tprivate logWorkerEvent(event: string, details: Record<string, any>) {\n\t\tconsole.log(this.safeStringify({\n\t\t\tts: new Date().toISOString(),\n\t\t\tevent,\n\t\t\t...details\n\t\t}));\n\t}\n\n\tprivate safeStringify(value: any): string {\n\t\ttry {\n\t\t\tconst seen = new WeakSet();\n\t\t\treturn JSON.stringify(value, (key, val) => {\n\t\t\t\tif (key === '__proto__') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tif (typeof val === 'bigint') {\n\t\t\t\t\treturn val.toString();\n\t\t\t\t}\n\t\t\t\tif (val instanceof Error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: val.name,\n\t\t\t\t\t\tmessage: val.message,\n\t\t\t\t\t\tstack: val.stack\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (val && typeof val === 'object') {\n\t\t\t\t\tif (seen.has(val)) {\n\t\t\t\t\t\treturn '[Circular]';\n\t\t\t\t\t}\n\t\t\t\t\tseen.add(val);\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t});\n\t\t}\n\t\tcatch (err) {\n\t\t\treturn JSON.stringify({\n\t\t\t\terror: 'safeStringifyFailed',\n\t\t\t\tmessage: err?.message || String(err)\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Handle messages coming back from a worker (like 'taskComplete').\n\t */\n\tpublic handleWorkerMessage(workerId: string, rawMessage: WebSocket.RawData) {\n\t\tlet data: TaskResponse;\n\n\t\ttry {\n\t\t\tif (typeof rawMessage === 'string') {\n\t\t\t\tdata = JSON.parse(rawMessage, dateReviver);\n\t\t\t}\n\t\t\telse if (Buffer.isBuffer(rawMessage)) {\n\t\t\t\tdata = unpack(rawMessage);\n\t\t\t}\n\t\t\telse if (Array.isArray(rawMessage)) {\n\t\t\t\tconst chunks = rawMessage as unknown as ReadonlyArray<Uint8Array>;\n\t\t\t\tdata = unpack(Buffer.concat(chunks));\n\t\t\t}\n\t\t\telse if (rawMessage instanceof ArrayBuffer) {\n\t\t\t\tdata = unpack(Buffer.from(rawMessage));\n\t\t\t}\n\t\t\telse if (ArrayBuffer.isView(rawMessage)) {\n\t\t\t\tconst view = rawMessage as NodeJS.ArrayBufferView;\n\t\t\t\tdata = unpack(Buffer.from(view.buffer, view.byteOffset, view.byteLength));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.error('Unsupported worker message type received:', typeof rawMessage);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Failed to parse worker message:', err);\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.type === 'taskComplete') {\n\t\t\tlet worker = this._workers.find(x => x.id === workerId);\n\n\t\t\tif (!worker) {\n\t\t\t\tconsole.error('Unknown worker for taskComplete:', workerId);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet { taskId, messageId, error, result } = data;\n\t\t\tconst timing = this._taskTimings.get(taskId);\n\t\t\tconst methodName = timing?.method;\n\t\t\tconst isAiMethod = !!methodName && methodName.startsWith('ai');\n\t\t\tlet unpackedResult = result;\n\t\t\tlet pendingTask = this._pendingTasks.get(taskId);\n\t\t\tconst resolveRaw = !!pendingTask?.resolveRaw;\n\n\t\t\tif (!error && !resolveRaw && unpackedResult === null && data['packedResult']) {\n\t\t\t\ttry {\n\t\t\t\t\tunpackedResult = unpack(data['packedResult']);\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.error('Failed to unpack worker result', err);\n\t\t\t\t}\n\t\t\t}\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== taskId);\n\t\t\tthis._taskTimings.delete(taskId);\n\n\t\t\tif (this._aiWorkerDebug && isAiMethod) {\n\t\t\t\tconst packedBytes = data['packedResult'] && data['packedResult'].byteLength\n\t\t\t\t\t? data['packedResult'].byteLength\n\t\t\t\t\t: null;\n\t\t\t\tlet resultBytes: number | null = null;\n\t\t\t\tif (!packedBytes) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresultBytes = Buffer.byteLength(JSON.stringify(result));\n\t\t\t\t\t}\n\t\t\t\t\tcatch {\n\t\t\t\t\t\tresultBytes = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.log(new Date(), '[AI Worker Debug] worker result', {\n\t\t\t\t\ttaskId,\n\t\t\t\t\tmethod: methodName,\n\t\t\t\t\tmessageId,\n\t\t\t\t\thasError: !!error,\n\t\t\t\t\tpackedBytes,\n\t\t\t\t\tresultBytes,\n\t\t\t\t\tworkerIndex: worker?.workerIndex || null,\n\t\t\t\t\tworkerInstance: worker?.workerInstance || null,\n\t\t\t\t\tqueueDepth: this._taskQueue.length\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif (pendingTask) {\n\t\t\t\tif (pendingTask.promise) {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tpendingTask.promise.reject(unpackedResult);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tpendingTask.promise.resolve(resolveRaw ? data : unpackedResult);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(pendingTask.timeout);\n\t\t\t\tthis._pendingTasks.delete(taskId);\n\t\t\t}\n\n\t\t\t// Look up original request if it came from a client\n\t\t\tlet clientReqId = this._clientRequests[taskId];\n\n\t\t\tif (clientReqId) {\n\t\t\t\tlet res: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: result\n\t\t\t\t};\n\n\t\t\t\tif (error) {\n\t\t\t\t\tres.hasError = true;\n\t\t\t\t\tres.data = result;\n\t\t\t\t}\n\n\t\t\t\tlet clientReqWS = this._websocketManager.getWebSocket(clientReqId);\n\n\t\t\t\tif (clientReqWS) {\n\t\t\t\t\tif (!error && data['packedResult']) {\n\t\t\t\t\t\tthis._websocketManager.sendPackedBuffer(\n\t\t\t\t\t\t\tclientReqWS,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tdata['packedResult'],\n\t\t\t\t\t\t\tdata['encoding'] || 'msgpack',\n\t\t\t\t\t\t\t{ passThrough: true }\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\tthis._websocketManager.send(clientReqWS, res);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this._clientRequests[taskId]) {\n\t\t\t\t\tdelete this._clientRequests[taskId];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Try to dispatch more from the queue\n\t\t\tif (this._taskQueue.length) {\n\t\t\t\tthis.dispatchQueue();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic sendWorkerPayload(ws: WebSocket.WebSocket, payload: TaskPayload | string) {\n\t\tif (!ws) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (ws.readyState !== WebSocket.OPEN) {\n\t\t\tif (typeof payload !== 'string') {\n\t\t\t\tconst task = payload;\n\t\t\t\tthis.disconnectWorker(ws['id_worker'], 'Worker socket not open for method: ' + task.method);\n\t\t\t\ttry {\n\t\t\t\t\tws.close();\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.disconnectWorker(ws['id_worker'], 'Worker socket not open.');\n\t\t\t\ttry {\n\t\t\t\t\tws.close();\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof payload === 'string') {\n\t\t\ttry {\n\t\t\t\tws.send(payload);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tthis.disconnectWorker(ws['id_worker'], 'Failed to send worker payload: ' + err?.toString());\n\t\t\t\ttry {\n\t\t\t\t\tws.close();\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t\tconsole.error('Failed to send worker payload:', err);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst task = payload;\n\t\tconst payloadBuffer = pack(task);\n\n\t\ttry {\n\t\t\tws.send(payloadBuffer);\n\t\t}\n\t\tcatch (err) {\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Sending to Server', task);\n\t\t\t}\n\n\t\t\tthis.disconnectWorker(ws['id_worker'], 'Failed to send worker response for method: ' + task.method);\n\t\t\ttry {\n\t\t\t\tws.close();\n\t\t\t}\n\t\t\tcatch {}\n\t\t\tconsole.error('Failed to send worker response:', err);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TaskResponse } from '../models/server-message.model';
|
|
2
|
+
import { MethodManager } from './method.manager';
|
|
3
|
+
export interface WorkerServerConnectionHealth {
|
|
4
|
+
isConnected: boolean;
|
|
5
|
+
lastConnectionAttemptAt: number;
|
|
6
|
+
lastConnectedAt: number;
|
|
7
|
+
lastDisconnectedAt: number;
|
|
8
|
+
connectionLossStartedAt: number;
|
|
9
|
+
currentOutageMs: number;
|
|
10
|
+
lastDisconnectReason: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class WorkerServerManager {
|
|
13
|
+
private _methodManager;
|
|
14
|
+
private _serverConfig;
|
|
15
|
+
private _runningTasks;
|
|
16
|
+
private _taskLogThresholdMs;
|
|
17
|
+
private _isConnected;
|
|
18
|
+
private _lastConnectionAttemptAt;
|
|
19
|
+
private _lastConnectedAt;
|
|
20
|
+
private _lastDisconnectedAt;
|
|
21
|
+
private _connectionLossStartedAt;
|
|
22
|
+
private _lastDisconnectReason;
|
|
23
|
+
constructor();
|
|
24
|
+
static create(methodManager: MethodManager, serverConfig: any): WorkerServerManager;
|
|
25
|
+
initialize(methodManager: MethodManager, serverConfig: any): void;
|
|
26
|
+
private markWorkerConnectionAttempt;
|
|
27
|
+
private markWorkerConnected;
|
|
28
|
+
private markWorkerDisconnected;
|
|
29
|
+
getConnectionHealth(): WorkerServerConnectionHealth;
|
|
30
|
+
private startWorkerInstance;
|
|
31
|
+
private handleIncomingTask;
|
|
32
|
+
private logWorkerEvent;
|
|
33
|
+
private safeStringify;
|
|
34
|
+
sendWorkerResponse(ws: any, payload: TaskResponse | string): void;
|
|
35
|
+
}
|