@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.
- package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +56 -45
- package/Models/DatabaseModels/AIInsight.ts +748 -0
- package/Models/DatabaseModels/AIRun.ts +262 -0
- package/Models/DatabaseModels/CodeRepository.ts +42 -0
- package/Models/DatabaseModels/GlobalConfig.ts +105 -0
- package/Models/DatabaseModels/Index.ts +4 -8
- package/Models/DatabaseModels/InstanceHealthLog.ts +277 -0
- package/Models/DatabaseModels/LlmLog.ts +33 -0
- package/Models/DatabaseModels/Project.ts +123 -6
- package/Models/DatabaseModels/Runbook.ts +1 -1
- package/Server/API/AIAgentDataAPI.ts +802 -140
- package/Server/API/AIAgentTaskAPI.ts +132 -69
- package/Server/API/AIAgentTaskLogAPI.ts +65 -41
- package/Server/API/AIAgentTaskPullRequestAPI.ts +41 -0
- package/Server/API/AIInsightAPI.ts +220 -0
- package/Server/API/AIInvestigationAPI.ts +363 -1
- package/Server/API/CodeFixRunAPI.ts +251 -0
- package/Server/API/GitHubAPI.ts +246 -3
- package/Server/API/TelemetryExceptionAPI.ts +193 -48
- package/Server/EnvironmentConfig.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.ts +26 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.ts +73 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.ts +51 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.ts +53 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.ts +75 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.ts +203 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.ts +163 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +30 -0
- package/Server/Infrastructure/Queue.ts +82 -4
- package/Server/Infrastructure/Semaphore.ts +62 -1
- package/Server/Services/AIAgentService.ts +32 -0
- package/Server/Services/AIAgentTaskPullRequestService.ts +117 -0
- package/Server/Services/AIInsightService.ts +174 -0
- package/Server/Services/AIRunEventService.ts +63 -0
- package/Server/Services/AIRunService.ts +259 -1
- package/Server/Services/AIService.ts +249 -7
- package/Server/Services/AlertService.ts +4 -4
- package/Server/Services/CodeRepositoryService.ts +209 -0
- package/Server/Services/GlobalConfigService.ts +148 -0
- package/Server/Services/IncidentService.ts +183 -38
- package/Server/Services/IncidentStateTimelineService.ts +24 -4
- package/Server/Services/Index.ts +4 -4
- package/Server/Services/{AIAgentTaskLogService.ts → InstanceHealthLogService.ts} +1 -1
- package/Server/Services/LlmLogService.ts +27 -0
- package/Server/Services/LlmProviderService.ts +108 -0
- package/Server/Services/MetricBaselineService.ts +123 -0
- package/Server/Services/MonitorService.ts +15 -0
- package/Server/Services/TelemetryExceptionService.ts +323 -116
- package/Server/Services/TraceAggregationService.ts +176 -0
- package/Server/Types/Workflow/ComponentCode.ts +6 -0
- package/Server/Types/Workflow/Components/AI/GenerateText.ts +326 -0
- package/Server/Types/Workflow/Components/Index.ts +2 -0
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +1 -1
- package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +71 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +243 -0
- package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +131 -0
- package/Server/Utils/AI/CodeFix/FixRunBudget.ts +148 -0
- package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +117 -0
- package/Server/Utils/AI/Eval/EvalCorpus.ts +369 -0
- package/Server/Utils/AI/Eval/EvalScores.ts +172 -0
- package/Server/Utils/AI/Eval/ReplayInvestigation.ts +87 -0
- package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +676 -0
- package/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.ts → SRE/AIInvestigationEngine.ts} +58 -37
- package/Server/Utils/AI/{Sentinel/SentinelMemory.ts → SRE/AIMemory.ts} +3 -3
- package/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.ts +50 -20
- package/Server/Utils/AI/SRE/ConfidenceSignal.ts +293 -0
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +115 -0
- package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +223 -0
- package/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.ts +71 -21
- package/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.ts +8 -8
- package/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.ts +364 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +317 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/Index.ts +27 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.ts +221 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +238 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.ts +521 -0
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +242 -0
- package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +290 -0
- package/Server/Utils/AI/SRE/Insights/InsightStore.ts +283 -0
- package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +242 -0
- package/Server/Utils/AI/SRE/Insights/Triage.ts +162 -0
- package/Server/Utils/AI/SRE/Insights/Types.ts +49 -0
- package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +212 -0
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +282 -0
- package/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.ts +114 -19
- package/Server/Utils/AI/{Sentinel → SRE}/README.md +4 -4
- package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +172 -0
- package/Server/Utils/AI/Toolbox/{SentinelActionTools.ts → AIActionTools.ts} +22 -1
- package/Server/Utils/AI/Toolbox/Index.ts +2 -2
- package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +526 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +319 -1
- package/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.ts +221 -0
- package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +571 -0
- package/Server/Utils/Execute.ts +2 -1
- package/Server/Utils/LLM/LLMService.ts +160 -30
- package/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.ts +152 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +29 -0
- package/Tests/Server/Infrastructure/Queue.test.ts +227 -0
- package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +159 -0
- package/Tests/Server/Services/AIAgentTaskPullRequestOutcomeStats.test.ts +154 -0
- package/Tests/Server/Services/AIInsightService.test.ts +324 -0
- package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +401 -0
- package/Tests/Server/Services/AIRunHumanVerdict.test.ts +161 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +95 -5
- package/Tests/Server/Services/AIServiceProjectAccess.test.ts +259 -0
- package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +249 -0
- package/Tests/Server/Services/FixPerformanceTaskTrigger.test.ts +274 -0
- package/Tests/Server/Services/GlobalConfigService.test.ts +80 -0
- package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +1 -1
- package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +313 -0
- package/Tests/Server/Services/LlmProviderProjectOwned.test.ts +132 -0
- package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +405 -0
- package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +322 -0
- package/Tests/Server/Services/TraceServiceLatencyProfile.test.ts +278 -0
- package/Tests/Server/Types/Workflow/Components/AIGenerateText.test.ts +722 -0
- package/Tests/Server/Utils/AI/{SentinelAlertGating.test.ts → AIAlertGating.test.ts} +19 -19
- package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +362 -0
- package/Tests/Server/Utils/AI/{SentinelInvestigationQueue.test.ts → AIInvestigationQueue.test.ts} +19 -19
- package/Tests/Server/Utils/AI/CodeAgentWorkspaceGuard.test.ts +138 -0
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +335 -0
- package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +134 -0
- package/Tests/Server/Utils/AI/EvalCorpus.test.ts +209 -0
- package/Tests/Server/Utils/AI/EvalScores.test.ts +343 -0
- package/Tests/Server/Utils/AI/FixRunBudget.test.ts +218 -0
- package/Tests/Server/Utils/AI/Insights/ErrorLogSpikeDetector.test.ts +437 -0
- package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +287 -0
- package/Tests/Server/Utils/AI/Insights/InsightDetectorsIndex.test.ts +34 -0
- package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +572 -0
- package/Tests/Server/Utils/AI/Insights/InsightNeverThrowsHardening.test.ts +344 -0
- package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +720 -0
- package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +467 -0
- package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +370 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +210 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +221 -0
- package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +328 -0
- package/Tests/Server/Utils/AI/Insights/MetricBaselineDrift.test.ts +182 -0
- package/Tests/Server/Utils/AI/Insights/MetricDriftDetector.test.ts +280 -0
- package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +259 -0
- package/Tests/Server/Utils/AI/Insights/TraceLatencyRegressionDetector.test.ts +770 -0
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +343 -0
- package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +307 -0
- package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +170 -0
- package/Tests/Server/Utils/AI/SpanTreeAnalyzer.test.ts +559 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +158 -0
- package/Tests/Server/Utils/GitHubCheckRunsConclusion.test.ts +100 -0
- package/Tests/Server/Utils/GitHubPullRequestStateMapping.test.ts +50 -0
- package/Tests/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.test.ts +266 -0
- package/Tests/Server/Utils/ServiceRepoLinkSuggester.test.ts +167 -0
- package/Tests/Server/Utils/StackTraceRepoResolver.test.ts +527 -0
- package/Tests/Types/AI/AIChatPermissionMode.test.ts +112 -0
- package/Tests/Types/AI/CodeFixTaskType.test.ts +152 -0
- package/Tests/Types/AI/FixPullRequestCiStatus.test.ts +181 -0
- package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +110 -0
- package/Tests/Types/Monitor/SqlDatabaseType.test.ts +55 -0
- package/Tests/Types/Workflow/AIGenerateTextMetadata.test.ts +180 -0
- package/Tests/UI/Components/TableBulkCsvExport.test.tsx +168 -0
- package/Tests/UI/Utils/TableColumnsToCsv.test.ts +523 -0
- package/Types/AI/AIChatTypes.ts +8 -0
- package/Types/AI/AIInsightEvidence.ts +77 -0
- package/Types/AI/AIInsightHumanVerdict.ts +15 -0
- package/Types/AI/AIInsightSeverity.ts +13 -0
- package/Types/AI/AIInsightStatus.ts +38 -0
- package/Types/AI/AIInsightType.ts +41 -0
- package/Types/AI/AIRunAutoGrade.ts +18 -0
- package/Types/AI/AIRunEventType.ts +5 -0
- package/Types/AI/AIRunHumanVerdict.ts +17 -0
- package/Types/AI/AIRunType.ts +6 -0
- package/Types/AI/CodeFixTaskContext.ts +88 -0
- package/Types/AI/CodeFixTaskType.ts +132 -0
- package/Types/AI/FixPullRequestCiStatus.ts +132 -0
- package/Types/BaseDatabase/AggregationIntervalUtil.ts +67 -0
- package/Types/Incident/IncidentMetricType.ts +7 -0
- package/Types/Monitor/CriteriaFilter.ts +8 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
- package/Types/Monitor/MonitorStep.ts +38 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +141 -0
- package/Types/Monitor/MonitorType.ts +17 -0
- package/Types/Monitor/SqlDatabaseType.ts +49 -0
- package/Types/Monitor/SqlMonitor/SqlMonitorResponse.ts +28 -0
- package/Types/Permission.ts +11 -95
- package/Types/Probe/ProbeMonitorResponse.ts +2 -0
- package/Types/Runbook/RunbookStep.ts +26 -2
- package/Types/Runbook/RunbookStepType.ts +1 -0
- package/Types/Workflow/Component.ts +13 -0
- package/Types/Workflow/ComponentID.ts +1 -0
- package/Types/Workflow/Components/AI.ts +148 -0
- package/Types/Workflow/Components.ts +8 -0
- package/UI/Components/AI/GenerateFromAIModal.tsx +1 -1
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +11 -0
- package/UI/Components/MoreMenu/MoreMenu.tsx +1 -1
- package/UI/Components/Table/Table.tsx +38 -2
- package/UI/Utils/TableColumnsToCsv.ts +385 -0
- package/Utils/Monitor/MonitorMetricType.ts +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +59 -45
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIInsight.js +795 -0
- package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIRun.js +274 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +43 -0
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +110 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +4 -8
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +304 -0
- package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LlmLog.js +35 -0
- package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +127 -6
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Runbook.js +1 -1
- package/build/dist/Models/DatabaseModels/Runbook.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +568 -85
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +100 -44
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +49 -25
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +27 -0
- package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -1
- package/build/dist/Server/API/AIInsightAPI.js +140 -0
- package/build/dist/Server/API/AIInsightAPI.js.map +1 -0
- package/build/dist/Server/API/AIInvestigationAPI.js +257 -1
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/CodeFixRunAPI.js +181 -0
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -0
- package/build/dist/Server/API/GitHubAPI.js +164 -2
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +148 -43
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +1 -1
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783943300000-DropServiceCodeRepository.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783947444597-CodeFixRunsOnAIRun.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783950962813-AddCodeFixTaskType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783954040984-AddInstrumentationFixTasksFlag.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783957160597-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783958542237-AddTaskContextToAIRun.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783965945957-AddInvestigationVerdictAndGrade.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619301-AddFixGuardrailColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783970619302-DropLegacyAIAgentTaskTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783977781677-AddCiStatusToFixPullRequests.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783990000000-AddCompletionTokensToLlmLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274993-AddSentinelInsight.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784010274994-AddSentinelInsightFlags.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js +125 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784030612266-RenameSentinelToAI.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js +62 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784033837629-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +73 -3
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Infrastructure/Semaphore.js +44 -1
- package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
- package/build/dist/Server/Services/AIAgentService.js +29 -0
- package/build/dist/Server/Services/AIAgentService.js.map +1 -1
- package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +78 -0
- package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -1
- package/build/dist/Server/Services/AIInsightService.js +164 -0
- package/build/dist/Server/Services/AIInsightService.js.map +1 -0
- package/build/dist/Server/Services/AIRunEventService.js +49 -0
- package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +221 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +198 -11
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +4 -4
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/CodeRepositoryService.js +180 -0
- package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
- package/build/dist/Server/Services/GlobalConfigService.js +84 -0
- package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +149 -37
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +24 -4
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -4
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/{AIAgentTaskLogService.js → InstanceHealthLogService.js} +2 -2
- package/build/dist/Server/Services/InstanceHealthLogService.js.map +1 -0
- package/build/dist/Server/Services/LlmLogService.js +23 -0
- package/build/dist/Server/Services/LlmLogService.js.map +1 -1
- package/build/dist/Server/Services/LlmProviderService.js +96 -0
- package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
- package/build/dist/Server/Services/MetricBaselineService.js +65 -0
- package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +9 -1
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +243 -82
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +124 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js +240 -0
- package/build/dist/Server/Types/Workflow/Components/AI/GenerateText.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
- package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +48 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +174 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +126 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +131 -0
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +99 -0
- package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -0
- package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js +245 -0
- package/build/dist/Server/Utils/AI/Eval/EvalCorpus.js.map +1 -0
- package/build/dist/Server/Utils/AI/Eval/EvalScores.js +83 -0
- package/build/dist/Server/Utils/AI/Eval/EvalScores.js.map +1 -0
- package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js +12 -0
- package/build/dist/Server/Utils/AI/Eval/ReplayInvestigation.js.map +1 -0
- package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +439 -0
- package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel/SentinelInvestigationEngine.js → SRE/AIInvestigationEngine.js} +47 -31
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel/SentinelMemory.js → SRE/AIMemory.js} +5 -5
- package/build/dist/Server/Utils/AI/SRE/AIMemory.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel → SRE}/AlertInvestigationRunner.js +42 -19
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +226 -0
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +100 -0
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +174 -0
- package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentInvestigationRunner.js +60 -22
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel → SRE}/IncidentPostmortemRunner.js +9 -9
- package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js +268 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ErrorLogSpikeDetector.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +226 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js +26 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/Index.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js +159 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/MetricDriftDetector.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +177 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js +384 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/TraceLatencyRegressionDetector.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +180 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +269 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +231 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +206 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +121 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Types.js +2 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Types.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +148 -0
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +231 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -0
- package/build/dist/Server/Utils/AI/{Sentinel → SRE}/InvestigationQueue.js +102 -23
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +167 -0
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/{SentinelActionTools.js → AIActionTools.js} +18 -2
- package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -2
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +301 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +240 -2
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js +127 -0
- package/build/dist/Server/Utils/CodeRepository/ServiceRepoLinkSuggester.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +336 -0
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -0
- package/build/dist/Server/Utils/Execute.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +125 -25
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js +120 -0
- package/build/dist/Server/Utils/Monitor/Criteria/SqlMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Types/AI/AIInsightEvidence.js +2 -0
- package/build/dist/Types/AI/AIInsightEvidence.js.map +1 -0
- package/build/dist/Types/AI/AIInsightHumanVerdict.js +16 -0
- package/build/dist/Types/AI/AIInsightHumanVerdict.js.map +1 -0
- package/build/dist/Types/AI/AIInsightSeverity.js +14 -0
- package/build/dist/Types/AI/AIInsightSeverity.js.map +1 -0
- package/build/dist/Types/AI/AIInsightStatus.js +36 -0
- package/build/dist/Types/AI/AIInsightStatus.js.map +1 -0
- package/build/dist/Types/AI/AIInsightType.js +42 -0
- package/build/dist/Types/AI/AIInsightType.js.map +1 -0
- package/build/dist/Types/AI/AIRunAutoGrade.js +19 -0
- package/build/dist/Types/AI/AIRunAutoGrade.js.map +1 -0
- package/build/dist/Types/AI/AIRunEventType.js +5 -0
- package/build/dist/Types/AI/AIRunEventType.js.map +1 -1
- package/build/dist/Types/AI/AIRunHumanVerdict.js +18 -0
- package/build/dist/Types/AI/AIRunHumanVerdict.js.map +1 -0
- package/build/dist/Types/AI/AIRunType.js +6 -0
- package/build/dist/Types/AI/AIRunType.js.map +1 -1
- package/build/dist/Types/AI/CodeFixTaskContext.js +29 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -0
- package/build/dist/Types/AI/CodeFixTaskType.js +122 -0
- package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -0
- package/build/dist/Types/AI/FixPullRequestCiStatus.js +102 -0
- package/build/dist/Types/AI/FixPullRequestCiStatus.js.map +1 -0
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +55 -0
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
- package/build/dist/Types/Incident/IncidentMetricType.js +7 -0
- package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +7 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +28 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +93 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +15 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SqlDatabaseType.js +47 -0
- package/build/dist/Types/Monitor/SqlDatabaseType.js.map +1 -0
- package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js +2 -0
- package/build/dist/Types/Monitor/SqlMonitor/SqlMonitorResponse.js.map +1 -0
- package/build/dist/Types/Permission.js +10 -84
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Runbook/RunbookStepType.js +1 -0
- package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
- package/build/dist/Types/Workflow/ComponentID.js +1 -0
- package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
- package/build/dist/Types/Workflow/Components/AI.js +135 -0
- package/build/dist/Types/Workflow/Components/AI.js.map +1 -0
- package/build/dist/Types/Workflow/Components.js +7 -0
- package/build/dist/Types/Workflow/Components.js.map +1 -1
- package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -1
- package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +9 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +1 -1
- package/build/dist/UI/Components/Table/Table.js +28 -2
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Utils/TableColumnsToCsv.js +291 -0
- package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/package.json +1 -1
- package/Models/DatabaseModels/AIAgentTask.ts +0 -660
- package/Models/DatabaseModels/AIAgentTaskLog.ts +0 -426
- package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +0 -399
- package/Models/DatabaseModels/ServiceCodeRepository.ts +0 -647
- package/Server/Services/AIAgentTaskService.ts +0 -240
- package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +0 -39
- package/Server/Services/ServiceCodeRepositoryService.ts +0 -55
- package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +0 -146
- package/Types/AI/AIAgentTaskMetadata.ts +0 -25
- package/Types/AI/AIAgentTaskType.ts +0 -40
- package/build/dist/Models/DatabaseModels/AIAgentTask.js +0 -691
- package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +0 -1
- package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +0 -447
- package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +0 -1
- package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +0 -415
- package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +0 -1
- package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js +0 -665
- package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +0 -1
- package/build/dist/Server/Services/AIAgentTaskLogService.js.map +0 -1
- package/build/dist/Server/Services/AIAgentTaskService.js +0 -217
- package/build/dist/Server/Services/AIAgentTaskService.js.map +0 -1
- package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +0 -36
- package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +0 -1
- package/build/dist/Server/Services/ServiceCodeRepositoryService.js +0 -54
- package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +0 -1
- package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +0 -1
- package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +0 -1
- package/build/dist/Types/AI/AIAgentTaskMetadata.js +0 -6
- package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +0 -1
- package/build/dist/Types/AI/AIAgentTaskType.js +0 -29
- package/build/dist/Types/AI/AIAgentTaskType.js.map +0 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import OneUptimeDate from "../../../../Types/Date";
|
|
11
|
+
import AIRunType from "../../../../Types/AI/AIRunType";
|
|
12
|
+
import AIRunStatus from "../../../../Types/AI/AIRunStatus";
|
|
13
|
+
import AIRunAutoGrade from "../../../../Types/AI/AIRunAutoGrade";
|
|
14
|
+
import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
|
|
15
|
+
import { IncidentFeedEventType, } from "../../../../Models/DatabaseModels/IncidentFeed";
|
|
16
|
+
import AIRunService from "../../../Services/AIRunService";
|
|
17
|
+
import IncidentService from "../../../Services/IncidentService";
|
|
18
|
+
import IncidentFeedService from "../../../Services/IncidentFeedService";
|
|
19
|
+
import AIService, { AI_INVESTIGATION_GRADING_FEATURE, } from "../../../Services/AIService";
|
|
20
|
+
import logger from "../../Logger";
|
|
21
|
+
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
22
|
+
/*
|
|
23
|
+
* AI SRE — on-resolve investigation grading (Phase 2 measurement layer).
|
|
24
|
+
*
|
|
25
|
+
* When an incident resolves with a human-recorded root cause AND a completed
|
|
26
|
+
* AI investigation exists for it, ONE constrained LLM call compares the
|
|
27
|
+
* investigation's posted analysis (the RootCause feed item — the only
|
|
28
|
+
* persisted copy, the same source the fix recipes read) with
|
|
29
|
+
* Incident.rootCause and stores MATCH / PARTIAL / MISMATCH on the run
|
|
30
|
+
* (AIRun.autoGrade + autoGradeAt). This feeds the vision §8 accuracy metrics
|
|
31
|
+
* and the G3 eval work.
|
|
32
|
+
*
|
|
33
|
+
* Trigger idiom mirrors IncidentPostmortemRunner: fired (fire-and-forget)
|
|
34
|
+
* from IncidentStateTimelineService when the incident enters a resolved
|
|
35
|
+
* state; never throws, never blocks the resolve. Deduped via autoGrade — a
|
|
36
|
+
* run is graded at most once. Budgeted: the feature is in
|
|
37
|
+
* AUTONOMOUS_AI_FEATURES, so the daily autonomous token budget covers it.
|
|
38
|
+
*
|
|
39
|
+
* Incidents only for now: alerts do have a rootCause column, but no
|
|
40
|
+
* human-authored resolution flow populates it the way incident resolution
|
|
41
|
+
* does — grade quality there is unproven, so the alert side is deliberately
|
|
42
|
+
* skipped (noted in the roadmap).
|
|
43
|
+
*/
|
|
44
|
+
/*
|
|
45
|
+
* Persisted LlmLog label. Owned by AIService so this writer and the G4 budget
|
|
46
|
+
* match-list (AUTONOMOUS_AI_FEATURES) can never drift — a drift here would
|
|
47
|
+
* silently drop grading out of the daily budget forever.
|
|
48
|
+
*/
|
|
49
|
+
const FEATURE_NAME = AI_INVESTIGATION_GRADING_FEATURE;
|
|
50
|
+
// Truncation caps keep the comparison call cheap and inside context limits.
|
|
51
|
+
const MAX_ANALYSIS_CHARS = 8000;
|
|
52
|
+
const MAX_ROOT_CAUSE_CHARS = 2000;
|
|
53
|
+
// Word-bounded token matchers (hoisted: wrap-regex and prettier disagree inline).
|
|
54
|
+
const MISMATCH_RE = /\bMISMATCH\b/;
|
|
55
|
+
const PARTIAL_RE = /\bPARTIAL\b/;
|
|
56
|
+
const MATCH_RE = /\bMATCH\b/;
|
|
57
|
+
export default class InvestigationGrader {
|
|
58
|
+
/*
|
|
59
|
+
* Pure gating decision (exported for tests): grade only when a completed
|
|
60
|
+
* investigation run exists, it has not been graded yet (dedupe), and the
|
|
61
|
+
* incident carries a non-empty human-recorded root cause to grade against.
|
|
62
|
+
*/
|
|
63
|
+
static shouldGradeInvestigation(data) {
|
|
64
|
+
if (!data.run || !data.run.id) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (data.run.autoGrade) {
|
|
68
|
+
// Dedupe: a run is graded at most once.
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (!data.rootCause || data.rootCause.trim().length === 0) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
/*
|
|
77
|
+
* Defensive one-token parse (pure, exported for tests). The prompt demands
|
|
78
|
+
* exactly one token, but models editorialize — accept the verdict when
|
|
79
|
+
* exactly ONE of the three tokens appears in the response, word-bounded so
|
|
80
|
+
* the MATCH inside MISMATCH does not double-count. None found, or more
|
|
81
|
+
* than one distinct token → unparseable → null (no grade stored).
|
|
82
|
+
*/
|
|
83
|
+
static parseAutoGradeToken(response) {
|
|
84
|
+
if (!response) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const text = response.toUpperCase();
|
|
88
|
+
const found = [];
|
|
89
|
+
if (MISMATCH_RE.test(text)) {
|
|
90
|
+
found.push(AIRunAutoGrade.Mismatch);
|
|
91
|
+
}
|
|
92
|
+
if (PARTIAL_RE.test(text)) {
|
|
93
|
+
found.push(AIRunAutoGrade.Partial);
|
|
94
|
+
}
|
|
95
|
+
if (MATCH_RE.test(text)) {
|
|
96
|
+
found.push(AIRunAutoGrade.Match);
|
|
97
|
+
}
|
|
98
|
+
if (found.length !== 1) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return found[0];
|
|
102
|
+
}
|
|
103
|
+
/*
|
|
104
|
+
* Entry point called (fire-and-forget) from IncidentStateTimelineService
|
|
105
|
+
* when an incident enters a resolved state. Never throws — all failures
|
|
106
|
+
* are logged and swallowed so the resolve flow can never be affected.
|
|
107
|
+
*/
|
|
108
|
+
static async gradeInvestigationOnResolve(data) {
|
|
109
|
+
const { incidentId, projectId } = data;
|
|
110
|
+
try {
|
|
111
|
+
// The latest completed investigation for this incident (if any).
|
|
112
|
+
const run = await AIRunService.findOneBy({
|
|
113
|
+
query: {
|
|
114
|
+
runType: AIRunType.Investigation,
|
|
115
|
+
status: AIRunStatus.Completed,
|
|
116
|
+
triggeredByIncidentId: incidentId,
|
|
117
|
+
},
|
|
118
|
+
select: {
|
|
119
|
+
_id: true,
|
|
120
|
+
autoGrade: true,
|
|
121
|
+
},
|
|
122
|
+
sort: { createdAt: SortOrder.Descending },
|
|
123
|
+
props: { isRoot: true },
|
|
124
|
+
});
|
|
125
|
+
if (!run) {
|
|
126
|
+
// Nothing to grade — skip before loading anything else.
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const incident = await IncidentService.findOneById({
|
|
130
|
+
id: incidentId,
|
|
131
|
+
select: {
|
|
132
|
+
_id: true,
|
|
133
|
+
rootCause: true,
|
|
134
|
+
},
|
|
135
|
+
props: { isRoot: true },
|
|
136
|
+
});
|
|
137
|
+
if (!this.shouldGradeInvestigation({
|
|
138
|
+
run,
|
|
139
|
+
rootCause: incident === null || incident === void 0 ? void 0 : incident.rootCause,
|
|
140
|
+
})) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
/*
|
|
144
|
+
* The posted analysis: the latest RootCause feed item — the AI's
|
|
145
|
+
* postAnalysis is its only writer, and it is the only persisted copy
|
|
146
|
+
* of the analysis (the same source the fix recipes read).
|
|
147
|
+
*/
|
|
148
|
+
const feedItem = await IncidentFeedService.findOneBy({
|
|
149
|
+
query: {
|
|
150
|
+
incidentId: incidentId,
|
|
151
|
+
incidentFeedEventType: IncidentFeedEventType.RootCause,
|
|
152
|
+
},
|
|
153
|
+
select: {
|
|
154
|
+
feedInfoInMarkdown: true,
|
|
155
|
+
},
|
|
156
|
+
sort: {
|
|
157
|
+
createdAt: SortOrder.Descending,
|
|
158
|
+
},
|
|
159
|
+
props: { isRoot: true },
|
|
160
|
+
});
|
|
161
|
+
const analysisMarkdown = ((feedItem === null || feedItem === void 0 ? void 0 : feedItem.feedInfoInMarkdown) || "").trim();
|
|
162
|
+
if (!analysisMarkdown) {
|
|
163
|
+
logger.debug(`AI grading: no posted analysis found for incident ${incidentId.toString()} — skipping.`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const rootCause = incident.rootCause.trim();
|
|
167
|
+
const response = await AIService.executeWithLogging({
|
|
168
|
+
projectId,
|
|
169
|
+
feature: FEATURE_NAME,
|
|
170
|
+
incidentId,
|
|
171
|
+
aiRunId: run.id,
|
|
172
|
+
// Grades are stored on the run; no need to persist prompt previews.
|
|
173
|
+
storeContentPreviews: false,
|
|
174
|
+
temperature: 0,
|
|
175
|
+
maxTokens: 20,
|
|
176
|
+
messages: [
|
|
177
|
+
{
|
|
178
|
+
role: "system",
|
|
179
|
+
content: [
|
|
180
|
+
"You grade an AI incident investigation against the root cause humans recorded when they resolved the incident.",
|
|
181
|
+
"Respond with EXACTLY one token and nothing else:",
|
|
182
|
+
"MATCH — the investigation identified the same root cause.",
|
|
183
|
+
"PARTIAL — the investigation identified part of the cause, or a closely related cause.",
|
|
184
|
+
"MISMATCH — the investigation pointed somewhere else.",
|
|
185
|
+
].join("\n"),
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
role: "user",
|
|
189
|
+
content: [
|
|
190
|
+
"Human-recorded root cause:",
|
|
191
|
+
'"""',
|
|
192
|
+
rootCause.substring(0, MAX_ROOT_CAUSE_CHARS),
|
|
193
|
+
'"""',
|
|
194
|
+
"",
|
|
195
|
+
"AI investigation analysis:",
|
|
196
|
+
'"""',
|
|
197
|
+
analysisMarkdown.substring(0, MAX_ANALYSIS_CHARS),
|
|
198
|
+
'"""',
|
|
199
|
+
"",
|
|
200
|
+
"One token only: MATCH, PARTIAL, or MISMATCH.",
|
|
201
|
+
].join("\n"),
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
});
|
|
205
|
+
const grade = this.parseAutoGradeToken(response.content);
|
|
206
|
+
if (!grade) {
|
|
207
|
+
logger.warn(`AI grading: unparseable grade response for incident ${incidentId.toString()} (run ${run.id.toString()}) — no grade stored.`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
await AIRunService.updateOneById({
|
|
211
|
+
id: run.id,
|
|
212
|
+
data: {
|
|
213
|
+
autoGrade: grade,
|
|
214
|
+
autoGradeAt: OneUptimeDate.getCurrentDate(),
|
|
215
|
+
},
|
|
216
|
+
props: { isRoot: true },
|
|
217
|
+
});
|
|
218
|
+
logger.debug(`AI grading: incident ${incidentId.toString()} investigation graded ${grade}.`);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
logger.error(`AI grading: failed for incident ${incidentId.toString()}: ${error}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
__decorate([
|
|
226
|
+
CaptureSpan(),
|
|
227
|
+
__metadata("design:type", Function),
|
|
228
|
+
__metadata("design:paramtypes", [Object]),
|
|
229
|
+
__metadata("design:returntype", Promise)
|
|
230
|
+
], InvestigationGrader, "gradeInvestigationOnResolve", null);
|
|
231
|
+
//# sourceMappingURL=InvestigationGrader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvestigationGrader.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/SRE/InvestigationGrader.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import QueryHelper from "../../../Types/Database/QueryHelper";
|
|
|
19
19
|
import logger from "../../Logger";
|
|
20
20
|
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
21
21
|
/*
|
|
22
|
-
*
|
|
22
|
+
* AI SRE — the durable investigation queue (Phase 2's first item; Q1
|
|
23
23
|
* decided as the DB-claim pattern on AIRun rows, no new infrastructure).
|
|
24
24
|
*
|
|
25
25
|
* The problem it replaces: investigations ran as detached in-process
|
|
@@ -64,6 +64,29 @@ export const DEFAULT_MAX_CONCURRENT_INVESTIGATIONS = 3;
|
|
|
64
64
|
*/
|
|
65
65
|
const MIN_CONCURRENT_INVESTIGATIONS = 1;
|
|
66
66
|
const MAX_CONCURRENT_INVESTIGATIONS = 25;
|
|
67
|
+
/*
|
|
68
|
+
* Lane priority. Two kinds of run share this queue and the per-project
|
|
69
|
+
* concurrency cap above:
|
|
70
|
+
* - the INTERACTIVE lane (incident/alert RCA) — a human is waiting;
|
|
71
|
+
* - the PREVENTIVE lane (AI-insight triage, identified by
|
|
72
|
+
* triggeredByAiInsightId) — nobody is waiting, and one scan tick
|
|
73
|
+
* can file up to MAX_NEW_INSIGHTS_PER_PROJECT_PER_SCAN (10) of them.
|
|
74
|
+
*
|
|
75
|
+
* Without a sub-cap the preventive lane can hold every slot, and since the
|
|
76
|
+
* poller drains oldest-first, an incident that fires after a scan queues
|
|
77
|
+
* BEHIND that backlog — the exact RCA latency the product promises.
|
|
78
|
+
*
|
|
79
|
+
* So the preventive lane may hold at most (cap - RESERVED) slots: at least
|
|
80
|
+
* one slot is always unreachable by triage. Combined with the inline kick
|
|
81
|
+
* that enqueue() fires for every run, that reserved slot is enough on its
|
|
82
|
+
* own — an incident/alert enqueue calls processRun immediately, passes the
|
|
83
|
+
* gates against a cap that triage cannot have saturated, and dispatches
|
|
84
|
+
* without ever touching the poller (so it can also never be TTL-expired
|
|
85
|
+
* behind triage). Splitting the poller's oldest-first query into two lane
|
|
86
|
+
* queries would therefore only re-order runs that are ALREADY late, at the
|
|
87
|
+
* cost of an extra query every tick — deliberately not done.
|
|
88
|
+
*/
|
|
89
|
+
export const INSIGHT_TRIAGE_RESERVED_SLOTS = 1;
|
|
67
90
|
/*
|
|
68
91
|
* A first-pass RCA is only useful while the incident is fresh. Queued runs
|
|
69
92
|
* older than this are expired rather than run late — this also caps queue
|
|
@@ -72,12 +95,16 @@ const MAX_CONCURRENT_INVESTIGATIONS = 25;
|
|
|
72
95
|
export const QUEUE_TTL_MINUTES = 30;
|
|
73
96
|
// How many queued runs one poller tick will try to claim.
|
|
74
97
|
const POLLER_BATCH_SIZE = 10;
|
|
75
|
-
export default class
|
|
98
|
+
export default class AIInvestigationQueue {
|
|
76
99
|
/*
|
|
77
100
|
* Record the durable intent to investigate, then try to process it
|
|
78
101
|
* immediately (detached — the poller is the safety net if this pod dies).
|
|
79
102
|
* Callers have already passed the subject-specific gates (opt-in,
|
|
80
103
|
* severity floor, dedupe window).
|
|
104
|
+
*
|
|
105
|
+
* Returns the created run's id (so subject rows can link back to it), or
|
|
106
|
+
* null when the enqueue was quiet-skipped (budget) or failed — enqueue
|
|
107
|
+
* itself never throws.
|
|
81
108
|
*/
|
|
82
109
|
static async enqueue(data) {
|
|
83
110
|
const { projectId } = data;
|
|
@@ -89,13 +116,13 @@ export default class SentinelInvestigationQueue {
|
|
|
89
116
|
try {
|
|
90
117
|
const budget = await AIService.getAutonomousDailyBudgetStatus(projectId);
|
|
91
118
|
if (budget.exhausted) {
|
|
92
|
-
logger.debug(`
|
|
93
|
-
return;
|
|
119
|
+
logger.debug(`AI: not enqueueing investigation for project ${projectId.toString()} — daily autonomous token budget exhausted (${budget.usedTokensToday} of ${budget.limitInTokens} tokens used today).`);
|
|
120
|
+
return null;
|
|
94
121
|
}
|
|
95
122
|
}
|
|
96
123
|
catch (error) {
|
|
97
|
-
logger.error(`
|
|
98
|
-
return;
|
|
124
|
+
logger.error(`AI: budget check failed, not enqueueing investigation: ${error}`);
|
|
125
|
+
return null;
|
|
99
126
|
}
|
|
100
127
|
const run = new AIRun();
|
|
101
128
|
run.projectId = projectId;
|
|
@@ -110,6 +137,9 @@ export default class SentinelInvestigationQueue {
|
|
|
110
137
|
if (data.subjectMonitorId) {
|
|
111
138
|
run.monitorId = data.subjectMonitorId;
|
|
112
139
|
}
|
|
140
|
+
if (data.subjectAIInsightId) {
|
|
141
|
+
run.triggeredByAiInsightId = data.subjectAIInsightId;
|
|
142
|
+
}
|
|
113
143
|
let createdRun;
|
|
114
144
|
try {
|
|
115
145
|
createdRun = await AIRunService.create({
|
|
@@ -118,8 +148,8 @@ export default class SentinelInvestigationQueue {
|
|
|
118
148
|
});
|
|
119
149
|
}
|
|
120
150
|
catch (error) {
|
|
121
|
-
logger.error(`
|
|
122
|
-
return;
|
|
151
|
+
logger.error(`AI: failed to enqueue investigation run: ${error}`);
|
|
152
|
+
return null;
|
|
123
153
|
}
|
|
124
154
|
// Inline kick — preserves the 1-3 minute RCA latency on the happy path.
|
|
125
155
|
this.processRun({
|
|
@@ -128,10 +158,12 @@ export default class SentinelInvestigationQueue {
|
|
|
128
158
|
attemptCount: 0,
|
|
129
159
|
triggeredByIncidentId: data.subjectIncidentId,
|
|
130
160
|
triggeredByAlertId: data.subjectAlertId,
|
|
161
|
+
triggeredByAiInsightId: data.subjectAIInsightId,
|
|
131
162
|
}).catch((error) => {
|
|
132
163
|
var _a;
|
|
133
|
-
logger.error(`
|
|
164
|
+
logger.error(`AI: inline processing of queued run ${(_a = createdRun.id) === null || _a === void 0 ? void 0 : _a.toString()} failed: ${error}`);
|
|
134
165
|
});
|
|
166
|
+
return createdRun.id || null;
|
|
135
167
|
}
|
|
136
168
|
/*
|
|
137
169
|
* Claim a queued run and execute it to completion. Safe to call from
|
|
@@ -151,7 +183,7 @@ export default class SentinelInvestigationQueue {
|
|
|
151
183
|
await this.dispatch(run, attempt);
|
|
152
184
|
}
|
|
153
185
|
catch (error) {
|
|
154
|
-
logger.error(`
|
|
186
|
+
logger.error(`AI: failed to process queued run ${run.id.toString()}: ${error}`);
|
|
155
187
|
}
|
|
156
188
|
}
|
|
157
189
|
/*
|
|
@@ -198,6 +230,7 @@ export default class SentinelInvestigationQueue {
|
|
|
198
230
|
attemptCount: true,
|
|
199
231
|
triggeredByIncidentId: true,
|
|
200
232
|
triggeredByAlertId: true,
|
|
233
|
+
triggeredByAiInsightId: true,
|
|
201
234
|
},
|
|
202
235
|
sort: { createdAt: SortOrder.Ascending },
|
|
203
236
|
limit: POLLER_BATCH_SIZE,
|
|
@@ -211,6 +244,7 @@ export default class SentinelInvestigationQueue {
|
|
|
211
244
|
attemptCount: queued.attemptCount || 0,
|
|
212
245
|
triggeredByIncidentId: queued.triggeredByIncidentId,
|
|
213
246
|
triggeredByAlertId: queued.triggeredByAlertId,
|
|
247
|
+
triggeredByAiInsightId: queued.triggeredByAiInsightId,
|
|
214
248
|
};
|
|
215
249
|
try {
|
|
216
250
|
if (!(await this.passesClaimGates(ref))) {
|
|
@@ -225,11 +259,11 @@ export default class SentinelInvestigationQueue {
|
|
|
225
259
|
* the sweeper owns recovery if this pod dies mid-flight.
|
|
226
260
|
*/
|
|
227
261
|
this.dispatch(ref, attempt).catch((error) => {
|
|
228
|
-
logger.error(`
|
|
262
|
+
logger.error(`AI: detached execution of run ${ref.id.toString()} failed: ${error}`);
|
|
229
263
|
});
|
|
230
264
|
}
|
|
231
265
|
catch (error) {
|
|
232
|
-
logger.error(`
|
|
266
|
+
logger.error(`AI: poller failed on queued run ${ref.id.toString()}: ${error}`);
|
|
233
267
|
}
|
|
234
268
|
}
|
|
235
269
|
}
|
|
@@ -251,7 +285,7 @@ export default class SentinelInvestigationQueue {
|
|
|
251
285
|
},
|
|
252
286
|
});
|
|
253
287
|
if (requeued > 0) {
|
|
254
|
-
logger.debug(`
|
|
288
|
+
logger.debug(`AI: requeued run ${data.aiRunId.toString()} after attempt ${data.attemptCount} failed.`);
|
|
255
289
|
}
|
|
256
290
|
return;
|
|
257
291
|
}
|
|
@@ -296,9 +330,10 @@ export default class SentinelInvestigationQueue {
|
|
|
296
330
|
return "stale";
|
|
297
331
|
}
|
|
298
332
|
/*
|
|
299
|
-
* The claim-time cost gates: concurrency cap
|
|
300
|
-
* failing these stays Queued — the poller
|
|
301
|
-
* what never fits. Fails cheap (skip) on gate
|
|
333
|
+
* The claim-time cost gates: concurrency cap, the preventive-lane sub-cap
|
|
334
|
+
* and the daily budget. A run failing these stays Queued — the poller
|
|
335
|
+
* retries and the TTL expires what never fits. Fails cheap (skip) on gate
|
|
336
|
+
* errors.
|
|
302
337
|
*/
|
|
303
338
|
static async passesClaimGates(run) {
|
|
304
339
|
var _a;
|
|
@@ -318,12 +353,38 @@ export default class SentinelInvestigationQueue {
|
|
|
318
353
|
props: { isRoot: true },
|
|
319
354
|
})).toNumber();
|
|
320
355
|
if (runningCount >= concurrencyCap) {
|
|
321
|
-
logger.debug(`
|
|
356
|
+
logger.debug(`AI: leaving run ${run.id.toString()} queued — ${runningCount} investigations already running (cap: ${concurrencyCap}).`);
|
|
322
357
|
return false;
|
|
323
358
|
}
|
|
359
|
+
/*
|
|
360
|
+
* The preventive lane's sub-cap: insight triage may never occupy the
|
|
361
|
+
* slot(s) reserved for incident/alert RCA (see
|
|
362
|
+
* INSIGHT_TRIAGE_RESERVED_SLOTS). Floored at 1 so a project running at
|
|
363
|
+
* the minimum cap of 1 still triages its insights (slower, one at a
|
|
364
|
+
* time) instead of deadlocking the lane entirely — the interactive lane
|
|
365
|
+
* keeps its priority through the global cap check above, which a single
|
|
366
|
+
* running triage run cannot outlast for long (triage is read-only and
|
|
367
|
+
* short).
|
|
368
|
+
*/
|
|
369
|
+
if (run.triggeredByAiInsightId) {
|
|
370
|
+
const triageCap = Math.max(1, concurrencyCap - INSIGHT_TRIAGE_RESERVED_SLOTS);
|
|
371
|
+
const runningTriageCount = (await AIRunService.countBy({
|
|
372
|
+
query: {
|
|
373
|
+
projectId: run.projectId,
|
|
374
|
+
runType: AIRunType.Investigation,
|
|
375
|
+
status: AIRunStatus.Running,
|
|
376
|
+
triggeredByAiInsightId: QueryHelper.notNull(),
|
|
377
|
+
},
|
|
378
|
+
props: { isRoot: true },
|
|
379
|
+
})).toNumber();
|
|
380
|
+
if (runningTriageCount >= triageCap) {
|
|
381
|
+
logger.debug(`AI: leaving insight triage run ${run.id.toString()} queued — ${runningTriageCount} triage runs already running (triage lane cap: ${triageCap} of ${concurrencyCap}).`);
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
324
385
|
const budget = await AIService.getAutonomousDailyBudgetStatus(run.projectId);
|
|
325
386
|
if (budget.exhausted) {
|
|
326
|
-
logger.debug(`
|
|
387
|
+
logger.debug(`AI: leaving run ${run.id.toString()} queued — daily autonomous token budget exhausted.`);
|
|
327
388
|
return false;
|
|
328
389
|
}
|
|
329
390
|
return true;
|
|
@@ -383,6 +444,24 @@ export default class SentinelInvestigationQueue {
|
|
|
383
444
|
});
|
|
384
445
|
return;
|
|
385
446
|
}
|
|
447
|
+
/*
|
|
448
|
+
* AI-insight triage runs carry their subject in
|
|
449
|
+
* triggeredByAiInsightId — they must be recognized here as
|
|
450
|
+
* subject-BEARING, or the fallthrough below would fail every one of
|
|
451
|
+
* them as subject-less.
|
|
452
|
+
*/
|
|
453
|
+
if (run.triggeredByAiInsightId) {
|
|
454
|
+
const insightTriageRunner =
|
|
455
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
456
|
+
require("./Insights/InsightTriageRunner").default;
|
|
457
|
+
await insightTriageRunner.executeTriage({
|
|
458
|
+
aiRunId: run.id,
|
|
459
|
+
projectId: run.projectId,
|
|
460
|
+
sentinelInsightId: run.triggeredByAiInsightId,
|
|
461
|
+
attemptCount: attempt,
|
|
462
|
+
});
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
386
465
|
// A queued investigation without a subject cannot be executed.
|
|
387
466
|
await AIRunService.attemptStatusTransition({
|
|
388
467
|
aiRunId: run.id,
|
|
@@ -400,29 +479,29 @@ __decorate([
|
|
|
400
479
|
__metadata("design:type", Function),
|
|
401
480
|
__metadata("design:paramtypes", [Object]),
|
|
402
481
|
__metadata("design:returntype", Promise)
|
|
403
|
-
],
|
|
482
|
+
], AIInvestigationQueue, "enqueue", null);
|
|
404
483
|
__decorate([
|
|
405
484
|
CaptureSpan(),
|
|
406
485
|
__metadata("design:type", Function),
|
|
407
486
|
__metadata("design:paramtypes", [Object]),
|
|
408
487
|
__metadata("design:returntype", Promise)
|
|
409
|
-
],
|
|
488
|
+
], AIInvestigationQueue, "processRun", null);
|
|
410
489
|
__decorate([
|
|
411
490
|
CaptureSpan(),
|
|
412
491
|
__metadata("design:type", Function),
|
|
413
492
|
__metadata("design:paramtypes", []),
|
|
414
493
|
__metadata("design:returntype", Promise)
|
|
415
|
-
],
|
|
494
|
+
], AIInvestigationQueue, "processQueuedRuns", null);
|
|
416
495
|
__decorate([
|
|
417
496
|
CaptureSpan(),
|
|
418
497
|
__metadata("design:type", Function),
|
|
419
498
|
__metadata("design:paramtypes", [Object]),
|
|
420
499
|
__metadata("design:returntype", Promise)
|
|
421
|
-
],
|
|
500
|
+
], AIInvestigationQueue, "failOrRequeue", null);
|
|
422
501
|
__decorate([
|
|
423
502
|
CaptureSpan(),
|
|
424
503
|
__metadata("design:type", Function),
|
|
425
504
|
__metadata("design:paramtypes", [Object]),
|
|
426
505
|
__metadata("design:returntype", Promise)
|
|
427
|
-
],
|
|
506
|
+
], AIInvestigationQueue, "requeueOrMarkStale", null);
|
|
428
507
|
//# sourceMappingURL=InvestigationQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvestigationQueue.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/SRE/InvestigationQueue.ts"],"names":[],"mappings":"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"}
|