@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
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import remarkGfm from "remark-gfm";
|
|
2
|
+
import remarkParse from "remark-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
/*
|
|
5
|
+
* Flattens markdown into a small list of drawable blocks.
|
|
6
|
+
*
|
|
7
|
+
* The PDF exporter cannot use the chat's React markdown renderer, but it should
|
|
8
|
+
* not hand-roll a markdown parser either — that is how exports end up rendering
|
|
9
|
+
* a code fence as bold text. So the same parser the chat uses (remark + GFM)
|
|
10
|
+
* produces the tree, and this module lowers it into a shape a drawing routine
|
|
11
|
+
* can consume without knowing anything about mdast.
|
|
12
|
+
*
|
|
13
|
+
* Only the constructs an assistant answer actually produces are modelled.
|
|
14
|
+
* Anything unrecognized degrades to its text content rather than disappearing.
|
|
15
|
+
*/
|
|
16
|
+
export var MarkdownBlockType;
|
|
17
|
+
(function (MarkdownBlockType) {
|
|
18
|
+
MarkdownBlockType["Heading"] = "Heading";
|
|
19
|
+
MarkdownBlockType["Paragraph"] = "Paragraph";
|
|
20
|
+
MarkdownBlockType["ListItem"] = "ListItem";
|
|
21
|
+
MarkdownBlockType["Code"] = "Code";
|
|
22
|
+
MarkdownBlockType["Quote"] = "Quote";
|
|
23
|
+
MarkdownBlockType["Table"] = "Table";
|
|
24
|
+
MarkdownBlockType["Rule"] = "Rule";
|
|
25
|
+
})(MarkdownBlockType || (MarkdownBlockType = {}));
|
|
26
|
+
const BASE_STYLE = {
|
|
27
|
+
isBold: false,
|
|
28
|
+
isItalic: false,
|
|
29
|
+
isCode: false,
|
|
30
|
+
isStrikethrough: false,
|
|
31
|
+
};
|
|
32
|
+
function collectInlines(nodes, style, into) {
|
|
33
|
+
for (const node of nodes) {
|
|
34
|
+
switch (node.type) {
|
|
35
|
+
case "text":
|
|
36
|
+
if (node.value) {
|
|
37
|
+
into.push({
|
|
38
|
+
text: node.value,
|
|
39
|
+
isBold: style.isBold,
|
|
40
|
+
isItalic: style.isItalic,
|
|
41
|
+
isStrikethrough: style.isStrikethrough,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case "inlineCode":
|
|
46
|
+
into.push({
|
|
47
|
+
text: node.value || "",
|
|
48
|
+
isCode: true,
|
|
49
|
+
isBold: style.isBold,
|
|
50
|
+
isItalic: style.isItalic,
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
case "strong":
|
|
54
|
+
collectInlines(node.children || [], Object.assign(Object.assign({}, style), { isBold: true }), into);
|
|
55
|
+
break;
|
|
56
|
+
case "emphasis":
|
|
57
|
+
collectInlines(node.children || [], Object.assign(Object.assign({}, style), { isItalic: true }), into);
|
|
58
|
+
break;
|
|
59
|
+
case "delete":
|
|
60
|
+
collectInlines(node.children || [], Object.assign(Object.assign({}, style), { isStrikethrough: true }), into);
|
|
61
|
+
break;
|
|
62
|
+
case "break":
|
|
63
|
+
into.push({ text: "\n" });
|
|
64
|
+
break;
|
|
65
|
+
/*
|
|
66
|
+
* Links and images should already have been rewritten into text by the
|
|
67
|
+
* neutralizer before this runs. If one survives, keep its text and drop
|
|
68
|
+
* the destination rather than carrying a live URL forward.
|
|
69
|
+
*/
|
|
70
|
+
case "link":
|
|
71
|
+
case "image":
|
|
72
|
+
case "linkReference":
|
|
73
|
+
case "imageReference":
|
|
74
|
+
collectInlines(node.children || [], style, into);
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
if (node.children) {
|
|
78
|
+
collectInlines(node.children, style, into);
|
|
79
|
+
}
|
|
80
|
+
else if (node.value) {
|
|
81
|
+
into.push({ text: node.value, isBold: style.isBold });
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function inlinesOf(nodes) {
|
|
88
|
+
const inlines = [];
|
|
89
|
+
collectInlines(nodes, BASE_STYLE, inlines);
|
|
90
|
+
return inlines;
|
|
91
|
+
}
|
|
92
|
+
function plainTextOf(nodes) {
|
|
93
|
+
return inlinesOf(nodes)
|
|
94
|
+
.map((inline) => {
|
|
95
|
+
return inline.text;
|
|
96
|
+
})
|
|
97
|
+
.join("");
|
|
98
|
+
}
|
|
99
|
+
function tableToBlock(node) {
|
|
100
|
+
const rows = (node.children || []).map((row) => {
|
|
101
|
+
return (row.children || []).map((cell) => {
|
|
102
|
+
return plainTextOf(cell.children || []);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
const headers = rows.length > 0 ? rows[0] : [];
|
|
106
|
+
const alignments = (node.align || []).map((align) => {
|
|
107
|
+
if (align === "right") {
|
|
108
|
+
return "right";
|
|
109
|
+
}
|
|
110
|
+
if (align === "center") {
|
|
111
|
+
return "center";
|
|
112
|
+
}
|
|
113
|
+
return "left";
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
type: MarkdownBlockType.Table,
|
|
117
|
+
headers: headers,
|
|
118
|
+
rows: rows.slice(1),
|
|
119
|
+
alignments: alignments,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function flattenList(node, indent, into) {
|
|
123
|
+
const isOrdered = node.ordered === true;
|
|
124
|
+
let counter = typeof node.start === "number" ? node.start : 1;
|
|
125
|
+
for (const item of node.children || []) {
|
|
126
|
+
const inlines = [];
|
|
127
|
+
const nested = [];
|
|
128
|
+
for (const child of item.children || []) {
|
|
129
|
+
if (child.type === "list") {
|
|
130
|
+
flattenList(child, indent + 1, nested);
|
|
131
|
+
}
|
|
132
|
+
else if (child.type === "paragraph") {
|
|
133
|
+
// Multiple paragraphs in one item are joined by a soft break.
|
|
134
|
+
if (inlines.length > 0) {
|
|
135
|
+
inlines.push({ text: "\n" });
|
|
136
|
+
}
|
|
137
|
+
collectInlines(child.children || [], BASE_STYLE, inlines);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
toBlocks(child, nested, indent + 1);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
into.push({
|
|
144
|
+
type: MarkdownBlockType.ListItem,
|
|
145
|
+
inlines: inlines,
|
|
146
|
+
indent: indent,
|
|
147
|
+
marker: isOrdered ? `${counter}.` : "-",
|
|
148
|
+
});
|
|
149
|
+
into.push(...nested);
|
|
150
|
+
counter++;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function toBlocks(node, into, indent = 0) {
|
|
154
|
+
switch (node.type) {
|
|
155
|
+
case "heading":
|
|
156
|
+
into.push({
|
|
157
|
+
type: MarkdownBlockType.Heading,
|
|
158
|
+
level: node.depth || 1,
|
|
159
|
+
inlines: inlinesOf(node.children || []),
|
|
160
|
+
});
|
|
161
|
+
break;
|
|
162
|
+
case "paragraph":
|
|
163
|
+
into.push({
|
|
164
|
+
type: MarkdownBlockType.Paragraph,
|
|
165
|
+
inlines: inlinesOf(node.children || []),
|
|
166
|
+
indent: indent,
|
|
167
|
+
});
|
|
168
|
+
break;
|
|
169
|
+
case "list":
|
|
170
|
+
flattenList(node, indent, into);
|
|
171
|
+
break;
|
|
172
|
+
case "code":
|
|
173
|
+
into.push({
|
|
174
|
+
type: MarkdownBlockType.Code,
|
|
175
|
+
code: node.value || "",
|
|
176
|
+
language: node.lang || "",
|
|
177
|
+
});
|
|
178
|
+
break;
|
|
179
|
+
case "blockquote":
|
|
180
|
+
for (const child of node.children || []) {
|
|
181
|
+
const quoted = [];
|
|
182
|
+
toBlocks(child, quoted, indent);
|
|
183
|
+
for (const block of quoted) {
|
|
184
|
+
into.push(Object.assign(Object.assign({}, block), { type: MarkdownBlockType.Quote }));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
case "table":
|
|
189
|
+
into.push(tableToBlock(node));
|
|
190
|
+
break;
|
|
191
|
+
case "thematicBreak":
|
|
192
|
+
into.push({ type: MarkdownBlockType.Rule });
|
|
193
|
+
break;
|
|
194
|
+
case "html":
|
|
195
|
+
// Raw HTML is inert text here; show it rather than silently dropping it.
|
|
196
|
+
if (node.value) {
|
|
197
|
+
into.push({
|
|
198
|
+
type: MarkdownBlockType.Paragraph,
|
|
199
|
+
inlines: [{ text: node.value }],
|
|
200
|
+
indent: indent,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
default:
|
|
205
|
+
if (node.children) {
|
|
206
|
+
for (const child of node.children) {
|
|
207
|
+
toBlocks(child, into, indent);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
export default function parseMarkdownBlocks(text) {
|
|
214
|
+
if (!text) {
|
|
215
|
+
return [];
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const tree = unified()
|
|
219
|
+
.use(remarkParse)
|
|
220
|
+
.use(remarkGfm)
|
|
221
|
+
.parse(text);
|
|
222
|
+
const blocks = [];
|
|
223
|
+
for (const child of tree.children || []) {
|
|
224
|
+
toBlocks(child, blocks);
|
|
225
|
+
}
|
|
226
|
+
return blocks;
|
|
227
|
+
}
|
|
228
|
+
catch (_a) {
|
|
229
|
+
// A parse failure should still show the answer, just without formatting.
|
|
230
|
+
return [{ type: MarkdownBlockType.Paragraph, inlines: [{ text: text }] }];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=MarkdownBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownBlocks.js","sourceRoot":"","sources":["../../../../../UI/Utils/AIChatExport/MarkdownBlocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { gfmToMarkdown } from "mdast-util-gfm";
|
|
2
|
+
import { toMarkdown } from "mdast-util-to-markdown";
|
|
3
|
+
import remarkGfm from "remark-gfm";
|
|
4
|
+
import remarkParse from "remark-parse";
|
|
5
|
+
import { unified } from "unified";
|
|
6
|
+
// Node types that may only appear inside a block, never directly under the root.
|
|
7
|
+
const PHRASING_TYPES = new Set(["text", "inlineCode"]);
|
|
8
|
+
function textNode(value) {
|
|
9
|
+
return { type: "text", value: value };
|
|
10
|
+
}
|
|
11
|
+
function codeNode(value) {
|
|
12
|
+
return { type: "inlineCode", value: value };
|
|
13
|
+
}
|
|
14
|
+
// The visible text of a subtree, used to decide whether a label adds anything.
|
|
15
|
+
function textOf(nodes) {
|
|
16
|
+
return nodes
|
|
17
|
+
.map((node) => {
|
|
18
|
+
if (node.type === "text" || node.type === "inlineCode") {
|
|
19
|
+
return node.value || "";
|
|
20
|
+
}
|
|
21
|
+
return node.children ? textOf(node.children) : "";
|
|
22
|
+
})
|
|
23
|
+
.join("");
|
|
24
|
+
}
|
|
25
|
+
/*
|
|
26
|
+
* "label (`url`)" — or just "`url`" when the label is only a repeat of the URL,
|
|
27
|
+
* which is what an autolink or a GFM bare URL parses into.
|
|
28
|
+
*/
|
|
29
|
+
function inertLink(label, url) {
|
|
30
|
+
const labelText = textOf(label);
|
|
31
|
+
const hasDistinctLabel = Boolean(labelText) && labelText !== url;
|
|
32
|
+
if (!url) {
|
|
33
|
+
return hasDistinctLabel ? label : [textNode(labelText)];
|
|
34
|
+
}
|
|
35
|
+
if (!hasDistinctLabel) {
|
|
36
|
+
return [codeNode(url)];
|
|
37
|
+
}
|
|
38
|
+
return [...label, textNode(" ("), codeNode(url), textNode(")")];
|
|
39
|
+
}
|
|
40
|
+
function neutralizeNode(node, definitions, isRootChild) {
|
|
41
|
+
// Depth first, so a link nested inside emphasis is rewritten before its parent.
|
|
42
|
+
if (node.children) {
|
|
43
|
+
const rewritten = [];
|
|
44
|
+
for (const child of node.children) {
|
|
45
|
+
rewritten.push(...neutralizeNode(child, definitions, false));
|
|
46
|
+
}
|
|
47
|
+
node.children = rewritten;
|
|
48
|
+
}
|
|
49
|
+
const identifier = (node.identifier || "").toLowerCase();
|
|
50
|
+
switch (node.type) {
|
|
51
|
+
/*
|
|
52
|
+
* Drop link definitions outright. Their referents have already been
|
|
53
|
+
* inlined below, and leaving a definition behind would let "[x][ref]"
|
|
54
|
+
* resolve to a live link again.
|
|
55
|
+
*/
|
|
56
|
+
case "definition":
|
|
57
|
+
return [];
|
|
58
|
+
/*
|
|
59
|
+
* Raw HTML is inert on screen (react-markdown does not render it without
|
|
60
|
+
* rehype-raw), but a .md file is rendered by viewers that do, where an
|
|
61
|
+
* <img src> or <a href> would be live. Demote it to text — toMarkdown
|
|
62
|
+
* escapes the angle brackets on the way out.
|
|
63
|
+
*/
|
|
64
|
+
case "html": {
|
|
65
|
+
const asText = textNode(node.value || "");
|
|
66
|
+
return isRootChild
|
|
67
|
+
? [{ type: "paragraph", children: [asText] }]
|
|
68
|
+
: [asText];
|
|
69
|
+
}
|
|
70
|
+
case "link":
|
|
71
|
+
return inertLink(node.children || [], node.url || "");
|
|
72
|
+
case "image":
|
|
73
|
+
return inertLink([textNode(`[image: ${node.alt || ""}]`)], node.url || "");
|
|
74
|
+
case "linkReference":
|
|
75
|
+
return inertLink(node.children || [], definitions.get(identifier) || "");
|
|
76
|
+
case "imageReference":
|
|
77
|
+
return inertLink([textNode(`[image: ${node.alt || ""}]`)], definitions.get(identifier) || "");
|
|
78
|
+
default:
|
|
79
|
+
return [node];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function collectDefinitions(node, into) {
|
|
83
|
+
if (node.type === "definition" && node.identifier) {
|
|
84
|
+
into.set(node.identifier.toLowerCase(), node.url || "");
|
|
85
|
+
}
|
|
86
|
+
for (const child of node.children || []) {
|
|
87
|
+
collectDefinitions(child, into);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/*
|
|
91
|
+
* Rewrites every link, image and raw HTML node in `text` into inert text, and
|
|
92
|
+
* returns the result as markdown. Safe to call on any string; a parse failure
|
|
93
|
+
* degrades to a fenced code block rather than emitting unneutralized markdown.
|
|
94
|
+
*/
|
|
95
|
+
export default function neutralizeAssistantMarkdown(text) {
|
|
96
|
+
if (!text) {
|
|
97
|
+
return "";
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const tree = unified()
|
|
101
|
+
.use(remarkParse)
|
|
102
|
+
.use(remarkGfm)
|
|
103
|
+
.parse(text);
|
|
104
|
+
const definitions = new Map();
|
|
105
|
+
collectDefinitions(tree, definitions);
|
|
106
|
+
const children = [];
|
|
107
|
+
for (const child of tree.children || []) {
|
|
108
|
+
children.push(...neutralizeNode(child, definitions, true));
|
|
109
|
+
}
|
|
110
|
+
/*
|
|
111
|
+
* A root child demoted to phrasing (a stray inline node left behind once
|
|
112
|
+
* its link wrapper was removed) is not valid at root level; wrap it back
|
|
113
|
+
* into a paragraph so the serializer stays on its typed path.
|
|
114
|
+
*/
|
|
115
|
+
tree.children = children.map((child) => {
|
|
116
|
+
return PHRASING_TYPES.has(child.type)
|
|
117
|
+
? { type: "paragraph", children: [child] }
|
|
118
|
+
: child;
|
|
119
|
+
});
|
|
120
|
+
return toMarkdown(tree, {
|
|
121
|
+
extensions: [gfmToMarkdown()],
|
|
122
|
+
bullet: "-",
|
|
123
|
+
}).trim();
|
|
124
|
+
}
|
|
125
|
+
catch (_a) {
|
|
126
|
+
/*
|
|
127
|
+
* Never fall back to returning the raw string: that would ship exactly the
|
|
128
|
+
* live links this function exists to remove. A fence renders the content
|
|
129
|
+
* verbatim and inert.
|
|
130
|
+
*/
|
|
131
|
+
return ["```", text.replace(/```/g, "'''"), "```"].join("\n");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=MarkdownSafety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownSafety.js","sourceRoot":"","sources":["../../../../../UI/Utils/AIChatExport/MarkdownSafety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA6ClC,iFAAiF;AACjF,MAAM,cAAc,GAAgB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAEpE,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,+EAA+E;AAC/E,SAAS,MAAM,CAAC,KAA0B;IACxC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAChB,KAA0B,EAC1B,GAAW;IAEX,MAAM,SAAS,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAY,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,GAAG,CAAC;IAE1E,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CACrB,IAAkB,EAClB,WAAgC,EAChC,WAAoB;IAEpB,gFAAgF;IAChF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAW,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB;;;;WAIG;QACH,KAAK,YAAY;YACf,OAAO,EAAE,CAAC;QAEZ;;;;;WAKG;QACH,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAiB,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,WAAW;gBAChB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACf,CAAC;QAED,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAExD,KAAK,OAAO;YACV,OAAO,SAAS,CACd,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,EACxC,IAAI,CAAC,GAAG,IAAI,EAAE,CACf,CAAC;QAEJ,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,KAAK,gBAAgB;YACnB,OAAO,SAAS,CACd,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,EACxC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAClC,CAAC;QAEJ;YACE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAkB,EAClB,IAAyB;IAEzB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,IAAY;IAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAiB,OAAO,EAAE;aACjC,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,SAAS,CAAC;aACd,KAAK,CAAC,IAAI,CAA4B,CAAC;QAE1C,MAAM,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;QACnD,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAwB,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED;;;;WAIG;QACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAmB,EAAE,EAAE;YACnD,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;gBAC1C,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC,IAA+B,EAAE;YACjD,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,WAAM,CAAC;QACP;;;;WAIG;QACH,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Triggers a browser download for content generated in the page.
|
|
3
|
+
*
|
|
4
|
+
* The object URL is revoked once the click has been dispatched so a large
|
|
5
|
+
* export (a PDF can run to megabytes) is not pinned in memory until the user
|
|
6
|
+
* navigates away.
|
|
7
|
+
*/
|
|
8
|
+
export default function downloadFile(data) {
|
|
9
|
+
const blob = data.content instanceof Blob
|
|
10
|
+
? data.content
|
|
11
|
+
: new Blob([data.content], {
|
|
12
|
+
type: data.mimeType || "text/plain;charset=utf-8;",
|
|
13
|
+
});
|
|
14
|
+
const url = window.URL.createObjectURL(blob);
|
|
15
|
+
const anchor = document.createElement("a");
|
|
16
|
+
anchor.href = url;
|
|
17
|
+
anchor.download = data.filename;
|
|
18
|
+
anchor.rel = "noopener";
|
|
19
|
+
document.body.appendChild(anchor);
|
|
20
|
+
anchor.click();
|
|
21
|
+
document.body.removeChild(anchor);
|
|
22
|
+
window.URL.revokeObjectURL(url);
|
|
23
|
+
}
|
|
24
|
+
/*
|
|
25
|
+
* Slugifies a label and stamps it with the export time, so repeated exports of
|
|
26
|
+
* the same conversation land as distinct files. Mirrors the naming used by the
|
|
27
|
+
* CSV export (TableColumnsToCsv.getExportFilename).
|
|
28
|
+
*/
|
|
29
|
+
export function getExportFilename(data) {
|
|
30
|
+
const slug = data.label
|
|
31
|
+
.replace(/[^a-zA-Z0-9-_]+/g, "-")
|
|
32
|
+
.replace(/^-+|-+$/g, "")
|
|
33
|
+
.toLowerCase()
|
|
34
|
+
.substring(0, 60) || "ai-conversation";
|
|
35
|
+
const timestamp = data.exportedAt
|
|
36
|
+
.toISOString()
|
|
37
|
+
.replace(/[:.]/g, "-")
|
|
38
|
+
.slice(0, 19);
|
|
39
|
+
return `${slug}-${timestamp}.${data.extension}`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=DownloadFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DownloadFile.js","sourceRoot":"","sources":["../../../../UI/Utils/DownloadFile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAIpC;IACC,MAAM,IAAI,GACR,IAAI,CAAC,OAAO,YAAY,IAAI;QAC1B,CAAC,CAAC,IAAI,CAAC,OAAO;QACd,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,2BAA2B;SACnD,CAAC,CAAC;IAET,MAAM,GAAG,GAAW,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAIjC;IACC,MAAM,IAAI,GACR,IAAI,CAAC,KAAK;SACP,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE;SACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC;IAE3C,MAAM,SAAS,GAAW,IAAI,CAAC,UAAU;SACtC,WAAW,EAAE;SACb,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -154,14 +154,47 @@ export default class UserUtil {
|
|
|
154
154
|
const localStorageItems = LocalStorage.getAllItems();
|
|
155
155
|
const result = {};
|
|
156
156
|
for (const key in localStorageItems) {
|
|
157
|
-
|
|
157
|
+
const value = localStorageItems[key];
|
|
158
|
+
/*
|
|
159
|
+
* Older versions of the marketing site stored the literal strings
|
|
160
|
+
* "null" / "undefined" for missing utm params. Filter those out so
|
|
161
|
+
* they never end up on the User record.
|
|
162
|
+
*/
|
|
163
|
+
if (!value || value === "null" || value === "undefined") {
|
|
158
164
|
continue;
|
|
159
165
|
}
|
|
160
166
|
if (key.startsWith("utm")) {
|
|
161
|
-
result[key] =
|
|
167
|
+
result[key] = value;
|
|
162
168
|
}
|
|
163
169
|
}
|
|
164
170
|
return result;
|
|
165
171
|
}
|
|
172
|
+
// Ad platform click IDs (gclid, fbclid, etc.) stored by the marketing site.
|
|
173
|
+
static getAttributionClickIds() {
|
|
174
|
+
return UserUtil.parseJsonLocalStorageItem("clickIds");
|
|
175
|
+
}
|
|
176
|
+
// First attributed touch (utm params, click IDs, landing URL) — never overwritten.
|
|
177
|
+
static getFirstTouchAttribution() {
|
|
178
|
+
return UserUtil.parseJsonLocalStorageItem("firstTouch");
|
|
179
|
+
}
|
|
180
|
+
static parseJsonLocalStorageItem(key) {
|
|
181
|
+
/*
|
|
182
|
+
* LocalStorage.getItem JSON-parses stored strings when it can, so this
|
|
183
|
+
* may already be an object; fall back to parsing the raw string.
|
|
184
|
+
*/
|
|
185
|
+
let value = LocalStorage.getItem(key);
|
|
186
|
+
if (typeof value === "string") {
|
|
187
|
+
try {
|
|
188
|
+
value = JSON.parse(value);
|
|
189
|
+
}
|
|
190
|
+
catch (_a) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
166
199
|
}
|
|
167
200
|
//# sourceMappingURL=User.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../../UI/Utils/User.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../../UI/Utils/User.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,12 +26,15 @@ export default class Analytics {
|
|
|
26
26
|
posthog.reset();
|
|
27
27
|
}
|
|
28
28
|
capture(eventName, data) {
|
|
29
|
-
if (!this.isInitialized) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
29
|
// PostHog tracking
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
if (this.isInitialized) {
|
|
31
|
+
posthog.capture(eventName, data);
|
|
32
|
+
}
|
|
33
|
+
/*
|
|
34
|
+
* GA4 tracking via dataLayer (for Google Analytics / Google Ads conversion
|
|
35
|
+
* tracking). This must not depend on PostHog being configured — GTM is
|
|
36
|
+
* loaded independently of ANALYTICS_KEY / ANALYTICS_HOST.
|
|
37
|
+
*/
|
|
35
38
|
if (typeof window !== "undefined" && window.dataLayer) {
|
|
36
39
|
window.dataLayer.push(Object.assign({ event: eventName, eventCategory: "analytics", eventAction: eventName }, (data || {})));
|
|
37
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Analytics.js","sourceRoot":"","sources":["../../../Utils/Analytics.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,SAAS;IAE5B,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAW,aAAa,CAAC,CAAU;QACjC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,YAAmB,OAAe,EAAE,MAAc;QAR1C,mBAAc,GAAY,KAAK,CAAC;QAStC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAEM,OAAO,CAAC,SAAiB,EAAE,IAAiB;QACjD,IAAI,
|
|
1
|
+
{"version":3,"file":"Analytics.js","sourceRoot":"","sources":["../../../Utils/Analytics.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,SAAS;IAE5B,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAW,aAAa,CAAC,CAAU;QACjC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,YAAmB,OAAe,EAAE,MAAc;QAR1C,mBAAc,GAAY,KAAK,CAAC;QAStC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAEM,OAAO,CAAC,SAAiB,EAAE,IAAiB;QACjD,mBAAmB;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAED;;;;WAIG;QACH,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,SAAS,EAAE,CAAC;YAC9D,MAAc,CAAC,SAAS,CAAC,IAAI,iBAC5B,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,WAAW,EAC1B,WAAW,EAAE,SAAS,IACnB,CAAC,IAAI,IAAI,EAAE,CAAC,EACf,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
import OneUptimeDate from "../../Types/Date";
|
|
2
2
|
class EnterpriseLicenseUsageUtil {
|
|
3
|
+
/*
|
|
4
|
+
* License keys are shown/emailed masked — enough to identify the key
|
|
5
|
+
* without exposing it in full.
|
|
6
|
+
*/
|
|
7
|
+
static maskLicenseKey(licenseKey) {
|
|
8
|
+
if (licenseKey.length <= 8) {
|
|
9
|
+
return "••••••••";
|
|
10
|
+
}
|
|
11
|
+
return `${licenseKey.substring(0, 4)}••••${licenseKey.substring(licenseKey.length - 4)}`;
|
|
12
|
+
}
|
|
13
|
+
/*
|
|
14
|
+
* Normalizes a client-provided list of master admin emails: keeps only
|
|
15
|
+
* email-shaped strings, lowercases them, removes duplicates and caps the
|
|
16
|
+
* list size. Returns an empty array for anything that is not an array.
|
|
17
|
+
*/
|
|
18
|
+
static sanitizeMasterAdminEmails(value) {
|
|
19
|
+
if (!Array.isArray(value)) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
const emails = new Set();
|
|
23
|
+
for (const item of value) {
|
|
24
|
+
if (emails.size >= this.maxMasterAdminEmailsPerInstance) {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
if (typeof item !== "string") {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const normalized = item.trim().toLowerCase();
|
|
31
|
+
if (!normalized ||
|
|
32
|
+
normalized.length > 320 ||
|
|
33
|
+
!this.emailRegex.test(normalized)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
emails.add(normalized);
|
|
37
|
+
}
|
|
38
|
+
return Array.from(emails);
|
|
39
|
+
}
|
|
3
40
|
/*
|
|
4
41
|
* Normalizes a client-provided list of email hashes: keeps only valid
|
|
5
42
|
* SHA-256 hex strings, lowercases them, removes duplicates and caps the
|
|
@@ -70,6 +107,18 @@ class EnterpriseLicenseUsageUtil {
|
|
|
70
107
|
return uniqueHashes.size + usersWithoutHashes;
|
|
71
108
|
}
|
|
72
109
|
}
|
|
110
|
+
/*
|
|
111
|
+
* How many days before a license expires that expiry reminder emails
|
|
112
|
+
* start going out, unless overridden in GlobalConfig
|
|
113
|
+
* (enterpriseLicenseExpiryReminderDays).
|
|
114
|
+
*/
|
|
115
|
+
EnterpriseLicenseUsageUtil.defaultExpiryReminderDays = 45;
|
|
116
|
+
/*
|
|
117
|
+
* Expired licenses keep getting a daily "expired" email for this many
|
|
118
|
+
* days after expiry, then go quiet — an abandoned license should not be
|
|
119
|
+
* emailed forever.
|
|
120
|
+
*/
|
|
121
|
+
EnterpriseLicenseUsageUtil.expiredNotificationCutoffDays = 30;
|
|
73
122
|
/*
|
|
74
123
|
* Instances that stopped reporting (for example a decommissioned staging
|
|
75
124
|
* environment) stop counting towards the seat total after this many days,
|
|
@@ -79,5 +128,13 @@ EnterpriseLicenseUsageUtil.InstanceUsageFreshnessInDays = 30;
|
|
|
79
128
|
// SHA-256 hex digest.
|
|
80
129
|
EnterpriseLicenseUsageUtil.emailHashRegex = /^[a-f0-9]{64}$/;
|
|
81
130
|
EnterpriseLicenseUsageUtil.maxEmailHashesPerInstance = 200000;
|
|
131
|
+
/*
|
|
132
|
+
* Master admin emails are used to contact the customer about license
|
|
133
|
+
* issues — a handful per instance is plenty, and the cap keeps a
|
|
134
|
+
* misbehaving client from storing an unbounded list.
|
|
135
|
+
*/
|
|
136
|
+
EnterpriseLicenseUsageUtil.maxMasterAdminEmailsPerInstance = 50;
|
|
137
|
+
// Deliberately loose: rejects garbage, accepts anything email-shaped.
|
|
138
|
+
EnterpriseLicenseUsageUtil.emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
82
139
|
export default EnterpriseLicenseUsageUtil;
|
|
83
140
|
//# sourceMappingURL=EnterpriseLicenseUsage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnterpriseLicenseUsage.js","sourceRoot":"","sources":["../../../../Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAc7C,MAAqB,0BAA0B;
|
|
1
|
+
{"version":3,"file":"EnterpriseLicenseUsage.js","sourceRoot":"","sources":["../../../../Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts"],"names":[],"mappings":"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"}
|