@oneuptime/common 11.5.4 → 11.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +56 -45
  2. package/Models/DatabaseModels/AIInsight.ts +748 -0
  3. package/Models/DatabaseModels/AIRun.ts +262 -0
  4. package/Models/DatabaseModels/CodeRepository.ts +42 -0
  5. package/Models/DatabaseModels/GlobalConfig.ts +105 -0
  6. package/Models/DatabaseModels/Index.ts +4 -8
  7. package/Models/DatabaseModels/InstanceHealthLog.ts +277 -0
  8. package/Models/DatabaseModels/LlmLog.ts +33 -0
  9. package/Models/DatabaseModels/Project.ts +123 -6
  10. package/Models/DatabaseModels/Runbook.ts +1 -1
  11. package/Models/DatabaseModels/User.ts +47 -0
  12. package/Server/API/AIAgentDataAPI.ts +802 -140
  13. package/Server/API/AIAgentTaskAPI.ts +132 -69
  14. package/Server/API/AIAgentTaskLogAPI.ts +65 -41
  15. package/Server/API/AIAgentTaskPullRequestAPI.ts +41 -0
  16. package/Server/API/AIInsightAPI.ts +220 -0
  17. package/Server/API/AIInvestigationAPI.ts +363 -1
  18. package/Server/API/CodeFixRunAPI.ts +251 -0
  19. package/Server/API/GitHubAPI.ts +246 -3
  20. package/Server/API/TelemetryExceptionAPI.ts +193 -48
  21. package/Server/EnvironmentConfig.ts +1 -1
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.ts +26 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.ts +73 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.ts +29 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.ts +31 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.ts +51 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.ts +25 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.ts +47 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.ts +31 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.ts +37 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.ts +25 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.ts +75 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.ts +37 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.ts +203 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.ts +163 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.ts +23 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
  39. package/Server/Infrastructure/Queue.ts +82 -4
  40. package/Server/Infrastructure/Semaphore.ts +62 -1
  41. package/Server/Middleware/MasterAdminAuthorization.ts +37 -0
  42. package/Server/Middleware/ProjectAuthorization.ts +40 -15
  43. package/Server/Services/AIAgentService.ts +32 -0
  44. package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
  45. package/Server/Services/AIInsightService.ts +174 -0
  46. package/Server/Services/AIRunEventService.ts +63 -0
  47. package/Server/Services/AIRunService.ts +259 -1
  48. package/Server/Services/AIService.ts +249 -7
  49. package/Server/Services/AlertService.ts +4 -4
  50. package/Server/Services/CodeRepositoryService.ts +209 -0
  51. package/Server/Services/GlobalConfigService.ts +148 -0
  52. package/Server/Services/IncidentService.ts +183 -38
  53. package/Server/Services/IncidentStateTimelineService.ts +24 -4
  54. package/Server/Services/Index.ts +4 -4
  55. package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
  56. package/Server/Services/LlmLogService.ts +27 -0
  57. package/Server/Services/LlmProviderService.ts +108 -0
  58. package/Server/Services/MetricBaselineService.ts +123 -0
  59. package/Server/Services/MonitorService.ts +15 -0
  60. package/Server/Services/TeamMemberService.ts +2 -0
  61. package/Server/Services/TelemetryExceptionService.ts +323 -116
  62. package/Server/Services/TraceAggregationService.ts +176 -0
  63. package/Server/Services/UserService.ts +10 -0
  64. package/Server/Types/Workflow/ComponentCode.ts +6 -0
  65. package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
  66. package/Server/Types/Workflow/Components/Index.ts +2 -0
  67. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
  68. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
  69. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
  70. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
  71. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
  72. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
  73. package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
  74. package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
  75. package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
  76. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
  77. package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
  78. package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
  79. package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
  80. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
  81. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
  82. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
  83. package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
  84. package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
  85. package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
  86. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
  87. package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
  88. package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
  89. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
  90. package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
  91. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
  92. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
  93. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
  94. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
  95. package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
  96. package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
  97. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
  98. package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
  99. package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
  100. package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
  101. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
  102. package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
  103. package/Server/Utils/AI/Toolbox/Index.ts +2 -2
  104. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
  105. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
  106. package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
  107. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
  108. package/Server/Utils/Execute.ts +2 -1
  109. package/Server/Utils/LLM/LLMService.ts +160 -30
  110. package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
  111. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
  112. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +16 -6
  113. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +14 -0
  114. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +14 -3
  115. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +130 -12
  116. package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
  117. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
  118. package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
  119. package/Tests/Server/Services/AIInsightService.test.ts +324 -0
  120. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
  121. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
  122. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
  123. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
  124. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
  125. package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
  126. package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
  127. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
  128. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
  129. package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
  130. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
  131. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
  132. package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
  133. package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
  134. package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
  135. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
  136. package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
  137. package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
  138. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
  139. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
  140. package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
  141. package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
  142. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
  143. package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
  144. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
  145. package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
  146. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
  147. package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
  148. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
  149. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
  150. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
  151. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
  152. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
  153. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
  154. package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
  155. package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
  156. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
  157. package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
  158. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
  159. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
  160. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
  161. package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
  162. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
  163. package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
  164. package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
  165. package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
  166. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +553 -0
  167. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +590 -0
  168. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageFormatterUnits.test.ts +254 -0
  169. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +821 -0
  170. package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
  171. package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
  172. package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
  173. package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
  174. package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
  175. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
  176. package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
  177. package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
  178. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
  179. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
  180. package/Types/AI/AIChatTypes.ts +8 -0
  181. package/Types/AI/AIInsightEvidence.ts +77 -0
  182. package/Types/AI/AIInsightHumanVerdict.ts +15 -0
  183. package/Types/AI/AIInsightSeverity.ts +13 -0
  184. package/Types/AI/AIInsightStatus.ts +38 -0
  185. package/Types/AI/AIInsightType.ts +41 -0
  186. package/Types/AI/AIRunAutoGrade.ts +18 -0
  187. package/Types/AI/AIRunEventType.ts +5 -0
  188. package/Types/AI/AIRunHumanVerdict.ts +17 -0
  189. package/Types/AI/AIRunType.ts +6 -0
  190. package/Types/AI/CodeFixTaskContext.ts +88 -0
  191. package/Types/AI/CodeFixTaskType.ts +132 -0
  192. package/Types/AI/FixPullRequestCiStatus.ts +132 -0
  193. package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
  194. package/Types/Incident/IncidentMetricType.ts +7 -0
  195. package/Types/Monitor/CriteriaFilter.ts +8 -0
  196. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  197. package/Types/Monitor/MonitorStep.ts +38 -0
  198. package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
  199. package/Types/Monitor/MonitorType.ts +17 -0
  200. package/Types/Monitor/SqlDatabaseType.ts +49 -0
  201. package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
  202. package/Types/Permission.ts +11 -95
  203. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  204. package/Types/Runbook/RunbookStep.ts +26 -2
  205. package/Types/Runbook/RunbookStepType.ts +1 -0
  206. package/Types/Workflow/Component.ts +13 -0
  207. package/Types/Workflow/ComponentID.ts +1 -0
  208. package/Types/Workflow/Components/AI.ts +148 -0
  209. package/Types/Workflow/Components.ts +8 -0
  210. package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
  211. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
  212. package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
  213. package/UI/Components/Table/Table.tsx +38 -2
  214. package/UI/Utils/TableColumnsToCsv.ts +385 -0
  215. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  216. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
  217. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  218. package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
  219. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
  220. package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
  221. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  222. package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
  223. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  224. package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
  225. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  226. package/build/dist/Models/DatabaseModels/Index.js +4 -8
  227. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  228. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
  229. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
  230. package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
  231. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  232. package/build/dist/Models/DatabaseModels/Project.js +127 -6
  233. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  234. package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
  235. package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
  236. package/build/dist/Models/DatabaseModels/User.js +46 -0
  237. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  238. package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
  239. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  240. package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
  241. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  242. package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
  243. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  244. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
  245. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
  246. package/build/dist/Server/API/AIInsightAPI.js +140 -0
  247. package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
  248. package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
  249. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  250. package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
  251. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
  252. package/build/dist/Server/API/GitHubAPI.js +164 -2
  253. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  254. package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
  255. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  256. package/build/dist/Server/EnvironmentConfig.js +1 -1
  257. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
  260. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
  261. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
  262. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
  274. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
  275. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
  276. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
  277. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
  278. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
  279. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
  280. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
  281. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
  282. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
  283. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
  284. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
  285. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
  286. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
  287. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
  288. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js +18 -0
  289. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js.map +1 -0
  290. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -0
  291. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  292. package/build/dist/Server/Infrastructure/Queue.js +73 -3
  293. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  294. package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
  295. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  296. package/build/dist/Server/Middleware/MasterAdminAuthorization.js +26 -0
  297. package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
  298. package/build/dist/Server/Middleware/ProjectAuthorization.js +40 -14
  299. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  300. package/build/dist/Server/Services/AIAgentService.js +29 -0
  301. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  302. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
  303. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
  304. package/build/dist/Server/Services/AIInsightService.js +164 -0
  305. package/build/dist/Server/Services/AIInsightService.js.map +1 -0
  306. package/build/dist/Server/Services/AIRunEventService.js +49 -0
  307. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  308. package/build/dist/Server/Services/AIRunService.js +221 -0
  309. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  310. package/build/dist/Server/Services/AIService.js +198 -11
  311. package/build/dist/Server/Services/AIService.js.map +1 -1
  312. package/build/dist/Server/Services/AlertService.js +4 -4
  313. package/build/dist/Server/Services/AlertService.js.map +1 -1
  314. package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
  315. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  316. package/build/dist/Server/Services/GlobalConfigService.js +84 -0
  317. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  318. package/build/dist/Server/Services/IncidentService.js +149 -37
  319. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  320. package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
  321. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  322. package/build/dist/Server/Services/Index.js +4 -4
  323. package/build/dist/Server/Services/Index.js.map +1 -1
  324. package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
  325. package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
  326. package/build/dist/Server/Services/LlmLogService.js +23 -0
  327. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  328. package/build/dist/Server/Services/LlmProviderService.js +96 -0
  329. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  330. package/build/dist/Server/Services/MetricBaselineService.js +65 -0
  331. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  332. package/build/dist/Server/Services/MonitorService.js +9 -1
  333. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  334. package/build/dist/Server/Services/TeamMemberService.js +2 -0
  335. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  336. package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
  337. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  338. package/build/dist/Server/Services/TraceAggregationService.js +124 -0
  339. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  340. package/build/dist/Server/Services/UserService.js +8 -0
  341. package/build/dist/Server/Services/UserService.js.map +1 -1
  342. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  343. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
  344. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
  345. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  346. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  347. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
  348. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
  349. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
  350. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
  351. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
  352. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
  353. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
  354. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
  355. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
  356. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
  357. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
  358. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
  359. package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
  360. package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
  361. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
  362. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
  363. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
  364. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
  365. package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
  366. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
  367. package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
  368. package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
  370. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
  372. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
  373. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
  374. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
  375. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
  376. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
  377. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
  378. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
  379. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
  380. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
  381. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
  382. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
  383. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
  384. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
  385. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
  386. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
  387. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
  388. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
  389. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
  390. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
  391. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
  392. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
  393. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
  394. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
  395. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
  396. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
  397. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
  398. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
  399. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
  400. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
  401. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
  402. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
  403. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
  404. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
  405. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
  406. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
  407. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
  408. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
  409. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
  410. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
  411. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
  412. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
  413. package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
  414. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
  415. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
  416. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  417. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
  418. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
  419. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
  420. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  421. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
  422. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
  423. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
  424. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
  425. package/build/dist/Server/Utils/Execute.js.map +1 -1
  426. package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
  427. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  428. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
  429. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
  430. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
  431. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  432. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +15 -7
  433. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  434. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +12 -1
  435. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  436. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +8 -3
  437. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  438. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +96 -12
  439. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  440. package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
  441. package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
  442. package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
  443. package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
  444. package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
  445. package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
  446. package/build/dist/Types/AI/AIInsightStatus.js +36 -0
  447. package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
  448. package/build/dist/Types/AI/AIInsightType.js +42 -0
  449. package/build/dist/Types/AI/AIInsightType.js.map +1 -0
  450. package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
  451. package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
  452. package/build/dist/Types/AI/AIRunEventType.js +5 -0
  453. package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
  454. package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
  455. package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
  456. package/build/dist/Types/AI/AIRunType.js +6 -0
  457. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  458. package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
  459. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
  460. package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
  461. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
  462. package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
  463. package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
  464. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
  465. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  466. package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
  467. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  468. package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
  469. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  470. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  471. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  472. package/build/dist/Types/Monitor/MonitorStep.js +28 -0
  473. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  474. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
  475. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
  476. package/build/dist/Types/Monitor/MonitorType.js +15 -0
  477. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  478. package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
  479. package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
  480. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
  481. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
  482. package/build/dist/Types/Permission.js +10 -84
  483. package/build/dist/Types/Permission.js.map +1 -1
  484. package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
  485. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  486. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  487. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  488. package/build/dist/Types/Workflow/Components/AI.js +135 -0
  489. package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
  490. package/build/dist/Types/Workflow/Components.js +7 -0
  491. package/build/dist/Types/Workflow/Components.js.map +1 -1
  492. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
  493. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  494. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
  495. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  496. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
  497. package/build/dist/UI/Components/Table/Table.js +28 -2
  498. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  499. package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
  500. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
  501. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  502. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  503. package/package.json +1 -1
  504. package/Models/DatabaseModels/AIAgentTask.ts +0 -660
  505. package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
  506. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
  507. package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
  508. package/Server/Services/AIAgentTaskService.ts +0 -240
  509. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
  510. package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
  511. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
  512. package/Types/AI/AIAgentTaskMetadata.ts +0 -25
  513. package/Types/AI/AIAgentTaskType.ts +0 -40
  514. package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
  515. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
  516. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
  517. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
  518. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
  519. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
  520. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
  521. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
  522. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
  523. package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
  524. package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
  525. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
  526. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
  527. package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
  528. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
  529. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
  530. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
  531. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
  532. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
  533. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
  534. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
  535. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
  536. package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
  537. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
  538. package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
  539. package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
