@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.
- 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/Models/DatabaseModels/User.ts +47 -0
- 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/1784048917994-AddCreatedByUserToUser.ts +23 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
- package/Server/Infrastructure/Queue.ts +82 -4
- package/Server/Infrastructure/Semaphore.ts +62 -1
- package/Server/Middleware/MasterAdminAuthorization.ts +37 -0
- package/Server/Middleware/ProjectAuthorization.ts +40 -15
- 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/TeamMemberService.ts +2 -0
- package/Server/Services/TelemetryExceptionService.ts +323 -116
- package/Server/Services/TraceAggregationService.ts +176 -0
- package/Server/Services/UserService.ts +10 -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/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +16 -6
- package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +14 -3
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +130 -12
- 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/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +553 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +590 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageFormatterUnits.test.ts +254 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +821 -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/Models/DatabaseModels/User.js +46 -0
- package/build/dist/Models/DatabaseModels/User.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/1784048917994-AddCreatedByUserToUser.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784048917994-AddCreatedByUserToUser.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -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/Middleware/MasterAdminAuthorization.js +26 -0
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +40 -14
- package/build/dist/Server/Middleware/ProjectAuthorization.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/TeamMemberService.js +2 -0
- package/build/dist/Server/Services/TeamMemberService.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/Services/UserService.js +8 -0
- package/build/dist/Server/Services/UserService.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/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +15 -7
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +12 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +8 -3
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +96 -12
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.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,140 @@
|
|
|
1
|
+
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
2
|
+
import CommonAPI from "./CommonAPI";
|
|
3
|
+
import Express from "../Utils/Express";
|
|
4
|
+
import Response from "../Utils/Response";
|
|
5
|
+
import ObjectID from "../../Types/ObjectID";
|
|
6
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
7
|
+
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
8
|
+
import AIInsightHumanVerdict from "../../Types/AI/AIInsightHumanVerdict";
|
|
9
|
+
import AIRun from "../../Models/DatabaseModels/AIRun";
|
|
10
|
+
import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
|
|
11
|
+
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
12
|
+
import AIInsightService from "../Services/AIInsightService";
|
|
13
|
+
const router = Express.getRouter();
|
|
14
|
+
/*
|
|
15
|
+
* Human-action endpoints for the AI insights inbox. Insight rows are
|
|
16
|
+
* server-authored (empty create/update table permissions) — humans act on
|
|
17
|
+
* them only through these routes: a one-click Confirm / Dismiss verdict
|
|
18
|
+
* (the G11 precision measurement), Resolve, and the live triage panel
|
|
19
|
+
* read. Each route access-checks the insight under the USER's permissions
|
|
20
|
+
* first (project membership + the AIInsight read ACL), then the
|
|
21
|
+
* service performs the root read/write — the AIInvestigationAPI idiom.
|
|
22
|
+
*/
|
|
23
|
+
async function getLoggedInProps(req) {
|
|
24
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
25
|
+
if (!props.userId) {
|
|
26
|
+
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
27
|
+
}
|
|
28
|
+
return props;
|
|
29
|
+
}
|
|
30
|
+
/*
|
|
31
|
+
* Access check under the USER's permissions: the user props enforce project
|
|
32
|
+
* membership and the model's read ACL, so a null result means "does not
|
|
33
|
+
* exist or is not yours" — reported identically so the route never leaks
|
|
34
|
+
* whether an insight id exists in another project.
|
|
35
|
+
*/
|
|
36
|
+
async function findAccessibleInsight(req, props) {
|
|
37
|
+
const insightIdString = req.body["insightId"];
|
|
38
|
+
if (!insightIdString) {
|
|
39
|
+
throw new BadDataException("insightId is required.");
|
|
40
|
+
}
|
|
41
|
+
const insight = await AIInsightService.findOneById({
|
|
42
|
+
id: new ObjectID(insightIdString),
|
|
43
|
+
select: { _id: true },
|
|
44
|
+
props,
|
|
45
|
+
});
|
|
46
|
+
if (!insight || !insight.id) {
|
|
47
|
+
throw new BadDataException("AI insight not found (or you do not have access to it).");
|
|
48
|
+
}
|
|
49
|
+
return insight;
|
|
50
|
+
}
|
|
51
|
+
/*
|
|
52
|
+
* One-click human verdict (the G11 precision measurement — confirm/dismiss
|
|
53
|
+
* rates per insight type gate future automation). Overwriting an existing
|
|
54
|
+
* verdict is allowed: the latest verdict wins. Dismissed also closes the
|
|
55
|
+
* insight; Confirmed leaves its status untouched.
|
|
56
|
+
* Body: { insightId, verdict: "Confirmed" | "Dismissed" }.
|
|
57
|
+
* Response: { insightId, verdict }.
|
|
58
|
+
*/
|
|
59
|
+
router.post("/ai-insight/verdict", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
60
|
+
try {
|
|
61
|
+
const props = await getLoggedInProps(req);
|
|
62
|
+
const verdict = req.body["verdict"];
|
|
63
|
+
if (verdict !== AIInsightHumanVerdict.Confirmed &&
|
|
64
|
+
verdict !== AIInsightHumanVerdict.Dismissed) {
|
|
65
|
+
throw new BadDataException('verdict must be "Confirmed" or "Dismissed".');
|
|
66
|
+
}
|
|
67
|
+
const insight = await findAccessibleInsight(req, props);
|
|
68
|
+
const result = await AIInsightService.applyHumanVerdict({
|
|
69
|
+
insightId: insight.id,
|
|
70
|
+
verdict: verdict,
|
|
71
|
+
byUserId: props.userId,
|
|
72
|
+
});
|
|
73
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
74
|
+
insightId: result.insightId.toString(),
|
|
75
|
+
verdict: result.verdict,
|
|
76
|
+
});
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
next(err);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
/*
|
|
85
|
+
* Marks the insight handled. Resolving implies the finding was real: when
|
|
86
|
+
* no verdict was recorded yet, the service also stamps Confirmed.
|
|
87
|
+
* Body: { insightId }. Response: { insightId, status }.
|
|
88
|
+
*/
|
|
89
|
+
router.post("/ai-insight/resolve", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
90
|
+
try {
|
|
91
|
+
const props = await getLoggedInProps(req);
|
|
92
|
+
const insight = await findAccessibleInsight(req, props);
|
|
93
|
+
const result = await AIInsightService.resolveInsight({
|
|
94
|
+
insightId: insight.id,
|
|
95
|
+
byUserId: props.userId,
|
|
96
|
+
});
|
|
97
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
98
|
+
insightId: result.insightId.toString(),
|
|
99
|
+
status: result.status,
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
next(err);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
/*
|
|
109
|
+
* Live triage panel data: the insight's triage AIRun + its ordered event
|
|
110
|
+
* trail (capped — see MAX_TRIAGE_RUN_EVENTS on the service). Triage runs
|
|
111
|
+
* are system-authored and hidden by the per-user pin on the generic AIRun
|
|
112
|
+
* CRUD, so after the access check the service reads them as root — the
|
|
113
|
+
* sendLatestInvestigation idiom. An insight without a triage run responds
|
|
114
|
+
* { run: null, events: [] }, not an error.
|
|
115
|
+
* Body: { insightId }. Response: { run, events }.
|
|
116
|
+
*/
|
|
117
|
+
router.post("/ai-insight/triage-run", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
118
|
+
try {
|
|
119
|
+
const props = await getLoggedInProps(req);
|
|
120
|
+
const insight = await findAccessibleInsight(req, props);
|
|
121
|
+
const result = await AIInsightService.getLatestTriageRunWithEvents({
|
|
122
|
+
insightId: insight.id,
|
|
123
|
+
});
|
|
124
|
+
const runJson = result.run
|
|
125
|
+
? BaseModel.toJSONArray([result.run], AIRun)[0]
|
|
126
|
+
: undefined;
|
|
127
|
+
const eventsJson = BaseModel.toJSONArray(result.events, AIRunEvent);
|
|
128
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
129
|
+
run: runJson || null,
|
|
130
|
+
events: eventsJson,
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
next(err);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
export default router;
|
|
140
|
+
//# sourceMappingURL=AIInsightAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIInsightAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInsightAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import BadDataException from "../../Types/Exception/BadDataException";
|
|
|
7
7
|
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
8
8
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
9
9
|
import AIRunType from "../../Types/AI/AIRunType";
|
|
10
|
+
import AIRunHumanVerdict from "../../Types/AI/AIRunHumanVerdict";
|
|
10
11
|
import AIRun from "../../Models/DatabaseModels/AIRun";
|
|
11
12
|
import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
|
|
12
13
|
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
@@ -14,10 +15,21 @@ import IncidentService from "../Services/IncidentService";
|
|
|
14
15
|
import AlertService from "../Services/AlertService";
|
|
15
16
|
import AIRunService from "../Services/AIRunService";
|
|
16
17
|
import AIRunEventService from "../Services/AIRunEventService";
|
|
18
|
+
import ServiceService from "../Services/ServiceService";
|
|
19
|
+
import SpanService from "../Services/SpanService";
|
|
20
|
+
import FixFromIncidentTaskTrigger from "../Utils/AI/SRE/FixFromIncidentTaskTrigger";
|
|
21
|
+
import FixPerformanceTaskTrigger from "../Utils/AI/SRE/FixPerformanceTaskTrigger";
|
|
17
22
|
const router = Express.getRouter();
|
|
23
|
+
/*
|
|
24
|
+
* Upper bound on spans analyzed for one performance-fix trigger — mirrors
|
|
25
|
+
* the trace waterfall's own cap (TraceTools.MAX_TRACE_SPANS). Findings are
|
|
26
|
+
* computed over the first 500 spans by start time; a truncated giant trace
|
|
27
|
+
* still yields honest evidence about the loaded portion.
|
|
28
|
+
*/
|
|
29
|
+
const MAX_ANALYZED_TRACE_SPANS = 500;
|
|
18
30
|
const MAX_EVENTS = 500;
|
|
19
31
|
/*
|
|
20
|
-
* Returns the latest
|
|
32
|
+
* Returns the latest AI investigation (the AIRun + its ordered
|
|
21
33
|
* AIRunEvents) for an incident or alert, so the dashboard can render a live
|
|
22
34
|
* "watch it think" panel.
|
|
23
35
|
*
|
|
@@ -51,6 +63,11 @@ async function sendLatestInvestigation(req, res, runQuery) {
|
|
|
51
63
|
toolCallCount: true,
|
|
52
64
|
totalTokens: true,
|
|
53
65
|
createdAt: true,
|
|
66
|
+
// Measurement layer: the panel renders verdict/grade state from these.
|
|
67
|
+
humanVerdict: true,
|
|
68
|
+
humanVerdictAt: true,
|
|
69
|
+
autoGrade: true,
|
|
70
|
+
autoGradeAt: true,
|
|
54
71
|
},
|
|
55
72
|
sort: { createdAt: SortOrder.Descending },
|
|
56
73
|
limit: 1,
|
|
@@ -143,5 +160,244 @@ router.post("/ai-investigation/alert", UserMiddleware.getUserMiddleware, async (
|
|
|
143
160
|
return;
|
|
144
161
|
}
|
|
145
162
|
});
|
|
163
|
+
/*
|
|
164
|
+
* Human verdict capture (Phase 2 measurement layer): one-click Confirm /
|
|
165
|
+
* Reject on the investigation panel. Applies to the LATEST COMPLETED
|
|
166
|
+
* investigation run for the subject; overwriting is allowed (a user may
|
|
167
|
+
* change their mind), and the request is rejected when no completed
|
|
168
|
+
* investigation exists. The subject is access-checked under the USER's
|
|
169
|
+
* permissions first (same idiom as the read routes above); the run itself is
|
|
170
|
+
* written as root because investigation runs are system-authored.
|
|
171
|
+
* Body: { subjectType: "incident" | "alert", subjectId,
|
|
172
|
+
* verdict: "Confirmed" | "Rejected" }. Response: { runId, verdict }.
|
|
173
|
+
*/
|
|
174
|
+
router.post("/ai-investigation/verdict", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
175
|
+
try {
|
|
176
|
+
const props = await getLoggedInProps(req);
|
|
177
|
+
const subjectType = req.body["subjectType"];
|
|
178
|
+
if (subjectType !== "incident" && subjectType !== "alert") {
|
|
179
|
+
throw new BadDataException('subjectType must be "incident" or "alert".');
|
|
180
|
+
}
|
|
181
|
+
const subjectIdString = req.body["subjectId"];
|
|
182
|
+
if (!subjectIdString) {
|
|
183
|
+
throw new BadDataException("subjectId is required.");
|
|
184
|
+
}
|
|
185
|
+
const subjectId = new ObjectID(subjectIdString);
|
|
186
|
+
const verdict = req.body["verdict"];
|
|
187
|
+
if (verdict !== AIRunHumanVerdict.Confirmed &&
|
|
188
|
+
verdict !== AIRunHumanVerdict.Rejected) {
|
|
189
|
+
throw new BadDataException('verdict must be "Confirmed" or "Rejected".');
|
|
190
|
+
}
|
|
191
|
+
// Access check under the USER's permissions (null when not allowed).
|
|
192
|
+
if (subjectType === "incident") {
|
|
193
|
+
const incident = await IncidentService.findOneById({
|
|
194
|
+
id: subjectId,
|
|
195
|
+
select: { _id: true },
|
|
196
|
+
props,
|
|
197
|
+
});
|
|
198
|
+
if (!incident) {
|
|
199
|
+
throw new BadDataException("Incident not found (or you do not have access to it).");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
const alert = await AlertService.findOneById({
|
|
204
|
+
id: subjectId,
|
|
205
|
+
select: { _id: true },
|
|
206
|
+
props,
|
|
207
|
+
});
|
|
208
|
+
if (!alert) {
|
|
209
|
+
throw new BadDataException("Alert not found (or you do not have access to it).");
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const result = await AIRunService.applyHumanVerdictToLatestInvestigation(Object.assign(Object.assign({}, (subjectType === "incident"
|
|
213
|
+
? { incidentId: subjectId }
|
|
214
|
+
: { alertId: subjectId })), { verdict: verdict, verdictByUserId: props.userId }));
|
|
215
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
216
|
+
runId: result.runId.toString(),
|
|
217
|
+
verdict: result.verdict,
|
|
218
|
+
});
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
next(err);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
/*
|
|
227
|
+
* Human-triggered `code_fix` (the FixFromIncident recipe): after a AI
|
|
228
|
+
* investigation completes on an incident/alert, the user can ask the agent
|
|
229
|
+
* to open a fix pull request from the posted analysis. The subject is
|
|
230
|
+
* access-checked under the USER's permissions first (same idiom as the read
|
|
231
|
+
* routes above); the trigger's gates (completed investigation, GitHub-App
|
|
232
|
+
* repository, per-subject dedupe) fail early with a clear message.
|
|
233
|
+
* Body: { subjectType: "incident" | "alert", subjectId }. Response:
|
|
234
|
+
* { aiRunId } — the Queued CodeFix run the agent worker will claim.
|
|
235
|
+
*/
|
|
236
|
+
router.post("/ai-investigation/create-fix-task", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
237
|
+
try {
|
|
238
|
+
const props = await getLoggedInProps(req);
|
|
239
|
+
const subjectType = req.body["subjectType"];
|
|
240
|
+
if (subjectType !== "incident" && subjectType !== "alert") {
|
|
241
|
+
throw new BadDataException('subjectType must be "incident" or "alert".');
|
|
242
|
+
}
|
|
243
|
+
const subjectIdString = req.body["subjectId"];
|
|
244
|
+
if (!subjectIdString) {
|
|
245
|
+
throw new BadDataException("subjectId is required.");
|
|
246
|
+
}
|
|
247
|
+
const subjectId = new ObjectID(subjectIdString);
|
|
248
|
+
// Access check under the USER's permissions (null when not allowed).
|
|
249
|
+
let projectId = undefined;
|
|
250
|
+
if (subjectType === "incident") {
|
|
251
|
+
const incident = await IncidentService.findOneById({
|
|
252
|
+
id: subjectId,
|
|
253
|
+
select: { _id: true, projectId: true },
|
|
254
|
+
props,
|
|
255
|
+
});
|
|
256
|
+
if (!incident || !incident.projectId) {
|
|
257
|
+
throw new BadDataException("Incident not found (or you do not have access to it).");
|
|
258
|
+
}
|
|
259
|
+
projectId = incident.projectId;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
const alert = await AlertService.findOneById({
|
|
263
|
+
id: subjectId,
|
|
264
|
+
select: { _id: true, projectId: true },
|
|
265
|
+
props,
|
|
266
|
+
});
|
|
267
|
+
if (!alert || !alert.projectId) {
|
|
268
|
+
throw new BadDataException("Alert not found (or you do not have access to it).");
|
|
269
|
+
}
|
|
270
|
+
projectId = alert.projectId;
|
|
271
|
+
}
|
|
272
|
+
const run = await FixFromIncidentTaskTrigger.createFixTaskFromInvestigation(Object.assign(Object.assign({ projectId }, (subjectType === "incident"
|
|
273
|
+
? { incidentId: subjectId }
|
|
274
|
+
: { alertId: subjectId })), { userId: props.userId }));
|
|
275
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
276
|
+
aiRunId: run.id.toString(),
|
|
277
|
+
});
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
next(err);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
/*
|
|
286
|
+
* Human-triggered FixPerformance: from a slow trace, one click opens a
|
|
287
|
+
* performance-fix PR grounded in deterministic span-tree evidence. The
|
|
288
|
+
* spans are loaded under the USER's permissions (the same telemetry-read
|
|
289
|
+
* ACL the trace explorer enforces — a user who cannot read the trace gets
|
|
290
|
+
* "not found"), the SpanTreeAnalyzer gates on a mechanical finding, and
|
|
291
|
+
* the trigger's remaining gates (GitHub-App repository, per-trace dedupe)
|
|
292
|
+
* fail early with a clear message. Body: { traceId }. Response:
|
|
293
|
+
* { aiRunId } — the Queued CodeFix run the agent worker will claim.
|
|
294
|
+
*/
|
|
295
|
+
router.post("/ai-investigation/create-performance-fix-task", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
296
|
+
var _a;
|
|
297
|
+
try {
|
|
298
|
+
const props = await getLoggedInProps(req);
|
|
299
|
+
const traceId = req.body["traceId"];
|
|
300
|
+
if (!traceId) {
|
|
301
|
+
throw new BadDataException("traceId is required.");
|
|
302
|
+
}
|
|
303
|
+
const projectId = props.tenantId;
|
|
304
|
+
if (!projectId) {
|
|
305
|
+
throw new BadDataException("A project scope is required.");
|
|
306
|
+
}
|
|
307
|
+
/*
|
|
308
|
+
* Access check + data load in one: the analytics permission layer
|
|
309
|
+
* pins this query to the user's tenant and telemetry-read
|
|
310
|
+
* permissions (the Span model's read ACL — same enforcement the
|
|
311
|
+
* trace explorer's list API applies). No spans back means the trace
|
|
312
|
+
* does not exist or the user may not see it.
|
|
313
|
+
*/
|
|
314
|
+
const spans = await SpanService.findBy({
|
|
315
|
+
query: {
|
|
316
|
+
traceId: traceId,
|
|
317
|
+
},
|
|
318
|
+
select: {
|
|
319
|
+
spanId: true,
|
|
320
|
+
parentSpanId: true,
|
|
321
|
+
name: true,
|
|
322
|
+
startTimeUnixNano: true,
|
|
323
|
+
endTimeUnixNano: true,
|
|
324
|
+
durationUnixNano: true,
|
|
325
|
+
attributes: true,
|
|
326
|
+
primaryEntityId: true,
|
|
327
|
+
},
|
|
328
|
+
sort: {
|
|
329
|
+
startTimeUnixNano: SortOrder.Ascending,
|
|
330
|
+
},
|
|
331
|
+
limit: MAX_ANALYZED_TRACE_SPANS,
|
|
332
|
+
skip: 0,
|
|
333
|
+
props: props,
|
|
334
|
+
});
|
|
335
|
+
if (spans.length === 0) {
|
|
336
|
+
throw new BadDataException("Trace not found (or you do not have access to it).");
|
|
337
|
+
}
|
|
338
|
+
// Nanoseconds -> milliseconds for the analyzer.
|
|
339
|
+
const analyzableSpans = spans.map((span) => {
|
|
340
|
+
var _a, _b;
|
|
341
|
+
const attributes = {};
|
|
342
|
+
for (const [key, value] of Object.entries(span.attributes || {})) {
|
|
343
|
+
if (value !== null && value !== undefined) {
|
|
344
|
+
attributes[key] = String(value);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return {
|
|
348
|
+
spanId: ((_a = span.spanId) === null || _a === void 0 ? void 0 : _a.toString()) || "",
|
|
349
|
+
parentSpanId: ((_b = span.parentSpanId) === null || _b === void 0 ? void 0 : _b.toString()) || undefined,
|
|
350
|
+
name: span.name || "",
|
|
351
|
+
startMs: Number(span.startTimeUnixNano) / 1000000,
|
|
352
|
+
endMs: Number(span.endTimeUnixNano) / 1000000,
|
|
353
|
+
durationMs: Number(span.durationUnixNano) / 1000000,
|
|
354
|
+
attributes,
|
|
355
|
+
};
|
|
356
|
+
});
|
|
357
|
+
/*
|
|
358
|
+
* Best-effort service attribution: the trace's most frequent
|
|
359
|
+
* primaryEntityId, resolved to a Service name when it IS a Service
|
|
360
|
+
* (findOneById returns null for hosts/clusters/unattributed ids).
|
|
361
|
+
* Only feeds the repository name-match fallback — null is fine.
|
|
362
|
+
*/
|
|
363
|
+
const entityIdCounts = new Map();
|
|
364
|
+
for (const span of spans) {
|
|
365
|
+
const entityId = (_a = span.primaryEntityId) === null || _a === void 0 ? void 0 : _a.toString();
|
|
366
|
+
if (entityId) {
|
|
367
|
+
entityIdCounts.set(entityId, (entityIdCounts.get(entityId) || 0) + 1);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
let dominantEntityId = null;
|
|
371
|
+
let dominantEntityCount = 0;
|
|
372
|
+
for (const [entityId, count] of entityIdCounts) {
|
|
373
|
+
if (count > dominantEntityCount) {
|
|
374
|
+
dominantEntityId = entityId;
|
|
375
|
+
dominantEntityCount = count;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const service = dominantEntityId
|
|
379
|
+
? await ServiceService.findOneById({
|
|
380
|
+
id: new ObjectID(dominantEntityId),
|
|
381
|
+
select: { name: true },
|
|
382
|
+
props: { isRoot: true },
|
|
383
|
+
})
|
|
384
|
+
: null;
|
|
385
|
+
const run = await FixPerformanceTaskTrigger.createPerformanceFixTaskFromTrace({
|
|
386
|
+
projectId,
|
|
387
|
+
traceId,
|
|
388
|
+
spans: analyzableSpans,
|
|
389
|
+
serviceName: service === null || service === void 0 ? void 0 : service.name,
|
|
390
|
+
userId: props.userId,
|
|
391
|
+
});
|
|
392
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
393
|
+
aiRunId: run.id.toString(),
|
|
394
|
+
});
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
catch (err) {
|
|
398
|
+
next(err);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
146
402
|
export default router;
|
|
147
403
|
//# sourceMappingURL=AIInvestigationAPI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIInvestigationAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInvestigationAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AIInvestigationAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIInvestigationAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
2
|
+
import CommonAPI from "./CommonAPI";
|
|
3
|
+
import Express from "../Utils/Express";
|
|
4
|
+
import Response from "../Utils/Response";
|
|
5
|
+
import ObjectID from "../../Types/ObjectID";
|
|
6
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
7
|
+
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
8
|
+
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
9
|
+
import AIRunType from "../../Types/AI/AIRunType";
|
|
10
|
+
import { CodeFixTaskTypeHelper } from "../../Types/AI/CodeFixTaskType";
|
|
11
|
+
import AIRun from "../../Models/DatabaseModels/AIRun";
|
|
12
|
+
import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
|
|
13
|
+
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
14
|
+
import ProjectService from "../Services/ProjectService";
|
|
15
|
+
import AIRunService from "../Services/AIRunService";
|
|
16
|
+
import AIRunEventService from "../Services/AIRunEventService";
|
|
17
|
+
const DEFAULT_LIMIT = 25;
|
|
18
|
+
const MAX_LIMIT = 100;
|
|
19
|
+
const MAX_EVENTS = 500;
|
|
20
|
+
/*
|
|
21
|
+
* Dedicated read endpoints for the dashboard's AI fix-task pages.
|
|
22
|
+
*
|
|
23
|
+
* Code-fix runs are system-authored AIRuns (runType CodeFix, userId = null)
|
|
24
|
+
* and are therefore hidden by the per-user privacy pin on the generic
|
|
25
|
+
* AIRun / AIRunEvent CRUD. So access is gated explicitly here — the same
|
|
26
|
+
* pattern as AIInvestigationAPI: first confirm the caller can read the
|
|
27
|
+
* parent object (the project) under THEIR permissions, then read the runs
|
|
28
|
+
* and their events as root.
|
|
29
|
+
*/
|
|
30
|
+
const RUN_SELECT = {
|
|
31
|
+
_id: true,
|
|
32
|
+
status: true,
|
|
33
|
+
createdAt: true,
|
|
34
|
+
startedAt: true,
|
|
35
|
+
completedAt: true,
|
|
36
|
+
errorMessage: true,
|
|
37
|
+
triggeredByTelemetryExceptionId: true,
|
|
38
|
+
totalTokens: true,
|
|
39
|
+
codeFixTaskType: true,
|
|
40
|
+
};
|
|
41
|
+
/*
|
|
42
|
+
* Serialize a run with codeFixTaskType normalized: a null column means
|
|
43
|
+
* FixException (rows created before task recipes existed), and clients
|
|
44
|
+
* should never have to know about the legacy null.
|
|
45
|
+
*/
|
|
46
|
+
function runToJson(run) {
|
|
47
|
+
const runJson = BaseModel.toJSONArray([run], AIRun)[0] || {};
|
|
48
|
+
runJson["codeFixTaskType"] = CodeFixTaskTypeHelper.fromDatabaseValue(run.codeFixTaskType);
|
|
49
|
+
return runJson;
|
|
50
|
+
}
|
|
51
|
+
export default class CodeFixRunAPI {
|
|
52
|
+
constructor() {
|
|
53
|
+
this.router = Express.getRouter();
|
|
54
|
+
this.initRoutes();
|
|
55
|
+
}
|
|
56
|
+
getRouter() {
|
|
57
|
+
return this.router;
|
|
58
|
+
}
|
|
59
|
+
initRoutes() {
|
|
60
|
+
// List the project's code-fix runs, newest first.
|
|
61
|
+
this.router.post("/code-fix-run/list", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
62
|
+
try {
|
|
63
|
+
const props = await this.getAccessCheckedProps(req);
|
|
64
|
+
const body = req.body || {};
|
|
65
|
+
let limit = DEFAULT_LIMIT;
|
|
66
|
+
if (typeof body["limit"] === "number") {
|
|
67
|
+
limit = body["limit"];
|
|
68
|
+
}
|
|
69
|
+
limit = Math.min(Math.max(Math.floor(limit), 1), MAX_LIMIT);
|
|
70
|
+
let skip = 0;
|
|
71
|
+
if (typeof body["skip"] === "number") {
|
|
72
|
+
skip = Math.max(Math.floor(body["skip"]), 0);
|
|
73
|
+
}
|
|
74
|
+
const query = {
|
|
75
|
+
projectId: props.tenantId,
|
|
76
|
+
runType: AIRunType.CodeFix,
|
|
77
|
+
};
|
|
78
|
+
// Root read after the tenant access check above.
|
|
79
|
+
const runs = await AIRunService.findBy({
|
|
80
|
+
query: query,
|
|
81
|
+
select: RUN_SELECT,
|
|
82
|
+
sort: { createdAt: SortOrder.Descending },
|
|
83
|
+
limit: limit,
|
|
84
|
+
skip: skip,
|
|
85
|
+
props: { isRoot: true },
|
|
86
|
+
});
|
|
87
|
+
const count = await AIRunService.countBy({
|
|
88
|
+
query: query,
|
|
89
|
+
props: { isRoot: true },
|
|
90
|
+
});
|
|
91
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
92
|
+
runs: runs.map((run) => {
|
|
93
|
+
return runToJson(run);
|
|
94
|
+
}),
|
|
95
|
+
count: count.toNumber(),
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
next(err);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// One run + its ordered glass-box event trail.
|
|
105
|
+
this.router.post("/code-fix-run/get/:runId", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
106
|
+
try {
|
|
107
|
+
const props = await this.getAccessCheckedProps(req);
|
|
108
|
+
const runIdString = req.params["runId"];
|
|
109
|
+
if (!runIdString) {
|
|
110
|
+
throw new BadDataException("runId is required.");
|
|
111
|
+
}
|
|
112
|
+
const runId = new ObjectID(runIdString);
|
|
113
|
+
/*
|
|
114
|
+
* Root read, but pinned to the caller's (access-checked) project —
|
|
115
|
+
* a run id from another project resolves to "not found".
|
|
116
|
+
*/
|
|
117
|
+
const run = await AIRunService.findOneBy({
|
|
118
|
+
query: {
|
|
119
|
+
_id: runId.toString(),
|
|
120
|
+
projectId: props.tenantId,
|
|
121
|
+
runType: AIRunType.CodeFix,
|
|
122
|
+
},
|
|
123
|
+
select: RUN_SELECT,
|
|
124
|
+
props: { isRoot: true },
|
|
125
|
+
});
|
|
126
|
+
if (!run) {
|
|
127
|
+
throw new BadDataException("Code fix run not found (or it does not belong to this project).");
|
|
128
|
+
}
|
|
129
|
+
const events = await AIRunEventService.findBy({
|
|
130
|
+
query: { aiRunId: run.id },
|
|
131
|
+
select: {
|
|
132
|
+
_id: true,
|
|
133
|
+
sequence: true,
|
|
134
|
+
eventType: true,
|
|
135
|
+
toolName: true,
|
|
136
|
+
resultSummary: true,
|
|
137
|
+
createdAt: true,
|
|
138
|
+
},
|
|
139
|
+
sort: { sequence: SortOrder.Ascending },
|
|
140
|
+
limit: MAX_EVENTS,
|
|
141
|
+
skip: 0,
|
|
142
|
+
props: { isRoot: true },
|
|
143
|
+
});
|
|
144
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
145
|
+
run: runToJson(run),
|
|
146
|
+
events: BaseModel.toJSONArray(events, AIRunEvent),
|
|
147
|
+
});
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
next(err);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/*
|
|
157
|
+
* Requires a logged-in session and a tenant, then verifies project access
|
|
158
|
+
* by reading the project under the USER's permissions (null when the user
|
|
159
|
+
* is not a member). Returns the props for further use.
|
|
160
|
+
*/
|
|
161
|
+
async getAccessCheckedProps(req) {
|
|
162
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
163
|
+
if (!props.userId) {
|
|
164
|
+
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
165
|
+
}
|
|
166
|
+
if (!props.tenantId) {
|
|
167
|
+
throw new BadDataException("Project ID is required (tenantid header).");
|
|
168
|
+
}
|
|
169
|
+
// Access check under the USER's permissions (null when not allowed).
|
|
170
|
+
const project = await ProjectService.findOneById({
|
|
171
|
+
id: props.tenantId,
|
|
172
|
+
select: { _id: true },
|
|
173
|
+
props: props,
|
|
174
|
+
});
|
|
175
|
+
if (!project) {
|
|
176
|
+
throw new NotAuthorizedException("Project not found (or you do not have access to it).");
|
|
177
|
+
}
|
|
178
|
+
return props;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=CodeFixRunAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeFixRunAPI.js","sourceRoot":"","sources":["../../../../Server/API/CodeFixRunAPI.ts"],"names":[],"mappings":"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"}
|