@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,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 OneUptimeDate from "../../../../Types/Date";
11
+ import BadDataException from "../../../../Types/Exception/BadDataException";
12
+ import AIRunStatus from "../../../../Types/AI/AIRunStatus";
13
+ import AIRunType from "../../../../Types/AI/AIRunType";
14
+ import AIRunService from "../../../Services/AIRunService";
15
+ import LlmLogService from "../../../Services/LlmLogService";
16
+ import LlmProviderService from "../../../Services/LlmProviderService";
17
+ import AIService, { AI_CODE_FIX_FEATURE, } from "../../../Services/AIService";
18
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
19
+ /*
20
+ * Server-mediated LLM completions for the in-house code-fix agent (B4 Tier
21
+ * 0, Internal/Roadmap/CodeFixSandboxDesign.md). The worker never holds a
22
+ * provider secret: every completion of its tool loop is executed HERE via
23
+ * AIService.executeWithLogging — logged to LlmLog, linked to the run, billed
24
+ * when the provider is the costed global one, and inside the G4 daily
25
+ * autonomous token budget.
26
+ *
27
+ * Loop budgets are enforced server-side per run, not trusted to the worker:
28
+ * a run gets at most MAX_COMPLETION_CALLS_PER_RUN completion calls and
29
+ * MAX_OUTPUT_TOKENS_PER_RUN output tokens. Usage is counted from the run's
30
+ * own LlmLog rows (one row per executeWithLogging call, success or error),
31
+ * so the count survives worker restarts and cannot be reset from outside
32
+ * the server.
33
+ */
34
+ // Max LLM completion calls one code-fix run may make.
35
+ export const MAX_COMPLETION_CALLS_PER_RUN = 40;
36
+ // Max output (completion) tokens one code-fix run may generate in total.
37
+ export const MAX_OUTPUT_TOKENS_PER_RUN = 100000;
38
+ // Per-call output cap — a single call can never exhaust the run budget.
39
+ export const MAX_TOKENS_PER_COMPLETION_CALL = 16384;
40
+ export default class CodeFixAgentCompletion {
41
+ /*
42
+ * The pure budget decision, separated from IO so it is directly testable
43
+ * (the FixRunBudget idiom).
44
+ */
45
+ static evaluateLoopBudget(data) {
46
+ if (data.completionCalls >= MAX_COMPLETION_CALLS_PER_RUN) {
47
+ return {
48
+ allowed: false,
49
+ reason: `This fix run has reached its LLM call budget (${data.completionCalls} of ${MAX_COMPLETION_CALLS_PER_RUN} completion calls). The run must finish with the work done so far.`,
50
+ };
51
+ }
52
+ if (data.outputTokens >= MAX_OUTPUT_TOKENS_PER_RUN) {
53
+ return {
54
+ allowed: false,
55
+ reason: `This fix run has reached its output-token budget (${data.outputTokens.toLocaleString()} of ${MAX_OUTPUT_TOKENS_PER_RUN.toLocaleString()} output tokens). The run must finish with the work done so far.`,
56
+ };
57
+ }
58
+ return { allowed: true, reason: null };
59
+ }
60
+ /*
61
+ * Validate the run, enforce the loop budgets, resolve the provider on the
62
+ * METERED path, and execute one completion. Throws BadDataException (4xx)
63
+ * with a clear message on every guard failure. The API route only does
64
+ * agent-key auth + body parsing around this.
65
+ */
66
+ static async execute(request) {
67
+ if (!request.messages || request.messages.length === 0) {
68
+ throw new BadDataException("messages must be a non-empty array");
69
+ }
70
+ /*
71
+ * The run must be a claimed, still-Running CodeFix run owned by THIS
72
+ * agent — a completion for someone else's run (or a finished one) is
73
+ * refused outright.
74
+ */
75
+ const run = await AIRunService.findOneById({
76
+ id: request.aiRunId,
77
+ select: {
78
+ _id: true,
79
+ projectId: true,
80
+ runType: true,
81
+ status: true,
82
+ aiAgentId: true,
83
+ },
84
+ props: {
85
+ isRoot: true,
86
+ },
87
+ });
88
+ if (!run || !run.projectId) {
89
+ throw new BadDataException("Task not found");
90
+ }
91
+ if (run.runType !== AIRunType.CodeFix) {
92
+ throw new BadDataException("LLM completions are only served for code-fix runs");
93
+ }
94
+ if (run.status !== AIRunStatus.Running) {
95
+ throw new BadDataException(`This task is not running (status: ${run.status}) — completions are only served for claimed, running tasks`);
96
+ }
97
+ if (!run.aiAgentId ||
98
+ run.aiAgentId.toString() !== request.aiAgentId.toString()) {
99
+ throw new BadDataException("This task is claimed by a different agent — completions are only served to the agent that claimed the run");
100
+ }
101
+ // Server-side loop budgets — counted from the run's own LlmLog rows.
102
+ const usage = await LlmLogService.getRunCompletionUsage({ aiRunId: request.aiRunId });
103
+ const budgetDecision = this.evaluateLoopBudget({
104
+ completionCalls: usage.completionCalls,
105
+ outputTokens: usage.outputTokens,
106
+ });
107
+ if (!budgetDecision.allowed) {
108
+ throw new BadDataException(budgetDecision.reason);
109
+ }
110
+ /*
111
+ * Metered-path provider resolution: project-owned first, else the global
112
+ * provider — on cloud too, because this call is executed through
113
+ * AIService.executeWithLogging and therefore billed/logged/budgeted.
114
+ * See getLlmProviderForMeteredAgentPath for the full rationale.
115
+ */
116
+ const llmProvider = await LlmProviderService.getLlmProviderForMeteredAgentPath(run.projectId);
117
+ if (!llmProvider || !llmProvider.id) {
118
+ throw new BadDataException("No LLM provider is available for this fix run. Add one in Project Settings > AI > LLM Providers. Self-hosted instances can alternatively set the GLOBAL_LLM_PROVIDER_* environment variables to register a global provider for every project.");
119
+ }
120
+ const maxTokens = request.maxTokens && request.maxTokens > 0
121
+ ? Math.min(request.maxTokens, MAX_TOKENS_PER_COMPLETION_CALL)
122
+ : MAX_TOKENS_PER_COMPLETION_CALL;
123
+ const response = await AIService.executeWithLogging({
124
+ projectId: run.projectId,
125
+ feature: AI_CODE_FIX_FEATURE,
126
+ aiRunId: request.aiRunId,
127
+ llmProviderId: llmProvider.id,
128
+ messages: request.messages,
129
+ tools: request.tools,
130
+ maxTokens: maxTokens,
131
+ /*
132
+ * Prompts embed customer source code, whose ACLs are narrower than
133
+ * LlmLog's project-wide readability — never store previews.
134
+ */
135
+ storeContentPreviews: false,
136
+ });
137
+ /*
138
+ * A completion call proves the worker is alive — refresh the heartbeat
139
+ * so long-thinking loops are not swept as stale (the task-log route does
140
+ * the same for progress logs).
141
+ */
142
+ await AIRunService.updateOneBy({
143
+ query: {
144
+ _id: request.aiRunId.toString(),
145
+ status: AIRunStatus.Running,
146
+ },
147
+ data: {
148
+ lastHeartbeatAt: OneUptimeDate.getCurrentDate(),
149
+ },
150
+ props: {
151
+ isRoot: true,
152
+ },
153
+ });
154
+ const toolCalls = response.toolCalls || [];
155
+ return {
156
+ content: response.content,
157
+ toolCalls: toolCalls,
158
+ stopReason: toolCalls.length > 0 ? "tool_use" : "stop",
159
+ budget: {
160
+ completionCallsUsed: usage.completionCalls + 1,
161
+ maxCompletionCalls: MAX_COMPLETION_CALLS_PER_RUN,
162
+ outputTokensUsed: usage.outputTokens + (response.llmLog.completionTokens || 0),
163
+ maxOutputTokens: MAX_OUTPUT_TOKENS_PER_RUN,
164
+ },
165
+ };
166
+ }
167
+ }
168
+ __decorate([
169
+ CaptureSpan(),
170
+ __metadata("design:type", Function),
171
+ __metadata("design:paramtypes", [Object]),
172
+ __metadata("design:returntype", Promise)
173
+ ], CodeFixAgentCompletion, "execute", null);
174
+ //# sourceMappingURL=CodeFixAgentCompletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeFixAgentCompletion.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
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 AIRunType from "../../../../Types/AI/AIRunType";
12
+ import AIRunStatus from "../../../../Types/AI/AIRunStatus";
13
+ import AIRunService from "../../../Services/AIRunService";
14
+ import AIAgentService from "../../../Services/AIAgentService";
15
+ import QueryHelper from "../../../Types/Database/QueryHelper";
16
+ import logger from "../../Logger";
17
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
18
+ /*
19
+ * Queue maintenance for CodeFix AIRuns — the runs an EXTERNAL agent
20
+ * container claims over HTTP (unlike investigations, which run in-process).
21
+ *
22
+ * Two failure modes need sweeping:
23
+ *
24
+ * 1. A Running run whose heartbeat went silent: the agent container died
25
+ * mid-fix. Unlike investigations these are NOT requeued — the agent
26
+ * may already have pushed a partial fix branch or opened a PR, so
27
+ * re-running the fix from the top is not safe to do automatically.
28
+ * The run is finalized as Error and the user retries explicitly.
29
+ *
30
+ * 2. A Queued run no agent ever picked up because none is online for its
31
+ * project: without this, the exception page would show "queued"
32
+ * forever and block retries (the duplicate guard sees a live run).
33
+ */
34
+ // How long a Queued run may wait for an agent before it is failed.
35
+ export const ORPHANED_QUEUED_TIMEOUT_MINUTES = 30;
36
+ // How many runs one sweep will look at.
37
+ const SWEEP_BATCH_SIZE = 100;
38
+ export default class CodeFixRunQueue {
39
+ /*
40
+ * Finalize a heartbeat-stale Running code-fix run as Error. CAS-guarded
41
+ * on Running, so a run that completed between the sweeper's read and this
42
+ * write is never clobbered. Deliberately never requeues — see above.
43
+ */
44
+ static async markStaleRunAsError(run) {
45
+ await AIRunService.attemptStatusTransition({
46
+ aiRunId: run.id,
47
+ fromStatus: AIRunStatus.Running,
48
+ set: {
49
+ status: AIRunStatus.Error,
50
+ completedAt: OneUptimeDate.getCurrentDate(),
51
+ errorMessage: "The AI agent working on this fix stopped reporting progress — its container may have crashed or been terminated. The fix was not retried automatically because the agent may already have pushed a partial branch. Check the agent container, then retry the fix from the exception page.",
52
+ },
53
+ });
54
+ }
55
+ /*
56
+ * Fail Queued code-fix runs that have waited past the timeout while their
57
+ * project has no alive agent to pick them up. A project WITH an alive
58
+ * agent just has a deep queue — its runs are left alone.
59
+ */
60
+ static async failOrphanedQueuedRuns() {
61
+ var _a, _b;
62
+ const waitThreshold = OneUptimeDate.getSomeMinutesAgo(ORPHANED_QUEUED_TIMEOUT_MINUTES);
63
+ const waitingRuns = await AIRunService.findBy({
64
+ query: {
65
+ runType: AIRunType.CodeFix,
66
+ status: AIRunStatus.Queued,
67
+ createdAt: QueryHelper.lessThan(waitThreshold),
68
+ },
69
+ select: {
70
+ _id: true,
71
+ projectId: true,
72
+ },
73
+ limit: SWEEP_BATCH_SIZE,
74
+ skip: 0,
75
+ props: {
76
+ isRoot: true,
77
+ },
78
+ });
79
+ if (waitingRuns.length === 0) {
80
+ return;
81
+ }
82
+ // One alive-agent lookup per project, not per run.
83
+ const projectHasAliveAgent = new Map();
84
+ for (const run of waitingRuns) {
85
+ if (!run.projectId) {
86
+ continue;
87
+ }
88
+ const projectIdStr = run.projectId.toString();
89
+ if (!projectHasAliveAgent.has(projectIdStr)) {
90
+ const aliveAgent = await AIAgentService.getConnectedAIAgentForProject(run.projectId);
91
+ projectHasAliveAgent.set(projectIdStr, Boolean(aliveAgent));
92
+ }
93
+ if (projectHasAliveAgent.get(projectIdStr)) {
94
+ continue;
95
+ }
96
+ try {
97
+ await AIRunService.attemptStatusTransition({
98
+ aiRunId: run.id,
99
+ fromStatus: AIRunStatus.Queued,
100
+ set: {
101
+ status: AIRunStatus.Error,
102
+ completedAt: OneUptimeDate.getCurrentDate(),
103
+ errorMessage: `No AI agent picked this task up within ${ORPHANED_QUEUED_TIMEOUT_MINUTES} minutes and none is currently online. Check that your agent container is running (Settings > AI > AI Agents), then retry the fix from the exception page.`,
104
+ },
105
+ });
106
+ logger.info(`Failed orphaned Queued code-fix run ${(_a = run.id) === null || _a === void 0 ? void 0 : _a.toString()} (no alive agent for project ${projectIdStr})`);
107
+ }
108
+ catch (error) {
109
+ logger.error(`Failed to mark orphaned code-fix run ${(_b = run.id) === null || _b === void 0 ? void 0 : _b.toString()} as Error: ${error}`);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ __decorate([
115
+ CaptureSpan(),
116
+ __metadata("design:type", Function),
117
+ __metadata("design:paramtypes", [Object]),
118
+ __metadata("design:returntype", Promise)
119
+ ], CodeFixRunQueue, "markStaleRunAsError", null);
120
+ __decorate([
121
+ CaptureSpan(),
122
+ __metadata("design:type", Function),
123
+ __metadata("design:paramtypes", []),
124
+ __metadata("design:returntype", Promise)
125
+ ], CodeFixRunQueue, "failOrphanedQueuedRuns", null);
126
+ //# sourceMappingURL=CodeFixRunQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeFixRunQueue.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/CodeFix/CodeFixRunQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
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 ObjectID from "../../../../Types/ObjectID";
11
+ import AIRunType from "../../../../Types/AI/AIRunType";
12
+ import BadDataException from "../../../../Types/Exception/BadDataException";
13
+ import OneUptimeDate from "../../../../Types/Date";
14
+ import ProjectService from "../../../Services/ProjectService";
15
+ import AIRunService from "../../../Services/AIRunService";
16
+ import QueryHelper from "../../../Types/Database/QueryHelper";
17
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
18
+ /*
19
+ * Per-project daily fix-run budget (Preventive-lane X guardrail, G11).
20
+ *
21
+ * Every CodeFix AIRun — regardless of recipe or trigger — counts against
22
+ * one per-project daily cap: `Project.aiDailyFixTaskLimit` fix runs per UTC
23
+ * day (null/unset = the default below, 0 = fix tasks paused — the same
24
+ * semantics as `aiDailyAutonomousTokenLimit`). The cap bounds the blast
25
+ * radius of ANY runaway trigger: a click-happy user, a buggy automation, or
26
+ * a future auto-created-fix fan-out can never open more than the budget's
27
+ * worth of agent runs (and therefore PRs) in a day.
28
+ *
29
+ * Enforced centrally at BOTH creation paths:
30
+ * - TelemetryExceptionService.createCodeFixRunForException (the
31
+ * exception-page recipes: FixException, WriteRegressionTest)
32
+ * - SubjectCodeFixRun.enqueueSubjectCodeFixRun (every subject/perf
33
+ * recipe: ImproveInstrumentation, FixFromIncident, FixPerformance)
34
+ *
35
+ * User-triggered paths surface the rejection as a clear BadDataException;
36
+ * the automatic instrumentation trigger pre-checks the budget and treats
37
+ * over-budget as a logged skip (it must never throw into an investigation).
38
+ */
39
+ // Fix runs allowed per project per UTC day when no explicit limit is set.
40
+ export const DEFAULT_DAILY_FIX_RUN_LIMIT = 25;
41
+ export default class FixRunBudget {
42
+ /*
43
+ * The pure budget decision, separated from IO so it can be tested
44
+ * directly. Null/undefined means "use the default cap" — unlike the
45
+ * token budget, an unset fix-task limit is NOT unlimited: fix runs fan
46
+ * out into pull requests on customer repositories, so they always ship
47
+ * with a ceiling. 0 (or negative) pauses fix tasks entirely.
48
+ */
49
+ static evaluate(data) {
50
+ const limit = data.configuredLimit === null || data.configuredLimit === undefined
51
+ ? DEFAULT_DAILY_FIX_RUN_LIMIT
52
+ : data.configuredLimit;
53
+ if (limit <= 0) {
54
+ return {
55
+ allowed: false,
56
+ limit,
57
+ paused: true,
58
+ runsToday: data.runsToday,
59
+ };
60
+ }
61
+ return {
62
+ allowed: data.runsToday < limit,
63
+ limit,
64
+ paused: false,
65
+ runsToday: data.runsToday,
66
+ };
67
+ }
68
+ /*
69
+ * Read the project's limit and count the CodeFix AIRuns created since
70
+ * UTC midnight — ALL of them, regardless of status or recipe: a run that
71
+ * errored still spent agent/LLM effort and still counts against the day.
72
+ */
73
+ static async getBudgetStatus(projectId) {
74
+ var _a;
75
+ const project = await ProjectService.findOneById({
76
+ id: projectId,
77
+ select: { aiDailyFixTaskLimit: true },
78
+ props: { isRoot: true },
79
+ });
80
+ const configuredLimit = (_a = project === null || project === void 0 ? void 0 : project.aiDailyFixTaskLimit) !== null && _a !== void 0 ? _a : null;
81
+ // Paused short-circuits the count query (mirrors the token budget).
82
+ const pausedCheck = this.evaluate({
83
+ configuredLimit,
84
+ runsToday: 0,
85
+ });
86
+ if (pausedCheck.paused) {
87
+ return pausedCheck;
88
+ }
89
+ const runsToday = (await AIRunService.countBy({
90
+ query: {
91
+ projectId,
92
+ runType: AIRunType.CodeFix,
93
+ createdAt: QueryHelper.greaterThanEqualTo(OneUptimeDate.getStartOfDay(OneUptimeDate.getCurrentDate(), "UTC")),
94
+ },
95
+ props: { isRoot: true },
96
+ })).toNumber();
97
+ return this.evaluate({ configuredLimit, runsToday });
98
+ }
99
+ // Human-readable rejection naming the cap and the setting that controls it.
100
+ static describeRejection(decision) {
101
+ if (decision.paused) {
102
+ return `AI fix tasks are paused for this project — the "Daily AI Fix Task Limit" is set to 0. Raise or unset the limit in the AI settings pages (Settings > Incidents/Alerts > AI) to resume.`;
103
+ }
104
+ return `The project's daily AI fix task limit has been reached (${decision.runsToday} of ${decision.limit} fix tasks created today, UTC). New fix tasks can be created tomorrow — or raise the "Daily AI Fix Task Limit" in the AI settings pages (unset means the default of ${DEFAULT_DAILY_FIX_RUN_LIMIT}/day).`;
105
+ }
106
+ /*
107
+ * Throw a clear BadDataException when the project is over its daily
108
+ * fix-run budget — the enforcement call both creation paths make before
109
+ * a CodeFix AIRun row is written.
110
+ */
111
+ static async assertWithinBudget(projectId) {
112
+ const decision = await this.getBudgetStatus(projectId);
113
+ if (decision.allowed) {
114
+ return;
115
+ }
116
+ throw new BadDataException(this.describeRejection(decision));
117
+ }
118
+ }
119
+ __decorate([
120
+ CaptureSpan(),
121
+ __metadata("design:type", Function),
122
+ __metadata("design:paramtypes", [ObjectID]),
123
+ __metadata("design:returntype", Promise)
124
+ ], FixRunBudget, "getBudgetStatus", null);
125
+ __decorate([
126
+ CaptureSpan(),
127
+ __metadata("design:type", Function),
128
+ __metadata("design:paramtypes", [ObjectID]),
129
+ __metadata("design:returntype", Promise)
130
+ ], FixRunBudget, "assertWithinBudget", null);
131
+ //# sourceMappingURL=FixRunBudget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixRunBudget.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/CodeFix/FixRunBudget.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAClD,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAC5E,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAEnD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAW,EAAE,CAAC;AAYtD,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B;;;;;;OAMG;IACI,MAAM,CAAC,QAAQ,CAAC,IAGtB;QACC,MAAM,KAAK,GACT,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YACjE,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAE3B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK;gBACL,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK;YAC/B,KAAK;YACL,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe,CACjC,SAAmB;;QAEnB,MAAM,OAAO,GAAmB,MAAM,cAAc,CAAC,WAAW,CAAC;YAC/D,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE;YACrC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAkB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,mCAAI,IAAI,CAAC;QAE5E,oEAAoE;QACpE,MAAM,WAAW,GAAyB,IAAI,CAAC,QAAQ,CAAC;YACtD,eAAe;YACf,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAW,CACxB,MAAM,YAAY,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE;gBACL,SAAS;gBACT,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS,EAAE,WAAW,CAAC,kBAAkB,CACvC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CACnE;aACF;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,iBAAiB,CAAC,QAA8B;QAC5D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,uLAAuL,CAAC;QACjM,CAAC;QAED,OAAO,2DAA2D,QAAQ,CAAC,SAAS,OAAO,QAAQ,CAAC,KAAK,uKAAuK,2BAA2B,QAAQ,CAAC;IACtT,CAAC;IAED;;;;OAIG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAmB;QACxD,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AA9DqB;IADnB,WAAW,EAAE;;qCAED,QAAQ;;yCAkCpB;AAiBmB;IADnB,WAAW,EAAE;;qCACoC,QAAQ;;4CASzD"}
@@ -0,0 +1,99 @@
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 PullRequestState from "../../../../Types/CodeRepository/PullRequestState";
11
+ import AIAgentTaskPullRequestService from "../../../Services/AIAgentTaskPullRequestService";
12
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
13
+ /*
14
+ * Per-repository open-PR cap (Preventive-lane X guardrail, G11).
15
+ *
16
+ * A repository may have at most `CodeRepository.maxOpenFixPullRequests`
17
+ * OPEN AI-authored fix pull requests at a time (null/unset = the default
18
+ * below, 0 = no AI fix PRs for this repository). Open-PR counts come from
19
+ * AIAgentTaskPullRequest rows, whose states the AIAgent:SyncPullRequestStates
20
+ * worker keeps current — merging or closing an AI PR frees a slot within
21
+ * its 30-minute sync window.
22
+ *
23
+ * Enforced SERVER-SIDE at the repository-token gate
24
+ * (/ai-agent-data/get-repository-token): the agent worker cannot clone or
25
+ * push without an installation token, so a repo at its cap is physically
26
+ * unable to receive another AI branch or PR — no token, no push. The
27
+ * worker surfaces the rejection message as the run's failure guidance.
28
+ */
29
+ // Open AI fix PRs allowed per repository when no explicit cap is set.
30
+ export const DEFAULT_MAX_OPEN_FIX_PULL_REQUESTS = 5;
31
+ export default class OpenPullRequestCap {
32
+ /*
33
+ * The pure cap decision, separated from IO so it can be tested directly.
34
+ * At/over the cap rejects: `openCount >= limit` means the repository
35
+ * already carries a full review queue of unreviewed AI PRs.
36
+ */
37
+ static evaluate(data) {
38
+ const limit = data.configuredLimit === null || data.configuredLimit === undefined
39
+ ? DEFAULT_MAX_OPEN_FIX_PULL_REQUESTS
40
+ : data.configuredLimit;
41
+ if (limit <= 0) {
42
+ return {
43
+ allowed: false,
44
+ limit,
45
+ paused: true,
46
+ openCount: data.openCount,
47
+ };
48
+ }
49
+ return {
50
+ allowed: data.openCount < limit,
51
+ limit,
52
+ paused: false,
53
+ openCount: data.openCount,
54
+ };
55
+ }
56
+ /*
57
+ * Count the repository's Open AI fix PRs and decide against its cap.
58
+ * The count is by codeRepositoryId (states maintained by the
59
+ * SyncPullRequestStates worker).
60
+ */
61
+ static async checkForRepository(data) {
62
+ // A blocked repo (cap 0) never needs the count query.
63
+ const pausedCheck = this.evaluate({
64
+ configuredLimit: data.configuredLimit,
65
+ openCount: 0,
66
+ });
67
+ if (pausedCheck.paused) {
68
+ return pausedCheck;
69
+ }
70
+ const openCount = (await AIAgentTaskPullRequestService.countBy({
71
+ query: {
72
+ codeRepositoryId: data.codeRepositoryId,
73
+ pullRequestState: PullRequestState.Open,
74
+ },
75
+ props: { isRoot: true },
76
+ })).toNumber();
77
+ return this.evaluate({
78
+ configuredLimit: data.configuredLimit,
79
+ openCount,
80
+ });
81
+ }
82
+ /*
83
+ * Human-readable rejection naming the cap and the setting that controls
84
+ * it — the agent worker records this as the run's failure guidance.
85
+ */
86
+ static describeRejection(data) {
87
+ if (data.decision.paused) {
88
+ return `AI fix pull requests are blocked for repository ${data.repositoryName} — its "Max Open Fix Pull Requests" setting is 0. Raise or unset the setting on the repository's Settings page to allow AI fix pull requests again.`;
89
+ }
90
+ return `Repository ${data.repositoryName} is at its open AI fix pull request cap (${data.decision.openCount} open of a maximum ${data.decision.limit}). Review and merge or close the open AI pull requests to free a slot, or raise the "Max Open Fix Pull Requests" setting on the repository's Settings page (unset means the default of ${DEFAULT_MAX_OPEN_FIX_PULL_REQUESTS}).`;
91
+ }
92
+ }
93
+ __decorate([
94
+ CaptureSpan(),
95
+ __metadata("design:type", Function),
96
+ __metadata("design:paramtypes", [Object]),
97
+ __metadata("design:returntype", Promise)
98
+ ], OpenPullRequestCap, "checkForRepository", null);
99
+ //# sourceMappingURL=OpenPullRequestCap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenPullRequestCap.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/CodeFix/OpenPullRequestCap.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AACjF,OAAO,6BAA6B,MAAM,iDAAiD,CAAC;AAC5F,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,kCAAkC,GAAW,CAAC,CAAC;AAW5D,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,IAGtB;QACC,MAAM,KAAK,GACT,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YACjE,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAE3B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK;gBACL,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK;YAC/B,KAAK;YACL,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAGtC;QACC,sDAAsD;QACtD,MAAM,WAAW,GAA+B,IAAI,CAAC,QAAQ,CAAC;YAC5D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAW,CACxB,MAAM,6BAA6B,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI;aACxC;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,iBAAiB,CAAC,IAG/B;QACC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,mDAAmD,IAAI,CAAC,cAAc,qJAAqJ,CAAC;QACrO,CAAC;QAED,OAAO,cAAc,IAAI,CAAC,cAAc,4CAA4C,IAAI,CAAC,QAAQ,CAAC,SAAS,sBAAsB,IAAI,CAAC,QAAQ,CAAC,KAAK,0LAA0L,kCAAkC,IAAI,CAAC;IACvX,CAAC;CACF;AA5CqB;IADnB,WAAW,EAAE;;;;kDA6Bb"}