@resolveio/server-lib 22.2.34 → 22.2.35

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 (649) hide show
  1. package/ai/assistant-core-heuristics.d.ts +11 -0
  2. package/ai/assistant-core-heuristics.js +531 -0
  3. package/ai/assistant-core-heuristics.js.map +1 -0
  4. package/client-server-app.d.ts +1 -0
  5. package/client-server-app.js +68 -0
  6. package/client-server-app.js.map +1 -0
  7. package/collections/ai-terminal-conversation.collection.d.ts +2 -0
  8. package/collections/ai-terminal-conversation.collection.js +140 -0
  9. package/collections/ai-terminal-conversation.collection.js.map +1 -0
  10. package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
  11. package/collections/ai-terminal-issue-report.collection.js +148 -0
  12. package/collections/ai-terminal-issue-report.collection.js.map +1 -0
  13. package/collections/ai-terminal-message.collection.d.ts +2 -0
  14. package/collections/ai-terminal-message.collection.js +121 -0
  15. package/collections/ai-terminal-message.collection.js.map +1 -0
  16. package/collections/app-setting.collection.d.ts +3 -0
  17. package/collections/app-setting.collection.js +103 -0
  18. package/collections/app-setting.collection.js.map +1 -0
  19. package/collections/app-status.collection.d.ts +3 -0
  20. package/collections/app-status.collection.js +57 -0
  21. package/collections/app-status.collection.js.map +1 -0
  22. package/collections/communication-metric.collection.d.ts +2 -0
  23. package/collections/communication-metric.collection.js +133 -0
  24. package/collections/communication-metric.collection.js.map +1 -0
  25. package/collections/counter.collection.d.ts +3 -0
  26. package/collections/counter.collection.js +56 -0
  27. package/collections/counter.collection.js.map +1 -0
  28. package/collections/cron-job-history.collection.d.ts +3 -0
  29. package/collections/cron-job-history.collection.js +137 -0
  30. package/collections/cron-job-history.collection.js.map +1 -0
  31. package/collections/cron-job.collection.d.ts +3 -0
  32. package/collections/cron-job.collection.js +92 -0
  33. package/collections/cron-job.collection.js.map +1 -0
  34. package/collections/customer-notification.collection.d.ts +3 -0
  35. package/collections/customer-notification.collection.js +130 -0
  36. package/collections/customer-notification.collection.js.map +1 -0
  37. package/collections/customer-portal-password.collection.d.ts +3 -0
  38. package/collections/customer-portal-password.collection.js +75 -0
  39. package/collections/customer-portal-password.collection.js.map +1 -0
  40. package/collections/email-history.collection.d.ts +3 -0
  41. package/collections/email-history.collection.js +121 -0
  42. package/collections/email-history.collection.js.map +1 -0
  43. package/collections/email-verified.collection.d.ts +3 -0
  44. package/collections/email-verified.collection.js +61 -0
  45. package/collections/email-verified.collection.js.map +1 -0
  46. package/collections/file.collection.d.ts +3 -0
  47. package/collections/file.collection.js +74 -0
  48. package/collections/file.collection.js.map +1 -0
  49. package/collections/flag-update.collection.d.ts +3 -0
  50. package/collections/flag-update.collection.js +57 -0
  51. package/collections/flag-update.collection.js.map +1 -0
  52. package/collections/flag.collection.d.ts +3 -0
  53. package/collections/flag.collection.js +57 -0
  54. package/collections/flag.collection.js.map +1 -0
  55. package/collections/log-method-latency.collection.d.ts +3 -0
  56. package/collections/log-method-latency.collection.js +77 -0
  57. package/collections/log-method-latency.collection.js.map +1 -0
  58. package/collections/log-subscription.collection.d.ts +3 -0
  59. package/collections/log-subscription.collection.js +80 -0
  60. package/collections/log-subscription.collection.js.map +1 -0
  61. package/collections/log.collection.d.ts +3 -0
  62. package/collections/log.collection.js +93 -0
  63. package/collections/log.collection.js.map +1 -0
  64. package/collections/logged-in-users.collection.d.ts +3 -0
  65. package/collections/logged-in-users.collection.js +67 -0
  66. package/collections/logged-in-users.collection.js.map +1 -0
  67. package/collections/monitor-cpu.collection.d.ts +3 -0
  68. package/collections/monitor-cpu.collection.js +65 -0
  69. package/collections/monitor-cpu.collection.js.map +1 -0
  70. package/collections/monitor-function.collection.d.ts +3 -0
  71. package/collections/monitor-function.collection.js +74 -0
  72. package/collections/monitor-function.collection.js.map +1 -0
  73. package/collections/monitor-memory.collection.d.ts +3 -0
  74. package/collections/monitor-memory.collection.js +77 -0
  75. package/collections/monitor-memory.collection.js.map +1 -0
  76. package/collections/monitor-mongo.collection.d.ts +3 -0
  77. package/collections/monitor-mongo.collection.js +71 -0
  78. package/collections/monitor-mongo.collection.js.map +1 -0
  79. package/collections/notification.collection.d.ts +3 -0
  80. package/collections/notification.collection.js +57 -0
  81. package/collections/notification.collection.js.map +1 -0
  82. package/collections/openai-usage-ledger.collection.d.ts +2 -0
  83. package/collections/openai-usage-ledger.collection.js +124 -0
  84. package/collections/openai-usage-ledger.collection.js.map +1 -0
  85. package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
  86. package/collections/report-builder-dashboard-builder.collection.js +109 -0
  87. package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
  88. package/collections/report-builder-library.collection.d.ts +3 -0
  89. package/collections/report-builder-library.collection.js +87 -0
  90. package/collections/report-builder-library.collection.js.map +1 -0
  91. package/collections/report-builder-report.collection.d.ts +4 -0
  92. package/collections/report-builder-report.collection.js +180 -0
  93. package/collections/report-builder-report.collection.js.map +1 -0
  94. package/collections/user-group.collection.d.ts +4 -0
  95. package/collections/user-group.collection.js +89 -0
  96. package/collections/user-group.collection.js.map +1 -0
  97. package/collections/user-guide.collection.d.ts +3 -0
  98. package/collections/user-guide.collection.js +57 -0
  99. package/collections/user-guide.collection.js.map +1 -0
  100. package/collections/user.collection.d.ts +4 -0
  101. package/collections/user.collection.js +180 -0
  102. package/collections/user.collection.js.map +1 -0
  103. package/cron/cron.d.ts +14 -0
  104. package/cron/cron.js +216 -0
  105. package/cron/cron.js.map +1 -0
  106. package/fixtures/cron-jobs.d.ts +1 -0
  107. package/fixtures/cron-jobs.js +150 -0
  108. package/fixtures/cron-jobs.js.map +1 -0
  109. package/fixtures/init.d.ts +1 -0
  110. package/fixtures/init.js +91 -0
  111. package/fixtures/init.js.map +1 -0
  112. package/http/auth.d.ts +2 -0
  113. package/http/auth.js +903 -0
  114. package/http/auth.js.map +1 -0
  115. package/http/health.d.ts +1 -0
  116. package/http/health.js +11 -0
  117. package/http/health.js.map +1 -0
  118. package/http/home.d.ts +1 -0
  119. package/http/home.js +134 -0
  120. package/http/home.js.map +1 -0
  121. package/http/slow-query-publication.d.ts +2 -0
  122. package/http/slow-query-publication.js +99 -0
  123. package/http/slow-query-publication.js.map +1 -0
  124. package/index.d.ts +1 -0
  125. package/index.js +19 -0
  126. package/index.js.map +1 -0
  127. package/managers/communication-metric.manager.d.ts +16 -0
  128. package/managers/communication-metric.manager.js +134 -0
  129. package/managers/communication-metric.manager.js.map +1 -0
  130. package/managers/cron.manager.d.ts +20 -0
  131. package/managers/cron.manager.js +534 -0
  132. package/managers/cron.manager.js.map +1 -0
  133. package/managers/customer-notification-content.manager.d.ts +55 -0
  134. package/managers/customer-notification-content.manager.js +158 -0
  135. package/managers/customer-notification-content.manager.js.map +1 -0
  136. package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
  137. package/managers/diagnostic-manager-bootstrap.js +260 -0
  138. package/managers/diagnostic-manager-bootstrap.js.map +1 -0
  139. package/managers/error-auto-fix.manager.d.ts +149 -0
  140. package/managers/error-auto-fix.manager.js +3064 -0
  141. package/managers/error-auto-fix.manager.js.map +1 -0
  142. package/managers/local-log.manager.d.ts +18 -0
  143. package/managers/local-log.manager.js +88 -0
  144. package/managers/local-log.manager.js.map +1 -0
  145. package/managers/method.manager.d.ts +77 -0
  146. package/managers/method.manager.js +1701 -0
  147. package/managers/method.manager.js.map +1 -0
  148. package/managers/mongo.manager.d.ts +222 -0
  149. package/managers/mongo.manager.js +4984 -0
  150. package/managers/mongo.manager.js.map +1 -0
  151. package/managers/monitor.manager.d.ts +69 -0
  152. package/managers/monitor.manager.js +534 -0
  153. package/managers/monitor.manager.js.map +1 -0
  154. package/managers/openai-usage-ledger.manager.d.ts +15 -0
  155. package/managers/openai-usage-ledger.manager.js +144 -0
  156. package/managers/openai-usage-ledger.manager.js.map +1 -0
  157. package/managers/slow-query-verifier.manager.d.ts +144 -0
  158. package/managers/slow-query-verifier.manager.js +3857 -0
  159. package/managers/slow-query-verifier.manager.js.map +1 -0
  160. package/managers/slow-query.manager.d.ts +28 -0
  161. package/managers/slow-query.manager.js +468 -0
  162. package/managers/slow-query.manager.js.map +1 -0
  163. package/managers/subscription.manager.d.ts +169 -0
  164. package/managers/subscription.manager.js +3422 -0
  165. package/managers/subscription.manager.js.map +1 -0
  166. package/managers/websocket.manager.d.ts +73 -0
  167. package/managers/websocket.manager.js +673 -0
  168. package/managers/websocket.manager.js.map +1 -0
  169. package/managers/worker-dispatcher.manager.d.ts +117 -0
  170. package/managers/worker-dispatcher.manager.js +1210 -0
  171. package/managers/worker-dispatcher.manager.js.map +1 -0
  172. package/managers/worker-server.manager.d.ts +16 -0
  173. package/managers/worker-server.manager.js +530 -0
  174. package/managers/worker-server.manager.js.map +1 -0
  175. package/methods/accounts.d.ts +2 -0
  176. package/methods/accounts.js +624 -0
  177. package/methods/accounts.js.map +1 -0
  178. package/methods/ai-terminal.d.ts +304 -0
  179. package/methods/ai-terminal.js +25096 -0
  180. package/methods/ai-terminal.js.map +1 -0
  181. package/methods/app-settings.d.ts +2 -0
  182. package/methods/app-settings.js +169 -0
  183. package/methods/app-settings.js.map +1 -0
  184. package/methods/aws.d.ts +2 -0
  185. package/methods/aws.js +874 -0
  186. package/methods/aws.js.map +1 -0
  187. package/methods/collections.d.ts +2 -0
  188. package/methods/collections.js +626 -0
  189. package/methods/collections.js.map +1 -0
  190. package/methods/counters.d.ts +2 -0
  191. package/methods/counters.js +111 -0
  192. package/methods/counters.js.map +1 -0
  193. package/methods/cron-jobs.d.ts +2 -0
  194. package/methods/cron-jobs.js +2471 -0
  195. package/methods/cron-jobs.js.map +1 -0
  196. package/methods/customer-notifications.d.ts +2 -0
  197. package/methods/customer-notifications.js +528 -0
  198. package/methods/customer-notifications.js.map +1 -0
  199. package/methods/diagnostics.d.ts +2 -0
  200. package/methods/diagnostics.js +514 -0
  201. package/methods/diagnostics.js.map +1 -0
  202. package/methods/flag-updates.d.ts +2 -0
  203. package/methods/flag-updates.js +8 -0
  204. package/methods/flag-updates.js.map +1 -0
  205. package/methods/flags.d.ts +2 -0
  206. package/methods/flags.js +8 -0
  207. package/methods/flags.js.map +1 -0
  208. package/methods/logs.d.ts +2 -0
  209. package/methods/logs.js +750 -0
  210. package/methods/logs.js.map +1 -0
  211. package/methods/mongo-explorer.d.ts +2 -0
  212. package/methods/mongo-explorer.js +1811 -0
  213. package/methods/mongo-explorer.js.map +1 -0
  214. package/methods/monitor.d.ts +2 -0
  215. package/methods/monitor.js +543 -0
  216. package/methods/monitor.js.map +1 -0
  217. package/methods/pdf.d.ts +2 -0
  218. package/methods/pdf.js +1195 -0
  219. package/methods/pdf.js.map +1 -0
  220. package/methods/publications.d.ts +1 -0
  221. package/methods/publications.js +183 -0
  222. package/methods/publications.js.map +1 -0
  223. package/methods/report-builder.d.ts +2 -0
  224. package/methods/report-builder.js +3099 -0
  225. package/methods/report-builder.js.map +1 -0
  226. package/methods/support.d.ts +2 -0
  227. package/methods/support.js +313 -0
  228. package/methods/support.js.map +1 -0
  229. package/models/ai-terminal-conversation.model.d.ts +17 -0
  230. package/models/ai-terminal-conversation.model.js +4 -0
  231. package/models/ai-terminal-conversation.model.js.map +1 -0
  232. package/models/ai-terminal-issue-report.model.d.ts +19 -0
  233. package/models/ai-terminal-issue-report.model.js +4 -0
  234. package/models/ai-terminal-issue-report.model.js.map +1 -0
  235. package/models/ai-terminal-message.model.d.ts +22 -0
  236. package/models/ai-terminal-message.model.js +4 -0
  237. package/models/ai-terminal-message.model.js.map +1 -0
  238. package/models/app-setting.model.d.ts +16 -0
  239. package/models/app-setting.model.js +4 -0
  240. package/models/app-setting.model.js.map +1 -0
  241. package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
  242. package/models/app-status.model.js +4 -0
  243. package/models/app-status.model.js.map +1 -0
  244. package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
  245. package/models/billing-logged-in-users.model.js +4 -0
  246. package/models/billing-logged-in-users.model.js.map +1 -0
  247. package/models/collection-document.model.d.ts +21 -0
  248. package/models/collection-document.model.js +4 -0
  249. package/models/collection-document.model.js.map +1 -0
  250. package/models/communication-metric.model.d.ts +20 -0
  251. package/models/communication-metric.model.js +4 -0
  252. package/models/communication-metric.model.js.map +1 -0
  253. package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
  254. package/models/counter.model.js +4 -0
  255. package/models/counter.model.js.map +1 -0
  256. package/models/cron-job-history.model.d.ts +15 -0
  257. package/models/cron-job-history.model.js +4 -0
  258. package/models/cron-job-history.model.js.map +1 -0
  259. package/models/cron-job.model.d.ts +14 -0
  260. package/models/cron-job.model.js +4 -0
  261. package/models/cron-job.model.js.map +1 -0
  262. package/models/customer-notification.model.d.ts +26 -0
  263. package/models/customer-notification.model.js +4 -0
  264. package/models/customer-notification.model.js.map +1 -0
  265. package/models/customer-portal-password.model.d.ts +11 -0
  266. package/models/customer-portal-password.model.js +4 -0
  267. package/models/customer-portal-password.model.js.map +1 -0
  268. package/models/dialog.model.d.ts +23 -0
  269. package/models/dialog.model.js +4 -0
  270. package/models/dialog.model.js.map +1 -0
  271. package/models/email-history.model.d.ts +30 -0
  272. package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -34
  273. package/models/email-history.model.js.map +1 -0
  274. package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
  275. package/models/email-verified.model.js +4 -0
  276. package/models/email-verified.model.js.map +1 -0
  277. package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
  278. package/models/file.model.js +4 -0
  279. package/models/file.model.js.map +1 -0
  280. package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
  281. package/models/flag-update.model.js +4 -0
  282. package/models/flag-update.model.js.map +1 -0
  283. package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
  284. package/models/flag.model.js +4 -0
  285. package/models/flag.model.js.map +1 -0
  286. package/models/log-method-latency.model.d.ts +10 -0
  287. package/models/log-method-latency.model.js +4 -0
  288. package/models/log-method-latency.model.js.map +1 -0
  289. package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
  290. package/models/log-subscription.model.js +4 -0
  291. package/models/log-subscription.model.js.map +1 -0
  292. package/models/log.model.d.ts +17 -0
  293. package/models/log.model.js +4 -0
  294. package/models/log.model.js.map +1 -0
  295. package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
  296. package/models/logged-in-users.model.js +4 -0
  297. package/models/logged-in-users.model.js.map +1 -0
  298. package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
  299. package/models/method-response.model.js +4 -0
  300. package/models/method-response.model.js.map +1 -0
  301. package/models/method.model.d.ts +24 -0
  302. package/models/method.model.js +4 -0
  303. package/models/method.model.js.map +1 -0
  304. package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
  305. package/models/monitor-cpu.model.js +4 -0
  306. package/models/monitor-cpu.model.js.map +1 -0
  307. package/models/monitor-function.model.d.ts +14 -0
  308. package/models/monitor-function.model.js +4 -0
  309. package/models/monitor-function.model.js.map +1 -0
  310. package/models/monitor-memory.model.d.ts +15 -0
  311. package/models/monitor-memory.model.js +4 -0
  312. package/models/monitor-memory.model.js.map +1 -0
  313. package/models/monitor-mongo.model.d.ts +13 -0
  314. package/models/monitor-mongo.model.js +4 -0
  315. package/models/monitor-mongo.model.js.map +1 -0
  316. package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
  317. package/models/notification.model.js +4 -0
  318. package/models/notification.model.js.map +1 -0
  319. package/models/openai-usage-ledger.model.d.ts +15 -0
  320. package/models/openai-usage-ledger.model.js +4 -0
  321. package/models/openai-usage-ledger.model.js.map +1 -0
  322. package/models/pagination.model.d.ts +11 -0
  323. package/models/pagination.model.js +28 -0
  324. package/models/pagination.model.js.map +1 -0
  325. package/models/permission.model.d.ts +12 -0
  326. package/models/permission.model.js +4 -0
  327. package/models/permission.model.js.map +1 -0
  328. package/models/report-builder-dashboard-builder.model.d.ts +25 -0
  329. package/models/report-builder-dashboard-builder.model.js +4 -0
  330. package/models/report-builder-dashboard-builder.model.js.map +1 -0
  331. package/models/report-builder-library.model.d.ts +17 -0
  332. package/models/report-builder-library.model.js +4 -0
  333. package/models/report-builder-library.model.js.map +1 -0
  334. package/models/report-builder-report.model.d.ts +120 -0
  335. package/models/report-builder-report.model.js +4 -0
  336. package/models/report-builder-report.model.js.map +1 -0
  337. package/models/report-builder.model.d.ts +61 -0
  338. package/models/report-builder.model.js +4 -0
  339. package/models/report-builder.model.js.map +1 -0
  340. package/models/select-data-label.model.d.ts +9 -0
  341. package/models/select-data-label.model.js +4 -0
  342. package/models/select-data-label.model.js.map +1 -0
  343. package/models/server-message.model.d.ts +32 -0
  344. package/models/server-message.model.js +4 -0
  345. package/models/server-message.model.js.map +1 -0
  346. package/models/slow-query-report.model.d.ts +23 -0
  347. package/models/slow-query-report.model.js +4 -0
  348. package/models/slow-query-report.model.js.map +1 -0
  349. package/models/subscription.model.d.ts +31 -0
  350. package/models/subscription.model.js +4 -0
  351. package/models/subscription.model.js.map +1 -0
  352. package/models/support-ticket.model.d.ts +86 -0
  353. package/models/support-ticket.model.js +4 -0
  354. package/models/support-ticket.model.js.map +1 -0
  355. package/models/user-group.model.d.ts +20 -0
  356. package/models/user-group.model.js +4 -0
  357. package/models/user-group.model.js.map +1 -0
  358. package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
  359. package/models/user-guide.model.js +4 -0
  360. package/models/user-guide.model.js.map +1 -0
  361. package/models/user.model.d.ts +84 -0
  362. package/models/user.model.js +4 -0
  363. package/models/user.model.js.map +1 -0
  364. package/package.json +1 -1
  365. package/private/images/ResolveIO.png +0 -0
  366. package/public_api.js +107 -0
  367. package/public_api.js.map +1 -0
  368. package/publications/ai-terminal.d.ts +1 -0
  369. package/publications/ai-terminal.js +122 -0
  370. package/publications/ai-terminal.js.map +1 -0
  371. package/publications/app-settings.d.ts +2 -0
  372. package/publications/app-settings.js +28 -0
  373. package/publications/app-settings.js.map +1 -0
  374. package/publications/app-status.d.ts +2 -0
  375. package/publications/app-status.js +16 -0
  376. package/publications/app-status.js.map +1 -0
  377. package/publications/cron-jobs.d.ts +2 -0
  378. package/publications/cron-jobs.js +32 -0
  379. package/publications/cron-jobs.js.map +1 -0
  380. package/publications/customer-notifications.d.ts +2 -0
  381. package/publications/customer-notifications.js +161 -0
  382. package/publications/customer-notifications.js.map +1 -0
  383. package/publications/files.d.ts +2 -0
  384. package/publications/files.js +36 -0
  385. package/publications/files.js.map +1 -0
  386. package/publications/flags-update.d.ts +2 -0
  387. package/publications/flags-update.js +22 -0
  388. package/publications/flags-update.js.map +1 -0
  389. package/publications/flags.d.ts +2 -0
  390. package/publications/flags.js +22 -0
  391. package/publications/flags.js.map +1 -0
  392. package/publications/logs.d.ts +2 -0
  393. package/publications/logs.js +164 -0
  394. package/publications/logs.js.map +1 -0
  395. package/publications/notifications.d.ts +2 -0
  396. package/publications/notifications.js +16 -0
  397. package/publications/notifications.js.map +1 -0
  398. package/publications/report-builder-dashboard-builders.d.ts +2 -0
  399. package/publications/report-builder-dashboard-builders.js +42 -0
  400. package/publications/report-builder-dashboard-builders.js.map +1 -0
  401. package/publications/report-builder-libraries.d.ts +2 -0
  402. package/publications/report-builder-libraries.js +90 -0
  403. package/publications/report-builder-libraries.js.map +1 -0
  404. package/publications/report-builder-reports.d.ts +2 -0
  405. package/publications/report-builder-reports.js +50 -0
  406. package/publications/report-builder-reports.js.map +1 -0
  407. package/publications/super-admin.d.ts +2 -0
  408. package/publications/super-admin.js +16 -0
  409. package/publications/super-admin.js.map +1 -0
  410. package/publications/user-groups.d.ts +1 -0
  411. package/publications/user-groups.js +16 -0
  412. package/publications/user-groups.js.map +1 -0
  413. package/publications/user-guides.d.ts +1 -0
  414. package/publications/user-guides.js +16 -0
  415. package/publications/user-guides.js.map +1 -0
  416. package/resolveio-server-app.d.ts +70 -0
  417. package/resolveio-server-app.js +801 -0
  418. package/resolveio-server-app.js.map +1 -0
  419. package/server-app.d.ts +167 -0
  420. package/server-app.js +2784 -0
  421. package/server-app.js.map +1 -0
  422. package/services/codex-client.d.ts +119 -0
  423. package/services/codex-client.js +1470 -0
  424. package/services/codex-client.js.map +1 -0
  425. package/services/openai-client.d.ts +46 -0
  426. package/services/openai-client.js +318 -0
  427. package/services/openai-client.js.map +1 -0
  428. package/types/error-report.d.ts +25 -0
  429. package/types/error-report.js +4 -0
  430. package/types/error-report.js.map +1 -0
  431. package/types/slow-query-report.d.ts +27 -0
  432. package/types/slow-query-report.js +6 -0
  433. package/types/slow-query-report.js.map +1 -0
  434. package/util/common.d.ts +31 -0
  435. package/util/common.js +683 -0
  436. package/util/common.js.map +1 -0
  437. package/util/customer-portal-password.d.ts +13 -0
  438. package/util/customer-portal-password.js +209 -0
  439. package/util/customer-portal-password.js.map +1 -0
  440. package/util/error-reporter.d.ts +52 -0
  441. package/util/error-reporter.js +326 -0
  442. package/util/error-reporter.js.map +1 -0
  443. package/util/error-tracking.d.ts +13 -0
  444. package/util/error-tracking.js +120 -0
  445. package/util/error-tracking.js.map +1 -0
  446. package/util/report-builder-unwinds.d.ts +15 -0
  447. package/util/report-builder-unwinds.js +156 -0
  448. package/util/report-builder-unwinds.js.map +1 -0
  449. package/util/schema-report-builder.d.ts +6 -0
  450. package/util/schema-report-builder.js +481 -0
  451. package/util/schema-report-builder.js.map +1 -0
  452. package/util/slow-query-reporter.d.ts +28 -0
  453. package/util/slow-query-reporter.js +226 -0
  454. package/util/slow-query-reporter.js.map +1 -0
  455. package/util/subscription-dependency-context.d.ts +34 -0
  456. package/util/subscription-dependency-context.js +1283 -0
  457. package/util/subscription-dependency-context.js.map +1 -0
  458. package/util/tokenizer.d.ts +5 -0
  459. package/util/tokenizer.js +41 -0
  460. package/util/tokenizer.js.map +1 -0
  461. package/workers/codex-runner.worker.d.ts +1 -0
  462. package/workers/codex-runner.worker.js +192 -0
  463. package/workers/codex-runner.worker.js.map +1 -0
  464. package/.github/workflows/ai-assistant-nightly-eval.yml +0 -224
  465. package/.github/workflows/ai-assistant-pr-guardrails.yml +0 -60
  466. package/.nodemon.json +0 -5
  467. package/.vscode/settings.json +0 -21
  468. package/AGENTS.md +0 -179
  469. package/README.md +0 -22
  470. package/build_package.sh +0 -5
  471. package/compileDTS.pl +0 -64
  472. package/docs/ai-assistant-nightly-eval.md +0 -65
  473. package/docs/ai-assistant-preflight-checklist.md +0 -23
  474. package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
  475. package/eslint-plugin-custom/index.js +0 -7
  476. package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
  477. package/eslint.config.js +0 -103
  478. package/gulpfile.js +0 -216
  479. package/methodAndPublicationListGenerator.py +0 -319
  480. package/mongodbensurers.js +0 -2
  481. package/mongostop.js +0 -3
  482. package/settings.development.json +0 -25
  483. package/settings.development.redacted.json +0 -25
  484. package/src/.env +0 -12
  485. package/src/ai/assistant-core-heuristics.ts +0 -577
  486. package/src/client-server-app.ts +0 -12
  487. package/src/collections/ai-terminal-conversation.collection.ts +0 -91
  488. package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
  489. package/src/collections/ai-terminal-message.collection.ts +0 -77
  490. package/src/collections/app-setting.collection.ts +0 -104
  491. package/src/collections/app-status.collection.ts +0 -58
  492. package/src/collections/communication-metric.collection.ts +0 -84
  493. package/src/collections/counter.collection.ts +0 -56
  494. package/src/collections/cron-job-history.collection.ts +0 -94
  495. package/src/collections/cron-job.collection.ts +0 -92
  496. package/src/collections/customer-notification.collection.ts +0 -131
  497. package/src/collections/customer-portal-password.collection.ts +0 -76
  498. package/src/collections/email-history.collection.ts +0 -121
  499. package/src/collections/email-verified.collection.ts +0 -61
  500. package/src/collections/file.collection.ts +0 -74
  501. package/src/collections/flag-update.collection.ts +0 -57
  502. package/src/collections/flag.collection.ts +0 -57
  503. package/src/collections/log-method-latency.collection.ts +0 -77
  504. package/src/collections/log-subscription.collection.ts +0 -80
  505. package/src/collections/log.collection.ts +0 -93
  506. package/src/collections/logged-in-users.collection.ts +0 -67
  507. package/src/collections/monitor-cpu.collection.ts +0 -65
  508. package/src/collections/monitor-function.collection.ts +0 -74
  509. package/src/collections/monitor-memory.collection.ts +0 -77
  510. package/src/collections/monitor-mongo.collection.ts +0 -71
  511. package/src/collections/notification.collection.ts +0 -57
  512. package/src/collections/openai-usage-ledger.collection.ts +0 -77
  513. package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
  514. package/src/collections/report-builder-library.collection.ts +0 -89
  515. package/src/collections/report-builder-report.collection.ts +0 -180
  516. package/src/collections/user-group.collection.ts +0 -89
  517. package/src/collections/user-guide.collection.ts +0 -57
  518. package/src/collections/user.collection.ts +0 -181
  519. package/src/cron/cron.ts +0 -117
  520. package/src/fixtures/cron-jobs.ts +0 -95
  521. package/src/fixtures/init.ts +0 -35
  522. package/src/http/auth.ts +0 -764
  523. package/src/http/health.ts +0 -7
  524. package/src/http/home.ts +0 -90
  525. package/src/http/slow-query-publication.ts +0 -49
  526. package/src/index.ts +0 -1
  527. package/src/managers/communication-metric.manager.ts +0 -82
  528. package/src/managers/cron.manager.ts +0 -333
  529. package/src/managers/customer-notification-content.manager.ts +0 -236
  530. package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
  531. package/src/managers/error-auto-fix.manager.ts +0 -2767
  532. package/src/managers/local-log.manager.ts +0 -113
  533. package/src/managers/method.manager.ts +0 -1557
  534. package/src/managers/mongo.manager.ts +0 -4566
  535. package/src/managers/monitor.manager.ts +0 -489
  536. package/src/managers/openai-usage-ledger.manager.ts +0 -116
  537. package/src/managers/slow-query-verifier.manager.ts +0 -3590
  538. package/src/managers/slow-query.manager.ts +0 -519
  539. package/src/managers/subscription.manager.ts +0 -3120
  540. package/src/managers/websocket.manager.ts +0 -746
  541. package/src/managers/worker-dispatcher.manager.ts +0 -1318
  542. package/src/managers/worker-server.manager.ts +0 -468
  543. package/src/methods/accounts.ts +0 -532
  544. package/src/methods/ai-terminal.ts +0 -25505
  545. package/src/methods/app-settings.ts +0 -114
  546. package/src/methods/aws.ts +0 -646
  547. package/src/methods/collections.ts +0 -544
  548. package/src/methods/counters.ts +0 -67
  549. package/src/methods/cron-jobs.ts +0 -2610
  550. package/src/methods/customer-notifications.ts +0 -458
  551. package/src/methods/diagnostics.ts +0 -447
  552. package/src/methods/flag-updates.ts +0 -7
  553. package/src/methods/flags.ts +0 -7
  554. package/src/methods/logs.ts +0 -656
  555. package/src/methods/mongo-explorer.ts +0 -1883
  556. package/src/methods/monitor.ts +0 -540
  557. package/src/methods/pdf.ts +0 -1210
  558. package/src/methods/publications.ts +0 -128
  559. package/src/methods/report-builder.ts +0 -3305
  560. package/src/methods/support.ts +0 -210
  561. package/src/models/ai-terminal-conversation.model.ts +0 -19
  562. package/src/models/ai-terminal-issue-report.model.ts +0 -21
  563. package/src/models/ai-terminal-message.model.ts +0 -24
  564. package/src/models/app-setting.model.ts +0 -17
  565. package/src/models/collection-document.model.ts +0 -24
  566. package/src/models/communication-metric.model.ts +0 -23
  567. package/src/models/cron-job-history.model.ts +0 -16
  568. package/src/models/cron-job.model.ts +0 -15
  569. package/src/models/customer-notification.model.ts +0 -28
  570. package/src/models/customer-portal-password.model.ts +0 -12
  571. package/src/models/dialog.model.ts +0 -25
  572. package/src/models/log-method-latency.model.ts +0 -11
  573. package/src/models/log.model.ts +0 -19
  574. package/src/models/method.model.ts +0 -23
  575. package/src/models/monitor-function.model.ts +0 -16
  576. package/src/models/monitor-memory.model.ts +0 -17
  577. package/src/models/monitor-mongo.model.ts +0 -15
  578. package/src/models/openai-usage-ledger.model.ts +0 -16
  579. package/src/models/pagination.model.ts +0 -35
  580. package/src/models/permission.model.ts +0 -14
  581. package/src/models/report-builder-dashboard-builder.model.ts +0 -29
  582. package/src/models/report-builder-library.model.ts +0 -20
  583. package/src/models/report-builder-report.model.ts +0 -135
  584. package/src/models/report-builder.model.ts +0 -68
  585. package/src/models/select-data-label.model.ts +0 -9
  586. package/src/models/server-message.model.ts +0 -31
  587. package/src/models/slow-query-report.model.ts +0 -23
  588. package/src/models/subscription.model.ts +0 -73
  589. package/src/models/support-ticket.model.ts +0 -96
  590. package/src/models/user-group.model.ts +0 -24
  591. package/src/models/user.model.ts +0 -96
  592. package/src/private/images/ResolveIO.png +0 -0
  593. package/src/publications/ai-terminal.ts +0 -73
  594. package/src/publications/app-settings.ts +0 -25
  595. package/src/publications/app-status.ts +0 -13
  596. package/src/publications/cron-jobs.ts +0 -29
  597. package/src/publications/customer-notifications.ts +0 -101
  598. package/src/publications/files.ts +0 -33
  599. package/src/publications/flags-update.ts +0 -19
  600. package/src/publications/flags.ts +0 -19
  601. package/src/publications/logs.ts +0 -163
  602. package/src/publications/notifications.ts +0 -13
  603. package/src/publications/report-builder-dashboard-builders.ts +0 -39
  604. package/src/publications/report-builder-libraries.ts +0 -41
  605. package/src/publications/report-builder-reports.ts +0 -47
  606. package/src/publications/super-admin.ts +0 -13
  607. package/src/publications/user-groups.ts +0 -12
  608. package/src/publications/user-guides.ts +0 -12
  609. package/src/resolveio-server-app.ts +0 -617
  610. package/src/server-app.ts +0 -2616
  611. package/src/services/codex-client.ts +0 -1117
  612. package/src/services/openai-client.ts +0 -265
  613. package/src/types/error-report.ts +0 -26
  614. package/src/types/js-tiktoken.d.ts +0 -11
  615. package/src/types/slow-query-report.ts +0 -28
  616. package/src/util/common.ts +0 -649
  617. package/src/util/customer-portal-password.ts +0 -183
  618. package/src/util/error-reporter.ts +0 -332
  619. package/src/util/error-tracking.ts +0 -79
  620. package/src/util/report-builder-unwinds.ts +0 -180
  621. package/src/util/schema-report-builder.ts +0 -448
  622. package/src/util/slow-query-reporter.ts +0 -216
  623. package/src/util/subscription-dependency-context.ts +0 -1096
  624. package/src/util/tokenizer.ts +0 -38
  625. package/src/workers/codex-runner.worker.ts +0 -142
  626. package/start_server.sh +0 -5
  627. package/tests/ai-assistant-corpus-build.ts +0 -484
  628. package/tests/ai-assistant-corpus-replay-e2e.ts +0 -773
  629. package/tests/ai-assistant-data-parity-e2e.ts +0 -2018
  630. package/tests/ai-assistant-eval-triage.ts +0 -831
  631. package/tests/ai-assistant-openai-e2e.ts +0 -1061
  632. package/tests/ai-assistant-openai-git-e2e.ts +0 -155
  633. package/tests/ai-assistant-preflight-matrix.ts +0 -215
  634. package/tests/ai-assistant-routing-eval.test.ts +0 -560
  635. package/tests/ai-assistant-snf-live-eval.ts +0 -921
  636. package/tests/ai-assistant-utils.test.ts +0 -2165
  637. package/tests/error-reporter.test.ts +0 -145
  638. package/tests/report-builder-linking.test.ts +0 -79
  639. package/tests/subscription-connect-race.test.ts +0 -157
  640. package/tests/subscription-dependency-context.test.ts +0 -324
  641. package/tests/subscription-manager-collection-tracking.test.ts +0 -86
  642. package/tests/subscription-manager-invalidation.test.ts +0 -85
  643. package/tsconfig.json +0 -34
  644. /package/{src/private → private}/email-templates/enrollment.html +0 -0
  645. /package/{src/private → private}/email-templates/forgot-password.html +0 -0
  646. /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
  647. /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
  648. /package/{src/private → private}/email-templates/support-ticket.html +0 -0
  649. /package/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -1,921 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { MongoClient } from 'mongodb';
