@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,269 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import OneUptimeDate from "../../../../../Types/Date";
11
+ import LIMIT_MAX from "../../../../../Types/Database/LimitMax";
12
+ import Project from "../../../../../Models/DatabaseModels/Project";
13
+ import AIInsightStatus from "../../../../../Types/AI/AIInsightStatus";
14
+ import ProjectService from "../../../../Services/ProjectService";
15
+ import AIInsightService from "../../../../Services/AIInsightService";
16
+ import InsightDetectors from "./Detectors/Index";
17
+ import InsightStore from "./InsightStore";
18
+ import InsightFixRouting from "./FixRouting";
19
+ import InsightTriage from "./Triage";
20
+ import logger from "../../../Logger";
21
+ import CaptureSpan from "../../../Telemetry/CaptureSpan";
22
+ /*
23
+ * AI Insights — the scan orchestration (the "watch loop").
24
+ *
25
+ * THE RULE: no LLM here. Detectors are deterministic statistical sensors;
26
+ * the LLM only engages per-finding AFTERWARDS through InsightTriage
27
+ * (budgeted, read-only), and the fix decision inside InsightFixRouting is
28
+ * deterministic and reuses the existing budgeted CodeFix creation paths.
29
+ *
30
+ * Everything is opt-in and quiet: only projects with the default-false
31
+ * enableAiInsights flag are scanned, insights never page and never
32
+ * open incidents, and every layer (project, detector, insight) fails in
33
+ * isolation — one broken tenant or sensor must not stop the sweep.
34
+ */
35
+ export default class InsightScanner {
36
+ /*
37
+ * One scan tick across all opted-in projects. The flag query IS the gate:
38
+ * enableAiInsights defaults to false, so nothing runs for a project
39
+ * that never opted in. Runs as root with explicit projectId scoping
40
+ * (monitor-worker precedent), not per-user ACL. Never throws — the cron
41
+ * caller gets a clean resolve either way.
42
+ */
43
+ static async scanAllProjects() {
44
+ var _a;
45
+ let projects = [];
46
+ try {
47
+ projects = await ProjectService.findBy({
48
+ query: { enableAiInsights: true },
49
+ select: {
50
+ _id: true,
51
+ enableInsightFixTasks: true,
52
+ enableAi: true,
53
+ },
54
+ limit: LIMIT_MAX,
55
+ skip: 0,
56
+ props: { isRoot: true },
57
+ });
58
+ }
59
+ catch (error) {
60
+ logger.error(`AI Insights: failed to list opted-in projects for the scan tick: ${error}`);
61
+ return;
62
+ }
63
+ for (const project of projects) {
64
+ try {
65
+ await this.scanProjectForInsights(project);
66
+ }
67
+ catch (error) {
68
+ logger.error(`AI Insights: scan failed for project ${(_a = project.id) === null || _a === void 0 ? void 0 : _a.toString()}: ${error}`);
69
+ }
70
+ }
71
+ }
72
+ /*
73
+ * One project's scan: self-heal any insight an earlier tick left unrouted,
74
+ * run every registered detector (isolated — one failing sensor must not
75
+ * blind the others), dedupe/upsert the candidates through InsightStore,
76
+ * then route each NEWLY created insight to FixOpened or ActionRequired and
77
+ * enqueue its triage.
78
+ */
79
+ static async scanProjectForInsights(project) {
80
+ var _a;
81
+ const projectId = project.id || undefined;
82
+ if (!projectId) {
83
+ return;
84
+ }
85
+ /*
86
+ * The self-heal sweep runs FIRST — before the detectors — so it can only
87
+ * ever see rows from EARLIER ticks: this tick's own new rows do not
88
+ * exist yet and therefore cannot be routed twice.
89
+ */
90
+ await this.rerouteStrandedInsights({
91
+ projectId: projectId,
92
+ project: project,
93
+ });
94
+ // The tick's single clock — detectors compute all windows from it.
95
+ const now = OneUptimeDate.getCurrentDate();
96
+ const context = {
97
+ projectId: projectId,
98
+ now: now,
99
+ };
100
+ const candidates = [];
101
+ const detectors = InsightDetectors.getAllDetectors();
102
+ for (const detector of detectors) {
103
+ try {
104
+ const detected = await detector.detect(context);
105
+ candidates.push(...detected);
106
+ }
107
+ catch (error) {
108
+ logger.error(`AI Insights: ${detector.insightType} detector failed for project ${projectId.toString()} — continuing with the remaining detectors: ${error}`);
109
+ }
110
+ }
111
+ if (candidates.length === 0) {
112
+ return;
113
+ }
114
+ const upsertResult = await InsightStore.upsertCandidates({
115
+ projectId: projectId,
116
+ candidates: candidates,
117
+ now: now,
118
+ });
119
+ /*
120
+ * Only NEWLY created insights are routed — refreshed rows were routed
121
+ * on the tick that created them and their status is owned by humans and
122
+ * the fix flow from then on.
123
+ */
124
+ for (const insight of upsertResult.created) {
125
+ try {
126
+ await this.routeNewInsight({ insight: insight, project: project });
127
+ }
128
+ catch (error) {
129
+ logger.error(`AI Insights: routing failed for insight ${(_a = insight.id) === null || _a === void 0 ? void 0 : _a.toString()} (project ${projectId.toString()}) — continuing with the remaining insights: ${error}`);
130
+ }
131
+ }
132
+ }
133
+ /*
134
+ * Self-heal for insights stranded in the defensive Detected state.
135
+ *
136
+ * InsightStore CREATES rows as Detected and the routing status write is a
137
+ * SEPARATE, later write. If the pod dies in between (eviction, OOM,
138
+ * deploy) — or that write simply fails — the row is stranded: later ticks
139
+ * take the REFRESH path, which by contract never touches status and never
140
+ * re-routes, so the insight would stay Detected FOREVER: never triaged,
141
+ * never fix-routed, and its fingerprint permanently pinned (the dedupe
142
+ * lookup would keep refreshing the dead row instead of letting a fresh,
143
+ * routable insight be created for that finding).
144
+ *
145
+ * RE-ROUTING IS SAFE BY CONSTRUCTION — it cannot double-create work:
146
+ * - fix creation dedupes inside the creation paths (per (exception,
147
+ * recipe) for FixException, per trace for FixPerformance), so a row
148
+ * that DID get its fix run created before the pod died gets a rejected
149
+ * create here, which InsightFixRouting swallows into "no fix opened";
150
+ * - triage dedupes to one non-terminal run per insight, so a re-routed
151
+ * insight with a live triage run enqueues nothing;
152
+ * - both status writes are idempotent overwrites of the same row.
153
+ * NEVER throws: a sweep failure must not cost the project its scan.
154
+ */
155
+ static async rerouteStrandedInsights(data) {
156
+ var _a;
157
+ const { projectId, project } = data;
158
+ let stranded = [];
159
+ try {
160
+ stranded = await AIInsightService.findBy({
161
+ query: {
162
+ projectId: projectId,
163
+ status: AIInsightStatus.Detected,
164
+ },
165
+ // Exactly the fields routeNewInsight's collaborators read.
166
+ select: {
167
+ _id: true,
168
+ projectId: true,
169
+ insightType: true,
170
+ serviceName: true,
171
+ traceId: true,
172
+ telemetryExceptionId: true,
173
+ evidence: true,
174
+ },
175
+ limit: LIMIT_MAX,
176
+ skip: 0,
177
+ props: { isRoot: true },
178
+ });
179
+ }
180
+ catch (error) {
181
+ logger.error(`AI Insights: failed to sweep unrouted (Detected) insights for project ${projectId.toString()} — continuing with the scan: ${error}`);
182
+ return;
183
+ }
184
+ for (const insight of stranded) {
185
+ try {
186
+ await this.routeNewInsight({ insight: insight, project: project });
187
+ }
188
+ catch (error) {
189
+ logger.error(`AI Insights: re-routing failed for stranded insight ${(_a = insight.id) === null || _a === void 0 ? void 0 : _a.toString()} (project ${projectId.toString()}) — continuing with the remaining stranded insights: ${error}`);
190
+ }
191
+ }
192
+ }
193
+ /*
194
+ * Route one insight — newly created this tick, or swept up as stranded
195
+ * from an earlier one — out of the defensive Detected state:
196
+ * 1. deterministic fix routing (gated on enableAi + enableInsightFixTasks
197
+ * inside InsightFixRouting) → FixOpened + fixAiRunId, else
198
+ * ActionRequired;
199
+ * 2. triage enqueue for EVERY new insight — triage enriches fix and
200
+ * non-fix insights alike → triageAiRunId when a run was enqueued.
201
+ * Both collaborators are never-throws by contract, but they are wrapped
202
+ * anyway: a contract breach must degrade (no fix / no triage), not leave
203
+ * the insight stuck in Detected or fail the scan.
204
+ */
205
+ static async routeNewInsight(data) {
206
+ var _a, _b;
207
+ const { insight, project } = data;
208
+ let fixAiRunId = undefined;
209
+ try {
210
+ const fixResult = await InsightFixRouting.routeInsightFix({
211
+ insight: insight,
212
+ project: project,
213
+ });
214
+ fixAiRunId = fixResult.fixAiRunId;
215
+ }
216
+ catch (error) {
217
+ logger.error(`AI Insights: fix routing threw for insight ${(_a = insight.id) === null || _a === void 0 ? void 0 : _a.toString()} (treating as no fix opened): ${error}`);
218
+ }
219
+ if (fixAiRunId) {
220
+ await AIInsightService.updateOneById({
221
+ id: insight.id,
222
+ data: {
223
+ status: AIInsightStatus.FixOpened,
224
+ fixAiRunId: fixAiRunId,
225
+ },
226
+ props: { isRoot: true },
227
+ });
228
+ }
229
+ else {
230
+ await AIInsightService.updateOneById({
231
+ id: insight.id,
232
+ data: {
233
+ status: AIInsightStatus.ActionRequired,
234
+ },
235
+ props: { isRoot: true },
236
+ });
237
+ }
238
+ let triageAiRunId = undefined;
239
+ try {
240
+ const triageResult = await InsightTriage.enqueueInsightTriage({ insight: insight });
241
+ triageAiRunId = triageResult.triageAiRunId;
242
+ }
243
+ catch (error) {
244
+ logger.error(`AI Insights: triage enqueue threw for insight ${(_b = insight.id) === null || _b === void 0 ? void 0 : _b.toString()} (continuing without triage): ${error}`);
245
+ }
246
+ if (triageAiRunId) {
247
+ await AIInsightService.updateOneById({
248
+ id: insight.id,
249
+ data: {
250
+ triageAiRunId: triageAiRunId,
251
+ },
252
+ props: { isRoot: true },
253
+ });
254
+ }
255
+ }
256
+ }
257
+ __decorate([
258
+ CaptureSpan(),
259
+ __metadata("design:type", Function),
260
+ __metadata("design:paramtypes", []),
261
+ __metadata("design:returntype", Promise)
262
+ ], InsightScanner, "scanAllProjects", null);
263
+ __decorate([
264
+ CaptureSpan(),
265
+ __metadata("design:type", Function),
266
+ __metadata("design:paramtypes", [Project]),
267
+ __metadata("design:returntype", Promise)
268
+ ], InsightScanner, "scanProjectForInsights", null);
269
+ //# sourceMappingURL=InsightScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightScanner.js","sourceRoot":"","sources":["../../../../../../../Server/Utils/AI/SRE/Insights/InsightScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import OneUptimeDate from "../../../../../Types/Date";
11
+ import ColumnLength from "../../../../../Types/Database/ColumnLength";
12
+ import SortOrder from "../../../../../Types/BaseDatabase/SortOrder";
13
+ import AIInsight from "../../../../../Models/DatabaseModels/AIInsight";
14
+ import AIInsightStatus, { AIInsightStatusHelper, } from "../../../../../Types/AI/AIInsightStatus";
15
+ import AIInsightService from "../../../../Services/AIInsightService";
16
+ import logger from "../../../Logger";
17
+ import CaptureSpan from "../../../Telemetry/CaptureSpan";
18
+ /*
19
+ * AI Insights — the dedupe/upsert store between detectors and the
20
+ * AIInsight table. Detectors re-emit the same finding on every scan
21
+ * tick while the underlying signal persists; the store's job is to keep the
22
+ * inbox quiet: one row per live finding (refreshed in place), a cooldown on
23
+ * findings a human already dismissed, and a hard cap on how many NEW rows a
24
+ * single scan may create.
25
+ */
26
+ /*
27
+ * G4/G11 volume guardrail: a single scan tick may create at most this many
28
+ * NEW insights per project. A telemetry storm (deploy gone wrong, detector
29
+ * mis-tuning) would otherwise flood the inbox — and every new insight fans
30
+ * out into budgeted triage/fix work. Recurring findings still refresh their
31
+ * existing rows beyond the cap; drops are logged, never silent.
32
+ */
33
+ export const MAX_NEW_INSIGHTS_PER_PROJECT_PER_SCAN = 10;
34
+ /*
35
+ * G11 noise posture: a human dismissal is the strongest precision signal we
36
+ * have, so a finding with the same fingerprint stays suppressed for this
37
+ * many days after the dismissal instead of reappearing on the next tick.
38
+ * After the cooldown (or after a Resolved insight's signal returns) a fresh
39
+ * insight is warranted — a resolved issue that reappears is a regression.
40
+ */
41
+ export const DISMISSED_COOLDOWN_DAYS = 7;
42
+ /*
43
+ * Column-safety clamps: DatabaseService validates string columns against the
44
+ * model's declared lengths and THROWS on overflow, and detectors embed raw
45
+ * telemetry strings (a span name can be an entire SQL statement, exception
46
+ * types and service names are unbounded). Clamping here — the single choke
47
+ * point where candidates become rows — protects every current and future
48
+ * detector. The fingerprint clamp is applied to the dedupe LOOKUP as well as
49
+ * the insert, so a clamped fingerprint keeps refreshing the same row instead
50
+ * of failing (or duplicating) on every tick. Values mirror the
51
+ * AIInsight column definitions (LongText/ShortText).
52
+ */
53
+ export const INSIGHT_FINGERPRINT_MAX_LENGTH = ColumnLength.LongText;
54
+ export const INSIGHT_TITLE_MAX_LENGTH = ColumnLength.LongText;
55
+ export const INSIGHT_SERVICE_NAME_MAX_LENGTH = ColumnLength.LongText;
56
+ export const INSIGHT_METRIC_NAME_MAX_LENGTH = ColumnLength.LongText;
57
+ export const INSIGHT_TRACE_ID_MAX_LENGTH = ColumnLength.ShortText;
58
+ export default class InsightStore {
59
+ /*
60
+ * Upsert one scan tick's candidates for one project. For each candidate,
61
+ * the most recent insight with the same (projectId, fingerprint) decides
62
+ * the outcome:
63
+ * - none → CREATE (subject to the per-scan cap)
64
+ * - non-terminal → REFRESH (never touches status)
65
+ * - Dismissed within the cooldown → suppress
66
+ * - Dismissed past the cooldown,
67
+ * or Resolved → CREATE (regression / recurrence)
68
+ * All access is root-props: the scanner is a system actor with explicit
69
+ * projectId scoping, not a per-user ACL consumer.
70
+ */
71
+ static async upsertCandidates(data) {
72
+ const result = {
73
+ created: [],
74
+ refreshed: 0,
75
+ suppressed: 0,
76
+ droppedByCap: 0,
77
+ };
78
+ // No silent caps: dropped fingerprints are logged after the loop.
79
+ const droppedFingerprints = [];
80
+ for (const candidate of data.candidates) {
81
+ /*
82
+ * Per-candidate isolation: one failing candidate (transient DB error,
83
+ * unexpected data) must not abort the batch — insights created earlier
84
+ * in this tick are returned for routing either way, and the remaining
85
+ * candidates still get their chance. Without this, a mid-batch failure
86
+ * would strand already-created rows in Detected forever (refreshes
87
+ * never touch status, so they would never be routed).
88
+ */
89
+ try {
90
+ /*
91
+ * The clamped fingerprint is the row's identity everywhere — lookup
92
+ * and insert — so dedupe survives the clamp (see the constants).
93
+ */
94
+ const fingerprint = this.clampToColumn(candidate.fingerprint, INSIGHT_FINGERPRINT_MAX_LENGTH);
95
+ /*
96
+ * Most recent row wins: (projectId, fingerprint) is deliberately NOT
97
+ * unique — terminal rows accumulate as history — so sort by createdAt
98
+ * to judge against the latest lifecycle state of this finding.
99
+ */
100
+ const existing = await AIInsightService.findOneBy({
101
+ query: {
102
+ projectId: data.projectId,
103
+ fingerprint: fingerprint,
104
+ },
105
+ select: {
106
+ _id: true,
107
+ status: true,
108
+ occurrenceCount: true,
109
+ humanVerdictAt: true,
110
+ },
111
+ sort: { createdAt: SortOrder.Descending },
112
+ props: { isRoot: true },
113
+ });
114
+ if (existing &&
115
+ existing.status &&
116
+ !AIInsightStatusHelper.isTerminalStatus(existing.status)) {
117
+ /*
118
+ * REFRESH: the finding is still live and already has a row. The
119
+ * evidence/severity are replaced with this tick's numbers (the
120
+ * newest picture of the signal), but status is NEVER touched here —
121
+ * routing (ActionRequired/FixOpened) happened when the row was
122
+ * created and humans/fix flows own it from there.
123
+ */
124
+ await AIInsightService.updateOneById({
125
+ id: existing.id,
126
+ data: {
127
+ lastSeenAt: data.now,
128
+ occurrenceCount: (existing.occurrenceCount || 1) + 1,
129
+ severity: candidate.severity,
130
+ detailMarkdown: candidate.detailMarkdown,
131
+ evidence: candidate.evidence,
132
+ },
133
+ props: { isRoot: true },
134
+ });
135
+ result.refreshed++;
136
+ continue;
137
+ }
138
+ if (existing && existing.status === AIInsightStatus.Dismissed) {
139
+ /*
140
+ * Cooldown is measured from the human's dismissal, inclusive at the
141
+ * boundary (exactly DISMISSED_COOLDOWN_DAYS old still suppresses).
142
+ * A Dismissed row without a verdict timestamp cannot prove the
143
+ * cooldown elapsed, so it suppresses too — when in doubt, stay
144
+ * quiet (G11 noise posture).
145
+ */
146
+ const cooldownMs = OneUptimeDate.getMillisecondsInDays(DISMISSED_COOLDOWN_DAYS);
147
+ const withinCooldown = existing.humanVerdictAt
148
+ ? data.now.getTime() -
149
+ OneUptimeDate.fromString(existing.humanVerdictAt).getTime() <=
150
+ cooldownMs
151
+ : true;
152
+ if (withinCooldown) {
153
+ logger.debug(`AI Insights: suppressing candidate ${fingerprint} for project ${data.projectId.toString()} — dismissed by a human within the last ${DISMISSED_COOLDOWN_DAYS} days.`);
154
+ result.suppressed++;
155
+ continue;
156
+ }
157
+ }
158
+ /*
159
+ * CREATE: no live row for this fingerprint (never seen, Resolved, or
160
+ * Dismissed long enough ago). Subject to the per-scan cap.
161
+ */
162
+ if (result.created.length >= MAX_NEW_INSIGHTS_PER_PROJECT_PER_SCAN) {
163
+ droppedFingerprints.push(fingerprint);
164
+ result.droppedByCap++;
165
+ continue;
166
+ }
167
+ const insight = new AIInsight();
168
+ insight.projectId = data.projectId;
169
+ insight.insightType = candidate.insightType;
170
+ // Defensive initial state — the scanner routes it in the same tick.
171
+ insight.status = AIInsightStatus.Detected;
172
+ insight.severity = candidate.severity;
173
+ insight.fingerprint = fingerprint;
174
+ insight.title = this.clampToColumn(candidate.title, INSIGHT_TITLE_MAX_LENGTH);
175
+ insight.detailMarkdown = candidate.detailMarkdown;
176
+ insight.evidence = candidate.evidence;
177
+ insight.firstSeenAt = data.now;
178
+ insight.lastSeenAt = data.now;
179
+ insight.occurrenceCount = 1;
180
+ if (candidate.serviceName) {
181
+ insight.serviceName = this.clampToColumn(candidate.serviceName, INSIGHT_SERVICE_NAME_MAX_LENGTH);
182
+ }
183
+ if (candidate.telemetryServiceId) {
184
+ insight.telemetryServiceId = candidate.telemetryServiceId;
185
+ }
186
+ if (candidate.telemetryExceptionId) {
187
+ insight.telemetryExceptionId = candidate.telemetryExceptionId;
188
+ }
189
+ if (candidate.traceId) {
190
+ insight.traceId = this.clampToColumn(candidate.traceId, INSIGHT_TRACE_ID_MAX_LENGTH);
191
+ }
192
+ if (candidate.metricName) {
193
+ insight.metricName = this.clampToColumn(candidate.metricName, INSIGHT_METRIC_NAME_MAX_LENGTH);
194
+ }
195
+ const created = await AIInsightService.create({
196
+ data: insight,
197
+ props: { isRoot: true },
198
+ });
199
+ result.created.push(created);
200
+ }
201
+ catch (error) {
202
+ logger.error(`AI Insights: upsert failed for candidate ${candidate.fingerprint} (project ${data.projectId.toString()}) — continuing with the remaining candidates: ${error}`);
203
+ }
204
+ }
205
+ if (result.droppedByCap > 0) {
206
+ logger.debug(`AI Insights: candidate fingerprints dropped by the per-scan cap for project ${data.projectId.toString()}: ${droppedFingerprints.join(", ")}`);
207
+ logger.info(`AI Insights: per-scan new-insight cap (${MAX_NEW_INSIGHTS_PER_PROJECT_PER_SCAN}) reached for project ${data.projectId.toString()} — dropped ${result.droppedByCap} candidate(s) this tick. Recurring findings will re-surface on later ticks if their signal persists.`);
208
+ }
209
+ return result;
210
+ }
211
+ /*
212
+ * Hard code-unit slice to the column's declared length — the same measure
213
+ * DatabaseService validates against, so a clamped value can never trip the
214
+ * length check. No cosmetic ellipsis: detectors own presentation; this is
215
+ * purely a data-safety guard, and it must be deterministic so a clamped
216
+ * fingerprint stays stable across ticks.
217
+ */
218
+ static clampToColumn(value, maxLength) {
219
+ if (value.length <= maxLength) {
220
+ return value;
221
+ }
222
+ return value.slice(0, maxLength);
223
+ }
224
+ }
225
+ __decorate([
226
+ CaptureSpan(),
227
+ __metadata("design:type", Function),
228
+ __metadata("design:paramtypes", [Object]),
229
+ __metadata("design:returntype", Promise)
230
+ ], InsightStore, "upsertCandidates", null);
231
+ //# sourceMappingURL=InsightStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsightStore.js","sourceRoot":"","sources":["../../../../../../../Server/Utils/AI/SRE/Insights/InsightStore.ts"],"names":[],"mappings":"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"}