@meyicloud/meyi-insight-server 1.0.0

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 (389) hide show
  1. package/dist/constants/incidentCategories.d.ts +18 -0
  2. package/dist/constants/incidentCategories.d.ts.map +1 -0
  3. package/dist/constants/incidentCategories.js +36 -0
  4. package/dist/constants/incidentCategories.js.map +1 -0
  5. package/dist/controllers/alert.controller.d.ts +12 -0
  6. package/dist/controllers/alert.controller.d.ts.map +1 -0
  7. package/dist/controllers/alert.controller.js +89 -0
  8. package/dist/controllers/alert.controller.js.map +1 -0
  9. package/dist/controllers/incident.controller.d.ts +16 -0
  10. package/dist/controllers/incident.controller.d.ts.map +1 -0
  11. package/dist/controllers/incident.controller.js +215 -0
  12. package/dist/controllers/incident.controller.js.map +1 -0
  13. package/dist/controllers/notification-provider.controller.d.ts +10 -0
  14. package/dist/controllers/notification-provider.controller.d.ts.map +1 -0
  15. package/dist/controllers/notification-provider.controller.js +59 -0
  16. package/dist/controllers/notification-provider.controller.js.map +1 -0
  17. package/dist/controllers/settings.controller.d.ts +7 -0
  18. package/dist/controllers/settings.controller.d.ts.map +1 -0
  19. package/dist/controllers/settings.controller.js +27 -0
  20. package/dist/controllers/settings.controller.js.map +1 -0
  21. package/dist/controllers/sop.controller.d.ts +11 -0
  22. package/dist/controllers/sop.controller.d.ts.map +1 -0
  23. package/dist/controllers/sop.controller.js +89 -0
  24. package/dist/controllers/sop.controller.js.map +1 -0
  25. package/dist/controllers/source.controller.d.ts +26 -0
  26. package/dist/controllers/source.controller.d.ts.map +1 -0
  27. package/dist/controllers/source.controller.js +333 -0
  28. package/dist/controllers/source.controller.js.map +1 -0
  29. package/dist/controllers/sourceDatadog.controller.d.ts +17 -0
  30. package/dist/controllers/sourceDatadog.controller.d.ts.map +1 -0
  31. package/dist/controllers/sourceDatadog.controller.js +169 -0
  32. package/dist/controllers/sourceDatadog.controller.js.map +1 -0
  33. package/dist/controllers/tenant.controller.d.ts +7 -0
  34. package/dist/controllers/tenant.controller.d.ts.map +1 -0
  35. package/dist/controllers/tenant.controller.js +33 -0
  36. package/dist/controllers/tenant.controller.js.map +1 -0
  37. package/dist/controllers/webhook.controller.d.ts +6 -0
  38. package/dist/controllers/webhook.controller.d.ts.map +1 -0
  39. package/dist/controllers/webhook.controller.js +83 -0
  40. package/dist/controllers/webhook.controller.js.map +1 -0
  41. package/dist/controllers/workflow.controller.d.ts +18 -0
  42. package/dist/controllers/workflow.controller.d.ts.map +1 -0
  43. package/dist/controllers/workflow.controller.js +118 -0
  44. package/dist/controllers/workflow.controller.js.map +1 -0
  45. package/dist/database/index.d.ts +7 -0
  46. package/dist/database/index.d.ts.map +1 -0
  47. package/dist/database/index.js +12 -0
  48. package/dist/database/index.js.map +1 -0
  49. package/dist/database/schema.d.ts +5358 -0
  50. package/dist/database/schema.d.ts.map +1 -0
  51. package/dist/database/schema.js +516 -0
  52. package/dist/database/schema.js.map +1 -0
  53. package/dist/features/sources/cloudtrail/controller.d.ts +38 -0
  54. package/dist/features/sources/cloudtrail/controller.d.ts.map +1 -0
  55. package/dist/features/sources/cloudtrail/controller.js +421 -0
  56. package/dist/features/sources/cloudtrail/controller.js.map +1 -0
  57. package/dist/features/sources/cloudtrail/routes.d.ts +6 -0
  58. package/dist/features/sources/cloudtrail/routes.d.ts.map +1 -0
  59. package/dist/features/sources/cloudtrail/routes.js +8 -0
  60. package/dist/features/sources/cloudtrail/routes.js.map +1 -0
  61. package/dist/features/sources/cloudtrail/schema.d.ts +2 -0
  62. package/dist/features/sources/cloudtrail/schema.d.ts.map +1 -0
  63. package/dist/features/sources/cloudtrail/schema.js +26 -0
  64. package/dist/features/sources/cloudtrail/schema.js.map +1 -0
  65. package/dist/features/sources/cloudtrail/stackTemplates.d.ts +3 -0
  66. package/dist/features/sources/cloudtrail/stackTemplates.d.ts.map +1 -0
  67. package/dist/features/sources/cloudtrail/stackTemplates.js +548 -0
  68. package/dist/features/sources/cloudtrail/stackTemplates.js.map +1 -0
  69. package/dist/features/sources/cloudtrail/template.d.ts +21 -0
  70. package/dist/features/sources/cloudtrail/template.d.ts.map +1 -0
  71. package/dist/features/sources/cloudtrail/template.js +1230 -0
  72. package/dist/features/sources/cloudtrail/template.js.map +1 -0
  73. package/dist/features/sources/cloudwatch/controller.d.ts +13 -0
  74. package/dist/features/sources/cloudwatch/controller.d.ts.map +1 -0
  75. package/dist/features/sources/cloudwatch/controller.js +514 -0
  76. package/dist/features/sources/cloudwatch/controller.js.map +1 -0
  77. package/dist/features/sources/cloudwatch/eventbridgeTemplate.d.ts +7 -0
  78. package/dist/features/sources/cloudwatch/eventbridgeTemplate.d.ts.map +1 -0
  79. package/dist/features/sources/cloudwatch/eventbridgeTemplate.js +230 -0
  80. package/dist/features/sources/cloudwatch/eventbridgeTemplate.js.map +1 -0
  81. package/dist/features/sources/cloudwatch/service.d.ts +50 -0
  82. package/dist/features/sources/cloudwatch/service.d.ts.map +1 -0
  83. package/dist/features/sources/cloudwatch/service.js +269 -0
  84. package/dist/features/sources/cloudwatch/service.js.map +1 -0
  85. package/dist/features/sources/cloudwatch/template.d.ts +26 -0
  86. package/dist/features/sources/cloudwatch/template.d.ts.map +1 -0
  87. package/dist/features/sources/cloudwatch/template.js +335 -0
  88. package/dist/features/sources/cloudwatch/template.js.map +1 -0
  89. package/dist/features/sources/cloudwatch/types.d.ts +26 -0
  90. package/dist/features/sources/cloudwatch/types.d.ts.map +1 -0
  91. package/dist/features/sources/cloudwatch/types.js +2 -0
  92. package/dist/features/sources/cloudwatch/types.js.map +1 -0
  93. package/dist/features/sources/grafana/controller.d.ts +18 -0
  94. package/dist/features/sources/grafana/controller.d.ts.map +1 -0
  95. package/dist/features/sources/grafana/controller.js +183 -0
  96. package/dist/features/sources/grafana/controller.js.map +1 -0
  97. package/dist/features/sources/grafana/routes.d.ts +6 -0
  98. package/dist/features/sources/grafana/routes.d.ts.map +1 -0
  99. package/dist/features/sources/grafana/routes.js +6 -0
  100. package/dist/features/sources/grafana/routes.js.map +1 -0
  101. package/dist/features/sources/grafana/schema.d.ts +2 -0
  102. package/dist/features/sources/grafana/schema.d.ts.map +1 -0
  103. package/dist/features/sources/grafana/schema.js +24 -0
  104. package/dist/features/sources/grafana/schema.js.map +1 -0
  105. package/dist/features/sources/grafana/service.d.ts +33 -0
  106. package/dist/features/sources/grafana/service.d.ts.map +1 -0
  107. package/dist/features/sources/grafana/service.js +215 -0
  108. package/dist/features/sources/grafana/service.js.map +1 -0
  109. package/dist/features/sources/index.d.ts +29 -0
  110. package/dist/features/sources/index.d.ts.map +1 -0
  111. package/dist/features/sources/index.js +47 -0
  112. package/dist/features/sources/index.js.map +1 -0
  113. package/dist/features/sources/observability/controller.d.ts +6 -0
  114. package/dist/features/sources/observability/controller.d.ts.map +1 -0
  115. package/dist/features/sources/observability/controller.js +16 -0
  116. package/dist/features/sources/observability/controller.js.map +1 -0
  117. package/dist/features/sources/observability/routes.d.ts +4 -0
  118. package/dist/features/sources/observability/routes.d.ts.map +1 -0
  119. package/dist/features/sources/observability/routes.js +8 -0
  120. package/dist/features/sources/observability/routes.js.map +1 -0
  121. package/dist/features/sources/observability/schema.d.ts +3 -0
  122. package/dist/features/sources/observability/schema.d.ts.map +1 -0
  123. package/dist/features/sources/observability/schema.js +44 -0
  124. package/dist/features/sources/observability/schema.js.map +1 -0
  125. package/dist/features/sources/observability/service.d.ts +36 -0
  126. package/dist/features/sources/observability/service.d.ts.map +1 -0
  127. package/dist/features/sources/observability/service.js +127 -0
  128. package/dist/features/sources/observability/service.js.map +1 -0
  129. package/dist/features/sources/prometheus/controller.d.ts +9 -0
  130. package/dist/features/sources/prometheus/controller.d.ts.map +1 -0
  131. package/dist/features/sources/prometheus/controller.js +359 -0
  132. package/dist/features/sources/prometheus/controller.js.map +1 -0
  133. package/dist/features/sources/prometheus/templates.d.ts +18 -0
  134. package/dist/features/sources/prometheus/templates.d.ts.map +1 -0
  135. package/dist/features/sources/prometheus/templates.js +244 -0
  136. package/dist/features/sources/prometheus/templates.js.map +1 -0
  137. package/dist/index.d.ts +7 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +7 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/migrations/0007_pipeline_yaml_definitions.d.ts +3 -0
  142. package/dist/migrations/0007_pipeline_yaml_definitions.d.ts.map +1 -0
  143. package/dist/migrations/0007_pipeline_yaml_definitions.js +19 -0
  144. package/dist/migrations/0007_pipeline_yaml_definitions.js.map +1 -0
  145. package/dist/migrations/0008_tenant_isolation.d.ts +3 -0
  146. package/dist/migrations/0008_tenant_isolation.d.ts.map +1 -0
  147. package/dist/migrations/0008_tenant_isolation.js +42 -0
  148. package/dist/migrations/0008_tenant_isolation.js.map +1 -0
  149. package/dist/migrations/run.d.ts +6 -0
  150. package/dist/migrations/run.d.ts.map +1 -0
  151. package/dist/migrations/run.js +1262 -0
  152. package/dist/migrations/run.js.map +1 -0
  153. package/dist/models/alarm-group.model.d.ts +42 -0
  154. package/dist/models/alarm-group.model.d.ts.map +1 -0
  155. package/dist/models/alarm-group.model.js +98 -0
  156. package/dist/models/alarm-group.model.js.map +1 -0
  157. package/dist/models/alert.model.d.ts +54 -0
  158. package/dist/models/alert.model.d.ts.map +1 -0
  159. package/dist/models/alert.model.js +119 -0
  160. package/dist/models/alert.model.js.map +1 -0
  161. package/dist/models/dedup-config.model.d.ts +53 -0
  162. package/dist/models/dedup-config.model.d.ts.map +1 -0
  163. package/dist/models/dedup-config.model.js +157 -0
  164. package/dist/models/dedup-config.model.js.map +1 -0
  165. package/dist/models/grouping-config.model.d.ts +70 -0
  166. package/dist/models/grouping-config.model.d.ts.map +1 -0
  167. package/dist/models/grouping-config.model.js +174 -0
  168. package/dist/models/grouping-config.model.js.map +1 -0
  169. package/dist/models/incident-comment.model.d.ts +14 -0
  170. package/dist/models/incident-comment.model.d.ts.map +1 -0
  171. package/dist/models/incident-comment.model.js +38 -0
  172. package/dist/models/incident-comment.model.js.map +1 -0
  173. package/dist/models/incident-event.model.d.ts +16 -0
  174. package/dist/models/incident-event.model.d.ts.map +1 -0
  175. package/dist/models/incident-event.model.js +31 -0
  176. package/dist/models/incident-event.model.js.map +1 -0
  177. package/dist/models/incident.model.d.ts +47 -0
  178. package/dist/models/incident.model.d.ts.map +1 -0
  179. package/dist/models/incident.model.js +201 -0
  180. package/dist/models/incident.model.js.map +1 -0
  181. package/dist/models/normalization-config.model.d.ts +44 -0
  182. package/dist/models/normalization-config.model.d.ts.map +1 -0
  183. package/dist/models/normalization-config.model.js +153 -0
  184. package/dist/models/normalization-config.model.js.map +1 -0
  185. package/dist/models/notification-provider.model.d.ts +12 -0
  186. package/dist/models/notification-provider.model.d.ts.map +1 -0
  187. package/dist/models/notification-provider.model.js +48 -0
  188. package/dist/models/notification-provider.model.js.map +1 -0
  189. package/dist/models/pipeline-event.model.d.ts +15 -0
  190. package/dist/models/pipeline-event.model.d.ts.map +1 -0
  191. package/dist/models/pipeline-event.model.js +32 -0
  192. package/dist/models/pipeline-event.model.js.map +1 -0
  193. package/dist/models/settings.model.d.ts +8 -0
  194. package/dist/models/settings.model.d.ts.map +1 -0
  195. package/dist/models/settings.model.js +30 -0
  196. package/dist/models/settings.model.js.map +1 -0
  197. package/dist/models/sop.model.d.ts +58 -0
  198. package/dist/models/sop.model.d.ts.map +1 -0
  199. package/dist/models/sop.model.js +138 -0
  200. package/dist/models/sop.model.js.map +1 -0
  201. package/dist/models/source.model.d.ts +177 -0
  202. package/dist/models/source.model.d.ts.map +1 -0
  203. package/dist/models/source.model.js +794 -0
  204. package/dist/models/source.model.js.map +1 -0
  205. package/dist/models/tenant.model.d.ts +13 -0
  206. package/dist/models/tenant.model.d.ts.map +1 -0
  207. package/dist/models/tenant.model.js +28 -0
  208. package/dist/models/tenant.model.js.map +1 -0
  209. package/dist/models/workflow.model.d.ts +36 -0
  210. package/dist/models/workflow.model.d.ts.map +1 -0
  211. package/dist/models/workflow.model.js +136 -0
  212. package/dist/models/workflow.model.js.map +1 -0
  213. package/dist/pipeline/AlarmPipelineWorker.d.ts +18 -0
  214. package/dist/pipeline/AlarmPipelineWorker.d.ts.map +1 -0
  215. package/dist/pipeline/AlarmPipelineWorker.js +342 -0
  216. package/dist/pipeline/AlarmPipelineWorker.js.map +1 -0
  217. package/dist/pipeline/CanonicalAlarm.d.ts +59 -0
  218. package/dist/pipeline/CanonicalAlarm.d.ts.map +1 -0
  219. package/dist/pipeline/CanonicalAlarm.js +81 -0
  220. package/dist/pipeline/CanonicalAlarm.js.map +1 -0
  221. package/dist/pipeline/DedupService.d.ts +29 -0
  222. package/dist/pipeline/DedupService.d.ts.map +1 -0
  223. package/dist/pipeline/DedupService.js +172 -0
  224. package/dist/pipeline/DedupService.js.map +1 -0
  225. package/dist/pipeline/GroupFlushWorker.d.ts +16 -0
  226. package/dist/pipeline/GroupFlushWorker.d.ts.map +1 -0
  227. package/dist/pipeline/GroupFlushWorker.js +196 -0
  228. package/dist/pipeline/GroupFlushWorker.js.map +1 -0
  229. package/dist/pipeline/GroupingService.d.ts +27 -0
  230. package/dist/pipeline/GroupingService.d.ts.map +1 -0
  231. package/dist/pipeline/GroupingService.js +338 -0
  232. package/dist/pipeline/GroupingService.js.map +1 -0
  233. package/dist/pipeline/NormalizationRuleEngine.d.ts +5 -0
  234. package/dist/pipeline/NormalizationRuleEngine.d.ts.map +1 -0
  235. package/dist/pipeline/NormalizationRuleEngine.js +86 -0
  236. package/dist/pipeline/NormalizationRuleEngine.js.map +1 -0
  237. package/dist/pipeline/NormalizationService.d.ts +29 -0
  238. package/dist/pipeline/NormalizationService.d.ts.map +1 -0
  239. package/dist/pipeline/NormalizationService.js +275 -0
  240. package/dist/pipeline/NormalizationService.js.map +1 -0
  241. package/dist/pipeline/alarmQueue.d.ts +66 -0
  242. package/dist/pipeline/alarmQueue.d.ts.map +1 -0
  243. package/dist/pipeline/alarmQueue.js +254 -0
  244. package/dist/pipeline/alarmQueue.js.map +1 -0
  245. package/dist/pipeline/defaults/ensureDefaults.d.ts +3 -0
  246. package/dist/pipeline/defaults/ensureDefaults.d.ts.map +1 -0
  247. package/dist/pipeline/defaults/ensureDefaults.js +124 -0
  248. package/dist/pipeline/defaults/ensureDefaults.js.map +1 -0
  249. package/dist/pipeline/defaults/pipelineDefaults.d.ts +13 -0
  250. package/dist/pipeline/defaults/pipelineDefaults.d.ts.map +1 -0
  251. package/dist/pipeline/defaults/pipelineDefaults.js +266 -0
  252. package/dist/pipeline/defaults/pipelineDefaults.js.map +1 -0
  253. package/dist/pipeline/yaml/DedupYaml.d.ts +33 -0
  254. package/dist/pipeline/yaml/DedupYaml.d.ts.map +1 -0
  255. package/dist/pipeline/yaml/DedupYaml.js +25 -0
  256. package/dist/pipeline/yaml/DedupYaml.js.map +1 -0
  257. package/dist/pipeline/yaml/GroupingYaml.d.ts +49 -0
  258. package/dist/pipeline/yaml/GroupingYaml.d.ts.map +1 -0
  259. package/dist/pipeline/yaml/GroupingYaml.js +39 -0
  260. package/dist/pipeline/yaml/GroupingYaml.js.map +1 -0
  261. package/dist/pipeline/yaml/NormalizationYaml.d.ts +54 -0
  262. package/dist/pipeline/yaml/NormalizationYaml.d.ts.map +1 -0
  263. package/dist/pipeline/yaml/NormalizationYaml.js +23 -0
  264. package/dist/pipeline/yaml/NormalizationYaml.js.map +1 -0
  265. package/dist/pipeline/yaml/pipelineYaml.d.ts +11 -0
  266. package/dist/pipeline/yaml/pipelineYaml.d.ts.map +1 -0
  267. package/dist/pipeline/yaml/pipelineYaml.js +49 -0
  268. package/dist/pipeline/yaml/pipelineYaml.js.map +1 -0
  269. package/dist/realtime/events.d.ts +11 -0
  270. package/dist/realtime/events.d.ts.map +1 -0
  271. package/dist/realtime/events.js +21 -0
  272. package/dist/realtime/events.js.map +1 -0
  273. package/dist/routes/alert.routes.d.ts +4 -0
  274. package/dist/routes/alert.routes.d.ts.map +1 -0
  275. package/dist/routes/alert.routes.js +15 -0
  276. package/dist/routes/alert.routes.js.map +1 -0
  277. package/dist/routes/dedup-config.routes.d.ts +4 -0
  278. package/dist/routes/dedup-config.routes.d.ts.map +1 -0
  279. package/dist/routes/dedup-config.routes.js +82 -0
  280. package/dist/routes/dedup-config.routes.js.map +1 -0
  281. package/dist/routes/grouping-config.routes.d.ts +4 -0
  282. package/dist/routes/grouping-config.routes.d.ts.map +1 -0
  283. package/dist/routes/grouping-config.routes.js +82 -0
  284. package/dist/routes/grouping-config.routes.js.map +1 -0
  285. package/dist/routes/incident.routes.d.ts +4 -0
  286. package/dist/routes/incident.routes.d.ts.map +1 -0
  287. package/dist/routes/incident.routes.js +21 -0
  288. package/dist/routes/incident.routes.js.map +1 -0
  289. package/dist/routes/index.d.ts +47 -0
  290. package/dist/routes/index.d.ts.map +1 -0
  291. package/dist/routes/index.js +83 -0
  292. package/dist/routes/index.js.map +1 -0
  293. package/dist/routes/normalization-config.routes.d.ts +4 -0
  294. package/dist/routes/normalization-config.routes.d.ts.map +1 -0
  295. package/dist/routes/normalization-config.routes.js +199 -0
  296. package/dist/routes/normalization-config.routes.js.map +1 -0
  297. package/dist/routes/notification-provider.routes.d.ts +4 -0
  298. package/dist/routes/notification-provider.routes.d.ts.map +1 -0
  299. package/dist/routes/notification-provider.routes.js +13 -0
  300. package/dist/routes/notification-provider.routes.js.map +1 -0
  301. package/dist/routes/pipeline.routes.d.ts +8 -0
  302. package/dist/routes/pipeline.routes.d.ts.map +1 -0
  303. package/dist/routes/pipeline.routes.js +243 -0
  304. package/dist/routes/pipeline.routes.js.map +1 -0
  305. package/dist/routes/settings.routes.d.ts +4 -0
  306. package/dist/routes/settings.routes.d.ts.map +1 -0
  307. package/dist/routes/settings.routes.js +10 -0
  308. package/dist/routes/settings.routes.js.map +1 -0
  309. package/dist/routes/sop.routes.d.ts +4 -0
  310. package/dist/routes/sop.routes.d.ts.map +1 -0
  311. package/dist/routes/sop.routes.js +14 -0
  312. package/dist/routes/sop.routes.js.map +1 -0
  313. package/dist/routes/source.routes.d.ts +9 -0
  314. package/dist/routes/source.routes.d.ts.map +1 -0
  315. package/dist/routes/source.routes.js +31 -0
  316. package/dist/routes/source.routes.js.map +1 -0
  317. package/dist/routes/tenant.routes.d.ts +4 -0
  318. package/dist/routes/tenant.routes.d.ts.map +1 -0
  319. package/dist/routes/tenant.routes.js +10 -0
  320. package/dist/routes/tenant.routes.js.map +1 -0
  321. package/dist/routes/workflow.routes.d.ts +4 -0
  322. package/dist/routes/workflow.routes.d.ts.map +1 -0
  323. package/dist/routes/workflow.routes.js +18 -0
  324. package/dist/routes/workflow.routes.js.map +1 -0
  325. package/dist/server.d.ts +22 -0
  326. package/dist/server.d.ts.map +1 -0
  327. package/dist/server.js +76 -0
  328. package/dist/server.js.map +1 -0
  329. package/dist/service.d.ts +159 -0
  330. package/dist/service.d.ts.map +1 -0
  331. package/dist/service.js +156 -0
  332. package/dist/service.js.map +1 -0
  333. package/dist/services/alert.service.d.ts +76 -0
  334. package/dist/services/alert.service.d.ts.map +1 -0
  335. package/dist/services/alert.service.js +688 -0
  336. package/dist/services/alert.service.js.map +1 -0
  337. package/dist/services/connector.service.d.ts +65 -0
  338. package/dist/services/connector.service.d.ts.map +1 -0
  339. package/dist/services/connector.service.js +28 -0
  340. package/dist/services/connector.service.js.map +1 -0
  341. package/dist/services/incident.service.d.ts +108 -0
  342. package/dist/services/incident.service.d.ts.map +1 -0
  343. package/dist/services/incident.service.js +325 -0
  344. package/dist/services/incident.service.js.map +1 -0
  345. package/dist/services/notification-provider.service.d.ts +12 -0
  346. package/dist/services/notification-provider.service.d.ts.map +1 -0
  347. package/dist/services/notification-provider.service.js +25 -0
  348. package/dist/services/notification-provider.service.js.map +1 -0
  349. package/dist/services/settings.service.d.ts +8 -0
  350. package/dist/services/settings.service.d.ts.map +1 -0
  351. package/dist/services/settings.service.js +14 -0
  352. package/dist/services/settings.service.js.map +1 -0
  353. package/dist/services/sop.service.d.ts +60 -0
  354. package/dist/services/sop.service.d.ts.map +1 -0
  355. package/dist/services/sop.service.js +66 -0
  356. package/dist/services/sop.service.js.map +1 -0
  357. package/dist/services/source.service.d.ts +162 -0
  358. package/dist/services/source.service.d.ts.map +1 -0
  359. package/dist/services/source.service.js +124 -0
  360. package/dist/services/source.service.js.map +1 -0
  361. package/dist/services/tenant.service.d.ts +11 -0
  362. package/dist/services/tenant.service.d.ts.map +1 -0
  363. package/dist/services/tenant.service.js +22 -0
  364. package/dist/services/tenant.service.js.map +1 -0
  365. package/dist/services/workflow.service.d.ts +32 -0
  366. package/dist/services/workflow.service.d.ts.map +1 -0
  367. package/dist/services/workflow.service.js +291 -0
  368. package/dist/services/workflow.service.js.map +1 -0
  369. package/dist/standalone.d.ts +2 -0
  370. package/dist/standalone.d.ts.map +1 -0
  371. package/dist/standalone.js +55 -0
  372. package/dist/standalone.js.map +1 -0
  373. package/dist/tenancy.d.ts +5 -0
  374. package/dist/tenancy.d.ts.map +1 -0
  375. package/dist/tenancy.js +35 -0
  376. package/dist/tenancy.js.map +1 -0
  377. package/dist/utils/notificationTemplates.d.ts +98 -0
  378. package/dist/utils/notificationTemplates.d.ts.map +1 -0
  379. package/dist/utils/notificationTemplates.js +227 -0
  380. package/dist/utils/notificationTemplates.js.map +1 -0
  381. package/dist/utils/secretCrypto.d.ts +3 -0
  382. package/dist/utils/secretCrypto.d.ts.map +1 -0
  383. package/dist/utils/secretCrypto.js +40 -0
  384. package/dist/utils/secretCrypto.js.map +1 -0
  385. package/dist/utils/workflowYaml.d.ts +53 -0
  386. package/dist/utils/workflowYaml.d.ts.map +1 -0
  387. package/dist/utils/workflowYaml.js +269 -0
  388. package/dist/utils/workflowYaml.js.map +1 -0
  389. package/package.json +73 -0
