@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
@@ -1,7 +1,7 @@
1
- import SentinelAlertInvestigationRunner, {
1
+ import AIAlertInvestigationRunner, {
2
2
  AlertGateDecision,
3
- } from "../../../../Server/Utils/AI/Sentinel/AlertInvestigationRunner";
4
- import SentinelInvestigationQueue from "../../../../Server/Utils/AI/Sentinel/InvestigationQueue";
3
+ } from "../../../../Server/Utils/AI/SRE/AlertInvestigationRunner";
4
+ import AIInvestigationQueue from "../../../../Server/Utils/AI/SRE/InvestigationQueue";
5
5
  import AlertService from "../../../../Server/Services/AlertService";
6
6
  import AlertSeverityService from "../../../../Server/Services/AlertSeverityService";
7
7
  import ProjectService from "../../../../Server/Services/ProjectService";
@@ -59,7 +59,7 @@ function fakeSeverities(orders: Array<number>): Array<AlertSeverity> {
59
59
  });
60
60
  }
61
61
 
62
- describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
62
+ describe("AIAlertInvestigationRunner.shouldInvestigateAlert", () => {
63
63
  const alertId: ObjectID = ObjectID.generate();
64
64
  const projectId: ObjectID = ObjectID.generate();
65
65
 
@@ -98,7 +98,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
98
98
  });
99
99
 
100
100
  const decision: AlertGateDecision =
101
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
101
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
102
102
  alertId,
103
103
  projectId,
104
104
  });
@@ -118,7 +118,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
118
118
  });
119
119
 
120
120
  const decision: AlertGateDecision =
121
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
121
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
122
122
  alertId,
123
123
  projectId,
124
124
  });
@@ -134,7 +134,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
134
134
  });
135
135
 
136
136
  const decision: AlertGateDecision =
137
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
137
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
138
138
  alertId,
139
139
  projectId,
140
140
  });
@@ -149,7 +149,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
149
149
  });
150
150
 
151
151
  const decision: AlertGateDecision =
152
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
152
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
153
153
  alertId,
154
154
  projectId,
155
155
  });
@@ -167,7 +167,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
167
167
  });
168
168
 
169
169
  const decision: AlertGateDecision =
170
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
170
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
171
171
  alertId,
172
172
  projectId,
173
173
  });
@@ -182,7 +182,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
182
182
  });
183
183
 
184
184
  const decision: AlertGateDecision =
185
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
185
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
186
186
  alertId,
187
187
  projectId,
188
188
  });
@@ -201,7 +201,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
201
201
  });
202
202
 
203
203
  const decision: AlertGateDecision =
204
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
204
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
205
205
  alertId,
206
206
  projectId,
207
207
  });
@@ -226,7 +226,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
226
226
  });
227
227
 
228
228
  const decision: AlertGateDecision =
229
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
229
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
230
230
  alertId,
231
231
  projectId,
232
232
  });
@@ -247,7 +247,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
247
247
  });
248
248
 
249
249
  const decision: AlertGateDecision =
250
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
250
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
251
251
  alertId,
252
252
  projectId,
253
253
  });
@@ -267,7 +267,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
267
267
  });
268
268
 
269
269
  const decision: AlertGateDecision =
270
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
270
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
271
271
  alertId,
272
272
  projectId,
273
273
  });
@@ -280,7 +280,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
280
280
  mockGates({ alert: null });
281
281
 
282
282
  const decision: AlertGateDecision =
283
- await SentinelAlertInvestigationRunner.shouldInvestigateAlert({
283
+ await AIAlertInvestigationRunner.shouldInvestigateAlert({
284
284
  alertId,
285
285
  projectId,
286
286
  });
@@ -289,7 +289,7 @@ describe("SentinelAlertInvestigationRunner.shouldInvestigateAlert", () => {
289
289
  });
290
290
  });
291
291
 
