@oneuptime/common 11.5.4 → 11.5.6

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 (539) hide show
  1. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +56 -45
  2. package/Models/DatabaseModels/AIInsight.ts +748 -0
  3. package/Models/DatabaseModels/AIRun.ts +262 -0
  4. package/Models/DatabaseModels/CodeRepository.ts +42 -0
  5. package/Models/DatabaseModels/GlobalConfig.ts +105 -0
  6. package/Models/DatabaseModels/Index.ts +4 -8
  7. package/Models/DatabaseModels/InstanceHealthLog.ts +277 -0
  8. package/Models/DatabaseModels/LlmLog.ts +33 -0
  9. package/Models/DatabaseModels/Project.ts +123 -6
  10. package/Models/DatabaseModels/Runbook.ts +1 -1
  11. package/Models/DatabaseModels/User.ts +47 -0
  12. package/Server/API/AIAgentDataAPI.ts +802 -140
  13. package/Server/API/AIAgentTaskAPI.ts +132 -69
  14. package/Server/API/AIAgentTaskLogAPI.ts +65 -41
  15. package/Server/API/AIAgentTaskPullRequestAPI.ts +41 -0
  16. package/Server/API/AIInsightAPI.ts +220 -0
  17. package/Server/API/AIInvestigationAPI.ts +363 -1
  18. package/Server/API/CodeFixRunAPI.ts +251 -0
  19. package/Server/API/GitHubAPI.ts +246 -3
  20. package/Server/API/TelemetryExceptionAPI.ts +193 -48
  21. package/Server/EnvironmentConfig.ts +1 -1
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.ts +26 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.ts +73 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.ts +29 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.ts +31 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.ts +51 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.ts +25 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.ts +47 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.ts +31 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.ts +37 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.ts +25 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.ts +75 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.ts +37 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.ts +203 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.ts +163 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.ts +23 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
  39. package/Server/Infrastructure/Queue.ts +82 -4
  40. package/Server/Infrastructure/Semaphore.ts +62 -1
  41. package/Server/Middleware/MasterAdminAuthorization.ts +37 -0
  42. package/Server/Middleware/ProjectAuthorization.ts +40 -15
  43. package/Server/Services/AIAgentService.ts +32 -0
  44. package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
  45. package/Server/Services/AIInsightService.ts +174 -0
  46. package/Server/Services/AIRunEventService.ts +63 -0
  47. package/Server/Services/AIRunService.ts +259 -1
  48. package/Server/Services/AIService.ts +249 -7
  49. package/Server/Services/AlertService.ts +4 -4
  50. package/Server/Services/CodeRepositoryService.ts +209 -0
  51. package/Server/Services/GlobalConfigService.ts +148 -0
  52. package/Server/Services/IncidentService.ts +183 -38
  53. package/Server/Services/IncidentStateTimelineService.ts +24 -4
  54. package/Server/Services/Index.ts +4 -4
  55. package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
  56. package/Server/Services/LlmLogService.ts +27 -0
  57. package/Server/Services/LlmProviderService.ts +108 -0
  58. package/Server/Services/MetricBaselineService.ts +123 -0
  59. package/Server/Services/MonitorService.ts +15 -0
  60. package/Server/Services/TeamMemberService.ts +2 -0
  61. package/Server/Services/TelemetryExceptionService.ts +323 -116
  62. package/Server/Services/TraceAggregationService.ts +176 -0
  63. package/Server/Services/UserService.ts +10 -0
  64. package/Server/Types/Workflow/ComponentCode.ts +6 -0
  65. package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
  66. package/Server/Types/Workflow/Components/Index.ts +2 -0
  67. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
  68. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
  69. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
  70. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
  71. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
  72. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
  73. package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
  74. package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
  75. package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
  76. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
  77. package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
  78. package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
  79. package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
  80. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
  81. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
  82. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
  83. package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
  84. package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
  85. package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
  86. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
  87. package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
  88. package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
  89. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
  90. package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
  91. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
  92. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
  93. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
  94. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
  95. package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
  96. package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
  97. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
  98. package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
  99. package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
  100. package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
  101. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
  102. package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
  103. package/Server/Utils/AI/Toolbox/Index.ts +2 -2
  104. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
  105. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
  106. package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
  107. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
  108. package/Server/Utils/Execute.ts +2 -1
  109. package/Server/Utils/LLM/LLMService.ts +160 -30
  110. package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
  111. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
  112. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +16 -6
  113. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +14 -0
  114. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +14 -3
  115. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +130 -12
  116. package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
  117. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
  118. package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
  119. package/Tests/Server/Services/AIInsightService.test.ts +324 -0
  120. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
  121. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
  122. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
  123. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
  124. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
  125. package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
  126. package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
  127. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
  128. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
  129. package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
  130. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
  131. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
  132. package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
  133. package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
  134. package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
  135. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
  136. package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
  137. package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
  138. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
  139. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
  140. package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
  141. package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
  142. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
  143. package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
  144. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
  145. package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
  146. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
  147. package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
  148. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
  149. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
  150. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
  151. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
  152. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
  153. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
  154. package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
  155. package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
  156. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
  157. package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
  158. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
  159. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
  160. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
  161. package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
  162. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
  163. package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
  164. package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
  165. package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
  166. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +553 -0
  167. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +590 -0
  168. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageFormatterUnits.test.ts +254 -0
  169. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +821 -0
  170. package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
  171. package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
  172. package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
  173. package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
  174. package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
  175. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
  176. package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
  177. package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
  178. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
  179. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
  180. package/Types/AI/AIChatTypes.ts +8 -0
  181. package/Types/AI/AIInsightEvidence.ts +77 -0
  182. package/Types/AI/AIInsightHumanVerdict.ts +15 -0
  183. package/Types/AI/AIInsightSeverity.ts +13 -0
  184. package/Types/AI/AIInsightStatus.ts +38 -0
  185. package/Types/AI/AIInsightType.ts +41 -0
  186. package/Types/AI/AIRunAutoGrade.ts +18 -0
  187. package/Types/AI/AIRunEventType.ts +5 -0
  188. package/Types/AI/AIRunHumanVerdict.ts +17 -0
  189. package/Types/AI/AIRunType.ts +6 -0
  190. package/Types/AI/CodeFixTaskContext.ts +88 -0
  191. package/Types/AI/CodeFixTaskType.ts +132 -0
  192. package/Types/AI/FixPullRequestCiStatus.ts +132 -0
  193. package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
  194. package/Types/Incident/IncidentMetricType.ts +7 -0
  195. package/Types/Monitor/CriteriaFilter.ts +8 -0
  196. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  197. package/Types/Monitor/MonitorStep.ts +38 -0
  198. package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
  199. package/Types/Monitor/MonitorType.ts +17 -0
  200. package/Types/Monitor/SqlDatabaseType.ts +49 -0
  201. package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
  202. package/Types/Permission.ts +11 -95
  203. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  204. package/Types/Runbook/RunbookStep.ts +26 -2
  205. package/Types/Runbook/RunbookStepType.ts +1 -0
  206. package/Types/Workflow/Component.ts +13 -0
  207. package/Types/Workflow/ComponentID.ts +1 -0
  208. package/Types/Workflow/Components/AI.ts +148 -0
  209. package/Types/Workflow/Components.ts +8 -0
  210. package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
  211. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
  212. package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
  213. package/UI/Components/Table/Table.tsx +38 -2
  214. package/UI/Utils/TableColumnsToCsv.ts +385 -0
  215. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  216. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
  217. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  218. package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
  219. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
  220. package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
  221. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  222. package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
  223. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  224. package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
  225. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  226. package/build/dist/Models/DatabaseModels/Index.js +4 -8
  227. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  228. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
  229. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
  230. package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
  231. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  232. package/build/dist/Models/DatabaseModels/Project.js +127 -6
  233. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  234. package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
  235. package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
  236. package/build/dist/Models/DatabaseModels/User.js +46 -0
  237. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  238. package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
  239. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  240. package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
  241. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  242. package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
  243. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  244. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
  245. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
  246. package/build/dist/Server/API/AIInsightAPI.js +140 -0
  247. package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
  248. package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
  249. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  250. package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
  251. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
  252. package/build/dist/Server/API/GitHubAPI.js +164 -2
  253. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  254. package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
  255. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  256. package/build/dist/Server/EnvironmentConfig.js +1 -1
  257. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
  260. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
  261. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
  262. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
  274. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
  275. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
  276. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
  277. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
  278. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
  279. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
  280. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
  281. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
  282. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
  283. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
  284. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
  285. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
  286. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
  287. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
  288. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js +18 -0
  289. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js.map +1 -0
  290. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -0
  291. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  292. package/build/dist/Server/Infrastructure/Queue.js +73 -3
  293. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  294. package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
  295. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  296. package/build/dist/Server/Middleware/MasterAdminAuthorization.js +26 -0
  297. package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
  298. package/build/dist/Server/Middleware/ProjectAuthorization.js +40 -14
  299. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  300. package/build/dist/Server/Services/AIAgentService.js +29 -0
  301. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  302. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
  303. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
  304. package/build/dist/Server/Services/AIInsightService.js +164 -0
  305. package/build/dist/Server/Services/AIInsightService.js.map +1 -0
  306. package/build/dist/Server/Services/AIRunEventService.js +49 -0
  307. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  308. package/build/dist/Server/Services/AIRunService.js +221 -0
  309. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  310. package/build/dist/Server/Services/AIService.js +198 -11
  311. package/build/dist/Server/Services/AIService.js.map +1 -1
  312. package/build/dist/Server/Services/AlertService.js +4 -4
  313. package/build/dist/Server/Services/AlertService.js.map +1 -1
  314. package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
  315. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  316. package/build/dist/Server/Services/GlobalConfigService.js +84 -0
  317. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  318. package/build/dist/Server/Services/IncidentService.js +149 -37
  319. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  320. package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
  321. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  322. package/build/dist/Server/Services/Index.js +4 -4
  323. package/build/dist/Server/Services/Index.js.map +1 -1
  324. package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
  325. package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
  326. package/build/dist/Server/Services/LlmLogService.js +23 -0
  327. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  328. package/build/dist/Server/Services/LlmProviderService.js +96 -0
  329. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  330. package/build/dist/Server/Services/MetricBaselineService.js +65 -0
  331. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  332. package/build/dist/Server/Services/MonitorService.js +9 -1
  333. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  334. package/build/dist/Server/Services/TeamMemberService.js +2 -0
  335. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  336. package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
  337. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  338. package/build/dist/Server/Services/TraceAggregationService.js +124 -0
  339. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  340. package/build/dist/Server/Services/UserService.js +8 -0
  341. package/build/dist/Server/Services/UserService.js.map +1 -1
  342. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  343. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
  344. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
  345. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  346. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  347. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
  348. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
  349. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
  350. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
  351. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
  352. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
  353. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
  354. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
  355. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
  356. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
  357. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
  358. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
  359. package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
  360. package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
  361. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
  362. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
  363. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
  364. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
  365. package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
  366. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
  367. package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
  368. package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
  370. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
  372. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
  373. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
  374. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
  375. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
  376. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
  377. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
  378. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
  379. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
  380. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
  381. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
  382. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
  383. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
  384. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
  385. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
  386. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
  387. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
  388. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
  389. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
  390. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
  391. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
  392. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
  393. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
  394. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
  395. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
  396. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
  397. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
  398. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
  399. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
  400. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
  401. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
  402. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
  403. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
  404. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
  405. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
  406. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
  407. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
  408. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
  409. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
  410. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
  411. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
  412. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
  413. package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
  414. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
  415. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
  416. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  417. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
  418. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
  419. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
  420. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  421. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
  422. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
  423. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
  424. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
  425. package/build/dist/Server/Utils/Execute.js.map +1 -1
  426. package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
  427. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  428. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
  429. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
  430. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
  431. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  432. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +15 -7
  433. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  434. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +12 -1
  435. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  436. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +8 -3
  437. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  438. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +96 -12
  439. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  440. package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
  441. package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
  442. package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
  443. package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
  444. package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
  445. package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
  446. package/build/dist/Types/AI/AIInsightStatus.js +36 -0
  447. package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
  448. package/build/dist/Types/AI/AIInsightType.js +42 -0
  449. package/build/dist/Types/AI/AIInsightType.js.map +1 -0
  450. package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
  451. package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
  452. package/build/dist/Types/AI/AIRunEventType.js +5 -0
  453. package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
  454. package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
  455. package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
  456. package/build/dist/Types/AI/AIRunType.js +6 -0
  457. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  458. package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
  459. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
  460. package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
  461. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
  462. package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
  463. package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
  464. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
  465. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  466. package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
  467. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  468. package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
  469. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  470. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  471. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  472. package/build/dist/Types/Monitor/MonitorStep.js +28 -0
  473. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  474. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
  475. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
  476. package/build/dist/Types/Monitor/MonitorType.js +15 -0
  477. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  478. package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
  479. package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
  480. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
  481. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
  482. package/build/dist/Types/Permission.js +10 -84
  483. package/build/dist/Types/Permission.js.map +1 -1
  484. package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
  485. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  486. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  487. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  488. package/build/dist/Types/Workflow/Components/AI.js +135 -0
  489. package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
  490. package/build/dist/Types/Workflow/Components.js +7 -0
  491. package/build/dist/Types/Workflow/Components.js.map +1 -1
  492. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
  493. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  494. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
  495. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  496. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
  497. package/build/dist/UI/Components/Table/Table.js +28 -2
  498. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  499. package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
  500. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
  501. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  502. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  503. package/package.json +1 -1
  504. package/Models/DatabaseModels/AIAgentTask.ts +0 -660
  505. package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
  506. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
  507. package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
  508. package/Server/Services/AIAgentTaskService.ts +0 -240
  509. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
  510. package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
  511. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
  512. package/Types/AI/AIAgentTaskMetadata.ts +0 -25
  513. package/Types/AI/AIAgentTaskType.ts +0 -40
  514. package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
  515. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
  516. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
  517. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
  518. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
  519. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
  520. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
  521. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
  522. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
  523. package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
  524. package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
  525. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
  526. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
  527. package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
  528. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
  529. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
  530. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
  531. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
  532. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
  533. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
  534. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
  535. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
  536. package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
  537. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
  538. package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
  539. package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Which deterministic AI detector produced an insight. Detectors are