@@ -0,0 +1,70 @@
1
+ export interface GroupingConfigRow {
2
+ id: string;
3
+ name: string;
4
+ priority: number;
5
+ isActive: boolean;
6
+ sourceId: string | null;
7
+ sourceType: string | null;
8
+ groupBy: string[];
9
+ timeoutSeconds: number;
10
+ maxAlarms: number;
11
+ incidentTitleTemplate: string | null;
12
+ useAiGenerate: boolean;
13
+ userPrompt: string | null;
14
+ yamlDefinition: string;
15
+ topologyTagMapping: string | null;
16
+ isSystem: boolean;
17
+ tenantId: string | null;
18
+ createdAt: Date;
19
+ updatedAt: Date;
20
+ }
21
+ export interface CreateGroupingConfigInput {
22
+ name: string;
23
+ priority?: number;
24
+ isActive?: boolean;
25
+ sourceId?: string | null;
26
+ sourceType?: string | null;
27
+ groupBy?: string[];
28
+ timeoutSeconds?: number;
29
+ maxAlarms?: number;
30
+ topologyTagMapping?: string | null;
31
+ incidentTitleTemplate?: string | null;
32
+ useAiGenerate?: boolean;
33
+ userPrompt?: string | null;
34
+ yamlDefinition?: string;
35
+ tenantId?: string | null;
36
+ }
37
+ export interface UpdateGroupingConfigInput {
38
+ name?: string;
39
+ priority?: number;
40
+ isActive?: boolean;
41
+ sourceId?: string | null;
42
+ sourceType?: string | null;
43
+ groupBy?: string[];
44
+ timeoutSeconds?: number;
45
+ maxAlarms?: number;
46
+ topologyTagMapping?: string | null;
47
+ incidentTitleTemplate?: string | null;
48
+ useAiGenerate?: boolean;
49
+ userPrompt?: string | null;
50
+ yamlDefinition?: string;
51
+ isSystem?: boolean;
52
+ }
53
+ export declare class GroupingConfigModel {
54
+ private db;
55
+ private table;
56
+ private sourceTable?;
57
+ constructor(db: any, table: any, sourceTable?: any);
58
+ /**
59
+ * Find highest-priority active grouping config.
60
+ * Resolution: source_id → source_type → global (both null).
61
+ */
62
+ findCandidates(sourceId: string, sourceType: string, tenantId?: string): Promise<GroupingConfigRow[]>;
63
+ findByPriority(sourceId: string, sourceType: string, tenantId?: string): Promise<GroupingConfigRow | null>;
64
+ list(tenantId?: string, sourceId?: string): Promise<GroupingConfigRow[]>;
65
+ findById(id: string, tenantId?: string): Promise<GroupingConfigRow | null>;
66
+ create(input: CreateGroupingConfigInput): Promise<GroupingConfigRow>;
67
+ update(id: string, data: Partial<CreateGroupingConfigInput>, tenantId?: string): Promise<GroupingConfigRow | null>;
68
+ delete(id: string, tenantId?: string): Promise<void>;
69
+ }
70
+ //# sourceMappingURL=grouping-config.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-config.model.d.ts","sourceRoot":"","sources":["../../src/models/grouping-config.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { eq, and, isNull, asc, or } from "drizzle-orm";
2
+ import { parseGroupingYaml } from "../pipeline/yaml/pipelineYaml.js";
3
+ import { ensureTenantPipelineDefaults } from "../pipeline/defaults/ensureDefaults.js";
4
+ export class GroupingConfigModel {
5
+ db;
6
+ table;
7
+ sourceTable;
8
+ constructor(db, table, sourceTable) {
9
+ this.db = db;
10
+ this.table = table;
11
+ this.sourceTable = sourceTable;
12
+ }
13
+ /**
14
+ * Find highest-priority active grouping config.
15
+ * Resolution: source_id → source_type → global (both null).
16
+ */
17
+ async findCandidates(sourceId, sourceType, tenantId) {
18
+ const tenantCond = tenantId ? eq(this.table.tenantId, tenantId) : undefined;
19
+ const conds = [eq(this.table.isActive, true)];
20
+ if (tenantCond)
21
+ conds.push(tenantCond);
22
+ const all = await this.db
23
+ .select()
24
+ .from(this.table)
25
+ .where(and(...conds))
26
+ .orderBy(asc(this.table.priority));
27
+ return all.filter((c) => {
28
+ if (c.sourceId && c.sourceId === sourceId)
29
+ return true;
30
+ if (!c.sourceId && c.sourceType && c.sourceType === sourceType)
31
+ return true;
32
+ if (!c.sourceId && !c.sourceType)
33
+ return true;
34
+ return false;
35
+ }).sort((a, b) => {
36
+ const aSpecificity = a.sourceId ? 2 : a.sourceType ? 1 : 0;
37
+ const bSpecificity = b.sourceId ? 2 : b.sourceType ? 1 : 0;
38
+ if (aSpecificity !== bSpecificity)
39
+ return bSpecificity - aSpecificity;
40
+ return (a.priority ?? 0) - (b.priority ?? 0);
41
+ });
42
+ }
43
+ async findByPriority(sourceId, sourceType, tenantId) {
44
+ const candidates = await this.findCandidates(sourceId, sourceType, tenantId);
45
+ return candidates[0] ?? null;
46
+ }
47
+ async list(tenantId, sourceId) {
48
+ if (tenantId)
49
+ await ensureTenantPipelineDefaults(this.db, tenantId);
50
+ let q = this.db.select().from(this.table);
51
+ const conditions = [];
52
+ if (tenantId)
53
+ conditions.push(eq(this.table.tenantId, tenantId));
54
+ if (sourceId) {
55
+ let sType = null;
56
+ if (this.sourceTable) {
57
+ const src = await this.db.select().from(this.sourceTable).where(eq(this.sourceTable.id, sourceId)).limit(1);
58
+ if (src.length > 0)
59
+ sType = src[0].type;
60
+ }
61
+ if (sType) {
62
+ conditions.push(or(eq(this.table.sourceId, sourceId), and(isNull(this.table.sourceId), eq(this.table.sourceType, sType)), and(isNull(this.table.sourceId), isNull(this.table.sourceType))));
63
+ }
64
+ else {
65
+ conditions.push(or(eq(this.table.sourceId, sourceId), and(isNull(this.table.sourceId), isNull(this.table.sourceType))));
66
+ }
67
+ }
68
+ if (conditions.length > 0) {
69
+ q = q.where(and(...conditions));
70
+ }
71
+ return q.orderBy(asc(this.table.priority));
72
+ }
73
+ async findById(id, tenantId) {
74
+ const conditions = [eq(this.table.id, id)];
75
+ if (tenantId)
76
+ conditions.push(eq(this.table.tenantId, tenantId));
77
+ const rows = await this.db.select().from(this.table).where(conditions.length > 1 ? and(...conditions) : conditions[0]).limit(1);
78
+ return rows[0] ?? null;
79
+ }
80
+ async create(input) {
81
+ let groupBy = input.groupBy ?? [];
82
+ let timeoutSeconds = input.timeoutSeconds ?? 600;
83
+ let name = input.name;
84
+ let priority = input.priority ?? 0;
85
+ let isActive = input.isActive ?? true;
86
+ let sourceId = input.sourceId ?? null;
87
+ let sourceType = input.sourceType ?? null;
88
+ let incidentTitleTemplate = input.incidentTitleTemplate ?? null;
89
+ let useAiGenerate = input.useAiGenerate ?? false;
90
+ let userPrompt = input.userPrompt ?? null;
91
+ if (input.yamlDefinition) {
92
+ const parsed = parseGroupingYaml(input.yamlDefinition);
93
+ if (parsed.ok) {
94
+ groupBy = parsed.data.default_key ?? groupBy;
95
+ timeoutSeconds = parsed.data.window_seconds ?? timeoutSeconds;
96
+ name = parsed.data.name ?? name;
97
+ priority = parsed.data.priority ?? priority;
98
+ isActive = parsed.data.is_active ?? isActive;
99
+ sourceId = parsed.data.source_id ?? sourceId;
100
+ sourceType = parsed.data.source_type ?? sourceType;
101
+ if (parsed.data.incident_title)
102
+ incidentTitleTemplate = parsed.data.incident_title;
103
+ if (parsed.data.user_prompt)
104
+ userPrompt = parsed.data.user_prompt;
105
+ if (parsed.data.topology_tag_mapping)
106
+ input.topologyTagMapping = parsed.data.topology_tag_mapping;
107
+ }
108
+ }
109
+ const rows = await this.db.insert(this.table).values({
110
+ name,
111
+ priority,
112
+ isActive,
113
+ sourceId,
114
+ sourceType,
115
+ groupBy,
116
+ timeoutSeconds,
117
+ maxAlarms: input.maxAlarms ?? 50,
118
+ incidentTitleTemplate,
119
+ useAiGenerate,
120
+ userPrompt,
121
+ topologyTagMapping: input.topologyTagMapping ?? null,
122
+ yamlDefinition: input.yamlDefinition ?? "",
123
+ isSystem: false,
124
+ tenantId: input.tenantId ?? null,
125
+ }).returning();
126
+ return rows[0];
127
+ }
128
+ async update(id, data, tenantId) {
129
+ const updateData = { ...data, updatedAt: new Date() };
130
+ if (data.yamlDefinition) {
131
+ const parsed = parseGroupingYaml(data.yamlDefinition);
132
+ if (parsed.ok) {
133
+ if (parsed.data.default_key !== undefined)
134
+ updateData.groupBy = parsed.data.default_key;
135
+ if (parsed.data.window_seconds !== undefined)
136
+ updateData.timeoutSeconds = parsed.data.window_seconds;
137
+ if (parsed.data.name !== undefined)
138
+ updateData.name = parsed.data.name;
139
+ if (parsed.data.priority !== undefined)
140
+ updateData.priority = parsed.data.priority;
141
+ if (parsed.data.is_active !== undefined)
142
+ updateData.isActive = parsed.data.is_active;
143
+ if (parsed.data.source_id !== undefined)
144
+ updateData.sourceId = parsed.data.source_id;
145
+ if (parsed.data.source_type !== undefined)
146
+ updateData.sourceType = parsed.data.source_type;
147
+ if (parsed.data.incident_title !== undefined)
148
+ updateData.incidentTitleTemplate = parsed.data.incident_title;
149
+ if (parsed.data.use_ai_generate !== undefined)
150
+ updateData.useAiGenerate = parsed.data.use_ai_generate;
151
+ if (parsed.data.user_prompt !== undefined)
152
+ updateData.userPrompt = parsed.data.user_prompt;
153
+ if (parsed.data.topology_tag_mapping !== undefined)
154
+ updateData.topologyTagMapping = parsed.data.topology_tag_mapping;
155
+ }
156
+ }
157
+ const conditions = [eq(this.table.id, id)];
158
+ if (tenantId)
159
+ conditions.push(eq(this.table.tenantId, tenantId));
160
+ const rows = await this.db
161
+ .update(this.table)
162
+ .set(updateData)
163
+ .where(conditions.length > 1 ? and(...conditions) : conditions[0])
164
+ .returning();
165
+ return rows[0] ?? null;
166
+ }
167
+ async delete(id, tenantId) {
168
+ const conditions = [eq(this.table.id, id)];
169
+ if (tenantId)
170
+ conditions.push(eq(this.table.tenantId, tenantId));
171
+ await this.db.delete(this.table).where(conditions.length > 1 ? and(...conditions) : conditions[0]);
172
+ }
173
+ }
174
+ //# sourceMappingURL=grouping-config.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-config.model.js","sourceRoot":"","sources":["../../src/models/grouping-config.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class IncidentCommentModel {
2
+ private db;
3
+ private tbl;
4
+ constructor(db: any, tbl: any);
5
+ listByIncidentId(incidentId: string): Promise<any>;
6
+ listByIncidentIds(incidentIds: string[]): Promise<any>;
7
+ create(input: {
8
+ incidentId: string;
9
+ message: string;
10
+ authorId?: string | null;
11
+ authorName?: string | null;
12
+ }): Promise<any>;
13
+ }
14
+ //# sourceMappingURL=incident-comment.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-comment.model.d.ts","sourceRoot":"","sources":["../../src/models/incident-comment.model.ts"],"names":[],"mappings":"AAEA,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;gBADH,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,GAAG;IAGZ,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAQnC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE;IASvC,MAAM,CAAC,KAAK,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B;CAYF"}
@@ -0,0 +1,38 @@
1
+ import { asc, eq, inArray } from "drizzle-orm";
2
+ export class IncidentCommentModel {
3
+ db;
4
+ tbl;
5
+ constructor(db, tbl) {
6
+ this.db = db;
7
+ this.tbl = tbl;
8
+ }
9
+ async listByIncidentId(incidentId) {
10
+ return this.db
11
+ .select()
12
+ .from(this.tbl)
13
+ .where(eq(this.tbl.incidentId, incidentId))
14
+ .orderBy(asc(this.tbl.createdAt));
15
+ }
16
+ async listByIncidentIds(incidentIds) {
17
+ if (!incidentIds.length)
18
+ return [];
19
+ return this.db
20
+ .select()
21
+ .from(this.tbl)
22
+ .where(inArray(this.tbl.incidentId, incidentIds))
23
+ .orderBy(asc(this.tbl.createdAt));
24
+ }
25
+ async create(input) {
26
+ const [row] = await this.db
27
+ .insert(this.tbl)
28
+ .values({
29
+ incidentId: input.incidentId,
30
+ message: input.message,
31
+ authorId: input.authorId ?? null,
32
+ authorName: input.authorName ?? null,
33
+ })
34
+ .returning();
35
+ return row;
36
+ }
37
+ }
38
+ //# sourceMappingURL=incident-comment.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-comment.model.js","sourceRoot":"","sources":["../../src/models/incident-comment.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,OAAO,oBAAoB;IAErB;IACA;IAFV,YACU,EAAO,EACP,GAAQ;QADR,OAAE,GAAF,EAAE,CAAK;QACP,QAAG,GAAH,GAAG,CAAK;IACf,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACd,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAqB;QAC3C,IAAI,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACd,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;aAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAKZ;QACC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE;aACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC;YACN,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;SACrC,CAAC;aACD,SAAS,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ export interface CreateIncidentEventInput {
2
+ incidentId: string;
3
+ type: string;
4
+ actor?: string | null;
5
+ message?: string | null;
6
+ beforeValue?: string | null;
7
+ afterValue?: string | null;
8
+ }
9
+ export declare class IncidentEventModel {
10
+ private db;
11
+ private tbl;
12
+ constructor(db: any, tbl: any);
13
+ listByIncidentId(incidentId: string): Promise<any>;
14
+ create(input: CreateIncidentEventInput): Promise<any>;
15
+ }
16
+ //# sourceMappingURL=incident-event.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-event.model.d.ts","sourceRoot":"","sources":["../../src/models/incident-event.model.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;gBADH,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,GAAG;IAGZ,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAQnC,MAAM,CAAC,KAAK,EAAE,wBAAwB;CAc7C"}
@@ -0,0 +1,31 @@
1
+ import { asc, eq } from "drizzle-orm";
2
+ export class IncidentEventModel {
3
+ db;
4
+ tbl;
5
+ constructor(db, tbl) {
6
+ this.db = db;
7
+ this.tbl = tbl;
8
+ }
9
+ async listByIncidentId(incidentId) {
10
+ return this.db
11
+ .select()
12
+ .from(this.tbl)
13
+ .where(eq(this.tbl.incidentId, incidentId))
14
+ .orderBy(asc(this.tbl.createdAt));
15
+ }
16
+ async create(input) {
17
+ const [row] = await this.db
18
+ .insert(this.tbl)
19
+ .values({
20
+ incidentId: input.incidentId,
21
+ type: input.type,
22
+ actor: input.actor ?? null,
23
+ message: input.message ?? null,
24
+ beforeValue: input.beforeValue ?? null,
25
+ afterValue: input.afterValue ?? null,
26
+ })
27
+ .returning();
28
+ return row;
29
+ }
30
+ }
31
+ //# sourceMappingURL=incident-event.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-event.model.js","sourceRoot":"","sources":["../../src/models/incident-event.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAWtC,MAAM,OAAO,kBAAkB;IAEnB;IACA;IAFV,YACU,EAAO,EACP,GAAQ;QADR,OAAE,GAAF,EAAE,CAAK;QACP,QAAG,GAAH,GAAG,CAAK;IACf,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACd,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA+B;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE;aACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC;YACN,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;SACrC,CAAC;aACD,SAAS,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ export declare class IncidentModel {
2
+ private db;
3
+ private tbl;
4
+ constructor(db: any, tbl: any);
5
+ findById(id: string, tenantId?: string): Promise<any>;
6
+ searchUsers(search: string, limit: number, tenantId?: string): Promise<any>;
7
+ findByIds(ids: string[], tenantId?: string): Promise<any>;
8
+ list(params: {
9
+ page: number;
10
+ limit: number;
11
+ name?: string;
12
+ search?: string;
13
+ assigneeIds?: string[];
14
+ statuses?: string[];
15
+ sourceTypes?: string[];
16
+ tenantId?: string;
17
+ }): Promise<{
18
+ incidents: any;
19
+ total: number;
20
+ page: number;
21
+ limit: number;
22
+ }>;
23
+ /**
24
+ * Lightweight projection of incidents for dashboard/analytics aggregation.
25
+ * Returns only the columns needed for stat computation, optionally scoped
26
+ * to a tenant and/or a createdAt lower bound.
27
+ */
28
+ findForAggregation(tenantId?: string, sinceIso?: string, sourceTypes?: string[]): Promise<any>;
29
+ create(input: {
30
+ name: string;
31
+ source: string;
32
+ resourceName: string;
33
+ resourceType: string;
34
+ downMessage?: string | null;
35
+ tags?: Record<string, string>;
36
+ downTime?: string;
37
+ alertId?: string | null;
38
+ assigneeIds?: string[];
39
+ tenantId?: string | null;
40
+ description?: string | null;
41
+ accountId?: string | null;
42
+ accountName?: string | null;
43
+ }): Promise<any>;
44
+ update(id: string, data: Record<string, any>, tenantId?: string): Promise<void>;
45
+ delete(id: string, tenantId?: string): Promise<void>;
46
+ }
47
+ //# sourceMappingURL=incident.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident.model.d.ts","sourceRoot":"","sources":["../../src/models/incident.model.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IAEtB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;gBADH,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,GAAG;IAGZ,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAWtC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAgB5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM;IAU1C,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;IAwDD;;;;OAIG;IACG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;IAmC/E,MAAM,CAAC,KAAK,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B;IAwBK,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,QAAQ,CAAC,EAAE,MAAM;IAab,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAiB3C"}
@@ -0,0 +1,201 @@
1
+ import { eq, desc, count, and, inArray, sql, or } from "drizzle-orm";
2
+ export class IncidentModel {
3
+ db;
4
+ tbl;
5
+ constructor(db, tbl) {
6
+ this.db = db;
7
+ this.tbl = tbl;
8
+ }
9
+ async findById(id, tenantId) {
10
+ const conditions = [eq(this.tbl.id, id)];
11
+ if (tenantId)
12
+ conditions.push(eq(this.tbl.tenantId, tenantId));
13
+ const [row] = await this.db
14
+ .select()
15
+ .from(this.tbl)
16
+ .where(conditions.length > 1 ? and(...conditions) : conditions[0])
17
+ .limit(1);
18
+ return row ?? null;
19
+ }
20
+ async searchUsers(search, limit, tenantId) {
21
+ const searchParam = `%${search}%`;
22
+ let query;
23
+ if (search) {
24
+ query = tenantId
25
+ ? sql `SELECT id, email, full_name FROM "meyiconnect"."users" WHERE (email ILIKE ${searchParam} OR full_name ILIKE ${searchParam}) AND tenant_id = ${tenantId}::uuid LIMIT ${limit}`
26
+ : sql `SELECT id, email, full_name FROM "meyiconnect"."users" WHERE email ILIKE ${searchParam} OR full_name ILIKE ${searchParam} LIMIT ${limit}`;
27
+ }
28
+ else {
29
+ query = tenantId
30
+ ? sql `SELECT id, email, full_name FROM "meyiconnect"."users" WHERE tenant_id = ${tenantId}::uuid LIMIT ${limit}`
31
+ : sql `SELECT id, email, full_name FROM "meyiconnect"."users" LIMIT ${limit}`;
32
+ }
33
+ const { rows } = await this.db.execute(query);
34
+ return rows;
35
+ }
36
+ async findByIds(ids, tenantId) {
37
+ if (!ids.length)
38
+ return [];
39
+ const conditions = [inArray(this.tbl.id, ids)];
40
+ if (tenantId)
41
+ conditions.push(eq(this.tbl.tenantId, tenantId));
42
+ return this.db
43
+ .select()
44
+ .from(this.tbl)
45
+ .where(conditions.length > 1 ? and(...conditions) : conditions[0]);
46
+ }
47
+ async list(params) {
48
+ const { page, limit } = params;
49
+ const offset = (page - 1) * limit;
50
+ const conditions = [];
51
+ if (params.name)
52
+ conditions.push(eq(this.tbl.name, params.name));
53
+ if (params.tenantId)
54
+ conditions.push(eq(this.tbl.tenantId, params.tenantId));
55
+ if (params.sourceTypes !== undefined) {
56
+ if (params.sourceTypes.length === 0) {
57
+ conditions.push(sql `1 = 0`);
58
+ }
59
+ else {
60
+ const lowerSources = params.sourceTypes.map((s) => s.toLowerCase());
61
+ conditions.push(inArray(sql `LOWER(${this.tbl.source})`, lowerSources));
62
+ }
63
+ }
64
+ if (params.assigneeIds?.length) {
65
+ const assigneeConditions = params.assigneeIds.map((assigneeId) => {
66
+ if (assigneeId === "unassigned") {
67
+ return sql `(${this.tbl.assigneeIds} IS NULL OR ${this.tbl.assigneeIds}::text = '[]' OR ${this.tbl.assigneeIds}::text = 'null')`;
68
+ }
69
+ const jsonMatch = JSON.stringify([assigneeId]);
70
+ const pattern = `%"${assigneeId}"%`;
71
+ return sql `(${this.tbl.assigneeIds}::jsonb @> ${jsonMatch}::jsonb OR ${this.tbl.assigneeIds}::text LIKE ${pattern})`;
72
+ });
73
+ conditions.push(or(...assigneeConditions));
74
+ }
75
+ if (params.search) {
76
+ const pattern = `%${params.search}%`;
77
+ conditions.push(sql `(${this.tbl.name} ILIKE ${pattern} OR ${this.tbl.resourceName} ILIKE ${pattern} OR ${this.tbl.tags}::text ILIKE ${pattern})`);
78
+ }
79
+ if (params.statuses?.length) {
80
+ const taskStatuses = params.statuses.filter((s) => ["open", "in_progress", "resolved", "closed"].includes(s));
81
+ const analysisStatuses = params.statuses.filter((s) => !["open", "in_progress", "resolved", "closed"].includes(s));
82
+ const statusConditions = [];
83
+ if (taskStatuses.length)
84
+ statusConditions.push(inArray(this.tbl.status, taskStatuses));
85
+ if (analysisStatuses.length)
86
+ statusConditions.push(inArray(this.tbl.analysisStatus, analysisStatuses));
87
+ if (statusConditions.length)
88
+ conditions.push(or(...statusConditions));
89
+ }
90
+ const whereClause = conditions.length > 0 ? and(...conditions) : undefined;
91
+ let q = this.db
92
+ .select()
93
+ .from(this.tbl)
94
+ .orderBy(desc(this.tbl.createdAt))
95
+ .limit(limit)
96
+ .offset(offset);
97
+ if (whereClause)
98
+ q = q.where(whereClause);
99
+ const incidents = await q;
100
+ let countQ = this.db.select({ value: count() }).from(this.tbl);
101
+ if (whereClause)
102
+ countQ = countQ.where(whereClause);
103
+ const [{ value: total }] = await countQ;
104
+ return { incidents, total: Number(total), page, limit };
105
+ }
106
+ /**
107
+ * Lightweight projection of incidents for dashboard/analytics aggregation.
108
+ * Returns only the columns needed for stat computation, optionally scoped
109
+ * to a tenant and/or a createdAt lower bound.
110
+ */
111
+ async findForAggregation(tenantId, sinceIso, sourceTypes) {
112
+ const conditions = [];
113
+ if (tenantId)
114
+ conditions.push(eq(this.tbl.tenantId, tenantId));
115
+ if (sinceIso)
116
+ conditions.push(sql `${this.tbl.createdAt} >= ${sinceIso}`);
117
+ if (sourceTypes !== undefined) {
118
+ if (sourceTypes.length === 0) {
119
+ conditions.push(sql `1 = 0`);
120
+ }
121
+ else {
122
+ const lowerSources = sourceTypes.map((s) => s.toLowerCase());
123
+ conditions.push(inArray(sql `LOWER(${this.tbl.source})`, lowerSources));
124
+ }
125
+ }
126
+ const whereClause = conditions.length ? and(...conditions) : undefined;
127
+ let q = this.db
128
+ .select({
129
+ id: this.tbl.id,
130
+ aliasId: this.tbl.aliasId,
131
+ name: this.tbl.name,
132
+ source: this.tbl.source,
133
+ resourceName: this.tbl.resourceName,
134
+ status: this.tbl.status,
135
+ analysisStatus: this.tbl.analysisStatus,
136
+ assigneeIds: this.tbl.assigneeIds,
137
+ createdAt: this.tbl.createdAt,
138
+ resolvedAt: this.tbl.resolvedAt,
139
+ analysisTriggeredAt: this.tbl.analysisTriggeredAt,
140
+ analysisCompletedAt: this.tbl.analysisCompletedAt,
141
+ })
142
+ .from(this.tbl)
143
+ .orderBy(desc(this.tbl.createdAt));
144
+ if (whereClause)
145
+ q = q.where(whereClause);
146
+ return q;
147
+ }
148
+ async create(input) {
149
+ const [row] = await this.db
150
+ .insert(this.tbl)
151
+ .values({
152
+ name: input.name,
153
+ tenantId: input.tenantId ?? null,
154
+ source: input.source,
155
+ resourceName: input.resourceName,
156
+ resourceType: input.resourceType,
157
+ downMessage: input.downMessage ?? null,
158
+ description: input.description ?? null,
159
+ tags: input.tags ?? {},
160
+ downTime: input.downTime ?? new Date().toISOString(),
161
+ alertId: input.alertId ?? null,
162
+ accountId: input.accountId ?? null,
163
+ accountName: input.accountName ?? null,
164
+ assigneeIds: input.assigneeIds ?? [],
165
+ status: "open",
166
+ analysisStatus: "pending",
167
+ })
168
+ .returning({ id: this.tbl.id });
169
+ return row;
170
+ }
171
+ async update(id, data, tenantId) {
172
+ const updateData = { ...data, updatedAt: new Date() };
173
+ const conditions = [eq(this.tbl.id, id)];
174
+ if (tenantId)
175
+ conditions.push(eq(this.tbl.tenantId, tenantId));
176
+ await this.db
177
+ .update(this.tbl)
178
+ .set(updateData)
179
+ .where(conditions.length > 1 ? and(...conditions) : conditions[0]);
180
+ }
181
+ async delete(id, tenantId) {
182
+ const conditions = [eq(this.tbl.id, id)];
183
+ if (tenantId)
184
+ conditions.push(eq(this.tbl.tenantId, tenantId));
185
+ // Verify the incident belongs to the tenant before deleting alerts
186
+ const incident = await this.findById(id, tenantId);
187
+ if (!incident)
188
+ return;
189
+ try {
190
+ await this.db.execute(sql `UPDATE insight_alerts SET incident_id = null WHERE incident_id = ${id}`);
191
+ await this.db.execute(sql `UPDATE insight_alarm_groups SET incident_id = null WHERE incident_id = ${id}`);
192
+ }
193
+ catch (err) {
194
+ console.error("Failed to nullify incident_id:", err);
195
+ }
196
+ await this.db
197
+ .delete(this.tbl)
198
+ .where(conditions.length > 1 ? and(...conditions) : conditions[0]);
199
+ }
200
+ }
201
+ //# sourceMappingURL=incident.model.js.map