@oneuptime/common 11.5.4 → 11.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +56 -45
  2. package/Models/DatabaseModels/AIInsight.ts +748 -0
  3. package/Models/DatabaseModels/AIRun.ts +262 -0
  4. package/Models/DatabaseModels/CodeRepository.ts +42 -0
  5. package/Models/DatabaseModels/GlobalConfig.ts +105 -0
  6. package/Models/DatabaseModels/Index.ts +4 -8
  7. package/Models/DatabaseModels/InstanceHealthLog.ts +277 -0
  8. package/Models/DatabaseModels/LlmLog.ts +33 -0
  9. package/Models/DatabaseModels/Project.ts +123 -6
  10. package/Models/DatabaseModels/Runbook.ts +1 -1
  11. package/Models/DatabaseModels/User.ts +47 -0
  12. package/Server/API/AIAgentDataAPI.ts +802 -140
  13. package/Server/API/AIAgentTaskAPI.ts +132 -69
  14. package/Server/API/AIAgentTaskLogAPI.ts +65 -41
  15. package/Server/API/AIAgentTaskPullRequestAPI.ts +41 -0
  16. package/Server/API/AIInsightAPI.ts +220 -0
  17. package/Server/API/AIInvestigationAPI.ts +363 -1
  18. package/Server/API/CodeFixRunAPI.ts +251 -0
  19. package/Server/API/GitHubAPI.ts +246 -3
  20. package/Server/API/TelemetryExceptionAPI.ts +193 -48
  21. package/Server/EnvironmentConfig.ts +1 -1
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.ts +26 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.ts +73 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.ts +29 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.ts +31 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.ts +51 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.ts +25 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.ts +47 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.ts +31 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.ts +37 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.ts +25 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.ts +75 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.ts +37 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.ts +203 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.ts +163 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.ts +23 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
  39. package/Server/Infrastructure/Queue.ts +82 -4
  40. package/Server/Infrastructure/Semaphore.ts +62 -1
  41. package/Server/Middleware/MasterAdminAuthorization.ts +37 -0
  42. package/Server/Middleware/ProjectAuthorization.ts +40 -15
  43. package/Server/Services/AIAgentService.ts +32 -0
  44. package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
  45. package/Server/Services/AIInsightService.ts +174 -0
  46. package/Server/Services/AIRunEventService.ts +63 -0
  47. package/Server/Services/AIRunService.ts +259 -1
  48. package/Server/Services/AIService.ts +249 -7
  49. package/Server/Services/AlertService.ts +4 -4
  50. package/Server/Services/CodeRepositoryService.ts +209 -0
  51. package/Server/Services/GlobalConfigService.ts +148 -0
  52. package/Server/Services/IncidentService.ts +183 -38
  53. package/Server/Services/IncidentStateTimelineService.ts +24 -4
  54. package/Server/Services/Index.ts +4 -4
  55. package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
  56. package/Server/Services/LlmLogService.ts +27 -0
  57. package/Server/Services/LlmProviderService.ts +108 -0
  58. package/Server/Services/MetricBaselineService.ts +123 -0
  59. package/Server/Services/MonitorService.ts +15 -0
  60. package/Server/Services/TeamMemberService.ts +2 -0
  61. package/Server/Services/TelemetryExceptionService.ts +323 -116
  62. package/Server/Services/TraceAggregationService.ts +176 -0
  63. package/Server/Services/UserService.ts +10 -0
  64. package/Server/Types/Workflow/ComponentCode.ts +6 -0
  65. package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
  66. package/Server/Types/Workflow/Components/Index.ts +2 -0
  67. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
  68. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
  69. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
  70. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
  71. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
  72. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
  73. package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
  74. package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
  75. package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
  76. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
  77. package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
  78. package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
  79. package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
  80. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
  81. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
  82. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
  83. package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
  84. package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
  85. package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
  86. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
  87. package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
  88. package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
  89. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
  90. package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
  91. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
  92. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
  93. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
  94. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
  95. package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
  96. package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
  97. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
  98. package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
  99. package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
  100. package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
  101. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
  102. package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
  103. package/Server/Utils/AI/Toolbox/Index.ts +2 -2
  104. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
  105. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
  106. package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
  107. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
  108. package/Server/Utils/Execute.ts +2 -1
  109. package/Server/Utils/LLM/LLMService.ts +160 -30
  110. package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
  111. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
  112. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +16 -6
  113. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +14 -0
  114. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +14 -3
  115. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +130 -12
  116. package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
  117. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
  118. package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
  119. package/Tests/Server/Services/AIInsightService.test.ts +324 -0
  120. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
  121. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
  122. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
  123. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
  124. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
  125. package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
  126. package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
  127. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
  128. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
  129. package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
  130. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
  131. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
  132. package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
  133. package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
  134. package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
  135. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
  136. package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
  137. package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
  138. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
  139. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
  140. package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
  141. package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
  142. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
  143. package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
  144. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
  145. package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
  146. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
  147. package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
  148. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
  149. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
  150. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
  151. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
  152. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
  153. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
  154. package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
  155. package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
  156. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
  157. package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
  158. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
  159. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
  160. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
  161. package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
  162. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
  163. package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
  164. package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
  165. package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
  166. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +553 -0
  167. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +590 -0
  168. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageFormatterUnits.test.ts +254 -0
  169. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +821 -0
  170. package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
  171. package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
  172. package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
  173. package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
  174. package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
  175. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
  176. package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
  177. package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
  178. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
  179. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
  180. package/Types/AI/AIChatTypes.ts +8 -0
  181. package/Types/AI/AIInsightEvidence.ts +77 -0
  182. package/Types/AI/AIInsightHumanVerdict.ts +15 -0
  183. package/Types/AI/AIInsightSeverity.ts +13 -0
  184. package/Types/AI/AIInsightStatus.ts +38 -0
  185. package/Types/AI/AIInsightType.ts +41 -0
  186. package/Types/AI/AIRunAutoGrade.ts +18 -0
  187. package/Types/AI/AIRunEventType.ts +5 -0
  188. package/Types/AI/AIRunHumanVerdict.ts +17 -0
  189. package/Types/AI/AIRunType.ts +6 -0
  190. package/Types/AI/CodeFixTaskContext.ts +88 -0
  191. package/Types/AI/CodeFixTaskType.ts +132 -0
  192. package/Types/AI/FixPullRequestCiStatus.ts +132 -0
  193. package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
  194. package/Types/Incident/IncidentMetricType.ts +7 -0
  195. package/Types/Monitor/CriteriaFilter.ts +8 -0
  196. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  197. package/Types/Monitor/MonitorStep.ts +38 -0
  198. package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
  199. package/Types/Monitor/MonitorType.ts +17 -0
  200. package/Types/Monitor/SqlDatabaseType.ts +49 -0
  201. package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
  202. package/Types/Permission.ts +11 -95
  203. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  204. package/Types/Runbook/RunbookStep.ts +26 -2
  205. package/Types/Runbook/RunbookStepType.ts +1 -0
  206. package/Types/Workflow/Component.ts +13 -0
  207. package/Types/Workflow/ComponentID.ts +1 -0
  208. package/Types/Workflow/Components/AI.ts +148 -0
  209. package/Types/Workflow/Components.ts +8 -0
  210. package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
  211. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
  212. package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
  213. package/UI/Components/Table/Table.tsx +38 -2
  214. package/UI/Utils/TableColumnsToCsv.ts +385 -0
  215. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  216. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
  217. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  218. package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
  219. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
  220. package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
  221. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  222. package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
  223. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  224. package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
  225. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  226. package/build/dist/Models/DatabaseModels/Index.js +4 -8
  227. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  228. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
  229. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
  230. package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
  231. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  232. package/build/dist/Models/DatabaseModels/Project.js +127 -6
  233. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  234. package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
  235. package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
  236. package/build/dist/Models/DatabaseModels/User.js +46 -0
  237. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  238. package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
  239. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  240. package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
  241. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  242. package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
  243. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  244. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
  245. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
  246. package/build/dist/Server/API/AIInsightAPI.js +140 -0
  247. package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
  248. package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
  249. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  250. package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
  251. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
  252. package/build/dist/Server/API/GitHubAPI.js +164 -2
  253. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  254. package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
  255. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  256. package/build/dist/Server/EnvironmentConfig.js +1 -1
  257. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
  260. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
  261. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
  262. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
  274. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
  275. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
  276. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
  277. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
  278. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
  279. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
  280. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
  281. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
  282. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
  283. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
  284. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
  285. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
  286. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
  287. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
  288. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js +18 -0
  289. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js.map +1 -0
  290. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -0
  291. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  292. package/build/dist/Server/Infrastructure/Queue.js +73 -3
  293. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  294. package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
  295. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  296. package/build/dist/Server/Middleware/MasterAdminAuthorization.js +26 -0
  297. package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
  298. package/build/dist/Server/Middleware/ProjectAuthorization.js +40 -14
  299. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  300. package/build/dist/Server/Services/AIAgentService.js +29 -0
  301. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  302. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
  303. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
  304. package/build/dist/Server/Services/AIInsightService.js +164 -0
  305. package/build/dist/Server/Services/AIInsightService.js.map +1 -0
  306. package/build/dist/Server/Services/AIRunEventService.js +49 -0
  307. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  308. package/build/dist/Server/Services/AIRunService.js +221 -0
  309. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  310. package/build/dist/Server/Services/AIService.js +198 -11
  311. package/build/dist/Server/Services/AIService.js.map +1 -1
  312. package/build/dist/Server/Services/AlertService.js +4 -4
  313. package/build/dist/Server/Services/AlertService.js.map +1 -1
  314. package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
  315. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  316. package/build/dist/Server/Services/GlobalConfigService.js +84 -0
  317. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  318. package/build/dist/Server/Services/IncidentService.js +149 -37
  319. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  320. package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
  321. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  322. package/build/dist/Server/Services/Index.js +4 -4
  323. package/build/dist/Server/Services/Index.js.map +1 -1
  324. package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
  325. package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
  326. package/build/dist/Server/Services/LlmLogService.js +23 -0
  327. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  328. package/build/dist/Server/Services/LlmProviderService.js +96 -0
  329. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  330. package/build/dist/Server/Services/MetricBaselineService.js +65 -0
  331. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  332. package/build/dist/Server/Services/MonitorService.js +9 -1
  333. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  334. package/build/dist/Server/Services/TeamMemberService.js +2 -0
  335. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  336. package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
  337. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  338. package/build/dist/Server/Services/TraceAggregationService.js +124 -0
  339. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  340. package/build/dist/Server/Services/UserService.js +8 -0
  341. package/build/dist/Server/Services/UserService.js.map +1 -1
  342. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  343. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
  344. package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
  345. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  346. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  347. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
  348. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
  349. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
  350. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
  351. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
  352. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
  353. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
  354. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
  355. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
  356. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
  357. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
  358. package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
  359. package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
  360. package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
  361. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
  362. package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
  363. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
  364. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
  365. package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
  366. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
  367. package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
  368. package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
  370. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
  372. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
  373. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
  374. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
  375. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
  376. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
  377. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
  378. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
  379. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
  380. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
  381. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
  382. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
  383. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
  384. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
  385. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
  386. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
  387. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
  388. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
  389. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
  390. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
  391. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
  392. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
  393. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
  394. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
  395. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
  396. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
  397. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
  398. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
  399. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
  400. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
  401. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
  402. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
  403. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
  404. package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
  405. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
  406. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
  407. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
  408. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
  409. package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
  410. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
  411. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
  412. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
  413. package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
  414. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
  415. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
  416. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  417. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
  418. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
  419. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
  420. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  421. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
  422. package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
  423. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
  424. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
  425. package/build/dist/Server/Utils/Execute.js.map +1 -1
  426. package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
  427. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  428. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
  429. package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
  430. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
  431. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  432. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +15 -7
  433. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  434. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +12 -1
  435. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  436. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +8 -3
  437. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  438. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +96 -12
  439. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  440. package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
  441. package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
  442. package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
  443. package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
  444. package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
  445. package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
  446. package/build/dist/Types/AI/AIInsightStatus.js +36 -0
  447. package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
  448. package/build/dist/Types/AI/AIInsightType.js +42 -0
  449. package/build/dist/Types/AI/AIInsightType.js.map +1 -0
  450. package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
  451. package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
  452. package/build/dist/Types/AI/AIRunEventType.js +5 -0
  453. package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
  454. package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
  455. package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
  456. package/build/dist/Types/AI/AIRunType.js +6 -0
  457. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  458. package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
  459. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
  460. package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
  461. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
  462. package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
  463. package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
  464. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
  465. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  466. package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
  467. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  468. package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
  469. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  470. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  471. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  472. package/build/dist/Types/Monitor/MonitorStep.js +28 -0
  473. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  474. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
  475. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
  476. package/build/dist/Types/Monitor/MonitorType.js +15 -0
  477. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  478. package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
  479. package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
  480. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
  481. package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
  482. package/build/dist/Types/Permission.js +10 -84
  483. package/build/dist/Types/Permission.js.map +1 -1
  484. package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
  485. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  486. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  487. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  488. package/build/dist/Types/Workflow/Components/AI.js +135 -0
  489. package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
  490. package/build/dist/Types/Workflow/Components.js +7 -0
  491. package/build/dist/Types/Workflow/Components.js.map +1 -1
  492. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
  493. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  494. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
  495. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  496. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
  497. package/build/dist/UI/Components/Table/Table.js +28 -2
  498. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  499. package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
  500. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
  501. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  502. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  503. package/package.json +1 -1
  504. package/Models/DatabaseModels/AIAgentTask.ts +0 -660
  505. package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
  506. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
  507. package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
  508. package/Server/Services/AIAgentTaskService.ts +0 -240
  509. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
  510. package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
  511. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
  512. package/Types/AI/AIAgentTaskMetadata.ts +0 -25
  513. package/Types/AI/AIAgentTaskType.ts +0 -40
  514. package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
  515. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
  516. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
  517. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
  518. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
  519. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
  520. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
  521. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
  522. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
  523. package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
  524. package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
  525. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
  526. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
  527. package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
  528. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
  529. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
  530. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
  531. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
  532. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
  533. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
  534. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
  535. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
  536. package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
  537. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
  538. package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
  539. package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