@@ -6,6 +6,9 @@ import FindBy from "../Types/Database/FindBy";
6
6
  import { OnCreate, OnDelete, OnFind, OnUpdate } from "../Types/Database/Hooks";
7
7
  import QueryHelper from "../Types/Database/QueryHelper";
8
8
  import DatabaseService from "./DatabaseService";
9
+ import AIRunService from "./AIRunService";
10
+ import AIRunType from "../../Types/AI/AIRunType";
11
+ import AIRunStatus from "../../Types/AI/AIRunStatus";
9
12
  import IncidentOwnerTeamService from "./IncidentOwnerTeamService";
10
13
  import IncidentOwnerUserService from "./IncidentOwnerUserService";
11
14
  import IncidentStateService from "./IncidentStateService";
@@ -84,7 +87,7 @@ import ProjectService from "./ProjectService";
84
87
  import IncidentTemplateService from "./IncidentTemplateService";
85
88
  import IncidentTemplate from "../../Models/DatabaseModels/IncidentTemplate";
86
89
  import AIService, { AILogResponse } from "./AIService";
87
- import SentinelIncidentInvestigationRunner from "../Utils/AI/Sentinel/IncidentInvestigationRunner";
90
+ import AIIncidentInvestigationRunner from "../Utils/AI/SRE/IncidentInvestigationRunner";
88
91
  import IncidentAIContextBuilder, {
89
92
  AIGenerationContext,
90
93
  IncidentContextData,
@@ -1239,21 +1242,21 @@ export class Service extends DatabaseService<Model> {
1239
1242
  })
