@oneuptime/common 11.5.4 → 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 (505) 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/Server/API/AIAgentDataAPI.ts +802 -140
  12. package/Server/API/AIAgentTaskAPI.ts +132 -69
  13. package/Server/API/AIAgentTaskLogAPI.ts +65 -41
  14. package/Server/API/AIAgentTaskPullRequestAPI.ts +41 -0
  15. package/Server/API/AIInsightAPI.ts +220 -0
  16. package/Server/API/AIInvestigationAPI.ts +363 -1
  17. package/Server/API/CodeFixRunAPI.ts +251 -0
  18. package/Server/API/GitHubAPI.ts +246 -3
  19. package/Server/API/TelemetryExceptionAPI.ts +193 -48
  20. package/Server/EnvironmentConfig.ts +1 -1
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.ts +26 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.ts +73 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.ts +29 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.ts +31 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.ts +51 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.ts +25 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.ts +47 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.ts +53 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.ts +31 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.ts +37 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.ts +25 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.ts +75 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.ts +37 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.ts +203 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.ts +163 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +30 -0
  37. package/Server/Infrastructure/Queue.ts +82 -4
  38. package/Server/Infrastructure/Semaphore.ts +62 -1
  39. package/Server/Services/AIAgentService.ts +32 -0
  40. package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
  41. package/Server/Services/AIInsightService.ts +174 -0
  42. package/Server/Services/AIRunEventService.ts +63 -0
  43. package/Server/Services/AIRunService.ts +259 -1
  44. package/Server/Services/AIService.ts +249 -7
  45. package/Server/Services/AlertService.ts +4 -4
  46. package/Server/Services/CodeRepositoryService.ts +209 -0
  47. package/Server/Services/GlobalConfigService.ts +148 -0
  48. package/Server/Services/IncidentService.ts +183 -38
  49. package/Server/Services/IncidentStateTimelineService.ts +24 -4
  50. package/Server/Services/Index.ts +4 -4
  51. package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
  52. package/Server/Services/LlmLogService.ts +27 -0
  53. package/Server/Services/LlmProviderService.ts +108 -0
  54. package/Server/Services/MetricBaselineService.ts +123 -0
  55. package/Server/Services/MonitorService.ts +15 -0
  56. package/Server/Services/TelemetryExceptionService.ts +323 -116
  57. package/Server/Services/TraceAggregationService.ts +176 -0
  58. package/Server/Types/Workflow/ComponentCode.ts +6 -0
  59. package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
  60. package/Server/Types/Workflow/Components/Index.ts +2 -0
  61. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
  62. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
  63. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
  64. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
  65. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
  66. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
  67. package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
  68. package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
  69. package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
  70. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
  71. package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
  72. package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
  73. package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
  74. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
  75. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
  76. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
  77. package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
  78. package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
  79. package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
  80. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
  81. package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
  82. package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
  83. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
  84. package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
  85. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
  86. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
  87. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
  88. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
  89. package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
  90. package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
  91. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
  92. package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
  93. package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
  94. package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
  95. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
  96. package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
  97. package/Server/Utils/AI/Toolbox/Index.ts +2 -2
  98. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
  99. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
  100. package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
  101. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
  102. package/Server/Utils/Execute.ts +2 -1
  103. package/Server/Utils/LLM/LLMService.ts +160 -30
  104. package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
  105. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
  106. package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
  107. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
  108. package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
  109. package/Tests/Server/Services/AIInsightService.test.ts +324 -0
  110. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
  111. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
  112. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
  113. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
  114. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
  115. package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
  116. package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
  117. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
  118. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
  119. package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
  120. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
  121. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
  122. package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
  123. package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
  124. package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
  125. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
  126. package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
  127. package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
  128. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
  129. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
  130. package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
  131. package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
  132. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
  133. package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
  134. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
  135. package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
  136. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
  137. package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
  138. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
  139. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
  140. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
  141. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
  142. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
  143. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
  144. package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
  145. package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
  146. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
  147. package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
  148. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
  149. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
  150. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
  151. package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
  152. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
  153. package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
  154. package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
  155. package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
  156. package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
  157. package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
  158. package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
  159. package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
  160. package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
  161. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
  162. package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
  163. package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
  164. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
  165. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
  166. package/Types/AI/AIChatTypes.ts +8 -0
  167. package/Types/AI/AIInsightEvidence.ts +77 -0
  168. package/Types/AI/AIInsightHumanVerdict.ts +15 -0
  169. package/Types/AI/AIInsightSeverity.ts +13 -0
  170. package/Types/AI/AIInsightStatus.ts +38 -0
  171. package/Types/AI/AIInsightType.ts +41 -0
  172. package/Types/AI/AIRunAutoGrade.ts +18 -0
  173. package/Types/AI/AIRunEventType.ts +5 -0
  174. package/Types/AI/AIRunHumanVerdict.ts +17 -0
  175. package/Types/AI/AIRunType.ts +6 -0
  176. package/Types/AI/CodeFixTaskContext.ts +88 -0
  177. package/Types/AI/CodeFixTaskType.ts +132 -0
  178. package/Types/AI/FixPullRequestCiStatus.ts +132 -0
  179. package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
  180. package/Types/Incident/IncidentMetricType.ts +7 -0
  181. package/Types/Monitor/CriteriaFilter.ts +8 -0
  182. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  183. package/Types/Monitor/MonitorStep.ts +38 -0
  184. package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
  185. package/Types/Monitor/MonitorType.ts +17 -0
  186. package/Types/Monitor/SqlDatabaseType.ts +49 -0
  187. package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
  188. package/Types/Permission.ts +11 -95
  189. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  190. package/Types/Runbook/RunbookStep.ts +26 -2
  191. package/Types/Runbook/RunbookStepType.ts +1 -0
  192. package/Types/Workflow/Component.ts +13 -0
  193. package/Types/Workflow/ComponentID.ts +1 -0
  194. package/Types/Workflow/Components/AI.ts +148 -0
  195. package/Types/Workflow/Components.ts +8 -0
  196. package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
  197. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
  198. package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
  199. package/UI/Components/Table/Table.tsx +38 -2
  200. package/UI/Utils/TableColumnsToCsv.ts +385 -0
  201. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  202. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
  203. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
  205. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
  207. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
  209. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
  211. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  212. package/build/dist/Models/DatabaseModels/Index.js +4 -8
  213. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  214. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
  215. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
  216. package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
  217. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  218. package/build/dist/Models/DatabaseModels/Project.js +127 -6
  219. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  220. package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
  221. package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
  222. package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
  223. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  224. package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
  225. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  226. package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
  227. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  228. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
  229. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
  230. package/build/dist/Server/API/AIInsightAPI.js +140 -0
  231. package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
  232. package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
  233. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  234. package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
  235. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
  236. package/build/dist/Server/API/GitHubAPI.js +164 -2
  237. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  238. package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
  239. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  240. package/build/dist/Server/EnvironmentConfig.js +1 -1
  241. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
  256. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
  257. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
  260. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
  261. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
  262. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +30 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  274. package/build/dist/Server/Infrastructure/Queue.js +73 -3
  275. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  276. package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
  277. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  278. package/build/dist/Server/Services/AIAgentService.js +29 -0
  279. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  280. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
  281. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
  282. package/build/dist/Server/Services/AIInsightService.js +164 -0
  283. package/build/dist/Server/Services/AIInsightService.js.map +1 -0
  284. package/build/dist/Server/Services/AIRunEventService.js +49 -0
  285. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  286. package/build/dist/Server/Services/AIRunService.js +221 -0
  287. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  288. package/build/dist/Server/Services/AIService.js +198 -11
  289. package/build/dist/Server/Services/AIService.js.map +1 -1
  290. package/build/dist/Server/Services/AlertService.js +4 -4
  291. package/build/dist/Server/Services/AlertService.js.map +1 -1
  292. package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
  293. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  294. package/build/dist/Server/Services/GlobalConfigService.js +84 -0
  295. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  296. package/build/dist/Server/Services/IncidentService.js +149 -37
  297. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  298. package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
  299. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  300. package/build/dist/Server/Services/Index.js +4 -4
  301. package/build/dist/Server/Services/Index.js.map +1 -1
  302. package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
  303. package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
  304. package/build/dist/Server/Services/LlmLogService.js +23 -0
  305. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  306. package/build/dist/Server/Services/LlmProviderService.js +96 -0
  307. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  308. package/build/dist/Server/Services/MetricBaselineService.js +65 -0
  309. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  310. package/build/dist/Server/Services/MonitorService.js +9 -1
  311. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  312. package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
  313. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  314. package/build/dist/Server/Services/TraceAggregationService.js +124 -0
  315. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  316. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  317. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
  318. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
  319. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  320. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  321. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
  322. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
  323. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
  324. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
  325. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
  326. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
  327. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
  328. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
  329. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
  330. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
  331. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
  332. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
  333. package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
  334. package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
  335. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
  336. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
  337. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
  338. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
  339. package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
  340. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
  341. package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
  342. package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
  343. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
  344. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
  345. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
  346. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
  347. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
  348. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
  349. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
  350. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
  351. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
  352. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
  353. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
  354. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
  355. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
  356. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
  357. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
  358. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
  359. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
  360. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
  361. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
  362. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
  363. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
  364. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
  365. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
  366. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
  367. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
  368. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
  370. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
  372. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
  373. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
  374. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
  375. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
  376. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
  377. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
  378. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
  379. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
  380. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
  381. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
  382. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
  383. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
  384. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
  385. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
  386. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
  387. package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
  388. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
  389. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
  390. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  391. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
  392. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
  393. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
  394. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  395. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
  396. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
  397. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
  398. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
  399. package/build/dist/Server/Utils/Execute.js.map +1 -1
  400. package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
  401. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  402. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
  403. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
  404. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
  405. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  406. package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
  407. package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
  408. package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
  409. package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
  410. package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
  411. package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
  412. package/build/dist/Types/AI/AIInsightStatus.js +36 -0
  413. package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
  414. package/build/dist/Types/AI/AIInsightType.js +42 -0
  415. package/build/dist/Types/AI/AIInsightType.js.map +1 -0
  416. package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
  417. package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
  418. package/build/dist/Types/AI/AIRunEventType.js +5 -0
  419. package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
  420. package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
  421. package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
  422. package/build/dist/Types/AI/AIRunType.js +6 -0
  423. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  424. package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
  425. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
  426. package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
  427. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
  428. package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
  429. package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
  430. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
  431. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  432. package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
  433. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  434. package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
  435. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  436. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  437. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  438. package/build/dist/Types/Monitor/MonitorStep.js +28 -0
  439. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  440. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
  441. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
  442. package/build/dist/Types/Monitor/MonitorType.js +15 -0
  443. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  444. package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
  445. package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
  446. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
  447. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
  448. package/build/dist/Types/Permission.js +10 -84
  449. package/build/dist/Types/Permission.js.map +1 -1
  450. package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
  451. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  452. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  453. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  454. package/build/dist/Types/Workflow/Components/AI.js +135 -0
  455. package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
  456. package/build/dist/Types/Workflow/Components.js +7 -0
  457. package/build/dist/Types/Workflow/Components.js.map +1 -1
  458. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
  459. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  460. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
  461. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  462. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
  463. package/build/dist/UI/Components/Table/Table.js +28 -2
  464. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  465. package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
  466. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
  467. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  468. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  469. package/package.json +1 -1
  470. package/Models/DatabaseModels/AIAgentTask.ts +0 -660
  471. package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
  472. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
  473. package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
  474. package/Server/Services/AIAgentTaskService.ts +0 -240
  475. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
  476. package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
  477. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
  478. package/Types/AI/AIAgentTaskMetadata.ts +0 -25
  479. package/Types/AI/AIAgentTaskType.ts +0 -40
  480. package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
  481. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
  482. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
  483. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
  484. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
  485. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
  486. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
  487. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
  488. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
  489. package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
  490. package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
  491. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
  492. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
  493. package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
  494. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
  495. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
  496. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
  497. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
  498. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
  499. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
  500. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
  501. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
  502. package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
  503. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
  504. package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
  505. package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ import UserMiddleware from "../Middleware/UserAuthorization";
