@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.
Files changed (542) hide show
  1. package/Models/AnalyticsModels/Index.ts +13 -0
  2. package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +178 -0
  3. package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +179 -0
  4. package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +179 -0
  5. package/Models/AnalyticsModels/NetworkFlow.ts +397 -0
  6. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +15 -6
  7. package/Models/DatabaseModels/AIRun.ts +37 -0
  8. package/Models/DatabaseModels/AIRunEvent.ts +34 -1
  9. package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +18 -0
  10. package/Models/DatabaseModels/GlobalConfig.ts +36 -0
  11. package/Models/DatabaseModels/Index.ts +2 -0
  12. package/Models/DatabaseModels/MarketingConversion.ts +198 -0
  13. package/Models/DatabaseModels/MetricSavedView.ts +34 -0
  14. package/Models/DatabaseModels/MetricType.ts +74 -0
  15. package/Models/DatabaseModels/NetworkDevice.ts +332 -0
  16. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +328 -0
  17. package/Models/DatabaseModels/NetworkInterface.ts +58 -0
  18. package/Models/DatabaseModels/Project.ts +62 -0
  19. package/Models/DatabaseModels/StatusPage.ts +42 -0
  20. package/Models/DatabaseModels/User.ts +37 -0
  21. package/Server/API/AIAgentTaskAPI.ts +38 -12
  22. package/Server/API/AIAgentTaskLogAPI.ts +49 -0
  23. package/Server/API/AIChatAPI.ts +16 -0
  24. package/Server/API/AIReadinessAPI.ts +84 -0
  25. package/Server/API/BaseAnalyticsAPI.ts +23 -0
  26. package/Server/API/CodeFixRunAPI.ts +182 -0
  27. package/Server/API/EnterpriseLicenseAPI.ts +14 -0
  28. package/Server/API/TelemetryExceptionAPI.ts +6 -1
  29. package/Server/EnvironmentConfig.ts +84 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.ts +95 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.ts +52 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.ts +30 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.ts +38 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.ts +28 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.ts +49 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.ts +108 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.ts +31 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.ts +29 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.ts +35 -0
  40. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
  41. package/Server/Services/AIRunEventService.ts +15 -1
  42. package/Server/Services/AIRunService.ts +38 -1
  43. package/Server/Services/AnalyticsDatabaseService.ts +70 -1
  44. package/Server/Services/IncidentService.ts +13 -0
  45. package/Server/Services/Index.ts +10 -0
  46. package/Server/Services/LlmProviderService.ts +2 -0
  47. package/Server/Services/MarketingConversionService.ts +10 -0
  48. package/Server/Services/MetricItemAggMV1mByContainerService.ts +31 -0
  49. package/Server/Services/MetricItemAggMV1mByK8sClusterService.ts +31 -0
  50. package/Server/Services/MetricItemAggMV1mByServiceService.ts +31 -0
  51. package/Server/Services/MetricService.ts +970 -122
  52. package/Server/Services/MonitorService.ts +14 -0
  53. package/Server/Services/NetworkDeviceOwnerTeamService.ts +42 -0
  54. package/Server/Services/NetworkDeviceOwnerUserService.ts +106 -0
  55. package/Server/Services/NetworkFlowService.ts +11 -0
  56. package/Server/Services/OnCallDutyPolicyService.ts +11 -1
  57. package/Server/Services/ProjectService.ts +178 -0
  58. package/Server/Services/SpanService.ts +13 -9
  59. package/Server/Services/StatusPageService.ts +97 -0
  60. package/Server/Services/TeamMemberService.ts +11 -0
  61. package/Server/Services/TelemetryExceptionService.ts +19 -90
  62. package/Server/Services/UserService.ts +59 -0
  63. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +37 -7
  64. package/Server/Types/Markdown.ts +9 -9
  65. package/Server/Types/MarkdownSlugify.ts +47 -0
  66. package/Server/Utils/AI/AIRunTranscript.ts +240 -0
  67. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +9 -0
  68. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +119 -5
  69. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +75 -0
  70. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +235 -0
  71. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +2 -3
  72. package/Server/Utils/AI/Toolbox/CodeTools.ts +883 -0
  73. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +519 -0
  74. package/Server/Utils/AI/Toolbox/Index.ts +27 -0
  75. package/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.ts +279 -0
  76. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +19 -1
  77. package/Server/Utils/Attribution.ts +99 -0
  78. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +600 -0
  79. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +7 -2
  80. package/Server/Utils/LLM/LLMService.ts +397 -18
  81. package/Server/Utils/Marketing/ConversionUploadProvider.ts +103 -0
  82. package/Server/Utils/Marketing/ConversionUploadProviders.ts +22 -0
  83. package/Server/Utils/Marketing/Providers/GoogleAds.ts +270 -0
  84. package/Server/Utils/Marketing/Providers/LinkedIn.ts +147 -0
  85. package/Server/Utils/Marketing/Providers/Meta.ts +148 -0
  86. package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +196 -0
  87. package/Server/Utils/Marketing/Providers/Reddit.ts +178 -0
  88. package/Server/Utils/Monitor/MonitorAlert.ts +71 -7
  89. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +31 -19
  90. package/Server/Utils/Monitor/MonitorIncident.ts +71 -7
  91. package/Server/Utils/Monitor/MonitorMetricUtil.ts +57 -0
  92. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +94 -0
  93. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +19 -11
  94. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +125 -14
  95. package/Server/Utils/ProductAnalytics.ts +133 -0
  96. package/Server/Utils/Telemetry/Telemetry.ts +39 -0
  97. package/Server/Utils/Telemetry/TelemetryEntity.ts +21 -0
  98. package/Tests/Models/StatusPageEnableMcpServer.test.ts +125 -0
  99. package/Tests/Server/API/BaseAnalyticsAPI.test.ts +72 -0
  100. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +9 -1
  101. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +21 -2
  102. package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +173 -0
  103. package/Tests/Server/Services/MetricServiceAggregate.test.ts +1391 -0
  104. package/Tests/Server/Services/NetworkDeviceOwnerServices.test.ts +260 -0
  105. package/Tests/Server/Services/StatusPageServiceMcp.test.ts +223 -0
  106. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +26 -3
  107. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +12 -0
  108. package/Tests/Server/Types/Markdown.test.ts +106 -0
  109. package/Tests/Server/Utils/AI/AIRunTranscript.test.ts +182 -0
  110. package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +411 -0
  111. package/Tests/Server/Utils/AI/CodeTools.test.ts +596 -0
  112. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +475 -0
  113. package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +548 -0
  114. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +142 -0
  115. package/Tests/Server/Utils/AI/ScheduledMaintenanceTools.test.ts +176 -0
  116. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +63 -0
  117. package/Tests/Server/Utils/GitHubGetFileContent.test.ts +197 -0
  118. package/Tests/Server/Utils/Monitor/MonitorTemplateUtilNetworkDevice.test.ts +389 -0
  119. package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +502 -0
  120. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +764 -0
  121. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +7 -6
  122. package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
  123. package/Tests/Types/AI/AIRunStatus.test.ts +42 -0
  124. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +111 -2
  125. package/Tests/Types/Database/EndsWith.test.ts +64 -0
  126. package/Tests/Types/Database/GreaterThan.test.ts +62 -0
  127. package/Tests/Types/Database/GreaterThanOrEqual.test.ts +65 -0
  128. package/Tests/Types/Database/GreaterThanOrNull.test.ts +63 -0
  129. package/Tests/Types/Database/Includes.test.ts +65 -0
  130. package/Tests/Types/Database/IncludesAll.test.ts +65 -0
  131. package/Tests/Types/Database/IncludesNone.test.ts +65 -0
  132. package/Tests/Types/Database/IsNull.test.ts +44 -0
  133. package/Tests/Types/Database/LessThan.test.ts +62 -0
  134. package/Tests/Types/Database/LessThanOrEqual.test.ts +62 -0
  135. package/Tests/Types/Database/LessThanOrNull.test.ts +62 -0
  136. package/Tests/Types/Database/MultiSearch.test.ts +81 -0
  137. package/Tests/Types/Database/NotContains.test.ts +64 -0
  138. package/Tests/Types/Database/NotNull.test.ts +44 -0
  139. package/Tests/Types/Database/StartsWith.test.ts +64 -0
  140. package/Tests/Types/Log/LogSeverity.test.ts +78 -0
  141. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +83 -1
  142. package/Tests/Types/Monitor/SnmpV3EnumParsing.test.ts +247 -0
  143. package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +263 -0
  144. package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +167 -0
  145. package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +66 -0
  146. package/Tests/UI/Components/XAxis.test.ts +5 -3
  147. package/Tests/UI/Utils/AIChatExport/ChatWidgetData.test.ts +319 -0
  148. package/Tests/UI/Utils/AIChatExport/ChatWidgetMarkdown.test.ts +188 -0
  149. package/Tests/Utils/EnterpriseLicenseUsage.test.ts +76 -0
  150. package/Tests/Utils/Metrics/MetricExplorerUrl.test.ts +622 -0
  151. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +474 -0
  152. package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +52 -4
  153. package/Types/AI/AIAgentTaskStatus.ts +13 -0
  154. package/Types/AI/AIChatPageContext.ts +137 -0
  155. package/Types/AI/AIChatTypes.ts +44 -0
  156. package/Types/AI/AIFixReadiness.ts +46 -0
  157. package/Types/AI/AIRunStatus.ts +11 -0
  158. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +11 -0
  159. package/Types/BaseDatabase/AggregateBy.ts +31 -2
  160. package/Types/BaseDatabase/AggregatedResult.ts +22 -0
  161. package/Types/BaseDatabase/AggregationInterval.ts +11 -0
  162. package/Types/BaseDatabase/AggregationIntervalUtil.ts +30 -5
  163. package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +16 -0
  164. package/Types/Email/EmailTemplateType.ts +3 -0
  165. package/Types/Log/LogSeverity.ts +61 -0
  166. package/Types/Marketing/MarketingConversion.ts +11 -0
  167. package/Types/Metrics/MetricQueryConfigData.ts +21 -0
  168. package/Types/Metrics/MetricQueryData.ts +8 -0
  169. package/Types/Metrics/MetricViewData.ts +8 -0
  170. package/Types/Monitor/MonitorMetricType.ts +8 -0
  171. package/Types/Monitor/MonitorStep.ts +9 -0
  172. package/Types/Monitor/MonitorStepSqlMonitor.ts +12 -0
  173. package/Types/Monitor/MonitorType.ts +2 -1
  174. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +17 -12
  175. package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +13 -0
  176. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +37 -3
  177. package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +46 -0
  178. package/Types/Monitor/SnmpMonitor/SnmpEntityInfo.ts +15 -0
  179. package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +8 -0
  180. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +17 -8
  181. package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +53 -0
  182. package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +43 -0
  183. package/Types/Monitor/SnmpMonitor/SnmpSystemInfo.ts +16 -0
  184. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +119 -3
  185. package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +40 -0
  186. package/Types/NetFlow/NetworkFlowRecord.ts +25 -0
  187. package/Types/Syslog/SyslogMessage.ts +18 -0
  188. package/Types/Telemetry/TelemetrySavedViewState.ts +9 -0
  189. package/Types/Telemetry/TelemetrySavedViewType.ts +12 -0
  190. package/UI/Components/Charts/Area/AreaChart.tsx +51 -0
  191. package/UI/Components/Charts/Bar/BarChart.tsx +51 -1
  192. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +97 -26
  193. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +336 -3
  194. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +118 -1
  195. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +336 -3
  196. package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +7 -0
  197. package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +15 -0
  198. package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +13 -0
  199. package/UI/Components/Charts/Line/LineChart.tsx +51 -0
  200. package/UI/Components/Charts/Types/ReferenceRegionProps.ts +12 -0
  201. package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +12 -0
  202. package/UI/Components/Charts/Types/XAxis/XAxisPrecision.ts +1 -0
  203. package/UI/Components/Charts/Utils/DataPoint.ts +0 -0
  204. package/UI/Components/Charts/Utils/TimeAnnotation.ts +169 -0
  205. package/UI/Components/Charts/Utils/XAxis.ts +28 -4
  206. package/UI/Components/Forms/BasicForm.tsx +26 -8
  207. package/UI/Components/Icon/Icon.tsx +33 -13
  208. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +9 -0
  209. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +67 -0
  210. package/UI/Components/Page/ModelPage.tsx +6 -1
  211. package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +33 -4
  212. package/UI/Styles/Theme.css +1324 -0
  213. package/UI/Utils/AIChatExport/ChatWidgetData.ts +316 -0
  214. package/UI/Utils/AIChatExport/ChatWidgetMarkdown.ts +349 -0
  215. package/UI/Utils/AIChatExport/ConversationMarkdown.ts +177 -0
  216. package/UI/Utils/AIChatExport/MarkdownBlocks.ts +327 -0
  217. package/UI/Utils/AIChatExport/MarkdownSafety.ts +215 -0
  218. package/UI/Utils/DownloadFile.ts +54 -0
  219. package/UI/Utils/User.ts +41 -2
  220. package/Utils/Analytics.ts +8 -6
  221. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +74 -0
  222. package/Utils/Metrics/MetricExplorerUrl.ts +771 -0
  223. package/Utils/Metrics/MetricFormulaEvaluator.ts +410 -46
  224. package/Utils/Monitor/NetworkTopologyUtil.ts +261 -49
  225. package/Utils/ValueFormatter.ts +22 -1
  226. package/build/dist/Models/AnalyticsModels/Index.js +13 -0
  227. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  228. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +159 -0
  229. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -0
  230. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +158 -0
  231. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -0
  232. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +160 -0
  233. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -0
  234. package/build/dist/Models/AnalyticsModels/NetworkFlow.js +351 -0
  235. package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -0
  236. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +15 -7
  237. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  238. package/build/dist/Models/DatabaseModels/AIRun.js +38 -0
  239. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  240. package/build/dist/Models/DatabaseModels/AIRunEvent.js +31 -0
  241. package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -1
  242. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +19 -0
  243. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -1
  244. package/build/dist/Models/DatabaseModels/GlobalConfig.js +38 -0
  245. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  246. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  247. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  248. package/build/dist/Models/DatabaseModels/MarketingConversion.js +219 -0
  249. package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -0
  250. package/build/dist/Models/DatabaseModels/MetricSavedView.js +35 -0
  251. package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -1
  252. package/build/dist/Models/DatabaseModels/MetricType.js +76 -0
  253. package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
  254. package/build/dist/Models/DatabaseModels/NetworkDevice.js +341 -0
  255. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  256. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +341 -0
  257. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  258. package/build/dist/Models/DatabaseModels/NetworkInterface.js +60 -0
  259. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
  260. package/build/dist/Models/DatabaseModels/Project.js +65 -0
  261. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  262. package/build/dist/Models/DatabaseModels/StatusPage.js +43 -0
  263. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  264. package/build/dist/Models/DatabaseModels/User.js +38 -0
  265. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  266. package/build/dist/Server/API/AIAgentTaskAPI.js +37 -11
  267. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  268. package/build/dist/Server/API/AIAgentTaskLogAPI.js +32 -7
  269. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  270. package/build/dist/Server/API/AIChatAPI.js +9 -0
  271. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  272. package/build/dist/Server/API/AIReadinessAPI.js +57 -0
  273. package/build/dist/Server/API/AIReadinessAPI.js.map +1 -0
  274. package/build/dist/Server/API/BaseAnalyticsAPI.js +19 -0
  275. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  276. package/build/dist/Server/API/CodeFixRunAPI.js +142 -0
  277. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
  278. package/build/dist/Server/API/EnterpriseLicenseAPI.js +8 -0
  279. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
  280. package/build/dist/Server/API/TelemetryExceptionAPI.js +4 -0
  281. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  282. package/build/dist/Server/EnvironmentConfig.js +51 -0
  283. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  284. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js +80 -0
  285. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js.map +1 -0
  286. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js +37 -0
  287. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js.map +1 -0
  288. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js +23 -0
  289. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js.map +1 -0
  290. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js +27 -0
  291. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js.map +1 -0
  292. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js +21 -0
  293. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js.map +1 -0
  294. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js +22 -0
  295. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js.map +1 -0
  296. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js +47 -0
  297. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js.map +1 -0
  298. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js +16 -0
  299. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js.map +1 -0
  300. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js +18 -0
  301. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js.map +1 -0
  302. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js +20 -0
  303. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js.map +1 -0
  304. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
  305. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  306. package/build/dist/Server/Services/AIRunEventService.js +8 -0
  307. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  308. package/build/dist/Server/Services/AIRunService.js +29 -0
  309. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  310. package/build/dist/Server/Services/AnalyticsDatabaseService.js +58 -4
  311. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  312. package/build/dist/Server/Services/IncidentService.js +12 -0
  313. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  314. package/build/dist/Server/Services/Index.js +10 -0
  315. package/build/dist/Server/Services/Index.js.map +1 -1
  316. package/build/dist/Server/Services/LlmProviderService.js +2 -0
  317. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  318. package/build/dist/Server/Services/MarketingConversionService.js +9 -0
  319. package/build/dist/Server/Services/MarketingConversionService.js.map +1 -0
  320. package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js +29 -0
  321. package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js.map +1 -0
  322. package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js +29 -0
  323. package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js.map +1 -0
  324. package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js +29 -0
  325. package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js.map +1 -0
  326. package/build/dist/Server/Services/MetricService.js +761 -125
  327. package/build/dist/Server/Services/MetricService.js.map +1 -1
  328. package/build/dist/Server/Services/MonitorService.js +18 -5
  329. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  330. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +44 -0
  331. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -1
  332. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +88 -0
  333. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -1
  334. package/build/dist/Server/Services/NetworkFlowService.js +9 -0
  335. package/build/dist/Server/Services/NetworkFlowService.js.map +1 -0
  336. package/build/dist/Server/Services/OnCallDutyPolicyService.js +15 -6
  337. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  338. package/build/dist/Server/Services/ProjectService.js +146 -6
  339. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  340. package/build/dist/Server/Services/SpanService.js +8 -6
  341. package/build/dist/Server/Services/SpanService.js.map +1 -1
  342. package/build/dist/Server/Services/StatusPageService.js +91 -0
  343. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  344. package/build/dist/Server/Services/TeamMemberService.js +11 -0
  345. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  346. package/build/dist/Server/Services/TelemetryExceptionService.js +14 -61
  347. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  348. package/build/dist/Server/Services/UserService.js +52 -0
  349. package/build/dist/Server/Services/UserService.js.map +1 -1
  350. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +33 -7
  351. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  352. package/build/dist/Server/Types/Markdown.js +8 -8
  353. package/build/dist/Server/Types/Markdown.js.map +1 -1
  354. package/build/dist/Server/Types/MarkdownSlugify.js +47 -0
  355. package/build/dist/Server/Types/MarkdownSlugify.js.map +1 -0
  356. package/build/dist/Server/Utils/AI/AIRunTranscript.js +180 -0
  357. package/build/dist/Server/Utils/AI/AIRunTranscript.js.map +1 -0
  358. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +1 -0
  359. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
  360. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +103 -5
  361. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
  362. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +55 -0
  363. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  364. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +211 -0
  365. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -0
  366. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
  367. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +654 -0
  368. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +389 -0
  370. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/Toolbox/Index.js +19 -0
  372. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  373. package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js +239 -0
  374. package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js.map +1 -0
  375. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +19 -1
  376. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -1
  377. package/build/dist/Server/Utils/Attribution.js +74 -0
  378. package/build/dist/Server/Utils/Attribution.js.map +1 -0
  379. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +439 -0
  380. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  381. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +1 -1
  382. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -1
  383. package/build/dist/Server/Utils/LLM/LLMService.js +275 -19
  384. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  385. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +40 -0
  386. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -0
  387. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js +20 -0
  388. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js.map +1 -0
  389. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +177 -0
  390. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -0
  391. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +113 -0
  392. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -0
  393. package/build/dist/Server/Utils/Marketing/Providers/Meta.js +109 -0
  394. package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -0
  395. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +130 -0
  396. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -0
  397. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +126 -0
  398. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -0
  399. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +53 -9
  400. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  401. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -10
  402. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  403. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +54 -11
  404. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  405. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +43 -3
  406. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  407. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +68 -0
  408. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  409. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +17 -11
  410. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
  411. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +100 -15
  412. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  413. package/build/dist/Server/Utils/ProductAnalytics.js +111 -0
  414. package/build/dist/Server/Utils/ProductAnalytics.js.map +1 -0
  415. package/build/dist/Server/Utils/Telemetry/Telemetry.js +32 -5
  416. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  417. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -0
  418. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  419. package/build/dist/Types/AI/AIAgentTaskStatus.js +12 -0
  420. package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -1
  421. package/build/dist/Types/AI/AIChatPageContext.js +101 -0
  422. package/build/dist/Types/AI/AIChatPageContext.js.map +1 -0
  423. package/build/dist/Types/AI/AIChatTypes.js +2 -0
  424. package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
  425. package/build/dist/Types/AI/AIFixReadiness.js +9 -0
  426. package/build/dist/Types/AI/AIFixReadiness.js.map +1 -0
  427. package/build/dist/Types/AI/AIRunStatus.js +11 -0
  428. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  429. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +11 -0
  430. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  431. package/build/dist/Types/BaseDatabase/AggregationInterval.js +11 -0
  432. package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
  433. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +33 -5
  434. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  435. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  436. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  437. package/build/dist/Types/Log/LogSeverity.js +56 -0
  438. package/build/dist/Types/Log/LogSeverity.js.map +1 -1
  439. package/build/dist/Types/Marketing/MarketingConversion.js +13 -0
  440. package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -0
  441. package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
  442. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  443. package/build/dist/Types/Monitor/MonitorStep.js +6 -0
  444. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  445. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +3 -0
  446. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
  447. package/build/dist/Types/Monitor/MonitorType.js +2 -1
  448. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  449. package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js +2 -0
  450. package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js.map +1 -0
  451. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +41 -0
  452. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -1
  453. package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js +2 -0
  454. package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js.map +1 -0
  455. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +48 -0
  456. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -1
  457. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +38 -0
  458. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -1
  459. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js +2 -0
  460. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js.map +1 -0
  461. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +96 -3
  462. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
  463. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +38 -0
  464. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -1
  465. package/build/dist/Types/NetFlow/NetworkFlowRecord.js +2 -0
  466. package/build/dist/Types/NetFlow/NetworkFlowRecord.js.map +1 -0
  467. package/build/dist/Types/Syslog/SyslogMessage.js +2 -0
  468. package/build/dist/Types/Syslog/SyslogMessage.js.map +1 -0
  469. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +0 -7
  470. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -1
  471. package/build/dist/Types/Telemetry/TelemetrySavedViewType.js +13 -0
  472. package/build/dist/Types/Telemetry/TelemetrySavedViewType.js.map +1 -0
  473. package/build/dist/UI/Components/Charts/Area/AreaChart.js +25 -1
  474. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  475. package/build/dist/UI/Components/Charts/Bar/BarChart.js +26 -2
  476. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  477. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +36 -12
  478. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  479. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +217 -8
  480. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  481. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +55 -4
  482. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  483. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +217 -8
  484. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  485. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +6 -1
  486. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -1
  487. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js +2 -0
  488. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js.map +1 -0
  489. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js +2 -0
  490. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js.map +1 -0
  491. package/build/dist/UI/Components/Charts/Line/LineChart.js +25 -1
  492. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  493. package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js +2 -0
  494. package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js.map +1 -0
  495. package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js +2 -0
  496. package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js.map +1 -0
  497. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js +1 -0
  498. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js.map +1 -1
  499. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +0 -0
  500. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  501. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +121 -0
  502. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -0
  503. package/build/dist/UI/Components/Charts/Utils/XAxis.js +27 -4
  504. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  505. package/build/dist/UI/Components/Forms/BasicForm.js +24 -6
  506. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  507. package/build/dist/UI/Components/Icon/Icon.js +15 -8
  508. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  509. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  510. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +58 -0
  511. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  512. package/build/dist/UI/Components/Page/ModelPage.js +7 -1
  513. package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
  514. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +10 -4
  515. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
  516. package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js +217 -0
  517. package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js.map +1 -0
  518. package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js +234 -0
  519. package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js.map +1 -0
  520. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +111 -0
  521. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -0
  522. package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js +233 -0
  523. package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js.map +1 -0
  524. package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js +134 -0
  525. package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js.map +1 -0
  526. package/build/dist/UI/Utils/DownloadFile.js +41 -0
  527. package/build/dist/UI/Utils/DownloadFile.js.map +1 -0
  528. package/build/dist/UI/Utils/User.js +35 -2
  529. package/build/dist/UI/Utils/User.js.map +1 -1
  530. package/build/dist/Utils/Analytics.js +8 -5
  531. package/build/dist/Utils/Analytics.js.map +1 -1
  532. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +57 -0
  533. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
  534. package/build/dist/Utils/Metrics/MetricExplorerUrl.js +418 -0
  535. package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -0
  536. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +296 -37
  537. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -1
  538. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +176 -40
  539. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  540. package/build/dist/Utils/ValueFormatter.js +20 -1
  541. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  542. 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. */
@@ -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