3
+ * statistical sensors over the project's telemetry — no LLM is involved in
4
+ * detection. These strings are stored on AIInsight.insightType and
5
+ * rendered/filtered in the dashboard, so they are a wire contract — do not
6
+ * rename them.
7
+ */
8
+ enum AIInsightType {
9
+ /*
10
+ * A telemetry exception first seen within the last 24 hours that is
11
+ * already recurring (not resolved, not archived) — a brand-new failure
12
+ * mode in the code.
13
+ */
14
+ NewException = "NewException",
15
+ /*
16
+ * An established telemetry exception whose recent hourly occurrence rate
17
+ * spiked well above its own 24-hour baseline (including dormant
18
+ * exceptions suddenly waking up).
19
+ */
20
+ ExceptionSpike = "ExceptionSpike",
21
+ /*
22
+ * The project's Error/Fatal log volume in the last hour spiked well above
23
+ * its average hourly rate over the prior 24 hours, attributed to the top
24
+ * contributing services.
25
+ */
26
+ ErrorLogSpike = "ErrorLogSpike",
27
+ /*
28
+ * A service's recent p99 span latency regressed to a multiple of its own
29
+ * 24-hour baseline, with span-tree findings drilled from a representative
30
+ * slow trace.
31
+ */
32
+ TraceLatencyRegression = "TraceLatencyRegression",
33
+ /*
34
+ * A metric's mean over the last 7 days drifted substantially from its
35
+ * mean over the prior 7 days (week-over-week comparison per metric name
36
+ * and entity).
37
+ */
38
+ MetricDrift = "MetricDrift",
39
+ }
40
+
41
+ export default AIInsightType;
@@ -0,0 +1,18 @@
1
+ /*
2
+ * The automatic grade assigned to a completed AI investigation when its
3
+ * incident resolves with a human-recorded root cause (Phase 2 measurement
4
+ * layer): one constrained LLM call compares the investigation's posted
5
+ * analysis with Incident.rootCause and stores the verdict on the run
6
+ * (AIRun.autoGrade). See
7
+ * Common/Server/Utils/AI/SRE/InvestigationGrader.ts.
8
+ */
9
+ enum AIRunAutoGrade {
10
+ // The analysis identified the same root cause the humans recorded.
11
+ Match = "Match",
12
+ // Part of the cause, or a closely related cause.
13
+ Partial = "Partial",
14
+ // The analysis pointed somewhere else.
15
+ Mismatch = "Mismatch",
16
+ }
17
+
18
+ export default AIRunAutoGrade;
@@ -10,6 +10,11 @@ enum AIRunEventType {
10
10
  // A mutating action the user approved was executed (or denied and skipped).
11
11
  ActionExecuted = "ActionExecuted",
12
12
  ActionDenied = "ActionDenied",
13
+ /*
14
+ * A plain progress/log line reported by an external executor (e.g. the
15
+ * code-fix agent container). The message lives in resultSummary.message.
16
+ */
17
+ ProgressLog = "ProgressLog",
13
18
  RunCompleted = "RunCompleted",
14
19
  RunFailed = "RunFailed",
15
20
  }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * The one-click human verdict on a completed AI investigation's posted