1240
1243
  .then(async () => {
1241
1244
  /*
1242
- * Sentinel (AI SRE): automatically investigate the new incident and post
1245
+ * AI (AI SRE): automatically investigate the new incident and post
1243
1246
  * a cited root cause analysis to the incident timeline + Slack/Teams.
1244
1247
  * Runs last so the workspace channels already exist, and is gated per
1245
1248
  * project (opt-in) + requires a configured LLM provider. Read-only.
1246
1249
  */
1247
1250
  try {
1248
1251
  if (createdItem.projectId && createdItem.id) {
1249
- await SentinelIncidentInvestigationRunner.investigateNewIncident({
1252
+ await AIIncidentInvestigationRunner.investigateNewIncident({
1250
1253
  incidentId: createdItem.id,
1251
1254
  projectId: createdItem.projectId,
1252
1255
  });
1253
1256
  }
1254
1257
  } catch (error) {
1255
1258
  logger.error(
1256
- `Sentinel incident investigation failed in IncidentService.onCreateSuccess: ${error}`,
1259
+ `AI incident investigation failed in IncidentService.onCreateSuccess: ${error}`,
1257
1260
  {
1258
1261
  projectId: createdItem.projectId?.toString(),
1259
1262
  incidentId: createdItem.id?.toString(),
@@ -2795,14 +2798,23 @@ ${incidentSeverity.name}
2795
2798
  return Service.DEFAULT_METRIC_RETENTION_DAYS;
2796
2799
  }
2797
2800
 
2801
+ /*
2802
+ * Load the incident + its owners and build the attribute set shared by
2803
+ * every incident metric (all values strings for ClickHouse
2804
+ * Map(String, String) storage; arrays joined comma-separated). Factored
2805
+ * out of refreshIncidentMetrics so one-off metric writers — e.g. the
2806
+ * AI time-to-rca metric recorded when an investigation posts its
2807
+ * analysis — record the exact same attribute shape.
2808
+ */
2798
2809
  @CaptureSpan()
2799
- public async refreshIncidentMetrics(data: {
2810
+ public async getIncidentMetricContext(data: {
2800
2811
  incidentId: ObjectID;
2801
- }): Promise<void> {
2812
+ }): Promise<{ incident: Model; baseMetricAttributes: JSONObject }> {
2802
2813
  const incident: Model | null = await this.findOneById({
2803
2814
  id: data.incidentId,
2804
2815
  select: {
2805
2816
  projectId: true,
2817
+ createdAt: true,
2806
2818
  declaredAt: true,
2807
2819
  postmortemPostedAt: true,
2808
2820
  monitors: {
@@ -2898,6 +2910,161 @@ ${incidentSeverity.name}
2898
2910
  return Boolean(name);
2899
2911
  }) as Array<string>;
2900
2912
 
2913
+ /*
2914
+ * common attributes shared by all incident metrics
2915
+ * All values must be strings for ClickHouse Map(String, String) storage.
2916
+ * Arrays are joined as comma-separated strings.
2917
+ */
2918
+ const baseMetricAttributes: JSONObject = {
2919
+ incidentId: data.incidentId.toString(),
2920
+ projectId: incident.projectId.toString(),
2921
+ monitorIds: (
2922
+ incident.monitors
2923
+ ?.map((monitor: Monitor) => {
2924
+ return monitor._id?.toString();
2925
+ })
2926
+ .filter(Boolean) || []
2927
+ ).join(", "),
2928
+ monitorNames: (
2929
+ incident.monitors
2930
+ ?.map((monitor: Monitor) => {
2931
+ return monitor.name?.toString();
2932
+ })
2933
+ .filter(Boolean) || []
2934
+ ).join(", "),
2935
+ incidentSeverityId: incident.incidentSeverity?._id?.toString(),
2936
+ incidentSeverityName: incident.incidentSeverity?.name?.toString(),
2937
+ ownerUserIds: ownerUserIds.join(", "),
2938
+ ownerUserNames: ownerUserNames.join(", "),
2939
+ ownerTeamIds: ownerTeamIds.join(", "),
2940
+ ownerTeamNames: ownerTeamNames.join(", "),
2941
+ };
2942
+
2943
+ return { incident, baseMetricAttributes };
2944
+ }
2945
+
2946
+ /*
2947
+ * AI measurement layer: record how long the incident waited for its
2948
+ * AI root-cause analysis — seconds from incident creation to now, written
2949
+ * once from IncidentInvestigationRunner.postAnalysis. Deliberately NOT
2950
+ * part of refreshIncidentMetrics: the refresh's replace-list excludes
2951
+ * this metric name, so refreshes never tombstone it.
2952
+ */
2953
+ @CaptureSpan()
2954
+ public async recordTimeToRootCausePostedMetric(data: {
2955
+ incidentId: ObjectID;
2956
+ }): Promise<void> {
2957
+ const {
2958
+ incident,
2959
+ baseMetricAttributes,
2960
+ }: { incident: Model; baseMetricAttributes: JSONObject } =
2961
+ await this.getIncidentMetricContext({ incidentId: data.incidentId });
2962
+
2963
+ const now: Date = OneUptimeDate.getCurrentDate();
2964
+ const incidentCreatedAt: Date =
2965
+ incident.createdAt || incident.declaredAt || now;
2966
+
2967
+ const metricRetentionDays: number = await this.getMetricRetentionDays();
2968
+ const retentionDate: Date = OneUptimeDate.addRemoveDays(
2969
+ OneUptimeDate.getCurrentDate(),
2970
+ metricRetentionDays,
2971
+ );
2972
+
2973
+ const timeToRcaMetric: MutableMetric = new MutableMetric();
2974
+
2975
+ timeToRcaMetric.projectId = incident.projectId!;
2976
+ timeToRcaMetric.primaryEntityId = incident.id!;
2977
+ timeToRcaMetric.primaryEntityType = ServiceType.Incident;
2978
+ timeToRcaMetric.name = IncidentMetricType.TimeToRootCausePosted;
2979
+ timeToRcaMetric.metricPointId = IncidentMetricType.TimeToRootCausePosted;
2980
+ timeToRcaMetric.value = OneUptimeDate.getDifferenceInSeconds(
2981
+ now,
2982
+ incidentCreatedAt,
2983
+ );
2984
+ timeToRcaMetric.attributes = {
2985
+ ...baseMetricAttributes,
2986
+ // Every time-to-rca point is AI-posted by construction.
2987
+ aiInvestigated: "true",
2988
+ };
2989
+ timeToRcaMetric.attributeKeys = TelemetryUtil.getAttributeKeys(
2990
+ timeToRcaMetric.attributes,
2991
+ );
2992
+ timeToRcaMetric.time = now;
2993
+ timeToRcaMetric.timeUnixNano = OneUptimeDate.toUnixNano(now);
2994
+ timeToRcaMetric.metricPointType = MetricPointType.Sum;
2995
+ timeToRcaMetric.retentionDate = retentionDate;
2996
+
2997
+ await MutableMetricService.createMutableMetrics({
2998
+ metrics: [timeToRcaMetric],
2999
+ });
3000
+
3001
+ // Register the metric type so it shows up in the type catalog.
3002
+ const metricType: MetricType = new MetricType();
3003
+ metricType.name = IncidentMetricType.TimeToRootCausePosted;
3004
+ metricType.description =
3005
+ "Time from incident creation to the AI investigation's posted root-cause analysis";
3006
+ metricType.unit = "seconds";
3007
+
3008
+ TelemetryUtil.indexMetricNameServiceNameMap({
3009
+ metricNameServiceNameMap: {
3010
+ [IncidentMetricType.TimeToRootCausePosted]: metricType,
3011
+ },
3012
+ projectId: incident.projectId!,
3013
+ }).catch((err: Error) => {
3014
+ logger.error(err, {
3015
+ projectId: incident.projectId?.toString(),
3016
+ incidentId: incident.id?.toString(),
3017
+ } as LogAttributes);
3018
+ });
3019
+ }
3020
+
3021
+ @CaptureSpan()
3022
+ public async refreshIncidentMetrics(data: {
3023
+ incidentId: ObjectID;
3024
+ }): Promise<void> {
3025
+ const {
3026
+ incident,
3027
+ baseMetricAttributes,
3028
+ }: { incident: Model; baseMetricAttributes: JSONObject } =
3029
+ await this.getIncidentMetricContext({ incidentId: data.incidentId });
3030
+
3031
+ // getIncidentMetricContext guarantees this; re-checked for TS narrowing.
3032
+ if (!incident.projectId) {
3033
+ throw new BadDataException("Incident Project ID not found");
3034
+ }
3035
+
3036
+ /*
3037
+ * aiInvestigated dimension for MTTA/MTTR (AI measurement layer):
3038
+ * did a completed AI investigation run for this incident? One
3039
+ * indexed countBy per metric refresh (triggeredByIncidentId is indexed)
3040
+ * — acceptable at refresh frequency. Failure must never break metric
3041
+ * recording, so this is best-effort false.
3042
+ */
3043
+ let aiInvestigated: boolean = false;
3044
+ try {
3045
+ const completedInvestigationCount: PositiveNumber =
3046
+ await AIRunService.countBy({
3047
+ query: {
3048
+ runType: AIRunType.Investigation,
3049
+ status: AIRunStatus.Completed,
3050
+ triggeredByIncidentId: data.incidentId,
3051
+ },
3052
+ props: {
3053
+ isRoot: true,
3054
+ },
3055
+ });
3056
+
3057
+ aiInvestigated = completedInvestigationCount.toNumber() > 0;
3058
+ } catch (err) {
3059
+ logger.error(
3060
+ err as Error,
3061
+ {
3062
+ projectId: incident.projectId?.toString(),
3063
+ incidentId: incident.id?.toString(),
3064
+ } as LogAttributes,
3065
+ );
3066
+ }
3067
+
2901
3068
  // get incident state timeline
2902
3069
 
2903
3070
  const incidentStateTimelines: Array<IncidentStateTimeline> =
@@ -2973,36 +3140,6 @@ ${incidentSeverity.name}
2973
3140
 
2974
3141
  const metricTypesMap: Dictionary<MetricType> = {};
2975
3142
 
2976
- /*
2977
- * common attributes shared by all incident metrics
2978
- * All values must be strings for ClickHouse Map(String, String) storage.
2979
- * Arrays are joined as comma-separated strings.
2980
- */
2981
- const baseMetricAttributes: JSONObject = {
2982
- incidentId: data.incidentId.toString(),
2983
- projectId: incident.projectId.toString(),
2984
- monitorIds: (
2985
- incident.monitors
2986
- ?.map((monitor: Monitor) => {
2987
- return monitor._id?.toString();
2988
- })
2989
- .filter(Boolean) || []
2990
- ).join(", "),
2991
- monitorNames: (
2992
- incident.monitors
2993
- ?.map((monitor: Monitor) => {
2994
- return monitor.name?.toString();
2995
- })
2996
- .filter(Boolean) || []
2997
- ).join(", "),
2998
- incidentSeverityId: incident.incidentSeverity?._id?.toString(),
2999
- incidentSeverityName: incident.incidentSeverity?.name?.toString(),
3000
- ownerUserIds: ownerUserIds.join(", "),
3001
- ownerUserNames: ownerUserNames.join(", "),
3002
- ownerTeamIds: ownerTeamIds.join(", "),
3003
- ownerTeamNames: ownerTeamNames.join(", "),
3004
- };
3005
-
3006
3143
  const incidentCountMetric: MutableMetric = new MutableMetric();
3007
3144
 
3008
3145
  incidentCountMetric.projectId = incident.projectId;
@@ -3068,7 +3205,11 @@ ${incidentSeverity.name}
3068
3205
  OneUptimeDate.getCurrentDate(),
3069
3206
  incidentStartsAt,
3070
3207
  );
3071
- timeToAcknowledgeMetric.attributes = { ...baseMetricAttributes };
3208
+ // aiInvestigated: the MTTA with/without-AI dimension.
3209
+ timeToAcknowledgeMetric.attributes = {
3210
+ ...baseMetricAttributes,
3211
+ aiInvestigated: aiInvestigated.toString(),
3212
+ };
3072
3213
  timeToAcknowledgeMetric.attributeKeys =
3073
3214
  TelemetryUtil.getAttributeKeys(timeToAcknowledgeMetric.attributes);
3074
3215
 
@@ -3119,7 +3260,11 @@ ${incidentSeverity.name}
3119
3260
  OneUptimeDate.getCurrentDate(),
3120
3261
  incidentStartsAt,
3121
3262
  );
3122
- timeToResolveMetric.attributes = { ...baseMetricAttributes };
3263
+ // aiInvestigated: the MTTR with/without-AI dimension.
3264
+ timeToResolveMetric.attributes = {
3265
+ ...baseMetricAttributes,
3266
+ aiInvestigated: aiInvestigated.toString(),
3267
+ };
3123
3268
  timeToResolveMetric.attributeKeys = TelemetryUtil.getAttributeKeys(
3124
3269
  timeToResolveMetric.attributes,
3125
3270
  );
@@ -27,7 +27,8 @@ import IncidentRole from "../../Models/DatabaseModels/IncidentRole";
27
27
  import { IsBillingEnabled } from "../EnvironmentConfig";
28
28
  import logger, { LogAttributes } from "../Utils/Logger";
29
29
  import IncidentFeedService from "./IncidentFeedService";
30
- import SentinelIncidentPostmortemRunner from "../Utils/AI/Sentinel/IncidentPostmortemRunner";
30
+ import AIIncidentPostmortemRunner from "../Utils/AI/SRE/IncidentPostmortemRunner";
31
+ import InvestigationGrader from "../Utils/AI/SRE/InvestigationGrader";
31
32
  import { IncidentFeedEventType } from "../../Models/DatabaseModels/IncidentFeed";
32
33
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
33
34
  import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
@@ -558,14 +559,33 @@ ${createdItem.rootCause}`,
558
559
  }
559
560
 
560
561
  /*
561
- * Sentinel: auto-draft a postmortem now that the incident is resolved
562
+ * AI: auto-draft a postmortem now that the incident is resolved
562
563
  * (gated per project; never overwrites an existing postmortem).
563
564
  */
564
- SentinelIncidentPostmortemRunner.draftPostmortemOnResolve({
565
+ AIIncidentPostmortemRunner.draftPostmortemOnResolve({
565
566
  incidentId: createdItem.incidentId!,
566
567
  projectId: createdItem.projectId!,
567
568
  }).catch((error: Error) => {
568
- logger.error(`Sentinel auto-postmortem failed on resolve:`, {
569
+ logger.error(`AI auto-postmortem failed on resolve:`, {
570
+ projectId: createdItem.projectId?.toString(),
571
+ incidentId: createdItem.incidentId?.toString(),
572
+ } as LogAttributes);
573
+ logger.error(error, {
574
+ projectId: createdItem.projectId?.toString(),
575
+ incidentId: createdItem.incidentId?.toString(),
576
+ } as LogAttributes);
577
+ });
578
+
579
+ /*
580
+ * AI measurement layer: grade the completed investigation (if
581
+ * any) against the human-recorded root cause. Fire-and-forget like
582
+ * the postmortem draft above — must never block or fail the resolve.
583
+ */
584
+ InvestigationGrader.gradeInvestigationOnResolve({
585
+ incidentId: createdItem.incidentId!,
586
+ projectId: createdItem.projectId!,
587
+ }).catch((error: Error) => {
588
+ logger.error(`AI investigation grading failed on resolve:`, {
569
589
  projectId: createdItem.projectId?.toString(),
570
590
  incidentId: createdItem.incidentId?.toString(),
571
591
  } as LogAttributes);
@@ -13,6 +13,7 @@ import CallLogService from "./CallLogService";
13
13
  import CallService from "./CallService";
14
14
  import DataMigrationService from "./DataMigrationService";
15
15
  import MigrationFailureService from "./MigrationFailureService";
16
+ import InstanceHealthLogService from "./InstanceHealthLogService";
16
17
  import DomainService from "./DomainService";
17
18
  import EmailLogService from "./EmailLogService";
18
19
  import EmailVerificationTokenService from "./EmailVerificationTokenService";
@@ -81,6 +82,7 @@ import MonitorOwnerUserService from "./MonitorOwnerUserService";
81
82
  import MonitorProbeService from "./MonitorProbeService";
82
83
  import MonitorSecretService from "./MonitorSecretService";
83
84
  import RunbookSecretService from "./RunbookSecretService";
85
+ import AIInsightService from "./AIInsightService";
84
86
 
85
87
  // Monitors
86
88
  import MonitorService from "./MonitorService";
@@ -104,7 +106,6 @@ import ProbeService from "./ProbeService";
104
106
  import AIAgentService from "./AIAgentService";
105
107
  import AIAgentOwnerUserService from "./AIAgentOwnerUserService";
106
108
  import AIAgentOwnerTeamService from "./AIAgentOwnerTeamService";
107
- import AIAgentTaskLogService from "./AIAgentTaskLogService";
108
109
  import AIAgentTaskPullRequestService from "./AIAgentTaskPullRequestService";
109
110
  import ProjectCallSMSConfigService from "./ProjectCallSMSConfigService";
110
111
  import ProjectService from "./ProjectService";
@@ -137,7 +138,6 @@ import ScheduledMaintenanceStateTimelineService from "./ScheduledMaintenanceStat
137
138
  import ServiceOwnerTeamService from "./ServiceOwnerTeamService";
138
139
  import ServiceOwnerUserService from "./ServiceOwnerUserService";
139
140
  import ServiceService from "./ServiceService";
140
- import ServiceCodeRepositoryService from "./ServiceCodeRepositoryService";
141
141
  import ShortLinkService from "./ShortLinkService";
142
142
  // SMS Log Service
143
143
  import SmsLogService from "./SmsLogService";
@@ -282,6 +282,7 @@ const services: Array<BaseService> = [
282
282
 
283
283
  DataMigrationService,
284
284
  MigrationFailureService,
285
+ InstanceHealthLogService,
285
286
  DomainService,
286
287
 
287
288
  EmailLogService,
@@ -346,6 +347,7 @@ const services: Array<BaseService> = [
346
347
  MonitorStatusTimelineService,
347
348
  MonitorSecretService,
348
349
  RunbookSecretService,
350
+ AIInsightService,
349
351
  MonitorFeedService,
350
352
 
351
353
  NotificationService,
@@ -365,7 +367,6 @@ const services: Array<BaseService> = [
365
367
  AIAgentService,
366
368
  AIAgentOwnerUserService,
367
369
  AIAgentOwnerTeamService,
368
- AIAgentTaskLogService,
369
370
  AIAgentTaskPullRequestService,
370
371
  ProjectSsoService,
371
372
  ProjectOidcService,
@@ -456,7 +457,6 @@ const services: Array<BaseService> = [
456
457
  ServiceService,
457
458
  ServiceOwnerTeamService,
458
459
  ServiceOwnerUserService,
459
- ServiceCodeRepositoryService,
460
460
 
461
461
  TelemetryExceptionService,
462
462
  TelemetryEntityService,
@@ -1,5 +1,5 @@
1
1
  import DatabaseService from "./DatabaseService";
2
- import Model from "../../Models/DatabaseModels/AIAgentTaskLog";
2
+ import Model from "../../Models/DatabaseModels/InstanceHealthLog";
3
3
 
4
4
  export class Service extends DatabaseService<Model> {
5
5
  public constructor() {
@@ -35,6 +35,33 @@ export class Service extends DatabaseService<Model> {
35
35
 
36
36
  return Number(rows[0]?.total || 0);
37
37
  }
38
+
39
+ /*
40
+ * Per-run LLM usage for the server-mediated code-fix agent loop budgets
41
+ * (B4 Tier 0): how many completion calls a run has made and how many
42
+ * output tokens they produced. One SQL aggregate over the run's LlmLog
43
+ * rows — executeWithLogging writes exactly one row per call (success,
44
+ * error, or budget rejection), so the count is the honest call count and
45
+ * errored calls conservatively consume a slot. Runs are bounded to ~30
46
+ * minutes, far inside the 3-day cloud LlmLog retention.
47
+ */
48
+ @CaptureSpan()
49
+ public async getRunCompletionUsage(data: {
50
+ aiRunId: ObjectID;
51
+ }): Promise<{ completionCalls: number; outputTokens: number }> {
52
+ const rows: Array<{
53
+ calls: string | number | null;
54
+ outputTokens: string | number | null;
55
+ }> = await this.getRepository().manager.query(
56
+ `SELECT COUNT(*) AS "calls", COALESCE(SUM("completionTokens"), 0) AS "outputTokens" FROM "LlmLog" WHERE "aiRunId" = $1 AND "deletedAt" IS NULL`,
57
+ [data.aiRunId.toString()],
58
+ );
59
+
60
+ return {
61
+ completionCalls: Number(rows[0]?.calls || 0),
62
+ outputTokens: Number(rows[0]?.outputTokens || 0),
63
+ };
64
+ }
38
65
  }
39
66
 
40
67
  export default new Service();
@@ -157,6 +157,114 @@ export class Service extends DatabaseService<Model> {
157
157
  return null;
158
158
  }
159
159
 
160
+ /*
161
+ * Resolve a provider the project OWNS — never the global fallback.
162
+ * Callers that may also use the shared global provider layer that
163
+ * fallback themselves (see getLlmProviderForMeteredAgentPath). Prefers
164
+ * the project default, else any project-owned provider.
165
+ */
166
+ @CaptureSpan()
167
+ public async getProjectOwnedLlmProvider(
168
+ projectId: ObjectID,
169
+ ): Promise<Model | null> {
170
+ const select: {
171
+ _id: boolean;
172
+ name: boolean;
173
+ llmType: boolean;
174
+ apiKey: boolean;
175
+ baseUrl: boolean;
176
+ modelName: boolean;
177
+ additionalParams: boolean;
178
+ isGlobalLlm: boolean;
179
+ costPerMillionTokensInUSDCents: boolean;
180
+ } = {
181
+ _id: true,
182
+ name: true,
183
+ llmType: true,
184
+ apiKey: true,
185
+ baseUrl: true,
186
+ modelName: true,
187
+ additionalParams: true,
188
+ isGlobalLlm: true,
189
+ costPerMillionTokensInUSDCents: true,
190
+ };
191
+
192
+ const defaultProvider: Model | null = await this.findOneBy({
193
+ query: {
194
+ projectId: projectId,
195
+ isDefault: true,
196
+ },
197
+ select,
198
+ props: {
199
+ isRoot: true,
200
+ },
201
+ });
202
+
203
+ if (defaultProvider) {
204
+ return defaultProvider;
205
+ }
206
+
207
+ return this.findOneBy({
208
+ query: {
209
+ projectId: projectId,
210
+ },
211
+ sort: {
212
+ createdAt: SortOrder.Ascending,
213
+ },
214
+ select,
215
+ props: {
216
+ isRoot: true,
217
+ },
218
+ });
219
+ }
220
+
221
+ /*
222
+ * Resolve the provider for the METERED agent path (B4 Tier 0): the
223
+ * server-mediated /ai-agent-data/llm-completion endpoint, whose calls run
224
+ * through AIService.executeWithLogging — logged to LlmLog, billed when the
225
+ * global provider is costed, and inside the daily autonomous token budget.
226
+ *
227
+ * Because metering is universal on this path, a project-owned provider
228
+ * still wins, but when the project owns none the shared global provider
229
+ * is returned ON CLOUD TOO — its usage is billed as metered AI tokens.
230
+ * Cloud zero-config completes: fix tasks work with no per-project
231
+ * provider. (The old raw-key path — get-llm-config handing the provider
232
+ * apiKey to the worker for unmetered direct calls — is removed; this is
233
+ * the only agent provider resolution left.)
234
+ */
235
+ @CaptureSpan()
236
+ public async getLlmProviderForMeteredAgentPath(
237
+ projectId: ObjectID,
238
+ ): Promise<Model | null> {
239
+ const projectOwnedProvider: Model | null =
240
+ await this.getProjectOwnedLlmProvider(projectId);
241
+
242
+ if (projectOwnedProvider) {
243
+ return projectOwnedProvider;
244
+ }
245
+
246
+ return this.findOneBy({
247
+ query: {
248
+ projectId: QueryHelper.isNull(),
249
+ isGlobalLlm: true,
250
+ },
251
+ select: {
252
+ _id: true,
253
+ name: true,
254
+ llmType: true,
255
+ apiKey: true,
256
+ baseUrl: true,
257
+ modelName: true,
258
+ additionalParams: true,
259
+ isGlobalLlm: true,
260
+ costPerMillionTokensInUSDCents: true,
261
+ },
262
+ props: {
263
+ isRoot: true,
264
+ },
265
+ });
266
+ }
267
+
160
268
  /*
161
269
  * Resolve the provider to use for a chat turn. When the user has explicitly
162
270
  * chosen a provider (llmProviderId), use it — but only if it is actually