@resolveio/server-lib 22.3.40 → 22.3.42

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.
Files changed (687) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +189 -0
  4. package/README.md +22 -0
  5. package/build_package.sh +5 -0
  6. package/compileDTS.pl +64 -0
  7. package/docs/ai-assistant-nightly-eval.md +65 -0
  8. package/docs/ai-assistant-preflight-checklist.md +23 -0
  9. package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
  10. package/eslint-plugin-custom/index.js +7 -0
  11. package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
  12. package/eslint.config.js +103 -0
  13. package/gulpfile.js +216 -0
  14. package/methodAndPublicationListGenerator.py +375 -0
  15. package/mongodbensurers.js +2 -0
  16. package/mongostop.js +3 -0
  17. package/package.json +1 -1
  18. package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
  19. package/settings.development.json +25 -0
  20. package/settings.development.redacted.json +25 -0
  21. package/src/.env +12 -0
  22. package/src/ai/assistant-core-heuristics.ts +379 -0
  23. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
  24. package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
  25. package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
  26. package/src/ai/resolveio-platform-intelligence.ts +462 -0
  27. package/src/client-server-app.ts +12 -0
  28. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  29. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  30. package/src/collections/ai-terminal-message.collection.ts +77 -0
  31. package/src/collections/app-setting.collection.ts +104 -0
  32. package/src/collections/app-status.collection.ts +58 -0
  33. package/src/collections/communication-metric.collection.ts +84 -0
  34. package/src/collections/counter.collection.ts +56 -0
  35. package/src/collections/cron-job-history.collection.ts +94 -0
  36. package/src/collections/cron-job.collection.ts +92 -0
  37. package/src/collections/customer-notification.collection.ts +131 -0
  38. package/src/collections/customer-portal-password.collection.ts +76 -0
  39. package/src/collections/email-history.collection.ts +127 -0
  40. package/src/collections/email-verified.collection.ts +62 -0
  41. package/src/collections/file.collection.ts +74 -0
  42. package/src/collections/flag-update.collection.ts +57 -0
  43. package/src/collections/flag.collection.ts +57 -0
  44. package/src/collections/log-method-latency.collection.ts +77 -0
  45. package/src/collections/log-subscription.collection.ts +80 -0
  46. package/src/collections/log.collection.ts +93 -0
  47. package/src/collections/logged-in-users.collection.ts +67 -0
  48. package/src/collections/monitor-cpu.collection.ts +65 -0
  49. package/src/collections/monitor-function.collection.ts +74 -0
  50. package/src/collections/monitor-memory.collection.ts +77 -0
  51. package/src/collections/monitor-mongo.collection.ts +71 -0
  52. package/src/collections/notification.collection.ts +57 -0
  53. package/src/collections/openai-usage-ledger.collection.ts +77 -0
  54. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  55. package/src/collections/report-builder-library.collection.ts +89 -0
  56. package/src/collections/report-builder-report.collection.ts +184 -0
  57. package/src/collections/user-group.collection.ts +89 -0
  58. package/src/collections/user-guide.collection.ts +57 -0
  59. package/src/collections/user.collection.ts +181 -0
  60. package/src/cron/cron.ts +117 -0
  61. package/src/fixtures/cron-jobs.ts +95 -0
  62. package/src/fixtures/init.ts +35 -0
  63. package/src/http/auth.ts +764 -0
  64. package/src/http/health.ts +7 -0
  65. package/src/http/home.ts +90 -0
  66. package/src/http/slow-query-publication.ts +49 -0
  67. package/src/index.ts +1 -0
  68. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  69. package/src/managers/communication-metric.manager.ts +82 -0
  70. package/src/managers/cron.manager.ts +333 -0
  71. package/src/managers/customer-notification-content.manager.ts +236 -0
  72. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  73. package/src/managers/error-auto-fix.manager.ts +2767 -0
  74. package/src/managers/local-log.manager.ts +113 -0
  75. package/src/managers/method.manager.ts +1827 -0
  76. package/src/managers/mongo.manager.ts +4575 -0
  77. package/src/managers/monitor.manager.ts +507 -0
  78. package/src/managers/openai-usage-ledger.manager.ts +116 -0
  79. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  80. package/src/managers/slow-query.manager.ts +519 -0
  81. package/src/managers/subscription.manager.ts +3128 -0
  82. package/src/managers/websocket.manager.ts +746 -0
  83. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  84. package/src/managers/worker-server.manager.ts +536 -0
  85. package/src/methods/accounts.ts +532 -0
  86. package/src/methods/ai-terminal.ts +23043 -0
  87. package/src/methods/app-settings.ts +114 -0
  88. package/src/methods/aws.ts +649 -0
  89. package/src/methods/collections.ts +641 -0
  90. package/src/methods/counters.ts +69 -0
  91. package/src/methods/cron-jobs.ts +2614 -0
  92. package/src/methods/customer-notifications.ts +458 -0
  93. package/src/methods/diagnostics.ts +616 -0
  94. package/src/methods/flag-updates.ts +7 -0
  95. package/src/methods/flags.ts +7 -0
  96. package/src/methods/logs.ts +657 -0
  97. package/src/methods/mongo-explorer.ts +1880 -0
  98. package/src/methods/monitor.ts +540 -0
  99. package/src/methods/pdf.ts +1236 -0
  100. package/src/methods/publications.ts +129 -0
  101. package/src/methods/report-builder.ts +3300 -0
  102. package/src/methods/support.ts +335 -0
  103. package/src/models/ai-terminal-conversation.model.ts +19 -0
  104. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  105. package/src/models/ai-terminal-message.model.ts +24 -0
  106. package/src/models/app-setting.model.ts +17 -0
  107. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  108. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  109. package/src/models/collection-document.model.ts +24 -0
  110. package/src/models/communication-metric.model.ts +23 -0
  111. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  112. package/src/models/cron-job-history.model.ts +16 -0
  113. package/src/models/cron-job.model.ts +15 -0
  114. package/src/models/customer-notification.model.ts +28 -0
  115. package/src/models/customer-portal-password.model.ts +12 -0
  116. package/src/models/dialog.model.ts +25 -0
  117. package/{models/email-history.model.js → src/models/email-history.model.ts} +35 -4
  118. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  119. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  120. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  121. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  122. package/src/models/log-method-latency.model.ts +11 -0
  123. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  124. package/src/models/log.model.ts +19 -0
  125. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  126. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  127. package/src/models/method.model.ts +25 -0
  128. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  129. package/src/models/monitor-function.model.ts +16 -0
  130. package/src/models/monitor-memory.model.ts +17 -0
  131. package/src/models/monitor-mongo.model.ts +15 -0
  132. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  133. package/src/models/openai-usage-ledger.model.ts +16 -0
  134. package/src/models/pagination.model.ts +35 -0
  135. package/src/models/permission.model.ts +14 -0
  136. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  137. package/src/models/report-builder-library.model.ts +20 -0
  138. package/src/models/report-builder-report.model.ts +136 -0
  139. package/src/models/report-builder.model.ts +68 -0
  140. package/src/models/select-data-label.model.ts +9 -0
  141. package/src/models/server-message.model.ts +31 -0
  142. package/src/models/slow-query-report.model.ts +23 -0
  143. package/src/models/subscription.model.ts +73 -0
  144. package/src/models/support-ticket.model.ts +104 -0
  145. package/src/models/user-group.model.ts +24 -0
  146. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  147. package/src/models/user.model.ts +96 -0
  148. package/src/private/images/ResolveIO.png +0 -0
  149. package/src/publications/ai-terminal.ts +73 -0
  150. package/src/publications/app-settings.ts +25 -0
  151. package/src/publications/app-status.ts +13 -0
  152. package/src/publications/cron-jobs.ts +40 -0
  153. package/src/publications/customer-notifications.ts +101 -0
  154. package/src/publications/files.ts +33 -0
  155. package/src/publications/flags-update.ts +19 -0
  156. package/src/publications/flags.ts +19 -0
  157. package/src/publications/logs.ts +163 -0
  158. package/src/publications/notifications.ts +13 -0
  159. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  160. package/src/publications/report-builder-libraries.ts +41 -0
  161. package/src/publications/report-builder-reports.ts +47 -0
  162. package/src/publications/super-admin.ts +13 -0
  163. package/src/publications/user-groups.ts +12 -0
  164. package/src/publications/user-guides.ts +12 -0
  165. package/src/resolveio-server-app.ts +617 -0
  166. package/src/server-app.ts +3354 -0
  167. package/src/services/codex-client.ts +1223 -0
  168. package/src/services/openai-client.ts +265 -0
  169. package/src/types/error-report.ts +26 -0
  170. package/src/types/js-tiktoken.d.ts +11 -0
  171. package/src/types/slow-query-report.ts +28 -0
  172. package/src/util/ai-qa-policy.ts +812 -0
  173. package/src/util/ai-runner-artifacts.ts +430 -0
  174. package/src/util/ai-runner-qa-auth.ts +337 -0
  175. package/src/util/ai-runner-qa-tools.ts +610 -0
  176. package/src/util/common.ts +649 -0
  177. package/src/util/customer-portal-password.ts +183 -0
  178. package/src/util/error-reporter.ts +332 -0
  179. package/src/util/error-tracking.ts +79 -0
  180. package/src/util/report-builder-unwinds.ts +180 -0
  181. package/src/util/schema-report-builder.ts +448 -0
  182. package/src/util/slow-query-reporter.ts +216 -0
  183. package/src/util/subscription-dependency-context.ts +1096 -0
  184. package/src/util/tokenizer.ts +38 -0
  185. package/src/workers/codex-runner.worker.ts +142 -0
  186. package/start_server.sh +5 -0
  187. package/tests/ai-assistant-corpus-build.ts +484 -0
  188. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  189. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  190. package/tests/ai-assistant-eval-triage.ts +831 -0
  191. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  192. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  193. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  194. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  195. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  196. package/tests/ai-assistant-utils.test.ts +2860 -0
  197. package/tests/ai-runner-contract.test.ts +215 -0
  198. package/tests/error-reporter.test.ts +145 -0
  199. package/tests/method-publication-generator.test.ts +46 -0
  200. package/tests/report-builder-linking.test.ts +79 -0
  201. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  202. package/tests/server-app-cron-owner.test.ts +127 -0
  203. package/tests/subscription-connect-race.test.ts +158 -0
  204. package/tests/subscription-dependency-context.test.ts +324 -0
  205. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  206. package/tests/subscription-manager-invalidation.test.ts +86 -0
  207. package/tsconfig.json +34 -0
  208. package/ai/assistant-core-heuristics.d.ts +0 -11
  209. package/ai/assistant-core-heuristics.js +0 -356
  210. package/ai/assistant-core-heuristics.js.map +0 -1
  211. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  212. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  213. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  214. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  215. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  216. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  217. package/ai/resolveio-platform-intelligence-types.js +0 -4
  218. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  219. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  220. package/ai/resolveio-platform-intelligence.js +0 -463
  221. package/ai/resolveio-platform-intelligence.js.map +0 -1
  222. package/client-server-app.d.ts +0 -1
  223. package/client-server-app.js +0 -68
  224. package/client-server-app.js.map +0 -1
  225. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  226. package/collections/ai-terminal-conversation.collection.js +0 -140
  227. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  228. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  229. package/collections/ai-terminal-issue-report.collection.js +0 -148
  230. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  231. package/collections/ai-terminal-message.collection.d.ts +0 -2
  232. package/collections/ai-terminal-message.collection.js +0 -121
  233. package/collections/ai-terminal-message.collection.js.map +0 -1
  234. package/collections/app-setting.collection.d.ts +0 -3
  235. package/collections/app-setting.collection.js +0 -103
  236. package/collections/app-setting.collection.js.map +0 -1
  237. package/collections/app-status.collection.d.ts +0 -3
  238. package/collections/app-status.collection.js +0 -57
  239. package/collections/app-status.collection.js.map +0 -1
  240. package/collections/communication-metric.collection.d.ts +0 -2
  241. package/collections/communication-metric.collection.js +0 -133
  242. package/collections/communication-metric.collection.js.map +0 -1
  243. package/collections/counter.collection.d.ts +0 -3
  244. package/collections/counter.collection.js +0 -56
  245. package/collections/counter.collection.js.map +0 -1
  246. package/collections/cron-job-history.collection.d.ts +0 -3
  247. package/collections/cron-job-history.collection.js +0 -137
  248. package/collections/cron-job-history.collection.js.map +0 -1
  249. package/collections/cron-job.collection.d.ts +0 -3
  250. package/collections/cron-job.collection.js +0 -92
  251. package/collections/cron-job.collection.js.map +0 -1
  252. package/collections/customer-notification.collection.d.ts +0 -3
  253. package/collections/customer-notification.collection.js +0 -130
  254. package/collections/customer-notification.collection.js.map +0 -1
  255. package/collections/customer-portal-password.collection.d.ts +0 -3
  256. package/collections/customer-portal-password.collection.js +0 -75
  257. package/collections/customer-portal-password.collection.js.map +0 -1
  258. package/collections/email-history.collection.d.ts +0 -3
  259. package/collections/email-history.collection.js +0 -127
  260. package/collections/email-history.collection.js.map +0 -1
  261. package/collections/email-verified.collection.d.ts +0 -3
  262. package/collections/email-verified.collection.js +0 -62
  263. package/collections/email-verified.collection.js.map +0 -1
  264. package/collections/file.collection.d.ts +0 -3
  265. package/collections/file.collection.js +0 -74
  266. package/collections/file.collection.js.map +0 -1
  267. package/collections/flag-update.collection.d.ts +0 -3
  268. package/collections/flag-update.collection.js +0 -57
  269. package/collections/flag-update.collection.js.map +0 -1
  270. package/collections/flag.collection.d.ts +0 -3
  271. package/collections/flag.collection.js +0 -57
  272. package/collections/flag.collection.js.map +0 -1
  273. package/collections/log-method-latency.collection.d.ts +0 -3
  274. package/collections/log-method-latency.collection.js +0 -77
  275. package/collections/log-method-latency.collection.js.map +0 -1
  276. package/collections/log-subscription.collection.d.ts +0 -3
  277. package/collections/log-subscription.collection.js +0 -80
  278. package/collections/log-subscription.collection.js.map +0 -1
  279. package/collections/log.collection.d.ts +0 -3
  280. package/collections/log.collection.js +0 -93
  281. package/collections/log.collection.js.map +0 -1
  282. package/collections/logged-in-users.collection.d.ts +0 -3
  283. package/collections/logged-in-users.collection.js +0 -67
  284. package/collections/logged-in-users.collection.js.map +0 -1
  285. package/collections/monitor-cpu.collection.d.ts +0 -3
  286. package/collections/monitor-cpu.collection.js +0 -65
  287. package/collections/monitor-cpu.collection.js.map +0 -1
  288. package/collections/monitor-function.collection.d.ts +0 -3
  289. package/collections/monitor-function.collection.js +0 -74
  290. package/collections/monitor-function.collection.js.map +0 -1
  291. package/collections/monitor-memory.collection.d.ts +0 -3
  292. package/collections/monitor-memory.collection.js +0 -77
  293. package/collections/monitor-memory.collection.js.map +0 -1
  294. package/collections/monitor-mongo.collection.d.ts +0 -3
  295. package/collections/monitor-mongo.collection.js +0 -71
  296. package/collections/monitor-mongo.collection.js.map +0 -1
  297. package/collections/notification.collection.d.ts +0 -3
  298. package/collections/notification.collection.js +0 -57
  299. package/collections/notification.collection.js.map +0 -1
  300. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  301. package/collections/openai-usage-ledger.collection.js +0 -124
  302. package/collections/openai-usage-ledger.collection.js.map +0 -1
  303. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  304. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  305. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  306. package/collections/report-builder-library.collection.d.ts +0 -3
  307. package/collections/report-builder-library.collection.js +0 -87
  308. package/collections/report-builder-library.collection.js.map +0 -1
  309. package/collections/report-builder-report.collection.d.ts +0 -4
  310. package/collections/report-builder-report.collection.js +0 -184
  311. package/collections/report-builder-report.collection.js.map +0 -1
  312. package/collections/user-group.collection.d.ts +0 -4
  313. package/collections/user-group.collection.js +0 -89
  314. package/collections/user-group.collection.js.map +0 -1
  315. package/collections/user-guide.collection.d.ts +0 -3
  316. package/collections/user-guide.collection.js +0 -57
  317. package/collections/user-guide.collection.js.map +0 -1
  318. package/collections/user.collection.d.ts +0 -4
  319. package/collections/user.collection.js +0 -180
  320. package/collections/user.collection.js.map +0 -1
  321. package/cron/cron.d.ts +0 -14
  322. package/cron/cron.js +0 -216
  323. package/cron/cron.js.map +0 -1
  324. package/fixtures/cron-jobs.d.ts +0 -1
  325. package/fixtures/cron-jobs.js +0 -150
  326. package/fixtures/cron-jobs.js.map +0 -1
  327. package/fixtures/init.d.ts +0 -1
  328. package/fixtures/init.js +0 -91
  329. package/fixtures/init.js.map +0 -1
  330. package/http/auth.d.ts +0 -2
  331. package/http/auth.js +0 -906
  332. package/http/auth.js.map +0 -1
  333. package/http/health.d.ts +0 -1
  334. package/http/health.js +0 -11
  335. package/http/health.js.map +0 -1
  336. package/http/home.d.ts +0 -1
  337. package/http/home.js +0 -134
  338. package/http/home.js.map +0 -1
  339. package/http/slow-query-publication.d.ts +0 -2
  340. package/http/slow-query-publication.js +0 -99
  341. package/http/slow-query-publication.js.map +0 -1
  342. package/index.d.ts +0 -1
  343. package/index.js +0 -19
  344. package/index.js.map +0 -1
  345. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  346. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  347. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  348. package/managers/communication-metric.manager.d.ts +0 -16
  349. package/managers/communication-metric.manager.js +0 -134
  350. package/managers/communication-metric.manager.js.map +0 -1
  351. package/managers/cron.manager.d.ts +0 -20
  352. package/managers/cron.manager.js +0 -534
  353. package/managers/cron.manager.js.map +0 -1
  354. package/managers/customer-notification-content.manager.d.ts +0 -55
  355. package/managers/customer-notification-content.manager.js +0 -158
  356. package/managers/customer-notification-content.manager.js.map +0 -1
  357. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  358. package/managers/diagnostic-manager-bootstrap.js +0 -260
  359. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  360. package/managers/error-auto-fix.manager.d.ts +0 -149
  361. package/managers/error-auto-fix.manager.js +0 -3064
  362. package/managers/error-auto-fix.manager.js.map +0 -1
  363. package/managers/local-log.manager.d.ts +0 -18
  364. package/managers/local-log.manager.js +0 -88
  365. package/managers/local-log.manager.js.map +0 -1
  366. package/managers/method.manager.d.ts +0 -83
  367. package/managers/method.manager.js +0 -1941
  368. package/managers/method.manager.js.map +0 -1
  369. package/managers/mongo.manager.d.ts +0 -224
  370. package/managers/mongo.manager.js +0 -5000
  371. package/managers/mongo.manager.js.map +0 -1
  372. package/managers/monitor.manager.d.ts +0 -70
  373. package/managers/monitor.manager.js +0 -550
  374. package/managers/monitor.manager.js.map +0 -1
  375. package/managers/openai-usage-ledger.manager.d.ts +0 -15
  376. package/managers/openai-usage-ledger.manager.js +0 -144
  377. package/managers/openai-usage-ledger.manager.js.map +0 -1
  378. package/managers/slow-query-verifier.manager.d.ts +0 -144
  379. package/managers/slow-query-verifier.manager.js +0 -3857
  380. package/managers/slow-query-verifier.manager.js.map +0 -1
  381. package/managers/slow-query.manager.d.ts +0 -28
  382. package/managers/slow-query.manager.js +0 -468
  383. package/managers/slow-query.manager.js.map +0 -1
  384. package/managers/subscription.manager.d.ts +0 -169
  385. package/managers/subscription.manager.js +0 -3434
  386. package/managers/subscription.manager.js.map +0 -1
  387. package/managers/websocket.manager.d.ts +0 -73
  388. package/managers/websocket.manager.js +0 -673
  389. package/managers/websocket.manager.js.map +0 -1
  390. package/managers/worker-dispatcher.manager.d.ts +0 -120
  391. package/managers/worker-dispatcher.manager.js +0 -1266
  392. package/managers/worker-dispatcher.manager.js.map +0 -1
  393. package/managers/worker-server.manager.d.ts +0 -35
  394. package/managers/worker-server.manager.js +0 -582
  395. package/managers/worker-server.manager.js.map +0 -1
  396. package/methods/accounts.d.ts +0 -2
  397. package/methods/accounts.js +0 -624
  398. package/methods/accounts.js.map +0 -1
  399. package/methods/ai-terminal.d.ts +0 -336
  400. package/methods/ai-terminal.js +0 -22782
  401. package/methods/ai-terminal.js.map +0 -1
  402. package/methods/app-settings.d.ts +0 -2
  403. package/methods/app-settings.js +0 -169
  404. package/methods/app-settings.js.map +0 -1
  405. package/methods/aws.d.ts +0 -2
  406. package/methods/aws.js +0 -877
  407. package/methods/aws.js.map +0 -1
  408. package/methods/collections.d.ts +0 -2
  409. package/methods/collections.js +0 -719
  410. package/methods/collections.js.map +0 -1
  411. package/methods/counters.d.ts +0 -2
  412. package/methods/counters.js +0 -113
  413. package/methods/counters.js.map +0 -1
  414. package/methods/cron-jobs.d.ts +0 -2
  415. package/methods/cron-jobs.js +0 -2475
  416. package/methods/cron-jobs.js.map +0 -1
  417. package/methods/customer-notifications.d.ts +0 -2
  418. package/methods/customer-notifications.js +0 -528
  419. package/methods/customer-notifications.js.map +0 -1
  420. package/methods/diagnostics.d.ts +0 -2
  421. package/methods/diagnostics.js +0 -703
  422. package/methods/diagnostics.js.map +0 -1
  423. package/methods/flag-updates.d.ts +0 -2
  424. package/methods/flag-updates.js +0 -8
  425. package/methods/flag-updates.js.map +0 -1
  426. package/methods/flags.d.ts +0 -2
  427. package/methods/flags.js +0 -8
  428. package/methods/flags.js.map +0 -1
  429. package/methods/logs.d.ts +0 -2
  430. package/methods/logs.js +0 -751
  431. package/methods/logs.js.map +0 -1
  432. package/methods/mongo-explorer.d.ts +0 -2
  433. package/methods/mongo-explorer.js +0 -1808
  434. package/methods/mongo-explorer.js.map +0 -1
  435. package/methods/monitor.d.ts +0 -2
  436. package/methods/monitor.js +0 -543
  437. package/methods/monitor.js.map +0 -1
  438. package/methods/pdf.d.ts +0 -2
  439. package/methods/pdf.js +0 -1216
  440. package/methods/pdf.js.map +0 -1
  441. package/methods/publications.d.ts +0 -1
  442. package/methods/publications.js +0 -183
  443. package/methods/publications.js.map +0 -1
  444. package/methods/report-builder.d.ts +0 -2
  445. package/methods/report-builder.js +0 -3094
  446. package/methods/report-builder.js.map +0 -1
  447. package/methods/support.d.ts +0 -2
  448. package/methods/support.js +0 -430
  449. package/methods/support.js.map +0 -1
  450. package/models/ai-terminal-conversation.model.d.ts +0 -17
  451. package/models/ai-terminal-conversation.model.js +0 -4
  452. package/models/ai-terminal-conversation.model.js.map +0 -1
  453. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  454. package/models/ai-terminal-issue-report.model.js +0 -4
  455. package/models/ai-terminal-issue-report.model.js.map +0 -1
  456. package/models/ai-terminal-message.model.d.ts +0 -22
  457. package/models/ai-terminal-message.model.js +0 -4
  458. package/models/ai-terminal-message.model.js.map +0 -1
  459. package/models/app-setting.model.d.ts +0 -16
  460. package/models/app-setting.model.js +0 -4
  461. package/models/app-setting.model.js.map +0 -1
  462. package/models/app-status.model.js +0 -4
  463. package/models/app-status.model.js.map +0 -1
  464. package/models/billing-logged-in-users.model.js +0 -4
  465. package/models/billing-logged-in-users.model.js.map +0 -1
  466. package/models/collection-document.model.d.ts +0 -21
  467. package/models/collection-document.model.js +0 -4
  468. package/models/collection-document.model.js.map +0 -1
  469. package/models/communication-metric.model.d.ts +0 -20
  470. package/models/communication-metric.model.js +0 -4
  471. package/models/communication-metric.model.js.map +0 -1
  472. package/models/counter.model.js +0 -4
  473. package/models/counter.model.js.map +0 -1
  474. package/models/cron-job-history.model.d.ts +0 -15
  475. package/models/cron-job-history.model.js +0 -4
  476. package/models/cron-job-history.model.js.map +0 -1
  477. package/models/cron-job.model.d.ts +0 -14
  478. package/models/cron-job.model.js +0 -4
  479. package/models/cron-job.model.js.map +0 -1
  480. package/models/customer-notification.model.d.ts +0 -26
  481. package/models/customer-notification.model.js +0 -4
  482. package/models/customer-notification.model.js.map +0 -1
  483. package/models/customer-portal-password.model.d.ts +0 -11
  484. package/models/customer-portal-password.model.js +0 -4
  485. package/models/customer-portal-password.model.js.map +0 -1
  486. package/models/dialog.model.d.ts +0 -23
  487. package/models/dialog.model.js +0 -4
  488. package/models/dialog.model.js.map +0 -1
  489. package/models/email-history.model.d.ts +0 -31
  490. package/models/email-history.model.js.map +0 -1
  491. package/models/email-verified.model.js +0 -4
  492. package/models/email-verified.model.js.map +0 -1
  493. package/models/file.model.js +0 -4
  494. package/models/file.model.js.map +0 -1
  495. package/models/flag-update.model.js +0 -4
  496. package/models/flag-update.model.js.map +0 -1
  497. package/models/flag.model.js +0 -4
  498. package/models/flag.model.js.map +0 -1
  499. package/models/log-method-latency.model.d.ts +0 -10
  500. package/models/log-method-latency.model.js +0 -4
  501. package/models/log-method-latency.model.js.map +0 -1
  502. package/models/log-subscription.model.js +0 -4
  503. package/models/log-subscription.model.js.map +0 -1
  504. package/models/log.model.d.ts +0 -17
  505. package/models/log.model.js +0 -4
  506. package/models/log.model.js.map +0 -1
  507. package/models/logged-in-users.model.js +0 -4
  508. package/models/logged-in-users.model.js.map +0 -1
  509. package/models/method-response.model.js +0 -4
  510. package/models/method-response.model.js.map +0 -1
  511. package/models/method.model.d.ts +0 -26
  512. package/models/method.model.js +0 -4
  513. package/models/method.model.js.map +0 -1
  514. package/models/monitor-cpu.model.js +0 -4
  515. package/models/monitor-cpu.model.js.map +0 -1
  516. package/models/monitor-function.model.d.ts +0 -14
  517. package/models/monitor-function.model.js +0 -4
  518. package/models/monitor-function.model.js.map +0 -1
  519. package/models/monitor-memory.model.d.ts +0 -15
  520. package/models/monitor-memory.model.js +0 -4
  521. package/models/monitor-memory.model.js.map +0 -1
  522. package/models/monitor-mongo.model.d.ts +0 -13
  523. package/models/monitor-mongo.model.js +0 -4
  524. package/models/monitor-mongo.model.js.map +0 -1
  525. package/models/notification.model.js +0 -4
  526. package/models/notification.model.js.map +0 -1
  527. package/models/openai-usage-ledger.model.d.ts +0 -15
  528. package/models/openai-usage-ledger.model.js +0 -4
  529. package/models/openai-usage-ledger.model.js.map +0 -1
  530. package/models/pagination.model.d.ts +0 -11
  531. package/models/pagination.model.js +0 -28
  532. package/models/pagination.model.js.map +0 -1
  533. package/models/permission.model.d.ts +0 -12
  534. package/models/permission.model.js +0 -4
  535. package/models/permission.model.js.map +0 -1
  536. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  537. package/models/report-builder-dashboard-builder.model.js +0 -4
  538. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  539. package/models/report-builder-library.model.d.ts +0 -17
  540. package/models/report-builder-library.model.js +0 -4
  541. package/models/report-builder-library.model.js.map +0 -1
  542. package/models/report-builder-report.model.d.ts +0 -121
  543. package/models/report-builder-report.model.js +0 -4
  544. package/models/report-builder-report.model.js.map +0 -1
  545. package/models/report-builder.model.d.ts +0 -61
  546. package/models/report-builder.model.js +0 -4
  547. package/models/report-builder.model.js.map +0 -1
  548. package/models/select-data-label.model.d.ts +0 -9
  549. package/models/select-data-label.model.js +0 -4
  550. package/models/select-data-label.model.js.map +0 -1
  551. package/models/server-message.model.d.ts +0 -32
  552. package/models/server-message.model.js +0 -4
  553. package/models/server-message.model.js.map +0 -1
  554. package/models/slow-query-report.model.d.ts +0 -23
  555. package/models/slow-query-report.model.js +0 -4
  556. package/models/slow-query-report.model.js.map +0 -1
  557. package/models/subscription.model.d.ts +0 -31
  558. package/models/subscription.model.js +0 -4
  559. package/models/subscription.model.js.map +0 -1
  560. package/models/support-ticket.model.d.ts +0 -87
  561. package/models/support-ticket.model.js +0 -4
  562. package/models/support-ticket.model.js.map +0 -1
  563. package/models/user-group.model.d.ts +0 -20
  564. package/models/user-group.model.js +0 -4
  565. package/models/user-group.model.js.map +0 -1
  566. package/models/user-guide.model.js +0 -4
  567. package/models/user-guide.model.js.map +0 -1
  568. package/models/user.model.d.ts +0 -84
  569. package/models/user.model.js +0 -4
  570. package/models/user.model.js.map +0 -1
  571. package/private/images/ResolveIO.png +0 -0
  572. package/public_api.js +0 -115
  573. package/public_api.js.map +0 -1
  574. package/publications/ai-terminal.d.ts +0 -1
  575. package/publications/ai-terminal.js +0 -122
  576. package/publications/ai-terminal.js.map +0 -1
  577. package/publications/app-settings.d.ts +0 -2
  578. package/publications/app-settings.js +0 -28
  579. package/publications/app-settings.js.map +0 -1
  580. package/publications/app-status.d.ts +0 -2
  581. package/publications/app-status.js +0 -16
  582. package/publications/app-status.js.map +0 -1
  583. package/publications/cron-jobs.d.ts +0 -2
  584. package/publications/cron-jobs.js +0 -88
  585. package/publications/cron-jobs.js.map +0 -1
  586. package/publications/customer-notifications.d.ts +0 -2
  587. package/publications/customer-notifications.js +0 -161
  588. package/publications/customer-notifications.js.map +0 -1
  589. package/publications/files.d.ts +0 -2
  590. package/publications/files.js +0 -36
  591. package/publications/files.js.map +0 -1
  592. package/publications/flags-update.d.ts +0 -2
  593. package/publications/flags-update.js +0 -22
  594. package/publications/flags-update.js.map +0 -1
  595. package/publications/flags.d.ts +0 -2
  596. package/publications/flags.js +0 -22
  597. package/publications/flags.js.map +0 -1
  598. package/publications/logs.d.ts +0 -2
  599. package/publications/logs.js +0 -164
  600. package/publications/logs.js.map +0 -1
  601. package/publications/notifications.d.ts +0 -2
  602. package/publications/notifications.js +0 -16
  603. package/publications/notifications.js.map +0 -1
  604. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  605. package/publications/report-builder-dashboard-builders.js +0 -42
  606. package/publications/report-builder-dashboard-builders.js.map +0 -1
  607. package/publications/report-builder-libraries.d.ts +0 -2
  608. package/publications/report-builder-libraries.js +0 -90
  609. package/publications/report-builder-libraries.js.map +0 -1
  610. package/publications/report-builder-reports.d.ts +0 -2
  611. package/publications/report-builder-reports.js +0 -50
  612. package/publications/report-builder-reports.js.map +0 -1
  613. package/publications/super-admin.d.ts +0 -2
  614. package/publications/super-admin.js +0 -16
  615. package/publications/super-admin.js.map +0 -1
  616. package/publications/user-groups.d.ts +0 -1
  617. package/publications/user-groups.js +0 -16
  618. package/publications/user-groups.js.map +0 -1
  619. package/publications/user-guides.d.ts +0 -1
  620. package/publications/user-guides.js +0 -16
  621. package/publications/user-guides.js.map +0 -1
  622. package/resolveio-server-app.d.ts +0 -70
  623. package/resolveio-server-app.js +0 -801
  624. package/resolveio-server-app.js.map +0 -1
  625. package/server-app.d.ts +0 -228
  626. package/server-app.js +0 -3566
  627. package/server-app.js.map +0 -1
  628. package/services/codex-client.d.ts +0 -126
  629. package/services/codex-client.js +0 -1622
  630. package/services/codex-client.js.map +0 -1
  631. package/services/openai-client.d.ts +0 -46
  632. package/services/openai-client.js +0 -318
  633. package/services/openai-client.js.map +0 -1
  634. package/types/error-report.d.ts +0 -25
  635. package/types/error-report.js +0 -4
  636. package/types/error-report.js.map +0 -1
  637. package/types/slow-query-report.d.ts +0 -27
  638. package/types/slow-query-report.js +0 -6
  639. package/types/slow-query-report.js.map +0 -1
  640. package/util/ai-qa-policy.d.ts +0 -119
  641. package/util/ai-qa-policy.js +0 -650
  642. package/util/ai-qa-policy.js.map +0 -1
  643. package/util/ai-runner-artifacts.d.ts +0 -74
  644. package/util/ai-runner-artifacts.js +0 -531
  645. package/util/ai-runner-artifacts.js.map +0 -1
  646. package/util/ai-runner-qa-auth.d.ts +0 -5
  647. package/util/ai-runner-qa-auth.js +0 -338
  648. package/util/ai-runner-qa-auth.js.map +0 -1
  649. package/util/ai-runner-qa-tools.d.ts +0 -16
  650. package/util/ai-runner-qa-tools.js +0 -600
  651. package/util/ai-runner-qa-tools.js.map +0 -1
  652. package/util/common.d.ts +0 -31
  653. package/util/common.js +0 -683
  654. package/util/common.js.map +0 -1
  655. package/util/customer-portal-password.d.ts +0 -13
  656. package/util/customer-portal-password.js +0 -209
  657. package/util/customer-portal-password.js.map +0 -1
  658. package/util/error-reporter.d.ts +0 -52
  659. package/util/error-reporter.js +0 -326
  660. package/util/error-reporter.js.map +0 -1
  661. package/util/error-tracking.d.ts +0 -13
  662. package/util/error-tracking.js +0 -120
  663. package/util/error-tracking.js.map +0 -1
  664. package/util/report-builder-unwinds.d.ts +0 -15
  665. package/util/report-builder-unwinds.js +0 -156
  666. package/util/report-builder-unwinds.js.map +0 -1
  667. package/util/schema-report-builder.d.ts +0 -6
  668. package/util/schema-report-builder.js +0 -481
  669. package/util/schema-report-builder.js.map +0 -1
  670. package/util/slow-query-reporter.d.ts +0 -28
  671. package/util/slow-query-reporter.js +0 -226
  672. package/util/slow-query-reporter.js.map +0 -1
  673. package/util/subscription-dependency-context.d.ts +0 -34
  674. package/util/subscription-dependency-context.js +0 -1283
  675. package/util/subscription-dependency-context.js.map +0 -1
  676. package/util/tokenizer.d.ts +0 -5
  677. package/util/tokenizer.js +0 -41
  678. package/util/tokenizer.js.map +0 -1
  679. package/workers/codex-runner.worker.d.ts +0 -1
  680. package/workers/codex-runner.worker.js +0 -192
  681. package/workers/codex-runner.worker.js.map +0 -1
  682. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  683. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  684. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  685. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  686. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  687. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -0,0 +1,352 @@