4
- import {
5
- buildAssistantDatedPivotDisplay,
6
- buildDisplayTable,
7
- classifyAssistantRequestType
8
- } from '../src/methods/ai-terminal';
9
-
10
- type EvalRow = Record<string, any>;
11
-
12
- type EvalResult = {
13
- id: string;
14
- prompt: string;
15
- classification: {
16
- type: string;
17
- dataQuestion: boolean;
18
- source: string;
19
- pass: boolean;
20
- };
21
- query: {
22
- kind: 'read' | 'aggregate';
23
- collection: string;
24
- };
25
- rowCount: number;
26
- minRows: number;
27
- pass: boolean;
28
- notes?: string;
29
- sample: EvalRow[];
30
- error?: string;
31
- };
32
-
33
- type EvalContext = {
34
- db: any;
35
- now: Date;
36
- startOfWeek: Date;
37
- last30Days: Date;
38
- last90Days: Date;
39
- last2Weeks: Date;
40
- last6Months: Date;
41
- thisMonthStart: Date;
42
- nextMonthStart: Date;
43
- lastMonthStart: Date;
44
- lastMonthEnd: Date;
45
- targetBlendChemicalIds: Array<string>;
46
- };
47
-
48
- type EvalCase = {
49
- id: string;
50
- prompt: string;
51
- minRows: number;
52
- query: {
53
- kind: 'read' | 'aggregate';
54
- collection: string;
55
- };
56
- notes?: string;
57
- run: (context: EvalContext) => Promise<EvalRow[]>;
58
- };
59
-
60
- function addDaysUtc(date: Date, days: number): Date {
61
- return new Date(Date.UTC(
62
- date.getUTCFullYear(),
63
- date.getUTCMonth(),
64
- date.getUTCDate() + days,
65
- date.getUTCHours(),
66
- date.getUTCMinutes(),
67
- date.getUTCSeconds(),
68
- date.getUTCMilliseconds()
69
- ));
70
- }
71
-
72
- function addMonthsUtc(date: Date, months: number): Date {
73
- return new Date(Date.UTC(
74
- date.getUTCFullYear(),
75
- date.getUTCMonth() + months,
76
- date.getUTCDate(),
77
- date.getUTCHours(),
78
- date.getUTCMinutes(),
79
- date.getUTCSeconds(),
80
- date.getUTCMilliseconds()
81
- ));
82
- }
83
-
84
- function startOfDayUtc(date: Date): Date {
85
- return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0, 0));
86
- }
87
-
88
- function startOfWeekUtcMonday(date: Date): Date {
89
- const day = date.getUTCDay();
90
- const diff = (day + 6) % 7;
91
- return startOfDayUtc(addDaysUtc(date, -diff));
92
- }
93
-
94
- function startOfMonthUtc(date: Date): Date {
95
- return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1, 0, 0, 0, 0));
96
- }
97
-
98
- function sumChemicalQuantityExpr(quantityField: 'delivered' | 'returned' | 'shipped') {
99
- return {
100
- $sum: {
101
- $map: {
102
- input: { $ifNull: ['$chemicals', []] },
103
- as: 'chem',
104
- in: { $ifNull: [`$$chem.${quantityField}.quantity`, 0] }
105
- }
106
- }
107
- };
108
- }
109
-
110
- async function resolveExistingCollection(db: any, candidates: string[]): Promise<string | null> {
111
- const rows = await db.listCollections({}, { nameOnly: true }).toArray();
112
- const names = new Set(rows.map((row: any) => String(row?.name || '').trim()));
113
- for (const candidate of candidates) {
114
- if (names.has(candidate)) {
115
- return candidate;
116
- }
117
- }
118
- return null;
119
- }
120
-
121
- const EVAL_CASES: EvalCase[] = [
122
- {
123
- id: 'wo_last20_this_week_group_status',
124
- prompt: 'Show me the last 20 work orders created this week, grouped by status.',
125
- minRows: 1,
126
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
127
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
128
- {
129
- $match: {
130
- date_created: { $gte: ctx.startOfWeek, $lt: ctx.now }
131
- }
132
- },
133
- { $sort: { date_created: -1 } },
134
- { $limit: 20 },
135
- {
136
- $group: {
137
- _id: { $ifNull: ['$status', 'Unknown'] },
138
- work_order_count: { $sum: 1 }
139
- }
140
- },
141
- { $sort: { work_order_count: -1, _id: 1 } },
142
- {
143
- $project: {
144
- _id: 0,
145
- status: '$_id',
146
- work_order_count: 1
147
- }
148
- }
149
- ]).toArray()
150
- },
151
- {
152
- id: 'wo_last20_this_week_by_status_alias',
153
- prompt: 'Show me the last 20 work orders created this week by status.',
154
- minRows: 0,
155
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
156
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
157
- {
158
- $match: {
159
- date_created: { $gte: ctx.startOfWeek, $lt: ctx.now }
160
- }
161
- },
162
- { $sort: { date_created: -1 } },
163
- { $limit: 20 },
164
- {
165
- $group: {
166
- _id: { $ifNull: ['$status', 'Unknown'] },
167
- work_order_count: { $sum: 1 }
168
- }
169
- },
170
- { $sort: { work_order_count: -1, _id: 1 } },
171
- {
172
- $project: {
173
- _id: 0,
174
- status: '$_id',
175
- work_order_count: 1
176
- }
177
- }
178
- ]).toArray()
179
- },
180
- {
181
- id: 'wo_completed_per_day_last_30d',
182
- prompt: 'For the last 30 days, how many work orders were completed per day?',
183
- minRows: 1,
184
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
185
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
186
- {
187
- $match: {
188
- date_completed: { $gte: ctx.last30Days, $lt: ctx.now }
189
- }
190
- },
191
- {
192
- $group: {
193
- _id: {
194
- $dateToString: { format: '%Y-%m-%d', date: '$date_completed', timezone: 'UTC' }
195
- },
196
- completed_work_orders: { $sum: 1 }
197
- }
198
- },
199
- { $sort: { _id: 1 } },
200
- {
201
- $project: {
202
- _id: 0,
203
- day_utc: '$_id',
204
- completed_work_orders: 1
205
- }
206
- }
207
- ]).toArray()
208
- },
209
- {
210
- id: 'wo_top_customers_last_6m',
211
- prompt: 'List the top 10 customers by number of work orders in the last 6 months.',
212
- minRows: 1,
213
- query: { kind: 'aggregate', collection: 'orders' },
214
- run: async (ctx) => {
215
- const collection = await resolveExistingCollection(ctx.db, ['work-order-dynamics', 'maintenance-orders', 'orders']);
216
- if (!collection) {
217
- return [];
218
- }
219
- return await ctx.db.collection(collection).aggregate([
220
- {
221
- $addFields: {
222
- effective_date: {
223
- $ifNull: [
224
- '$date_created',
225
- { $ifNull: ['$date_create', '$createdAt'] }
226
- ]
227
- },
228
- customer_label: {
229
- $ifNull: [
230
- '$customer',
231
- {
232
- $ifNull: [
233
- '$customer_name',
234
- {
235
- $ifNull: [
236
- '$client_name',
237
- {
238
- $ifNull: [
239
- { $toString: '$id_customer' },
240
- { $ifNull: ['$qb_ListID_class', 'Unknown'] }
241
- ]
242
- }
243
- ]
244
- }
245
- ]
246
- }
247
- ]
248
- }
249
- }
250
- },
251
- {
252
- $match: {
253
- effective_date: { $gte: ctx.last6Months, $lt: ctx.now },
254
- 'deleted.date': { $exists: false }
255
- }
256
- },
257
- {
258
- $group: {
259
- _id: '$customer_label',
260
- work_order_count: { $sum: 1 }
261
- }
262
- },
263
- { $sort: { work_order_count: -1, _id: 1 } },
264
- { $limit: 10 },
265
- {
266
- $project: {
267
- _id: 0,
268
- customer: '$_id',
269
- work_order_count: 1
270
- }
271
- }
272
- ]).toArray();
273
- }
274
- },
275
- {
276
- id: 'wo_open_missing_required_fields',
277
- prompt: 'Show open work orders with missing required fields (customer, location, or scheduled date).',
278
- minRows: 0,
279
- query: { kind: 'read', collection: 'work-order-dynamics' },
280
- notes: 'A zero row count can be valid here if data quality is clean.',
281
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').find(
282
- {
283
- status: { $nin: ['Closed', 'Completed', 'Canceled'] },
284
- $or: [
285
- { customer: { $in: [null, '', 'N/A'] } },
286
- { location: null },
287
- { 'location.name': { $in: [null, '', 'N/A'] } },
288
- { date_appointment_time: null }
289
- ]
290
- },
291
- {
292
- projection: {
293
- _id: 1,
294
- wo_string: 1,
295
- status: 1,
296
- customer: 1,
297
- type: 1,
298
- 'location.name': 1,
299
- date_created: 1,
300
- date_appointment_time: 1
301
- },
302
- sort: { date_created: -1 },
303
- limit: 50
304
- }
305
- ).toArray()
306
- },
307
- {
308
- id: 'blend_last10_summary',
309
- prompt: 'For blending: summarize the last 10 blend tickets with product, total volume, and created date.',
310
- minRows: 1,
311
- query: { kind: 'aggregate', collection: 'chemical-blends' },
312
- run: async (ctx) => await ctx.db.collection('chemical-blends').aggregate([
313
- { $sort: { date: -1, createdAt: -1 } },
314
- { $limit: 10 },
315
- {
316
- $project: {
317
- _id: 1,
318
- product: { $ifNull: ['$blend_name', '$chemical'] },
319
- total_volume: '$chemical_recipe_quantity',
320
- volume_unit: { $cond: [{ $eq: ['$blend_in_pounds', true] }, 'lb', 'gal'] },
321
- created_date: { $ifNull: ['$date', '$createdAt'] },
322
- batch_number: 1
323
- }
324
- }
325
- ]).toArray()
326
- },
327
- {
328
- id: 'blend_used_red_ultra_lift_last_30d',
329
- prompt: 'Which blends used Chemical Red Ultra Lift in the last 30 days? Include lot/batch and volume.',
330
- minRows: 0,
331
- query: { kind: 'aggregate', collection: 'chemical-blends' },
332
- notes: 'A zero row count is valid when this chemical is not present in the current 30-day window.',
333
- run: async (ctx) => await ctx.db.collection('chemical-blends').aggregate([
334
- {
335
- $match: {
336
- date: { $gte: ctx.last30Days, $lt: ctx.now }
337
- }
338
- },
339
- { $unwind: '$blend_chemicals' },
340
- {
341
- $match: {
342
- $or: [
343
- { 'blend_chemicals.chemical': { $regex: 'Red\\s+Ultra\\s+Lift', $options: 'i' } },
344
- { 'blend_chemicals.id_chemical': { $in: ctx.targetBlendChemicalIds } }
345
- ]
346
- }
347
- },
348
- { $sort: { date: -1 } },
349
- {
350
- $project: {
351
- _id: 1,
352
- blend_name: 1,
353
- batch_number: 1,
354
- blend_date: '$date',
355
- chemical_used: '$blend_chemicals.chemical',
356
- volume: {
357
- $ifNull: ['$blend_chemicals.quantity_recipe_gallons', '$blend_chemicals.quantity_recipe']
358
- },
359
- volume_unit: { $ifNull: ['$blend_chemicals.unit', 'gal'] }
360
- }
361
- },
362
- { $limit: 50 }
363
- ]).toArray()
364
- },
365
- {
366
- id: 'blend_throughput_by_day_last_2w',
367
- prompt: 'Show blend throughput by day for the last 2 weeks.',
368
- minRows: 1,
369
- query: { kind: 'aggregate', collection: 'chemical-blends' },
370
- run: async (ctx) => await ctx.db.collection('chemical-blends').aggregate([
371
- {
372
- $match: {
373
- date: { $gte: ctx.last2Weeks, $lt: ctx.now }
374
- }
375
- },
376
- {
377
- $group: {
378
- _id: {
379
- $dateToString: { format: '%Y-%m-%d', date: '$date', timezone: 'UTC' }
380
- },
381
- blend_count: { $sum: 1 },
382
- total_volume: { $sum: { $ifNull: ['$chemical_recipe_quantity', 0] } }
383
- }
384
- },
385
- { $sort: { _id: 1 } },
386
- {
387
- $project: {
388
- _id: 0,
389
- day_utc: '$_id',
390
- blend_count: 1,
391
- total_volume: 1
392
- }
393
- }
394
- ]).toArray()
395
- },
396
- {
397
- id: 'invoice_top_customers_total_last_6m',
398
- prompt: 'Show top 10 customers by invoice total in the last 6 months.',
399
- minRows: 1,
400
- query: { kind: 'aggregate', collection: 'invoices' },
401
- run: async (ctx) => await ctx.db.collection('invoices').aggregate([
402
- {
403
- $match: {
404
- date_created: { $gte: ctx.last6Months, $lt: ctx.now }
405
- }
406
- },
407
- {
408
- $group: {
409
- _id: { $ifNull: ['$customer', 'Unknown'] },
410
- invoice_count: { $sum: 1 },
411
- invoice_total: {
412
- $sum: {
413
- $ifNull: ['$price', { $ifNull: ['$subtotal', 0] }]
414
- }
415
- }
416
- }
417
- },
418
- { $sort: { invoice_total: -1, _id: 1 } },
419
- { $limit: 10 },
420
- {
421
- $project: {
422
- _id: 0,
423
- customer: '$_id',
424
- invoice_count: 1,
425
- invoice_total: 1
426
- }
427
- }
428
- ]).toArray()
429
- },
430
- {
431
- id: 'invoice_revenue_monthly_grid_last_6m',
432
- prompt: 'Break down my total revenue over the last 6 month by month',
433
- minRows: 1,
434
- query: { kind: 'aggregate', collection: 'invoices' },
435
- run: async (ctx) => {
436
- const rows = await ctx.db.collection('invoices').aggregate([
437
- {
438
- $match: {
439
- date_created: { $gte: ctx.last6Months, $lt: ctx.now }
440
- }
441
- },
442
- {
443
- $group: {
444
- _id: {
445
- year: { $year: '$date_created' },
446
- month: { $month: '$date_created' }
447
- },
448
- total_revenue: {
449
- $sum: {
450
- $ifNull: ['$price', { $ifNull: ['$subtotal', 0] }]
451
- }
452
- }
453
- }
454
- },
455
- {
456
- $project: {
457
- _id: 0,
458
- year: '$_id.year',
459
- month: '$_id.month',
460
- total_revenue: 1
461
- }
462
- },
463
- { $sort: { year: 1, month: 1 } }
464
- ]).toArray();
465
- const display = buildDisplayTable(rows, { maxColumns: 40, maxRows: 500 });
466
- const pivot = buildAssistantDatedPivotDisplay(display);
467
- if (!pivot) {
468
- throw new Error('Expected dated pivot grid for monthly revenue report.');
469
- }
470
- const monthColumns = pivot.columns.slice(1);
471
- if (pivot.columns[0] !== 'Metric' || monthColumns.length < 2) {
472
- throw new Error('Expected Metric + month columns in monthly revenue grid.');
473
- }
474
- return pivot.rows;
475
- }
476
- },
477
- {
478
- id: 'invoice_revenue_monthly_customer_grid_last_6m',
479
- prompt: 'Break down my total revenue over the last 6 month by month by each customer',
480
- minRows: 1,
481
- query: { kind: 'aggregate', collection: 'invoices' },
482
- run: async (ctx) => {
483
- const rows = await ctx.db.collection('invoices').aggregate([
484
- {
485
- $match: {
486
- date_created: { $gte: ctx.last6Months, $lt: ctx.now }
487
- }
488
- },
489
- {
490
- $group: {
491
- _id: {
492
- customer: { $ifNull: ['$customer', 'Unknown'] },
493
- year: { $year: '$date_created' },
494
- month: { $month: '$date_created' }
495
- },
496
- total_revenue: {
497
- $sum: {
498
- $ifNull: ['$price', { $ifNull: ['$subtotal', 0] }]
499
- }
500
- }
501
- }
502
- },
503
- {
504
- $project: {
505
- _id: 0,
506
- customer: '$_id.customer',
507
- year: '$_id.year',
508
- month: '$_id.month',
509
- total_revenue: 1
510
- }
511
- },
512
- { $sort: { customer: 1, year: 1, month: 1 } }
513
- ]).toArray();
514
- const display = buildDisplayTable(rows, { maxColumns: 50, maxRows: 2000 });
515
- const pivot = buildAssistantDatedPivotDisplay(display);
516
- if (!pivot) {
517
- throw new Error('Expected dated pivot grid for customer monthly revenue report.');
518
- }
519
- const firstColumn = String(pivot.columns[0] || '').toLowerCase();
520
- const monthColumns = pivot.columns.slice(1);
521
- if (!firstColumn.includes('customer') || monthColumns.length < 2) {
522
- throw new Error('Expected Customer + month header columns in customer revenue grid.');
523
- }
524
- return pivot.rows;
525
- }
526
- },
527
- {
528
- id: 'invoice_missing_invoiced_date_this_month',
529
- prompt: 'List invoices missing an invoiced date but created this month.',
530
- minRows: 1,
531
- query: { kind: 'read', collection: 'invoices' },
532
- run: async (ctx) => await ctx.db.collection('invoices').find(
533
- {
534
- date_created: { $gte: ctx.thisMonthStart, $lt: ctx.nextMonthStart },
535
- $or: [
536
- { date_invoiced: null },
537
- { date_invoiced: { $exists: false } }
538
- ]
539
- },
540
- {
541
- projection: {
542
- _id: 1,
543
- invoice_number: 1,
544
- invoice_number_string: 1,
545
- customer: 1,
546
- status: 1,
547
- date_created: 1,
548
- date_invoiced: 1,
549
- price: 1
550
- },
551
- sort: { date_created: -1 },
552
- limit: 50
553
- }
554
- ).toArray()
555
- },
556
- {
557
- id: 'deliveries_per_driver_last_month',
558
- prompt: 'Break down the number of deliveries per driver last month',
559
- minRows: 1,
560
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
561
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
562
- {
563
- $match: {
564
- date_completed: { $gte: ctx.lastMonthStart, $lt: ctx.lastMonthEnd },
565
- status: { $in: ['Completed', 'Closed'] }
566
- }
567
- },
568
- { $unwind: { path: '$drivers', preserveNullAndEmptyArrays: true } },
569
- {
570
- $group: {
571
- _id: { $ifNull: ['$drivers.user', 'Unassigned'] },
572
- delivery_count: { $sum: 1 }
573
- }
574
- },
575
- { $sort: { delivery_count: -1, _id: 1 } },
576
- {
577
- $project: {
578
- _id: 0,
579
- driver: '$_id',
580
- delivery_count: 1
581
- }
582
- }
583
- ]).toArray()
584
- },
585
- {
586
- id: 'last20_deliveries_product_volume_destination',
587
- prompt: 'List the last 20 deliveries with product, volume, and destination.',
588
- minRows: 1,
589
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
590
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
591
- {
592
- $match: {
593
- status: { $in: ['Completed', 'Closed'] },
594
- date_completed: { $type: 'date' }
595
- }
596
- },
597
- { $sort: { date_completed: -1 } },
598
- { $limit: 20 },
599
- {
600
- $project: {
601
- _id: 1,
602
- wo_string: 1,
603
- customer: 1,
604
- destination: '$location.name',
605
- date_completed: 1,
606
- products: {
607
- $map: {
608
- input: { $ifNull: ['$chemicals', []] },
609
- as: 'chem',
610
- in: '$$chem.chemical'
611
- }
612
- },
613
- delivered_volume: sumChemicalQuantityExpr('delivered'),
614
- returned_volume: sumChemicalQuantityExpr('returned'),
615
- unit: {
616
- $first: {
617
- $map: {
618
- input: { $ifNull: ['$chemicals', []] },
619
- as: 'chem',
620
- in: '$$chem.unit'
621
- }
622
- }
623
- }
624
- }
625
- }
626
- ]).toArray()
627
- },
628
- {
629
- id: 'jobs_highest_treatment_volume_last_90d',
630
- prompt: 'Which jobs have the highest treatment volume in the last 90 days?',
631
- minRows: 1,
632
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
633
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
634
- {
635
- $match: {
636
- date_completed: { $gte: ctx.last90Days, $lt: ctx.now },
637
- 'job.id_job': { $exists: true, $ne: '' }
638
- }
639
- },
640
- { $unwind: { path: '$chemicals', preserveNullAndEmptyArrays: true } },
641
- {
642
- $addFields: {
643
- chemical_treatment_volume: {
644
- $add: [
645
- { $ifNull: ['$chemicals.delivered.quantity', 0] },
646
- { $ifNull: ['$chemicals.returned.quantity', 0] }
647
- ]
648
- }
649
- }
650
- },
651
- {
652
- $group: {
653
- _id: '$job.id_job',
654
- job: { $first: '$job.job' },
655
- customer: { $first: '$customer' },
656
- treatment_volume: { $sum: '$chemical_treatment_volume' },
657
- work_orders: { $addToSet: '$_id' }
658
- }
659
- },
660
- {
661
- $project: {
662
- _id: 0,
663
- job_id: '$_id',
664
- job: 1,
665
- customer: 1,
666
- treatment_volume: 1,
667
- work_order_count: { $size: '$work_orders' }
668
- }
669
- },
670
- { $sort: { treatment_volume: -1, work_order_count: -1 } },
671
- { $limit: 10 }
672
- ]).toArray()
673
- },
674
- {
675
- id: 'last20_completed_wo_customer_product_delivered_returned',
676
- prompt: 'Break down the last 20 completed work orders and tell me what customer, what product and how much we delivered or returned',
677
- minRows: 1,
678
- query: { kind: 'aggregate', collection: 'work-order-dynamics' },
679
- run: async (ctx) => await ctx.db.collection('work-order-dynamics').aggregate([
680
- {
681
- $match: {
682
- status: { $in: ['Completed', 'Closed'] },
683
- date_completed: { $type: 'date' }
684
- }
685
- },
686
- { $sort: { date_completed: -1 } },
687
- { $limit: 20 },
688
- { $unwind: { path: '$chemicals', preserveNullAndEmptyArrays: true } },
689
- {
690
- $project: {
691
- _id: 1,
692
- wo_string: 1,
693
- date_completed: 1,
694
- customer: 1,
695
- product: '$chemicals.chemical',
696
- delivered_quantity: { $ifNull: ['$chemicals.delivered.quantity', 0] },
697
- returned_quantity: { $ifNull: ['$chemicals.returned.quantity', 0] },
698
- unit: '$chemicals.unit'
699
- }
700
- },
701
- { $sort: { date_completed: -1, wo_string: -1 } }
702
- ]).toArray()
703
- },
704
- {
705
- id: 'support_ticket_billable_hours_per_user_per_month_last_6m',
706
- prompt: 'Break up the support tickets last 6 months, give me a total per user per month of the amount of hours they are billing for',
707
- minRows: 0,
708
- query: { kind: 'aggregate', collection: 'support-tickets' },
709
- notes: 'Zero rows are valid if support-ticket collection or ticket history is absent in this environment.',
710
- run: async (ctx) => {
711
- const collection = await resolveExistingCollection(ctx.db, ['support-tickets', 'supporttickets', 'support-ticket']);
712
- if (!collection) {
713
- return [];
714
- }
715
- return await ctx.db.collection(collection).aggregate([
716
- {
717
- $addFields: {
718
- effective_date: { $ifNull: ['$date_created', '$createdAt'] },
719
- effective_hours: { $ifNull: ['$billable_hours', { $ifNull: ['$estimated_billable_hours', 0] }] },
720
- assigned_user_first: {
721
- $let: {
722
- vars: {
723
- first_assigned: { $arrayElemAt: [{ $ifNull: ['$users_assigned', []] }, 0] }
724
- },
725
- in: {
726
- $ifNull: ['$$first_assigned.user', '$$first_assigned.id_user']
727
- }
728
- }
729
- }
730
- }
731
- },
732
- {
733
- $match: {
734
- effective_date: { $gte: ctx.last6Months, $lt: ctx.now }
735
- }
736
- },
737
- {
738
- $group: {
739
- _id: {
740
- user: {
741
- $ifNull: [
742
- '$user_created',
743
- {
744
- $ifNull: [
745
- '$client_user.user',
746
- {
747
- $ifNull: [
748
- '$assigned_user_first',
749
- { $ifNull: [{ $toString: '$id_user_created' }, 'Unknown User'] }
750
- ]
751
- }
752
- ]
753
- }
754
- ]
755
- },
756
- month: { $dateToString: { format: '%Y-%m', date: '$effective_date', timezone: 'UTC' } }
757
- },
758
- billable_hours: { $sum: { $ifNull: ['$effective_hours', 0] } }
759
- }
760
- },
761
- {
762
- $project: {
763
- _id: 0,
764
- user: '$_id.user',
765
- month: '$_id.month',
766
- billable_hours: 1
767
- }
768
- },
769
- { $sort: { user: 1, month: 1 } }
770
- ]).toArray();
771
- }
772
- }
773
- ];
774
-
775
- async function resolveTargetBlendChemicalIds(db: any): Promise<Array<string>> {
776
- const rows = await db.collection('chemicals')
777
- .find(
778
- { name: { $regex: 'Red\\s+Ultra\\s+Lift', $options: 'i' } },
779
- { projection: { _id: 1 }, limit: 20 }
780
- )
781
- .toArray();
782
- return rows.map((row: any) => String(row?._id || '')).filter(Boolean);
783
- }
784
-
785
- async function run(): Promise<void> {
786
- const client = new MongoClient('mongodb://127.0.0.1:3001/?directConnection=true&serverSelectionTimeoutMS=5000');
787
- await client.connect();
788
- const db = client.db('resolveio');
789
- const now = new Date();
790
-
791
- const thisMonthStart = startOfMonthUtc(now);
792
- const nextMonthStart = startOfMonthUtc(addMonthsUtc(thisMonthStart, 1));
793
- const lastMonthStart = startOfMonthUtc(addMonthsUtc(thisMonthStart, -1));
794
- const lastMonthEnd = thisMonthStart;
795
- const context: EvalContext = {
796
- db,
797
- now,
798
- startOfWeek: startOfWeekUtcMonday(now),
799
- last30Days: addDaysUtc(now, -30),
800
- last90Days: addDaysUtc(now, -90),
801
- last2Weeks: addDaysUtc(now, -14),
802
- last6Months: addMonthsUtc(now, -6),
803
- thisMonthStart,
804
- nextMonthStart,
805
- lastMonthStart,
806
- lastMonthEnd,
807
- targetBlendChemicalIds: await resolveTargetBlendChemicalIds(db)
808
- };
809
-
810
- const caseFilter = String(process.env.AI_ASSISTANT_SNF_EVAL_CASES || '')
811
- .split(',')
812
- .map(value => value.trim())
813
- .filter(Boolean);
814
- const selectedCases = caseFilter.length
815
- ? EVAL_CASES.filter(testCase => caseFilter.includes(testCase.id))
816
- : EVAL_CASES;
817
- if (!selectedCases.length) {
818
- throw new Error('No matching SNF eval cases selected via AI_ASSISTANT_SNF_EVAL_CASES.');
819
- }
820
-
821
- const results: EvalResult[] = [];
822
-
823
- for (const testCase of selectedCases) {
824
- const classification = classifyAssistantRequestType(testCase.prompt);
825
- const classificationPass = classification.type === 'data' && classification.dataQuestion === true;
826
- try {
827
- const rows = await testCase.run(context);
828
- const rowCount = Array.isArray(rows) ? rows.length : 0;
829
- const pass = classificationPass && rowCount >= testCase.minRows;
830
- results.push({
831
- id: testCase.id,
832
- prompt: testCase.prompt,
833
- classification: {
834
- type: classification.type,
835
- dataQuestion: classification.dataQuestion,
836
- source: classification.source,
837
- pass: classificationPass
838
- },
839
- query: testCase.query,
840
- rowCount,
841
- minRows: testCase.minRows,
842
- pass,
843
- notes: testCase.notes,
844
- sample: rows.slice(0, 5)
845
- });
846
- }
847
- catch (error: any) {
848
- results.push({
849
- id: testCase.id,
850
- prompt: testCase.prompt,
851
- classification: {
852
- type: classification.type,
853
- dataQuestion: classification.dataQuestion,
854
- source: classification.source,
855
- pass: classificationPass
856
- },
857
- query: testCase.query,
858
- rowCount: 0,
859
- minRows: testCase.minRows,
860
- pass: false,
861
- notes: testCase.notes,
862
- sample: [],
863
- error: String(error?.message || error || 'Unknown error')
864
- });
865
- }
866
- }
867
-
868
- await client.close();
869
-
870
- const passCount = results.filter(result => result.pass).length;
871
- const failCount = selectedCases.length - passCount;
872
- const summary = {
873
- total: selectedCases.length,
874
- passed: passCount,
875
- failed: failCount
876
- };
877
-
878
- const output = {
879
- now: now.toISOString(),
880
- window_utc: {
881
- startOfWeek: context.startOfWeek.toISOString(),
882
- last30Days: context.last30Days.toISOString(),
883
- last90Days: context.last90Days.toISOString(),
884
- last2Weeks: context.last2Weeks.toISOString(),
885
- last6Months: context.last6Months.toISOString(),
886
- thisMonthStart: context.thisMonthStart.toISOString(),
887
- nextMonthStart: context.nextMonthStart.toISOString(),
888
- lastMonthStart: context.lastMonthStart.toISOString(),
889
- lastMonthEnd: context.lastMonthEnd.toISOString()
890
- },
891
- targetBlendChemicalIds: context.targetBlendChemicalIds,
892
- summary,
893
- results
894
- };
895
-
896
- const outputPath = path.join(process.cwd(), 'tmp', 'ai-assistant-snf-live-eval-output.json');
897
- fs.writeFileSync(outputPath, JSON.stringify(output, null, 2));
898
-
899
- console.log(`ai assistant snf live eval: ${passCount}/${selectedCases.length} passed`);
900
- results.forEach((result) => {
901
- const marker = result.pass ? 'PASS' : 'FAIL';
902
- const classText = `${result.classification.type}/${result.classification.dataQuestion ? 'data' : 'non-data'}`;
903
- console.log(`${marker} ${result.id} rows=${result.rowCount} class=${classText} query=${result.query.kind}:${result.query.collection}`);
904
- if (result.error) {
905
- console.log(` error=${result.error}`);
906
- }
907
- if (result.notes) {
908
- console.log(` note=${result.notes}`);
909
- }
910
- });
911
- console.log(`wrote ${outputPath}`);
912
-
913
- if (failCount > 0) {
914
- process.exitCode = 1;
915
- }
916
- }
917
-
918
- run().catch((error) => {
919
- console.error(error);
920
- process.exit(1);
921
- });