2
+ import CommonAPI from "./CommonAPI";
3
+ import Express from "../Utils/Express";
4
+ import Response from "../Utils/Response";
5
+ import ObjectID from "../../Types/ObjectID";
6
+ import BadDataException from "../../Types/Exception/BadDataException";
7
+ import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
8
+ import AIInsightHumanVerdict from "../../Types/AI/AIInsightHumanVerdict";
9
+ import AIRun from "../../Models/DatabaseModels/AIRun";
10
+ import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
11
+ import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
12
+ import AIInsightService from "../Services/AIInsightService";
13
+ const router = Express.getRouter();
14
+ /*
15
+ * Human-action endpoints for the AI insights inbox. Insight rows are
16
+ * server-authored (empty create/update table permissions) — humans act on
17
+ * them only through these routes: a one-click Confirm / Dismiss verdict
18
+ * (the G11 precision measurement), Resolve, and the live triage panel
19
+ * read. Each route access-checks the insight under the USER's permissions
20
+ * first (project membership + the AIInsight read ACL), then the
21
+ * service performs the root read/write — the AIInvestigationAPI idiom.
22
+ */
23
+ async function getLoggedInProps(req) {
24
+ const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
25
+ if (!props.userId) {
26
+ throw new NotAuthorizedException("A logged-in user session is required.");
27
+ }
28
+ return props;
29
+ }
30
+ /*
31
+ * Access check under the USER's permissions: the user props enforce project
32
+ * membership and the model's read ACL, so a null result means "does not
33
+ * exist or is not yours" — reported identically so the route never leaks
34
+ * whether an insight id exists in another project.
35
+ */
36
+ async function findAccessibleInsight(req, props) {
37
+ const insightIdString = req.body["insightId"];
38
+ if (!insightIdString) {
39
+ throw new BadDataException("insightId is required.");
40
+ }
41
+ const insight = await AIInsightService.findOneById({
42
+ id: new ObjectID(insightIdString),
43
+ select: { _id: true },
44
+ props,
45
+ });
46
+ if (!insight || !insight.id) {
47
+ throw new BadDataException("AI insight not found (or you do not have access to it).");
48
+ }
49
+ return insight;
50
+ }
51
+ /*
52
+ * One-click human verdict (the G11 precision measurement — confirm/dismiss
53
+ * rates per insight type gate future automation). Overwriting an existing
54
+ * verdict is allowed: the latest verdict wins. Dismissed also closes the
55
+ * insight; Confirmed leaves its status untouched.
56
+ * Body: { insightId, verdict: "Confirmed" | "Dismissed" }.
57
+ * Response: { insightId, verdict }.
58
+ */
59
+ router.post("/ai-insight/verdict", UserMiddleware.getUserMiddleware, async (req, res, next) => {
60
+ try {
61
+ const props = await getLoggedInProps(req);
62
+ const verdict = req.body["verdict"];
63
+ if (verdict !== AIInsightHumanVerdict.Confirmed &&
64
+ verdict !== AIInsightHumanVerdict.Dismissed) {
65
+ throw new BadDataException('verdict must be "Confirmed" or "Dismissed".');
66
+ }
67
+ const insight = await findAccessibleInsight(req, props);
68
+ const result = await AIInsightService.applyHumanVerdict({
69
+ insightId: insight.id,
70
+ verdict: verdict,
71
+ byUserId: props.userId,
72
+ });
73
+ Response.sendJsonObjectResponse(req, res, {
74
+ insightId: result.insightId.toString(),
75
+ verdict: result.verdict,
76
+ });
77
+ return;
78
+ }
79
+ catch (err) {
80
+ next(err);
81
+ return;
82
+ }
83
+ });
84
+ /*
85
+ * Marks the insight handled. Resolving implies the finding was real: when
86
+ * no verdict was recorded yet, the service also stamps Confirmed.
87
+ * Body: { insightId }. Response: { insightId, status }.
88
+ */
89
+ router.post("/ai-insight/resolve", UserMiddleware.getUserMiddleware, async (req, res, next) => {
90
+ try {
91
+ const props = await getLoggedInProps(req);
92
+ const insight = await findAccessibleInsight(req, props);
93
+ const result = await AIInsightService.resolveInsight({
94
+ insightId: insight.id,
95
+ byUserId: props.userId,
96
+ });
97
+ Response.sendJsonObjectResponse(req, res, {
98
+ insightId: result.insightId.toString(),
99
+ status: result.status,
100
+ });
101
+ return;
102
+ }
103
+ catch (err) {
104
+ next(err);
105
+ return;
106
+ }
107
+ });
108
+ /*
109
+ * Live triage panel data: the insight's triage AIRun + its ordered event
110
+ * trail (capped — see MAX_TRIAGE_RUN_EVENTS on the service). Triage runs
111
+ * are system-authored and hidden by the per-user pin on the generic AIRun
112
+ * CRUD, so after the access check the service reads them as root — the
113
+ * sendLatestInvestigation idiom. An insight without a triage run responds
114
+ * { run: null, events: [] }, not an error.
115
+ * Body: { insightId }. Response: { run, events }.
116
+ */
117
+ router.post("/ai-insight/triage-run", UserMiddleware.getUserMiddleware, async (req, res, next) => {
118
+ try {
119
+ const props = await getLoggedInProps(req);
120
+ const insight = await findAccessibleInsight(req, props);
121
+ const result = await AIInsightService.getLatestTriageRunWithEvents({
122
+ insightId: insight.id,
123
+ });
124
+ const runJson = result.run
125
+ ? BaseModel.toJSONArray([result.run], AIRun)[0]
126
+ : undefined;
127
+ const eventsJson = BaseModel.toJSONArray(result.events, AIRunEvent);
128
+ Response.sendJsonObjectResponse(req, res, {
129
+ run: runJson || null,
130
+ events: eventsJson,
131
+ });
132
+ return;
133
+ }
134
+ catch (err) {
135
+ next(err);
136
+ return;
137
+ }
138
+ });
139
+ export default router;
140
+ //# sourceMappingURL=AIInsightAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIInsightAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInsightAPI.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import BadDataException from "../../Types/Exception/BadDataException";
7
7
  import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