1
+ import {
2
+ buildResolveIOPlatformIntelligenceSystemPrompt,
3
+ getResolveIOPlatformDurableMemoryEntries,
4
+ getResolveIOPlatformIntelligenceRuleLines,
5
+ getResolveIOPlatformIntelligenceRuleSections
6
+ } from '../src/ai/resolveio-platform-intelligence';
7
+ import {
8
+ buildResolveIOPlatformIntelligenceSystemPromptWithSharedMemory,
9
+ hydrateResolveIOPlatformIntelligenceRuleOptions,
10
+ inferResolveIOPlatformIntelligenceMemoryFamilies,
11
+ listResolveIOPlatformIntelligenceMemoryEntries
12
+ } from '../src/ai/resolveio-platform-intelligence-memory';
13
+
14
+ function assert(condition: boolean, message: string) {
15
+ if (!condition) {
16
+ throw new Error(message);
17
+ }
18
+ }
19
+
20
+ function testCommonRulesIncludeResolveIOContracts() {
21
+ const rules = getResolveIOPlatformIntelligenceRuleLines({ mode: 'builder' });
22
+ assert(
23
+ rules.some((rule) => rule.includes('`_id` as a string')),
24
+ 'Expected rules to preserve the ResolveIO string `_id` contract'
25
+ );
26
+ assert(
27
+ rules.some((rule) => rule.includes('`rio-select`')),
28
+ 'Expected rules to prefer `rio-select`'
29
+ );
30
+ assert(
31
+ rules.some((rule) => rule.includes('`rio-chart`')),
32
+ 'Expected rules to prefer `rio-chart`'
33
+ );
34
+ assert(
35
+ rules.some((rule) => rule.includes('`rio-date-picker`')),
36
+ 'Expected rules to prefer `rio-date-picker`'
37
+ );
38
+ assert(
39
+ rules.some((rule) => rule.includes('Do not hand-edit generated Angular socket files')),
40
+ 'Expected rules to protect generated methods/publications files'
41
+ );
42
+ assert(
43
+ rules.some((rule) => rule.includes('Never use Mongoose')),
44
+ 'Expected rules to reject Mongoose in ResolveIO platform code'
45
+ );
46
+ assert(
47
+ rules.some((rule) => rule.includes('Never use Meteor')),
48
+ 'Expected rules to reject Meteor in ResolveIO platform code'
49
+ );
50
+ assert(
51
+ rules.some((rule) => rule.includes('ResolveIO `round` helper')),
52
+ 'Expected rules to prefer ResolveIO round helper over Math.round'
53
+ );
54
+ assert(
55
+ rules.some((rule) => rule.includes('Every cited file, symbol, route, collection, workflow, and scoped target must be verified')),
56
+ 'Expected rules to require real path and scope verification'
57
+ );
58
+ assert(
59
+ rules.some((rule) => rule.includes('Do not use placeholder or fuzzy path language')),
60
+ 'Expected rules to reject placeholder path language'
61
+ );
62
+ assert(
63
+ rules.some((rule) => rule.includes('Map non-technical user wording to internal collections')),
64
+ 'Expected rules to require internal collection/workflow inference from user wording'
65
+ );
66
+ assert(
67
+ rules.some((rule) => rule.includes('Do not use `*.versions` collections for ordinary requests')),
68
+ 'Expected rules to avoid version collections for ordinary requests'
69
+ );
70
+ assert(
71
+ rules.some((rule) => rule.includes('Company Secrets')),
72
+ 'Expected rules to require Company Secrets for external keys and config'
73
+ );
74
+ }
75
+
76
+ function testRioSelectRulesPreferOptionsMode() {
77
+ const rules = getResolveIOPlatformIntelligenceRuleLines({ mode: 'support' });
78
+ assert(
79
+ rules.some((rule) => rule.includes('`[options]` pipeline')),
80
+ 'Expected rio-select rules to prefer the `[options]` pipeline'
81
+ );
82
+ assert(
83
+ rules.some((rule) => rule.includes('Do not mix `[options]` and projected `<rio-option>`')),
84
+ 'Expected rio-select rules to reject mixed mode'
85
+ );
86
+ assert(
87
+ rules.some((rule) => rule.includes('large option sets')),
88
+ 'Expected rio-select rules to mention large-option performance guidance'
89
+ );
90
+ assert(
91
+ rules.some((rule) => rule.includes('distinct-backed options')),
92
+ 'Expected filter rules to prefer distinct-backed dropdown options'
93
+ );
94
+ assert(
95
+ rules.some((rule) => rule.includes('Do not apply Bootstrap `form-control` directly to `rio-select`')),
96
+ 'Expected styling rules to reject form-control on rio-select'
97
+ );
98
+ assert(
99
+ rules.some((rule) => rule.includes('`rio-calendar`')),
100
+ 'Expected rules to prefer rio-calendar for scheduling surfaces'
101
+ );
102
+ assert(
103
+ rules.some((rule) => rule.includes('`rio-pagination`')),
104
+ 'Expected rules to prefer rio-pagination for paginated navigation'
105
+ );
106
+ assert(
107
+ rules.some((rule) => rule.includes('keep them distinct: fix the failing path first')),
108
+ 'Expected rules to keep failing and comparator paths distinct'
109
+ );
110
+ }
111
+
112
+ function testBuilderRulesPromoteAppGenerationDiscipline() {
113
+ const rules = getResolveIOPlatformIntelligenceRuleLines({ mode: 'builder' });
114
+ assert(
115
+ rules.some((rule) => rule.includes('standard ResolveIO build flow in order')),
116
+ 'Expected builder rules to encode the standard ResolveIO build flow'
117
+ );
118
+ assert(
119
+ rules.some((rule) => rule.includes('Feature modules should normally include module, routing, permission, service')),
120
+ 'Expected builder rules to encode expected feature module structure'
121
+ );
122
+ assert(
123
+ rules.some((rule) => rule.includes('operator command center')),
124
+ 'Expected builder rules to require a tailored dashboard hub'
125
+ );
126
+ assert(
127
+ rules.some((rule) => rule.includes('assistant-heuristics.json')),
128
+ 'Expected builder rules to keep app-level assistant heuristics in sync'
129
+ );
130
+ assert(
131
+ rules.some((rule) => rule.includes('single sign-in entry')),
132
+ 'Expected builder rules to preserve default staff login UX'
133
+ );
134
+ }
135
+
136
+ function testAssistantDataRulesPromoteSafeReportBuilderUsage() {
137
+ const rules = getResolveIOPlatformIntelligenceRuleLines({ mode: 'assistant' });
138
+ assert(
139
+ rules.some((rule) => rule.includes('read-only ResolveIO data bridge (`REPORT_BUILDER_READ` / `REPORT_BUILDER_AGG`)')),
140
+ 'Expected rules to prefer the report-builder data bridge for live data'
141
+ );
142
+ assert(
143
+ rules.some((rule) => rule.includes('Always include a verified `permissionView`')),
144
+ 'Expected rules to require verified permissionView for live data queries'
145
+ );
146
+ assert(
147
+ rules.some((rule) => rule.includes('run the smallest safe probe you can')),
148
+ 'Expected rules to require probe validation before concluding no data'
149
+ );
150
+ assert(
151
+ rules.some((rule) => rule.includes('summarize first, then show a clean markdown table')),
152
+ 'Expected rules to require summary-first table output for live data'
153
+ );
154
+ }
155
+
156
+ function testDurableMemoryDefaultsAndFiltering() {
157
+ const defaultEntries = getResolveIOPlatformDurableMemoryEntries({ mode: 'support' });
158
+ assert(
159
+ defaultEntries.some((entry) => entry.family === 'rio-select' && entry.kind === 'accepted_pattern'),
160
+ 'Expected default durable memory to include rio-select accepted patterns'
161
+ );
162
+ assert(
163
+ defaultEntries.some((entry) => entry.family === 'shared-library-ownership' && entry.kind === 'rejected_fix_shape'),
164
+ 'Expected default durable memory to include shared-library rejected fix shapes'
165
+ );
166
+ assert(
167
+ defaultEntries.some((entry) => entry.family === 'dashboard-hub' && entry.kind === 'contract_violation'),
168
+ 'Expected default durable memory to include dashboard-hub contract violations'
169
+ );
170
+ const filteredEntries = getResolveIOPlatformDurableMemoryEntries({
171
+ mode: 'support',
172
+ memoryFamilies: ['rio-select']
173
+ });
174
+ assert(filteredEntries.length > 0, 'Expected filtered durable memory to retain rio-select entries');
175
+ assert(
176
+ filteredEntries.every((entry) => entry.family === 'rio-select' || (entry.tags || []).includes('rio-select')),
177
+ 'Expected filtered durable memory to stay scoped to the requested family'
178
+ );
179
+ assert(
180
+ !filteredEntries.some((entry) => entry.family === 'dashboard-hub'),
181
+ 'Expected unrelated durable memory families to be excluded by filtering'
182
+ );
183
+ }
184
+
185
+ function testPromptCanMergeCustomDurableMemory() {
186
+ const prompt = buildResolveIOPlatformIntelligenceSystemPrompt({
187
+ mode: 'builder',
188
+ outputStyle: 'markdown',
189
+ memoryFamilies: ['rio-select', 'report-builder'],
190
+ durableMemoryEntries: [
191
+ {
192
+ family: 'report-builder',
193
+ kind: 'accepted_pattern',
194
+ summary: 'Prefer verified lookup-aware aggregates when grouped metrics span related collections.'
195
+ }
196
+ ]
197
+ });
198
+ assert(prompt.includes('Durable Memory: Accepted Patterns:'), 'Expected durable memory accepted section');
199
+ assert(prompt.includes('rio-select: Accepted pattern:'), 'Expected prompt to include filtered rio-select durable memory');
200
+ assert(
201
+ prompt.includes('report-builder: Accepted pattern: Prefer verified lookup-aware aggregates when grouped metrics span related collections.'),
202
+ 'Expected prompt to include caller-supplied durable memory'
203
+ );
204
+ assert(
205
+ !prompt.includes('dashboard-hub: Contract violation:'),
206
+ 'Expected family filtering to keep unrelated durable memory out of the prompt'
207
+ );
208
+ }
209
+
210
+ function testSharedMemorySelectionInfersRelevantFamiliesFromContext() {
211
+ const families = inferResolveIOPlatformIntelligenceMemoryFamilies('support', [
212
+ 'The rio-select uses [options] with optionLabelFn and is showing a stale selected label after current_location changes.',
213
+ 'This may belong in resolveio-client-lib rather than the app repo.'
214
+ ]);
215
+ assert(families.includes('rio-select'), 'Expected rio-select family to be inferred from context');
216
+ assert(
217
+ families.includes('shared-library-ownership'),
218
+ 'Expected shared-library ownership family to be inferred from library-root-cause context'
219
+ );
220
+ const entries = listResolveIOPlatformIntelligenceMemoryEntries({
221
+ mode: 'support',
222
+ contextText: [
223
+ 'The rio-select uses [options] with optionLabelFn and is showing a stale selected label after current_location changes.',
224
+ 'This may belong in resolveio-client-lib rather than the app repo.'
225
+ ],
226
+ limit: 4
227
+ });
228
+ assert(entries.length > 0, 'Expected shared memory selection to return relevant entries');
229
+ assert(
230
+ entries.some((entry) => entry.family === 'rio-select'),
231
+ 'Expected shared memory selection to include rio-select entries'
232
+ );
233
+ assert(
234
+ entries.some((entry) => entry.family === 'shared-library-ownership'),
235
+ 'Expected shared memory selection to include shared-library ownership entries'
236
+ );
237
+ }
238
+
239
+ function testHydrateRuleOptionsUsesRelevantSharedMemoryInsteadOfWholeCorpus() {
240
+ const hydrated = hydrateResolveIOPlatformIntelligenceRuleOptions(
241
+ {
242
+ mode: 'assistant'
243
+ },
244
+ {
245
+ contextText: [
246
+ 'The issue mentions ObjectId assumptions for _id and a direct edit to angular/app/methods.ts.',
247
+ 'We need to keep _id as a string and regenerate generated socket files.'
248
+ ],
249
+ limit: 5
250
+ }
251
+ );
252
+ assert(hydrated.includeDefaultDurableMemory === false, 'Expected hydrated options to disable full-corpus default injection');
253
+ const entries = hydrated.durableMemoryEntries || [];
254
+ assert(
255
+ entries.some((entry) => entry.family === 'identifier-contract'),
256
+ 'Expected hydrated options to include identifier-contract memory'
257
+ );
258
+ assert(
259
+ entries.some((entry) => entry.family === 'generated-method-publication'),
260
+ 'Expected hydrated options to include generated-method-publication memory'
261
+ );
262
+ assert(
263
+ !entries.some((entry) => entry.family === 'dashboard-hub'),
264
+ 'Expected unrelated memory families to stay out of the hydrated options'
265
+ );
266
+ }
267
+
268
+ function testSharedPromptBuilderRendersRelevantCodeBackedMemory() {
269
+ const prompt = buildResolveIOPlatformIntelligenceSystemPromptWithSharedMemory(
270
+ {
271
+ mode: 'builder',
272
+ outputStyle: 'markdown'
273
+ },
274
+ {
275
+ contextText: [
276
+ 'This new app feature needs a real dashboard hub and full feature module wiring.',
277
+ 'Do not leave placeholder quick actions or dead links in the hub.'
278
+ ],
279
+ limit: 4
280
+ }
281
+ );
282
+ assert(prompt.includes('dashboard-hub: Contract violation:'), 'Expected prompt to include relevant dashboard-hub memory');
283
+ assert(
284
+ prompt.includes('feature-module-generation: Accepted pattern:'),
285
+ 'Expected prompt to include relevant feature-module-generation memory'
286
+ );
287
+ assert(
288
+ !prompt.includes('rio-select: Accepted pattern:'),
289
+ 'Expected unrelated rio-select memory to stay out of the shared-memory prompt'
290
+ );
291
+ }
292
+
293
+ function testPromptBuildsSectionedVerifyFirstGuidance() {
294
+ const prompt = buildResolveIOPlatformIntelligenceSystemPrompt({
295
+ mode: 'assistant',
296
+ outputStyle: 'markdown',
297
+ extraRules: ['Always verify the claimed fix with the most relevant local test or reproduction path before finalizing.']
298
+ });
299
+ assert(prompt.includes('Investigation Loop:'), 'Expected sectioned investigation loop guidance');
300
+ assert(prompt.includes('Data And ID Contracts:'), 'Expected sectioned data contract guidance');
301
+ assert(prompt.includes('Generated Files:'), 'Expected generated file guidance section');
302
+ assert(prompt.includes('Path Grounding And Scope:'), 'Expected path grounding guidance section');
303
+ assert(prompt.includes('Collection And Workflow Inference:'), 'Expected collection inference guidance section');
304
+ assert(prompt.includes('Platform Architecture:'), 'Expected architecture guidance section');
305
+ assert(prompt.includes('Server Implementation:'), 'Expected server implementation guidance section');
306
+ assert(prompt.includes('ResolveIO UI Libraries:'), 'Expected sectioned UI library guidance');
307
+ assert(prompt.includes('App Generation And UX:'), 'Expected app generation guidance section');
308
+ assert(prompt.includes('Auth And Shell:'), 'Expected auth and shell guidance section');
309
+ assert(prompt.includes('Shared Library Ownership:'), 'Expected sectioned shared-library guidance');
310
+ assert(prompt.includes('Live Data And Report Builder:'), 'Expected report builder guidance section');
311
+ assert(prompt.includes('Durable Memory: Accepted Patterns:'), 'Expected durable memory accepted section');
312
+ assert(prompt.includes('Durable Memory: Rejected Fix Shapes:'), 'Expected durable memory rejected section');
313
+ assert(prompt.includes('Durable Memory: Contract Violations:'), 'Expected durable memory contract-violation section');
314
+ assert(prompt.includes('Build an evidence-to-fix chain:'), 'Expected evidence-to-fix guidance to be rendered');
315
+ assert(prompt.includes('Always verify the claimed fix with the most relevant local test or reproduction path before finalizing.'), 'Expected extra rules to be appended');
316
+ }
317
+
318
+ function testSectionsStayDedupedAndModeAware() {
319
+ const sections = getResolveIOPlatformIntelligenceRuleSections({
320
+ mode: 'app_terminal',
321
+ outputStyle: 'plain_english',
322
+ extraRules: ['Respond with the final user-facing outcome clearly.']
323
+ });
324
+ const titles = sections.map((section) => section.title);
325
+ assert(titles.includes('Mode Rules'), 'Expected mode rules section');
326
+ assert(titles.includes('Output Style'), 'Expected output style section');
327
+ assert(
328
+ sections.some((section) => section.title === 'Mode Rules' && section.rules.some((rule) => rule.includes('plain English'))),
329
+ 'Expected app terminal mode rules to remain present'
330
+ );
331
+ assert(
332
+ sections.some((section) => section.title === 'Extra Rules' && section.rules.includes('Respond with the final user-facing outcome clearly.')),
333
+ 'Expected extra rules section to contain caller-supplied rules'
334
+ );
335
+ }
336
+
337
+ function run() {
338
+ testCommonRulesIncludeResolveIOContracts();
339
+ testRioSelectRulesPreferOptionsMode();
340
+ testBuilderRulesPromoteAppGenerationDiscipline();
341
+ testAssistantDataRulesPromoteSafeReportBuilderUsage();
342
+ testDurableMemoryDefaultsAndFiltering();
343
+ testPromptCanMergeCustomDurableMemory();
344
+ testSharedMemorySelectionInfersRelevantFamiliesFromContext();
345
+ testHydrateRuleOptionsUsesRelevantSharedMemoryInsteadOfWholeCorpus();
346
+ testSharedPromptBuilderRendersRelevantCodeBackedMemory();
347
+ testPromptBuildsSectionedVerifyFirstGuidance();
348
+ testSectionsStayDedupedAndModeAware();
349
+ console.log('resolveio platform intelligence tests passed');
350
+ }
351
+
352
+ run();
@@ -0,0 +1,127 @@
1
+ import { ResolveIOMainServer } from '../src/server-app';
2
+
3
+ function assert(condition: boolean, message: string) {
4
+ if (!condition) {
5
+ throw new Error(message);
6
+ }
7
+ }
8
+
9
+ const ENV_KEYS = [
10
+ 'WORKER_INDEX',
11
+ 'NODE_APP_INSTANCE',
12
+ 'SERVER_MANAGER_WORKER_INDEX',
13
+ 'SERVER_MANAGER_WORKER_INSTANCE',
14
+ 'SERVER_MANAGER_NODE_APP_INSTANCE'
15
+ ];
16
+
17
+ function withEnv(env: Record<string, string | undefined>, test: () => void) {
18
+ const previous: Record<string, string | undefined> = {};
19
+ for (const key of ENV_KEYS) {
20
+ previous[key] = process.env[key];
21
+ delete process.env[key];
22
+ }
23
+
24
+ for (const [key, value] of Object.entries(env)) {
25
+ if (value !== undefined) {
26
+ process.env[key] = value;
27
+ }
28
+ }
29
+
30
+ try {
31
+ test();
32
+ }
33
+ finally {
34
+ for (const key of ENV_KEYS) {
35
+ delete process.env[key];
36
+ if (previous[key] !== undefined) {
37
+ process.env[key] = previous[key];
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ function shouldStartCron(): boolean {
44
+ const server = new ResolveIOMainServer() as any;
45
+ return server.shouldStartCronManagerForWorker();
46
+ }
47
+
48
+ async function testStandaloneNodeReaperAlertsAreThrottled() {
49
+ const server = new ResolveIOMainServer() as any;
50
+ const proc = {
51
+ pid: 12345,
52
+ ppid: 1,
53
+ ageSeconds: 600,
54
+ cpuPct: 99,
55
+ rssKb: 512 * 1024,
56
+ command: 'node',
57
+ args: 'node -e while(true){}'
58
+ };
59
+ const reports: any[] = [];
60
+
61
+ server._standaloneNodeReaperAlertWindowMs = 60 * 60 * 1000;
62
+ server.resolveProcessCwd = () => '/tmp/resolveio-reaper-test';
63
+ server.reportServerError = async (...args: any[]) => {
64
+ reports.push(args);
65
+ };
66
+
67
+ await server.reportStandaloneNodeReaperAction(proc, 'orphan_high_cpu_for_2_scans', 'dry-run');
68
+ await server.reportStandaloneNodeReaperAction(proc, 'orphan_high_cpu_for_2_scans', 'dry-run');
69
+ assert(reports.length === 1, 'Expected duplicate dry-run reaper alert to be throttled');
70
+
71
+ await server.reportStandaloneNodeReaperAction(proc, 'orphan_high_cpu_for_2_scans', 'terminated');
72
+ assert(reports.length === 2, 'Expected different reaper action to report independently');
73
+
74
+ const alertKey = `dry-run|${server.resolveStandaloneNodeProcessSignature(proc)}`;
75
+ server._standaloneNodeReaperAlertTimes.set(alertKey, Date.now() - server._standaloneNodeReaperAlertWindowMs - 1);
76
+ await server.reportStandaloneNodeReaperAction(proc, 'orphan_high_cpu_for_2_scans', 'dry-run');
77
+ assert(reports.length === 3, 'Expected reaper alert to report again after throttle window');
78
+ }
79
+
80
+ async function run() {
81
+ withEnv({ WORKER_INDEX: '0', NODE_APP_INSTANCE: '0' }, () => {
82
+ assert(shouldStartCron() === true, 'Expected default worker 0 to start cron');
83
+ });
84
+
85
+ withEnv({ WORKER_INDEX: '1', NODE_APP_INSTANCE: '0' }, () => {
86
+ assert(shouldStartCron() === false, 'Expected default non-zero worker to skip cron');
87
+ });
88
+
89
+ withEnv({
90
+ WORKER_INDEX: '0',
91
+ NODE_APP_INSTANCE: '0',
92
+ SERVER_MANAGER_WORKER_INDEX: '0',
93
+ SERVER_MANAGER_WORKER_INSTANCE: '1'
94
+ }, () => {
95
+ assert(shouldStartCron() === false, 'Expected publication worker to skip ResolveIO server-manager cron');
96
+ });
97
+
98
+ withEnv({
99
+ WORKER_INDEX: '0',
100
+ NODE_APP_INSTANCE: '1',
101
+ SERVER_MANAGER_WORKER_INDEX: '0',
102
+ SERVER_MANAGER_WORKER_INSTANCE: '1'
103
+ }, () => {
104
+ assert(shouldStartCron() === true, 'Expected ResolveIO server-manager worker to start cron');
105
+ });
106
+
107
+ withEnv({
108
+ WORKER_INDEX: '0',
109
+ NODE_APP_INSTANCE: '0',
110
+ SERVER_MANAGER_WORKER_INDEX: '0',
111
+ SERVER_MANAGER_WORKER_INSTANCE: '0'
112
+ }, () => {
113
+ assert(shouldStartCron() === true, 'Expected explicit default server-manager owner to preserve cron behavior');
114
+ });
115
+
116
+ await testStandaloneNodeReaperAlertsAreThrottled();
117
+ }
118
+
119
+ run()
120
+ .then(() => {
121
+ console.log('server-app-cron-owner.test.ts passed');
122
+ process.exit(0);
123
+ })
124
+ .catch(error => {
125
+ console.error(error);
126
+ process.exit(1);
127
+ });
@@ -0,0 +1,158 @@
1
+ import { ResolveIOMainServer } from '../src/server-app';
2
+
3
+ function assert(condition: boolean, message: string) {
4
+ if (!condition) {
5
+ throw new Error(message);
6
+ }
7
+ }
8
+
9
+ function sleep(ms: number) {
10
+ return new Promise(resolve => setTimeout(resolve, ms));
11
+ }
12
+
13
+ class FakeWebSocket {
14
+ public readyState = 1;
15
+ public closed = false;
16
+ public sent: any[] = [];
17
+ private _handlers = new Map<string, Function>();
18
+
19
+ on(event: string, handler: Function) {
20
+ this._handlers.set(event, handler);
21
+ return this;
22
+ }
23
+
24
+ send(data: any, cb?: (error?: Error) => void) {
25
+ this.sent.push(data);
26
+ if (cb) {
27
+ cb();
28
+ }
29
+ }
30
+
31
+ ping() {
32
+ // noop
33
+ }
34
+
35
+ close() {
36
+ this.closed = true;
37
+ }
38
+
39
+ getHandler(event: string): Function | undefined {
40
+ return this._handlers.get(event);
41
+ }
42
+ }
43
+
44
+ async function testConnectionHandlerDoesNotBlockOnLoggedInUserInsert() {
45
+ const server = new ResolveIOMainServer();
46
+ const serverAny = server as any;
47
+
48
+ let connectionHandler: ((ws: FakeWebSocket, req: any) => Promise<void>) | null = null;
49
+ let createLoggedInUserCalled = false;
50
+
51
+ let resolveCreateLoggedInUser: () => void = null;
52
+ const createLoggedInUserPromise = new Promise<void>(resolve => {
53
+ resolveCreateLoggedInUser = resolve;
54
+ });
55
+
56
+ serverAny._portHTTP = 8080;
57
+ serverAny._clientHeartbeatInitialDelayMs = 1;
58
+ serverAny._methodManager = {
59
+ getEnableDebug: () => false,
60
+ _methods: {}
61
+ };
62
+ serverAny._subscriptionManager = {
63
+ createLoggedInUser: () => {
64
+ createLoggedInUserCalled = true;
65
+ return createLoggedInUserPromise;
66
+ },
67
+ loggedInLatency: () => {},
68
+ unsubscribeAll: async () => {},
69
+ subscribe: async () => {},
70
+ unsubscribe: () => {}
71
+ };
72
+ serverAny._websocketManager = {
73
+ addWebSocket: () => {},
74
+ getWebSocket: () => null,
75
+ send: () => {}
76
+ };
77
+ serverAny._workerDispatcherManager = {
78
+ addWorker: () => {},
79
+ disconnectWorker: () => {},
80
+ sendWorkerPayload: () => {},
81
+ handleWorkerMessage: () => {}
82
+ };
83
+ serverAny._clientRoutes = [];
84
+ serverAny.publicProgram = false;
85
+ serverAny.LOGGER = 'ERROR';
86
+ serverAny.triggerClientHeartbeat = async () => {};
87
+ serverAny.unsubscribeWS = async () => {};
88
+ serverAny._serverHTTP = {
89
+ listen: (_port: number, _host: string, cb: () => void) => cb()
90
+ };
91
+ serverAny._serverWSS = {
92
+ clients: new Set(),
93
+ on: (event: string, handler: any) => {
94
+ if (event === 'connection') {
95
+ connectionHandler = handler;
96
+ }
97
+ }
98
+ };
99
+
100
+ const originalSetInterval = global.setInterval;
101
+ (global as any).setInterval = (() => 0) as any;
102
+
103
+ try {
104
+ serverAny.listen();
105
+
106
+ assert(typeof connectionHandler === 'function', 'Expected WS connection handler registration');
107
+
108
+ const ws = new FakeWebSocket();
109
+ const req = {
110
+ url: '/',
111
+ id_user: 'user-1',
112
+ user: 'Test User',
113
+ user_readonly: false,
114
+ doc_user: {
115
+ roles: {
116
+ groups: [],
117
+ super_admin: true
118
+ }
119
+ },
120
+ socket: {
121
+ remoteAddress: '127.0.0.1'
122
+ },
123
+ headers: {
124
+ origin: 'http://localhost:4200'
125
+ }
126
+ };
127
+
128
+ const connectionResult = await Promise.race([
129
+ connectionHandler(ws, req).then(() => 'resolved'),
130
+ sleep(100).then(() => 'timed_out')
131
+ ]);
132
+
133
+ assert(connectionResult === 'resolved', 'Connection handler blocked on createLoggedInUser');
134
+ await sleep(0);
135
+ assert(createLoggedInUserCalled, 'Expected createLoggedInUser to be called');
136
+ assert(typeof ws.getHandler('message') === 'function', 'Expected message handler registered immediately');
137
+
138
+ const messageHandler = ws.getHandler('message') as (message: any) => Promise<void>;
139
+ await messageHandler('ping');
140
+ assert(ws.sent.includes('pong'), 'Expected ping message to be handled immediately after connection');
141
+
142
+ resolveCreateLoggedInUser();
143
+ }
144
+ finally {
145
+ global.setInterval = originalSetInterval;
146
+ }
147
+ }
148
+
149
+ async function run() {
150
+ await testConnectionHandlerDoesNotBlockOnLoggedInUserInsert();
151
+ console.log('subscription-connect-race tests completed');
152
+ process.exit(0);
153
+ }
154
+
155
+ run().catch(error => {
156
+ console.error(error);
157
+ process.exit(1);
158
+ });