3
+ * analysis (Phase 2 measurement layer). Captured via
4
+ * POST /ai-investigation/verdict from the investigation panel and stored on
5
+ * the run (AIRun.humanVerdict).
6
+ *
7
+ * The roadmap's "confirmed/edited/rejected" trichotomy is deliberately a
8
+ * two-button UI: "edited" is not something a human declares up front — it is
9
+ * detected later by the grading side (comparing the analysis with the final
10
+ * recorded root cause), so the human control stays a binary confirm/reject.
11
+ */
12
+ enum AIRunHumanVerdict {
13
+ Confirmed = "Confirmed",
14
+ Rejected = "Rejected",
15
+ }
16
+
17
+ export default AIRunHumanVerdict;
@@ -1,6 +1,12 @@
1
1
  enum AIRunType {
2
2
  Chat = "Chat",
3
3
  Investigation = "Investigation",
4
+ /*
5
+ * An exception-fix run executed by an external AI agent container: it
6
+ * claims the run over HTTP, works in the project's code repository and
7
+ * opens a pull request. Replaces the legacy AIAgentTask substrate.
8
+ */
9
+ CodeFix = "CodeFix",
4
10
  }
5
11
 
6
12
  export default AIRunType;
@@ -0,0 +1,88 @@
1
+ /*
2
+ * The JSON persisted on AIRun.taskContext for CodeFix recipes whose entire
3
+ * working context is captured at trigger time rather than referenced by a
4
+ * subject id (incident/alert) or a telemetry exception.
5
+ *
6
+ * First user: the FixPerformance recipe. Its evidence is computed
7
+ * DETERMINISTICALLY from a trace's span tree when the user clicks "Fix
8
+ * performance with AI" (see Common/Server/Utils/AI/PerfEvidence/
9
+ * SpanTreeAnalyzer.ts) and stored here verbatim — ClickHouse span retention
10
+ * is short, so by the time the agent worker claims the run the spans may
11
+ * already be gone. The stored findings ARE the task's context.
12
+ *
13
+ * These shapes are a wire contract with the agent worker
14
+ * (/ai-agent-data/get-instrumentation-task-details serves them back) — do
15
+ * not rename fields.
16
+ */
17
+
18
+ export enum PerformanceFindingType {
19
+ // >=5 near-identical sibling spans under one parent (classic N+1).
20
+ NPlusOneQuery = "NPlusOneQuery",
21
+ // A single span whose self time is >=60% of the trace's total duration.
22
+ DominantSpan = "DominantSpan",
23
+ /*
24
+ * >=3 same-name siblings executing strictly one-after-another whose
25
+ * combined duration is >=50% of their parent — parallelizable work.
26
+ */
27
+ SequentialSiblings = "SequentialSiblings",
28
+ }
29
+
30
+ // One span a finding implicates — enough to name it in evidence and PRs.
31
+ export interface ImplicatedSpan {
32
+ spanId: string;
33
+ name: string;
34
+ durationMs: number;
35
+ }
36
+
37
+ /*
38
+ * One deterministic performance finding. `evidence` is the human-readable
39
+ * proof (real counts, durations, normalized names/statements) — it is
40
+ * embedded verbatim in the agent prompt and the pull request body, so it
41
+ * must stand on its own.
42
+ */
43
+ export interface PerformanceFinding {
44
+ findingType: PerformanceFindingType;
45
+ // One-line summary, e.g. 'N+1: 27× "SELECT users" under "GET /orders"'.
46
+ headline: string;
47
+ // Multi-line human-readable proof with the real numbers.
48
+ evidence: string;
49
+ spanCount: number;
50
+ combinedDurationMs: number;
51
+ traceDurationMs: number;
52
+ percentOfTrace: number;
53
+ // Only for SequentialSiblings: combined duration as a share of the parent.
54
+ percentOfParent?: number | undefined;
55
+ normalizedSpanName: string;
56
+ parentSpanName?: string | undefined;
57
+ // Normalized db.statement when the implicated spans carry one.
58
+ normalizedDbStatement?: string | undefined;
59
+ dbSystem?: string | undefined;
60
+ httpUrl?: string | undefined;
61
+ // Capped sample of the implicated spans (name + duration).
62
+ implicatedSpans: Array<ImplicatedSpan>;
63
+ }
64
+
65
+ /*
66
+ * A code location plucked from the implicated spans' code.* attributes
67
+ * (code.filepath / code.function / code.lineno and their newer semconv
68
+ * spellings). Feeds the stack-trace-style repository resolution at
69
+ * task-details time.
70
+ */
71
+ export interface PerformanceCodeLocation {
72
+ filePath: string;
73
+ functionName?: string | undefined;
74
+ lineNumber?: number | undefined;
75
+ }
76
+
77
+ export interface CodeFixTaskContext {
78
+ // FixPerformance: the analyzed trace.
79
+ traceId?: string | undefined;
80
+ // Best-effort service attribution resolved from the trace's spans.
81
+ serviceName?: string | undefined;
82
+ // The deterministic span-tree findings — the recipe's entire evidence.
83
+ performanceFindings?: Array<PerformanceFinding> | undefined;
84
+ // code.* attribute locations for stack-trace-style repo resolution.
85
+ codeLocations?: Array<PerformanceCodeLocation> | undefined;
86
+ }
87
+
88
+ export default CodeFixTaskContext;
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Which task recipe a CodeFix AIRun executes. The agent worker dispatches on
3
+ * this value (returned as `taskType` by /ai-agent-task/get-pending-task), so
4
+ * these strings are a wire contract — do not rename them.
5
+ *
6
+ * A null AIRun.codeFixTaskType column means FixException: every CodeFix run
7
+ * created before the column existed was an exception fix. Server responses
8
+ * normalize null to FixException so clients never see the legacy null.
9
+ */
10
+ enum CodeFixTaskType {
11
+ // Analyze an exception's stack trace and open a PR that fixes the bug.
12
+ FixException = "FixException",
13
+ // Write a failing-then-passing regression test that reproduces the exception.
14
+ WriteRegressionTest = "WriteRegressionTest",
15
+ /*
16
+ * Add the observability an INCONCLUSIVE AI investigation was missing
17
+ * (structured logs, spans, metric counters on the implicated code paths).
18
+ * NOT user-triggerable from the exception page — it has its own automatic
19
+ * trigger: an inconclusive investigation on a project that opted in via
20
+ * Project.enableInstrumentationFixTasks (see Common/Server/Utils/AI/
21
+ * AI/InstrumentationTaskTrigger.ts). Its subject is the triggering
22
+ * incident/alert, NOT a telemetry exception.
23
+ */
24
+ ImproveInstrumentation = "ImproveInstrumentation",
25
+ /*
26
+ * Fix a deterministically-detected performance pattern in a trace (N+1
27
+ * queries, one dominant slow span, sequential-that-could-be-parallel
28
+ * siblings). Human-triggered from the trace view (POST /ai-investigation/
29
+ * create-performance-fix-task), NOT from the exception page: it has no
30
+ * subject row at all — its entire context (the SpanTreeAnalyzer findings)
31
+ * is captured at trigger time into AIRun.taskContext (see
32
+ * Common/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts).
33
+ */
34
+ FixPerformance = "FixPerformance",
35
+ /*
36
+ * Fix the root cause a completed AI investigation identified. Human-
37
+ * triggered from the investigation panel (POST /ai-investigation/
38
+ * create-fix-task), NOT from the exception page: its subject is the
39
+ * investigated incident/alert, and its context is the posted analysis (see
40
+ * Common/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts).
41
+ */
42
+ FixFromIncident = "FixFromIncident",
43
+ }
44
+
45
+ export default CodeFixTaskType;
46
+
47
+ /*
48
+ * What a queued run of a recipe must CARRY to be executable — the claim
49
+ * guard and the task-details endpoint both group recipes by this, so a new
50
+ * recipe declares its context kind exactly once.
51
+ */
52
+ export enum CodeFixContextKind {
53
+ // Executes against AIRun.triggeredByTelemetryExceptionId.
54
+ TelemetryException = "TelemetryException",
55
+ // Executes against AIRun.triggeredByIncidentId / triggeredByAlertId.
56
+ IncidentOrAlertSubject = "IncidentOrAlertSubject",
57
+ /*
58
+ * Executes against evidence captured at trigger time into
59
+ * AIRun.taskContext (FixPerformance: traceId + span-tree findings) — no
60
+ * subject row exists at all.
61
+ */
62
+ TaskContext = "TaskContext",
63
+ }
64
+
65
+ export class CodeFixTaskTypeHelper {
66
+ /*
67
+ * The recipes a user may start today FROM THE EXCEPTION PAGE. Recipes
68
+ * outside this list exist as enum values so the worker/UI can already
69
+ * dispatch on them, but creation via the exception-page endpoint is
70
+ * server-rejected. ImproveInstrumentation, FixFromIncident and
71
+ * FixPerformance stay off this list by design — they are not
72
+ * exception-triggered at all: ImproveInstrumentation's trigger is an
73
+ * inconclusive AI investigation on an opted-in project,
74
+ * FixFromIncident is user-triggered from the investigation panel
75
+ * (POST /ai-investigation/create-fix-task), and FixPerformance is
76
+ * user-triggered from the trace view
77
+ * (POST /ai-investigation/create-performance-fix-task).
78
+ */
79
+ public static getUserTriggerableTaskTypes(): Array<CodeFixTaskType> {
80
+ return [CodeFixTaskType.FixException, CodeFixTaskType.WriteRegressionTest];
81
+ }
82
+
83
+ public static isUserTriggerable(taskType: CodeFixTaskType): boolean {
84
+ return this.getUserTriggerableTaskTypes().includes(taskType);
85
+ }
86
+
87
+ /*
88
+ * Which context record a queued run of this recipe must carry to be
89
+ * executable. The claim guard rejects runs missing their kind's record,
90
+ * and the task-details endpoint dispatches its response shape on it.
91
+ * Unlisted (and legacy-null-normalized) recipes are exception-based —
92
+ * the safe default, since an exception-less claim of one is unexecutable.
93
+ */
94
+ public static getContextKind(taskType: CodeFixTaskType): CodeFixContextKind {
95
+ switch (taskType) {
96
+ case CodeFixTaskType.ImproveInstrumentation:
97
+ case CodeFixTaskType.FixFromIncident:
98
+ return CodeFixContextKind.IncidentOrAlertSubject;
99
+ case CodeFixTaskType.FixPerformance:
100
+ return CodeFixContextKind.TaskContext;
101
+ default:
102
+ return CodeFixContextKind.TelemetryException;
103
+ }
104
+ }
105
+
106
+ /*
107
+ * Whether the recipe executes against a telemetry exception
108
+ * (AIRun.triggeredByTelemetryExceptionId). Kept as sugar over
109
+ * getContextKind — the claim guard and the task-details endpoint now
110
+ * dispatch on the full context kind.
111
+ */
112
+ public static requiresTelemetryException(taskType: CodeFixTaskType): boolean {
113
+ return (
114
+ this.getContextKind(taskType) === CodeFixContextKind.TelemetryException
115
+ );
116
+ }
117
+
118
+ public static isValidTaskType(value: string): value is CodeFixTaskType {
119
+ return Object.values(CodeFixTaskType).includes(value as CodeFixTaskType);
120
+ }
121
+
122
+ // Null means FixException: rows created before the column existed.
123
+ public static fromDatabaseValue(
124
+ value: CodeFixTaskType | string | null | undefined,
125
+ ): CodeFixTaskType {
126
+ if (value && this.isValidTaskType(value.toString())) {
127
+ return value as CodeFixTaskType;
128
+ }
129
+
130
+ return CodeFixTaskType.FixException;
131
+ }
132
+ }
@@ -0,0 +1,132 @@
1
+ import CodeFixTaskType from "./CodeFixTaskType";
2
+
3
+ /*
4
+ * The rolled-up CI conclusion recorded on an AI fix pull request
5
+ * (AIAgentTaskPullRequest.ciStatus) — B4 Tier 1: verification via the
6
+ * customer's OWN CI on the draft PRs. We read check-run conclusions through
7
+ * the GitHub App; we never re-run or gate the customer's CI.
8
+ *
9
+ * G9 honesty rule: only Green and ExpectedFailureObserved ever count as
10
+ * "CI-verified". NoCiConfigured (and a null column — not yet polled) read as
11
+ * unverified, never verified — a repo without CI verifies nothing.
12
+ */
13
+ enum FixPullRequestCiStatus {
14
+ // Check runs exist and at least one has not completed yet.
15
+ Pending = "Pending",
16
+ // Every check run completed and none failed.
17
+ Green = "Green",
18
+ // Every check run completed and at least one failed.
19
+ Red = "Red",
20
+ /*
21
+ * A WriteRegressionTest PR whose checks concluded RED: the PR's whole
22
+ * point is a test that SHOULD FAIL until the bug is fixed, so a failing
23
+ * check is the desired signal, not a defect. Honest caveat: at check-run
24
+ * granularity we cannot tell WHICH job failed — a repo whose lint breaks
25
+ * on the PR also reads as expected-failure. Job-level discrimination
26
+ * (inspecting check names) is a tracked Tier 1 residual in the roadmap.
27
+ */
28
+ ExpectedFailureObserved = "ExpectedFailureObserved",
29
+ /*
30
+ * The PR's head branch has zero check runs — the repository runs no CI on
31
+ * this PR. Per G9 this is "unverified", never "verified".
32
+ */
33
+ NoCiConfigured = "NoCiConfigured",
34
+ }
35
+
36
+ export default FixPullRequestCiStatus;
37
+
38
+ // Counts of one PR's check runs, as read from GitHub.
39
+ export interface FixPullRequestCiCheckRunCounts {
40
+ total: number;
41
+ completed: number;
42
+ failed: number;
43
+ pending: number;
44
+ }
45
+
46
+ export class FixPullRequestCiStatusHelper {
47
+ /*
48
+ * Roll one PR's check-run counts into a single conclusion. The order is
49
+ * deliberate:
50
+ * 1. no check runs at all -> NoCiConfigured (nothing ran; G9: unverified)
51
+ * 2. any run still pending -> Pending (we report only FINAL
52
+ * conclusions — a failure observed while other checks still run is
53
+ * not yet the branch's conclusion)
54
+ * 3. any completed run failed -> Red
55
+ * 4. otherwise -> Green
56
+ */
57
+ public static rollUpConclusion(
58
+ counts: FixPullRequestCiCheckRunCounts,
59
+ ): FixPullRequestCiStatus {
60
+ if (counts.total === 0) {
61
+ return FixPullRequestCiStatus.NoCiConfigured;
62
+ }
63
+
64
+ if (counts.pending > 0) {
65
+ return FixPullRequestCiStatus.Pending;
66
+ }
67
+
68
+ if (counts.failed > 0) {
69
+ return FixPullRequestCiStatus.Red;
70
+ }
71
+
72
+ return FixPullRequestCiStatus.Green;
73
+ }
74
+
75
+ /*
76
+ * The SHOULD-FAIL rule: a WriteRegressionTest PR exists to prove a bug
77
+ * with a test that fails until the bug is fixed, so a RED conclusion on
78
+ * such a PR is the expected outcome and is recorded as
79
+ * ExpectedFailureObserved. Every other conclusion, and every other task
80
+ * type, passes through unchanged. (Caveat documented on the enum member:
81
+ * we cannot tell which job failed — a broken lint also reads as
82
+ * expected-failure until job-level discrimination ships.)
83
+ */
84
+ public static applyTaskType(data: {
85
+ conclusion: FixPullRequestCiStatus;
86
+ taskType: CodeFixTaskType;
87
+ }): FixPullRequestCiStatus {
88
+ if (
89
+ data.conclusion === FixPullRequestCiStatus.Red &&
90
+ data.taskType === CodeFixTaskType.WriteRegressionTest
91
+ ) {
92
+ return FixPullRequestCiStatus.ExpectedFailureObserved;
93
+ }
94
+
95
+ return data.conclusion;
96
+ }
97
+
98
+ /*
99
+ * The G9 verification predicate, defined ONCE: a PR counts as CI-verified
100
+ * only on Green or ExpectedFailureObserved. NoCiConfigured, Pending, Red
101
+ * and null all read as unverified.
102
+ */
103
+ public static isVerified(
104
+ status: FixPullRequestCiStatus | undefined | null,
105
+ ): boolean {
106
+ return (
107
+ status === FixPullRequestCiStatus.Green ||
108
+ status === FixPullRequestCiStatus.ExpectedFailureObserved
109
+ );
110
+ }
111
+
112
+ // Human-readable line for the run's glass-box ProgressLog trail.
113
+ public static describeForProgressLog(data: {
114
+ ciStatus: FixPullRequestCiStatus;
115
+ counts: FixPullRequestCiCheckRunCounts;
116
+ }): string {
117
+ switch (data.ciStatus) {
118
+ case FixPullRequestCiStatus.Green:
119
+ return `CI on the fix PR: Green (${data.counts.completed}/${data.counts.total} checks passed)`;
120
+ case FixPullRequestCiStatus.Red:
121
+ return `CI on the fix PR: Red (${data.counts.failed}/${data.counts.total} checks failed)`;
122
+ case FixPullRequestCiStatus.ExpectedFailureObserved:
123
+ return `Regression-test PR: expected failure observed (${data.counts.failed}/${data.counts.total} checks failed — a failing check is the desired signal for a should-fail test)`;
124
+ case FixPullRequestCiStatus.Pending:
125
+ return `CI on the fix PR: Pending (${data.counts.completed}/${data.counts.total} checks completed)`;
126
+ case FixPullRequestCiStatus.NoCiConfigured:
127
+ return "CI on the fix PR: no check runs found — the repository runs no CI on this branch, so the fix is unverified";
128
+ default:
129
+ return `CI on the fix PR: ${data.ciStatus}`;
130
+ }
131
+ }
132
+ }
@@ -92,6 +92,73 @@ export class AggregationIntervalUtil {
92
92
  return 1000 * 60;
93
93
  }