8
8
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
9
9
  import AIRunType from "../../Types/AI/AIRunType";
10
+ import AIRunHumanVerdict from "../../Types/AI/AIRunHumanVerdict";
10
11
  import AIRun from "../../Models/DatabaseModels/AIRun";
11
12
  import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
12
13
  import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
@@ -14,10 +15,21 @@ import IncidentService from "../Services/IncidentService";
14
15
  import AlertService from "../Services/AlertService";
15
16
  import AIRunService from "../Services/AIRunService";
16
17
  import AIRunEventService from "../Services/AIRunEventService";
18
+ import ServiceService from "../Services/ServiceService";
19
+ import SpanService from "../Services/SpanService";
20
+ import FixFromIncidentTaskTrigger from "../Utils/AI/SRE/FixFromIncidentTaskTrigger";
21
+ import FixPerformanceTaskTrigger from "../Utils/AI/SRE/FixPerformanceTaskTrigger";
17
22
  const router = Express.getRouter();
23
+ /*
24
+ * Upper bound on spans analyzed for one performance-fix trigger — mirrors
25
+ * the trace waterfall's own cap (TraceTools.MAX_TRACE_SPANS). Findings are
26
+ * computed over the first 500 spans by start time; a truncated giant trace
27
+ * still yields honest evidence about the loaded portion.
28
+ */
29
+ const MAX_ANALYZED_TRACE_SPANS = 500;
18
30
  const MAX_EVENTS = 500;
