@oneuptime/common 11.5.3 → 11.5.5

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 (513) 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/Dashboard.ts +3 -3
  6. package/Models/DatabaseModels/GlobalConfig.ts +105 -0
  7. package/Models/DatabaseModels/Index.ts +4 -8
  8. package/Models/DatabaseModels/InstanceHealthLog.ts +277 -0
  9. package/Models/DatabaseModels/LlmLog.ts +33 -0
  10. package/Models/DatabaseModels/Project.ts +123 -6
  11. package/Models/DatabaseModels/Runbook.ts +1 -1
  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/Index.ts +30 -0
  38. package/Server/Infrastructure/Queue.ts +82 -4
  39. package/Server/Infrastructure/Semaphore.ts +62 -1
  40. package/Server/Services/AIAgentService.ts +32 -0
  41. package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
  42. package/Server/Services/AIInsightService.ts +174 -0
  43. package/Server/Services/AIRunEventService.ts +63 -0
  44. package/Server/Services/AIRunService.ts +259 -1
  45. package/Server/Services/AIService.ts +249 -7
  46. package/Server/Services/AlertService.ts +4 -4
  47. package/Server/Services/CodeRepositoryService.ts +209 -0
  48. package/Server/Services/DashboardService.ts +11 -2
  49. package/Server/Services/GlobalConfigService.ts +148 -0
  50. package/Server/Services/IncidentService.ts +183 -38
  51. package/Server/Services/IncidentStateTimelineService.ts +24 -4
  52. package/Server/Services/Index.ts +4 -4
  53. package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
  54. package/Server/Services/LlmLogService.ts +27 -0
  55. package/Server/Services/LlmProviderService.ts +108 -0
  56. package/Server/Services/MetricBaselineService.ts +123 -0
  57. package/Server/Services/MonitorService.ts +15 -0
  58. package/Server/Services/TelemetryExceptionService.ts +323 -116
  59. package/Server/Services/TraceAggregationService.ts +176 -0
  60. package/Server/Types/Workflow/ComponentCode.ts +6 -0
  61. package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
  62. package/Server/Types/Workflow/Components/Index.ts +2 -0
  63. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
  64. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
  65. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
  66. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
  67. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
  68. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
  69. package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
  70. package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
  71. package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
  72. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
  73. package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
  74. package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
  75. package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
  76. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
  77. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
  78. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
  79. package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
  80. package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
  81. package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
  82. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
  83. package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
  84. package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
  85. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
  86. package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
  87. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
  88. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
  89. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
  90. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
  91. package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
  92. package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
  93. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
  94. package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
  95. package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
  96. package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
  97. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
  98. package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
  99. package/Server/Utils/AI/Toolbox/Index.ts +2 -2
  100. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
  101. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
  102. package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
  103. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
  104. package/Server/Utils/Execute.ts +34 -13
  105. package/Server/Utils/LLM/LLMService.ts +160 -30
  106. package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
  107. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
  108. package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +225 -0
  109. package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
  110. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
  111. package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
  112. package/Tests/Server/Services/AIInsightService.test.ts +324 -0
  113. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
  114. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
  115. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
  116. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
  117. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
  118. package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
  119. package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
  120. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
  121. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
  122. package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
  123. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
  124. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
  125. package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
  126. package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
  127. package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
  128. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
  129. package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
  130. package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
  131. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
  132. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
  133. package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
  134. package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
  135. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
  136. package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
  137. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
  138. package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
  139. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
  140. package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
  141. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
  142. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
  143. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
  144. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
  145. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
  146. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
  147. package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
  148. package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
  149. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
  150. package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
  151. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
  152. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
  153. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
  154. package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
  155. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
  156. package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
  157. package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
  158. package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
  159. package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
  160. package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
  161. package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
  162. package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
  163. package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
  164. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
  165. package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
  166. package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
  167. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
  168. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
  169. package/Types/AI/AIChatTypes.ts +8 -0
  170. package/Types/AI/AIInsightEvidence.ts +77 -0
  171. package/Types/AI/AIInsightHumanVerdict.ts +15 -0
  172. package/Types/AI/AIInsightSeverity.ts +13 -0
  173. package/Types/AI/AIInsightStatus.ts +38 -0
  174. package/Types/AI/AIInsightType.ts +41 -0
  175. package/Types/AI/AIRunAutoGrade.ts +18 -0
  176. package/Types/AI/AIRunEventType.ts +5 -0
  177. package/Types/AI/AIRunHumanVerdict.ts +17 -0
  178. package/Types/AI/AIRunType.ts +6 -0
  179. package/Types/AI/CodeFixTaskContext.ts +88 -0
  180. package/Types/AI/CodeFixTaskType.ts +132 -0
  181. package/Types/AI/FixPullRequestCiStatus.ts +132 -0
  182. package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
  183. package/Types/Incident/IncidentMetricType.ts +7 -0
  184. package/Types/Monitor/CriteriaFilter.ts +8 -0
  185. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  186. package/Types/Monitor/MonitorStep.ts +38 -0
  187. package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
  188. package/Types/Monitor/MonitorType.ts +17 -0
  189. package/Types/Monitor/SqlDatabaseType.ts +49 -0
  190. package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
  191. package/Types/Permission.ts +11 -95
  192. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  193. package/Types/Runbook/RunbookStep.ts +26 -2
  194. package/Types/Runbook/RunbookStepType.ts +1 -0
  195. package/Types/Workflow/Component.ts +13 -0
  196. package/Types/Workflow/ComponentID.ts +1 -0
  197. package/Types/Workflow/Components/AI.ts +148 -0
  198. package/Types/Workflow/Components.ts +8 -0
  199. package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
  200. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
  201. package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
  202. package/UI/Components/Table/Table.tsx +38 -2
  203. package/UI/Utils/TableColumnsToCsv.ts +385 -0
  204. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  205. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
  206. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  207. package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
  208. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
  209. package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
  210. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  211. package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
  212. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  213. package/build/dist/Models/DatabaseModels/Dashboard.js +3 -3
  214. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  215. package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
  216. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/Index.js +4 -8
  218. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  219. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
  220. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
  221. package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
  222. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  223. package/build/dist/Models/DatabaseModels/Project.js +127 -6
  224. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  225. package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
  226. package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
  227. package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
  228. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  229. package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
  230. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  231. package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
  232. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  233. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
  234. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
  235. package/build/dist/Server/API/AIInsightAPI.js +140 -0
  236. package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
  237. package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
  238. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  239. package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
  240. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
  241. package/build/dist/Server/API/GitHubAPI.js +164 -2
  242. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  243. package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
  244. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  245. package/build/dist/Server/EnvironmentConfig.js +1 -1
  246. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
  256. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
  257. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
  260. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
  261. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
  262. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
  274. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
  275. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
  276. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
  277. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +30 -0
  278. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  279. package/build/dist/Server/Infrastructure/Queue.js +73 -3
  280. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  281. package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
  282. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  283. package/build/dist/Server/Services/AIAgentService.js +29 -0
  284. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  285. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
  286. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
  287. package/build/dist/Server/Services/AIInsightService.js +164 -0
  288. package/build/dist/Server/Services/AIInsightService.js.map +1 -0
  289. package/build/dist/Server/Services/AIRunEventService.js +49 -0
  290. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  291. package/build/dist/Server/Services/AIRunService.js +221 -0
  292. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  293. package/build/dist/Server/Services/AIService.js +198 -11
  294. package/build/dist/Server/Services/AIService.js.map +1 -1
  295. package/build/dist/Server/Services/AlertService.js +4 -4
  296. package/build/dist/Server/Services/AlertService.js.map +1 -1
  297. package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
  298. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  299. package/build/dist/Server/Services/DashboardService.js +8 -2
  300. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  301. package/build/dist/Server/Services/GlobalConfigService.js +84 -0
  302. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  303. package/build/dist/Server/Services/IncidentService.js +149 -37
  304. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  305. package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
  306. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  307. package/build/dist/Server/Services/Index.js +4 -4
  308. package/build/dist/Server/Services/Index.js.map +1 -1
  309. package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
  310. package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
  311. package/build/dist/Server/Services/LlmLogService.js +23 -0
  312. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  313. package/build/dist/Server/Services/LlmProviderService.js +96 -0
  314. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  315. package/build/dist/Server/Services/MetricBaselineService.js +65 -0
  316. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  317. package/build/dist/Server/Services/MonitorService.js +9 -1
  318. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  319. package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
  320. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  321. package/build/dist/Server/Services/TraceAggregationService.js +124 -0
  322. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  323. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  324. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
  325. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
  326. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  327. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  328. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
  329. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
  330. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
  331. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
  332. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
  333. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
  334. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
  335. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
  336. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
  337. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
  338. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
  339. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
  340. package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
  341. package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
  342. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
  343. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
  344. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
  345. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
  346. package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
  347. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
  348. package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
  349. package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
  350. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
  351. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
  352. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
  353. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
  354. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
  355. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
  356. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
  357. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
  358. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
  359. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
  360. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
  361. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
  362. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
  363. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
  364. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
  365. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
  366. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
  367. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
  368. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
  369. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
  370. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
  371. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
  372. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
  373. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
  374. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
  375. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
  376. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
  377. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
  378. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
  379. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
  380. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
  381. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
  382. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
  383. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
  384. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
  385. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
  386. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
  387. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
  388. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
  389. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
  390. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
  391. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
  392. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
  393. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
  394. package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
  395. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
  396. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
  397. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  398. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
  399. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
  400. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
  401. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  402. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
  403. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
  404. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
  405. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
  406. package/build/dist/Server/Utils/Execute.js +21 -11
  407. package/build/dist/Server/Utils/Execute.js.map +1 -1
  408. package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
  409. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  410. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
  411. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
  412. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
  413. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  414. package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
  415. package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
  416. package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
  417. package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
  418. package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
  419. package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
  420. package/build/dist/Types/AI/AIInsightStatus.js +36 -0
  421. package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
  422. package/build/dist/Types/AI/AIInsightType.js +42 -0
  423. package/build/dist/Types/AI/AIInsightType.js.map +1 -0
  424. package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
  425. package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
  426. package/build/dist/Types/AI/AIRunEventType.js +5 -0
  427. package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
  428. package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
  429. package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
  430. package/build/dist/Types/AI/AIRunType.js +6 -0
  431. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  432. package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
  433. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
  434. package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
  435. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
  436. package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
  437. package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
  438. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
  439. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  440. package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
  441. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  442. package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
  443. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  444. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  445. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  446. package/build/dist/Types/Monitor/MonitorStep.js +28 -0
  447. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  448. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
  449. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
  450. package/build/dist/Types/Monitor/MonitorType.js +15 -0
  451. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  452. package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
  453. package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
  454. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
  455. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
  456. package/build/dist/Types/Permission.js +10 -84
  457. package/build/dist/Types/Permission.js.map +1 -1
  458. package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
  459. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  460. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  461. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  462. package/build/dist/Types/Workflow/Components/AI.js +135 -0
  463. package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
  464. package/build/dist/Types/Workflow/Components.js +7 -0
  465. package/build/dist/Types/Workflow/Components.js.map +1 -1
  466. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
  467. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  468. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
  469. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  470. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
  471. package/build/dist/UI/Components/Table/Table.js +28 -2
  472. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  473. package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
  474. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
  475. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  476. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  477. package/package.json +1 -1
  478. package/Models/DatabaseModels/AIAgentTask.ts +0 -660
  479. package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
  480. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
  481. package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
  482. package/Server/Services/AIAgentTaskService.ts +0 -240
  483. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
  484. package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
  485. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
  486. package/Types/AI/AIAgentTaskMetadata.ts +0 -25
  487. package/Types/AI/AIAgentTaskType.ts +0 -40
  488. package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
  489. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
  490. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
  491. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
  492. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
  493. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
  494. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
  495. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
  496. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
  497. package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
  498. package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
  499. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
  500. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
  501. package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
  502. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
  503. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
  504. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
  505. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
  506. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
  507. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
  508. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
  509. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
  510. package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
  511. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
  512. package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
  513. package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
