@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,523 @@
1
+ import { afterEach, beforeEach, describe, expect, test } from "@jest/globals";
2
+ import getJestMockFunction, { MockFunction } from "../../MockType";
3
+ import TableColumnsToCsv from "../../../UI/Utils/TableColumnsToCsv";
4
+ import Column from "../../../UI/Components/Table/Types/Column";
5
+ import Columns from "../../../UI/Components/Table/Types/Columns";
6
+ import FieldType from "../../../UI/Components/Types/FieldType";
7
+ import OneUptimeDate from "../../../Types/Date";
8
+ import ObjectID from "../../../Types/ObjectID";
9
+
10
+ /*
11
+ * Concrete row shape used across the tests. A real ModelTable passes model
12
+ * instances, but the utility only relies on property access / getColumnValue,
13
+ * so plain objects exercise the same code paths.
14
+ */
15
+ interface Row {
16
+ name?: string | undefined;
17
+ status?: string | undefined;
18
+ isActive?: boolean | undefined;
19
+ count?: number | undefined;
20
+ label?: { name?: string } | null | undefined;
21
+ severityText?: string | undefined;
22
+ _id?: string | undefined;
23
+ }
24
+
25
+ describe("TableColumnsToCsv", () => {
26
+ describe("escapeCsvValue", () => {
27
+ test("leaves a plain value untouched", () => {
28
+ expect(TableColumnsToCsv.escapeCsvValue("hello")).toBe("hello");
29
+ });
30
+
31
+ test("leaves an empty string untouched", () => {
32
+ expect(TableColumnsToCsv.escapeCsvValue("")).toBe("");
33
+ });
34
+
35
+ test("quotes a value that contains a comma", () => {
36
+ expect(TableColumnsToCsv.escapeCsvValue("a,b")).toBe('"a,b"');
37
+ });
38
+
39
+ test("quotes and doubles embedded quotes", () => {
40
+ expect(TableColumnsToCsv.escapeCsvValue('she said "hi"')).toBe(
41
+ '"she said ""hi"""',
42
+ );
43
+ });
44
+
45
+ test("quotes a value that contains a newline", () => {
46
+ expect(TableColumnsToCsv.escapeCsvValue("line1\nline2")).toBe(
47
+ '"line1\nline2"',
48
+ );
49
+ });
50
+
51
+ test("quotes a value that contains a carriage return", () => {
52
+ expect(TableColumnsToCsv.escapeCsvValue("line1\r\nline2")).toBe(
53
+ '"line1\r\nline2"',
54
+ );
55
+ });
56
+ });
57
+
58
+ describe("sanitizeForCsvInjection", () => {
59
+ test("prefixes a value starting with =", () => {
60
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("=1+1")).toBe("'=1+1");
61
+ });
62
+
63
+ test("prefixes a value starting with +", () => {
64
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("+A1")).toBe("'+A1");
65
+ });
66
+
67
+ test("prefixes a value starting with @", () => {
68
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("@SUM(A1)")).toBe(
69
+ "'@SUM(A1)",
70
+ );
71
+ });
72
+
73
+ test("prefixes a value starting with a tab", () => {
74
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("\tvalue")).toBe(
75
+ "'\tvalue",
76
+ );
77
+ });
78
+
79
+ test("does not prefix a negative number so numbers survive", () => {
80
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("-5")).toBe("-5");
81
+ });
82
+
83
+ test("does not prefix a normal value", () => {
84
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("normal")).toBe(
85
+ "normal",
86
+ );
87
+ });
88
+
89
+ test("leaves an empty string untouched", () => {
90
+ expect(TableColumnsToCsv.sanitizeForCsvInjection("")).toBe("");
91
+ });
92
+ });
93
+
94
+ describe("getRawValueByPath", () => {
95
+ test("reads a top-level property from a plain object", () => {
96
+ expect(
97
+ TableColumnsToCsv.getRawValueByPath({ name: "Prod" }, "name"),
98
+ ).toBe("Prod");
99
+ });
100
+
101
+ test("reads a nested property with dot notation", () => {
102
+ const item: Row = { label: { name: "Critical" } };
103
+ expect(TableColumnsToCsv.getRawValueByPath(item, "label.name")).toBe(
104
+ "Critical",
105
+ );
106
+ });
107
+
108
+ test("preserves the falsy value false (does not treat it as missing)", () => {
109
+ expect(
110
+ TableColumnsToCsv.getRawValueByPath({ isActive: false }, "isActive"),
111
+ ).toBe(false);
112
+ });
113
+
114
+ test("preserves the falsy value 0", () => {
115
+ expect(TableColumnsToCsv.getRawValueByPath({ count: 0 }, "count")).toBe(
116
+ 0,
117
+ );
118
+ });
119
+
120
+ test("returns undefined for a missing key", () => {
121
+ expect(
122
+ TableColumnsToCsv.getRawValueByPath({ name: "x" }, "missing"),
123
+ ).toBeUndefined();
124
+ });
125
+
126
+ test("stops and returns the nullish value when a branch is null", () => {
127
+ const item: Row = { label: null };
128
+ expect(
129
+ TableColumnsToCsv.getRawValueByPath(item, "label.name"),
130
+ ).toBeNull();
131
+ });
132
+
133
+ test("a null branch formats to an empty CSV cell", () => {
134
+ const column: Column<Row> = {
135
+ title: "Label",
136
+ type: FieldType.Text,
137
+ key: "label.name" as keyof Row,
138
+ };
139
+ expect(TableColumnsToCsv.getCellValue({ label: null }, column)).toBe("");
140
+ });
141
+
142
+ test("falls back to getColumnValue for analytics-style models", () => {
143
+ // Analytics models keep values in an internal map, only reachable via getColumnValue.
144
+ const analyticsLike: {
145
+ data: Record<string, unknown>;
146
+ getColumnValue: (name: string) => unknown;
147
+ } = {
148
+ data: { severityText: "Error" },
149
+ getColumnValue(name: string): unknown {
150
+ return this.data[name];
151
+ },
152
+ };
153
+
154
+ expect(
155
+ TableColumnsToCsv.getRawValueByPath(analyticsLike, "severityText"),
156
+ ).toBe("Error");
157
+ });
158
+
159
+ test("prefers direct property access over getColumnValue", () => {
160
+ const hybrid: { name: string; getColumnValue: () => unknown } = {
161
+ name: "direct",
162
+ getColumnValue(): unknown {
163
+ return "from-getter";
164
+ },
165
+ };
166
+
167
+ expect(TableColumnsToCsv.getRawValueByPath(hybrid, "name")).toBe(
168
+ "direct",
169
+ );
170
+ });
171
+ });
172
+
173
+ describe("formatValueForCsv", () => {
174
+ test("returns empty string for null", () => {
175
+ expect(TableColumnsToCsv.formatValueForCsv(null, FieldType.Text)).toBe(
176
+ "",
177
+ );
178
+ });
179
+
180
+ test("returns empty string for undefined", () => {
181
+ expect(
182
+ TableColumnsToCsv.formatValueForCsv(undefined, FieldType.Text),
183
+ ).toBe("");
184
+ });
185
+
186
+ test("formats a Date column using the friendly date-only format", () => {
187
+ const date: Date = new Date("2024-01-31T10:30:00.000Z");
188
+ expect(TableColumnsToCsv.formatValueForCsv(date, FieldType.Date)).toBe(
189
+ OneUptimeDate.getDateAsUserFriendlyLocalFormattedString(date, true),
190
+ );
191
+ });
192
+
193
+ test("formats a DateTime column using the friendly date+time format", () => {
194
+ const date: Date = new Date("2024-01-31T10:30:00.000Z");
195
+ expect(
196
+ TableColumnsToCsv.formatValueForCsv(date, FieldType.DateTime),
197
+ ).toBe(
198
+ OneUptimeDate.getDateAsUserFriendlyLocalFormattedString(date, false),
199
+ );
200
+ });
201
+
202
+ test("formats an ISO date string for a Date column", () => {
203
+ const iso: string = "2024-01-31T10:30:00.000Z";
204
+ expect(TableColumnsToCsv.formatValueForCsv(iso, FieldType.Date)).toBe(
205
+ OneUptimeDate.getDateAsUserFriendlyLocalFormattedString(iso, true),
206
+ );
207
+ });
208
+
209
+ test("formats Boolean true as Yes", () => {
210
+ expect(TableColumnsToCsv.formatValueForCsv(true, FieldType.Boolean)).toBe(
211
+ "Yes",
212
+ );
213
+ });
214
+
215
+ test("formats Boolean false as No", () => {
216
+ expect(
217
+ TableColumnsToCsv.formatValueForCsv(false, FieldType.Boolean),
218
+ ).toBe("No");
219
+ });
220
+
221
+ test("formats USDCents into dollars", () => {
222
+ expect(
223
+ TableColumnsToCsv.formatValueForCsv(2500, FieldType.USDCents),
224
+ ).toBe("25 USD");
225
+ });
226
+
227
+ test("formats a Percent value", () => {
228
+ expect(TableColumnsToCsv.formatValueForCsv(80, FieldType.Percent)).toBe(
229
+ "80%",
230
+ );
231
+ });
232
+
233
+ test("stringifies a plain number for a Number column", () => {
234
+ expect(TableColumnsToCsv.formatValueForCsv(42, FieldType.Number)).toBe(
235
+ "42",
236
+ );
237
+ });
238
+
239
+ test("uses a value's custom toString (ObjectID)", () => {
240
+ const id: ObjectID = new ObjectID("resource-123");
241
+ expect(TableColumnsToCsv.formatValueForCsv(id, FieldType.ObjectID)).toBe(
242
+ "resource-123",
243
+ );
244
+ });
245
+
246
+ test("extracts name from an entity-like object", () => {
247
+ const entity: Row = { _id: "1", name: "Production" };
248
+ expect(
249
+ TableColumnsToCsv.formatValueForCsv(entity, FieldType.Entity),
250
+ ).toBe("Production");
251
+ });
252
+
253
+ test("joins arrays of scalar values with a semicolon", () => {
254
+ expect(
255
+ TableColumnsToCsv.formatValueForCsv(
256
+ ["one", "two", "three"],
257
+ FieldType.ArrayOfText,
258
+ ),
259
+ ).toBe("one; two; three");
260
+ });
261
+
262
+ test("joins arrays of entity-like objects using their names", () => {
263
+ const values: Array<Row> = [{ name: "A" }, { name: "B" }];
264
+ expect(
265
+ TableColumnsToCsv.formatValueForCsv(values, FieldType.EntityArray),
266
+ ).toBe("A; B");
267
+ });
268
+
269
+ test("skips empty elements when joining arrays", () => {
270
+ expect(
271
+ TableColumnsToCsv.formatValueForCsv(
272
+ ["a", "", "b"],
273
+ FieldType.ArrayOfText,
274
+ ),
275
+ ).toBe("a; b");
276
+ });
277
+ });
278
+
279
+ describe("getExportableColumns", () => {
280
+ const columns: Columns<Row> = [
281
+ { title: "Name", type: FieldType.Text, key: "name" },
282
+ { title: "Actions", type: FieldType.Actions, key: null },
283
+ { title: "Custom", type: FieldType.Element },
284
+ { title: "Status", type: FieldType.Text, key: "status" },
285
+ ];
286
+
287
+ test("excludes the Actions column", () => {
288
+ const result: Columns<Row> =
289
+ TableColumnsToCsv.getExportableColumns(columns);
290
+ expect(
291
+ result.find((c: Column<Row>) => {
292
+ return c.title === "Actions";
293
+ }),
294
+ ).toBeUndefined();
295
+ });
296
+
297
+ test("excludes columns without a data key", () => {
298
+ const result: Columns<Row> =
299
+ TableColumnsToCsv.getExportableColumns(columns);
300
+ expect(
301
+ result.find((c: Column<Row>) => {
302
+ return c.title === "Custom";
303
+ }),
304
+ ).toBeUndefined();
305
+ });
306
+
307
+ test("keeps columns that have a key", () => {
308
+ const result: Columns<Row> =
309
+ TableColumnsToCsv.getExportableColumns(columns);
310
+ expect(
311
+ result.map((c: Column<Row>) => {
312
+ return c.title;
313
+ }),
314
+ ).toEqual(["Name", "Status"]);
315
+ });
316
+
317
+ test("handles undefined columns gracefully", () => {
318
+ expect(
319
+ TableColumnsToCsv.getExportableColumns(
320
+ undefined as unknown as Columns<Row>,
321
+ ),
322
+ ).toEqual([]);
323
+ });
324
+ });
325
+
326
+ describe("getCellValue", () => {
327
+ test("returns empty string for a keyless column", () => {
328
+ const column: Column<Row> = {
329
+ title: "X",
330
+ type: FieldType.Text,
331
+ key: null,
332
+ };
333
+ expect(TableColumnsToCsv.getCellValue({ name: "y" }, column)).toBe("");
334
+ });
335
+
336
+ test("formats the value at the column key", () => {
337
+ const column: Column<Row> = {
338
+ title: "Active",
339
+ type: FieldType.Boolean,
340
+ key: "isActive",
341
+ };
342
+ expect(TableColumnsToCsv.getCellValue({ isActive: false }, column)).toBe(
343
+ "No",
344
+ );
345
+ });
346
+ });
347
+
348
+ describe("convertToCsv", () => {
349
+ const columns: Columns<Row> = [
350
+ { title: "Name", type: FieldType.Text, key: "name" },
351
+ { title: "Active", type: FieldType.Boolean, key: "isActive" },
352
+ { title: "Actions", type: FieldType.Actions, key: null },
353
+ ];
354
+
355
+ test("builds a header row from exportable columns only", () => {
356
+ const csv: string = TableColumnsToCsv.convertToCsv({
357
+ items: [],
358
+ columns: columns,
359
+ });
360
+ expect(csv).toBe("Name,Active");
361
+ });
362
+
363
+ test("builds one row per item and separates rows with CRLF", () => {
364
+ const items: Array<Row> = [
365
+ { name: "Alpha", isActive: true },
366
+ { name: "Beta", isActive: false },
367
+ ];
368
+
369
+ const csv: string = TableColumnsToCsv.convertToCsv({
370
+ items: items,
371
+ columns: columns,
372
+ });
373
+
374
+ expect(csv).toBe("Name,Active\r\nAlpha,Yes\r\nBeta,No");
375
+ });
376
+
377
+ test("escapes values that contain commas", () => {
378
+ const items: Array<Row> = [{ name: "Smith, John", isActive: true }];
379
+ const csv: string = TableColumnsToCsv.convertToCsv({
380
+ items: items,
381
+ columns: [{ title: "Name", type: FieldType.Text, key: "name" }],
382
+ });
383
+ expect(csv).toBe('Name\r\n"Smith, John"');
384
+ });
385
+
386
+ test("neutralizes formula injection in cell values", () => {
387
+ const items: Array<Row> = [{ name: "=cmd()" }];
388
+ const csv: string = TableColumnsToCsv.convertToCsv({
389
+ items: items,
390
+ columns: [{ title: "Name", type: FieldType.Text, key: "name" }],
391
+ });
392
+ expect(csv).toBe("Name\r\n'=cmd()");
393
+ });
394
+
395
+ test("renders missing values as empty cells", () => {
396
+ const items: Array<Row> = [{ name: "OnlyName" }];
397
+ const csv: string = TableColumnsToCsv.convertToCsv({
398
+ items: items,
399
+ columns: columns,
400
+ });
401
+ expect(csv).toBe("Name,Active\r\nOnlyName,");
402
+ });
403
+
404
+ test("handles undefined items gracefully", () => {
405
+ const csv: string = TableColumnsToCsv.convertToCsv({
406
+ items: undefined as unknown as Array<Row>,
407
+ columns: columns,
408
+ });
409
+ expect(csv).toBe("Name,Active");
410
+ });
411
+ });
412
+
413
+ describe("getExportFilename", () => {
414
+ test("slugifies the label and appends the csv extension", () => {
415
+ const filename: string =
416
+ TableColumnsToCsv.getExportFilename("Monitor Probes");
417
+ expect(filename).toMatch(
418
+ /^monitor-probes-export-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}\.csv$/,
419
+ );
420
+ });
421
+
422
+ test("collapses non-alphanumeric runs and trims dashes", () => {
423
+ const filename: string = TableColumnsToCsv.getExportFilename(
424
+ " On-Call!! Policies ",
425
+ );
426
+ expect(filename.startsWith("on-call-policies-export-")).toBe(true);
427
+ expect(filename.endsWith(".csv")).toBe(true);
428
+ });
429
+
430
+ test("falls back to 'table' for an empty label", () => {
431
+ const filename: string = TableColumnsToCsv.getExportFilename("");
432
+ expect(filename.startsWith("table-export-")).toBe(true);
433
+ });
434
+ });
435
+
436
+ describe("downloadCsv and exportItemsToCsv", () => {
437
+ let createObjectURLMock: MockFunction;
438
+ let revokeObjectURLMock: MockFunction;
439
+ let clickSpy: jest.SpyInstance;
440
+ let createElementSpy: jest.SpyInstance;
441
+ let capturedAnchor: HTMLAnchorElement | null;
442
+
443
+ beforeEach(() => {
444
+ capturedAnchor = null;
445
+
446
+ createObjectURLMock = getJestMockFunction();
447
+ createObjectURLMock.mockReturnValue("blob:mock-url");
448
+ revokeObjectURLMock = getJestMockFunction();
449
+
450
+ (window.URL as unknown as { createObjectURL: unknown }).createObjectURL =
451
+ createObjectURLMock;
452
+ (window.URL as unknown as { revokeObjectURL: unknown }).revokeObjectURL =
453
+ revokeObjectURLMock;
454
+
455
+ clickSpy = jest
456
+ .spyOn(HTMLAnchorElement.prototype, "click")
457
+ .mockImplementation(() => {});
458
+
459
+ const originalCreateElement: (tagName: string) => HTMLElement =
460
+ document.createElement.bind(document);
461
+
462
+ createElementSpy = jest
463
+ .spyOn(document, "createElement")
464
+ .mockImplementation(
465
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
466
+ ((tagName: string): HTMLElement => {
467
+ const element: HTMLElement = originalCreateElement(tagName);
468
+ if (tagName === "a") {
469
+ capturedAnchor = element as HTMLAnchorElement;
470
+ }
471
+ return element;
472
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
473
+ }) as any,
474
+ );
475
+ });
476
+
477
+ afterEach(() => {
478
+ clickSpy.mockRestore();
479
+ createElementSpy.mockRestore();
480
+ });
481
+
482
+ test("downloadCsv creates a link, triggers a download, and revokes the url", () => {
483
+ TableColumnsToCsv.downloadCsv({
484
+ csv: "a,b\r\n1,2",
485
+ filename: "data.csv",
486
+ });
487
+
488
+ expect(createObjectURLMock).toHaveBeenCalledTimes(1);
489
+ expect(clickSpy).toHaveBeenCalledTimes(1);
490
+ expect(revokeObjectURLMock).toHaveBeenCalledWith("blob:mock-url");
491
+ expect(capturedAnchor).not.toBeNull();
492
+ expect(capturedAnchor!.download).toBe("data.csv");
493
+ expect(capturedAnchor!.href).toContain("blob:mock-url");
494
+ // Anchor is cleaned up from the DOM after the click.
495
+ expect(document.body.contains(capturedAnchor)).toBe(false);
496
+ });
497
+
498
+ test("downloadCsv builds a text/csv blob", () => {
499
+ TableColumnsToCsv.downloadCsv({ csv: "x", filename: "x.csv" });
500
+
501
+ const blobArg: Blob = createObjectURLMock.mock.calls[0]![0] as Blob;
502
+ expect(blobArg).toBeInstanceOf(Blob);
503
+ expect(blobArg.type).toContain("text/csv");
504
+ });
505
+
506
+ test("exportItemsToCsv builds the CSV and downloads it end-to-end", () => {
507
+ const columns: Columns<Row> = [
508
+ { title: "Name", type: FieldType.Text, key: "name" },
509
+ ];
510
+
511
+ TableColumnsToCsv.exportItemsToCsv({
512
+ items: [{ name: "Alpha" }],
513
+ columns: columns,
514
+ label: "Monitors",
515
+ });
516
+
517
+ expect(createObjectURLMock).toHaveBeenCalledTimes(1);
518
+ expect(clickSpy).toHaveBeenCalledTimes(1);
519
+ expect(capturedAnchor).not.toBeNull();
520
+ expect(capturedAnchor!.download).toMatch(/^monitors-export-.*\.csv$/);
521
+ });
522
+ });
523
+ });
@@ -187,6 +187,14 @@ export interface AIRunEventResultSummary {
187
187
  isTruncated?: boolean | undefined;
188
188
  bytesSentToLlm?: number | undefined;
189
189
  errorMessage?: string | undefined;
190
+ /*
191
+ * Human-readable text for events that carry a message rather than query
192
+ * stats — e.g. ProgressLog lines from the code-fix agent, or "Opened pull
193
+ * request …" on ActionExecuted. Rendered by the run activity feed.
194
+ */
195
+ message?: string | undefined;
196
+ // Log severity for ProgressLog events (Info/Warning/Error/…).
197
+ severity?: string | undefined;
190
198
  }
