@resolveio/server-lib 22.2.33 → 22.2.34
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/.github/workflows/ai-assistant-nightly-eval.yml +224 -0
- package/.github/workflows/ai-assistant-pr-guardrails.yml +60 -0
- package/.nodemon.json +5 -0
- package/.vscode/settings.json +21 -0
- package/AGENTS.md +179 -0
- package/README.md +22 -0
- package/build_package.sh +5 -0
- package/compileDTS.pl +64 -0
- package/docs/ai-assistant-nightly-eval.md +65 -0
- package/docs/ai-assistant-preflight-checklist.md +23 -0
- package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
- package/eslint-plugin-custom/index.js +7 -0
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
- package/eslint.config.js +103 -0
- package/gulpfile.js +216 -0
- package/methodAndPublicationListGenerator.py +319 -0
- package/mongodbensurers.js +2 -0
- package/mongostop.js +3 -0
- package/package.json +1 -1
- package/settings.development.json +25 -0
- package/settings.development.redacted.json +25 -0
- package/src/.env +12 -0
- package/src/ai/assistant-core-heuristics.ts +577 -0
- package/src/client-server-app.ts +12 -0
- package/src/collections/ai-terminal-conversation.collection.ts +91 -0
- package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
- package/src/collections/ai-terminal-message.collection.ts +77 -0
- package/src/collections/app-setting.collection.ts +104 -0
- package/src/collections/app-status.collection.ts +58 -0
- package/src/collections/communication-metric.collection.ts +84 -0
- package/src/collections/counter.collection.ts +56 -0
- package/src/collections/cron-job-history.collection.ts +94 -0
- package/src/collections/cron-job.collection.ts +92 -0
- package/src/collections/customer-notification.collection.ts +131 -0
- package/src/collections/customer-portal-password.collection.ts +76 -0
- package/src/collections/email-history.collection.ts +121 -0
- package/src/collections/email-verified.collection.ts +61 -0
- package/src/collections/file.collection.ts +74 -0
- package/src/collections/flag-update.collection.ts +57 -0
- package/src/collections/flag.collection.ts +57 -0
- package/src/collections/log-method-latency.collection.ts +77 -0
- package/src/collections/log-subscription.collection.ts +80 -0
- package/src/collections/log.collection.ts +93 -0
- package/src/collections/logged-in-users.collection.ts +67 -0
- package/src/collections/monitor-cpu.collection.ts +65 -0
- package/src/collections/monitor-function.collection.ts +74 -0
- package/src/collections/monitor-memory.collection.ts +77 -0
- package/src/collections/monitor-mongo.collection.ts +71 -0
- package/src/collections/notification.collection.ts +57 -0
- package/src/collections/openai-usage-ledger.collection.ts +77 -0
- package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
- package/src/collections/report-builder-library.collection.ts +89 -0
- package/src/collections/report-builder-report.collection.ts +180 -0
- package/src/collections/user-group.collection.ts +89 -0
- package/src/collections/user-guide.collection.ts +57 -0
- package/src/collections/user.collection.ts +181 -0
- package/src/cron/cron.ts +117 -0
- package/src/fixtures/cron-jobs.ts +95 -0
- package/src/fixtures/init.ts +35 -0
- package/src/http/auth.ts +764 -0
- package/src/http/health.ts +7 -0
- package/src/http/home.ts +90 -0
- package/src/http/slow-query-publication.ts +49 -0
- package/src/index.ts +1 -0
- package/src/managers/communication-metric.manager.ts +82 -0
- package/src/managers/cron.manager.ts +333 -0
- package/src/managers/customer-notification-content.manager.ts +236 -0
- package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
- package/src/managers/error-auto-fix.manager.ts +2767 -0
- package/src/managers/local-log.manager.ts +113 -0
- package/src/managers/method.manager.ts +1557 -0
- package/src/managers/mongo.manager.ts +4566 -0
- package/src/managers/monitor.manager.ts +489 -0
- package/src/managers/openai-usage-ledger.manager.ts +116 -0
- package/src/managers/slow-query-verifier.manager.ts +3590 -0
- package/src/managers/slow-query.manager.ts +519 -0
- package/src/managers/subscription.manager.ts +3120 -0
- package/src/managers/websocket.manager.ts +746 -0
- package/src/managers/worker-dispatcher.manager.ts +1318 -0
- package/src/managers/worker-server.manager.ts +468 -0
- package/src/methods/accounts.ts +532 -0
- package/src/methods/ai-terminal.ts +25505 -0
- package/src/methods/app-settings.ts +114 -0
- package/src/methods/aws.ts +646 -0
- package/src/methods/collections.ts +544 -0
- package/src/methods/counters.ts +67 -0
- package/src/methods/cron-jobs.ts +2610 -0
- package/src/methods/customer-notifications.ts +458 -0
- package/src/methods/diagnostics.ts +447 -0
- package/src/methods/flag-updates.ts +7 -0
- package/src/methods/flags.ts +7 -0
- package/src/methods/logs.ts +656 -0
- package/src/methods/mongo-explorer.ts +1883 -0
- package/src/methods/monitor.ts +540 -0
- package/src/methods/pdf.ts +1210 -0
- package/src/methods/publications.ts +128 -0
- package/src/methods/report-builder.ts +3305 -0
- package/src/methods/support.ts +210 -0
- package/src/models/ai-terminal-conversation.model.ts +19 -0
- package/src/models/ai-terminal-issue-report.model.ts +21 -0
- package/src/models/ai-terminal-message.model.ts +24 -0
- package/src/models/app-setting.model.ts +17 -0
- package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
- package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
- package/src/models/collection-document.model.ts +24 -0
- package/src/models/communication-metric.model.ts +23 -0
- package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
- package/src/models/cron-job-history.model.ts +16 -0
- package/src/models/cron-job.model.ts +15 -0
- package/src/models/customer-notification.model.ts +28 -0
- package/src/models/customer-portal-password.model.ts +12 -0
- package/src/models/dialog.model.ts +25 -0
- package/{models/email-history.model.js → src/models/email-history.model.ts} +34 -4
- package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
- package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
- package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
- package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
- package/src/models/log-method-latency.model.ts +11 -0
- package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
- package/src/models/log.model.ts +19 -0
- package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
- package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
- package/src/models/method.model.ts +23 -0
- package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
- package/src/models/monitor-function.model.ts +16 -0
- package/src/models/monitor-memory.model.ts +17 -0
- package/src/models/monitor-mongo.model.ts +15 -0
- package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
- package/src/models/openai-usage-ledger.model.ts +16 -0
- package/src/models/pagination.model.ts +35 -0
- package/src/models/permission.model.ts +14 -0
- package/src/models/report-builder-dashboard-builder.model.ts +29 -0
- package/src/models/report-builder-library.model.ts +20 -0
- package/src/models/report-builder-report.model.ts +135 -0
- package/src/models/report-builder.model.ts +68 -0
- package/src/models/select-data-label.model.ts +9 -0
- package/src/models/server-message.model.ts +31 -0
- package/src/models/slow-query-report.model.ts +23 -0
- package/src/models/subscription.model.ts +73 -0
- package/src/models/support-ticket.model.ts +96 -0
- package/src/models/user-group.model.ts +24 -0
- package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
- package/src/models/user.model.ts +96 -0
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +73 -0
- package/src/publications/app-settings.ts +25 -0
- package/src/publications/app-status.ts +13 -0
- package/src/publications/cron-jobs.ts +29 -0
- package/src/publications/customer-notifications.ts +101 -0
- package/src/publications/files.ts +33 -0
- package/src/publications/flags-update.ts +19 -0
- package/src/publications/flags.ts +19 -0
- package/src/publications/logs.ts +163 -0
- package/src/publications/notifications.ts +13 -0
- package/src/publications/report-builder-dashboard-builders.ts +39 -0
- package/src/publications/report-builder-libraries.ts +41 -0
- package/src/publications/report-builder-reports.ts +47 -0
- package/src/publications/super-admin.ts +13 -0
- package/src/publications/user-groups.ts +12 -0
- package/src/publications/user-guides.ts +12 -0
- package/src/resolveio-server-app.ts +617 -0
- package/src/server-app.ts +2616 -0
- package/src/services/codex-client.ts +1117 -0
- package/src/services/openai-client.ts +265 -0
- package/src/types/error-report.ts +26 -0
- package/src/types/js-tiktoken.d.ts +11 -0
- package/src/types/slow-query-report.ts +28 -0
- package/src/util/common.ts +649 -0
- package/src/util/customer-portal-password.ts +183 -0
- package/src/util/error-reporter.ts +332 -0
- package/src/util/error-tracking.ts +79 -0
- package/src/util/report-builder-unwinds.ts +180 -0
- package/src/util/schema-report-builder.ts +448 -0
- package/src/util/slow-query-reporter.ts +216 -0
- package/src/util/subscription-dependency-context.ts +1096 -0
- package/src/util/tokenizer.ts +38 -0
- package/src/workers/codex-runner.worker.ts +142 -0
- package/start_server.sh +5 -0
- package/tests/ai-assistant-corpus-build.ts +484 -0
- package/tests/ai-assistant-corpus-replay-e2e.ts +773 -0
- package/tests/ai-assistant-data-parity-e2e.ts +2018 -0
- package/tests/ai-assistant-eval-triage.ts +831 -0
- package/tests/ai-assistant-openai-e2e.ts +1061 -0
- package/tests/ai-assistant-openai-git-e2e.ts +155 -0
- package/tests/ai-assistant-preflight-matrix.ts +215 -0
- package/tests/ai-assistant-routing-eval.test.ts +560 -0
- package/tests/ai-assistant-snf-live-eval.ts +921 -0
- package/tests/ai-assistant-utils.test.ts +2165 -0
- package/tests/error-reporter.test.ts +145 -0
- package/tests/report-builder-linking.test.ts +79 -0
- package/tests/subscription-connect-race.test.ts +157 -0
- package/tests/subscription-dependency-context.test.ts +324 -0
- package/tests/subscription-manager-collection-tracking.test.ts +86 -0
- package/tests/subscription-manager-invalidation.test.ts +85 -0
- package/tsconfig.json +34 -0
- package/ai/assistant-core-heuristics.d.ts +0 -11
- package/ai/assistant-core-heuristics.js +0 -531
- package/ai/assistant-core-heuristics.js.map +0 -1
- package/client-server-app.d.ts +0 -1
- package/client-server-app.js +0 -68
- package/client-server-app.js.map +0 -1
- package/collections/ai-terminal-conversation.collection.d.ts +0 -2
- package/collections/ai-terminal-conversation.collection.js +0 -140
- package/collections/ai-terminal-conversation.collection.js.map +0 -1
- package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
- package/collections/ai-terminal-issue-report.collection.js +0 -148
- package/collections/ai-terminal-issue-report.collection.js.map +0 -1
- package/collections/ai-terminal-message.collection.d.ts +0 -2
- package/collections/ai-terminal-message.collection.js +0 -121
- package/collections/ai-terminal-message.collection.js.map +0 -1
- package/collections/app-setting.collection.d.ts +0 -3
- package/collections/app-setting.collection.js +0 -103
- package/collections/app-setting.collection.js.map +0 -1
- package/collections/app-status.collection.d.ts +0 -3
- package/collections/app-status.collection.js +0 -57
- package/collections/app-status.collection.js.map +0 -1
- package/collections/communication-metric.collection.d.ts +0 -2
- package/collections/communication-metric.collection.js +0 -133
- package/collections/communication-metric.collection.js.map +0 -1
- package/collections/counter.collection.d.ts +0 -3
- package/collections/counter.collection.js +0 -56
- package/collections/counter.collection.js.map +0 -1
- package/collections/cron-job-history.collection.d.ts +0 -3
- package/collections/cron-job-history.collection.js +0 -137
- package/collections/cron-job-history.collection.js.map +0 -1
- package/collections/cron-job.collection.d.ts +0 -3
- package/collections/cron-job.collection.js +0 -92
- package/collections/cron-job.collection.js.map +0 -1
- package/collections/customer-notification.collection.d.ts +0 -3
- package/collections/customer-notification.collection.js +0 -130
- package/collections/customer-notification.collection.js.map +0 -1
- package/collections/customer-portal-password.collection.d.ts +0 -3
- package/collections/customer-portal-password.collection.js +0 -75
- package/collections/customer-portal-password.collection.js.map +0 -1
- package/collections/email-history.collection.d.ts +0 -3
- package/collections/email-history.collection.js +0 -121
- package/collections/email-history.collection.js.map +0 -1
- package/collections/email-verified.collection.d.ts +0 -3
- package/collections/email-verified.collection.js +0 -61
- package/collections/email-verified.collection.js.map +0 -1
- package/collections/file.collection.d.ts +0 -3
- package/collections/file.collection.js +0 -74
- package/collections/file.collection.js.map +0 -1
- package/collections/flag-update.collection.d.ts +0 -3
- package/collections/flag-update.collection.js +0 -57
- package/collections/flag-update.collection.js.map +0 -1
- package/collections/flag.collection.d.ts +0 -3
- package/collections/flag.collection.js +0 -57
- package/collections/flag.collection.js.map +0 -1
- package/collections/log-method-latency.collection.d.ts +0 -3
- package/collections/log-method-latency.collection.js +0 -77
- package/collections/log-method-latency.collection.js.map +0 -1
- package/collections/log-subscription.collection.d.ts +0 -3
- package/collections/log-subscription.collection.js +0 -80
- package/collections/log-subscription.collection.js.map +0 -1
- package/collections/log.collection.d.ts +0 -3
- package/collections/log.collection.js +0 -93
- package/collections/log.collection.js.map +0 -1
- package/collections/logged-in-users.collection.d.ts +0 -3
- package/collections/logged-in-users.collection.js +0 -67
- package/collections/logged-in-users.collection.js.map +0 -1
- package/collections/monitor-cpu.collection.d.ts +0 -3
- package/collections/monitor-cpu.collection.js +0 -65
- package/collections/monitor-cpu.collection.js.map +0 -1
- package/collections/monitor-function.collection.d.ts +0 -3
- package/collections/monitor-function.collection.js +0 -74
- package/collections/monitor-function.collection.js.map +0 -1
- package/collections/monitor-memory.collection.d.ts +0 -3
- package/collections/monitor-memory.collection.js +0 -77
- package/collections/monitor-memory.collection.js.map +0 -1
- package/collections/monitor-mongo.collection.d.ts +0 -3
- package/collections/monitor-mongo.collection.js +0 -71
- package/collections/monitor-mongo.collection.js.map +0 -1
- package/collections/notification.collection.d.ts +0 -3
- package/collections/notification.collection.js +0 -57
- package/collections/notification.collection.js.map +0 -1
- package/collections/openai-usage-ledger.collection.d.ts +0 -2
- package/collections/openai-usage-ledger.collection.js +0 -124
- package/collections/openai-usage-ledger.collection.js.map +0 -1
- package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
- package/collections/report-builder-dashboard-builder.collection.js +0 -109
- package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
- package/collections/report-builder-library.collection.d.ts +0 -3
- package/collections/report-builder-library.collection.js +0 -87
- package/collections/report-builder-library.collection.js.map +0 -1
- package/collections/report-builder-report.collection.d.ts +0 -4
- package/collections/report-builder-report.collection.js +0 -180
- package/collections/report-builder-report.collection.js.map +0 -1
- package/collections/user-group.collection.d.ts +0 -4
- package/collections/user-group.collection.js +0 -89
- package/collections/user-group.collection.js.map +0 -1
- package/collections/user-guide.collection.d.ts +0 -3
- package/collections/user-guide.collection.js +0 -57
- package/collections/user-guide.collection.js.map +0 -1
- package/collections/user.collection.d.ts +0 -4
- package/collections/user.collection.js +0 -180
- package/collections/user.collection.js.map +0 -1
- package/cron/cron.d.ts +0 -14
- package/cron/cron.js +0 -216
- package/cron/cron.js.map +0 -1
- package/fixtures/cron-jobs.d.ts +0 -1
- package/fixtures/cron-jobs.js +0 -150
- package/fixtures/cron-jobs.js.map +0 -1
- package/fixtures/init.d.ts +0 -1
- package/fixtures/init.js +0 -91
- package/fixtures/init.js.map +0 -1
- package/http/auth.d.ts +0 -2
- package/http/auth.js +0 -903
- package/http/auth.js.map +0 -1
- package/http/health.d.ts +0 -1
- package/http/health.js +0 -11
- package/http/health.js.map +0 -1
- package/http/home.d.ts +0 -1
- package/http/home.js +0 -134
- package/http/home.js.map +0 -1
- package/http/slow-query-publication.d.ts +0 -2
- package/http/slow-query-publication.js +0 -99
- package/http/slow-query-publication.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -19
- package/index.js.map +0 -1
- package/managers/communication-metric.manager.d.ts +0 -16
- package/managers/communication-metric.manager.js +0 -134
- package/managers/communication-metric.manager.js.map +0 -1
- package/managers/cron.manager.d.ts +0 -20
- package/managers/cron.manager.js +0 -534
- package/managers/cron.manager.js.map +0 -1
- package/managers/customer-notification-content.manager.d.ts +0 -55
- package/managers/customer-notification-content.manager.js +0 -158
- package/managers/customer-notification-content.manager.js.map +0 -1
- package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
- package/managers/diagnostic-manager-bootstrap.js +0 -260
- package/managers/diagnostic-manager-bootstrap.js.map +0 -1
- package/managers/error-auto-fix.manager.d.ts +0 -149
- package/managers/error-auto-fix.manager.js +0 -3064
- package/managers/error-auto-fix.manager.js.map +0 -1
- package/managers/local-log.manager.d.ts +0 -18
- package/managers/local-log.manager.js +0 -88
- package/managers/local-log.manager.js.map +0 -1
- package/managers/method.manager.d.ts +0 -77
- package/managers/method.manager.js +0 -1701
- package/managers/method.manager.js.map +0 -1
- package/managers/mongo.manager.d.ts +0 -222
- package/managers/mongo.manager.js +0 -4984
- package/managers/mongo.manager.js.map +0 -1
- package/managers/monitor.manager.d.ts +0 -69
- package/managers/monitor.manager.js +0 -534
- package/managers/monitor.manager.js.map +0 -1
- package/managers/openai-usage-ledger.manager.d.ts +0 -15
- package/managers/openai-usage-ledger.manager.js +0 -144
- package/managers/openai-usage-ledger.manager.js.map +0 -1
- package/managers/slow-query-verifier.manager.d.ts +0 -144
- package/managers/slow-query-verifier.manager.js +0 -3857
- package/managers/slow-query-verifier.manager.js.map +0 -1
- package/managers/slow-query.manager.d.ts +0 -28
- package/managers/slow-query.manager.js +0 -468
- package/managers/slow-query.manager.js.map +0 -1
- package/managers/subscription.manager.d.ts +0 -169
- package/managers/subscription.manager.js +0 -3422
- package/managers/subscription.manager.js.map +0 -1
- package/managers/websocket.manager.d.ts +0 -73
- package/managers/websocket.manager.js +0 -673
- package/managers/websocket.manager.js.map +0 -1
- package/managers/worker-dispatcher.manager.d.ts +0 -117
- package/managers/worker-dispatcher.manager.js +0 -1210
- package/managers/worker-dispatcher.manager.js.map +0 -1
- package/managers/worker-server.manager.d.ts +0 -16
- package/managers/worker-server.manager.js +0 -530
- package/managers/worker-server.manager.js.map +0 -1
- package/methods/accounts.d.ts +0 -2
- package/methods/accounts.js +0 -624
- package/methods/accounts.js.map +0 -1
- package/methods/ai-terminal.d.ts +0 -304
- package/methods/ai-terminal.js +0 -25096
- package/methods/ai-terminal.js.map +0 -1
- package/methods/app-settings.d.ts +0 -2
- package/methods/app-settings.js +0 -169
- package/methods/app-settings.js.map +0 -1
- package/methods/aws.d.ts +0 -2
- package/methods/aws.js +0 -874
- package/methods/aws.js.map +0 -1
- package/methods/collections.d.ts +0 -2
- package/methods/collections.js +0 -626
- package/methods/collections.js.map +0 -1
- package/methods/counters.d.ts +0 -2
- package/methods/counters.js +0 -111
- package/methods/counters.js.map +0 -1
- package/methods/cron-jobs.d.ts +0 -2
- package/methods/cron-jobs.js +0 -2471
- package/methods/cron-jobs.js.map +0 -1
- package/methods/customer-notifications.d.ts +0 -2
- package/methods/customer-notifications.js +0 -528
- package/methods/customer-notifications.js.map +0 -1
- package/methods/diagnostics.d.ts +0 -2
- package/methods/diagnostics.js +0 -514
- package/methods/diagnostics.js.map +0 -1
- package/methods/flag-updates.d.ts +0 -2
- package/methods/flag-updates.js +0 -8
- package/methods/flag-updates.js.map +0 -1
- package/methods/flags.d.ts +0 -2
- package/methods/flags.js +0 -8
- package/methods/flags.js.map +0 -1
- package/methods/logs.d.ts +0 -2
- package/methods/logs.js +0 -750
- package/methods/logs.js.map +0 -1
- package/methods/mongo-explorer.d.ts +0 -2
- package/methods/mongo-explorer.js +0 -1811
- package/methods/mongo-explorer.js.map +0 -1
- package/methods/monitor.d.ts +0 -2
- package/methods/monitor.js +0 -543
- package/methods/monitor.js.map +0 -1
- package/methods/pdf.d.ts +0 -2
- package/methods/pdf.js +0 -1195
- package/methods/pdf.js.map +0 -1
- package/methods/publications.d.ts +0 -1
- package/methods/publications.js +0 -183
- package/methods/publications.js.map +0 -1
- package/methods/report-builder.d.ts +0 -2
- package/methods/report-builder.js +0 -2960
- package/methods/report-builder.js.map +0 -1
- package/methods/support.d.ts +0 -2
- package/methods/support.js +0 -313
- package/methods/support.js.map +0 -1
- package/models/ai-terminal-conversation.model.d.ts +0 -17
- package/models/ai-terminal-conversation.model.js +0 -4
- package/models/ai-terminal-conversation.model.js.map +0 -1
- package/models/ai-terminal-issue-report.model.d.ts +0 -19
- package/models/ai-terminal-issue-report.model.js +0 -4
- package/models/ai-terminal-issue-report.model.js.map +0 -1
- package/models/ai-terminal-message.model.d.ts +0 -22
- package/models/ai-terminal-message.model.js +0 -4
- package/models/ai-terminal-message.model.js.map +0 -1
- package/models/app-setting.model.d.ts +0 -16
- package/models/app-setting.model.js +0 -4
- package/models/app-setting.model.js.map +0 -1
- package/models/app-status.model.js +0 -4
- package/models/app-status.model.js.map +0 -1
- package/models/billing-logged-in-users.model.js +0 -4
- package/models/billing-logged-in-users.model.js.map +0 -1
- package/models/collection-document.model.d.ts +0 -21
- package/models/collection-document.model.js +0 -4
- package/models/collection-document.model.js.map +0 -1
- package/models/communication-metric.model.d.ts +0 -20
- package/models/communication-metric.model.js +0 -4
- package/models/communication-metric.model.js.map +0 -1
- package/models/counter.model.js +0 -4
- package/models/counter.model.js.map +0 -1
- package/models/cron-job-history.model.d.ts +0 -15
- package/models/cron-job-history.model.js +0 -4
- package/models/cron-job-history.model.js.map +0 -1
- package/models/cron-job.model.d.ts +0 -14
- package/models/cron-job.model.js +0 -4
- package/models/cron-job.model.js.map +0 -1
- package/models/customer-notification.model.d.ts +0 -26
- package/models/customer-notification.model.js +0 -4
- package/models/customer-notification.model.js.map +0 -1
- package/models/customer-portal-password.model.d.ts +0 -11
- package/models/customer-portal-password.model.js +0 -4
- package/models/customer-portal-password.model.js.map +0 -1
- package/models/dialog.model.d.ts +0 -23
- package/models/dialog.model.js +0 -4
- package/models/dialog.model.js.map +0 -1
- package/models/email-history.model.d.ts +0 -30
- package/models/email-history.model.js.map +0 -1
- package/models/email-verified.model.js +0 -4
- package/models/email-verified.model.js.map +0 -1
- package/models/file.model.js +0 -4
- package/models/file.model.js.map +0 -1
- package/models/flag-update.model.js +0 -4
- package/models/flag-update.model.js.map +0 -1
- package/models/flag.model.js +0 -4
- package/models/flag.model.js.map +0 -1
- package/models/log-method-latency.model.d.ts +0 -10
- package/models/log-method-latency.model.js +0 -4
- package/models/log-method-latency.model.js.map +0 -1
- package/models/log-subscription.model.js +0 -4
- package/models/log-subscription.model.js.map +0 -1
- package/models/log.model.d.ts +0 -17
- package/models/log.model.js +0 -4
- package/models/log.model.js.map +0 -1
- package/models/logged-in-users.model.js +0 -4
- package/models/logged-in-users.model.js.map +0 -1
- package/models/method-response.model.js +0 -4
- package/models/method-response.model.js.map +0 -1
- package/models/method.model.d.ts +0 -24
- package/models/method.model.js +0 -4
- package/models/method.model.js.map +0 -1
- package/models/monitor-cpu.model.js +0 -4
- package/models/monitor-cpu.model.js.map +0 -1
- package/models/monitor-function.model.d.ts +0 -14
- package/models/monitor-function.model.js +0 -4
- package/models/monitor-function.model.js.map +0 -1
- package/models/monitor-memory.model.d.ts +0 -15
- package/models/monitor-memory.model.js +0 -4
- package/models/monitor-memory.model.js.map +0 -1
- package/models/monitor-mongo.model.d.ts +0 -13
- package/models/monitor-mongo.model.js +0 -4
- package/models/monitor-mongo.model.js.map +0 -1
- package/models/notification.model.js +0 -4
- package/models/notification.model.js.map +0 -1
- package/models/openai-usage-ledger.model.d.ts +0 -15
- package/models/openai-usage-ledger.model.js +0 -4
- package/models/openai-usage-ledger.model.js.map +0 -1
- package/models/pagination.model.d.ts +0 -11
- package/models/pagination.model.js +0 -28
- package/models/pagination.model.js.map +0 -1
- package/models/permission.model.d.ts +0 -12
- package/models/permission.model.js +0 -4
- package/models/permission.model.js.map +0 -1
- package/models/report-builder-dashboard-builder.model.d.ts +0 -25
- package/models/report-builder-dashboard-builder.model.js +0 -4
- package/models/report-builder-dashboard-builder.model.js.map +0 -1
- package/models/report-builder-library.model.d.ts +0 -17
- package/models/report-builder-library.model.js +0 -4
- package/models/report-builder-library.model.js.map +0 -1
- package/models/report-builder-report.model.d.ts +0 -120
- package/models/report-builder-report.model.js +0 -4
- package/models/report-builder-report.model.js.map +0 -1
- package/models/report-builder.model.d.ts +0 -61
- package/models/report-builder.model.js +0 -4
- package/models/report-builder.model.js.map +0 -1
- package/models/select-data-label.model.d.ts +0 -9
- package/models/select-data-label.model.js +0 -4
- package/models/select-data-label.model.js.map +0 -1
- package/models/server-message.model.d.ts +0 -32
- package/models/server-message.model.js +0 -4
- package/models/server-message.model.js.map +0 -1
- package/models/slow-query-report.model.d.ts +0 -23
- package/models/slow-query-report.model.js +0 -4
- package/models/slow-query-report.model.js.map +0 -1
- package/models/subscription.model.d.ts +0 -31
- package/models/subscription.model.js +0 -4
- package/models/subscription.model.js.map +0 -1
- package/models/support-ticket.model.d.ts +0 -86
- package/models/support-ticket.model.js +0 -4
- package/models/support-ticket.model.js.map +0 -1
- package/models/user-group.model.d.ts +0 -20
- package/models/user-group.model.js +0 -4
- package/models/user-group.model.js.map +0 -1
- package/models/user-guide.model.js +0 -4
- package/models/user-guide.model.js.map +0 -1
- package/models/user.model.d.ts +0 -84
- package/models/user.model.js +0 -4
- package/models/user.model.js.map +0 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +0 -107
- package/public_api.js.map +0 -1
- package/publications/ai-terminal.d.ts +0 -1
- package/publications/ai-terminal.js +0 -122
- package/publications/ai-terminal.js.map +0 -1
- package/publications/app-settings.d.ts +0 -2
- package/publications/app-settings.js +0 -28
- package/publications/app-settings.js.map +0 -1
- package/publications/app-status.d.ts +0 -2
- package/publications/app-status.js +0 -16
- package/publications/app-status.js.map +0 -1
- package/publications/cron-jobs.d.ts +0 -2
- package/publications/cron-jobs.js +0 -32
- package/publications/cron-jobs.js.map +0 -1
- package/publications/customer-notifications.d.ts +0 -2
- package/publications/customer-notifications.js +0 -161
- package/publications/customer-notifications.js.map +0 -1
- package/publications/files.d.ts +0 -2
- package/publications/files.js +0 -36
- package/publications/files.js.map +0 -1
- package/publications/flags-update.d.ts +0 -2
- package/publications/flags-update.js +0 -22
- package/publications/flags-update.js.map +0 -1
- package/publications/flags.d.ts +0 -2
- package/publications/flags.js +0 -22
- package/publications/flags.js.map +0 -1
- package/publications/logs.d.ts +0 -2
- package/publications/logs.js +0 -164
- package/publications/logs.js.map +0 -1
- package/publications/notifications.d.ts +0 -2
- package/publications/notifications.js +0 -16
- package/publications/notifications.js.map +0 -1
- package/publications/report-builder-dashboard-builders.d.ts +0 -2
- package/publications/report-builder-dashboard-builders.js +0 -42
- package/publications/report-builder-dashboard-builders.js.map +0 -1
- package/publications/report-builder-libraries.d.ts +0 -2
- package/publications/report-builder-libraries.js +0 -90
- package/publications/report-builder-libraries.js.map +0 -1
- package/publications/report-builder-reports.d.ts +0 -2
- package/publications/report-builder-reports.js +0 -50
- package/publications/report-builder-reports.js.map +0 -1
- package/publications/super-admin.d.ts +0 -2
- package/publications/super-admin.js +0 -16
- package/publications/super-admin.js.map +0 -1
- package/publications/user-groups.d.ts +0 -1
- package/publications/user-groups.js +0 -16
- package/publications/user-groups.js.map +0 -1
- package/publications/user-guides.d.ts +0 -1
- package/publications/user-guides.js +0 -16
- package/publications/user-guides.js.map +0 -1
- package/resolveio-server-app.d.ts +0 -70
- package/resolveio-server-app.js +0 -801
- package/resolveio-server-app.js.map +0 -1
- package/server-app.d.ts +0 -167
- package/server-app.js +0 -2784
- package/server-app.js.map +0 -1
- package/services/codex-client.d.ts +0 -119
- package/services/codex-client.js +0 -1470
- package/services/codex-client.js.map +0 -1
- package/services/openai-client.d.ts +0 -46
- package/services/openai-client.js +0 -318
- package/services/openai-client.js.map +0 -1
- package/types/error-report.d.ts +0 -25
- package/types/error-report.js +0 -4
- package/types/error-report.js.map +0 -1
- package/types/slow-query-report.d.ts +0 -27
- package/types/slow-query-report.js +0 -6
- package/types/slow-query-report.js.map +0 -1
- package/util/common.d.ts +0 -31
- package/util/common.js +0 -683
- package/util/common.js.map +0 -1
- package/util/customer-portal-password.d.ts +0 -13
- package/util/customer-portal-password.js +0 -209
- package/util/customer-portal-password.js.map +0 -1
- package/util/error-reporter.d.ts +0 -52
- package/util/error-reporter.js +0 -326
- package/util/error-reporter.js.map +0 -1
- package/util/error-tracking.d.ts +0 -13
- package/util/error-tracking.js +0 -120
- package/util/error-tracking.js.map +0 -1
- package/util/report-builder-unwinds.d.ts +0 -15
- package/util/report-builder-unwinds.js +0 -156
- package/util/report-builder-unwinds.js.map +0 -1
- package/util/schema-report-builder.d.ts +0 -6
- package/util/schema-report-builder.js +0 -481
- package/util/schema-report-builder.js.map +0 -1
- package/util/slow-query-reporter.d.ts +0 -28
- package/util/slow-query-reporter.js +0 -226
- package/util/slow-query-reporter.js.map +0 -1
- package/util/subscription-dependency-context.d.ts +0 -34
- package/util/subscription-dependency-context.js +0 -1283
- package/util/subscription-dependency-context.js.map +0 -1
- package/util/tokenizer.d.ts +0 -5
- package/util/tokenizer.js +0 -41
- package/util/tokenizer.js.map +0 -1
- package/workers/codex-runner.worker.d.ts +0 -1
- package/workers/codex-runner.worker.js +0 -192
- package/workers/codex-runner.worker.js.map +0 -1
- /package/{private → src/private}/email-templates/enrollment.html +0 -0
- /package/{private → src/private}/email-templates/forgot-password.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket.html +0 -0
- /package/{public_api.d.ts → src/public_api.ts} +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# AI Assistant Report Builder Bridge Playbook
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
This playbook defines how the ResolveIO AI assistant should fetch live data with high reliability.
|
|
5
|
+
|
|
6
|
+
The assistant must not perform unrestricted collection access decisions.
|
|
7
|
+
All data retrieval behavior is constrained by the Report Builder bridge contract:
|
|
8
|
+
|
|
9
|
+
- `REPORT_BUILDER_READ` for list, detail, and simple count/total requests
|
|
10
|
+
- `REPORT_BUILDER_AGG` for grouped summaries, trends, and ranked breakdowns
|
|
11
|
+
|
|
12
|
+
## System Flow
|
|
13
|
+
The runtime flow is:
|
|
14
|
+
|
|
15
|
+
1. User asks a question.
|
|
16
|
+
2. Assistant identifies if data is needed.
|
|
17
|
+
3. Assistant resolves candidate collection and field names from context.
|
|
18
|
+
4. Assistant emits one report-builder directive line.
|
|
19
|
+
5. Server validates permission scope and collection eligibility.
|
|
20
|
+
6. Server executes scoped read or aggregate with fallback logic.
|
|
21
|
+
7. Server returns normalized table data.
|
|
22
|
+
8. Assistant answers in plain language and includes a markdown table.
|
|
23
|
+
|
|
24
|
+
## Bridge Guardrails
|
|
25
|
+
The bridge enforces:
|
|
26
|
+
|
|
27
|
+
- Permission checks using `permissionView`
|
|
28
|
+
- Customer and client scoping for non-super-admin users
|
|
29
|
+
- Invoice permission checks for invoice-like datasets
|
|
30
|
+
- Disallowed operators (`$where`, `$function`, `$accumulator`) blocked
|
|
31
|
+
- Collection eligibility limited to report-builder-enabled datasets (`useRB`)
|
|
32
|
+
|
|
33
|
+
If a dataset is not report-builder-enabled, the request is rejected with a bridge error.
|
|
34
|
+
|
|
35
|
+
## Querying Rules For the Assistant
|
|
36
|
+
Use this sequence for every data request:
|
|
37
|
+
|
|
38
|
+
1. Resolve intent type: list/detail vs grouped analytics.
|
|
39
|
+
2. Resolve report style:
|
|
40
|
+
- Dated report for any breakdown over time (daily/weekly/monthly/quarterly/yearly trends).
|
|
41
|
+
- Grouped report for nested/grouped headers, grouped buckets, or grouped totals by dimensions.
|
|
42
|
+
- List report for simple flat records without grouped or time-based bucketing.
|
|
43
|
+
3. Resolve collection from route hints, user terms, and known field hints.
|
|
44
|
+
4. Choose directive type:
|
|
45
|
+
- Use `REPORT_BUILDER_READ` for snapshot rows, details, counts, or small totals.
|
|
46
|
+
- Use `REPORT_BUILDER_AGG` for grouped sums/counts, trend lines, and rankings.
|
|
47
|
+
5. Include `permissionView` in every directive.
|
|
48
|
+
6. Keep query minimal:
|
|
49
|
+
- add projection
|
|
50
|
+
- add sort
|
|
51
|
+
- add limit
|
|
52
|
+
7. Enforce sort strategy:
|
|
53
|
+
- Prefer ascending sort by popular keys when present: `name`, `company`, `item` (fallbacks: `title`, `label`, `customer`).
|
|
54
|
+
- If no popular key exists, use stable fallback sort: `createdAt`/`date_created` then `_id`.
|
|
55
|
+
8. Build filter logic intentionally:
|
|
56
|
+
- Use `$and` for required constraints.
|
|
57
|
+
- Use `$or` for alternative matches (name/company/item text patterns).
|
|
58
|
+
9. Use advanced structures when needed:
|
|
59
|
+
- Use custom fields for derived metrics (rates, percentages, margin, computed totals).
|
|
60
|
+
- Use collection joins/lookups when selected fields span related collections.
|
|
61
|
+
- If multiple arrays are selected, link arrays using shared identifiers (`_id` or `id_<x>`) to prevent duplicate/cartesian expansion.
|
|
62
|
+
10. Use bounded relative dates (`<= $$NOW`) unless user requests future range.
|
|
63
|
+
11. For empty result sets, run a tiny probe and fallback sequence before concluding no data.
|
|
64
|
+
|
|
65
|
+
## Reliability Fallback Sequence
|
|
66
|
+
When a query returns zero rows:
|
|
67
|
+
|
|
68
|
+
1. Validate date field assumptions (`date_created`, `createdAt`, completion/paid fields).
|
|
69
|
+
2. Run tiny probe (`limit 1-3`) to inspect field shape.
|
|
70
|
+
3. Re-check name filters with tokenized regex.
|
|
71
|
+
4. Apply id lookup fallback where `id_*` fields represent foreign keys.
|
|
72
|
+
5. Retry collection mapping if a report/base partner collection is available.
|
|
73
|
+
|
|
74
|
+
Only then report no matching data.
|
|
75
|
+
|
|
76
|
+
## Response Contract
|
|
77
|
+
After bridge execution:
|
|
78
|
+
|
|
79
|
+
1. Give direct answer first.
|
|
80
|
+
2. Add concise support bullets.
|
|
81
|
+
3. Render markdown table.
|
|
82
|
+
4. Never output raw JSON.
|
|
83
|
+
5. Never claim certainty without successful tool response.
|
|
84
|
+
|
|
85
|
+
## Directive Templates
|
|
86
|
+
Read template:
|
|
87
|
+
|
|
88
|
+
`REPORT_BUILDER_READ: {"collection":"<name>","query":{...},"options":{"projection":{...},"sort":{...},"limit":20},"permissionView":"</route>"}`
|
|
89
|
+
|
|
90
|
+
Aggregate template:
|
|
91
|
+
|
|
92
|
+
`REPORT_BUILDER_AGG: {"collection":"<name>","pipeline":[...],"options":{"allowDiskUse":true,"limit":20},"permissionView":"</route>"}`
|
|
93
|
+
|
|
94
|
+
## Practical Examples
|
|
95
|
+
Simple list:
|
|
96
|
+
|
|
97
|
+
- User asks: "Show recent open work orders."
|
|
98
|
+
- Tool: `REPORT_BUILDER_READ`
|
|
99
|
+
- Query style: status filter + recent date range + sort desc + limit 20.
|
|
100
|
+
|
|
101
|
+
Breakdown:
|
|
102
|
+
|
|
103
|
+
- User asks: "Completed jobs by month for the last 6 months."
|
|
104
|
+
- Tool: `REPORT_BUILDER_AGG`
|
|
105
|
+
- Query style: bounded date range + completion status + group by month + sum/count.
|
|
106
|
+
|
|
107
|
+
Revenue:
|
|
108
|
+
|
|
109
|
+
- User asks: "Revenue this quarter."
|
|
110
|
+
- Tool: `REPORT_BUILDER_AGG`
|
|
111
|
+
- Query style: invoice dataset + paid/closed states + sum `paid_total` fallback `grand_total`.
|
|
112
|
+
|
|
113
|
+
## Operational Note
|
|
114
|
+
The internal server method names currently include `aiAssistantMongoRead` and `aiAssistantMongoAggregate`.
|
|
115
|
+
These methods now operate under report-builder bridge constraints and are not unrestricted Mongo explorer paths.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// eslint-plugin-custom/rules/no-filter-zero-index.js
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
meta: {
|
|
5
|
+
type: 'suggestion',
|
|
6
|
+
docs: {
|
|
7
|
+
description: 'Disallow using filter(...)[0] and suggest find(...) instead',
|
|
8
|
+
category: 'Best Practices',
|
|
9
|
+
recommended: false,
|
|
10
|
+
},
|
|
11
|
+
fixable: 'code',
|
|
12
|
+
messages: {
|
|
13
|
+
useFind: 'Please use `find` instead of `filter(...)[0]`.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
create(context) {
|
|
17
|
+
return {
|
|
18
|
+
MemberExpression(node) {
|
|
19
|
+
if (
|
|
20
|
+
node.property.type === 'Literal' &&
|
|
21
|
+
node.property.value === 0 &&
|
|
22
|
+
node.object.type === 'CallExpression' &&
|
|
23
|
+
node.object.callee.type === 'MemberExpression' &&
|
|
24
|
+
node.object.callee.property.name === 'filter'
|
|
25
|
+
) {
|
|
26
|
+
context.report({
|
|
27
|
+
node,
|
|
28
|
+
messageId: 'useFind',
|
|
29
|
+
fix(fixer) {
|
|
30
|
+
const sourceCode = context.getSourceCode();
|
|
31
|
+
const filterCall = node.object;
|
|
32
|
+
const args = sourceCode.getText(filterCall.arguments[0]);
|
|
33
|
+
const objectText = sourceCode.getText(filterCall.callee.object);
|
|
34
|
+
return fixer.replaceText(
|
|
35
|
+
node,
|
|
36
|
+
`${objectText}.find(${args})`
|
|
37
|
+
);
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
};
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const tsParser = require('@typescript-eslint/parser');
|
|
2
|
+
const typescriptPlugin = require('@typescript-eslint/eslint-plugin');
|
|
3
|
+
const customPlugin = require('./eslint-plugin-custom');
|
|
4
|
+
const promisePlugin = require('eslint-plugin-promise');
|
|
5
|
+
|
|
6
|
+
module.exports = [
|
|
7
|
+
// Base configuration for all files
|
|
8
|
+
{
|
|
9
|
+
files: ['src/**/*.ts'],
|
|
10
|
+
ignores: [
|
|
11
|
+
|
|
12
|
+
],
|
|
13
|
+
languageOptions: {
|
|
14
|
+
parser: tsParser,
|
|
15
|
+
// You can specify your TypeScript project here if needed
|
|
16
|
+
parserOptions: { project: './tsconfig.json' },
|
|
17
|
+
},
|
|
18
|
+
plugins: {
|
|
19
|
+
'@typescript-eslint': typescriptPlugin,
|
|
20
|
+
custom: customPlugin,
|
|
21
|
+
promise: promisePlugin
|
|
22
|
+
},
|
|
23
|
+
rules: {
|
|
24
|
+
"no-unused-vars": "error",
|
|
25
|
+
// Existing rule for Math.round
|
|
26
|
+
'no-restricted-properties': [
|
|
27
|
+
'error',
|
|
28
|
+
{
|
|
29
|
+
object: 'Math',
|
|
30
|
+
property: 'round',
|
|
31
|
+
message:
|
|
32
|
+
'Please use `round` from @resolveio/server-lib instead of Math.round.',
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
// Existing rule to restrict imports from 'moment'
|
|
36
|
+
'no-restricted-imports': [
|
|
37
|
+
'error',
|
|
38
|
+
{
|
|
39
|
+
name: 'moment',
|
|
40
|
+
message: "Please use 'moment-timezone' instead of 'moment'.",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
"no-restricted-syntax": [
|
|
44
|
+
"error",
|
|
45
|
+
{
|
|
46
|
+
"selector": "NewExpression[callee.name='Promise']",
|
|
47
|
+
"message": "Use async/await instead of constructing new Promise."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"selector": "CallExpression[callee.property.name='then']",
|
|
51
|
+
"message": "Use async/await instead of .then()"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"selector": "CallExpression[callee.property.name='catch']",
|
|
55
|
+
"message": "Use try/catch with async/await instead of .catch()"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"selector": "CallExpression[callee.property.name='forEach'] ArrowFunctionExpression AwaitExpression",
|
|
59
|
+
"message": "Don't use await inside forEach. Use for...of instead."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
// New rule to disallow filter(...)[0]
|
|
63
|
+
'custom/no-filter-zero-index': 'error',
|
|
64
|
+
'@typescript-eslint/no-floating-promises': [
|
|
65
|
+
'error',
|
|
66
|
+
{
|
|
67
|
+
ignoreIIFE: false, // optional
|
|
68
|
+
ignoreVoid: false // optional
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
'@typescript-eslint/require-await': 'error',
|
|
72
|
+
"no-throw-literal": "error",
|
|
73
|
+
"@typescript-eslint/await-thenable": "error",
|
|
74
|
+
"@typescript-eslint/no-misused-promises": [
|
|
75
|
+
"error",
|
|
76
|
+
{
|
|
77
|
+
"checksVoidReturn": {
|
|
78
|
+
"attributes": false,
|
|
79
|
+
"arguments": false,
|
|
80
|
+
"properties": false
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"promise/prefer-await-to-then": "error"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
files: ['src/collections/**/*.ts'],
|
|
89
|
+
languageOptions: {
|
|
90
|
+
parser: tsParser,
|
|
91
|
+
parserOptions: { project: './tsconfig.json' },
|
|
92
|
+
},
|
|
93
|
+
plugins: {
|
|
94
|
+
'@typescript-eslint': typescriptPlugin,
|
|
95
|
+
custom: customPlugin,
|
|
96
|
+
promise: promisePlugin,
|
|
97
|
+
},
|
|
98
|
+
rules: {
|
|
99
|
+
'@typescript-eslint/no-floating-promises': 'off', // Only change
|
|
100
|
+
// All other rules inherit from the base config
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
];
|
package/gulpfile.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
var gulp = require("gulp");
|
|
2
|
+
var exec = require('child_process').exec;
|
|
3
|
+
var rename = require("gulp-rename");
|
|
4
|
+
var del = require('del');
|
|
5
|
+
var sourcemaps = require('gulp-sourcemaps');
|
|
6
|
+
var zip = require('gulp-zip');
|
|
7
|
+
var ts = require("gulp-typescript");
|
|
8
|
+
var nodemon = require("gulp-nodemon");
|
|
9
|
+
var uglify = require('gulp-uglify');
|
|
10
|
+
var gulpIf = require('gulp-if');
|
|
11
|
+
const { ESLint } = require('eslint');
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var paths = {
|
|
16
|
+
src: 'src/**/*',
|
|
17
|
+
srcTS: 'src/**/*.ts',
|
|
18
|
+
srcPrivate: 'src/private/**/*',
|
|
19
|
+
|
|
20
|
+
tmp: 'tmp',
|
|
21
|
+
tmpJS: 'tmp/**/*.js',
|
|
22
|
+
tmpPrivate: 'tmp/private',
|
|
23
|
+
|
|
24
|
+
dist: 'dist',
|
|
25
|
+
distJS: 'dist/**/*.js',
|
|
26
|
+
distPrivate: 'dist/private',
|
|
27
|
+
|
|
28
|
+
dbDir: 'mongo/data/db',
|
|
29
|
+
dbLogs: 'mongo/log'
|
|
30
|
+
};
|
|
31
|
+
var shell = require('gulp-shell');
|
|
32
|
+
|
|
33
|
+
gulp.task('eslint', async function () {
|
|
34
|
+
const eslint = new ESLint({
|
|
35
|
+
overrideConfigFile: './eslint.config.js'
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const results = await eslint.lintFiles(['./src/**/*.ts']);
|
|
39
|
+
const formatter = await eslint.loadFormatter('stylish');
|
|
40
|
+
const resultText = formatter.format(results);
|
|
41
|
+
|
|
42
|
+
console.log(resultText);
|
|
43
|
+
|
|
44
|
+
const hasErrors = results.some(result => result.errorCount > 0);
|
|
45
|
+
|
|
46
|
+
if (hasErrors) {
|
|
47
|
+
throw new Error('ESLint errors detected');
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
gulp.task('clean', function () {
|
|
52
|
+
return del([paths.tmp, paths.dist]);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Function to check if MongoDB is running and kill the process if it is
|
|
56
|
+
function killMongoIfRunning(cb) {
|
|
57
|
+
exec('pgrep mongod', (err, stdout, stderr) => {
|
|
58
|
+
if (stdout) {
|
|
59
|
+
console.log('MongoDB is running. Killing the process...');
|
|
60
|
+
exec('pkill mongod', (killErr, killStdout, killStderr) => {
|
|
61
|
+
if (killErr) {
|
|
62
|
+
console.error('Error killing MongoDB:', killStderr);
|
|
63
|
+
} else {
|
|
64
|
+
console.log('MongoDB process killed.');
|
|
65
|
+
}
|
|
66
|
+
cb();
|
|
67
|
+
});
|
|
68
|
+
} else {
|
|
69
|
+
console.log('MongoDB is not running.');
|
|
70
|
+
cb();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Gulp task to start MongoDB after killing any existing process
|
|
76
|
+
gulp.task('mongo-start', function(done) {
|
|
77
|
+
killMongoIfRunning(() => {
|
|
78
|
+
fs.mkdirSync(paths.dbDir, { recursive: true });
|
|
79
|
+
fs.mkdirSync(paths.dbLogs, { recursive: true });
|
|
80
|
+
|
|
81
|
+
const finish = (() => {
|
|
82
|
+
let completed = false;
|
|
83
|
+
return (err) => {
|
|
84
|
+
if (completed) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
completed = true;
|
|
89
|
+
done(err);
|
|
90
|
+
};
|
|
91
|
+
})();
|
|
92
|
+
|
|
93
|
+
const stream = gulp.src('.')
|
|
94
|
+
.pipe(shell('mongod --fork --dbpath ' + paths.dbDir + '/ --logpath ' + paths.dbLogs + '/mongo.log --port 3001 --replSet rs0 --bind_ip 127.0.0.1'))
|
|
95
|
+
.pipe(shell(['mongosh --port 3001 < mongodbensurers.js']));
|
|
96
|
+
|
|
97
|
+
stream.on('error', finish);
|
|
98
|
+
stream.on('end', () => finish());
|
|
99
|
+
stream.on('finish', () => finish());
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
gulp.task("mongo-stop", function() {
|
|
104
|
+
return gulp.src('.')
|
|
105
|
+
.pipe(shell(['killall mongod']));
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
gulp.task("config", gulp.series("clean", function() {
|
|
109
|
+
return gulp.src('./settings.development.json')
|
|
110
|
+
.pipe(rename('settings.json'))
|
|
111
|
+
.pipe(gulp.dest(paths.tmp));
|
|
112
|
+
}));
|
|
113
|
+
|
|
114
|
+
gulp.task("email-templates", function() {
|
|
115
|
+
return gulp.src(paths.srcPrivate)
|
|
116
|
+
.pipe(gulp.dest(paths.tmpPrivate));
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
function waitForStreams(streams) {
|
|
120
|
+
return Promise.all(streams.map((stream) => {
|
|
121
|
+
return new Promise((resolve, reject) => {
|
|
122
|
+
stream.on('finish', resolve);
|
|
123
|
+
stream.on('end', resolve);
|
|
124
|
+
stream.on('error', reject);
|
|
125
|
+
});
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function buildTypeScript(destination) {
|
|
130
|
+
var tsProject = ts.createProject("tsconfig.json");
|
|
131
|
+
var tsResult = gulp.src('src/**/*.ts')
|
|
132
|
+
.pipe(sourcemaps.init())
|
|
133
|
+
.pipe(tsProject());
|
|
134
|
+
|
|
135
|
+
var jsStream = tsResult.js
|
|
136
|
+
.pipe(sourcemaps.mapSources((sourcePath) => {
|
|
137
|
+
return sourcePath;
|
|
138
|
+
}))
|
|
139
|
+
.pipe(sourcemaps.write("./"))
|
|
140
|
+
.pipe(gulp.dest(destination));
|
|
141
|
+
|
|
142
|
+
var dtsStream = tsResult.dts.pipe(gulp.dest(destination));
|
|
143
|
+
|
|
144
|
+
return waitForStreams([jsStream, dtsStream]);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
gulp.task("compile", function () {
|
|
148
|
+
return buildTypeScript(paths.tmp);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
gulp.task('watch', function (done) {
|
|
152
|
+
gulp.watch([paths.src, './node_modules'], gulp.series('compile'));
|
|
153
|
+
|
|
154
|
+
done();
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
gulp.task("default", gulp.parallel(gulp.series("config", "email-templates", 'compile', (done) => {
|
|
158
|
+
nodemon({
|
|
159
|
+
script: "tmp/client-server-app.js",
|
|
160
|
+
watch: "tmp",
|
|
161
|
+
// exec: 'node --inspect-brk --max-old-space-size=1800 --trace-warnings',
|
|
162
|
+
exec: 'node --inspect --max-old-space-size=1800 --trace-warnings',
|
|
163
|
+
delay: 500
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
done();
|
|
167
|
+
}), 'watch'));
|
|
168
|
+
|
|
169
|
+
gulp.task("config:dist", gulp.series("clean", function() {
|
|
170
|
+
const configPath = fs.existsSync('./settings.production.json') ? './settings.production.json' : './settings.development.json';
|
|
171
|
+
return gulp.src(configPath, {allowEmpty: true})
|
|
172
|
+
.pipe(rename('settings.json'))
|
|
173
|
+
.pipe(gulp.dest(paths.dist));
|
|
174
|
+
}));
|
|
175
|
+
|
|
176
|
+
gulp.task("email-templates:dist", function() {
|
|
177
|
+
return gulp.src(paths.srcPrivate)
|
|
178
|
+
.pipe(gulp.dest(paths.distPrivate));
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
gulp.task("compile:dist", function () {
|
|
182
|
+
return buildTypeScript(paths.dist);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
gulp.task("packages:dist", function () {
|
|
186
|
+
return gulp.src("./package.json")
|
|
187
|
+
.pipe(gulp.dest(paths.dist));
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
gulp.task("copy-methods-publications", function() {
|
|
191
|
+
return gulp.src(['methods.ts', 'publications.ts'])
|
|
192
|
+
.pipe(gulp.dest(paths.dist));
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
gulp.task("watch:dist", gulp.series("config:dist", "email-templates:dist", "compile:dist", "packages:dist", "copy-methods-publications", function(done) {
|
|
196
|
+
gulp.watch(paths.srcTS, gulp.series("compile:dist"));
|
|
197
|
+
gulp.watch(paths.srcPrivate, gulp.series("email-templates:dist"));
|
|
198
|
+
gulp.watch(['methods.ts', 'publications.ts'], gulp.series("copy-methods-publications"));
|
|
199
|
+
done();
|
|
200
|
+
}));
|
|
201
|
+
|
|
202
|
+
gulp.task("generate-methods-publications", function(done) {
|
|
203
|
+
exec('python3 methodAndPublicationListGenerator.py', function (err, stdout, stderr) {
|
|
204
|
+
if (err) {
|
|
205
|
+
console.error(`exec error: ${err}`);
|
|
206
|
+
return done(err);
|
|
207
|
+
}
|
|
208
|
+
console.log(`stdout: ${stdout}`);
|
|
209
|
+
console.error(`stderr: ${stderr}`);
|
|
210
|
+
done();
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
gulp.task("build-prod", gulp.series("eslint", "config", "email-templates:dist", "compile:dist", "packages:dist", "generate-methods-publications", "copy-methods-publications", function () {
|
|
215
|
+
return gulp.src(paths.dist + "/**/*", {dot : true});
|
|
216
|
+
}));
|