@@ -0,0 +1,369 @@
1
+ import ObjectID from "../../../../Types/ObjectID";
2
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
3
+ import LIMIT_MAX from "../../../../Types/Database/LimitMax";
4
+ import AIRunType from "../../../../Types/AI/AIRunType";
5
+ import AIRunStatus from "../../../../Types/AI/AIRunStatus";
6
+ import AIRunEventType from "../../../../Types/AI/AIRunEventType";
7
+ import AIRunHumanVerdict from "../../../../Types/AI/AIRunHumanVerdict";
8
+ import AIRunAutoGrade from "../../../../Types/AI/AIRunAutoGrade";
9
+ import { AIRunEventResultSummary } from "../../../../Types/AI/AIChatTypes";
10
+ import AIRun from "../../../../Models/DatabaseModels/AIRun";
11
+ import AIRunEvent from "../../../../Models/DatabaseModels/AIRunEvent";
12
+ import { IncidentFeedEventType } from "../../../../Models/DatabaseModels/IncidentFeed";
13
+ import { AlertFeedEventType } from "../../../../Models/DatabaseModels/AlertFeed";
14
+ import QueryHelper from "../../../Types/Database/QueryHelper";
15
+ import Query from "../../../Types/Database/Query";
16
+ import AIRunService from "../../../Services/AIRunService";
17
+ import AIRunEventService from "../../../Services/AIRunEventService";
18
+ import IncidentFeedService from "../../../Services/IncidentFeedService";
19
+ import AlertFeedService from "../../../Services/AlertFeedService";
20
+ import AIConfidenceSignal from "../SRE/ConfidenceSignal";
21
+ import logger from "../../Logger";
22
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
23
+
24
+ /*
25
+ * AI eval harness — golden-incident corpus (G3 bootstrap).
26
+ *
27
+ * A GoldenCase is one LABELED, completed AI investigation, exported as
28
+ * plain JSON: the run's identity, its human/auto label (AIRun.humanVerdict /
29
+ * AIRun.autoGrade — the Phase 2 measurement columns), deterministic per-run
30
+ * evidence stats derived from the recorded AIRunEvent trail, and the trail
31
+ * itself in skeletal form. Everything here is computable WITHOUT re-running
32
+ * any LLM — that is the point of the bootstrap: recorded runs + labels make
33
+ * the four G3 scores (EvalScores.ts) measurable today.
34
+ *
35
+ * WHAT THE TRAIL DOES AND DOES NOT CONTAIN (consequence for replay):
36
+ * AIRunEvent stores the validated tool ARGUMENTS (`toolArguments`) and a
37
+ * result SUMMARY (`resultSummary`: rowCount, durationInMs, isTruncated,
38
+ * bytesSentToLlm, errorMessage) — never the tool's actual result rows. So the
39
+ * corpus supports labeled-run SCORING (this file + EvalScores.ts) but not
40
+ * offline REPLAY; see ReplayInvestigation.ts for exactly what full replay
41
+ * would need.
42
+ *
43
+ * "Data-bearing" is defined ONCE, in
44
+ * AIConfidenceSignal.isDataBearingRowCount (rowCount > 0; rowCount 0 is
45
+ * proof of absence — evidence, but not data-bearing), and reused here so the
46
+ * offline stats can never drift from the live confidence floor's definition.
47
+ */
48
+
49
+ // Default number of labeled runs exported when the caller does not say.
50
+ export const DEFAULT_CORPUS_LIMIT: number = 200;
51
+
52
+ export type GoldenCaseSubjectType = "Incident" | "Alert";
53
+
54
+ export interface GoldenCaseLabel {
55
+ humanVerdict?: AIRunHumanVerdict | undefined;
56
+ autoGrade?: AIRunAutoGrade | undefined;
57
+ }
58
+
59
+ /*
60
+ * Deterministic per-run evidence stats, derived from the recorded event
61
+ * trail (server-side state — the model never wrote any of these numbers).
62
+ */
63
+ export interface GoldenCaseConfidenceStats {
64
+ // Events that minted a server-side citation (AIRunEvent.citationId set).
65
+ citationsMinted: number;
66
+ /*
67
+ * Successful tool calls whose recorded resultSummary.rowCount passes
68
+ * AIConfidenceSignal.isDataBearingRowCount (> 0).
69
+ */
70
+ dataBearingToolCalls: number;
71
+ // ToolCallCompleted + ToolCallFailed events (calls that finished either way).
72
+ toolCallsTotal: number;
73
+ toolCallsFailed: number;
74
+ }
75
+
76
+ export interface GoldenCaseEvent {
77
+ sequence: number;
78
+ eventType: string;
79
+ toolName?: string | undefined;
80
+ // true = ToolCallCompleted, false = ToolCallFailed, undefined = not a tool result.
81
+ ok?: boolean | undefined;
82
+ }
83
+
84
+ export interface GoldenCase {
85
+ runId: string;
86
+ projectId: string;
87
+ subjectType: GoldenCaseSubjectType;
88
+ // ISO timestamp of the run's Completed transition.
89
+ completedAt?: string | undefined;
90
+ label: GoldenCaseLabel;
91
+ confidence: GoldenCaseConfidenceStats;
92
+ /*
93
+ * Whether a AI RootCause feed item exists for the run's subject.
94
+ * Honest caveat: feed items are keyed by SUBJECT, not by run — the AI's
95
+ * postAnalysis is their only writer (the same sourcing rule
96
+ * InvestigationGrader uses), but when several investigations ran for one
97
+ * subject they share this flag.
98
+ */
99
+ analysisPosted: boolean;
100
+ events: Array<GoldenCaseEvent>;
101
+ }
102
+
103
+ /*
104
+ * Structural projection of AIRunEvent used by the pure derivation helpers, so
105
+ * tests can feed synthetic event lists without constructing database models.
106
+ */
107
+ export interface CorpusEventInput {
108
+ sequence?: number | undefined;
109
+ eventType?: AIRunEventType | undefined;
110
+ toolName?: string | undefined;
111
+ citationId?: string | undefined;
112
+ resultSummary?: AIRunEventResultSummary | undefined;
113
+ }
114
+
115
+ export interface ExportCorpusOptions {
116
+ projectId?: ObjectID | undefined;
117
+ limit?: number | undefined;
118
+ }
119
+
120
+ export default class EvalCorpus {
121
+ /*
122
+ * Derive the deterministic evidence stats from a run's recorded event trail
123
+ * (pure, exported for tests). Definitions, kept consistent with the live
124
+ * confidence floor:
125
+ * - citationsMinted: events carrying a citationId — the engine mints one
126
+ * citation per successful tool call, server-side, from validated args.
127
+ * - toolCallsTotal / toolCallsFailed: ToolCallCompleted + ToolCallFailed
128
+ * events. ToolCallStarted is deliberately NOT counted — a call that
129
+ * never finished (pod death mid-call) has no outcome to score.
130
+ * - dataBearingToolCalls: ToolCallCompleted events whose
131
+ * resultSummary.rowCount passes isDataBearingRowCount — the SAME helper
132
+ * the confidence floor applies to citation rowCounts.
133
+ */
134
+ public static deriveConfidenceStats(
135
+ events: Array<CorpusEventInput>,
136
+ ): GoldenCaseConfidenceStats {
137
+ let citationsMinted: number = 0;
138
+ let dataBearingToolCalls: number = 0;
139
+ let toolCallsTotal: number = 0;
140
+ let toolCallsFailed: number = 0;
141
+
142
+ for (const event of events) {
143
+ if (event.citationId) {
144
+ citationsMinted++;
145
+ }
146
+
147
+ if (event.eventType === AIRunEventType.ToolCallCompleted) {
148
+ toolCallsTotal++;
149
+
150
+ if (
151
+ AIConfidenceSignal.isDataBearingRowCount(
152
+ event.resultSummary?.rowCount,
153
+ )
154
+ ) {
155
+ dataBearingToolCalls++;
156
+ }
157
+ } else if (event.eventType === AIRunEventType.ToolCallFailed) {
158
+ toolCallsTotal++;
159
+ toolCallsFailed++;
160
+ }
161
+ }
162
+
163
+ return {
164
+ citationsMinted,
165
+ dataBearingToolCalls,
166
+ toolCallsTotal,
167
+ toolCallsFailed,
168
+ };
169
+ }
170
+
171
+ // Skeletal event projection for the exported JSON (pure, exported for tests).
172
+ public static toGoldenCaseEvents(
173
+ events: Array<CorpusEventInput>,
174
+ ): Array<GoldenCaseEvent> {
175
+ return events.map((event: CorpusEventInput) => {
176
+ let ok: boolean | undefined = undefined;
177
+
178
+ if (event.eventType === AIRunEventType.ToolCallCompleted) {
179
+ ok = true;
180
+ } else if (event.eventType === AIRunEventType.ToolCallFailed) {
181
+ ok = false;
182
+ }
183
+
184
+ return {
185
+ sequence: event.sequence || 0,
186
+ eventType: (event.eventType || "").toString(),
187
+ toolName: event.toolName,
188
+ ok,
189
+ };
190
+ });
191
+ }
192
+
193
+ /*
194
+ * Export the golden corpus: completed Investigation runs that HAVE a label
195
+ * (humanVerdict or autoGrade set — unlabeled runs carry no ground truth and
196
+ * are deliberately excluded), newest first, with their event trails.
197
+ */
198
+ @CaptureSpan()
199
+ public static async exportCorpus(
200
+ options: ExportCorpusOptions,
201
+ ): Promise<Array<GoldenCase>> {
202
+ const limit: number = Math.min(
203
+ options.limit || DEFAULT_CORPUS_LIMIT,
204
+ LIMIT_MAX,
205
+ );
206
+
207
+ const runSelect: {
208
+ _id: boolean;
209
+ projectId: boolean;
210
+ completedAt: boolean;
211
+ humanVerdict: boolean;
212
+ autoGrade: boolean;
213
+ triggeredByIncidentId: boolean;
214
+ triggeredByAlertId: boolean;
215
+ } = {
216
+ _id: true,
217
+ projectId: true,
218
+ completedAt: true,
219
+ humanVerdict: true,
220
+ autoGrade: true,
221
+ triggeredByIncidentId: true,
222
+ triggeredByAlertId: true,
223
+ };
224
+
225
+ const baseQuery: Query<AIRun> = {
226
+ runType: AIRunType.Investigation,
227
+ status: AIRunStatus.Completed,
228
+ ...(options.projectId ? { projectId: options.projectId } : {}),
229
+ };
230
+
231
+ /*
232
+ * "Has a label" is an OR (humanVerdict set OR autoGrade set); the query
233
+ * layer composes ANDs, so run the two legs separately and union by id.
234
+ */
235
+ const [humanLabeled, autoGraded]: [Array<AIRun>, Array<AIRun>] =
236
+ await Promise.all([
237
+ AIRunService.findBy({
238
+ query: { ...baseQuery, humanVerdict: QueryHelper.notNull() },
239
+ select: runSelect,
240
+ sort: { completedAt: SortOrder.Descending },
241
+ limit,
242
+ skip: 0,
243
+ props: { isRoot: true },
244
+ }),
245
+ AIRunService.findBy({
246
+ query: { ...baseQuery, autoGrade: QueryHelper.notNull() },
247
+ select: runSelect,
248
+ sort: { completedAt: SortOrder.Descending },
249
+ limit,
250
+ skip: 0,
251
+ props: { isRoot: true },
252
+ }),
253
+ ]);
254
+
255
+ const runsById: Map<string, AIRun> = new Map<string, AIRun>();
256
+
257
+ for (const run of [...humanLabeled, ...autoGraded]) {
258
+ if (run.id) {
259
+ runsById.set(run.id.toString(), run);
260
+ }
261
+ }
262
+
263
+ const labeledRuns: Array<AIRun> = Array.from(runsById.values())
264
+ .sort((a: AIRun, b: AIRun) => {
265
+ return (
266
+ (b.completedAt ? b.completedAt.getTime() : 0) -
267
+ (a.completedAt ? a.completedAt.getTime() : 0)
268
+ );
269
+ })
270
+ .slice(0, limit);
271
+
272
+ const goldenCases: Array<GoldenCase> = [];
273
+
274
+ for (const run of labeledRuns) {
275
+ const subjectType: GoldenCaseSubjectType | null =
276
+ this.getSubjectType(run);
277
+
278
+ if (!subjectType) {
279
+ // An Investigation run always has a subject; be defensive anyway.
280
+ logger.debug(
281
+ `Eval corpus: run ${run.id?.toString()} has no incident/alert subject — skipped.`,
282
+ );
283
+ continue;
284
+ }
285
+
286
+ const events: Array<AIRunEvent> = await AIRunEventService.findBy({
287
+ query: { aiRunId: run.id! },
288
+ select: {
289
+ sequence: true,
290
+ eventType: true,
291
+ toolName: true,
292
+ citationId: true,
293
+ resultSummary: true,
294
+ },
295
+ sort: { sequence: SortOrder.Ascending },
296
+ limit: LIMIT_MAX,
297
+ skip: 0,
298
+ props: { isRoot: true },
299
+ });
300
+
301
+ goldenCases.push({
302
+ runId: run.id!.toString(),
303
+ projectId: run.projectId!.toString(),
304
+ subjectType,
305
+ completedAt: run.completedAt
306
+ ? new Date(run.completedAt).toISOString()
307
+ : undefined,
308
+ label: {
309
+ humanVerdict: run.humanVerdict,
310
+ autoGrade: run.autoGrade,
311
+ },
312
+ confidence: this.deriveConfidenceStats(events),
313
+ analysisPosted: await this.hasPostedAnalysis(run, subjectType),
314
+ events: this.toGoldenCaseEvents(events),
315
+ });
316
+ }
317
+
318
+ return goldenCases;
319
+ }
320
+
321
+ private static getSubjectType(run: AIRun): GoldenCaseSubjectType | null {
322
+ if (run.triggeredByIncidentId) {
323
+ return "Incident";
324
+ }
325
+
326
+ if (run.triggeredByAlertId) {
327
+ return "Alert";
328
+ }
329
+
330
+ return null;
331
+ }
332
+
333
+ /*
334
+ * Whether the AI's analysis was posted for the run's subject: a RootCause
335
+ * feed item exists (postAnalysis is its only writer — the sourcing rule
336
+ * shared with InvestigationGrader). Subject-level, not run-level; see the
337
+ * GoldenCase.analysisPosted doc comment.
338
+ */
339
+ private static async hasPostedAnalysis(
340
+ run: AIRun,
341
+ subjectType: GoldenCaseSubjectType,
342
+ ): Promise<boolean> {
343
+ if (subjectType === "Incident") {
344
+ const count: number = (
345
+ await IncidentFeedService.countBy({
346
+ query: {
347
+ incidentId: run.triggeredByIncidentId!,
348
+ incidentFeedEventType: IncidentFeedEventType.RootCause,
349
+ },
350
+ props: { isRoot: true },
351
+ })
352
+ ).toNumber();
353
+
354
+ return count > 0;
355
+ }
356
+
357
+ const count: number = (
358
+ await AlertFeedService.countBy({
359
+ query: {
360
+ alertId: run.triggeredByAlertId!,
361
+ alertFeedEventType: AlertFeedEventType.RootCause,
362
+ },
363
+ props: { isRoot: true },
364
+ })
365
+ ).toNumber();
366
+
367
+ return count > 0;
368
+ }
369
+ }
@@ -0,0 +1,172 @@
1
+ import AIRunHumanVerdict from "../../../../Types/AI/AIRunHumanVerdict";
2
+ import AIRunAutoGrade from "../../../../Types/AI/AIRunAutoGrade";
3
+ import AIConfidenceSignal from "../SRE/ConfidenceSignal";
4
+ import { GoldenCase, GoldenCaseConfidenceStats } from "./EvalCorpus";
5
+
6
+ /*
7
+ * AI eval harness — scoring (G3 bootstrap). Pure: given a GoldenCase
8
+ * corpus (EvalCorpus.ts), compute the four roadmap scores from recorded runs
9
+ * and their labels — no LLM is re-run, no database is touched.
10
+ *
11
+ * HONESTY RULE (same as the fix-PR acceptance-rate work): every score is
12
+ * {value, numerator, denominator} and value is NULL when the denominator is
13
+ * zero. A score that cannot be measured reports "not measurable", never a
14
+ * fake 0% or 100%.
15
+ *
16
+ * The two accuracy signals are deliberately NOT blended: autoGrade (the
17
+ * on-resolve LLM comparison against Incident.rootCause) and humanVerdict (the
18
+ * one-click panel judgment) measure different things with different biases —
19
+ * report both, let the reader weigh them.
20
+ */
21
+
22
+ export interface EvalScore {
23
+ // numerator / denominator, or null when denominator is 0 (not measurable).
24
+ value: number | null;
25
+ numerator: number;
26
+ denominator: number;
27
+ }
28
+
29
+ /*
30
+ * Below this many labeled cases the numbers are noise, not measurement. The
31
+ * runner must surface this loudly; nothing downstream (G3 graduation, public
32
+ * scorecards) may consume a report whose sampleTooSmall is true.
33
+ */
34
+ export const MINIMUM_TRUSTWORTHY_CORPUS_SIZE: number = 20;
35
+
36
+ export interface EvalScoreReport {
37
+ caseCount: number;
38
+ sampleTooSmall: boolean;
39
+ /*
40
+ * Of the auto-graded cases: fraction graded Match.
41
+ * numerator = autoGrade === Match; denominator = autoGrade set (any value).
42
+ */
43
+ topHypothesisPrecision: EvalScore;
44
+ /*
45
+ * Of the human-labeled cases: fraction Confirmed. Reported separately from
46
+ * topHypothesisPrecision — never blended.
47
+ */
48
+ humanConfirmedRate: EvalScore;
49
+ /*
50
+ * Of the cases whose analysis was posted: fraction with at least one
51
+ * server-minted citation backing it.
52
+ */
53
+ citationGroundingRate: EvalScore;
54
+ /*
55
+ * Of ALL finished tool calls across the corpus (aggregated, not
56
+ * mean-of-per-run-means — small runs must not dominate): fraction that
57
+ * returned data.
58
+ */
59
+ toolSelectionAccuracy: EvalScore;
60
+ /*
61
+ * Of the human-REJECTED cases: fraction the deterministic evidence floor
62
+ * (ConfidenceSignal) would have flagged inconclusive on its own — i.e. the
63
+ * floor's recall of bad analyses, measured against human ground truth.
64
+ */
65
+ inconclusiveRecall: EvalScore;
66
+ }
67
+
68
+ export default class EvalScores {
69
+ // Build a score with the null-when-unmeasurable rule applied.
70
+ public static makeScore(numerator: number, denominator: number): EvalScore {
71
+ return {
72
+ value: denominator === 0 ? null : numerator / denominator,
73
+ numerator,
74
+ denominator,
75
+ };
76
+ }
77
+
78
+ /*
79
+ * Would the deterministic evidence floor have flagged this run inconclusive?
80
+ * Reuses AIConfidenceSignal.hasVerifiableEvidence — the LIVE floor —
81
+ * over the corpus stats, so the offline answer can never drift from what
82
+ * production would actually have decided: zero citations minted AND zero
83
+ * data-bearing tool calls.
84
+ */
85
+ public static wouldDeterministicFloorFlagInconclusive(
86
+ confidence: GoldenCaseConfidenceStats,
87
+ ): boolean {
88
+ return !AIConfidenceSignal.hasVerifiableEvidence({
89
+ citationCount: confidence.citationsMinted,
90
+ dataBearingToolCallCount: confidence.dataBearingToolCalls,
91
+ anyToolReturnedData: confidence.dataBearingToolCalls > 0,
92
+ });
93
+ }
94
+
95
+ public static computeScores(cases: Array<GoldenCase>): EvalScoreReport {
96
+ let gradedCount: number = 0;
97
+ let gradedMatchCount: number = 0;
98
+
99
+ let humanLabeledCount: number = 0;
100
+ let humanConfirmedCount: number = 0;
101
+
102
+ let analysisPostedCount: number = 0;
103
+ let analysisPostedWithCitationCount: number = 0;
104
+
105
+ let toolCallsTotal: number = 0;
106
+ let dataBearingToolCalls: number = 0;
107
+
108
+ let humanRejectedCount: number = 0;
109
+ let humanRejectedFloorFlaggedCount: number = 0;
110
+
111
+ for (const goldenCase of cases) {
112
+ if (goldenCase.label.autoGrade) {
113
+ gradedCount++;
114
+
115
+ if (goldenCase.label.autoGrade === AIRunAutoGrade.Match) {
116
+ gradedMatchCount++;
117
+ }
118
+ }
119
+
120
+ if (goldenCase.label.humanVerdict) {
121
+ humanLabeledCount++;
122
+
123
+ if (goldenCase.label.humanVerdict === AIRunHumanVerdict.Confirmed) {
124
+ humanConfirmedCount++;
125
+ }
126
+
127
+ if (goldenCase.label.humanVerdict === AIRunHumanVerdict.Rejected) {
128
+ humanRejectedCount++;
129
+
130
+ if (
131
+ this.wouldDeterministicFloorFlagInconclusive(goldenCase.confidence)
132
+ ) {
133
+ humanRejectedFloorFlaggedCount++;
134
+ }
135
+ }
136
+ }
137
+
138
+ if (goldenCase.analysisPosted) {
139
+ analysisPostedCount++;
140
+
141
+ if (goldenCase.confidence.citationsMinted > 0) {
142
+ analysisPostedWithCitationCount++;
143
+ }
144
+ }
145
+
146
+ toolCallsTotal += goldenCase.confidence.toolCallsTotal;
147
+ dataBearingToolCalls += goldenCase.confidence.dataBearingToolCalls;
148
+ }
149
+
150
+ return {
151
+ caseCount: cases.length,
152
+ sampleTooSmall: cases.length < MINIMUM_TRUSTWORTHY_CORPUS_SIZE,
153
+ topHypothesisPrecision: this.makeScore(gradedMatchCount, gradedCount),
154
+ humanConfirmedRate: this.makeScore(
155
+ humanConfirmedCount,
156
+ humanLabeledCount,
157
+ ),
158
+ citationGroundingRate: this.makeScore(
159
+ analysisPostedWithCitationCount,
160
+ analysisPostedCount,
161
+ ),
162
+ toolSelectionAccuracy: this.makeScore(
163
+ dataBearingToolCalls,
164
+ toolCallsTotal,
165
+ ),
166
+ inconclusiveRecall: this.makeScore(
167
+ humanRejectedFloorFlaggedCount,
168
+ humanRejectedCount,
169
+ ),
170
+ };
171
+ }
172
+ }
@@ -0,0 +1,87 @@
1
+ import NotImplementedException from "../../../../Types/Exception/NotImplementedException";
2
+ import { AIChatCitation } from "../../../../Types/AI/AIChatTypes";
3
+ import { GoldenCase } from "./EvalCorpus";
4
+
5
+ /*
6
+ * AI eval harness — OFFLINE REPLAY (not implemented; this file is the
7
+ * explicit extension point, so the gap is documented instead of pretended
8
+ * away).
9
+ *
10
+ * WHAT REPLAY MEANS HERE: re-run the investigation agent loop against the
11
+ * RECORDED tool results of a golden case, so a prompt/persona/model change can
12
+ * be scored on the exact same evidence the original run saw — deterministic
13
+ * inputs, no live telemetry, no flakiness from data that has since expired.
14
+ *
15
+ * WHY IT CANNOT BE BUILT FROM TODAY'S RECORDED TRAILS (verified against
16
+ * AIInvestigationEngine.emitEvent + ChatAgentRunner.emitEvent):
17
+ * AIRunEvent persists the validated tool ARGUMENTS (`toolArguments`) and a
18
+ * result SUMMARY only — `resultSummary` carries rowCount, durationInMs,
19
+ * isTruncated, bytesSentToLlm and errorMessage (AIRunEventResultSummary). The
20
+ * actual result payload the LLM read (the serialized, redacted, truncated
21
+ * tool output) is never persisted anywhere: not on the event, not on the run,
22
+ * not in LlmLog (investigations set storeContentPreviews: false by design —
23
+ * G8). We know HOW MANY bytes each tool sent to the LLM, but not WHICH bytes.
24
+ *
25
+ * CONSEQUENCE: a "replay" today could only re-EXECUTE the recorded
26
+ * `toolArguments` against live telemetry (they are replayable by construction
27
+ * — citations carry them for exactly that reason). That is a re-query, not a
28
+ * replay: ClickHouse retention windows (metrics default to days, not months)
29
+ * mean the data behind a weeks-old golden case is usually gone, and even
30
+ * fresh data may have changed. Scoring a model change on re-queried data is
31
+ * NOT scoring it on the golden corpus.
32
+ *
33
+ * WHAT FULL REPLAY NEEDS (in dependency order):
34
+ *
35
+ * 1. RECORD TOOL RESULTS: persist the serialized (redacted + truncated —
36
+ * the exact text handed to the LLM, AFTER Toolbox/Serializer.ts ran)
37
+ * result payload per ToolCallCompleted event. Design constraints: G8
38
+ * applies (these payloads embed telemetry with narrower ACLs than the
39
+ * event table's project-member read — they need the same access-tiering
40
+ * review as LlmLog previews, plus a retention policy); size is bounded
41
+ * by the serializer's existing truncation caps, so a JSON/text column on
42
+ * AIRunEvent or a side table both work.
43
+ *
44
+ * 2. A RECORDED-RESULT TOOL TRANSPORT: a Toolbox-shaped shim the agent loop
45
+ * can run against, serving recorded results keyed by (toolName,
46
+ * canonicalized arguments) and falling to an explicit "not recorded"
47
+ * tool error when the replayed model asks something the original never
48
+ * asked. That divergence is itself signal — count it, don't hide it.
49
+ *
50
+ * 3. PINNED MODEL CONFIG + SCORING HOOKUP: replay with an explicit
51
+ * provider/model/temperature (otherwise scores measure provider drift,
52
+ * not the change under test), then feed the replayed analyses through
53
+ * the same labels/scores as the recorded runs (EvalScores.ts) so
54
+ * before/after is apples-to-apples.
55
+ *
56
+ * Until (1) exists for newly recorded runs, no historical run can ever be
57
+ * replayed — recording tool results is the prerequisite that only pays off
58
+ * for runs recorded AFTER it ships. That is why the corpus/scoring bootstrap
59
+ * shipped first: labels make recorded runs scorable today, replay makes
60
+ * FUTURE changes testable against them tomorrow.
61
+ */
62
+
63
+ // What a completed replay would produce for scoring.
64
+ export interface ReplayResult {
65
+ runId: string;
66
+ // The replayed agent's analysis, ready for grading against the case labels.
67
+ analysisMarkdown: string;
68
+ // Citations minted during the replay (server-side, as in live runs).
69
+ citations: Array<AIChatCitation>;
70
+ /*
71
+ * Tool calls the replayed model made that the original run never recorded —
72
+ * replay cannot answer them; a high count means the replayed prompt/model
73
+ * diverged too far from the recording for scores to be comparable.
74
+ */
75
+ unrecordedToolCallCount: number;
76
+ }
77
+
78
+ export default class ReplayInvestigation {
79
+ /*
80
+ * NOT IMPLEMENTED — see the module doc block for exactly what is missing
81
+ * (recorded tool RESULT payloads; today's AIRunEvent trail carries argument
82
+ * + summary only).
83
+ */
84
+ public static async replay(_goldenCase: GoldenCase): Promise<ReplayResult> {
85
+ throw new NotImplementedException();
86
+ }
87
+ }