@oneuptime/common 11.5.8 → 11.5.10
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/AnalyticsModels/Index.ts +13 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +178 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +179 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +179 -0
- package/Models/AnalyticsModels/NetworkFlow.ts +397 -0
- package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +15 -6
- package/Models/DatabaseModels/AIRun.ts +37 -0
- package/Models/DatabaseModels/AIRunEvent.ts +34 -1
- package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +18 -0
- package/Models/DatabaseModels/GlobalConfig.ts +36 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/MarketingConversion.ts +198 -0
- package/Models/DatabaseModels/MetricSavedView.ts +34 -0
- package/Models/DatabaseModels/MetricType.ts +74 -0
- package/Models/DatabaseModels/NetworkDevice.ts +332 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +328 -0
- package/Models/DatabaseModels/NetworkInterface.ts +58 -0
- package/Models/DatabaseModels/Project.ts +62 -0
- package/Models/DatabaseModels/StatusPage.ts +42 -0
- package/Models/DatabaseModels/User.ts +37 -0
- package/Server/API/AIAgentTaskAPI.ts +38 -12
- package/Server/API/AIAgentTaskLogAPI.ts +49 -0
- package/Server/API/AIChatAPI.ts +16 -0
- package/Server/API/AIReadinessAPI.ts +84 -0
- package/Server/API/BaseAnalyticsAPI.ts +23 -0
- package/Server/API/CodeFixRunAPI.ts +182 -0
- package/Server/API/EnterpriseLicenseAPI.ts +14 -0
- package/Server/API/TelemetryExceptionAPI.ts +6 -1
- package/Server/EnvironmentConfig.ts +84 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.ts +52 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.ts +38 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.ts +108 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
- package/Server/Services/AIRunEventService.ts +15 -1
- package/Server/Services/AIRunService.ts +38 -1
- package/Server/Services/AnalyticsDatabaseService.ts +70 -1
- package/Server/Services/IncidentService.ts +13 -0
- package/Server/Services/Index.ts +10 -0
- package/Server/Services/LlmProviderService.ts +2 -0
- package/Server/Services/MarketingConversionService.ts +10 -0
- package/Server/Services/MetricItemAggMV1mByContainerService.ts +31 -0
- package/Server/Services/MetricItemAggMV1mByK8sClusterService.ts +31 -0
- package/Server/Services/MetricItemAggMV1mByServiceService.ts +31 -0
- package/Server/Services/MetricService.ts +970 -122
- package/Server/Services/MonitorService.ts +14 -0
- package/Server/Services/NetworkDeviceOwnerTeamService.ts +42 -0
- package/Server/Services/NetworkDeviceOwnerUserService.ts +106 -0
- package/Server/Services/NetworkFlowService.ts +11 -0
- package/Server/Services/OnCallDutyPolicyService.ts +11 -1
- package/Server/Services/ProjectService.ts +178 -0
- package/Server/Services/SpanService.ts +13 -9
- package/Server/Services/StatusPageService.ts +97 -0
- package/Server/Services/TeamMemberService.ts +11 -0
- package/Server/Services/TelemetryExceptionService.ts +19 -90
- package/Server/Services/UserService.ts +59 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +37 -7
- package/Server/Types/Markdown.ts +9 -9
- package/Server/Types/MarkdownSlugify.ts +47 -0
- package/Server/Utils/AI/AIRunTranscript.ts +240 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +9 -0
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +119 -5
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +75 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +235 -0
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +2 -3
- package/Server/Utils/AI/Toolbox/CodeTools.ts +883 -0
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +519 -0
- package/Server/Utils/AI/Toolbox/Index.ts +27 -0
- package/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.ts +279 -0
- package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +19 -1
- package/Server/Utils/Attribution.ts +99 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +600 -0
- package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +7 -2
- package/Server/Utils/LLM/LLMService.ts +397 -18
- package/Server/Utils/Marketing/ConversionUploadProvider.ts +103 -0
- package/Server/Utils/Marketing/ConversionUploadProviders.ts +22 -0
- package/Server/Utils/Marketing/Providers/GoogleAds.ts +270 -0
- package/Server/Utils/Marketing/Providers/LinkedIn.ts +147 -0
- package/Server/Utils/Marketing/Providers/Meta.ts +148 -0
- package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +196 -0
- package/Server/Utils/Marketing/Providers/Reddit.ts +178 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +71 -7
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +31 -19
- package/Server/Utils/Monitor/MonitorIncident.ts +71 -7
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +57 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +94 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +19 -11
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +125 -14
- package/Server/Utils/ProductAnalytics.ts +133 -0
- package/Server/Utils/Telemetry/Telemetry.ts +39 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +21 -0
- package/Tests/Models/StatusPageEnableMcpServer.test.ts +125 -0
- package/Tests/Server/API/BaseAnalyticsAPI.test.ts +72 -0
- package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +9 -1
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +21 -2
- package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +173 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +1391 -0
- package/Tests/Server/Services/NetworkDeviceOwnerServices.test.ts +260 -0
- package/Tests/Server/Services/StatusPageServiceMcp.test.ts +223 -0
- package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +26 -3
- package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +12 -0
- package/Tests/Server/Types/Markdown.test.ts +106 -0
- package/Tests/Server/Utils/AI/AIRunTranscript.test.ts +182 -0
- package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +411 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +596 -0
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +475 -0
- package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +548 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +142 -0
- package/Tests/Server/Utils/AI/ScheduledMaintenanceTools.test.ts +176 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +63 -0
- package/Tests/Server/Utils/GitHubGetFileContent.test.ts +197 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplateUtilNetworkDevice.test.ts +389 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +502 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +764 -0
- package/Tests/Types/AI/AIAgentTaskStatus.test.ts +7 -6
- package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
- package/Tests/Types/AI/AIRunStatus.test.ts +42 -0
- package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +111 -2
- package/Tests/Types/Database/EndsWith.test.ts +64 -0
- package/Tests/Types/Database/GreaterThan.test.ts +62 -0
- package/Tests/Types/Database/GreaterThanOrEqual.test.ts +65 -0
- package/Tests/Types/Database/GreaterThanOrNull.test.ts +63 -0
- package/Tests/Types/Database/Includes.test.ts +65 -0
- package/Tests/Types/Database/IncludesAll.test.ts +65 -0
- package/Tests/Types/Database/IncludesNone.test.ts +65 -0
- package/Tests/Types/Database/IsNull.test.ts +44 -0
- package/Tests/Types/Database/LessThan.test.ts +62 -0
- package/Tests/Types/Database/LessThanOrEqual.test.ts +62 -0
- package/Tests/Types/Database/LessThanOrNull.test.ts +62 -0
- package/Tests/Types/Database/MultiSearch.test.ts +81 -0
- package/Tests/Types/Database/NotContains.test.ts +64 -0
- package/Tests/Types/Database/NotNull.test.ts +44 -0
- package/Tests/Types/Database/StartsWith.test.ts +64 -0
- package/Tests/Types/Log/LogSeverity.test.ts +78 -0
- package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +83 -1
- package/Tests/Types/Monitor/SnmpV3EnumParsing.test.ts +247 -0
- package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +263 -0
- package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +167 -0
- package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +66 -0
- package/Tests/UI/Components/XAxis.test.ts +5 -3
- package/Tests/UI/Utils/AIChatExport/ChatWidgetData.test.ts +319 -0
- package/Tests/UI/Utils/AIChatExport/ChatWidgetMarkdown.test.ts +188 -0
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +76 -0
- package/Tests/Utils/Metrics/MetricExplorerUrl.test.ts +622 -0
- package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +474 -0
- package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +52 -4
- package/Types/AI/AIAgentTaskStatus.ts +13 -0
- package/Types/AI/AIChatPageContext.ts +137 -0
- package/Types/AI/AIChatTypes.ts +44 -0
- package/Types/AI/AIFixReadiness.ts +46 -0
- package/Types/AI/AIRunStatus.ts +11 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +11 -0
- package/Types/BaseDatabase/AggregateBy.ts +31 -2
- package/Types/BaseDatabase/AggregatedResult.ts +22 -0
- package/Types/BaseDatabase/AggregationInterval.ts +11 -0
- package/Types/BaseDatabase/AggregationIntervalUtil.ts +30 -5
- package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +16 -0
- package/Types/Email/EmailTemplateType.ts +3 -0
- package/Types/Log/LogSeverity.ts +61 -0
- package/Types/Marketing/MarketingConversion.ts +11 -0
- package/Types/Metrics/MetricQueryConfigData.ts +21 -0
- package/Types/Metrics/MetricQueryData.ts +8 -0
- package/Types/Metrics/MetricViewData.ts +8 -0
- package/Types/Monitor/MonitorMetricType.ts +8 -0
- package/Types/Monitor/MonitorStep.ts +9 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +12 -0
- package/Types/Monitor/MonitorType.ts +2 -1
- package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +17 -12
- package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +13 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +37 -3
- package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +46 -0
- package/Types/Monitor/SnmpMonitor/SnmpEntityInfo.ts +15 -0
- package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +8 -0
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +17 -8
- package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +53 -0
- package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +43 -0
- package/Types/Monitor/SnmpMonitor/SnmpSystemInfo.ts +16 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +119 -3
- package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +40 -0
- package/Types/NetFlow/NetworkFlowRecord.ts +25 -0
- package/Types/Syslog/SyslogMessage.ts +18 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +9 -0
- package/Types/Telemetry/TelemetrySavedViewType.ts +12 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +51 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +51 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +97 -26
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +336 -3
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +118 -1
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +336 -3
- package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +7 -0
- package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +15 -0
- package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +51 -0
- package/UI/Components/Charts/Types/ReferenceRegionProps.ts +12 -0
- package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +12 -0
- package/UI/Components/Charts/Types/XAxis/XAxisPrecision.ts +1 -0
- package/UI/Components/Charts/Utils/DataPoint.ts +0 -0
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +169 -0
- package/UI/Components/Charts/Utils/XAxis.ts +28 -4
- package/UI/Components/Forms/BasicForm.tsx +26 -8
- package/UI/Components/Icon/Icon.tsx +33 -13
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +9 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +67 -0
- package/UI/Components/Page/ModelPage.tsx +6 -1
- package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +33 -4
- package/UI/Styles/Theme.css +1324 -0
- package/UI/Utils/AIChatExport/ChatWidgetData.ts +316 -0
- package/UI/Utils/AIChatExport/ChatWidgetMarkdown.ts +349 -0
- package/UI/Utils/AIChatExport/ConversationMarkdown.ts +177 -0
- package/UI/Utils/AIChatExport/MarkdownBlocks.ts +327 -0
- package/UI/Utils/AIChatExport/MarkdownSafety.ts +215 -0
- package/UI/Utils/DownloadFile.ts +54 -0
- package/UI/Utils/User.ts +41 -2
- package/Utils/Analytics.ts +8 -6
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +74 -0
- package/Utils/Metrics/MetricExplorerUrl.ts +771 -0
- package/Utils/Metrics/MetricFormulaEvaluator.ts +410 -46
- package/Utils/Monitor/NetworkTopologyUtil.ts +261 -49
- package/Utils/ValueFormatter.ts +22 -1
- package/build/dist/Models/AnalyticsModels/Index.js +13 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +159 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +158 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +160 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js +351 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +15 -7
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRun.js +38 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRunEvent.js +31 -0
- package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +19 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +38 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MarketingConversion.js +219 -0
- package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js +35 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +76 -0
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +341 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +341 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +60 -0
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +65 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +43 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +38 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +37 -11
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +32 -7
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +9 -0
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIReadinessAPI.js +57 -0
- package/build/dist/Server/API/AIReadinessAPI.js.map +1 -0
- package/build/dist/Server/API/BaseAnalyticsAPI.js +19 -0
- package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
- package/build/dist/Server/API/CodeFixRunAPI.js +142 -0
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +8 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +4 -0
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +51 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js +80 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js +37 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js +21 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js +47 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIRunEventService.js +8 -0
- package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +29 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +58 -4
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +12 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +10 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LlmProviderService.js +2 -0
- package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
- package/build/dist/Server/Services/MarketingConversionService.js +9 -0
- package/build/dist/Server/Services/MarketingConversionService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +761 -125
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +18 -5
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +44 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +88 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/NetworkFlowService.js +9 -0
- package/build/dist/Server/Services/NetworkFlowService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +15 -6
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +146 -6
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +8 -6
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +91 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +11 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +14 -61
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +52 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +33 -7
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +8 -8
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Types/MarkdownSlugify.js +47 -0
- package/build/dist/Server/Types/MarkdownSlugify.js.map +1 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js +180 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js.map +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +103 -5
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +55 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +211 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +654 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +389 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +19 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js +239 -0
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +19 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -1
- package/build/dist/Server/Utils/Attribution.js +74 -0
- package/build/dist/Server/Utils/Attribution.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +439 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +275 -19
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +40 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js +20 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +177 -0
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +113 -0
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js +109 -0
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +130 -0
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +126 -0
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +53 -9
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -10
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +54 -11
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +43 -3
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +68 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +17 -11
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +100 -15
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/ProductAnalytics.js +111 -0
- package/build/dist/Server/Utils/ProductAnalytics.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +32 -5
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/AI/AIAgentTaskStatus.js +12 -0
- package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -1
- package/build/dist/Types/AI/AIChatPageContext.js +101 -0
- package/build/dist/Types/AI/AIChatPageContext.js.map +1 -0
- package/build/dist/Types/AI/AIChatTypes.js +2 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/AI/AIFixReadiness.js +9 -0
- package/build/dist/Types/AI/AIFixReadiness.js.map +1 -0
- package/build/dist/Types/AI/AIRunStatus.js +11 -0
- package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +11 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationInterval.js +11 -0
- package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +33 -5
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Log/LogSeverity.js +56 -0
- package/build/dist/Types/Log/LogSeverity.js.map +1 -1
- package/build/dist/Types/Marketing/MarketingConversion.js +13 -0
- package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +6 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +3 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +2 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +41 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +48 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +38 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +96 -3
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +38 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -1
- package/build/dist/Types/NetFlow/NetworkFlowRecord.js +2 -0
- package/build/dist/Types/NetFlow/NetworkFlowRecord.js.map +1 -0
- package/build/dist/Types/Syslog/SyslogMessage.js +2 -0
- package/build/dist/Types/Syslog/SyslogMessage.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +0 -7
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetrySavedViewType.js +13 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewType.js.map +1 -0
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +25 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +26 -2
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +36 -12
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +217 -8
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +55 -4
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +217 -8
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +6 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js +2 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js +2 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +25 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js +2 -0
- package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js.map +1 -0
- package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js +2 -0
- package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js.map +1 -0
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js +1 -0
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js +0 -0
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +121 -0
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -0
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +27 -4
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +24 -6
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +15 -8
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +58 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Page/ModelPage.js +7 -1
- package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +10 -4
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js +217 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js +234 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +111 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js +233 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js +134 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js.map +1 -0
- package/build/dist/UI/Utils/DownloadFile.js +41 -0
- package/build/dist/UI/Utils/DownloadFile.js.map +1 -0
- package/build/dist/UI/Utils/User.js +35 -2
- package/build/dist/UI/Utils/User.js.map +1 -1
- package/build/dist/Utils/Analytics.js +8 -5
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +57 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +418 -0
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +296 -37
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +176 -40
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +20 -1
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +6 -2
|
@@ -120,6 +120,31 @@ export default class AIAgentTaskLogAPI {
|
|
|
120
120
|
);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
/*
|
|
124
|
+
* Optional verbatim tool detail (see TaskLogger.toolCall): the
|
|
125
|
+
* arguments as executed and the full output the model saw, recorded
|
|
126
|
+
* on the run's transcript for the Logs page. Absent it — an older
|
|
127
|
+
* agent — behaviour is exactly as before.
|
|
128
|
+
*
|
|
129
|
+
* The event type stays ProgressLog even when the detail is present.
|
|
130
|
+
* That is deliberate, not laziness: the Overview's ChatActivityFeed
|
|
131
|
+
* renders a ProgressLog by printing resultSummary.message, but
|
|
132
|
+
* renders a ToolCallCompleted by trying to COMPLETE a matching
|
|
133
|
+
* running step from an earlier ToolCallStarted — an event the
|
|
134
|
+
* code-fix path never emits. Typing these as ToolCallCompleted
|
|
135
|
+
* therefore matched nothing and silently erased every tool line from
|
|
136
|
+
* the Overview feed. The payload rides on the same event instead.
|
|
137
|
+
*/
|
|
138
|
+
const toolName: string | undefined = data["toolName"] as
|
|
139
|
+
| string
|
|
140
|
+
| undefined;
|
|
141
|
+
const toolArguments: JSONObject | undefined = data[
|
|
142
|
+
"toolArguments"
|
|
143
|
+
] as JSONObject | undefined;
|
|
144
|
+
const toolResult: string | undefined = data["toolResult"] as
|
|
145
|
+
| string
|
|
146
|
+
| undefined;
|
|
147
|
+
|
|
123
148
|
await AIRunEventService.appendEventToRun({
|
|
124
149
|
projectId: existingRun.projectId,
|
|
125
150
|
aiRunId: runId,
|
|
@@ -128,6 +153,30 @@ export default class AIAgentTaskLogAPI {
|
|
|
128
153
|
message: message,
|
|
129
154
|
severity: severity,
|
|
130
155
|
},
|
|
156
|
+
...(toolName ? { toolName: toolName } : {}),
|
|
157
|
+
/*
|
|
158
|
+
* toolArguments (the column) is deliberately NOT written: its read
|
|
159
|
+
* ACL is project-member-wide, and a write_file call's arguments are
|
|
160
|
+
* the file's full new content. The same arguments go onto
|
|
161
|
+
* contentPayload below, whose read ACL is empty and which only the
|
|
162
|
+
* owner/admin-gated logs endpoint returns.
|
|
163
|
+
*/
|
|
164
|
+
...(toolName
|
|
165
|
+
? {
|
|
166
|
+
contentPayload: {
|
|
167
|
+
...(toolResult !== undefined
|
|
168
|
+
? { toolResult: toolResult }
|
|
169
|
+
: {}),
|
|
170
|
+
...(toolArguments
|
|
171
|
+
? {
|
|
172
|
+
responseToolCalls: [
|
|
173
|
+
{ name: toolName, arguments: toolArguments },
|
|
174
|
+
],
|
|
175
|
+
}
|
|
176
|
+
: {}),
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
: {}),
|
|
131
180
|
});
|
|
132
181
|
|
|
133
182
|
/* A progress report proves the agent is alive — refresh the heartbeat. */
|
package/Server/API/AIChatAPI.ts
CHANGED
|
@@ -21,6 +21,10 @@ import SubscriptionPlan, {
|
|
|
21
21
|
import { IsBillingEnabled, getAllEnvVars } from "../EnvironmentConfig";
|
|
22
22
|
import AIChatMessageRole from "../../Types/AI/AIChatMessageRole";
|
|
23
23
|
import AIChatMessageStatus from "../../Types/AI/AIChatMessageStatus";
|
|
24
|
+
import {
|
|
25
|
+
AIChatPageContext,
|
|
26
|
+
AIChatPageContextHelper,
|
|
27
|
+
} from "../../Types/AI/AIChatPageContext";
|
|
24
28
|
import AIChatPermissionMode, {
|
|
25
29
|
AIChatPermissionModeHelper,
|
|
26
30
|
} from "../../Types/AI/AIChatPermissionMode";
|
|
@@ -143,6 +147,16 @@ router.post(
|
|
|
143
147
|
? (req.body["permissionMode"] as AIChatPermissionMode)
|
|
144
148
|
: undefined;
|
|
145
149
|
|
|
150
|
+
/*
|
|
151
|
+
* Optional page context — what the user was looking at when they asked
|
|
152
|
+
* (an incident, a monitor, the logs explorer, …). It is a hint for the
|
|
153
|
+
* system prompt, so an invalid payload is dropped, never an error.
|
|
154
|
+
*/
|
|
155
|
+
const pageContext: AIChatPageContext | undefined =
|
|
156
|
+
AIChatPageContextHelper.sanitize(
|
|
157
|
+
req.body["pageContext"] as JSONObject | undefined,
|
|
158
|
+
);
|
|
159
|
+
|
|
146
160
|
// Plan gate: custom endpoints get no automatic billing check.
|
|
147
161
|
if (
|
|
148
162
|
IsBillingEnabled &&
|
|
@@ -435,6 +449,7 @@ router.post(
|
|
|
435
449
|
aiRunId: createdRun.id!,
|
|
436
450
|
llmProviderId: effectiveLlmProviderId,
|
|
437
451
|
permissionMode: effectivePermissionMode,
|
|
452
|
+
pageContext: pageContext,
|
|
438
453
|
props: props,
|
|
439
454
|
}).catch((error: Error) => {
|
|
440
455
|
logger.error(`AI chat turn crashed: ${error.message}`);
|
|
@@ -498,6 +513,7 @@ router.post(
|
|
|
498
513
|
return {
|
|
499
514
|
id: provider.id?.toString(),
|
|
500
515
|
name: provider.name,
|
|
516
|
+
description: provider.description || null,
|
|
501
517
|
llmType: provider.llmType?.toString() || null,
|
|
502
518
|
modelName: provider.modelName || null,
|
|
503
519
|
isDefault: provider.isDefault || false,
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import Express, {
|
|
2
|
+
ExpressRequest,
|
|
3
|
+
ExpressResponse,
|
|
4
|
+
ExpressRouter,
|
|
5
|
+
NextFunction,
|
|
6
|
+
} from "../Utils/Express";
|
|
7
|
+
import Response from "../Utils/Response";
|
|
8
|
+
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
9
|
+
import CommonAPI from "./CommonAPI";
|
|
10
|
+
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
11
|
+
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
12
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
13
|
+
import { JSONArray } from "../../Types/JSON";
|
|
14
|
+
import { AIFixReadiness } from "../../Types/AI/AIFixReadiness";
|
|
15
|
+
import CodeFixReadiness from "../Utils/AI/CodeFix/CodeFixReadiness";
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* Project-wide "can AI actually do anything here?" — the gates a CodeFix run
|
|
19
|
+
* passes through, answered for the whole project rather than one exception.
|
|
20
|
+
* The AI Tasks page renders this instead of a static prerequisites banner, so
|
|
21
|
+
* what the user reads reflects what the server would actually decide.
|
|
22
|
+
*
|
|
23
|
+
* The per-exception equivalent lives at
|
|
24
|
+
* GET /telemetry-exception/ai-fix-readiness/:id; both share the checks in
|
|
25
|
+
* CodeFixReadiness, so they cannot drift apart.
|
|
26
|
+
*/
|
|
27
|
+
const router: ExpressRouter = Express.getRouter();
|
|
28
|
+
|
|
29
|
+
router.post(
|
|
30
|
+
"/ai-readiness/code-fix",
|
|
31
|
+
UserMiddleware.getUserMiddleware,
|
|
32
|
+
async (
|
|
33
|
+
req: ExpressRequest,
|
|
34
|
+
res: ExpressResponse,
|
|
35
|
+
next: NextFunction,
|
|
36
|
+
): Promise<void> => {
|
|
37
|
+
try {
|
|
38
|
+
const props: DatabaseCommonInteractionProps =
|
|
39
|
+
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* Authorize explicitly. getUserMiddleware admits anonymous callers
|
|
43
|
+
* (it sets userType = Public and calls next()), and tenantId is read
|
|
44
|
+
* straight off the caller-supplied `tenantid` header before any auth
|
|
45
|
+
* runs — so neither is evidence of anything on its own. The readiness
|
|
46
|
+
* checks below all query with `isRoot: true`, which means there is no
|
|
47
|
+
* RBAC layer underneath to catch an unauthorized caller: this handler
|
|
48
|
+
* is the only gate. The per-exception sibling gets away without this
|
|
49
|
+
* because it loads the exception with the caller's props first, and
|
|
50
|
+
* derives the project from that authorized row.
|
|
51
|
+
*/
|
|
52
|
+
if (!props.userId) {
|
|
53
|
+
throw new NotAuthorizedException(
|
|
54
|
+
"AI readiness requires a logged-in user session.",
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!props.tenantId) {
|
|
59
|
+
throw new BadDataException("Project ID is required (tenantid header).");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Being logged in somewhere is not access to THIS project.
|
|
63
|
+
if (!props.userTenantAccessPermission?.[props.tenantId.toString()]) {
|
|
64
|
+
throw new NotAuthorizedException(
|
|
65
|
+
"You do not have access to this project.",
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const readiness: AIFixReadiness =
|
|
70
|
+
await CodeFixReadiness.getProjectReadiness({
|
|
71
|
+
projectId: props.tenantId,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
75
|
+
ready: readiness.ready,
|
|
76
|
+
checks: readiness.checks as unknown as JSONArray,
|
|
77
|
+
});
|
|
78
|
+
} catch (err) {
|
|
79
|
+
next(err);
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
export default router;
|
|
@@ -327,6 +327,23 @@ export default class BaseAnalyticsAPI<
|
|
|
327
327
|
);
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
+
/*
|
|
331
|
+
* Server-side clamp on the client-sent aggregate limit — nothing else
|
|
332
|
+
* bounds it, so an arbitrary client could request limit=999999999
|
|
333
|
+
* rows. Clamped to LIMIT_PER_PROJECT (never lower): grouped chart
|
|
334
|
+
* queries legitimately use the full 10k (groups × buckets).
|
|
335
|
+
* Non-numeric/absent limits are left untouched for the service layer's
|
|
336
|
+
* own defaulting.
|
|
337
|
+
*/
|
|
338
|
+
public static clampAggregateLimit(
|
|
339
|
+
aggregateBy: AggregateBy<AnalyticsDataModel>,
|
|
340
|
+
): void {
|
|
341
|
+
const requestedLimit: number = Number(aggregateBy.limit);
|
|
342
|
+
if (Number.isFinite(requestedLimit) && requestedLimit > LIMIT_PER_PROJECT) {
|
|
343
|
+
aggregateBy.limit = LIMIT_PER_PROJECT;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
330
347
|
@CaptureSpan()
|
|
331
348
|
public async getAggregate(
|
|
332
349
|
req: ExpressRequest,
|
|
@@ -357,6 +374,12 @@ export default class BaseAnalyticsAPI<
|
|
|
357
374
|
throw new BadRequestException("AggregateBy is required");
|
|
358
375
|
}
|
|
359
376
|
|
|
377
|
+
/*
|
|
378
|
+
* Applied before the cache key is computed so an over-limit request
|
|
379
|
+
* shares the cache slot of its clamped equivalent.
|
|
380
|
+
*/
|
|
381
|
+
BaseAnalyticsAPI.clampAggregateLimit(aggregateBy);
|
|
382
|
+
|
|
360
383
|
const databaseProps: DatabaseCommonInteractionProps =
|
|
361
384
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
362
385
|
|
|
@@ -8,21 +8,27 @@ import Express, {
|
|
|
8
8
|
} from "../Utils/Express";
|
|
9
9
|
import Response from "../Utils/Response";
|
|
10
10
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
11
|
+
import DatabaseCommonInteractionPropsUtil, {
|
|
12
|
+
PermissionType,
|
|
13
|
+
} from "../../Types/BaseDatabase/DatabaseCommonInteractionPropsUtil";
|
|
11
14
|
import ObjectID from "../../Types/ObjectID";
|
|
12
15
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
13
16
|
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
14
17
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
15
18
|
import Select from "../Types/Database/Select";
|
|
16
19
|
import { JSONObject } from "../../Types/JSON";
|
|
20
|
+
import Permission, { UserPermission } from "../../Types/Permission";
|
|
17
21
|
import AIRunType from "../../Types/AI/AIRunType";
|
|
18
22
|
import { CodeFixTaskTypeHelper } from "../../Types/AI/CodeFixTaskType";
|
|
19
23
|
import AIRun from "../../Models/DatabaseModels/AIRun";
|
|
20
24
|
import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
|
|
25
|
+
import LlmLog from "../../Models/DatabaseModels/LlmLog";
|
|
21
26
|
import Project from "../../Models/DatabaseModels/Project";
|
|
22
27
|
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
23
28
|
import ProjectService from "../Services/ProjectService";
|
|
24
29
|
import AIRunService from "../Services/AIRunService";
|
|
25
30
|
import AIRunEventService from "../Services/AIRunEventService";
|
|
31
|
+
import LlmLogService from "../Services/LlmLogService";
|
|
26
32
|
|
|
27
33
|
const MAX_EVENTS: number = 500;
|
|
28
34
|
|
|
@@ -56,6 +62,7 @@ const RUN_SELECT: Select<AIRun> = {
|
|
|
56
62
|
triggeredByTelemetryExceptionId: true,
|
|
57
63
|
totalTokens: true,
|
|
58
64
|
codeFixTaskType: true,
|
|
65
|
+
taskNumber: true,
|
|
59
66
|
attemptCount: true,
|
|
60
67
|
llmCallCount: true,
|
|
61
68
|
toolCallCount: true,
|
|
@@ -67,6 +74,50 @@ const RUN_SELECT: Select<AIRun> = {
|
|
|
67
74
|
*/
|
|
68
75
|
};
|
|
69
76
|
|
|
77
|
+
/*
|
|
78
|
+
* The Logs page's event trail.
|
|
79
|
+
*
|
|
80
|
+
* toolArguments is deliberately NOT selected, even though this endpoint reads
|
|
81
|
+
* as root and could. A code-fix write_file call carries the file's full new
|
|
82
|
+
* content in its arguments, and that column's own read ACL stops at
|
|
83
|
+
* ProjectMember — narrower than this endpoint's Project-read gate, which also
|
|
84
|
+
* admits Viewers. Returning it would leak the same customer source code that
|
|
85
|
+
* contentPayload is stripped below to protect, to an even wider audience. The
|
|
86
|
+
* page never needed it: Logs.tsx renders tool arguments from
|
|
87
|
+
* contentPayload.responseToolCalls, the owner/admin-gated copy.
|
|
88
|
+
*/
|
|
89
|
+
const LOG_EVENT_SELECT: Select<AIRunEvent> = {
|
|
90
|
+
_id: true,
|
|
91
|
+
sequence: true,
|
|
92
|
+
eventType: true,
|
|
93
|
+
toolName: true,
|
|
94
|
+
resultSummary: true,
|
|
95
|
+
citationId: true,
|
|
96
|
+
createdAt: true,
|
|
97
|
+
contentPayload: true,
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* The per-LLM-call metering shown beside the transcript. Read under the
|
|
102
|
+
* CALLER's permissions (not root), so LlmLog's own table ACL decides who sees
|
|
103
|
+
* it rather than this endpoint's broader Project-read gate.
|
|
104
|
+
*/
|
|
105
|
+
const LLM_LOG_SELECT: Select<LlmLog> = {
|
|
106
|
+
_id: true,
|
|
107
|
+
modelName: true,
|
|
108
|
+
llmProviderName: true,
|
|
109
|
+
status: true,
|
|
110
|
+
statusMessage: true,
|
|
111
|
+
totalTokens: true,
|
|
112
|
+
completionTokens: true,
|
|
113
|
+
durationMs: true,
|
|
114
|
+
requestStartedAt: true,
|
|
115
|
+
requestCompletedAt: true,
|
|
116
|
+
createdAt: true,
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const MAX_LLM_LOGS: number = 500;
|
|
120
|
+
|
|
70
121
|
/*
|
|
71
122
|
* Serialize a run with codeFixTaskType normalized: a null column means
|
|
72
123
|
* FixException (rows created before task recipes existed), and clients
|
|
@@ -163,6 +214,137 @@ export default class CodeFixRunAPI {
|
|
|
163
214
|
}
|
|
164
215
|
},
|
|
165
216
|
);
|
|
217
|
+
|
|
218
|
+
/*
|
|
219
|
+
* The Logs page: the same run, its FULL event trail, and the per-call LLM
|
|
220
|
+
* metering — everything recorded about a run, for debugging one that went
|
|
221
|
+
* wrong.
|
|
222
|
+
*
|
|
223
|
+
* Two things are gated more tightly than the trail itself:
|
|
224
|
+
*
|
|
225
|
+
* - contentPayload (the verbatim prompts, model replies and tool output)
|
|
226
|
+
* is returned only to ProjectOwner/ProjectAdmin. It embeds customer
|
|
227
|
+
* source code, which is why the column's own read ACL is empty and why
|
|
228
|
+
* LlmLog redacts the same content — this endpoint is the single
|
|
229
|
+
* deliberate door to it, and it is not open to every project member.
|
|
230
|
+
*
|
|
231
|
+
* - LlmLog rows are read under the CALLER's permissions rather than as
|
|
232
|
+
* root, so LlmLog's table ACL — not this endpoint's broader Project-read
|
|
233
|
+
* gate — decides who sees the metering.
|
|
234
|
+
*/
|
|
235
|
+
this.router.post(
|
|
236
|
+
"/code-fix-run/logs/:runId",
|
|
237
|
+
UserMiddleware.getUserMiddleware,
|
|
238
|
+
async (
|
|
239
|
+
req: ExpressRequest,
|
|
240
|
+
res: ExpressResponse,
|
|
241
|
+
next: NextFunction,
|
|
242
|
+
): Promise<void> => {
|
|
243
|
+
try {
|
|
244
|
+
const props: DatabaseCommonInteractionProps =
|
|
245
|
+
await this.getAccessCheckedProps(req);
|
|
246
|
+
|
|
247
|
+
const runIdString: string | undefined = req.params["runId"];
|
|
248
|
+
|
|
249
|
+
if (!runIdString) {
|
|
250
|
+
throw new BadDataException("runId is required.");
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const runId: ObjectID = new ObjectID(runIdString);
|
|
254
|
+
|
|
255
|
+
const run: AIRun | null = await AIRunService.findOneBy({
|
|
256
|
+
query: {
|
|
257
|
+
_id: runId.toString(),
|
|
258
|
+
projectId: props.tenantId!,
|
|
259
|
+
runType: AIRunType.CodeFix,
|
|
260
|
+
},
|
|
261
|
+
select: RUN_SELECT,
|
|
262
|
+
props: { isRoot: true },
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
if (!run) {
|
|
266
|
+
throw new BadDataException(
|
|
267
|
+
"Code fix run not found (or it does not belong to this project).",
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const canReadContent: boolean = this.callerCanReadRunContent(props);
|
|
272
|
+
|
|
273
|
+
const events: Array<AIRunEvent> = await AIRunEventService.findBy({
|
|
274
|
+
query: { aiRunId: run.id! },
|
|
275
|
+
select: LOG_EVENT_SELECT,
|
|
276
|
+
sort: { sequence: SortOrder.Ascending },
|
|
277
|
+
limit: MAX_EVENTS,
|
|
278
|
+
skip: 0,
|
|
279
|
+
props: { isRoot: true },
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
const eventsJson: Array<JSONObject> = BaseModel.toJSONArray(
|
|
283
|
+
events,
|
|
284
|
+
AIRunEvent,
|
|
285
|
+
);
|
|
286
|
+
|
|
287
|
+
if (!canReadContent) {
|
|
288
|
+
for (const eventJson of eventsJson) {
|
|
289
|
+
delete eventJson["contentPayload"];
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/*
|
|
294
|
+
* Under the caller's own permissions on purpose — see the note
|
|
295
|
+
* above. A caller without LlmLog read simply gets no metering rows.
|
|
296
|
+
*/
|
|
297
|
+
const llmLogs: Array<LlmLog> = await LlmLogService.findBy({
|
|
298
|
+
query: { aiRunId: runId, projectId: props.tenantId! },
|
|
299
|
+
select: LLM_LOG_SELECT,
|
|
300
|
+
sort: { createdAt: SortOrder.Ascending },
|
|
301
|
+
limit: MAX_LLM_LOGS,
|
|
302
|
+
skip: 0,
|
|
303
|
+
props: props,
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
307
|
+
run: runToJson(run),
|
|
308
|
+
events: eventsJson,
|
|
309
|
+
llmLogs: BaseModel.toJSONArray(llmLogs, LlmLog),
|
|
310
|
+
canReadContent: canReadContent,
|
|
311
|
+
});
|
|
312
|
+
return;
|
|
313
|
+
} catch (err) {
|
|
314
|
+
next(err);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/*
|
|
322
|
+
* Whether the caller may see a run's verbatim LLM/tool content. Project
|
|
323
|
+
* owners and admins only: the content embeds customer source code, so the
|
|
324
|
+
* bar is higher than the Project-read gate that admits them to the page.
|
|
325
|
+
*
|
|
326
|
+
* Read through getUserPermissions(Allow) rather than off
|
|
327
|
+
* userTenantAccessPermission directly, because that array holds GRANTS AND
|
|
328
|
+
* DENIALS together, discriminated only by isBlockPermission. Mapping it raw
|
|
329
|
+
* counts a team's explicit "block ProjectAdmin" entry as a grant of
|
|
330
|
+
* ProjectAdmin — inverting the control, so the admin action that restricts a
|
|
331
|
+
* team would be what hands it the source code.
|
|
332
|
+
*/
|
|
333
|
+
private callerCanReadRunContent(
|
|
334
|
+
props: DatabaseCommonInteractionProps,
|
|
335
|
+
): boolean {
|
|
336
|
+
const permissions: Array<Permission> =
|
|
337
|
+
DatabaseCommonInteractionPropsUtil.getUserPermissions(
|
|
338
|
+
props,
|
|
339
|
+
PermissionType.Allow,
|
|
340
|
+
).map((userPermission: UserPermission) => {
|
|
341
|
+
return userPermission.permission;
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
return (
|
|
345
|
+
permissions.includes(Permission.ProjectOwner) ||
|
|
346
|
+
permissions.includes(Permission.ProjectAdmin)
|
|
347
|
+
);
|
|
166
348
|
}
|
|
167
349
|
|
|
168
350
|
/*
|
|
@@ -32,6 +32,7 @@ export interface LicenseInstanceUpsert {
|
|
|
32
32
|
// Usage fields are only set on report-user-count, not on validate.
|
|
33
33
|
userCount?: number | undefined;
|
|
34
34
|
userEmailHashes?: Array<string> | undefined;
|
|
35
|
+
masterAdminEmails?: Array<string> | undefined;
|
|
35
36
|
lastReportedAt?: Date | undefined;
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -215,6 +216,10 @@ export default class EnterpriseLicenseAPI extends BaseAPI<
|
|
|
215
216
|
EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes(
|
|
216
217
|
req.body["userEmailHashes"],
|
|
217
218
|
);
|
|
219
|
+
const masterAdminEmails: Array<string> =
|
|
220
|
+
EnterpriseLicenseUsageUtil.sanitizeMasterAdminEmails(
|
|
221
|
+
req.body["masterAdminEmails"],
|
|
222
|
+
);
|
|
218
223
|
|
|
219
224
|
if (instanceId) {
|
|
220
225
|
/*
|
|
@@ -227,6 +232,7 @@ export default class EnterpriseLicenseAPI extends BaseAPI<
|
|
|
227
232
|
host: instanceHost || undefined,
|
|
228
233
|
userCount: userCount,
|
|
229
234
|
userEmailHashes: userEmailHashes,
|
|
235
|
+
masterAdminEmails: masterAdminEmails,
|
|
230
236
|
lastReportedAt: reportedAt,
|
|
231
237
|
});
|
|
232
238
|
}
|
|
@@ -372,6 +378,10 @@ export default class EnterpriseLicenseAPI extends BaseAPI<
|
|
|
372
378
|
newInstance.userEmailHashes = data.userEmailHashes;
|
|
373
379
|
}
|
|
374
380
|
|
|
381
|
+
if (data.masterAdminEmails !== undefined) {
|
|
382
|
+
newInstance.masterAdminEmails = data.masterAdminEmails;
|
|
383
|
+
}
|
|
384
|
+
|
|
375
385
|
if (data.lastReportedAt !== undefined) {
|
|
376
386
|
newInstance.lastReportedAt = data.lastReportedAt;
|
|
377
387
|
}
|
|
@@ -432,6 +442,10 @@ export default class EnterpriseLicenseAPI extends BaseAPI<
|
|
|
432
442
|
updateData.userEmailHashes = data.userEmailHashes;
|
|
433
443
|
}
|
|
434
444
|
|
|
445
|
+
if (data.masterAdminEmails !== undefined) {
|
|
446
|
+
updateData.masterAdminEmails = data.masterAdminEmails;
|
|
447
|
+
}
|
|
448
|
+
|
|
435
449
|
if (data.lastReportedAt !== undefined) {
|
|
436
450
|
updateData.lastReportedAt = data.lastReportedAt;
|
|
437
451
|
}
|
|
@@ -4,11 +4,11 @@ import BadDataException from "../../Types/Exception/BadDataException";
|
|
|
4
4
|
import ObjectID from "../../Types/ObjectID";
|
|
5
5
|
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
6
6
|
import TelemetryExceptionService, {
|
|
7
|
-
AIFixReadiness,
|
|
8
7
|
DashboardServiceSummary,
|
|
9
8
|
DashboardSummaryResult,
|
|
10
9
|
Service as TelemetryExceptionServiceType,
|
|
11
10
|
} from "../Services/TelemetryExceptionService";
|
|
11
|
+
import { AIFixReadiness } from "../../Types/AI/AIFixReadiness";
|
|
12
12
|
import AIRunService from "../Services/AIRunService";
|
|
13
13
|
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
14
14
|
import Response from "../Utils/Response";
|
|
@@ -51,6 +51,11 @@ const CODE_FIX_STATUS_TEXT: {
|
|
|
51
51
|
description:
|
|
52
52
|
"The AI agent finished. Review the pull request it opened for the proposed fix.",
|
|
53
53
|
},
|
|
54
|
+
[AIRunStatus.NoFixFound]: {
|
|
55
|
+
title: "No Fix Found",
|
|
56
|
+
description:
|
|
57
|
+
"The AI agent reviewed the code and did not find a fix to propose, so it opened no pull request.",
|
|
58
|
+
},
|
|
54
59
|
[AIRunStatus.Error]: {
|
|
55
60
|
title: "Error",
|
|
56
61
|
description: "The AI agent could not complete the fix.",
|
|
@@ -337,6 +337,90 @@ export const SubscriptionPlans: Array<SubscriptionPlan> =
|
|
|
337
337
|
export const AnalyticsKey: string = process.env["ANALYTICS_KEY"] || "";
|
|
338
338
|
export const AnalyticsHost: string = process.env["ANALYTICS_HOST"] || "";
|
|
339
339
|
|
|
340
|
+
/*
|
|
341
|
+
* Google Ads offline conversion uploads (MarketingConversions worker job).
|
|
342
|
+
* Server-only secrets — must never be added to FRONTEND_ENV_ALLOW_LIST.
|
|
343
|
+
*/
|
|
344
|
+
export const GoogleAdsDeveloperToken: string =
|
|
345
|
+
process.env["GOOGLE_ADS_DEVELOPER_TOKEN"] || "";
|
|
346
|
+
export const GoogleAdsOAuthClientId: string =
|
|
347
|
+
process.env["GOOGLE_ADS_OAUTH_CLIENT_ID"] || "";
|
|
348
|
+
export const GoogleAdsOAuthClientSecret: string =
|
|
349
|
+
process.env["GOOGLE_ADS_OAUTH_CLIENT_SECRET"] || "";
|
|
350
|
+
export const GoogleAdsOAuthRefreshToken: string =
|
|
351
|
+
process.env["GOOGLE_ADS_OAUTH_REFRESH_TOKEN"] || "";
|
|
352
|
+
// Digits only, no dashes (e.g. 1234567890).
|
|
353
|
+
export const GoogleAdsCustomerId: string =
|
|
354
|
+
process.env["GOOGLE_ADS_CUSTOMER_ID"] || "";
|
|
355
|
+
// Manager (MCC) account id when the OAuth user accesses the account via a manager.
|
|
356
|
+
export const GoogleAdsLoginCustomerId: string =
|
|
357
|
+
process.env["GOOGLE_ADS_LOGIN_CUSTOMER_ID"] || "";
|
|
358
|
+
/*
|
|
359
|
+
* Google sunsets Ads API versions roughly yearly (v20 died 2026-06-10) —
|
|
360
|
+
* keep this default on a currently supported version and prefer setting
|
|
361
|
+
* GOOGLE_ADS_API_VERSION explicitly in production.
|
|
362
|
+
*/
|
|
363
|
+
export const GoogleAdsApiVersion: string =
|
|
364
|
+
process.env["GOOGLE_ADS_API_VERSION"] || "v23";
|
|
365
|
+
// Numeric conversion action ids from Google Ads (Goals -> Conversions).
|
|
366
|
+
export const GoogleAdsSignUpConversionActionId: string =
|
|
367
|
+
process.env["GOOGLE_ADS_SIGNUP_CONVERSION_ACTION_ID"] || "";
|
|
368
|
+
export const GoogleAdsPaidSubscriptionConversionActionId: string =
|
|
369
|
+
process.env["GOOGLE_ADS_PAID_SUBSCRIPTION_CONVERSION_ACTION_ID"] || "";
|
|
370
|
+
|
|
371
|
+
// Meta (Facebook) Conversions API. Server-only secrets.
|
|
372
|
+
export const MetaConversionsPixelId: string =
|
|
373
|
+
process.env["META_CONVERSIONS_PIXEL_ID"] || "";
|
|
374
|
+
export const MetaConversionsAccessToken: string =
|
|
375
|
+
process.env["META_CONVERSIONS_ACCESS_TOKEN"] || "";
|
|
376
|
+
export const MetaGraphApiVersion: string =
|
|
377
|
+
process.env["META_GRAPH_API_VERSION"] || "v22.0";
|
|
378
|
+
|
|
379
|
+
// Microsoft Advertising (Bing Ads) offline conversions. Server-only secrets.
|
|
380
|
+
export const MicrosoftAdsDeveloperToken: string =
|
|
381
|
+
process.env["MICROSOFT_ADS_DEVELOPER_TOKEN"] || "";
|
|
382
|
+
export const MicrosoftAdsOAuthClientId: string =
|
|
383
|
+
process.env["MICROSOFT_ADS_OAUTH_CLIENT_ID"] || "";
|
|
384
|
+
export const MicrosoftAdsOAuthClientSecret: string =
|
|
385
|
+
process.env["MICROSOFT_ADS_OAUTH_CLIENT_SECRET"] || "";
|
|
386
|
+
export const MicrosoftAdsOAuthRefreshToken: string =
|
|
387
|
+
process.env["MICROSOFT_ADS_OAUTH_REFRESH_TOKEN"] || "";
|
|
388
|
+
export const MicrosoftAdsCustomerId: string =
|
|
389
|
+
process.env["MICROSOFT_ADS_CUSTOMER_ID"] || "";
|
|
390
|
+
export const MicrosoftAdsAccountId: string =
|
|
391
|
+
process.env["MICROSOFT_ADS_ACCOUNT_ID"] || "";
|
|
392
|
+
// Offline conversion goals are matched by NAME in Microsoft Advertising.
|
|
393
|
+
export const MicrosoftAdsSignUpConversionName: string =
|
|
394
|
+
process.env["MICROSOFT_ADS_SIGNUP_CONVERSION_NAME"] || "";
|
|
395
|
+
export const MicrosoftAdsPaidSubscriptionConversionName: string =
|
|
396
|
+
process.env["MICROSOFT_ADS_PAID_SUBSCRIPTION_CONVERSION_NAME"] || "";
|
|
397
|
+
|
|
398
|
+
// LinkedIn Conversions API. Server-only secrets.
|
|
399
|
+
export const LinkedInConversionsAccessToken: string =
|
|
400
|
+
process.env["LINKEDIN_CONVERSIONS_ACCESS_TOKEN"] || "";
|
|
401
|
+
/*
|
|
402
|
+
* LinkedIn publishes a new Marketing API version monthly and supports each
|
|
403
|
+
* for ~12 months — keep this default recent and prefer setting
|
|
404
|
+
* LINKEDIN_API_VERSION explicitly in production.
|
|
405
|
+
*/
|
|
406
|
+
export const LinkedInApiVersion: string =
|
|
407
|
+
process.env["LINKEDIN_API_VERSION"] || "202606";
|
|
408
|
+
// Numeric conversion rule ids (urn:lla:llaPartnerConversion:{id}).
|
|
409
|
+
export const LinkedInSignUpConversionId: string =
|
|
410
|
+
process.env["LINKEDIN_SIGNUP_CONVERSION_ID"] || "";
|
|
411
|
+
export const LinkedInPaidSubscriptionConversionId: string =
|
|
412
|
+
process.env["LINKEDIN_PAID_SUBSCRIPTION_CONVERSION_ID"] || "";
|
|
413
|
+
|
|
414
|
+
// Reddit Conversions API. Server-only secrets.
|
|
415
|
+
export const RedditAdsOAuthClientId: string =
|
|
416
|
+
process.env["REDDIT_ADS_OAUTH_CLIENT_ID"] || "";
|
|
417
|
+
export const RedditAdsOAuthClientSecret: string =
|
|
418
|
+
process.env["REDDIT_ADS_OAUTH_CLIENT_SECRET"] || "";
|
|
419
|
+
export const RedditAdsOAuthRefreshToken: string =
|
|
420
|
+
process.env["REDDIT_ADS_OAUTH_REFRESH_TOKEN"] || "";
|
|
421
|
+
export const RedditAdsAccountId: string =
|
|
422
|
+
process.env["REDDIT_ADS_ACCOUNT_ID"] || "";
|
|
423
|
+
|
|
340
424
|
export const DisableAutomaticIncidentCreation: boolean =
|
|
341
425
|
process.env["DISABLE_AUTOMATIC_INCIDENT_CREATION"] === "true";
|
|
342
426
|
|