94
94
  }
95
+
96
+ /*
97
+ * Floor a timestamp DOWN to the start of its aggregation bucket, matching
98
+ * the server's `toStartOfInterval(time, INTERVAL 1 <interval>)` grid. This
99
+ * lets a chart align its query window to the bucket grid so the leading
100
+ * edge lands on a real bucket boundary instead of mid-bucket — a
101
+ * mid-bucket start renders as an empty gap before the first plotted point
102
+ * (the first bucket is partial and its timestamp falls before the axis
103
+ * origin).
104
+ *
105
+ * Only Minute/Hour/Day are aligned: for those the fixed-ms epoch grid is
106
+ * an EXACT match for ClickHouse's UTC bucketing (epoch-day == UTC
107
+ * midnight), and these are the windows where the leading gap is actually
108
+ * visible. Week/Month/Year snap to calendar boundaries (Monday / 1st /
109
+ * Jan-1) server-side, which a fixed-ms grid can't reproduce, so those (and
110
+ * `Total`) are returned UNCHANGED rather than risk shifting the gap for
111
+ * long windows — their pre-existing behavior is preserved.
112
+ */
113
+ public static floorDateToIntervalGrid(
114
+ date: Date,
115
+ interval: AggregationInterval,
116
+ ): Date {
117
+ const ms: number = OneUptimeDate.fromString(date).getTime();
118
+ const alignableIntervals: Array<AggregationInterval> = [
119
+ AggregationInterval.Minute,
120
+ AggregationInterval.Hour,
121
+ AggregationInterval.Day,
122
+ ];
123
+ if (!alignableIntervals.includes(interval)) {
124
+ return new Date(ms);
125
+ }
126
+ const bucketMs: number = this.getAggregationIntervalMs(interval);
127
+ if (!Number.isFinite(bucketMs) || bucketMs <= 0) {
128
+ return new Date(ms);
129
+ }
130
+ return new Date(Math.floor(ms / bucketMs) * bucketMs);
131
+ }
132
+
133
+ /*
134
+ * Align a query window to the aggregation-bucket grid. The bucket size is
135
+ * derived from the RAW window and returned alongside the aligned dates so
136
+ * the caller can PIN it (AggregateBy.aggregationInterval): flooring the
137
+ * start slightly widens the window, and without pinning that could bump a
138
+ * window sitting exactly on a tier threshold (e.g. a 3h window) into the
139
+ * next-coarser interval and change the whole chart's resolution. The start
140
+ * is floored DOWN so the first bucket is complete and lands on the axis
141
+ * origin (removing the leading gap); the end is left untouched so the
142
+ * latest, still-in-progress bucket and its live data continue to show.
143
+ */
144
+ public static getIntervalAlignedWindow(data: {
145
+ startDate: Date;
146
+ endDate: Date;
147
+ }): {
148
+ startDate: Date;
149
+ endDate: Date;
150
+ interval: AggregationInterval;
151
+ } {
152
+ const interval: AggregationInterval = this.getAggregationIntervalForWindow({
153
+ startDate: data.startDate,
154
+ endDate: data.endDate,
155
+ });
156
+ return {
157
+ startDate: this.floorDateToIntervalGrid(data.startDate, interval),
158
+ endDate: OneUptimeDate.fromString(data.endDate),
159
+ interval,
160
+ };
161
+ }
95
162
  }