19
31
  /*
20
- * Returns the latest Sentinel investigation (the AIRun + its ordered
32
+ * Returns the latest AI investigation (the AIRun + its ordered
21
33
  * AIRunEvents) for an incident or alert, so the dashboard can render a live
22
34
  * "watch it think" panel.
23
35
  *
@@ -51,6 +63,11 @@ async function sendLatestInvestigation(req, res, runQuery) {
51
63
  toolCallCount: true,
52
64
  totalTokens: true,
53
65
  createdAt: true,
66
+ // Measurement layer: the panel renders verdict/grade state from these.
67
+ humanVerdict: true,
68
+ humanVerdictAt: true,
69
+ autoGrade: true,
70
+ autoGradeAt: true,
54
71
  },
55
72
  sort: { createdAt: SortOrder.Descending },
56
73
  limit: 1,
@@ -143,5 +160,244 @@ router.post("/ai-investigation/alert", UserMiddleware.getUserMiddleware, async (
143
160
  return;
144
161
  }
145
162
  });
163
+ /*
164
+ * Human verdict capture (Phase 2 measurement layer): one-click Confirm /
165
+ * Reject on the investigation panel. Applies to the LATEST COMPLETED
166
+ * investigation run for the subject; overwriting is allowed (a user may
167
+ * change their mind), and the request is rejected when no completed
168
+ * investigation exists. The subject is access-checked under the USER's
169
+ * permissions first (same idiom as the read routes above); the run itself is
170
+ * written as root because investigation runs are system-authored.
171
+ * Body: { subjectType: "incident" | "alert", subjectId,
172
+ * verdict: "Confirmed" | "Rejected" }. Response: { runId, verdict }.
173
+ */
174
+ router.post("/ai-investigation/verdict", UserMiddleware.getUserMiddleware, async (req, res, next) => {
175
+ try {
176
+ const props = await getLoggedInProps(req);
177
+ const subjectType = req.body["subjectType"];
178
+ if (subjectType !== "incident" && subjectType !== "alert") {
179
+ throw new BadDataException('subjectType must be "incident" or "alert".');
180
+ }
181
+ const subjectIdString = req.body["subjectId"];
182
+ if (!subjectIdString) {
183
+ throw new BadDataException("subjectId is required.");
184
+ }
185
+ const subjectId = new ObjectID(subjectIdString);
186
+ const verdict = req.body["verdict"];
187
+ if (verdict !== AIRunHumanVerdict.Confirmed &&
188
+ verdict !== AIRunHumanVerdict.Rejected) {
189
+ throw new BadDataException('verdict must be "Confirmed" or "Rejected".');
190
+ }
191
+ // Access check under the USER's permissions (null when not allowed).
192
+ if (subjectType === "incident") {
193
+ const incident = await IncidentService.findOneById({
194
+ id: subjectId,
195
+ select: { _id: true },
196
+ props,
197
+ });
198
+ if (!incident) {
199
+ throw new BadDataException("Incident not found (or you do not have access to it).");
200
+ }
201
+ }
202
+ else {
203
+ const alert = await AlertService.findOneById({
204
+ id: subjectId,
205
+ select: { _id: true },
206
+ props,
207
+ });
208
+ if (!alert) {
209
+ throw new BadDataException("Alert not found (or you do not have access to it).");
210
+ }
211
+ }
212
+ const result = await AIRunService.applyHumanVerdictToLatestInvestigation(Object.assign(Object.assign({}, (subjectType === "incident"
213
+ ? { incidentId: subjectId }
214
+ : { alertId: subjectId })), { verdict: verdict, verdictByUserId: props.userId }));
215
+ Response.sendJsonObjectResponse(req, res, {
216
+ runId: result.runId.toString(),
217
+ verdict: result.verdict,
218
+ });
219
+ return;
220
+ }
221
+ catch (err) {
222
+ next(err);
223
+ return;
224
+ }
225
+ });
226
+ /*
227
+ * Human-triggered `code_fix` (the FixFromIncident recipe): after a AI
228
+ * investigation completes on an incident/alert, the user can ask the agent
229
+ * to open a fix pull request from the posted analysis. The subject is
230
+ * access-checked under the USER's permissions first (same idiom as the read
231
+ * routes above); the trigger's gates (completed investigation, GitHub-App
232
+ * repository, per-subject dedupe) fail early with a clear message.
233
+ * Body: { subjectType: "incident" | "alert", subjectId }. Response:
234
+ * { aiRunId } — the Queued CodeFix run the agent worker will claim.
235
+ */
236
+ router.post("/ai-investigation/create-fix-task", UserMiddleware.getUserMiddleware, async (req, res, next) => {
237
+ try {
238
+ const props = await getLoggedInProps(req);
239
+ const subjectType = req.body["subjectType"];
240
+ if (subjectType !== "incident" && subjectType !== "alert") {
241
+ throw new BadDataException('subjectType must be "incident" or "alert".');
242
+ }
243
+ const subjectIdString = req.body["subjectId"];
244
+ if (!subjectIdString) {
245
+ throw new BadDataException("subjectId is required.");
246
+ }
247
+ const subjectId = new ObjectID(subjectIdString);
248
+ // Access check under the USER's permissions (null when not allowed).
249
+ let projectId = undefined;
250
+ if (subjectType === "incident") {
251
+ const incident = await IncidentService.findOneById({
252
+ id: subjectId,
253
+ select: { _id: true, projectId: true },
254
+ props,
255
+ });
256
+ if (!incident || !incident.projectId) {
257
+ throw new BadDataException("Incident not found (or you do not have access to it).");
258
+ }
259
+ projectId = incident.projectId;
260
+ }
261
+ else {
262
+ const alert = await AlertService.findOneById({
263
+ id: subjectId,
264
+ select: { _id: true, projectId: true },
265
+ props,
266
+ });
267
+ if (!alert || !alert.projectId) {
268
+ throw new BadDataException("Alert not found (or you do not have access to it).");
269
+ }
270
+ projectId = alert.projectId;
271
+ }
272
+ const run = await FixFromIncidentTaskTrigger.createFixTaskFromInvestigation(Object.assign(Object.assign({ projectId }, (subjectType === "incident"
273
+ ? { incidentId: subjectId }
274
+ : { alertId: subjectId })), { userId: props.userId }));
275
+ Response.sendJsonObjectResponse(req, res, {
276
+ aiRunId: run.id.toString(),
277
+ });
278
+ return;
279
+ }
280
+ catch (err) {
281
+ next(err);
282
+ return;
283
+ }
284
+ });
285
+ /*
286
+ * Human-triggered FixPerformance: from a slow trace, one click opens a
287
+ * performance-fix PR grounded in deterministic span-tree evidence. The
288
+ * spans are loaded under the USER's permissions (the same telemetry-read
289
+ * ACL the trace explorer enforces — a user who cannot read the trace gets
290
+ * "not found"), the SpanTreeAnalyzer gates on a mechanical finding, and
291
+ * the trigger's remaining gates (GitHub-App repository, per-trace dedupe)
292
+ * fail early with a clear message. Body: { traceId }. Response:
293
+ * { aiRunId } — the Queued CodeFix run the agent worker will claim.
294
+ */
295
+ router.post("/ai-investigation/create-performance-fix-task", UserMiddleware.getUserMiddleware, async (req, res, next) => {
296
+ var _a;
297
+ try {
298
+ const props = await getLoggedInProps(req);
299
+ const traceId = req.body["traceId"];
300
+ if (!traceId) {
301
+ throw new BadDataException("traceId is required.");
302
+ }
303
+ const projectId = props.tenantId;
304
+ if (!projectId) {
305
+ throw new BadDataException("A project scope is required.");
306
+ }
307
+ /*
308
+ * Access check + data load in one: the analytics permission layer
309
+ * pins this query to the user's tenant and telemetry-read
310
+ * permissions (the Span model's read ACL — same enforcement the
311
+ * trace explorer's list API applies). No spans back means the trace
312
+ * does not exist or the user may not see it.
313
+ */
314
+ const spans = await SpanService.findBy({
315
+ query: {
316
+ traceId: traceId,
317
+ },
318
+ select: {
319
+ spanId: true,
320
+ parentSpanId: true,
321
+ name: true,
322
+ startTimeUnixNano: true,
323
+ endTimeUnixNano: true,
324
+ durationUnixNano: true,
325
+ attributes: true,
326
+ primaryEntityId: true,
327
+ },
328
+ sort: {
329
+ startTimeUnixNano: SortOrder.Ascending,
330
+ },
331
+ limit: MAX_ANALYZED_TRACE_SPANS,
332
+ skip: 0,
333
+ props: props,
334
+ });
335
+ if (spans.length === 0) {
336
+ throw new BadDataException("Trace not found (or you do not have access to it).");
337
+ }
338
+ // Nanoseconds -> milliseconds for the analyzer.
339
+ const analyzableSpans = spans.map((span) => {
340
+ var _a, _b;
341
+ const attributes = {};
342
+ for (const [key, value] of Object.entries(span.attributes || {})) {
343
+ if (value !== null && value !== undefined) {
344
+ attributes[key] = String(value);
345
+ }
346
+ }
347
+ return {
348
+ spanId: ((_a = span.spanId) === null || _a === void 0 ? void 0 : _a.toString()) || "",
349
+ parentSpanId: ((_b = span.parentSpanId) === null || _b === void 0 ? void 0 : _b.toString()) || undefined,
350
+ name: span.name || "",
351
+ startMs: Number(span.startTimeUnixNano) / 1000000,
352
+ endMs: Number(span.endTimeUnixNano) / 1000000,
353
+ durationMs: Number(span.durationUnixNano) / 1000000,
354
+ attributes,
355
+ };
356
+ });
357
+ /*
358
+ * Best-effort service attribution: the trace's most frequent
359
+ * primaryEntityId, resolved to a Service name when it IS a Service
360
+ * (findOneById returns null for hosts/clusters/unattributed ids).
361
+ * Only feeds the repository name-match fallback — null is fine.
362
+ */
363
+ const entityIdCounts = new Map();
364
+ for (const span of spans) {
365
+ const entityId = (_a = span.primaryEntityId) === null || _a === void 0 ? void 0 : _a.toString();
366
+ if (entityId) {
367
+ entityIdCounts.set(entityId, (entityIdCounts.get(entityId) || 0) + 1);
368
+ }
369
+ }
370
+ let dominantEntityId = null;
371
+ let dominantEntityCount = 0;
372
+ for (const [entityId, count] of entityIdCounts) {
373
+ if (count > dominantEntityCount) {
374
+ dominantEntityId = entityId;
375
+ dominantEntityCount = count;
376
+ }
377
+ }
378
+ const service = dominantEntityId
379
+ ? await ServiceService.findOneById({
380
+ id: new ObjectID(dominantEntityId),
381
+ select: { name: true },
382
+ props: { isRoot: true },
383
+ })
384
+ : null;
385
+ const run = await FixPerformanceTaskTrigger.createPerformanceFixTaskFromTrace({
386
+ projectId,
387
+ traceId,
388
+ spans: analyzableSpans,
389
+ serviceName: service === null || service === void 0 ? void 0 : service.name,
390
+ userId: props.userId,
391
+ });
392
+ Response.sendJsonObjectResponse(req, res, {
393
+ aiRunId: run.id.toString(),
394
+ });
395
+ return;
396
+ }
397
+ catch (err) {
398
+ next(err);
399
+ return;
400
+ }
401
+ });
146
402
  export default router;