191
199
 
192
200
  // What was sent to which LLM during a run — the per-run egress manifest.
@@ -0,0 +1,77 @@
1
+ import {
2
+ PerformanceCodeLocation,
3
+ PerformanceFinding,
4
+ } from "./CodeFixTaskContext";
5
+
6
+ /*
7
+ * The JSON persisted on AIInsight.evidence.
8
+ *
9
+ * Evidence is computed DETERMINISTICALLY at detect time and stored verbatim
10
+ * because ClickHouse retention is short — the stored evidence must outlive
11
+ * the raw signals it was computed from (the FixPerformance taskContext
12
+ * precedent: by the time anyone looks, the spans/logs may already be gone).
13
+ * It is rendered in the dashboard and embedded in triage prompts, so every
14
+ * field must carry the real numbers and stand on its own.
15
+ *
16
+ * Exactly one of the per-type sections is set, matching the insight's
17
+ * AIInsightType. These shapes are a wire contract — do not rename
18
+ * fields.
19
+ */
20
+
21
+ // Evidence for NewException and ExceptionSpike insights.
22
+ export interface ExceptionInsightEvidence {
23
+ exceptionMessage?: string | undefined;
24
+ exceptionType?: string | undefined;
25
+ // Occurrences in the recent (spike) window.
26
+ recentOccurrenceCount?: number | undefined;
27
+ // Average hourly occurrences over the prior baseline window.
28
+ baselineHourlyAverage?: number | undefined;
29
+ // recent rate / baseline rate.
30
+ spikeMultiplier?: number | undefined;
31
+ // Lifetime occurrence count of the exception.
32
+ totalOccurrenceCount?: number | undefined;
33
+ // ISO-8601 — when the exception was first ever seen.
34
+ firstSeenAt?: string | undefined;
35
+ }
36
+
37
+ // Evidence for ErrorLogSpike insights.
38
+ export interface LogSpikeInsightEvidence {
39
+ recentErrorCount: number;
40
+ baselineHourlyAverage: number;
41
+ spikeMultiplier: number;
42
+ windowMinutes: number;
43
+ topServices: Array<{ serviceName: string; count: number }>;
44
+ }
45
+
46
+ // Evidence for TraceLatencyRegression insights.
47
+ export interface LatencyInsightEvidence {
48
+ recentP99Ms: number;
49
+ baselineP99Ms: number;
50
+ regressionMultiplier: number;
51
+ operationName?: string | undefined;
52
+ sampleTraceId?: string | undefined;
53
+ // Deterministic span-tree findings drilled from the sample trace.
54
+ performanceFindings?: Array<PerformanceFinding> | undefined;
55
+ // code.* attribute locations for stack-trace-style repo resolution.
56
+ codeLocations?: Array<PerformanceCodeLocation> | undefined;
57
+ }
58
+
59
+ // Evidence for MetricDrift insights (week-over-week mean comparison).
60
+ export interface MetricDriftInsightEvidence {
61
+ metricName: string;
62
+ primaryEntityId?: string | undefined;
63
+ recentWeekMean: number;
64
+ priorWeekMean: number;
65
+ relativeChangePercent: number;
66
+ recentSampleCount: number;
67
+ priorSampleCount: number;
68
+ }
69
+
70
+ export interface AIInsightEvidence {
71
+ exception?: ExceptionInsightEvidence | undefined;
72
+ logSpike?: LogSpikeInsightEvidence | undefined;
73
+ latency?: LatencyInsightEvidence | undefined;
74
+ metricDrift?: MetricDriftInsightEvidence | undefined;
75
+ }
76
+
77
+ export default AIInsightEvidence;
@@ -0,0 +1,15 @@
1
+ /*
2
+ * The one-click human verdict on a AIInsight. This IS the G11
3
+ * precision measurement: confirm/dismiss rates per insight type tell us how
4
+ * precise each deterministic detector is in the field. Stored on
5
+ * AIInsight.humanVerdict, so these strings are a wire contract — do
6
+ * not rename them.
7
+ */
8
+ enum AIInsightHumanVerdict {
9
+ // A human confirmed the insight was real and worth surfacing.
10
+ Confirmed = "Confirmed",
11
+ // A human dismissed the insight as noise/not actionable.
12
+ Dismissed = "Dismissed",
13
+ }
14
+
15
+ export default AIInsightHumanVerdict;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * How urgent a AIInsight is, assigned deterministically by the
3
+ * detector that produced it (e.g. by spike/regression multiplier). Stored
4
+ * on AIInsight.severity and rendered/filtered in the dashboard, so
5
+ * these strings are a wire contract — do not rename them.
6
+ */
7
+ enum AIInsightSeverity {
8
+ High = "High",
9
+ Medium = "Medium",
10
+ Low = "Low",
11
+ }
12
+
13
+ export default AIInsightSeverity;
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Lifecycle of a AIInsight. Stored on AIInsight.status and
3
+ * filtered on in the dashboard, so these strings are a wire contract — do
4
+ * not rename them.
5
+ *
6
+ * Detected is the defensive initial state — the scanner routes every newly
7
+ * created insight to ActionRequired or FixOpened in the same tick, so a row
8
+ * only stays Detected if routing crashed mid-scan. Resolved and Dismissed
9
+ * are human actions (the terminal states).
10
+ */
11
+ enum AIInsightStatus {
12
+ // Just created by a detector; routed onward in the same scanner tick.
13
+ Detected = "Detected",
14
+ // Waiting on a human: no automatic fix was opened for this insight.
15
+ ActionRequired = "ActionRequired",
16
+ // An AI fix task was queued for this insight (see fixAiRunId).
17
+ FixOpened = "FixOpened",
18
+ // A human marked the insight as handled. Terminal.
19
+ Resolved = "Resolved",
20
+ // A human dismissed the insight as noise/not actionable. Terminal.
21
+ Dismissed = "Dismissed",
22
+ }
23
+
24
+ export default AIInsightStatus;
25
+
26
+ export class AIInsightStatusHelper {
27
+ /*
28
+ * Terminal = Resolved | Dismissed — the two human end states. The scanner
29
+ * only refreshes (dedupes into) NON-terminal insights; a terminal insight
30
+ * is never reopened by a detector.
31
+ */
32
+ public static isTerminalStatus(status: AIInsightStatus): boolean {
33
+ return (
34
+ status === AIInsightStatus.Resolved ||
35
+ status === AIInsightStatus.Dismissed
36
+ );
37
+ }
38
+ }