96
163
 
97
164
  export default AggregationIntervalUtil;
@@ -6,6 +6,13 @@ enum IncidentMetricType {
6
6
  TimeInState = "oneuptime.incident.time-in-state",
7
7
  SeverityChange = "oneuptime.incident.severity-change",
8
8
  PostmortemCompletionTime = "oneuptime.incident.postmortem-completion-time",
9
+ /*
10
+ * Seconds from incident creation to the moment the AI investigation
11
+ * posted its root-cause analysis. Written once from the investigation
12
+ * runner (not from refreshIncidentMetrics — the refresh replace-list
13
+ * deliberately excludes this name so refreshes never tombstone it).
14
+ */
15
+ TimeToRootCausePosted = "oneuptime.incident.time-to-rca",
9
16
  }
10
17
 
11
18
  export default IncidentMetricType;
@@ -98,6 +98,13 @@ export enum CheckOn {
98
98
  DnssecResolverConsensus = "DNSSEC Resolver Consensus (AD Flag)",
99
99
  DnssecNameserverConsistent = "DNSSEC Nameservers Are Consistent",
100
100
 
101
+ // SQL Query monitors.
102
+ SqlIsOnline = "SQL Is Online",
103
+ SqlQueryRowCount = "SQL Query Row Count",
104
+ SqlQueryScalarValue = "SQL Query Scalar Value",
105
+ SqlQueryExecutionTime = "SQL Query Execution Time (in ms)",
106
+ SqlQueryError = "SQL Query Error",
107
+
101
108
  // External Status Page monitors.
102
109
  ExternalStatusPageIsOnline = "External Status Page Is Online",
103
110
  ExternalStatusPageOverallStatus = "External Status Page Overall Status",
@@ -299,6 +306,7 @@ export class CriteriaFilterUtil {
299
306
  checkOn === CheckOn.DnssecDsExists ||
300
307
  checkOn === CheckOn.DnssecResolverConsensus ||
301
308
  checkOn === CheckOn.DnssecNameserverConsistent ||
309
+ checkOn === CheckOn.SqlIsOnline ||
302
310
  checkOn === CheckOn.ExternalStatusPageIsOnline
303
311
  ) {
304
312
  return false;
@@ -469,6 +469,33 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
469
469
  return monitorCriteriaInstance;
470
470
  }
471
471
 
472
+ if (arg.monitorType === MonitorType.SQLQuery) {
473
+ const monitorCriteriaInstance: MonitorCriteriaInstance =
474
+ new MonitorCriteriaInstance();
475
+
476
+ monitorCriteriaInstance.data = {
477
+ id: ObjectID.generate().toString(),
478
+ monitorStatusId: arg.monitorStatusId,
479
+ filterCondition: FilterCondition.All,
480
+ filters: [
481
+ {
482
+ checkOn: CheckOn.SqlIsOnline,
483
+ filterType: FilterType.True,
484
+ value: undefined,
485
+ },
486
+ ],
487
+ incidents: [],
488
+ alerts: [],
489
+ createAlerts: false,
490
+ changeMonitorStatus: true,
491
+ createIncidents: false,
492
+ name: `Check if ${arg.monitorName} is online`,
493
+ description: `This criteria checks if the ${arg.monitorName} database query ran successfully`,
494
+ };
495
+
496
+ return monitorCriteriaInstance;
497
+ }
498
+
472
499
  if (arg.monitorType === MonitorType.Domain) {
473
500
  const monitorCriteriaInstance: MonitorCriteriaInstance =
474
501
  new MonitorCriteriaInstance();
@@ -696,6 +723,46 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
696
723
  };
697
724
  }