147
403
  //# sourceMappingURL=AIInvestigationAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIInvestigationAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInvestigationAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIInvestigationAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInvestigationAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import UserMiddleware from "../Middleware/UserAuthorization";
2
+ import CommonAPI from "./CommonAPI";
3
+ import Express from "../Utils/Express";
4
+ import Response from "../Utils/Response";
5
+ import ObjectID from "../../Types/ObjectID";
6
+ import BadDataException from "../../Types/Exception/BadDataException";
7
+ import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
8
+ import SortOrder from "../../Types/BaseDatabase/SortOrder";
9
+ import AIRunType from "../../Types/AI/AIRunType";
10
+ import { CodeFixTaskTypeHelper } from "../../Types/AI/CodeFixTaskType";
11
+ import AIRun from "../../Models/DatabaseModels/AIRun";
12
+ import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
13
+ import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
14
+ import ProjectService from "../Services/ProjectService";
15
+ import AIRunService from "../Services/AIRunService";
16
+ import AIRunEventService from "../Services/AIRunEventService";
17
+ const DEFAULT_LIMIT = 25;
18
+ const MAX_LIMIT = 100;
19
+ const MAX_EVENTS = 500;
20
+ /*
21
+ * Dedicated read endpoints for the dashboard's AI fix-task pages.
22
+ *
23
+ * Code-fix runs are system-authored AIRuns (runType CodeFix, userId = null)
24
+ * and are therefore hidden by the per-user privacy pin on the generic
25
+ * AIRun / AIRunEvent CRUD. So access is gated explicitly here — the same
26
+ * pattern as AIInvestigationAPI: first confirm the caller can read the
27
+ * parent object (the project) under THEIR permissions, then read the runs
28
+ * and their events as root.
29
+ */
30
+ const RUN_SELECT = {
31
+ _id: true,
32
+ status: true,
33
+ createdAt: true,
34
+ startedAt: true,
35
+ completedAt: true,
36
+ errorMessage: true,
37
+ triggeredByTelemetryExceptionId: true,
38
+ totalTokens: true,
39
+ codeFixTaskType: true,
40
+ };
41
+ /*
42
+ * Serialize a run with codeFixTaskType normalized: a null column means
43
+ * FixException (rows created before task recipes existed), and clients
44
+ * should never have to know about the legacy null.
45
+ */
46
+ function runToJson(run) {
47
+ const runJson = BaseModel.toJSONArray([run], AIRun)[0] || {};
48
+ runJson["codeFixTaskType"] = CodeFixTaskTypeHelper.fromDatabaseValue(run.codeFixTaskType);
49
+ return runJson;
50
+ }
51
+ export default class CodeFixRunAPI {
52
+ constructor() {
53
+ this.router = Express.getRouter();
54
+ this.initRoutes();
55
+ }
56
+ getRouter() {
57
+ return this.router;
58
+ }
59
+ initRoutes() {
60
+ // List the project's code-fix runs, newest first.
61
+ this.router.post("/code-fix-run/list", UserMiddleware.getUserMiddleware, async (req, res, next) => {
62
+ try {
63
+ const props = await this.getAccessCheckedProps(req);
64
+ const body = req.body || {};
65
+ let limit = DEFAULT_LIMIT;
66
+ if (typeof body["limit"] === "number") {
67
+ limit = body["limit"];
68
+ }
69
+ limit = Math.min(Math.max(Math.floor(limit), 1), MAX_LIMIT);
70
+ let skip = 0;
71
+ if (typeof body["skip"] === "number") {
72
+ skip = Math.max(Math.floor(body["skip"]), 0);
73
+ }
74
+ const query = {
75
+ projectId: props.tenantId,
76
+ runType: AIRunType.CodeFix,
77
+ };
78
+ // Root read after the tenant access check above.
79
+ const runs = await AIRunService.findBy({
80
+ query: query,
81
+ select: RUN_SELECT,
82
+ sort: { createdAt: SortOrder.Descending },
83
+ limit: limit,
84
+ skip: skip,
85
+ props: { isRoot: true },
86
+ });
87
+ const count = await AIRunService.countBy({
88
+ query: query,
89
+ props: { isRoot: true },
90
+ });
91
+ Response.sendJsonObjectResponse(req, res, {
92
+ runs: runs.map((run) => {
93
+ return runToJson(run);
94
+ }),
95
+ count: count.toNumber(),
96
+ });
97
+ return;
98
+ }
99
+ catch (err) {
100
+ next(err);
101
+ return;
102
+ }
103
+ });
104
+ // One run + its ordered glass-box event trail.
105
+ this.router.post("/code-fix-run/get/:runId", UserMiddleware.getUserMiddleware, async (req, res, next) => {
106
+ try {
107
+ const props = await this.getAccessCheckedProps(req);
108
+ const runIdString = req.params["runId"];
109
+ if (!runIdString) {
110
+ throw new BadDataException("runId is required.");
111
+ }
112
+ const runId = new ObjectID(runIdString);
113
+ /*
114
+ * Root read, but pinned to the caller's (access-checked) project —
115
+ * a run id from another project resolves to "not found".
116
+ */
117
+ const run = await AIRunService.findOneBy({
118
+ query: {
119
+ _id: runId.toString(),
120
+ projectId: props.tenantId,
121
+ runType: AIRunType.CodeFix,
122
+ },
123
+ select: RUN_SELECT,
124
+ props: { isRoot: true },
125
+ });
126
+ if (!run) {
127
+ throw new BadDataException("Code fix run not found (or it does not belong to this project).");
128
+ }
129
+ const events = await AIRunEventService.findBy({
130
+ query: { aiRunId: run.id },
131
+ select: {
132
+ _id: true,
133
+ sequence: true,
134
+ eventType: true,
135
+ toolName: true,
136
+ resultSummary: true,
137
+ createdAt: true,
138
+ },
139
+ sort: { sequence: SortOrder.Ascending },
140
+ limit: MAX_EVENTS,
141
+ skip: 0,
142
+ props: { isRoot: true },
143
+ });
144
+ Response.sendJsonObjectResponse(req, res, {
145
+ run: runToJson(run),
146
+ events: BaseModel.toJSONArray(events, AIRunEvent),
147
+ });
148
+ return;
149
+ }
150
+ catch (err) {
151
+ next(err);
152
+ return;
153
+ }
154
+ });
155
+ }
156
+ /*
157
+ * Requires a logged-in session and a tenant, then verifies project access
158
+ * by reading the project under the USER's permissions (null when the user
159
+ * is not a member). Returns the props for further use.
160
+ */
161
+ async getAccessCheckedProps(req) {
162
+ const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
163
+ if (!props.userId) {
164
+ throw new NotAuthorizedException("A logged-in user session is required.");
165
+ }
166
+ if (!props.tenantId) {
167
+ throw new BadDataException("Project ID is required (tenantid header).");
168
+ }
169
+ // Access check under the USER's permissions (null when not allowed).
170
+ const project = await ProjectService.findOneById({
171
+ id: props.tenantId,
172
+ select: { _id: true },
173
+ props: props,
174
+ });
175
+ if (!project) {
176
+ throw new NotAuthorizedException("Project not found (or you do not have access to it).");
177
+ }
178
+ return props;
179
+ }
180
+ }
181
+ //# sourceMappingURL=CodeFixRunAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeFixRunAPI.js","sourceRoot":"","sources":["../../../../Server/API/CodeFixRunAPI.ts"],"names":[],"mappings":"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"}