@@ -0,0 +1,226 @@
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 AIService, { AI_CONFIDENCE_CLASSIFICATION_FEATURE, } from "../../../Services/AIService";
11
+ import logger from "../../Logger";
12
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
13
+ /*
14
+ * AI SRE — the structured, server-verified confidence signal (G6).
15
+ *
16
+ * The vision's §6 threat model forbids deriving control flow from free-form
17
+ * model prose: adversarial telemetry can steer what the model writes, so a
18
+ * regex over the analysis (the old INCONCLUSIVE_RE) was forgeable by prompt
19
+ * injection. This module replaces it with a two-part signal:
20
+ *
21
+ * 1. Deterministic evidence floor (pure, no LLM): computed from the run's
22
+ * OWN recorded tool activity. Citations are minted server-side from
23
+ * validated tool arguments — never by the model — so prose cannot fake
24
+ * evidence that was never minted. Zero citations AND zero data-bearing
25
+ * tool calls → INCONCLUSIVE, regardless of anything the analysis says.
26
+ *
27
+ * 2. Constrained classification (only when the floor passes): ONE metered
28
+ * LLM call (temperature 0, tiny token cap, word-bounded single-token
29
+ * parse — the InvestigationGrader idiom) asking whether the analysis
30
+ * asserts a specific, evidenced root cause or is inconclusive. The
31
+ * classifier sees the analysis as DATA and can only emit one of two
32
+ * tokens — it cannot be steered into an arbitrary control decision.
33
+ *
34
+ * FAIL DIRECTIONS ARE PER-CONSUMER, and that is the point of the structured
35
+ * result: `{confident, source}` lets each consumer choose its own safe
36
+ * degradation when the classification itself failed (unparseable response or
37
+ * the call errored). As implemented:
38
+ *
39
+ * | source | confident | workspace ping | instrumentation PR |
40
+ * |-----------------------|-----------|----------------|--------------------|
41
+ * | deterministic-floor | false | no (quiet) | yes (enqueue) |
42
+ * | classification | true | yes | no |
43
+ * | classification | false | no (quiet) | yes (enqueue) |
44
+ * | classification-failed | false (*) | YES — louder | NO — no PR |
45
+ *
46
+ * - The workspace ping treats classification-failed as CONFIDENT: quiet
47
+ * mode's fail direction is "louder, not silent" (vision §6) — a broken
48
+ * classifier must never suppress the on-call ping.
49
+ * - The instrumentation trigger treats classification-failed as
50
+ * NOT-inconclusive: autonomous PR creation (G11 posture) requires a
51
+ * POSITIVE, verified inconclusive verdict — "we don't know" must fail
52
+ * toward doing nothing.
53
+ * - (*) When source is "classification-failed" the `confident` boolean is
54
+ * a placeholder, NOT a verdict — consumers must route decisions through
55
+ * the helpers below, never through the raw boolean.
56
+ *
57
+ * Budget accounting: the classification call runs AFTER the investigation's
58
+ * agent loop has finished, so it is deliberately OUTSIDE the engine's per-run
59
+ * caps (MAX_LLM_CALLS / MAX_OUTPUT_TOKENS govern the loop, whose counts are
60
+ * persisted at the Completed transition before this call fires). It is still
61
+ * metered per-call in LlmLog and its feature is in AUTONOMOUS_AI_FEATURES, so
62
+ * the G4 daily autonomous token budget covers it — and a budget rejection
63
+ * degrades the signal to "classification-failed", never a run failure.
64
+ */
65
+ /*
66
+ * Persisted LlmLog label, and a member of AUTONOMOUS_AI_FEATURES (G4 budget).
67
+ * Owned by AIService so this writer and the budget match-list cannot drift —
68
+ * a drift would silently drop classification out of the budget forever.
69
+ */
70
+ export const CONFIDENCE_CLASSIFICATION_FEATURE = AI_CONFIDENCE_CLASSIFICATION_FEATURE;
71
+ // Truncation cap keeps the classification call cheap and inside context limits.
72
+ const MAX_ANALYSIS_CHARS = 8000;
73
+ /*
74
+ * Word-bounded token matchers (hoisted: wrap-regex and prettier disagree
75
+ * inline). Word boundaries mean CONFIDENTLY / INCONCLUSIVELY do not parse.
76
+ */
77
+ const CONFIDENT_RE = /\bCONFIDENT\b/;
78
+ const INCONCLUSIVE_RE = /\bINCONCLUSIVE\b/;
79
+ export default class AIConfidenceSignal {
80
+ /*
81
+ * THE single definition of "data-bearing" (shared with the eval harness in
82
+ * Utils/AI/Eval): a tool result that carried at least one row of data.
83
+ * rowCount 0 is still server-verified evidence — proof of absence ("checked,
84
+ * found nothing") — but it is not data-BEARING. Both the live confidence
85
+ * floor (over minted citations) and the offline corpus derivation (over
86
+ * recorded AIRunEvent resultSummary.rowCount) route through this helper so
87
+ * the two can never drift apart.
88
+ */
89
+ static isDataBearingRowCount(rowCount) {
90
+ return (rowCount || 0) > 0;
91
+ }
92
+ // Derive the deterministic evidence inputs from the run's minted citations.
93
+ static evidenceFromCitations(citations) {
94
+ const dataBearingToolCallCount = citations.filter((citation) => {
95
+ return this.isDataBearingRowCount(citation.rowCount);
96
+ }).length;
97
+ return {
98
+ citationCount: citations.length,
99
+ dataBearingToolCallCount,
100
+ anyToolReturnedData: dataBearingToolCallCount > 0,
101
+ };
102
+ }
103
+ /*
104
+ * The deterministic floor (pure, exported for tests): zero citations AND
105
+ * zero successful data-bearing tool calls → no server-verified evidence
106
+ * exists, so the run is INCONCLUSIVE no matter what the prose claims.
107
+ * Prose cannot fake evidence that was never minted server-side.
108
+ */
109
+ static hasVerifiableEvidence(evidence) {
110
+ return (evidence.citationCount > 0 ||
111
+ evidence.dataBearingToolCallCount > 0 ||
112
+ evidence.anyToolReturnedData);
113
+ }
114
+ /*
115
+ * Defensive one-token parse (pure, exported for tests). The prompt demands
116
+ * exactly one token, but models editorialize — accept the verdict when
117
+ * exactly ONE of the two tokens appears, word-bounded. Both found, neither
118
+ * found, or empty → null (classification failed; per-consumer fail
119
+ * directions apply).
120
+ */
121
+ static parseClassificationToken(response) {
122
+ if (!response) {
123
+ return null;
124
+ }
125
+ const text = response.toUpperCase();
126
+ const isConfident = CONFIDENT_RE.test(text);
127
+ const isInconclusive = INCONCLUSIVE_RE.test(text);
128
+ if (isConfident === isInconclusive) {
129
+ // Both or neither → unparseable.
130
+ return null;
131
+ }
132
+ return isConfident;
133
+ }
134
+ /*
135
+ * Consumer decision: should the analysis post ping the workspace/on-call?
136
+ * Fail direction: classification-failed → TRUE. Quiet mode fails LOUDER,
137
+ * not silent — a broken classifier must never suppress the ping (the old
138
+ * regex's fail direction, kept deliberately).
139
+ */
140
+ static shouldSendWorkspaceNotification(signal) {
141
+ if (signal.source === "classification-failed") {
142
+ return true;
143
+ }
144
+ return signal.confident;
145
+ }
146
+ /*
147
+ * Consumer decision: should an ImproveInstrumentation fix task be enqueued
148
+ * (opted-in projects only — the trigger has its own gates)? Requires a
149
+ * POSITIVE inconclusive verdict: either the deterministic floor proved no
150
+ * evidence exists, or the classification said INCONCLUSIVE. Fail direction:
151
+ * classification-failed → FALSE — autonomous PR creation fails toward
152
+ * doing nothing (G11 posture).
153
+ */
154
+ static shouldEnqueueInstrumentationTask(signal) {
155
+ if (signal.source === "classification-failed") {
156
+ return false;
157
+ }
158
+ return !signal.confident;
159
+ }
160
+ /*
161
+ * Compute the full signal: deterministic floor first (no LLM call when it
162
+ * fails), then one constrained classification call. NEVER throws — an
163
+ * errored or unparseable classification returns "classification-failed"
164
+ * and each consumer applies its own fail direction.
165
+ */
166
+ static async computeConfidenceSignal(data) {
167
+ if (!this.hasVerifiableEvidence(data.evidence)) {
168
+ /*
169
+ * No server-minted evidence exists — inconclusive by construction,
170
+ * regardless of the prose. No classification call is spent.
171
+ */
172
+ return { confident: false, source: "deterministic-floor" };
173
+ }
174
+ try {
175
+ const response = await AIService.executeWithLogging({
176
+ projectId: data.projectId,
177
+ feature: CONFIDENCE_CLASSIFICATION_FEATURE,
178
+ aiRunId: data.aiRunId,
179
+ // The verdict drives control flow; no prompt previews in LlmLog.
180
+ storeContentPreviews: false,
181
+ temperature: 0,
182
+ maxTokens: 20,
183
+ messages: [
184
+ {
185
+ role: "system",
186
+ content: [
187
+ "You judge an AI incident investigation's own analysis.",
188
+ "Does this analysis assert a specific root cause with supporting evidence, or is it inconclusive?",
189
+ "Reply with exactly one token and nothing else:",
190
+ "CONFIDENT — the analysis asserts a specific root cause with supporting evidence.",
191
+ "INCONCLUSIVE — the analysis could not determine a cause, or asserts one without supporting evidence.",
192
+ ].join("\n"),
193
+ },
194
+ {
195
+ role: "user",
196
+ content: [
197
+ "AI investigation analysis:",
198
+ '"""',
199
+ data.analysisMarkdown.substring(0, MAX_ANALYSIS_CHARS),
200
+ '"""',
201
+ "",
202
+ "One token only: CONFIDENT or INCONCLUSIVE.",
203
+ ].join("\n"),
204
+ },
205
+ ],
206
+ });
207
+ const verdict = this.parseClassificationToken(response.content);
208
+ if (verdict === null) {
209
+ logger.warn(`AI confidence: unparseable classification response for run ${data.aiRunId.toString()} — per-consumer fail directions apply.`);
210
+ return { confident: false, source: "classification-failed" };
211
+ }
212
+ return { confident: verdict, source: "classification" };
213
+ }
214
+ catch (error) {
215
+ logger.error(`AI confidence: classification call failed for run ${data.aiRunId.toString()} — per-consumer fail directions apply: ${error}`);
216
+ return { confident: false, source: "classification-failed" };
217
+ }
218
+ }
219
+ }
220
+ __decorate([
221
+ CaptureSpan(),
222
+ __metadata("design:type", Function),
223
+ __metadata("design:paramtypes", [Object]),
224
+ __metadata("design:returntype", Promise)
225
+ ], AIConfidenceSignal, "computeConfidenceSignal", null);
226
+ //# sourceMappingURL=ConfidenceSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfidenceSignal.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/SRE/ConfidenceSignal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
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 AIRunType from "../../../../Types/AI/AIRunType";
11
+ import AIRunStatus from "../../../../Types/AI/AIRunStatus";
12
+ import CodeFixTaskType from "../../../../Types/AI/CodeFixTaskType";
13
+ import BadDataException from "../../../../Types/Exception/BadDataException";
14
+ import AIRunService from "../../../Services/AIRunService";
15
+ import SubjectCodeFixRun from "./SubjectCodeFixRun";
16
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
17
+ /*
18
+ * AI SRE — the FixFromIncident trigger (the roadmap's headline `code_fix`
19
+ * capability, vision §4.8, in human-triggered form).
20
+ *
21
+ * After a AI investigation posts a root-cause analysis on an incident
22
+ * or alert, the user can click "Open Fix PR from this analysis" on the
23
+ * investigation panel: the agent takes the posted analysis (the RootCause
24
+ * feed item) as its entire context and opens a fix pull request. Unlike the
25
+ * ImproveInstrumentation sibling this is NOT automatic — a human reads the
26
+ * analysis and decides a fix PR is worth opening, so no project opt-in flag
27
+ * is needed: the human in the loop IS the gate (G11 posture preserved).
28
+ *
29
+ * And unlike InstrumentationTaskTrigger (fire-and-forget inside the
30
+ * investigation's postAnalysis, never throws), this runs inside a
31
+ * user-facing endpoint (POST /ai-investigation/create-fix-task) and FAILS
32
+ * EARLY with a clear message when a gate is not met.
33
+ */
34
+ export default class FixFromIncidentTaskTrigger {
35
+ /*
36
+ * Gate and enqueue a FixFromIncident CodeFix run for the subject. The
37
+ * caller must already have access-checked the subject under the USER's
38
+ * permissions — this method reads and writes as root. Exactly one of
39
+ * incidentId/alertId is expected; userId is the clicking user
40
+ * (attribution on the run).
41
+ *
42
+ * Throws BadDataException naming the failed gate: no completed
43
+ * investigation, no GitHub-App repository, or a duplicate active run.
44
+ */
45
+ static async createFixTaskFromInvestigation(data) {
46
+ if (!data.incidentId && !data.alertId) {
47
+ throw new BadDataException("An incident or alert subject is required to create a fix task.");
48
+ }
49
+ const subjectLabel = data.incidentId
50
+ ? "incident"
51
+ : "alert";
52
+ /*
53
+ * Gate 1: a COMPLETED investigation must exist for the subject — its
54
+ * posted analysis (the RootCause feed item) is the fix task's entire
55
+ * context. Without one the worker would have nothing to work from.
56
+ */
57
+ const completedInvestigation = await AIRunService.findOneBy({
58
+ query: Object.assign({ runType: AIRunType.Investigation, status: AIRunStatus.Completed }, (data.incidentId
59
+ ? { triggeredByIncidentId: data.incidentId }
60
+ : { triggeredByAlertId: data.alertId })),
61
+ select: { _id: true },
62
+ props: { isRoot: true },
63
+ });
64
+ if (!completedInvestigation) {
65
+ throw new BadDataException(`No completed AI investigation exists for this ${subjectLabel} — the fix task uses the investigation's posted analysis as its context. Wait for the investigation to complete, or enable AI investigations in the AI settings.`);
66
+ }
67
+ // Gate 2: a repository the agent can actually open a PR against.
68
+ const hasConnectedRepository = await SubjectCodeFixRun.hasGitHubAppConnectedRepository(data.projectId);
69
+ if (!hasConnectedRepository) {
70
+ throw new BadDataException("No GitHub-App-connected repository exists for this project, so the agent has nowhere to open the fix pull request. Connect one under AI > Code Repositories.");
71
+ }
72
+ /*
73
+ * Gate 3: per-subject dedupe — at most one non-terminal FixFromIncident
74
+ * run per incident/alert (repeated clicks must not fan out into
75
+ * duplicate PRs).
76
+ */
77
+ const existingRun = await SubjectCodeFixRun.findNonTerminalRunForSubject({
78
+ taskType: CodeFixTaskType.FixFromIncident,
79
+ incidentId: data.incidentId,
80
+ alertId: data.alertId,
81
+ });
82
+ if (existingRun) {
83
+ throw new BadDataException(`A fix pull request task is already queued or running for this ${subjectLabel}. Track its progress on the AI > Tasks page.`);
84
+ }
85
+ return SubjectCodeFixRun.enqueueSubjectCodeFixRun({
86
+ projectId: data.projectId,
87
+ taskType: CodeFixTaskType.FixFromIncident,
88
+ incidentId: data.incidentId,
89
+ alertId: data.alertId,
90
+ userId: data.userId,
91
+ });
92
+ }
93
+ }
94
+ __decorate([
95
+ CaptureSpan(),
96
+ __metadata("design:type", Function),
97
+ __metadata("design:paramtypes", [Object]),
98
+ __metadata("design:returntype", Promise)
99
+ ], FixFromIncidentTaskTrigger, "createFixTaskFromInvestigation", null);
100
+ //# sourceMappingURL=FixFromIncidentTaskTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixFromIncidentTaskTrigger.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAE5E,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,OAAO,0BAA0B;IAC7C;;;;;;;;;OASG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,IAKlD;QACC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,gBAAgB,CACxB,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAyB,IAAI,CAAC,UAAU;YACxD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,OAAO,CAAC;QAEZ;;;;WAIG;QACH,MAAM,sBAAsB,GAAiB,MAAM,YAAY,CAAC,SAAS,CAAC;YACxE,KAAK,kBACH,OAAO,EAAE,SAAS,CAAC,aAAa,EAChC,MAAM,EAAE,WAAW,CAAC,SAAS,IAC1B,CAAC,IAAI,CAAC,UAAU;gBACjB,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC5C,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAQ,EAAE,CAAC,CAC3C;YACD,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;YACrB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,MAAM,IAAI,gBAAgB,CACxB,iDAAiD,YAAY,kKAAkK,CAChO,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,MAAM,sBAAsB,GAC1B,MAAM,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1E,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,MAAM,IAAI,gBAAgB,CACxB,8JAA8J,CAC/J,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,MAAM,WAAW,GACf,MAAM,iBAAiB,CAAC,4BAA4B,CAAC;YACnD,QAAQ,EAAE,eAAe,CAAC,eAAe;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEL,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,iEAAiE,YAAY,8CAA8C,CAC5H,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC,wBAAwB,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,eAAe,CAAC,eAAe;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;CACF;AA3EqB;IADnB,WAAW,EAAE;;;;sEA2Eb"}
@@ -0,0 +1,174 @@
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 CodeFixTaskType from "../../../../Types/AI/CodeFixTaskType";
11
+ import BadDataException from "../../../../Types/Exception/BadDataException";
12
+ import SpanTreeAnalyzer from "../PerfEvidence/SpanTreeAnalyzer";
13
+ import SubjectCodeFixRun from "./SubjectCodeFixRun";
14
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
15
+ /*
16
+ * AI SRE — the FixPerformance trigger: from a slow trace, one click opens
17
+ * a performance-fix pull request grounded in the actual span-tree evidence.
18
+ *
19
+ * The gate that makes this recipe honest is DETERMINISTIC: the
20
+ * SpanTreeAnalyzer must find a mechanical performance pattern (N+1,
21
+ * dominant span, sequential-that-could-be-parallel) in the trace's spans,
22
+ * or the task is refused — the agent never goes hunting for "something
23
+ * slow" on vibes. Like FixFromIncident (b4) this is human-triggered from a
24
+ * user-facing endpoint (POST /ai-investigation/create-performance-fix-task),
25
+ * so there is no project opt-in flag — the human in the loop IS the gate —
26
+ * and every unmet gate FAILS EARLY with a clear message.
27
+ *
28
+ * The findings (plus best-effort service attribution and code.* locations
29
+ * for repository resolution) are serialized into AIRun.taskContext at
30
+ * enqueue time: ClickHouse span retention is short, so by the time the
31
+ * worker claims the run the spans may be gone. The stored evidence IS the
32
+ * task's context.
33
+ */
34
+ // Max code.* locations stored — mirrors the resolver's own candidate cap.
35
+ const MAX_CODE_LOCATIONS = 10;
36
+ export default class FixPerformanceTaskTrigger {
37
+ /*
38
+ * Collect code.filepath/code.function/code.lineno (and their newer
39
+ * semconv spellings) from the spans a finding implicates, so the
40
+ * task-details endpoint can attempt stack-trace-style repository
41
+ * resolution. Best-effort: most instrumentations do not stamp code
42
+ * attributes on client spans, and an empty result just means the
43
+ * resolver falls back to name-match / only-repository.
44
+ */
45
+ static collectCodeLocations(spans, findings) {
46
+ const implicatedSpanIds = new Set();
47
+ for (const finding of findings) {
48
+ for (const implicated of finding.implicatedSpans) {
49
+ implicatedSpanIds.add(implicated.spanId);
50
+ }
51
+ }
52
+ const locations = [];
53
+ const seenFilePaths = new Set();
54
+ for (const span of spans) {
55
+ if (!implicatedSpanIds.has(span.spanId) || !span.attributes) {
56
+ continue;
57
+ }
58
+ const filePath = span.attributes["code.filepath"] || span.attributes["code.file.path"];
59
+ if (!filePath || seenFilePaths.has(filePath)) {
60
+ continue;
61
+ }
62
+ seenFilePaths.add(filePath);
63
+ const functionName = span.attributes["code.function"] ||
64
+ span.attributes["code.function.name"];
65
+ const rawLineNumber = span.attributes["code.lineno"] || span.attributes["code.line.number"];
66
+ const lineNumber = rawLineNumber
67
+ ? parseInt(rawLineNumber, 10)
68
+ : NaN;
69
+ locations.push({
70
+ filePath,
71
+ functionName,
72
+ lineNumber: Number.isFinite(lineNumber) ? lineNumber : undefined,
73
+ });
74
+ if (locations.length >= MAX_CODE_LOCATIONS) {
75
+ break;
76
+ }
77
+ }
78
+ return locations;
79
+ }
80
+ /*
81
+ * Gate and enqueue a FixPerformance CodeFix run for a trace. The caller
82
+ * must already have loaded the spans under the USER's telemetry-read
83
+ * permissions (the access check) — this method reads and writes as root.
84
+ *
85
+ * Throws BadDataException naming the failed gate: no deterministic
86
+ * finding, no GitHub-App repository, or a duplicate active run for the
87
+ * same trace.
88
+ */
89
+ static async createPerformanceFixTaskFromTrace(data) {
90
+ if (!data.traceId) {
91
+ throw new BadDataException("A traceId is required to create a performance fix task.");
92
+ }
93
+ if (data.spans.length === 0) {
94
+ throw new BadDataException("This trace has no spans to analyze (or you do not have access to them).");
95
+ }
96
+ /*
97
+ * Gate 1 — the deterministic evidence gate, and the recipe's whole
98
+ * point: no mechanical pattern in the span tree means no fix task.
99
+ * This gate lives HERE, not in the findings entry point below: callers
100
+ * of that entry point (insight fix routing) hand over findings that
101
+ * were already computed — and gated on — at detect time.
102
+ */
103
+ const findings = SpanTreeAnalyzer.analyzeTrace(data.spans);
104
+ if (findings.length === 0) {
105
+ throw new BadDataException("No deterministic performance pattern was found in this trace. The analyzer looks for N+1 patterns (5+ near-identical sibling spans), a dominant slow span (60%+ of the trace), and sequential same-operation siblings that could run in parallel (3+, 50%+ of their parent) — none matched, so the AI agent has no grounded evidence to fix.");
106
+ }
107
+ return this.createPerformanceFixTaskFromFindings({
108
+ projectId: data.projectId,
109
+ traceId: data.traceId,
110
+ serviceName: data.serviceName,
111
+ findings,
112
+ codeLocations: this.collectCodeLocations(data.spans, findings),
113
+ userId: data.userId,
114
+ });
115
+ }
116
+ /*
117
+ * The findings-based entry point: gate and enqueue a FixPerformance run
118
+ * for ALREADY-COMPUTED deterministic findings (the spans path above after
119
+ * its analyzer gate, and AI insight fix routing whose findings were
120
+ * drilled — and stored as evidence — at detect time, because the spans
121
+ * are likely gone by now). `userId` is attribution for human-triggered
122
+ * callers; automatic triggers pass none and the run stays system-authored.
123
+ *
124
+ * Throws BadDataException naming the failed gate: no GitHub-App
125
+ * repository, a duplicate active run for the same trace, or (via
126
+ * enqueueSubjectCodeFixRun) the daily fix-run budget.
127
+ */
128
+ static async createPerformanceFixTaskFromFindings(data) {
129
+ if (!data.traceId) {
130
+ throw new BadDataException("A traceId is required to create a performance fix task.");
131
+ }
132
+ // Gate — a repository the agent can actually open a PR against.
133
+ const hasConnectedRepository = await SubjectCodeFixRun.hasGitHubAppConnectedRepository(data.projectId);
134
+ if (!hasConnectedRepository) {
135
+ throw new BadDataException("No GitHub-App-connected repository exists for this project, so the agent has nowhere to open the performance-fix pull request. Connect one under AI > Code Repositories.");
136
+ }
137
+ /*
138
+ * Gate — per-trace dedupe: at most one non-terminal FixPerformance
139
+ * run per trace (repeated clicks must not fan out into duplicate PRs).
140
+ */
141
+ const existingRun = await SubjectCodeFixRun.findNonTerminalPerformanceFixRunForTrace({
142
+ projectId: data.projectId,
143
+ traceId: data.traceId,
144
+ });
145
+ if (existingRun) {
146
+ throw new BadDataException("A performance fix task is already queued or running for this trace. Track its progress on the AI > Tasks page.");
147
+ }
148
+ const taskContext = {
149
+ traceId: data.traceId,
150
+ serviceName: data.serviceName,
151
+ performanceFindings: data.findings,
152
+ codeLocations: data.codeLocations,
153
+ };
154
+ return SubjectCodeFixRun.enqueueSubjectCodeFixRun({
155
+ projectId: data.projectId,
156
+ taskType: CodeFixTaskType.FixPerformance,
157
+ userId: data.userId,
158
+ taskContext,
159
+ });
160
+ }
161
+ }
162
+ __decorate([
163
+ CaptureSpan(),
164
+ __metadata("design:type", Function),
165
+ __metadata("design:paramtypes", [Object]),
166
+ __metadata("design:returntype", Promise)
167
+ ], FixPerformanceTaskTrigger, "createPerformanceFixTaskFromTrace", null);
168
+ __decorate([
169
+ CaptureSpan(),
170
+ __metadata("design:type", Function),
171
+ __metadata("design:paramtypes", [Object]),
172
+ __metadata("design:returntype", Promise)
173
+ ], FixPerformanceTaskTrigger, "createPerformanceFixTaskFromFindings", null);
174
+ //# sourceMappingURL=FixPerformanceTaskTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixPerformanceTaskTrigger.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts"],"names":[],"mappings":"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"}