698
725
 
726
+ if (arg.monitorType === MonitorType.SQLQuery) {
727
+ monitorCriteriaInstance.data = {
728
+ id: ObjectID.generate().toString(),
729
+ monitorStatusId: arg.monitorStatusId,
730
+ filterCondition: FilterCondition.Any,
731
+ filters: [
732
+ {
733
+ checkOn: CheckOn.SqlIsOnline,
734
+ filterType: FilterType.False,
735
+ value: undefined,
736
+ },
737
+ ],
738
+ incidents: [
739
+ {
740
+ title: `${arg.monitorName} is offline`,
741
+ description: `${arg.monitorName} database query is currently failing.`,
742
+ incidentSeverityId: arg.incidentSeverityId,
743
+ autoResolveIncident: true,
744
+ id: ObjectID.generate().toString(),
745
+ onCallPolicyIds: [],
746
+ },
747
+ ],
748
+ changeMonitorStatus: true,
749
+ createIncidents: true,
750
+ createAlerts: false,
751
+ alerts: [
752
+ {
753
+ title: `${arg.monitorName} is offline`,
754
+ description: `${arg.monitorName} database query is currently failing.`,
755
+ alertSeverityId: arg.alertSeverityId,
756
+ autoResolveAlert: true,
757
+ id: ObjectID.generate().toString(),
758
+ onCallPolicyIds: [],
759
+ },
760
+ ],
761
+ name: `Check if ${arg.monitorName} is offline`,
762
+ description: `This criteria checks if the ${arg.monitorName} database query is failing`,
763
+ };
764
+ }
765
+
699
766
  if (arg.monitorType === MonitorType.Domain) {
700
767
  monitorCriteriaInstance.data = {
701
768
  id: ObjectID.generate().toString(),