@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,224 @@
|
|
|
1
|
+
name: AI Assistant Nightly Eval
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '20 6 * * *'
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
server_dir:
|
|
9
|
+
description: 'Absolute path to server dir that has settings + data access'
|
|
10
|
+
required: false
|
|
11
|
+
default: ''
|
|
12
|
+
type: string
|
|
13
|
+
settings_file:
|
|
14
|
+
description: 'Settings filename relative to server_dir (example: settings.local.json)'
|
|
15
|
+
required: false
|
|
16
|
+
default: 'settings.local.json'
|
|
17
|
+
type: string
|
|
18
|
+
app_id:
|
|
19
|
+
description: 'App ID override (defaults to parent folder name of server_dir)'
|
|
20
|
+
required: false
|
|
21
|
+
default: ''
|
|
22
|
+
type: string
|
|
23
|
+
corpus_max_prompts:
|
|
24
|
+
description: 'Max prompts to include in corpus build'
|
|
25
|
+
required: false
|
|
26
|
+
default: '80'
|
|
27
|
+
type: string
|
|
28
|
+
corpus_lookback_days:
|
|
29
|
+
description: 'Lookback days for corpus harvesting'
|
|
30
|
+
required: false
|
|
31
|
+
default: '45'
|
|
32
|
+
type: string
|
|
33
|
+
corpus_run_limit:
|
|
34
|
+
description: 'Max corpus replay cases to execute'
|
|
35
|
+
required: false
|
|
36
|
+
default: '40'
|
|
37
|
+
type: string
|
|
38
|
+
codex_model:
|
|
39
|
+
description: 'Model override (example: gpt-5.3-codex)'
|
|
40
|
+
required: false
|
|
41
|
+
default: ''
|
|
42
|
+
type: string
|
|
43
|
+
fail_on_eval_errors:
|
|
44
|
+
description: 'Fail workflow when parity/replay/triage reports errors'
|
|
45
|
+
required: false
|
|
46
|
+
default: true
|
|
47
|
+
type: boolean
|
|
48
|
+
|
|
49
|
+
concurrency:
|
|
50
|
+
group: ai-assistant-nightly-eval-${{ github.ref }}
|
|
51
|
+
cancel-in-progress: false
|
|
52
|
+
|
|
53
|
+
permissions:
|
|
54
|
+
contents: read
|
|
55
|
+
|
|
56
|
+
jobs:
|
|
57
|
+
assistant-nightly-eval:
|
|
58
|
+
runs-on: self-hosted
|
|
59
|
+
timeout-minutes: 360
|
|
60
|
+
env:
|
|
61
|
+
AI_ASSISTANT_EVAL_SERVER_DIR: ${{ vars.AI_ASSISTANT_EVAL_SERVER_DIR }}
|
|
62
|
+
AI_ASSISTANT_EVAL_SETTINGS: ${{ vars.AI_ASSISTANT_EVAL_SETTINGS }}
|
|
63
|
+
AI_ASSISTANT_EVAL_APP_ID: ${{ vars.AI_ASSISTANT_EVAL_APP_ID }}
|
|
64
|
+
AI_ASSISTANT_EVAL_USER_ID: ${{ vars.AI_ASSISTANT_EVAL_USER_ID }}
|
|
65
|
+
AI_ASSISTANT_CODEX_MODEL_DEFAULT: ${{ vars.AI_ASSISTANT_CODEX_MODEL }}
|
|
66
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
67
|
+
|
|
68
|
+
steps:
|
|
69
|
+
- name: Checkout
|
|
70
|
+
uses: actions/checkout@v4
|
|
71
|
+
|
|
72
|
+
- name: Setup Node 22
|
|
73
|
+
uses: actions/setup-node@v4
|
|
74
|
+
with:
|
|
75
|
+
node-version: '22'
|
|
76
|
+
cache: npm
|
|
77
|
+
|
|
78
|
+
- name: Install Dependencies
|
|
79
|
+
run: npm ci
|
|
80
|
+
|
|
81
|
+
- name: Resolve Eval Environment
|
|
82
|
+
shell: bash
|
|
83
|
+
run: |
|
|
84
|
+
set -euo pipefail
|
|
85
|
+
|
|
86
|
+
if [[ -z "${OPENAI_API_KEY:-}" ]]; then
|
|
87
|
+
echo "::error::OPENAI_API_KEY secret is required for AI assistant eval runs."
|
|
88
|
+
exit 1
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
SERVER_DIR="${{ github.event.inputs.server_dir || '' }}"
|
|
92
|
+
if [[ -z "$SERVER_DIR" ]]; then
|
|
93
|
+
SERVER_DIR="${AI_ASSISTANT_EVAL_SERVER_DIR:-}"
|
|
94
|
+
fi
|
|
95
|
+
if [[ -z "$SERVER_DIR" ]]; then
|
|
96
|
+
FALLBACK="$GITHUB_WORKSPACE/../resolveio-all/geochem/server"
|
|
97
|
+
if [[ -d "$FALLBACK" ]]; then
|
|
98
|
+
SERVER_DIR="$FALLBACK"
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
if [[ -z "$SERVER_DIR" || ! -d "$SERVER_DIR" ]]; then
|
|
102
|
+
echo "::error::Could not resolve a valid server directory. Provide workflow input 'server_dir' or repo var 'AI_ASSISTANT_EVAL_SERVER_DIR'."
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
SETTINGS_FILE="${{ github.event.inputs.settings_file || '' }}"
|
|
107
|
+
if [[ -z "$SETTINGS_FILE" ]]; then
|
|
108
|
+
SETTINGS_FILE="${AI_ASSISTANT_EVAL_SETTINGS:-settings.local.json}"
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
APP_ID="${{ github.event.inputs.app_id || '' }}"
|
|
112
|
+
if [[ -z "$APP_ID" ]]; then
|
|
113
|
+
APP_ID="${AI_ASSISTANT_EVAL_APP_ID:-$(basename "$(dirname "$SERVER_DIR")")}"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
CODEX_MODEL="${{ github.event.inputs.codex_model || '' }}"
|
|
117
|
+
if [[ -z "$CODEX_MODEL" ]]; then
|
|
118
|
+
CODEX_MODEL="${AI_ASSISTANT_CODEX_MODEL_DEFAULT:-}"
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
echo "AI_ASSISTANT_CORPUS_SERVER_DIR=$SERVER_DIR" >> "$GITHUB_ENV"
|
|
122
|
+
echo "AI_ASSISTANT_PARITY_SERVER_DIR=$SERVER_DIR" >> "$GITHUB_ENV"
|
|
123
|
+
echo "AI_ASSISTANT_CORPUS_SETTINGS=$SETTINGS_FILE" >> "$GITHUB_ENV"
|
|
124
|
+
echo "AI_ASSISTANT_PARITY_SETTINGS=$SETTINGS_FILE" >> "$GITHUB_ENV"
|
|
125
|
+
echo "AI_ASSISTANT_CORPUS_APP_ID=$APP_ID" >> "$GITHUB_ENV"
|
|
126
|
+
echo "AI_ASSISTANT_PARITY_APP_ID=$APP_ID" >> "$GITHUB_ENV"
|
|
127
|
+
echo "AI_ASSISTANT_CORPUS_MAX_PROMPTS=${{ github.event.inputs.corpus_max_prompts || '80' }}" >> "$GITHUB_ENV"
|
|
128
|
+
echo "AI_ASSISTANT_CORPUS_LOOKBACK_DAYS=${{ github.event.inputs.corpus_lookback_days || '45' }}" >> "$GITHUB_ENV"
|
|
129
|
+
echo "AI_ASSISTANT_CORPUS_RUN_LIMIT=${{ github.event.inputs.corpus_run_limit || '40' }}" >> "$GITHUB_ENV"
|
|
130
|
+
if [[ -n "${AI_ASSISTANT_EVAL_USER_ID:-}" ]]; then
|
|
131
|
+
echo "AI_ASSISTANT_CORPUS_USER_ID=${AI_ASSISTANT_EVAL_USER_ID}" >> "$GITHUB_ENV"
|
|
132
|
+
fi
|
|
133
|
+
if [[ -n "$CODEX_MODEL" ]]; then
|
|
134
|
+
echo "AI_ASSISTANT_CODEX_MODEL=$CODEX_MODEL" >> "$GITHUB_ENV"
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
echo "Resolved server_dir=$SERVER_DIR"
|
|
138
|
+
echo "Resolved settings_file=$SETTINGS_FILE"
|
|
139
|
+
echo "Resolved app_id=$APP_ID"
|
|
140
|
+
|
|
141
|
+
- name: Build Query Corpus
|
|
142
|
+
id: corpus_build
|
|
143
|
+
shell: bash
|
|
144
|
+
run: npm run ai-assistant-corpus-build
|
|
145
|
+
|
|
146
|
+
- name: Run Data Parity E2E
|
|
147
|
+
id: data_parity
|
|
148
|
+
continue-on-error: true
|
|
149
|
+
shell: bash
|
|
150
|
+
run: npm run ai-assistant-data-parity-e2e
|
|
151
|
+
|
|
152
|
+
- name: Run Corpus Replay E2E
|
|
153
|
+
id: corpus_replay
|
|
154
|
+
continue-on-error: true
|
|
155
|
+
shell: bash
|
|
156
|
+
run: npm run ai-assistant-corpus-replay-e2e
|
|
157
|
+
|
|
158
|
+
- name: Build Failure Triage + Clusters
|
|
159
|
+
id: eval_triage
|
|
160
|
+
if: always()
|
|
161
|
+
continue-on-error: true
|
|
162
|
+
shell: bash
|
|
163
|
+
run: npm run ai-assistant-eval-triage
|
|
164
|
+
|
|
165
|
+
- name: Upload Eval Artifacts
|
|
166
|
+
if: always()
|
|
167
|
+
uses: actions/upload-artifact@v4
|
|
168
|
+
with:
|
|
169
|
+
name: ai-assistant-eval-${{ github.run_id }}
|
|
170
|
+
retention-days: 21
|
|
171
|
+
if-no-files-found: warn
|
|
172
|
+
path: |
|
|
173
|
+
tmp/ai-assistant-query-corpus.json
|
|
174
|
+
tmp/ai-assistant-data-parity-e2e-output.json
|
|
175
|
+
tmp/ai-assistant-corpus-replay-e2e-output.json
|
|
176
|
+
tmp/ai-assistant-eval-triage.json
|
|
177
|
+
tmp/ai-assistant-eval-triage.md
|
|
178
|
+
|
|
179
|
+
- name: Publish Summary
|
|
180
|
+
if: always()
|
|
181
|
+
shell: bash
|
|
182
|
+
run: |
|
|
183
|
+
set -euo pipefail
|
|
184
|
+
if [[ -f tmp/ai-assistant-eval-triage.md ]]; then
|
|
185
|
+
cat tmp/ai-assistant-eval-triage.md >> "$GITHUB_STEP_SUMMARY"
|
|
186
|
+
else
|
|
187
|
+
echo "No triage markdown generated." >> "$GITHUB_STEP_SUMMARY"
|
|
188
|
+
fi
|
|
189
|
+
if [[ -f tmp/ai-assistant-eval-triage.json ]]; then
|
|
190
|
+
node <<'NODE' >> "$GITHUB_STEP_SUMMARY"
|
|
191
|
+
const fs = require('fs');
|
|
192
|
+
const triagePath = 'tmp/ai-assistant-eval-triage.json';
|
|
193
|
+
const triage = JSON.parse(fs.readFileSync(triagePath, 'utf8'));
|
|
194
|
+
const top = (triage?.allFailures?.priorityClusters || []).slice(0, 5);
|
|
195
|
+
console.log('');
|
|
196
|
+
console.log('### Top Priority Clusters');
|
|
197
|
+
if (!top.length) {
|
|
198
|
+
console.log('- None');
|
|
199
|
+
process.exit(0);
|
|
200
|
+
}
|
|
201
|
+
top.forEach((cluster, index) => {
|
|
202
|
+
console.log(`${index + 1}. ${cluster.name} (score=${cluster.score}, cases=${cluster.count})`);
|
|
203
|
+
});
|
|
204
|
+
NODE
|
|
205
|
+
fi
|
|
206
|
+
|
|
207
|
+
- name: Enforce Eval Status
|
|
208
|
+
if: always()
|
|
209
|
+
shell: bash
|
|
210
|
+
run: |
|
|
211
|
+
set -euo pipefail
|
|
212
|
+
FAIL_ON_ERRORS="${{ github.event_name != 'workflow_dispatch' || github.event.inputs.fail_on_eval_errors == 'true' }}"
|
|
213
|
+
if [[ "$FAIL_ON_ERRORS" != "true" ]]; then
|
|
214
|
+
echo "Eval status enforcement disabled by workflow input."
|
|
215
|
+
exit 0
|
|
216
|
+
fi
|
|
217
|
+
|
|
218
|
+
PARITY_OUTCOME="${{ steps.data_parity.outcome }}"
|
|
219
|
+
REPLAY_OUTCOME="${{ steps.corpus_replay.outcome }}"
|
|
220
|
+
TRIAGE_OUTCOME="${{ steps.eval_triage.outcome }}"
|
|
221
|
+
if [[ "$PARITY_OUTCOME" != "success" || "$REPLAY_OUTCOME" != "success" || "$TRIAGE_OUTCOME" != "success" ]]; then
|
|
222
|
+
echo "::error::AI assistant eval reported failures. Check uploaded artifacts and triage summary."
|
|
223
|
+
exit 1
|
|
224
|
+
fi
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: AI Assistant PR Guardrails
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
paths:
|
|
8
|
+
- '.github/workflows/ai-assistant-pr-guardrails.yml'
|
|
9
|
+
- 'src/methods/ai-terminal.ts'
|
|
10
|
+
- 'src/services/codex-client.ts'
|
|
11
|
+
- 'tests/ai-assistant-utils.test.ts'
|
|
12
|
+
- 'tests/ai-assistant-routing-eval.test.ts'
|
|
13
|
+
- 'tests/ai-assistant-eval-triage.ts'
|
|
14
|
+
- 'tests/ai-assistant-corpus-build.ts'
|
|
15
|
+
- 'tests/ai-assistant-data-parity-e2e.ts'
|
|
16
|
+
- 'tests/ai-assistant-corpus-replay-e2e.ts'
|
|
17
|
+
- 'package.json'
|
|
18
|
+
- 'package-lock.json'
|
|
19
|
+
workflow_dispatch:
|
|
20
|
+
|
|
21
|
+
concurrency:
|
|
22
|
+
group: ai-assistant-pr-guardrails-${{ github.event.pull_request.number || github.ref }}
|
|
23
|
+
cancel-in-progress: true
|
|
24
|
+
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
ai-assistant-guardrails:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
timeout-minutes: 30
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- name: Checkout
|
|
35
|
+
uses: actions/checkout@v4
|
|
36
|
+
|
|
37
|
+
- name: Setup Node 22
|
|
38
|
+
uses: actions/setup-node@v4
|
|
39
|
+
with:
|
|
40
|
+
node-version: '22'
|
|
41
|
+
cache: npm
|
|
42
|
+
|
|
43
|
+
- name: Install Dependencies
|
|
44
|
+
run: npm ci
|
|
45
|
+
|
|
46
|
+
- name: Run AI Assistant Utils Tests
|
|
47
|
+
run: npm run ai-assistant-utils-test
|
|
48
|
+
|
|
49
|
+
- name: Run AI Assistant Routing Eval Tests
|
|
50
|
+
run: npm run ai-assistant-routing-eval-test
|
|
51
|
+
|
|
52
|
+
- name: Publish Summary
|
|
53
|
+
if: always()
|
|
54
|
+
shell: bash
|
|
55
|
+
run: |
|
|
56
|
+
set -euo pipefail
|
|
57
|
+
echo "## AI Assistant PR Guardrails" >> "$GITHUB_STEP_SUMMARY"
|
|
58
|
+
echo "" >> "$GITHUB_STEP_SUMMARY"
|
|
59
|
+
echo "- \`ai-assistant-utils-test\`: completed" >> "$GITHUB_STEP_SUMMARY"
|
|
60
|
+
echo "- \`ai-assistant-routing-eval-test\`: completed" >> "$GITHUB_STEP_SUMMARY"
|
package/.nodemon.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Place your settings in this file to overwrite default and user settings.
|
|
2
|
+
{
|
|
3
|
+
"editor.minimap.enabled": false,
|
|
4
|
+
"javascript.preferences.importModuleSpecifier": "relative",
|
|
5
|
+
"typescript.preferences.importModuleSpecifier": "relative",
|
|
6
|
+
"javascript.preferences.quoteStyle": "single",
|
|
7
|
+
"git.ignoreLimitWarning": true,
|
|
8
|
+
"editor.codeActionsOnSave": {
|
|
9
|
+
"source.organizeImports": "explicit",
|
|
10
|
+
"source.fixAll.eslint": "always"
|
|
11
|
+
},
|
|
12
|
+
"eslint.validate": [
|
|
13
|
+
"typescript",
|
|
14
|
+
"javascript",
|
|
15
|
+
"typescriptreact",
|
|
16
|
+
"javascriptreact",
|
|
17
|
+
"html"
|
|
18
|
+
],
|
|
19
|
+
"eslint.run": "onType",
|
|
20
|
+
"eslint.enable": true
|
|
21
|
+
}
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
resolveio-server-lib provides the backend infrastructure for the ResolveIO platform. It exposes server methods, publications, queues, and worker coordination so heavy work runs off the main thread.
|
|
5
|
+
|
|
6
|
+
> Written for contributors and for GitHub Copilot / OpenAI Codex to learn the library.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
resolveio-server-lib is a Node 22 / TypeScript library built on Mongo 8 (never use Mongoose). The core server connects through a custom Mongo wrapper and dispatches work to workers when clustered.
|
|
12
|
+
|
|
13
|
+
### Directory Map
|
|
14
|
+
```txt
|
|
15
|
+
src/
|
|
16
|
+
├─ collections/Mongo collection helpers
|
|
17
|
+
├─ models/TypeScript interfaces & SimpleSchema
|
|
18
|
+
├─ methods/loadXMethods() modules registering method handlers
|
|
19
|
+
├─ publications/loadXPublications() modules registering subscriptions
|
|
20
|
+
├─ managers/infrastructure managers (MethodManager, WebSocketManager, etc.)
|
|
21
|
+
├─ cron/scheduled jobs
|
|
22
|
+
├─ http/Express route helpers
|
|
23
|
+
├─ util/shared utilities
|
|
24
|
+
resolveio-server-app.tsbootstraps the server and connects to Mongo
|
|
25
|
+
server-app.tsHTTP/WebSocket server for main & worker processes
|
|
26
|
+
client-server-app.tsclient-facing entry for hybrid deployments
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Core Managers
|
|
30
|
+
- MethodManager: registers method handlers via `methodManager.methods({ ... })`
|
|
31
|
+
- SubscriptionManager: registers publications via `subscriptionManager.publications({ ... })`
|
|
32
|
+
- WebSocketManager: tracks socket connections and emits messages
|
|
33
|
+
- WorkerDispatcherManager & WorkerServerManager: queue and execute heavy jobs
|
|
34
|
+
- CronManager: defines recurring jobs in `src/cron`
|
|
35
|
+
- MongoManager & LocalLogManager: database and log helpers
|
|
36
|
+
|
|
37
|
+
### Methods
|
|
38
|
+
- Stateless functions invoked by clients.
|
|
39
|
+
- Defined in `src/methods/*` using `loadXMethods` patterns.
|
|
40
|
+
- Each method provides a `check` (SimpleSchema) and an async `function`.
|
|
41
|
+
```ts
|
|
42
|
+
export function loadFooMethods(methodManager: MethodManager) {
|
|
43
|
+
methodManager.methods({
|
|
44
|
+
doSomething: {
|
|
45
|
+
check: new SimpleSchema({ name: { type: String } }),
|
|
46
|
+
function: async function (name: string) {
|
|
47
|
+
// logic
|
|
48
|
+
return result;
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Publications
|
|
56
|
+
- Stream Mongo documents or computed data to subscribers.
|
|
57
|
+
- Defined in `src/publications/*` using `loadXPublications`.
|
|
58
|
+
- Publication objects declare `function`, optional `check`, and affected `collections`.
|
|
59
|
+
```ts
|
|
60
|
+
export function loadFlagsPublications(subscriptionManager: SubscriptionManager) {
|
|
61
|
+
subscriptionManager.publications({
|
|
62
|
+
flagWithType: {
|
|
63
|
+
function: (flagType: string) => Flags.findOne({ type: flagType }),
|
|
64
|
+
check: new SimpleSchema({ flagType: { type: String } }),
|
|
65
|
+
collections: ['flags'],
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Worker & Queue Agents
|
|
72
|
+
- Heavy or blocking work should be dispatched to worker servers.
|
|
73
|
+
- Use `WorkerDispatcherManager.enqueue(task)` for background processing.
|
|
74
|
+
- Cron jobs live in `src/cron` and register through `CronManager`.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Coding Conventions
|
|
79
|
+
- Tabs for indentation, newline `else if`, opening brace on same line.
|
|
80
|
+
- No `find` in loops; batch fetch then `bulkWrite`.
|
|
81
|
+
- Separate validation, data retrieval, and processing blocks.
|
|
82
|
+
- Use `async/await` with `try/catch`.
|
|
83
|
+
- Never use `Math.round`; always use `round` from the ResolveIO client/server libraries.
|
|
84
|
+
- Use `async/await` with `try/catch` instead of `.then()`/`.catch()`/`.finally()`.
|
|
85
|
+
- Never leave unused variables, parameters, or imports; remove or refactor instead of suppressing lint.
|
|
86
|
+
- Never construct Promises or use `.then()`/`.catch()`/`.finally()`; use `async/await` + `try/catch`.
|
|
87
|
+
- Never leave promises floating; `await` or `return` every async call (including `Promise.all`).
|
|
88
|
+
- Do not `await` inside `forEach`; use `for...of` or `Promise.all` with `map`.
|
|
89
|
+
- Every async method must `await` at least one call (Mongo transactions).
|
|
90
|
+
- Follow the `eslint.ts` rules.
|
|
91
|
+
- Models and collections must mirror each other at all times.
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
if (x > 3) {
|
|
95
|
+
console.log(1);
|
|
96
|
+
}
|
|
97
|
+
else if (x === 2) {
|
|
98
|
+
console.log(2);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log(3);
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Formatting & Linting
|
|
108
|
+
- `.editorconfig`, `.prettierrc.json`, and `.vscode/settings.json` enforce tabs and 120-column width.
|
|
109
|
+
- Always open `eslint.config.js` in this project before coding and follow its rules; do not assume defaults from other repos.
|
|
110
|
+
- Run lint before committing:
|
|
111
|
+
```bash
|
|
112
|
+
npx eslint .
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Quick Start
|
|
118
|
+
```bash
|
|
119
|
+
npm install
|
|
120
|
+
npm run build
|
|
121
|
+
npm start
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## PR Checklist
|
|
127
|
+
- Tabs only; `else`/`else if` start on new lines.
|
|
128
|
+
- Avoid `find` in loops; use `bulkWrite`.
|
|
129
|
+
- Use transactions when multiple writes must succeed atomically.
|
|
130
|
+
- Offload heavy work to workers.
|
|
131
|
+
- Run `npx eslint .` before committing.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Response Requirements
|
|
136
|
+
|
|
137
|
+
- Include a customer-facing summary of the request and the estimated the number of human hours an advanced ResolveIO engineer would take to fully complete the task including testing.
|
|
138
|
+
- Include a work ticket summary (what was done) and the estimated the number of human hours an advanced ResolveIO engineer would take to fully complete the task including testing.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Anti-Patterns
|
|
143
|
+
- Converting tabs to spaces.
|
|
144
|
+
- `updateOne` or `find` in loops.
|
|
145
|
+
- Blocking work on the main server.
|
|
146
|
+
- Deep nesting without early returns.
|
|
147
|
+
|
|
148
|
+
## STRING _id POLICY
|
|
149
|
+
- `_id` values are always strings in this codebase.
|
|
150
|
+
- Generate `_id` values with `objectIdHexString()`.
|
|
151
|
+
- Never use MongoDB `ObjectId` values or assumptions for `_id`.
|
|
152
|
+
- For bulk writes (`insertMany`, `bulkWrite`, batch upserts), always set `_id` explicitly as a string before writing.
|
|
153
|
+
- Never let MongoDB auto-generate `_id`, because that can create `ObjectId`-style ids.
|
|
154
|
+
|
|
155
|
+
## RESOLVEIO LIBRARY SOURCE-OF-TRUTH POLICY
|
|
156
|
+
- Never use `patch-package` for any `@resolveio/*` library changes.
|
|
157
|
+
- Never patch `node_modules/@resolveio/*` as the primary fix path.
|
|
158
|
+
- Always implement fixes in the actual source library repo (for example `resolveio-server-lib` or `resolveio-client-lib`).
|
|
159
|
+
- After applying a library-source fix, explicitly report:
|
|
160
|
+
- Why the fix had to be made in the library source (root cause and ownership).
|
|
161
|
+
- What downstream impact to expect (version bump/publish, consumer upgrades, rollout risk, and compatibility considerations).
|
|
162
|
+
|
|
163
|
+
## AI Terminal Boundary Policy
|
|
164
|
+
|
|
165
|
+
- Keep `resolveio-server-lib/src/methods/ai-terminal.ts` strictly platform-generic (`server-lib` / core ResolveIO only).
|
|
166
|
+
- Do not add app-specific names, app-only aliases, app-specific field fallbacks, or app-specific branching logic in `server-lib` AI terminal code.
|
|
167
|
+
- Put app-specific AI behavior in the app repo layer (for example `server/src/ai/assistant-heuristics.json` and app-level method/config wiring), not in `resolveio-server-lib`.
|
|
168
|
+
|
|
169
|
+
## Distinct Filter Guidance
|
|
170
|
+
|
|
171
|
+
- For list/filter dropdowns, use distinct-backed options from the underlying collection data wherever practical instead of hardcoded option lists.
|
|
172
|
+
- Prefer list-template distinct filter support (`optionsDistinctKey`, `distinctQuery`, `distinctSort`, `distinctCollection`) when using `resolveio-list-template`.
|
|
173
|
+
- Keep an explicit "All" option for optional filters and ensure labels/values map to the true stored field values.
|
|
174
|
+
- Use hardcoded options only when values are truly fixed business enums that should not vary by dataset.
|
|
175
|
+
|
|
176
|
+
## Rio Select Form-Control Rule
|
|
177
|
+
|
|
178
|
+
- Never apply Bootstrap `form-control` to `rio-select` (including `class="form-control"`). Use component-specific classes for `rio-select` styling.
|
|
179
|
+
- Never apply Bootstrap `form-control` to `rio-date-picker` (including `class="form-control"`). Use component-specific classes for `rio-date-picker` styling.
|
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## Copyright
|
|
2
|
+
|
|
3
|
+
Copyright © 2017-2019 ResolveIO, LLC. All Rights Reserved. This work is to be used/viewed by ResolveIO, LLC Employees ONLY.
|
|
4
|
+
|
|
5
|
+
## ResolveIO Command Line
|
|
6
|
+
|
|
7
|
+
- `$ npm run server` - Run the server application.
|
|
8
|
+
- `$ npm run build-prod` - Build production (dist folder).
|
|
9
|
+
- `$ npm run package` - Build tarball for npm publish (version inside package json, must rebuild if changed)
|
|
10
|
+
- `$ npm publish ./resolveio-server-lib-x.x.x.tgz` - Publish tarball to npm
|
|
11
|
+
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
This package contains:
|
|
15
|
+
|
|
16
|
+
- ResolveIO Server Library
|
|
17
|
+
|
|
18
|
+
### Server
|
|
19
|
+
|
|
20
|
+
The `server` folder contain single TypeScript (`.ts`) file which is the main file (`/server/src/index.ts`), and creates both connections to client-database and resolveio-support database, then creates the main server instance, and then starts it.
|
|
21
|
+
|
|
22
|
+
All other server files should be located under `/server/src/*`.
|
package/build_package.sh
ADDED
package/compileDTS.pl
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
use strict;
|
|
2
|
+
use warnings;
|
|
3
|
+
use JSON;
|
|
4
|
+
|
|
5
|
+
my @allIds;
|
|
6
|
+
|
|
7
|
+
my $dir = './dist';
|
|
8
|
+
|
|
9
|
+
my $extraFiles = '';
|
|
10
|
+
|
|
11
|
+
search_dir($dir);
|
|
12
|
+
|
|
13
|
+
sub search_dir {
|
|
14
|
+
|
|
15
|
+
my ($locdir) = @_;
|
|
16
|
+
# print "Entered search_dir sub, working with directory => $locdir \n";
|
|
17
|
+
my $dh; # handle
|
|
18
|
+
|
|
19
|
+
if ( !opendir ($dh, $locdir)) {
|
|
20
|
+
warn "Unable to open $locdir: $!\n";
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
my @FILES = grep { $_ ne '.' && $_ ne '..' } readdir($dh);
|
|
25
|
+
|
|
26
|
+
foreach my $file (@FILES) {
|
|
27
|
+
my $path = "$locdir/$file";
|
|
28
|
+
if ( -d $path ) {
|
|
29
|
+
# print "Directory $path found\n";
|
|
30
|
+
search_dir ($path);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if ($file =~ m/.d.ts/ and $file !~ m/index.d.ts/) {
|
|
34
|
+
# print "Open file $path\n";
|
|
35
|
+
open (FILE, "<", "$path");
|
|
36
|
+
my @lines = <FILE>;
|
|
37
|
+
close FILE;
|
|
38
|
+
chomp @lines;
|
|
39
|
+
|
|
40
|
+
for (my $k = 0; $k < scalar(@lines); $k++) {
|
|
41
|
+
if ($lines[$k] =~ m/^export / and $lines[$k] !~ m/export {};/) {
|
|
42
|
+
$extraFiles .= $lines[$k] . "\n";
|
|
43
|
+
|
|
44
|
+
if ($lines[$k] =~ m/\{\s*$/) {
|
|
45
|
+
while($lines[++$k] !~ m/^\};?\s*$/) {
|
|
46
|
+
$extraFiles .= $lines[$k] . "\n";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$extraFiles .= $lines[$k] . "\n";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
closedir ($dh);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
print "Extras\n\n$extraFiles";
|
|
61
|
+
|
|
62
|
+
open (FILE, ">>", "./dist/index.d.ts");
|
|
63
|
+
print FILE "\n$extraFiles";
|
|
64
|
+
close FILE;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# AI Assistant Nightly Eval
|
|
2
|
+
|
|
3
|
+
This repo now includes a scheduled workflow at:
|
|
4
|
+
|
|
5
|
+
- `.github/workflows/ai-assistant-nightly-eval.yml`
|
|
6
|
+
- `.github/workflows/ai-assistant-pr-guardrails.yml`
|
|
7
|
+
|
|
8
|
+
It runs:
|
|
9
|
+
|
|
10
|
+
1. `npm run ai-assistant-corpus-build`
|
|
11
|
+
2. `npm run ai-assistant-data-parity-e2e`
|
|
12
|
+
3. `npm run ai-assistant-corpus-replay-e2e`
|
|
13
|
+
4. `npm run ai-assistant-eval-triage`
|
|
14
|
+
|
|
15
|
+
Artifacts are uploaded from `tmp/` and the workflow summary includes top prioritized failure clusters.
|
|
16
|
+
|
|
17
|
+
PR guardrails run on pull requests and execute:
|
|
18
|
+
|
|
19
|
+
1. `npm run ai-assistant-utils-test`
|
|
20
|
+
2. `npm run ai-assistant-routing-eval-test`
|
|
21
|
+
|
|
22
|
+
## Required GitHub Setup
|
|
23
|
+
|
|
24
|
+
Set the secret:
|
|
25
|
+
|
|
26
|
+
- `OPENAI_API_KEY`
|
|
27
|
+
|
|
28
|
+
Set repository variables (recommended):
|
|
29
|
+
|
|
30
|
+
- `AI_ASSISTANT_EVAL_SERVER_DIR`: absolute path to server folder with settings and data access
|
|
31
|
+
- `AI_ASSISTANT_EVAL_SETTINGS`: settings filename (default `settings.local.json`)
|
|
32
|
+
- `AI_ASSISTANT_EVAL_APP_ID`: app id override (optional)
|
|
33
|
+
- `AI_ASSISTANT_EVAL_USER_ID`: user id override for corpus replay/build (optional)
|
|
34
|
+
- `AI_ASSISTANT_CODEX_MODEL`: model override (optional)
|
|
35
|
+
|
|
36
|
+
## Running Manually
|
|
37
|
+
|
|
38
|
+
Use **Actions -> AI Assistant Nightly Eval -> Run workflow**.
|
|
39
|
+
|
|
40
|
+
Optional dispatch inputs:
|
|
41
|
+
|
|
42
|
+
- `server_dir`
|
|
43
|
+
- `settings_file`
|
|
44
|
+
- `app_id`
|
|
45
|
+
- `corpus_max_prompts`
|
|
46
|
+
- `corpus_lookback_days`
|
|
47
|
+
- `corpus_run_limit`
|
|
48
|
+
- `codex_model`
|
|
49
|
+
- `fail_on_eval_errors`
|
|
50
|
+
|
|
51
|
+
## Output Files
|
|
52
|
+
|
|
53
|
+
Main outputs:
|
|
54
|
+
|
|
55
|
+
- `tmp/ai-assistant-query-corpus.json`
|
|
56
|
+
- `tmp/ai-assistant-data-parity-e2e-output.json`
|
|
57
|
+
- `tmp/ai-assistant-corpus-replay-e2e-output.json`
|
|
58
|
+
- `tmp/ai-assistant-eval-triage.json`
|
|
59
|
+
- `tmp/ai-assistant-eval-triage.md`
|
|
60
|
+
|
|
61
|
+
The triage JSON now includes:
|
|
62
|
+
|
|
63
|
+
- `allFailures.intentBuckets`
|
|
64
|
+
- `allFailures.collectionBuckets`
|
|
65
|
+
- `allFailures.priorityClusters`
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# AI Assistant Preflight Checklist
|
|
2
|
+
|
|
3
|
+
Run this checklist before broader assistant evals.
|
|
4
|
+
|
|
5
|
+
1. Lock deterministic runtime knobs in `settings.development.json`:
|
|
6
|
+
- `AI_ASSISTANT_CODEX_PLANNER_ENABLED`
|
|
7
|
+
- `AI_ASSISTANT_FAST_MODE_ENABLED`
|
|
8
|
+
- `AI_ASSISTANT_ALWAYS_ALLOW_PROBE`
|
|
9
|
+
- `AI_ASSISTANT_RUN_BUDGET_MS`
|
|
10
|
+
- `AI_ASSISTANT_MONGO_MAX_TIME_MS`
|
|
11
|
+
- `AI_ASSISTANT_CODEX_TIMEOUT_MS`
|
|
12
|
+
|
|
13
|
+
2. Run focused assistant tests:
|
|
14
|
+
- `npm run ai-assistant-utils-test`
|
|
15
|
+
- `npm run ai-assistant-routing-eval-test`
|
|
16
|
+
|
|
17
|
+
3. Validate the preflight prompt matrix:
|
|
18
|
+
- `npm run ai-assistant-preflight-matrix`
|
|
19
|
+
- Optional JSON output: `npm run ai-assistant-preflight-matrix -- --json`
|
|
20
|
+
|
|
21
|
+
4. Use safe config copies when sharing logs/results:
|
|
22
|
+
- Share `settings.development.redacted.json` (not `settings.development.json`)
|
|
23
|
+
- Do not post raw secrets/tokens in issue comments or eval reports.
|