292
- describe("SentinelInvestigationQueue concurrency cap", () => {
292
+ describe("AIInvestigationQueue concurrency cap", () => {
293
293
  beforeEach(() => {
294
294
  // No per-project override => the default cap of 3 applies.
295
295
  jest.spyOn(ProjectService, "findOneById").mockResolvedValue(fakeProject());
@@ -308,7 +308,7 @@ describe("SentinelInvestigationQueue concurrency cap", () => {
308
308
  "attemptStatusTransition",
309
309
  );
310
310
 
311
- await SentinelInvestigationQueue.processRun({
311
+ await AIInvestigationQueue.processRun({
312
312
  id: ObjectID.generate(),
313
313
  projectId: ObjectID.generate(),
314
314
  attemptCount: 0,
@@ -325,7 +325,7 @@ describe("SentinelInvestigationQueue concurrency cap", () => {
325
325
  "attemptStatusTransition",
326
326
  );
327
327
 
328
- await SentinelInvestigationQueue.processRun({
328
+ await AIInvestigationQueue.processRun({
329
329
  id: ObjectID.generate(),
330
330
  projectId: ObjectID.generate(),
331
331
  attemptCount: 0,
@@ -348,7 +348,7 @@ describe("SentinelInvestigationQueue concurrency cap", () => {
348
348
  "attemptStatusTransition",
349
349
  );
350
350
 
351
- await SentinelInvestigationQueue.processRun({
351
+ await AIInvestigationQueue.processRun({
352
352
  id: ObjectID.generate(),
353
353
  projectId: ObjectID.generate(),
354
354
  attemptCount: 0,
@@ -0,0 +1,362 @@
1
+ import AIConfidenceSignal, {
2
+ CONFIDENCE_CLASSIFICATION_FEATURE,
3
+ ConfidenceSignal,
4
+ EvidenceInput,
5
+ } from "../../../../Server/Utils/AI/SRE/ConfidenceSignal";
6
+ import AIService, {
7
+ AILogResponse,
8
+ AUTONOMOUS_AI_FEATURES,
9
+ } from "../../../../Server/Services/AIService";
10
+ import { AIChatCitation } from "../../../../Types/AI/AIChatTypes";
11
+ import ObjectID from "../../../../Types/ObjectID";
12
+ import { describe, expect, test, afterEach } from "@jest/globals";
13
+
14
+ /*
15
+ * The G6 structured confidence signal: no control-flow decision may derive
16
+ * from free-form model prose. Under test: the deterministic evidence floor
17
+ * (zero server-minted evidence → inconclusive, always, no LLM spent), the
18
+ * word-bounded CONFIDENT/INCONCLUSIVE token parse, the PER-CONSUMER fail
19
+ * directions (ping fails louder; instrumentation-PR creation fails toward
20
+ * doing nothing), and computeConfidenceSignal's never-throws contract.
21
+ */
22
+
23
+ const projectId: ObjectID = ObjectID.generate();
24
+ const aiRunId: ObjectID = ObjectID.generate();
25
+
26
+ function fakeCitation(rowCount: number): AIChatCitation {
27
+ return {
28
+ id: `C${rowCount}`,
29
+ toolName: "search_logs",
30
+ label: "Logs",
31
+ queryArguments: {},
32
+ rowCount,
33
+ } as AIChatCitation;
34
+ }
35
+
36
+ function evidence(data: Partial<EvidenceInput>): EvidenceInput {
37
+ return {
38
+ citationCount: 0,
39
+ dataBearingToolCallCount: 0,
40
+ anyToolReturnedData: false,
41
+ ...data,
42
+ };
43
+ }
44
+
45
+ function fakeLlmResponse(content: string): AILogResponse {
46
+ return { content } as unknown as AILogResponse;
47
+ }
48
+
49
+ describe("AIConfidenceSignal.evidenceFromCitations", () => {
50
+ test("no citations → zero evidence", () => {
51
+ expect(AIConfidenceSignal.evidenceFromCitations([])).toEqual({
52
+ citationCount: 0,
53
+ dataBearingToolCallCount: 0,
54
+ anyToolReturnedData: false,
55
+ });
56
+ });
57
+
58
+ test("counts data-bearing citations separately from row-less ones", () => {
59
+ expect(
60
+ AIConfidenceSignal.evidenceFromCitations([
61
+ fakeCitation(0),
62
+ fakeCitation(3),
63
+ fakeCitation(12),
64
+ ]),
65
+ ).toEqual({
66
+ citationCount: 3,
67
+ dataBearingToolCallCount: 2,
68
+ anyToolReturnedData: true,
69
+ });
70
+ });
71
+
72
+ test("citations whose every result was empty carry no data", () => {
73
+ expect(
74
+ AIConfidenceSignal.evidenceFromCitations([
75
+ fakeCitation(0),
76
+ fakeCitation(0),
77
+ ]),
78
+ ).toEqual({
79
+ citationCount: 2,
80
+ dataBearingToolCallCount: 0,
81
+ anyToolReturnedData: false,
82
+ });
83
+ });
84
+ });
85
+
86
+ describe("AIConfidenceSignal.hasVerifiableEvidence (deterministic floor)", () => {
87
+ test("zero citations AND zero data-bearing tool calls → no evidence, always", () => {
88
+ expect(AIConfidenceSignal.hasVerifiableEvidence(evidence({}))).toBe(false);
89
+ });
90
+
91
+ test("a single minted citation passes the floor (rowCount 0 is proof of absence — still server-verified evidence)", () => {
92
+ expect(
93
+ AIConfidenceSignal.hasVerifiableEvidence(evidence({ citationCount: 1 })),
94
+ ).toBe(true);
95
+ });
96
+
97
+ test("a data-bearing tool call passes the floor even without a citation count (defensive OR)", () => {
98
+ expect(
99
+ AIConfidenceSignal.hasVerifiableEvidence(
100
+ evidence({ dataBearingToolCallCount: 1 }),
101
+ ),
102
+ ).toBe(true);
103
+ expect(
104
+ AIConfidenceSignal.hasVerifiableEvidence(
105
+ evidence({ anyToolReturnedData: true }),
106
+ ),
107
+ ).toBe(true);
108
+ });
109
+ });
110
+
111
+ describe("AIConfidenceSignal.parseClassificationToken", () => {
112
+ test("exact single tokens parse (case-insensitively, whitespace-tolerant)", () => {
113
+ expect(AIConfidenceSignal.parseClassificationToken("CONFIDENT")).toBe(true);
114
+ expect(AIConfidenceSignal.parseClassificationToken(" inconclusive\n")).toBe(
115
+ false,
116
+ );
117
+ expect(AIConfidenceSignal.parseClassificationToken("confident")).toBe(true);
118
+ });
119
+
120
+ test("a token embedded in editorializing prose still parses", () => {
121
+ expect(
122
+ AIConfidenceSignal.parseClassificationToken("The analysis is CONFIDENT."),
123
+ ).toBe(true);
124
+ expect(
125
+ AIConfidenceSignal.parseClassificationToken(
126
+ "I would call this INCONCLUSIVE, the evidence is thin.",
127
+ ),
128
+ ).toBe(false);
129
+ });
130
+
131
+ test("a token embedded inside a larger word does not parse (word boundaries)", () => {
132
+ expect(
133
+ AIConfidenceSignal.parseClassificationToken("CONFIDENTLY"),
134
+ ).toBeNull();
135
+ expect(
136
+ AIConfidenceSignal.parseClassificationToken("inconclusively"),
137
+ ).toBeNull();
138
+ });
139
+
140
+ test("both tokens → null (ambiguous)", () => {
141
+ expect(
142
+ AIConfidenceSignal.parseClassificationToken(
143
+ "Either CONFIDENT or INCONCLUSIVE, hard to say.",
144
+ ),
145
+ ).toBeNull();
146
+ });
147
+
148
+ test("no token / empty / null → null", () => {
149
+ expect(
150
+ AIConfidenceSignal.parseClassificationToken("I cannot judge this."),
151
+ ).toBeNull();
152
+ expect(AIConfidenceSignal.parseClassificationToken("")).toBeNull();
153
+ expect(AIConfidenceSignal.parseClassificationToken(null)).toBeNull();
154
+ expect(AIConfidenceSignal.parseClassificationToken(undefined)).toBeNull();
155
+ });
156
+ });
157
+
158
+ describe("per-consumer fail directions", () => {
159
+ const floorInconclusive: ConfidenceSignal = {
160
+ confident: false,
161
+ source: "deterministic-floor",
162
+ };
163
+ const classifiedConfident: ConfidenceSignal = {
164
+ confident: true,
165
+ source: "classification",
166
+ };
167
+ const classifiedInconclusive: ConfidenceSignal = {
168
+ confident: false,
169
+ source: "classification",
170
+ };
171
+ const classificationFailed: ConfidenceSignal = {
172
+ confident: false,
173
+ source: "classification-failed",
174
+ };
175
+
176
+ test("workspace ping: confident classifications ping; verified-inconclusive stays quiet", () => {
177
+ expect(
178
+ AIConfidenceSignal.shouldSendWorkspaceNotification(classifiedConfident),
179
+ ).toBe(true);
180
+ expect(
181
+ AIConfidenceSignal.shouldSendWorkspaceNotification(
182
+ classifiedInconclusive,
183
+ ),
184
+ ).toBe(false);
185
+ expect(
186
+ AIConfidenceSignal.shouldSendWorkspaceNotification(floorInconclusive),
187
+ ).toBe(false);
188
+ });
189
+
190
+ test("workspace ping fails LOUDER: classification-failed → ping sends", () => {
191
+ expect(
192
+ AIConfidenceSignal.shouldSendWorkspaceNotification(classificationFailed),
193
+ ).toBe(true);
194
+ });
195
+
196
+ test("instrumentation PR: only a POSITIVE inconclusive verdict enqueues", () => {
197
+ expect(
198
+ AIConfidenceSignal.shouldEnqueueInstrumentationTask(floorInconclusive),
199
+ ).toBe(true);
200
+ expect(
201
+ AIConfidenceSignal.shouldEnqueueInstrumentationTask(
202
+ classifiedInconclusive,
203
+ ),
204
+ ).toBe(true);
205
+ expect(
206
+ AIConfidenceSignal.shouldEnqueueInstrumentationTask(classifiedConfident),
207
+ ).toBe(false);
208
+ });
209
+
210
+ test("instrumentation PR fails toward DOING NOTHING: classification-failed → no PR", () => {
211
+ expect(
212
+ AIConfidenceSignal.shouldEnqueueInstrumentationTask(classificationFailed),
213
+ ).toBe(false);
214
+ });
215
+ });
216
+
217
+ describe("AIConfidenceSignal.computeConfidenceSignal", () => {
218
+ afterEach(() => {
219
+ jest.restoreAllMocks();
220
+ });
221
+
222
+ test("the deterministic floor short-circuits: zero evidence → inconclusive, NO LLM call — prose cannot fake evidence that was never minted", async () => {
223
+ const executeWithLogging: jest.SpyInstance = jest.spyOn(
224
+ AIService,
225
+ "executeWithLogging",
226
+ );
227
+
228
+ const signal: ConfidenceSignal =
229
+ await AIConfidenceSignal.computeConfidenceSignal({
230
+ projectId,
231
+ aiRunId,
232
+ analysisMarkdown:
233
+ "**Most likely root cause** — definitely the database, trust me.",
234
+ evidence: evidence({}),
235
+ });
236
+
237
+ expect(signal).toEqual({
238
+ confident: false,
239
+ source: "deterministic-floor",
240
+ });
241
+ expect(executeWithLogging).not.toHaveBeenCalled();
242
+ });
243
+
244
+ test("floor passes + CONFIDENT token → one budgeted, preview-less, temperature-0 call", async () => {
245
+ const executeWithLogging: jest.SpyInstance = jest
246
+ .spyOn(AIService, "executeWithLogging")
247
+ .mockResolvedValue(fakeLlmResponse("CONFIDENT"));
248
+
249
+ const signal: ConfidenceSignal =
250
+ await AIConfidenceSignal.computeConfidenceSignal({
251
+ projectId,
252
+ aiRunId,
253
+ analysisMarkdown: "The connection pool ran dry [C1].",
254
+ evidence: evidence({
255
+ citationCount: 2,
256
+ dataBearingToolCallCount: 1,
257
+ anyToolReturnedData: true,
258
+ }),
259
+ });
260
+
261
+ expect(signal).toEqual({ confident: true, source: "classification" });
262
+
263
+ expect(executeWithLogging).toHaveBeenCalledTimes(1);
264
+ expect(executeWithLogging).toHaveBeenCalledWith(
265
+ expect.objectContaining({
266
+ projectId,
267
+ aiRunId,
268
+ // Budget coverage: must be an AUTONOMOUS_AI_FEATURES member.
269
+ feature: CONFIDENCE_CLASSIFICATION_FEATURE,
270
+ // The verdict drives control flow — no prompt previews in LlmLog.
271
+ storeContentPreviews: false,
272
+ temperature: 0,
273
+ maxTokens: 20,
274
+ }),
275
+ );
276
+ });
277
+
278
+ test("INCONCLUSIVE token → classified inconclusive", async () => {
279
+ jest
280
+ .spyOn(AIService, "executeWithLogging")
281
+ .mockResolvedValue(fakeLlmResponse("INCONCLUSIVE"));
282
+
283
+ const signal: ConfidenceSignal =
284
+ await AIConfidenceSignal.computeConfidenceSignal({
285
+ projectId,
286
+ aiRunId,
287
+ analysisMarkdown: "Nothing anomalous found in any signal [C1].",
288
+ evidence: evidence({ citationCount: 1 }),
289
+ });
290
+
291
+ expect(signal).toEqual({ confident: false, source: "classification" });
292
+ });
293
+
294
+ test("unparseable response (neither or both tokens) → classification-failed", async () => {
295
+ const executeWithLogging: jest.SpyInstance = jest
296
+ .spyOn(AIService, "executeWithLogging")
297
+ .mockResolvedValue(fakeLlmResponse("CONFIDENT... no wait, INCONCLUSIVE"));
298
+
299
+ expect(
300
+ await AIConfidenceSignal.computeConfidenceSignal({
301
+ projectId,
302
+ aiRunId,
303
+ analysisMarkdown: "Analysis.",
304
+ evidence: evidence({ citationCount: 1 }),
305
+ }),
306
+ ).toEqual({ confident: false, source: "classification-failed" });
307
+
308
+ executeWithLogging.mockResolvedValue(fakeLlmResponse("I cannot say."));
309
+
310
+ expect(
311
+ await AIConfidenceSignal.computeConfidenceSignal({
312
+ projectId,
313
+ aiRunId,
314
+ analysisMarkdown: "Analysis.",
315
+ evidence: evidence({ citationCount: 1 }),
316
+ }),
317
+ ).toEqual({ confident: false, source: "classification-failed" });
318
+ });
319
+
320
+ test("an LLM failure (provider down, daily budget rejection) → classification-failed, never a throw", async () => {
321
+ jest
322
+ .spyOn(AIService, "executeWithLogging")
323
+ .mockRejectedValue(new Error("Daily AI token budget exhausted"));
324
+
325
+ await expect(
326
+ AIConfidenceSignal.computeConfidenceSignal({
327
+ projectId,
328
+ aiRunId,
329
+ analysisMarkdown: "Analysis.",
330
+ evidence: evidence({ citationCount: 1 }),
331
+ }),
332
+ ).resolves.toEqual({
333
+ confident: false,
334
+ source: "classification-failed",
335
+ });
336
+ });
337
+
338
+ test("the analysis is truncated to 8000 chars before it reaches the classifier", async () => {
339
+ const executeWithLogging: jest.SpyInstance = jest
340
+ .spyOn(AIService, "executeWithLogging")
341
+ .mockResolvedValue(fakeLlmResponse("CONFIDENT"));
342
+
343
+ const analysisMarkdown: string = "H".repeat(8000) + "TAIL_MARKER";
344
+
345
+ await AIConfidenceSignal.computeConfidenceSignal({
346
+ projectId,
347
+ aiRunId,
348
+ analysisMarkdown,
349
+ evidence: evidence({ citationCount: 1 }),
350
+ });
351
+
352
+ const userMessage: { content: string } =
353
+ executeWithLogging.mock.calls[0]![0].messages[1];
354
+
355
+ expect(userMessage.content).toContain("H".repeat(8000));
356
+ expect(userMessage.content).not.toContain("TAIL_MARKER");
357
+ });
358
+
359
+ test("the feature is covered by the G4 daily autonomous budget", () => {
360
+ expect(AUTONOMOUS_AI_FEATURES).toContain(CONFIDENCE_CLASSIFICATION_FEATURE);
361
+ });
362
+ });
@@ -1,8 +1,8 @@
1
- import SentinelInvestigationQueue, {
1
+ import AIInvestigationQueue, {
2
2
  MAX_INVESTIGATION_ATTEMPTS,
3
- } from "../../../../Server/Utils/AI/Sentinel/InvestigationQueue";
4
- import SentinelIncidentInvestigationRunner from "../../../../Server/Utils/AI/Sentinel/IncidentInvestigationRunner";
5
- import SentinelAlertInvestigationRunner from "../../../../Server/Utils/AI/Sentinel/AlertInvestigationRunner";
3
+ } from "../../../../Server/Utils/AI/SRE/InvestigationQueue";
4
+ import AIIncidentInvestigationRunner from "../../../../Server/Utils/AI/SRE/IncidentInvestigationRunner";
5
+ import AIAlertInvestigationRunner from "../../../../Server/Utils/AI/SRE/AlertInvestigationRunner";
6
6
  import AIRunService from "../../../../Server/Services/AIRunService";
7
7
  import AIService from "../../../../Server/Services/AIService";
8
8
  import ProjectService from "../../../../Server/Services/ProjectService";
@@ -39,7 +39,7 @@ function mockBudgetOk(): void {
39
39
  });
40
40
  }
41
41
 
42
- describe("SentinelInvestigationQueue", () => {
42
+ describe("AIInvestigationQueue", () => {
43
43
  beforeEach(() => {
44
44
  mockBudgetOk();
45
45
  // No per-project cap override => default of 3.
@@ -65,10 +65,10 @@ describe("SentinelInvestigationQueue", () => {
65
65
  .spyOn(AIRunService, "create")
66
66
  .mockResolvedValue({ id: createdId } as unknown as AIRun);
67
67
  const processRun: jest.SpyInstance = jest
68
- .spyOn(SentinelInvestigationQueue, "processRun")
68
+ .spyOn(AIInvestigationQueue, "processRun")
69
69
  .mockResolvedValue(undefined);
70
70
 
71
- await SentinelInvestigationQueue.enqueue({
71
+ await AIInvestigationQueue.enqueue({
72
72
  projectId,
73
73
  subjectIncidentId: incidentId,
74
74
  });
@@ -97,11 +97,11 @@ describe("SentinelInvestigationQueue", () => {
97
97
  test("a lost claim never executes the investigation", async () => {
98
98
  jest.spyOn(AIRunService, "attemptStatusTransition").mockResolvedValue(0);
99
99
  const execute: jest.SpyInstance = jest.spyOn(
100
- SentinelIncidentInvestigationRunner,
100
+ AIIncidentInvestigationRunner,
101
101
  "executeInvestigation",
102
102
  );
103
103
 
104
- await SentinelInvestigationQueue.processRun({
104
+ await AIInvestigationQueue.processRun({
105
105
  id: ObjectID.generate(),
106
106
  projectId: ObjectID.generate(),
107
107
  attemptCount: 0,
@@ -118,10 +118,10 @@ describe("SentinelInvestigationQueue", () => {
118
118
  .spyOn(AIRunService, "attemptStatusTransition")
119
119
  .mockResolvedValue(1);
120
120
  const execute: jest.SpyInstance = jest
121
- .spyOn(SentinelIncidentInvestigationRunner, "executeInvestigation")
121
+ .spyOn(AIIncidentInvestigationRunner, "executeInvestigation")
122
122
  .mockResolvedValue(undefined);
123
123
 
124
- await SentinelInvestigationQueue.processRun({
124
+ await AIInvestigationQueue.processRun({
125
125
  id: runId,
126
126
  projectId: ObjectID.generate(),
127
127
  attemptCount: 0,
@@ -153,10 +153,10 @@ describe("SentinelInvestigationQueue", () => {
153
153
  const alertId: ObjectID = ObjectID.generate();
154
154
  jest.spyOn(AIRunService, "attemptStatusTransition").mockResolvedValue(1);
155
155
  const execute: jest.SpyInstance = jest
156
- .spyOn(SentinelAlertInvestigationRunner, "executeInvestigation")
156
+ .spyOn(AIAlertInvestigationRunner, "executeInvestigation")
157
157
  .mockResolvedValue(undefined);
158
158
 
159
- await SentinelInvestigationQueue.processRun({
159
+ await AIInvestigationQueue.processRun({
160
160
  id: ObjectID.generate(),
161
161
  projectId: ObjectID.generate(),
162
162
  attemptCount: 0,
@@ -174,7 +174,7 @@ describe("SentinelInvestigationQueue", () => {
174
174
  .spyOn(AIRunService, "attemptStatusTransition")
175
175
  .mockResolvedValue(1);
176
176
 
177
- await SentinelInvestigationQueue.failOrRequeue({
177
+ await AIInvestigationQueue.failOrRequeue({
178
178
  aiRunId: runId,
179
179
  attemptCount: 1,
180
180
  errorMessage: "LLM provider timed out",
@@ -197,7 +197,7 @@ describe("SentinelInvestigationQueue", () => {
197
197
  .spyOn(AIRunService, "attemptStatusTransition")
198
198
  .mockResolvedValue(1);
199
199
 
200
- await SentinelInvestigationQueue.failOrRequeue({
200
+ await AIInvestigationQueue.failOrRequeue({
201
201
  aiRunId: ObjectID.generate(),
202
202
  attemptCount: MAX_INVESTIGATION_ATTEMPTS,
203
203
  errorMessage: "LLM provider timed out",
@@ -218,7 +218,7 @@ describe("SentinelInvestigationQueue", () => {
218
218
  .spyOn(AIRunService, "attemptStatusTransition")
219
219
  .mockResolvedValue(1);
220
220
 
221
- await SentinelInvestigationQueue.failOrRequeue({
221
+ await AIInvestigationQueue.failOrRequeue({
222
222
  aiRunId: ObjectID.generate(),
223
223
  attemptCount: 1,
224
224
  errorMessage: "No LLM provider configured for this project.",
@@ -239,7 +239,7 @@ describe("SentinelInvestigationQueue", () => {
239
239
  jest.spyOn(AIRunService, "attemptStatusTransition").mockResolvedValue(1);
240
240
 
241
241
  const outcome: "requeued" | "stale" =
242
- await SentinelInvestigationQueue.requeueOrMarkStale({
242
+ await AIInvestigationQueue.requeueOrMarkStale({
243
243
  id: ObjectID.generate(),
244
244
  attemptCount: 1,
245
245
  });
@@ -253,7 +253,7 @@ describe("SentinelInvestigationQueue", () => {
253
253
  .mockResolvedValue(1);
254
254
 
255
255
  const outcome: "requeued" | "stale" =
256
- await SentinelInvestigationQueue.requeueOrMarkStale({
256
+ await AIInvestigationQueue.requeueOrMarkStale({
257
257
  id: ObjectID.generate(),
258
258
  attemptCount: MAX_INVESTIGATION_ATTEMPTS,
259
259
  });
@@ -279,7 +279,7 @@ describe("SentinelInvestigationQueue", () => {
279
279
  .spyOn(AIRunService, "attemptStatusTransition")
280
280
  .mockResolvedValue(1);
281
281
 
282
- await SentinelInvestigationQueue.processQueuedRuns();
282
+ await AIInvestigationQueue.processQueuedRuns();
283
283
 
284
284
  expect(findBy).toHaveBeenCalledTimes(2);
285
285
  expect(update).toHaveBeenCalledWith(