@resolveio/server-lib 22.3.221 → 22.3.222

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