@oneuptime/common 12.0.5 → 12.0.7

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 (901) hide show
  1. package/Models/DatabaseModels/AIInsight.ts +1 -1
  2. package/Models/DatabaseModels/AIRun.ts +33 -0
  3. package/Models/DatabaseModels/DataSource.ts +744 -0
  4. package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +2 -3
  5. package/Models/DatabaseModels/DeletedProject.ts +595 -0
  6. package/Models/DatabaseModels/Index.ts +5 -0
  7. package/Models/DatabaseModels/Monitor.ts +111 -0
  8. package/Models/DatabaseModels/Project.ts +3 -3
  9. package/Models/DatabaseModels/ProjectCallSMSConfig.ts +10 -2
  10. package/Models/DatabaseModels/User.ts +2 -0
  11. package/Models/DatabaseModels/UserOnCallLog.ts +2 -0
  12. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +2 -0
  13. package/Models/DatabaseModels/UserSession.ts +2 -0
  14. package/Models/DatabaseModels/UserTotpAuth.ts +6 -4
  15. package/Models/DatabaseModels/UserWebAuthn.ts +5 -3
  16. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -1
  17. package/Server/API/AIInsightAPI.ts +47 -4
  18. package/Server/API/AIInvestigationAPI.ts +25 -0
  19. package/Server/API/DashboardAPI.ts +176 -492
  20. package/Server/API/DataSourceAPI.ts +268 -0
  21. package/Server/API/FileAPI.ts +15 -2
  22. package/Server/API/MicrosoftTeamsAPI.ts +6 -1
  23. package/Server/API/ProjectAPI.ts +214 -0
  24. package/Server/API/StatusPageAPI.ts +50 -7
  25. package/Server/API/UserAPI.ts +119 -0
  26. package/Server/Infrastructure/ClickhouseConfig.ts +59 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.ts +39 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.ts +50 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.ts +67 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.ts +39 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.ts +24 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.ts +76 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  34. package/Server/Infrastructure/Queue.ts +26 -0
  35. package/Server/Infrastructure/QueueWorker.ts +17 -0
  36. package/Server/Middleware/TelemetryIngest.ts +8 -3
  37. package/Server/Services/AIAgentService.ts +20 -0
  38. package/Server/Services/AIInsightService.ts +132 -12
  39. package/Server/Services/AIRunService.ts +34 -0
  40. package/Server/Services/AIService.ts +17 -2
  41. package/Server/Services/AlertService.ts +38 -32
  42. package/Server/Services/AnalyticsDatabaseService.ts +8 -4
  43. package/Server/Services/DashboardDomainService.ts +73 -28
  44. package/Server/Services/DataSourceService.ts +200 -0
  45. package/Server/Services/DatabaseService.ts +1 -0
  46. package/Server/Services/DeletedProjectService.ts +138 -0
  47. package/Server/Services/FileService.ts +61 -0
  48. package/Server/Services/HostService.ts +92 -0
  49. package/Server/Services/IncidentEpisodePublicNoteService.ts +18 -0
  50. package/Server/Services/IncidentPublicNoteService.ts +18 -0
  51. package/Server/Services/IncidentService.ts +45 -0
  52. package/Server/Services/Index.ts +4 -0
  53. package/Server/Services/MonitorService.ts +360 -0
  54. package/Server/Services/MonitorStatusService.ts +166 -0
  55. package/Server/Services/OpenTelemetryIngestService.ts +255 -184
  56. package/Server/Services/ProbeService.ts +20 -0
  57. package/Server/Services/ProjectService.ts +297 -1
  58. package/Server/Services/PushNotificationService.ts +71 -0
  59. package/Server/Services/RumSessionPinService.ts +7 -21
  60. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +18 -0
  61. package/Server/Services/StatusPageAnnouncementService.ts +53 -0
  62. package/Server/Services/StatusPageDomainService.ts +73 -28
  63. package/Server/Services/StatusPageSubscriberService.ts +13 -0
  64. package/Server/Services/TeamMemberService.ts +117 -12
  65. package/Server/Services/TelemetryIngestionKeyService.ts +1 -0
  66. package/Server/Services/UserService.ts +280 -9
  67. package/Server/Services/UserWebhookService.ts +34 -109
  68. package/Server/Services/WorkspaceNotificationRuleService.ts +69 -0
  69. package/Server/Services/WorkspaceProjectAuthTokenService.ts +37 -1
  70. package/Server/Static/Vendor/README.md +62 -0
  71. package/Server/Static/Vendor/fonts/InterVariable.woff2 +0 -0
  72. package/Server/Static/Vendor/highlight/highlight.min.js +1244 -0
  73. package/Server/Static/Vendor/highlight/languages/apache.min.js +15 -0
  74. package/Server/Static/Vendor/highlight/languages/bash.min.js +21 -0
  75. package/Server/Static/Vendor/highlight/languages/c.min.js +41 -0
  76. package/Server/Static/Vendor/highlight/languages/cpp.min.js +47 -0
  77. package/Server/Static/Vendor/highlight/languages/csharp.min.js +49 -0
  78. package/Server/Static/Vendor/highlight/languages/css.min.js +31 -0
  79. package/Server/Static/Vendor/highlight/languages/diff.min.js +9 -0
  80. package/Server/Static/Vendor/highlight/languages/dns.min.js +11 -0
  81. package/Server/Static/Vendor/highlight/languages/dockerfile.min.js +8 -0
  82. package/Server/Static/Vendor/highlight/languages/go.min.js +20 -0
  83. package/Server/Static/Vendor/highlight/languages/graphql.min.js +12 -0
  84. package/Server/Static/Vendor/highlight/languages/http.min.js +14 -0
  85. package/Server/Static/Vendor/highlight/languages/ini.min.js +15 -0
  86. package/Server/Static/Vendor/highlight/languages/java.min.js +38 -0
  87. package/Server/Static/Vendor/highlight/languages/javascript.min.js +81 -0
  88. package/Server/Static/Vendor/highlight/languages/json.min.js +8 -0
  89. package/Server/Static/Vendor/highlight/languages/kotlin.min.js +46 -0
  90. package/Server/Static/Vendor/highlight/languages/lua.min.js +15 -0
  91. package/Server/Static/Vendor/highlight/languages/makefile.min.js +14 -0
  92. package/Server/Static/Vendor/highlight/languages/nginx.min.js +21 -0
  93. package/Server/Static/Vendor/highlight/languages/perl.min.js +41 -0
  94. package/Server/Static/Vendor/highlight/languages/php.min.js +59 -0
  95. package/Server/Static/Vendor/highlight/languages/powershell.min.js +39 -0
  96. package/Server/Static/Vendor/highlight/languages/python.min.js +42 -0
  97. package/Server/Static/Vendor/highlight/languages/r.min.js +26 -0
  98. package/Server/Static/Vendor/highlight/languages/ruby.min.js +54 -0
  99. package/Server/Static/Vendor/highlight/languages/rust.min.js +27 -0
  100. package/Server/Static/Vendor/highlight/languages/scala.min.js +28 -0
  101. package/Server/Static/Vendor/highlight/languages/sql.min.js +21 -0
  102. package/Server/Static/Vendor/highlight/languages/swift.min.js +68 -0
  103. package/Server/Static/Vendor/highlight/languages/typescript.min.js +99 -0
  104. package/Server/Static/Vendor/highlight/languages/xml.min.js +29 -0
  105. package/Server/Static/Vendor/highlight/languages/yaml.min.js +28 -0
  106. package/Server/Static/Vendor/highlight/styles/github-dark.min.css +10 -0
  107. package/Server/Static/Vendor/highlight/styles/vs2015.min.css +1 -0
  108. package/Server/Static/Vendor/tailwind/tailwind-3.4.5.js +21028 -0
  109. package/Server/Types/Database/DeleteById.ts +2 -0
  110. package/Server/Types/Database/DeleteOneBy.ts +6 -0
  111. package/Server/Types/Database/Permissions/BasePermission.ts +7 -0
  112. package/Server/Types/Database/Permissions/DeletePermission.ts +2 -0
  113. package/Server/Types/Database/Permissions/ReadPermission.ts +3 -0
  114. package/Server/Types/Database/Permissions/TenantPermission.ts +101 -16
  115. package/Server/Types/Domain.ts +41 -0
  116. package/Server/Types/Workflow/Components/API/Delete.ts +2 -1
  117. package/Server/Types/Workflow/Components/API/Get.ts +2 -1
  118. package/Server/Types/Workflow/Components/API/Patch.ts +2 -1
  119. package/Server/Types/Workflow/Components/API/Post.ts +2 -1
  120. package/Server/Types/Workflow/Components/API/Put.ts +2 -1
  121. package/Server/Types/Workflow/Components/API/Utils.ts +41 -2
  122. package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +25 -19
  123. package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +6 -5
  124. package/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.ts +32 -14
  125. package/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.ts +31 -13
  126. package/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.ts +29 -20
  127. package/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.ts +28 -21
  128. package/Server/Types/Workflow/Components/BaseModel/LogComponentError.ts +89 -0
  129. package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +208 -0
  130. package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +11 -0
  131. package/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.ts +41 -18
  132. package/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.ts +45 -19
  133. package/Server/Types/Workflow/Components/Discord/SendMessageToChannel.ts +16 -9
  134. package/Server/Types/Workflow/Components/IncomingWebhookUtils.ts +66 -0
  135. package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +15 -9
  136. package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +17 -0
  137. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
  138. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +171 -0
  139. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +2 -2
  140. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +90 -11
  141. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +1 -0
  142. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +3 -3
  143. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +1 -0
  144. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.ts +125 -0
  145. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +25 -15
  146. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +256 -57
  147. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -2
  148. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +76 -18
  149. package/Server/Utils/AI/SRE/InvestigationTldr.ts +352 -0
  150. package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
  151. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +6 -6
  152. package/Server/Utils/AnalyticsDatabase/InsertDedupContext.ts +7 -2
  153. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +43 -5
  154. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +1793 -0
  155. package/Server/Utils/Dashboard/PublicDashboardViewConfig.ts +65 -0
  156. package/Server/Utils/DataSource/ConnectorRegistry.ts +53 -0
  157. package/Server/Utils/DataSource/Connectors/ClickHouseConnector.ts +338 -0
  158. package/Server/Utils/DataSource/Connectors/ElasticsearchConnector.ts +717 -0
  159. package/Server/Utils/DataSource/Connectors/LokiConnector.ts +606 -0
  160. package/Server/Utils/DataSource/Connectors/MySqlConnector.ts +307 -0
  161. package/Server/Utils/DataSource/Connectors/PostgresConnector.ts +260 -0
  162. package/Server/Utils/DataSource/Connectors/PrometheusConnector.ts +555 -0
  163. package/Server/Utils/DataSource/Connectors/RestApiConnector.ts +597 -0
  164. package/Server/Utils/DataSource/Connectors/SqlServerConnector.ts +318 -0
  165. package/Server/Utils/DataSource/EgressGuard.ts +606 -0
  166. package/Server/Utils/DataSource/HttpFetch.ts +182 -0
  167. package/Server/Utils/DataSource/SqlQueryGuard.ts +383 -0
  168. package/Server/Utils/DataSource/SqlResultShaper.ts +372 -0
  169. package/Server/Utils/DataSource/Types.ts +93 -0
  170. package/Server/Utils/Database/PostgresErrorTranslator.ts +172 -17
  171. package/Server/Utils/Execute.ts +8 -0
  172. package/Server/Utils/InProcessMemo.ts +141 -0
  173. package/Server/Utils/InlineImageAccessTokenSync.ts +23 -0
  174. package/Server/Utils/InstanceHealth/TelemetryIngestion.ts +628 -0
  175. package/Server/Utils/LLM/LLMService.ts +57 -12
  176. package/Server/Utils/Monitor/MonitorAlert.ts +40 -0
  177. package/Server/Utils/Monitor/MonitorDependencySuppression.ts +192 -0
  178. package/Server/Utils/Monitor/MonitorIncident.ts +40 -0
  179. package/Server/Utils/Monitor/MonitorMetricUtil.ts +58 -0
  180. package/Server/Utils/Monitor/MonitorResource.ts +50 -0
  181. package/Server/Utils/Response.ts +154 -7
  182. package/Server/Utils/SSRFProtection.ts +450 -0
  183. package/Server/Utils/StartServer.ts +16 -0
  184. package/Server/Utils/StatusPageSubscriberWebhook.ts +30 -0
  185. package/Server/Utils/Telemetry/CaptureSpan.ts +30 -18
  186. package/Server/Utils/Telemetry/IngestionTimestamp.ts +75 -0
  187. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +99 -7
  188. package/Server/Utils/Telemetry/Telemetry.ts +112 -1
  189. package/Server/Utils/Telemetry.ts +104 -3
  190. package/Server/Utils/VM/VMRunner.ts +88 -1
  191. package/Server/Utils/VendorAssets.ts +165 -0
  192. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +582 -53
  193. package/Server/Utils/Workspace/Slack/Slack.ts +30 -2
  194. package/Server/Utils/Workspace/WorkspaceBase.ts +6 -0
  195. package/Server/Views/Partials/Head.ejs +21 -7
  196. package/Tests/App/AdminDashboard/AdminProjectsIdFilter.test.tsx +207 -0
  197. package/Tests/App/AdminDashboard/AdminUsersIdFilter.test.tsx +216 -0
  198. package/Tests/App/Dashboard/AIInsightViewActions.test.tsx +422 -0
  199. package/Tests/App/Dashboard/AddWidgetModal.test.tsx +10 -3
  200. package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +387 -0
  201. package/Tests/App/Dashboard/ChatActivityFeed.test.tsx +199 -0
  202. package/Tests/App/Dashboard/DangerZone.test.tsx +334 -0
  203. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +539 -0
  204. package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +678 -0
  205. package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +706 -0
  206. package/Tests/App/Dashboard/DashboardVariablesModal.test.tsx +508 -0
  207. package/Tests/App/Dashboard/DataSourceChartSyntheticConfig.test.tsx +736 -0
  208. package/Tests/App/Dashboard/DataSourceQueryEditor.test.tsx +868 -0
  209. package/Tests/App/Dashboard/DataSourceWidgetCatalog.test.ts +440 -0
  210. package/Tests/App/Dashboard/DataSourceWidgetFetching.test.tsx +2109 -0
  211. package/Tests/App/Dashboard/DataSourceWidgetViews.test.tsx +726 -0
  212. package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +447 -0
  213. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +514 -3
  214. package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +391 -0
  215. package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +326 -0
  216. package/Tests/App/Dashboard/SideMenuHarness.tsx +187 -0
  217. package/Tests/App/Dashboard/WidgetCatalog.test.ts +6 -1
  218. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +470 -0
  219. package/Tests/App/StatusPage/StatusPageDetailPagesNotFound.test.tsx +308 -0
  220. package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +1858 -0
  221. package/Tests/Models/DatabaseModels/DataSourceModelSecrets.test.ts +70 -0
  222. package/Tests/Models/DatabaseModels/DeletedProjectModel.test.ts +251 -0
  223. package/Tests/Models/DatabaseModels/SavedViewJSONColumnTuples.test.ts +115 -0
  224. package/Tests/Server/API/AIInvestigationAPI.test.ts +187 -0
  225. package/Tests/Server/API/DashboardPublicDataSourceStrip.test.ts +686 -0
  226. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +585 -823
  227. package/Tests/Server/API/DataSourceAPIRoutes.test.ts +486 -0
  228. package/Tests/Server/API/FileAPIAccessControl.test.ts +316 -0
  229. package/Tests/Server/API/ProjectAPI.test.ts +299 -1
  230. package/Tests/Server/API/ProjectAPIAdjustBalance.test.ts +459 -0
  231. package/Tests/Server/API/ProjectAPIAdjustBalanceBillingDisabled.test.ts +177 -0
  232. package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +291 -0
  233. package/Tests/Server/API/UserAuthenticationAPI.test.ts +641 -0
  234. package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +441 -0
  235. package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +140 -0
  236. package/Tests/Server/Services/AIInsightService.test.ts +266 -11
  237. package/Tests/Server/Services/AIRunAnalysisTldrPersistence.test.ts +160 -0
  238. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +4 -0
  239. package/Tests/Server/Services/AlertMetricResourceAttributes.test.ts +352 -0
  240. package/Tests/Server/Services/DataSourceServiceSettings.test.ts +244 -0
  241. package/Tests/Server/Services/DatabaseServiceDeletionReason.test.ts +123 -0
  242. package/Tests/Server/Services/DeletedProjectService.test.ts +415 -0
  243. package/Tests/Server/Services/DeletedProjectServiceSelfHosted.test.ts +70 -0
  244. package/Tests/Server/Services/DomainSubdomainHooks.test.ts +94 -0
  245. package/Tests/Server/Services/FileIsPublicBooleanMigration.test.ts +244 -0
  246. package/Tests/Server/Services/FileServiceMimeType.test.ts +89 -0
  247. package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +397 -0
  248. package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +41 -2
  249. package/Tests/Server/Services/IncidentMetricResourceAttributes.test.ts +408 -0
  250. package/Tests/Server/Services/MonitorServiceDependencyValidation.test.ts +702 -0
  251. package/Tests/Server/Services/MonitorStatusServiceDeleteReferenceCleanup.test.ts +351 -0
  252. package/Tests/Server/Services/MonitorStatusServiceValidation.test.ts +171 -0
  253. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +398 -0
  254. package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +19 -0
  255. package/Tests/Server/Services/ProjectCallSMSConfigCredentialUniqueness.test.ts +305 -0
  256. package/Tests/Server/Services/ProjectServiceAdjustBalance.test.ts +615 -0
  257. package/Tests/Server/Services/ProjectServiceDeleteAudit.test.ts +406 -0
  258. package/Tests/Server/Services/PublishTimeImageVisibility.test.ts +450 -0
  259. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +36 -1
  260. package/Tests/Server/Services/RumSessionPinUniqueViolationRecovery.test.ts +163 -0
  261. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +669 -0
  262. package/Tests/Server/Services/UserAuthenticationService.test.ts +973 -0
  263. package/Tests/Server/Services/UserWebhookSSRF.test.ts +174 -0
  264. package/Tests/Server/Services/WebPushEndpointAllowlist.test.ts +133 -0
  265. package/Tests/Server/Services/WorkspaceProjectAuthTokenRepoint.test.ts +618 -0
  266. package/Tests/Server/Types/Database/ObjectIdColumnQuery.test.ts +262 -0
  267. package/Tests/Server/Types/Database/Permissions/TenantPermission.test.ts +358 -0
  268. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +26 -1
  269. package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +215 -0
  270. package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +742 -0
  271. package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +256 -0
  272. package/Tests/Server/Types/Workflow/Components/ModelArguments.test.ts +371 -0
  273. package/Tests/Server/Utils/AI/CodeAgentCommandGuard.test.ts +204 -0
  274. package/Tests/Server/Utils/AI/CodeAgentWriteLimits.test.ts +213 -0
  275. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +52 -5
  276. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +2 -2
  277. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +6 -1
  278. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +121 -4
  279. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +361 -10
  280. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +292 -0
  281. package/Tests/Server/Utils/AI/InvestigationTldr.test.ts +623 -0
  282. package/Tests/Server/Utils/AI/InvestigationTldrWiring.test.ts +98 -0
  283. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +3 -0
  284. package/Tests/Server/Utils/AI/LLMServiceEgressGuard.test.ts +315 -0
  285. package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +3 -0
  286. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +17 -5
  287. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +14 -1
  288. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +35 -0
  289. package/Tests/Server/Utils/AI/StubLLMEgressGuard.ts +25 -0
  290. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +912 -0
  291. package/Tests/Server/Utils/Dashboard/PublicDashboardViewConfig.test.ts +480 -0
  292. package/Tests/Server/Utils/DataSource/ClickHouseConnector.test.ts +759 -0
  293. package/Tests/Server/Utils/DataSource/ConnectorRegistry.test.ts +37 -0
  294. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +714 -0
  295. package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +330 -0
  296. package/Tests/Server/Utils/DataSource/ElasticsearchConnector.test.ts +1206 -0
  297. package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +616 -0
  298. package/Tests/Server/Utils/DataSource/LokiConnector.test.ts +970 -0
  299. package/Tests/Server/Utils/DataSource/MySqlConnector.test.ts +935 -0
  300. package/Tests/Server/Utils/DataSource/PostgresConnector.test.ts +854 -0
  301. package/Tests/Server/Utils/DataSource/PrometheusConnector.test.ts +881 -0
  302. package/Tests/Server/Utils/DataSource/RestApiConnector.test.ts +1020 -0
  303. package/Tests/Server/Utils/DataSource/SqlQueryGuard.test.ts +425 -0
  304. package/Tests/Server/Utils/DataSource/SqlResultShaper.test.ts +555 -0
  305. package/Tests/Server/Utils/DataSource/SqlServerConnector.test.ts +934 -0
  306. package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +228 -7
  307. package/Tests/Server/Utils/GitHubCreatePullRequestWithToken.test.ts +393 -0
  308. package/Tests/Server/Utils/InProcessMemo.test.ts +292 -0
  309. package/Tests/Server/Utils/InlineImageAccessTokenSync.test.ts +202 -0
  310. package/Tests/Server/Utils/InstanceHealth/TelemetryIngestion.test.ts +960 -0
  311. package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +103 -0
  312. package/Tests/Server/Utils/Monitor/MonitorDependencySuppression.test.ts +811 -0
  313. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +604 -0
  314. package/Tests/Server/Utils/Monitor/MonitorMetricResourceAttributes.test.ts +336 -0
  315. package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +521 -0
  316. package/Tests/Server/Utils/ResponseRenderAnalytics.test.ts +143 -0
  317. package/Tests/Server/Utils/ResponseSendFileResponse.test.ts +192 -0
  318. package/Tests/Server/Utils/SSRFProtection.test.ts +193 -0
  319. package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +406 -0
  320. package/Tests/Server/Utils/StatusPageSubscriberWebhook.test.ts +101 -0
  321. package/Tests/Server/Utils/TailwindBuildCopy.test.ts +225 -0
  322. package/Tests/Server/Utils/Telemetry/ResourceHeartbeatL1Memo.test.ts +355 -0
  323. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +128 -0
  324. package/Tests/Server/Utils/Telemetry/TelemetryUtilAttributeKeys.test.ts +381 -0
  325. package/Tests/Server/Utils/Telemetry.test.ts +87 -0
  326. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +194 -0
  327. package/Tests/Server/Utils/VendorAssetIntegrity.test.ts +343 -0
  328. package/Tests/Server/Utils/VendorAssets.test.ts +671 -0
  329. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +1169 -0
  330. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +2 -0
  331. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +1605 -0
  332. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTenantResolution.test.ts +1218 -0
  333. package/Tests/Server/Views/OfflineRender.test.ts +297 -0
  334. package/Tests/Types/AI/AIChatMessageStatus.test.ts +79 -0
  335. package/Tests/Types/AI/AIInsightStatus.test.ts +40 -0
  336. package/Tests/Types/API/HostnameAuthorityParsing.test.ts +157 -0
  337. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +27 -0
  338. package/Tests/Types/Dashboard/DataSourceComponentTypes.test.ts +618 -0
  339. package/Tests/Types/DataSource/DataSourceLimits.test.ts +71 -0
  340. package/Tests/Types/DataSource/DataSourceType.test.ts +181 -0
  341. package/Tests/Types/DateClickhouseFormat.test.ts +192 -0
  342. package/Tests/Types/DomainSubdomainValidation.test.ts +90 -0
  343. package/Tests/Types/JSONFunctions.test.ts +252 -1
  344. package/Tests/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.test.ts +61 -0
  345. package/Tests/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.test.ts +62 -0
  346. package/Tests/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.test.ts +68 -0
  347. package/Tests/Types/Monitor/SnmpMonitor/SnmpVersion.test.ts +51 -0
  348. package/Tests/Types/Password.test.ts +363 -0
  349. package/Tests/UI/Components/404.test.tsx +1 -1
  350. package/Tests/UI/Components/Alert.test.tsx +1 -1
  351. package/Tests/UI/Components/Badge.test.tsx +1 -1
  352. package/Tests/UI/Components/BasicForm.test.tsx +39 -10
  353. package/Tests/UI/Components/Button.test.tsx +1 -1
  354. package/Tests/UI/Components/Card.test.tsx +1 -1
  355. package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +1 -1
  356. package/Tests/UI/Components/ColorViewer.test.tsx +1 -1
  357. package/Tests/UI/Components/ComponentsModal.test.tsx +7 -1
  358. package/Tests/UI/Components/ConfirmModal.test.tsx +7 -0
  359. package/Tests/UI/Components/DictionaryOfStrings.test.tsx +1 -1
  360. package/Tests/UI/Components/Dropdown.test.tsx +1 -1
  361. package/Tests/UI/Components/ErrorBoundary.test.tsx +53 -0
  362. package/Tests/UI/Components/FilePicker.test.tsx +1 -1
  363. package/Tests/UI/Components/HiddenText.test.tsx +1 -1
  364. package/Tests/UI/Components/Input.test.tsx +1 -1
  365. package/Tests/UI/Components/Loader.test.tsx +1 -1
  366. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +1 -1
  367. package/Tests/UI/Components/MasterPage.test.tsx +1 -1
  368. package/Tests/UI/Components/Modal.test.tsx +281 -1
  369. package/Tests/UI/Components/ModalPortalDismissal.test.tsx +489 -0
  370. package/Tests/UI/Components/ModelDelete.test.tsx +214 -0
  371. package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1 -1
  372. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +1 -1
  373. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +1 -1
  374. package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +1 -1
  375. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1 -1
  376. package/Tests/UI/Components/NavBar.test.tsx +1 -1
  377. package/Tests/UI/Components/ObjectIdFilterPipeline.test.tsx +396 -0
  378. package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +1 -1
  379. package/Tests/UI/Components/Pagination.test.tsx +1 -1
  380. package/Tests/UI/Components/Pill.test.tsx +1 -1
  381. package/Tests/UI/Components/Probe.test.tsx +1 -1
  382. package/Tests/UI/Components/ProgressBar.test.tsx +1 -1
  383. package/Tests/UI/Components/RadioButtons.test.tsx +1 -1
  384. package/Tests/UI/Components/SideMenuItem.test.tsx +1 -1
  385. package/Tests/UI/Components/SideOver.test.tsx +500 -6
  386. package/Tests/UI/Components/StatusPage/ResourceGroupNavigator.test.tsx +1147 -0
  387. package/Tests/UI/Components/Tabs.test.tsx +1 -1
  388. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +1 -1
  389. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +1 -1
  390. package/Tests/UI/Components/TextArea.test.tsx +1 -1
  391. package/Tests/UI/Components/Toast.test.tsx +1 -1
  392. package/Tests/UI/Components/Toggle.test.tsx +1 -1
  393. package/Tests/UI/Components/TopSection.test.tsx +1 -1
  394. package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +1 -1
  395. package/Tests/UI/Rum/ReplayScrubber.test.tsx +1 -1
  396. package/Tests/UI/Rum/ReplayStage.test.tsx +1 -1
  397. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +1 -1
  398. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +116 -1
  399. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  400. package/Tests/UI/Utils/LocalStorageArrayRoundTrip.test.ts +72 -0
  401. package/Tests/Utils/Analytics.test.ts +23 -0
  402. package/Tests/Utils/Dashboard/Components/DashboardDataSourceComponents.test.ts +640 -0
  403. package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +19 -2
  404. package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +44 -0
  405. package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +288 -5
  406. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +42 -0
  407. package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +165 -0
  408. package/Tests/Utils/DataSource/DataSourceValueReducer.test.ts +526 -0
  409. package/Tests/Utils/LegacySerializedArray.test.ts +139 -0
  410. package/Tests/Utils/Metrics/MetricResourceAttributeUtil.test.ts +691 -0
  411. package/Tests/Utils/Monitor/MonitorDependencyRule.test.ts +190 -0
  412. package/Tests/Utils/Realtime.test.ts +78 -0
  413. package/Tests/Utils/StatusPage/GroupHierarchyView.test.ts +1452 -0
  414. package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +931 -0
  415. package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +288 -0
  416. package/Tests/Utils/Telemetry/IngestionTimestamp.test.ts +170 -0
  417. package/Tests/Utils/Telemetry/SavedViewFilters.test.ts +246 -0
  418. package/Tests/__mocks__/i18next-browser-languagedetector.js +21 -0
  419. package/Types/AI/AIInsightEvidence.ts +6 -0
  420. package/Types/AI/FixPullRequestCiStatus.ts +1 -1
  421. package/Types/AI/FixVerificationStatus.ts +2 -2
  422. package/Types/API/Hostname.ts +92 -4
  423. package/Types/API/URL.ts +43 -25
  424. package/Types/Analytics/RevenueEvent.ts +31 -0
  425. package/Types/Billing/BalanceAdjustmentType.ts +14 -0
  426. package/Types/Billing/ProjectBalanceType.ts +13 -0
  427. package/Types/Dashboard/DashboardComponentType.ts +31 -0
  428. package/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.ts +27 -0
  429. package/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.ts +32 -0
  430. package/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.ts +30 -0
  431. package/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.ts +55 -0
  432. package/Types/DataSource/DataSourceLimits.ts +62 -0
  433. package/Types/DataSource/DataSourceQueryConfig.ts +41 -0
  434. package/Types/DataSource/DataSourceTableResult.ts +38 -0
  435. package/Types/DataSource/DataSourceType.ts +213 -0
  436. package/Types/Date.ts +43 -3
  437. package/Types/Domain.ts +26 -0
  438. package/Types/File/MimeType.ts +11 -0
  439. package/Types/JSONFunctions.ts +15 -0
  440. package/Types/Password.ts +64 -0
  441. package/Types/Permission.ts +46 -0
  442. package/Types/Telemetry/TelemetrySavedViewState.ts +9 -1
  443. package/Types/UserAuthenticationStatus.ts +34 -0
  444. package/Types/Workflow/Components/BaseModel.ts +92 -28
  445. package/Typings/Index.d.ts +12 -0
  446. package/UI/Components/Button/Button.tsx +1 -1
  447. package/UI/Components/ErrorBoundary.tsx +459 -108
  448. package/UI/Components/GanttChart/ChartContainer.tsx +4 -3
  449. package/UI/Components/Icon/Icon.tsx +10 -9
  450. package/UI/Components/Modal/ConfirmModal.tsx +15 -5
  451. package/UI/Components/Modal/Modal.tsx +247 -35
  452. package/UI/Components/Modal/ModalFooter.tsx +6 -1
  453. package/UI/Components/ModelDelete/ModelDelete.tsx +23 -6
  454. package/UI/Components/MoreMenu/MoreMenu.tsx +19 -4
  455. package/UI/Components/MoreMenu/MoreMenuItem.tsx +6 -1
  456. package/UI/Components/SideOver/SideOver.tsx +195 -68
  457. package/UI/Components/StatusPage/ResourceGrid.tsx +314 -0
  458. package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +808 -0
  459. package/UI/Components/StatusPage/ResourceList.tsx +570 -0
  460. package/UI/Styles/Theme.css +18 -0
  461. package/UI/Utils/API/RequestOptions.ts +7 -0
  462. package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +1 -0
  463. package/UI/Utils/ModelAPI/ModelAPI.ts +1 -0
  464. package/UI/Utils/PageScrollLock.ts +66 -0
  465. package/UI/Utils/TestDataSource.ts +61 -0
  466. package/UI/esbuild-config.js +45 -0
  467. package/Utils/Analytics.ts +15 -0
  468. package/Utils/Dashboard/Components/DashboardDataSourceChartComponent.ts +88 -0
  469. package/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.ts +123 -0
  470. package/Utils/Dashboard/Components/DashboardDataSourceShared.ts +16 -0
  471. package/Utils/Dashboard/Components/DashboardDataSourceTableComponent.ts +72 -0
  472. package/Utils/Dashboard/Components/DashboardDataSourceValueComponent.ts +126 -0
  473. package/Utils/Dashboard/Components/Index.ts +28 -0
  474. package/Utils/Dashboard/HtmlWidgetDocument.ts +4 -2
  475. package/Utils/Dashboard/VariableInterpolation.ts +19 -1
  476. package/Utils/DataSource/DataSourceQueryText.ts +94 -0
  477. package/Utils/DataSource/DataSourceValueReducer.ts +156 -0
  478. package/Utils/LegacySerializedArray.ts +60 -0
  479. package/Utils/Metrics/MetricResourceAttributeUtil.ts +380 -0
  480. package/Utils/Monitor/MonitorDependencyRule.ts +88 -0
  481. package/Utils/NetworkDiscovery/ScanTargetUtil.ts +8 -6
  482. package/Utils/StatusPage/GroupHierarchyView.ts +931 -0
  483. package/Utils/StatusPage/ResourceExplorer.ts +853 -0
  484. package/Utils/Telemetry/SavedViewFilters.ts +88 -0
  485. package/build/dist/Models/DatabaseModels/AIInsight.js +1 -1
  486. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -1
  487. package/build/dist/Models/DatabaseModels/AIRun.js +34 -0
  488. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  489. package/build/dist/Models/DatabaseModels/DataSource.js +774 -0
  490. package/build/dist/Models/DatabaseModels/DataSource.js.map +1 -0
  491. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +2 -3
  492. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
  493. package/build/dist/Models/DatabaseModels/DeletedProject.js +640 -0
  494. package/build/dist/Models/DatabaseModels/DeletedProject.js.map +1 -0
  495. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  496. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  497. package/build/dist/Models/DatabaseModels/Monitor.js +106 -0
  498. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  499. package/build/dist/Models/DatabaseModels/Project.js +3 -3
  500. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  501. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +14 -4
  502. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
  503. package/build/dist/Models/DatabaseModels/User.js +2 -0
  504. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  505. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -0
  506. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  507. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +2 -0
  508. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  509. package/build/dist/Models/DatabaseModels/UserSession.js +2 -0
  510. package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -1
  511. package/build/dist/Models/DatabaseModels/UserTotpAuth.js +6 -4
  512. package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
  513. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +5 -3
  514. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  515. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  516. package/build/dist/Server/API/AIInsightAPI.js +34 -4
  517. package/build/dist/Server/API/AIInsightAPI.js.map +1 -1
  518. package/build/dist/Server/API/AIInvestigationAPI.js +23 -0
  519. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  520. package/build/dist/Server/API/DashboardAPI.js +119 -433
  521. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  522. package/build/dist/Server/API/DataSourceAPI.js +173 -0
  523. package/build/dist/Server/API/DataSourceAPI.js.map +1 -0
  524. package/build/dist/Server/API/FileAPI.js +14 -2
  525. package/build/dist/Server/API/FileAPI.js.map +1 -1
  526. package/build/dist/Server/API/MicrosoftTeamsAPI.js +6 -1
  527. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  528. package/build/dist/Server/API/ProjectAPI.js +157 -4
  529. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  530. package/build/dist/Server/API/StatusPageAPI.js +38 -4
  531. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  532. package/build/dist/Server/API/UserAPI.js +94 -2
  533. package/build/dist/Server/API/UserAPI.js.map +1 -1
  534. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +49 -0
  535. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  536. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js +20 -0
  537. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js.map +1 -0
  538. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js +34 -0
  539. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js.map +1 -0
  540. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js +30 -0
  541. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js.map +1 -0
  542. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js +20 -0
  543. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js.map +1 -0
  544. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js +19 -0
  545. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js.map +1 -0
  546. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js +64 -0
  547. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js.map +1 -0
  548. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  549. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  550. package/build/dist/Server/Infrastructure/Queue.js +27 -0
  551. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  552. package/build/dist/Server/Infrastructure/QueueWorker.js +13 -0
  553. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  554. package/build/dist/Server/Middleware/TelemetryIngest.js +8 -3
  555. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  556. package/build/dist/Server/Services/AIAgentService.js +17 -0
  557. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  558. package/build/dist/Server/Services/AIInsightService.js +110 -10
  559. package/build/dist/Server/Services/AIInsightService.js.map +1 -1
  560. package/build/dist/Server/Services/AIRunService.js +34 -0
  561. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  562. package/build/dist/Server/Services/AIService.js +16 -2
  563. package/build/dist/Server/Services/AIService.js.map +1 -1
  564. package/build/dist/Server/Services/AlertService.js +28 -35
  565. package/build/dist/Server/Services/AlertService.js.map +1 -1
  566. package/build/dist/Server/Services/AnalyticsDatabaseService.js +8 -4
  567. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  568. package/build/dist/Server/Services/DashboardDomainService.js +55 -18
  569. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  570. package/build/dist/Server/Services/DataSourceService.js +159 -0
  571. package/build/dist/Server/Services/DataSourceService.js.map +1 -0
  572. package/build/dist/Server/Services/DatabaseService.js +1 -0
  573. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  574. package/build/dist/Server/Services/DeletedProjectService.js +124 -0
  575. package/build/dist/Server/Services/DeletedProjectService.js.map +1 -0
  576. package/build/dist/Server/Services/FileService.js +52 -0
  577. package/build/dist/Server/Services/FileService.js.map +1 -1
  578. package/build/dist/Server/Services/HostService.js +74 -0
  579. package/build/dist/Server/Services/HostService.js.map +1 -1
  580. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +10 -1
  581. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
  582. package/build/dist/Server/Services/IncidentPublicNoteService.js +10 -1
  583. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  584. package/build/dist/Server/Services/IncidentService.js +35 -24
  585. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  586. package/build/dist/Server/Services/Index.js +4 -0
  587. package/build/dist/Server/Services/Index.js.map +1 -1
  588. package/build/dist/Server/Services/MonitorService.js +277 -0
  589. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  590. package/build/dist/Server/Services/MonitorStatusService.js +129 -0
  591. package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
  592. package/build/dist/Server/Services/OpenTelemetryIngestService.js +222 -159
  593. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  594. package/build/dist/Server/Services/ProbeService.js +17 -0
  595. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  596. package/build/dist/Server/Services/ProjectService.js +228 -6
  597. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  598. package/build/dist/Server/Services/PushNotificationService.js +56 -0
  599. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  600. package/build/dist/Server/Services/RumSessionPinService.js +7 -15
  601. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
  602. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +10 -1
  603. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  604. package/build/dist/Server/Services/StatusPageAnnouncementService.js +54 -0
  605. package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
  606. package/build/dist/Server/Services/StatusPageDomainService.js +55 -18
  607. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  608. package/build/dist/Server/Services/StatusPageSubscriberService.js +10 -0
  609. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  610. package/build/dist/Server/Services/TeamMemberService.js +97 -6
  611. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  612. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +1 -0
  613. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  614. package/build/dist/Server/Services/UserService.js +241 -10
  615. package/build/dist/Server/Services/UserService.js.map +1 -1
  616. package/build/dist/Server/Services/UserWebhookService.js +31 -87
  617. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  618. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +65 -0
  619. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  620. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +23 -0
  621. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
  622. package/build/dist/Server/Types/Database/Permissions/BasePermission.js +6 -0
  623. package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
  624. package/build/dist/Server/Types/Database/Permissions/DeletePermission.js +1 -0
  625. package/build/dist/Server/Types/Database/Permissions/DeletePermission.js.map +1 -1
  626. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +2 -0
  627. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  628. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +68 -12
  629. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
  630. package/build/dist/Server/Types/Domain.js +37 -0
  631. package/build/dist/Server/Types/Domain.js.map +1 -1
  632. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +2 -1
  633. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  634. package/build/dist/Server/Types/Workflow/Components/API/Get.js +2 -1
  635. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  636. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +2 -1
  637. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  638. package/build/dist/Server/Types/Workflow/Components/API/Post.js +2 -1
  639. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  640. package/build/dist/Server/Types/Workflow/Components/API/Put.js +2 -1
  641. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  642. package/build/dist/Server/Types/Workflow/Components/API/Utils.js +35 -2
  643. package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
  644. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +15 -11
  645. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
  646. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +2 -3
  647. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
  648. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js +21 -10
  649. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js.map +1 -1
  650. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js +21 -10
  651. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js.map +1 -1
  652. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js +18 -13
  653. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js.map +1 -1
  654. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js +18 -13
  655. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js.map +1 -1
  656. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js +43 -0
  657. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js.map +1 -0
  658. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +116 -0
  659. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -0
  660. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +7 -0
  661. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
  662. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js +24 -13
  663. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js.map +1 -1
  664. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js +27 -13
  665. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js.map +1 -1
  666. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js +14 -6
  667. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js.map +1 -1
  668. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js +42 -0
  669. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js.map +1 -0
  670. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +15 -6
  671. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
  672. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +10 -2
  673. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
  674. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
  675. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +141 -0
  676. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -1
  677. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +2 -2
  678. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  679. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +68 -8
  680. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  681. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +1 -0
  682. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  683. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +1 -0
  684. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  685. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js +97 -0
  686. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js.map +1 -0
  687. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +17 -15
  688. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
  689. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +178 -54
  690. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
  691. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
  692. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +65 -16
  693. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -1
  694. package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js +303 -0
  695. package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js.map +1 -0
  696. package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
  697. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +6 -6
  698. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -1
  699. package/build/dist/Server/Utils/AnalyticsDatabase/InsertDedupContext.js.map +1 -1
  700. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +39 -5
  701. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  702. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +1261 -0
  703. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -0
  704. package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js +47 -0
  705. package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js.map +1 -0
  706. package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js +42 -0
  707. package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js.map +1 -0
  708. package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js +187 -0
  709. package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js.map +1 -0
  710. package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js +493 -0
  711. package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js.map +1 -0
  712. package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js +399 -0
  713. package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js.map +1 -0
  714. package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js +195 -0
  715. package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js.map +1 -0
  716. package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js +149 -0
  717. package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js.map +1 -0
  718. package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js +362 -0
  719. package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js.map +1 -0
  720. package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js +342 -0
  721. package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js.map +1 -0
  722. package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js +186 -0
  723. package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js.map +1 -0
  724. package/build/dist/Server/Utils/DataSource/EgressGuard.js +389 -0
  725. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -0
  726. package/build/dist/Server/Utils/DataSource/HttpFetch.js +116 -0
  727. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -0
  728. package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js +331 -0
  729. package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js.map +1 -0
  730. package/build/dist/Server/Utils/DataSource/SqlResultShaper.js +280 -0
  731. package/build/dist/Server/Utils/DataSource/SqlResultShaper.js.map +1 -0
  732. package/build/dist/Server/Utils/DataSource/Types.js +2 -0
  733. package/build/dist/Server/Utils/DataSource/Types.js.map +1 -0
  734. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +103 -9
  735. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
  736. package/build/dist/Server/Utils/Execute.js +2 -2
  737. package/build/dist/Server/Utils/Execute.js.map +1 -1
  738. package/build/dist/Server/Utils/InProcessMemo.js +113 -0
  739. package/build/dist/Server/Utils/InProcessMemo.js.map +1 -0
  740. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +13 -0
  741. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -1
  742. package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js +406 -0
  743. package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js.map +1 -0
  744. package/build/dist/Server/Utils/LLM/LLMService.js +43 -12
  745. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  746. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -24
  747. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  748. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js +158 -0
  749. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js.map +1 -0
  750. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +50 -30
  751. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  752. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +34 -0
  753. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  754. package/build/dist/Server/Utils/Monitor/MonitorResource.js +46 -0
  755. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  756. package/build/dist/Server/Utils/Response.js +121 -6
  757. package/build/dist/Server/Utils/Response.js.map +1 -1
  758. package/build/dist/Server/Utils/SSRFProtection.js +358 -0
  759. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -0
  760. package/build/dist/Server/Utils/StartServer.js +14 -0
  761. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  762. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +24 -0
  763. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
  764. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +25 -11
  765. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
  766. package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js +32 -0
  767. package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js.map +1 -0
  768. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +92 -5
  769. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
  770. package/build/dist/Server/Utils/Telemetry/Telemetry.js +92 -6
  771. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  772. package/build/dist/Server/Utils/Telemetry.js +93 -6
  773. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  774. package/build/dist/Server/Utils/VM/VMRunner.js +73 -1
  775. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  776. package/build/dist/Server/Utils/VendorAssets.js +121 -0
  777. package/build/dist/Server/Utils/VendorAssets.js.map +1 -0
  778. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +469 -46
  779. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  780. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +23 -1
  781. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  782. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  783. package/build/dist/Types/AI/FixPullRequestCiStatus.js +1 -1
  784. package/build/dist/Types/AI/FixVerificationStatus.js +2 -2
  785. package/build/dist/Types/API/Hostname.js +73 -4
  786. package/build/dist/Types/API/Hostname.js.map +1 -1
  787. package/build/dist/Types/API/URL.js +42 -24
  788. package/build/dist/Types/API/URL.js.map +1 -1
  789. package/build/dist/Types/Analytics/RevenueEvent.js +26 -0
  790. package/build/dist/Types/Analytics/RevenueEvent.js.map +1 -0
  791. package/build/dist/Types/Billing/BalanceAdjustmentType.js +15 -0
  792. package/build/dist/Types/Billing/BalanceAdjustmentType.js.map +1 -0
  793. package/build/dist/Types/Billing/ProjectBalanceType.js +14 -0
  794. package/build/dist/Types/Billing/ProjectBalanceType.js.map +1 -0
  795. package/build/dist/Types/Dashboard/DashboardComponentType.js +27 -0
  796. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  797. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js +2 -0
  798. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js.map +1 -0
  799. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js +2 -0
  800. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js.map +1 -0
  801. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js +2 -0
  802. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js.map +1 -0
  803. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js +16 -0
  804. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js.map +1 -0
  805. package/build/dist/Types/DataSource/DataSourceLimits.js +47 -0
  806. package/build/dist/Types/DataSource/DataSourceLimits.js.map +1 -0
  807. package/build/dist/Types/DataSource/DataSourceQueryConfig.js +10 -0
  808. package/build/dist/Types/DataSource/DataSourceQueryConfig.js.map +1 -0
  809. package/build/dist/Types/DataSource/DataSourceTableResult.js +14 -0
  810. package/build/dist/Types/DataSource/DataSourceTableResult.js.map +1 -0
  811. package/build/dist/Types/DataSource/DataSourceType.js +183 -0
  812. package/build/dist/Types/DataSource/DataSourceType.js.map +1 -0
  813. package/build/dist/Types/Date.js +38 -3
  814. package/build/dist/Types/Date.js.map +1 -1
  815. package/build/dist/Types/Domain.js +22 -0
  816. package/build/dist/Types/Domain.js.map +1 -1
  817. package/build/dist/Types/File/MimeType.js +11 -0
  818. package/build/dist/Types/File/MimeType.js.map +1 -1
  819. package/build/dist/Types/JSONFunctions.js +14 -0
  820. package/build/dist/Types/JSONFunctions.js.map +1 -1
  821. package/build/dist/Types/Password.js +56 -0
  822. package/build/dist/Types/Password.js.map +1 -0
  823. package/build/dist/Types/Permission.js +42 -0
  824. package/build/dist/Types/Permission.js.map +1 -1
  825. package/build/dist/Types/UserAuthenticationStatus.js +2 -0
  826. package/build/dist/Types/UserAuthenticationStatus.js.map +1 -0
  827. package/build/dist/Types/Workflow/Components/BaseModel.js +83 -28
  828. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  829. package/build/dist/UI/Components/ErrorBoundary.js +388 -72
  830. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  831. package/build/dist/UI/Components/GanttChart/ChartContainer.js +4 -3
  832. package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +1 -1
  833. package/build/dist/UI/Components/Icon/Icon.js +10 -4
  834. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  835. package/build/dist/UI/Components/Modal/ConfirmModal.js +3 -1
  836. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  837. package/build/dist/UI/Components/Modal/Modal.js +168 -19
  838. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  839. package/build/dist/UI/Components/Modal/ModalFooter.js +3 -1
  840. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  841. package/build/dist/UI/Components/ModelDelete/ModelDelete.js +11 -6
  842. package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
  843. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +9 -6
  844. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  845. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +7 -1
  846. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  847. package/build/dist/UI/Components/SideOver/SideOver.js +105 -30
  848. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  849. package/build/dist/UI/Components/StatusPage/ResourceGrid.js +119 -0
  850. package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -0
  851. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +354 -0
  852. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -0
  853. package/build/dist/UI/Components/StatusPage/ResourceList.js +203 -0
  854. package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -0
  855. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +1 -6
  856. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
  857. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +3 -8
  858. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  859. package/build/dist/UI/Utils/PageScrollLock.js +52 -0
  860. package/build/dist/UI/Utils/PageScrollLock.js.map +1 -0
  861. package/build/dist/UI/Utils/TestDataSource.js +39 -0
  862. package/build/dist/UI/Utils/TestDataSource.js.map +1 -0
  863. package/build/dist/Utils/Analytics.js +4 -0
  864. package/build/dist/Utils/Analytics.js.map +1 -1
  865. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js +79 -0
  866. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js.map +1 -0
  867. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js +111 -0
  868. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js.map +1 -0
  869. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js +15 -0
  870. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js.map +1 -0
  871. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js +62 -0
  872. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js.map +1 -0
  873. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js +112 -0
  874. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js.map +1 -0
  875. package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
  876. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  877. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +4 -2
  878. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -1
  879. package/build/dist/Utils/Dashboard/VariableInterpolation.js +19 -1
  880. package/build/dist/Utils/Dashboard/VariableInterpolation.js.map +1 -1
  881. package/build/dist/Utils/DataSource/DataSourceQueryText.js +64 -0
  882. package/build/dist/Utils/DataSource/DataSourceQueryText.js.map +1 -0
  883. package/build/dist/Utils/DataSource/DataSourceValueReducer.js +124 -0
  884. package/build/dist/Utils/DataSource/DataSourceValueReducer.js.map +1 -0
  885. package/build/dist/Utils/LegacySerializedArray.js +51 -0
  886. package/build/dist/Utils/LegacySerializedArray.js.map +1 -0
  887. package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js +281 -0
  888. package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js.map +1 -0
  889. package/build/dist/Utils/Monitor/MonitorDependencyRule.js +47 -0
  890. package/build/dist/Utils/Monitor/MonitorDependencyRule.js.map +1 -0
  891. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +8 -6
  892. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -1
  893. package/build/dist/Utils/StatusPage/GroupHierarchyView.js +560 -0
  894. package/build/dist/Utils/StatusPage/GroupHierarchyView.js.map +1 -0
  895. package/build/dist/Utils/StatusPage/ResourceExplorer.js +519 -0
  896. package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -0
  897. package/build/dist/Utils/Telemetry/SavedViewFilters.js +52 -0
  898. package/build/dist/Utils/Telemetry/SavedViewFilters.js.map +1 -0
  899. package/jest.config.json +4 -0
  900. package/package.json +5 -1
  901. package/tsconfig.json +14 -10
@@ -22,6 +22,8 @@ import { DASHBOARD_MASTER_PASSWORD_INVALID_MESSAGE } from "../../Types/Dashboard
22
22
  import NotAuthenticatedException from "../../Types/Exception/NotAuthenticatedException";
23
23
  import ForbiddenException from "../../Types/Exception/ForbiddenException";
24
24
  import JSONFunctions from "../../Types/JSONFunctions";
25
+ import DashboardViewConfig from "../../Types/Dashboard/DashboardViewConfig";
26
+ import PublicDashboardViewConfig from "../Utils/Dashboard/PublicDashboardViewConfig";
25
27
  import TelemetryAttributeService from "../Services/TelemetryAttributeService";
26
28
  import TelemetryType from "../../Types/Telemetry/TelemetryType";
27
29
  import { JSONObject } from "../../Types/JSON";
@@ -68,26 +70,24 @@ import SpanService from "../Services/SpanService";
68
70
  import LogService from "../Services/LogService";
69
71
  import DashboardComponentType from "../../Types/Dashboard/DashboardComponentType";
70
72
  import { DashboardVariableType } from "../../Types/Dashboard/DashboardVariable";
71
- import Includes from "../../Types/BaseDatabase/Includes";
73
+ import PublicDashboardResourceListPolicy, {
74
+ PublicDashboardResourceListPolicyResult,
75
+ } from "../Utils/Dashboard/PublicDashboardResourceListPolicy";
76
+ import { applyIncidentSelfPrivacyFilter } from "../Utils/Incident/IncidentPrivacyFilter";
77
+ import { applyAlertSelfPrivacyFilter } from "../Utils/Alert/AlertPrivacyFilter";
72
78
 
73
79
  /*
74
80
  * Registry of the non-metric widgets a public dashboard may render.
75
81
  *
76
- * Nothing on this endpoint is taken from the client except a narrow set of
77
- * filter values:
78
- *
79
- * - `select` is the FIXED set of columns the corresponding widget displays,
80
- * so an anonymous viewer can only ever read these columns.
81
82
  * - `widgets` lists the dashboard widgets that render this resource, mapped
82
83
  * to the `kind` each one shows (null when the model is not partitioned by
83
84
  * kind). The dashboard must actually contain one of these widgets before
84
85
  * the endpoint will serve the resource at all, and the query is pinned to
85
86
  * the kinds those widgets render. Adding a widget to a public dashboard is
86
87
  * therefore the owner's explicit — and only — opt-in to exposing this data.
87
- * - `allowedQueryKeys` is the set of columns the widget legitimately filters
88
- * on. Every other key in the client-supplied query is dropped, so a public
89
- * viewer cannot turn the endpoint into a generic query API over columns the
90
- * widget never exposes.
88
+ * Query, select, sort and pagination policy are rebuilt from the exact stored
89
+ * widget by PublicDashboardResourceListPolicy. Client copies of those fields
90
+ * are never authoritative on this unauthenticated route.
91
91
  */
92
92
  interface PublicDashboardResourceConfig {
93
93
  modelType: { new (): BaseModel | AnalyticsDataModel };
@@ -95,12 +95,8 @@ interface PublicDashboardResourceConfig {
95
95
  findBy: (findBy: any) => Promise<Array<BaseModel | AnalyticsDataModel>>;
96
96
  };
97
97
  widgets: Partial<Record<DashboardComponentType, string | null>>;
98
- allowedQueryKeys: Array<string>;
99
- select: JSONObject;
100
98
  }
101
99
 
102
- const DEFAULT_DASHBOARD_RESOURCE_LIMIT: number = 100;
103
-
104
100
  const PUBLIC_DASHBOARD_RESOURCES: Record<
105
101
  string,
106
102
  PublicDashboardResourceConfig
@@ -111,20 +107,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
111
107
  widgets: {
112
108
  [DashboardComponentType.IncidentList]: null,
113
109
  },
114
- allowedQueryKeys: [
115
- "currentIncidentState",
116
- "currentIncidentStateId",
117
- "incidentSeverityId",
118
- "monitors",
119
- "labels",
120
- ],
121
- select: {
122
- _id: true,
123
- title: true,
124
- createdAt: true,
125
- currentIncidentState: { name: true, color: true },
126
- incidentSeverity: { name: true, color: true },
127
- },
128
110
  },
129
111
  alert: {
130
112
  modelType: Alert,
@@ -132,20 +114,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
132
114
  widgets: {
133
115
  [DashboardComponentType.AlertList]: null,
134
116
  },
135
- allowedQueryKeys: [
136
- "currentAlertState",
137
- "currentAlertStateId",
138
- "alertSeverityId",
139
- "monitorId",
140
- "labels",
141
- ],
142
- select: {
143
- _id: true,
144
- title: true,
145
- createdAt: true,
146
- currentAlertState: { name: true, color: true },
147
- alertSeverity: { name: true, color: true },
148
- },
149
117
  },
150
118
  monitor: {
151
119
  modelType: Monitor,
@@ -153,18 +121,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
153
121
  widgets: {
154
122
  [DashboardComponentType.MonitorList]: null,
155
123
  },
156
- allowedQueryKeys: [
157
- "currentMonitorStatus",
158
- "currentMonitorStatusId",
159
- "monitorType",
160
- "labels",
161
- ],
162
- select: {
163
- _id: true,
164
- name: true,
165
- monitorType: true,
166
- currentMonitorStatus: { name: true, color: true },
167
- },
168
124
  },
169
125
  "network-site": {
170
126
  modelType: NetworkSite,
@@ -172,36 +128,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
172
128
  widgets: {
173
129
  [DashboardComponentType.NetworkMap]: null,
174
130
  },
175
- /*
176
- * The map filters by site type and by whether the rolled-up status is
177
- * operational — nothing else. Notably NOT `parentSiteId` or
178
- * `materializedPath`: the widget draws a flat set of pins rather than
179
- * walking a hierarchy, so exposing the tree shape here would hand an
180
- * anonymous viewer a structure the map never shows them.
181
- */
182
- allowedQueryKeys: [
183
- "networkSiteTypeId",
184
- "currentMonitorStatus",
185
- "currentMonitorStatusId",
186
- ],
187
- select: {
188
- _id: true,
189
- name: true,
190
- /*
191
- * The type NAME comes from the networkSiteType relation. NetworkSite
192
- * .siteType is the deprecated pre-lookup-table string and is dropped
193
- * in a follow-up PR, so it must not be read from new code.
194
- */
195
- networkSiteType: { name: true },
196
- latitude: true,
197
- longitude: true,
198
- currentMonitorStatus: {
199
- name: true,
200
- color: true,
201
- priority: true,
202
- isOperationalState: true,
203
- },
204
- },
205
131
  },
206
132
  host: {
207
133
  modelType: Host,
@@ -209,23 +135,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
209
135
  widgets: {
210
136
  [DashboardComponentType.HostList]: null,
211
137
  },
212
- allowedQueryKeys: [
213
- "name",
214
- "hostIdentifier",
215
- "otelCollectorStatus",
216
- "osType",
217
- ],
218
- select: {
219
- _id: true,
220
- name: true,
221
- hostIdentifier: true,
222
- otelCollectorStatus: true,
223
- osType: true,
224
- osVersion: true,
225
- cpuCores: true,
226
- totalMemoryBytes: true,
227
- lastSeenAt: true,
228
- },
229
138
  },
230
139
  "kubernetes-resource": {
231
140
  modelType: KubernetesResource,
@@ -240,33 +149,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
240
149
  [DashboardComponentType.KubernetesJobList]: "Job",
241
150
  [DashboardComponentType.KubernetesCronJobList]: "CronJob",
242
151
  },
243
- allowedQueryKeys: [
244
- "kubernetesClusterId",
245
- "namespaceKey",
246
- "name",
247
- "phase",
248
- "isReady",
249
- ],
250
- select: {
251
- _id: true,
252
- name: true,
253
- namespaceKey: true,
254
- kind: true,
255
- phase: true,
256
- isReady: true,
257
- hasMemoryPressure: true,
258
- hasDiskPressure: true,
259
- hasPidPressure: true,
260
- containerCount: true,
261
- latestCpuPercent: true,
262
- latestMemoryBytes: true,
263
- controllerDeploymentName: true,
264
- controllerCronJobName: true,
265
- resourceCreationTimestamp: true,
266
- lastSeenAt: true,
267
- kubernetesClusterId: true,
268
- kubernetesCluster: { name: true },
269
- },
270
152
  },
271
153
  "docker-host": {
272
154
  modelType: DockerHost,
@@ -274,17 +156,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
274
156
  widgets: {
275
157
  [DashboardComponentType.DockerHostList]: null,
276
158
  },
277
- allowedQueryKeys: ["name", "otelCollectorStatus"],
278
- select: {
279
- _id: true,
280
- name: true,
281
- otelCollectorStatus: true,
282
- containersRunning: true,
283
- containersStopped: true,
284
- containersPaused: true,
285
- osType: true,
286
- osVersion: true,
287
- },
288
159
  },
289
160
  "docker-container": {
290
161
  modelType: DockerResource,
@@ -292,17 +163,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
292
163
  widgets: {
293
164
  [DashboardComponentType.DockerContainerList]: "Container",
294
165
  },
295
- allowedQueryKeys: ["dockerHostId", "name", "imageName"],
296
- select: {
297
- _id: true,
298
- name: true,
299
- imageName: true,
300
- state: true,
301
- latestCpuPercent: true,
302
- latestMemoryBytes: true,
303
- dockerHostId: true,
304
- dockerHost: { name: true },
305
- },
306
166
  },
307
167
  "docker-image": {
308
168
  modelType: DockerResource,
@@ -310,14 +170,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
310
170
  widgets: {
311
171
  [DashboardComponentType.DockerImageList]: "Image",
312
172
  },
313
- allowedQueryKeys: ["dockerHostId", "name"],
314
- select: {
315
- _id: true,
316
- name: true,
317
- containerId: true,
318
- dockerHostId: true,
319
- dockerHost: { name: true },
320
- },
321
173
  },
322
174
  "docker-network": {
323
175
  modelType: DockerResource,
@@ -325,14 +177,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
325
177
  widgets: {
326
178
  [DashboardComponentType.DockerNetworkList]: "Network",
327
179
  },
328
- allowedQueryKeys: ["dockerHostId"],
329
- select: {
330
- _id: true,
331
- name: true,
332
- state: true,
333
- dockerHostId: true,
334
- dockerHost: { name: true },
335
- },
336
180
  },
337
181
  "docker-volume": {
338
182
  modelType: DockerResource,
@@ -340,14 +184,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
340
184
  widgets: {
341
185
  [DashboardComponentType.DockerVolumeList]: "Volume",
342
186
  },
343
- allowedQueryKeys: ["dockerHostId"],
344
- select: {
345
- _id: true,
346
- name: true,
347
- state: true,
348
- dockerHostId: true,
349
- dockerHost: { name: true },
350
- },
351
187
  },
352
188
  "podman-host": {
353
189
  modelType: PodmanHost,
@@ -355,17 +191,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
355
191
  widgets: {
356
192
  [DashboardComponentType.PodmanHostList]: null,
357
193
  },
358
- allowedQueryKeys: ["name", "otelCollectorStatus"],
359
- select: {
360
- _id: true,
361
- name: true,
362
- otelCollectorStatus: true,
363
- containersRunning: true,
364
- containersStopped: true,
365
- containersPaused: true,
366
- osType: true,
367
- osVersion: true,
368
- },
369
194
  },
370
195
  "podman-container": {
371
196
  modelType: PodmanResource,
@@ -373,17 +198,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
373
198
  widgets: {
374
199
  [DashboardComponentType.PodmanContainerList]: "Container",
375
200
  },
376
- allowedQueryKeys: ["podmanHostId", "name", "imageName"],
377
- select: {
378
- _id: true,
379
- name: true,
380
- imageName: true,
381
- state: true,
382
- latestCpuPercent: true,
383
- latestMemoryBytes: true,
384
- podmanHostId: true,
385
- podmanHost: { name: true },
386
- },
387
201
  },
388
202
  "podman-image": {
389
203
  modelType: PodmanResource,
@@ -391,14 +205,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
391
205
  widgets: {
392
206
  [DashboardComponentType.PodmanImageList]: "Image",
393
207
  },
394
- allowedQueryKeys: ["podmanHostId", "name"],
395
- select: {
396
- _id: true,
397
- name: true,
398
- containerId: true,
399
- podmanHostId: true,
400
- podmanHost: { name: true },
401
- },
402
208
  },
403
209
  "podman-network": {
404
210
  modelType: PodmanResource,
@@ -406,14 +212,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
406
212
  widgets: {
407
213
  [DashboardComponentType.PodmanNetworkList]: "Network",
408
214
  },
409
- allowedQueryKeys: ["podmanHostId"],
410
- select: {
411
- _id: true,
412
- name: true,
413
- state: true,
414
- podmanHostId: true,
415
- podmanHost: { name: true },
416
- },
417
215
  },
418
216
  "podman-volume": {
419
217
  modelType: PodmanResource,
@@ -421,14 +219,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
421
219
  widgets: {
422
220
  [DashboardComponentType.PodmanVolumeList]: "Volume",
423
221
  },
424
- allowedQueryKeys: ["podmanHostId"],
425
- select: {
426
- _id: true,
427
- name: true,
428
- state: true,
429
- podmanHostId: true,
430
- podmanHost: { name: true },
431
- },
432
222
  },
433
223
  "proxmox-resource": {
434
224
  modelType: ProxmoxResource,
@@ -437,23 +227,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
437
227
  [DashboardComponentType.ProxmoxNodeList]: "Node",
438
228
  [DashboardComponentType.ProxmoxGuestList]: "Guest",
439
229
  },
440
- allowedQueryKeys: ["proxmoxClusterId", "guestType", "isUp", "name"],
441
- select: {
442
- _id: true,
443
- name: true,
444
- externalId: true,
445
- kind: true,
446
- vmid: true,
447
- guestType: true,
448
- parentNodeName: true,
449
- isUp: true,
450
- haState: true,
451
- latestCpuPercent: true,
452
- latestMemoryPercent: true,
453
- lastSeenAt: true,
454
- proxmoxClusterId: true,
455
- proxmoxCluster: { name: true },
456
- },
457
230
  },
458
231
  "ceph-resource": {
459
232
  modelType: CephResource,
@@ -462,25 +235,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
462
235
  [DashboardComponentType.CephOsdList]: "Osd",
463
236
  [DashboardComponentType.CephPoolList]: "Pool",
464
237
  },
465
- allowedQueryKeys: ["cephClusterId", "isUp", "isIn", "externalId"],
466
- select: {
467
- _id: true,
468
- name: true,
469
- externalId: true,
470
- kind: true,
471
- hostname: true,
472
- deviceClass: true,
473
- isUp: true,
474
- isIn: true,
475
- statBytes: true,
476
- statBytesUsed: true,
477
- storedBytes: true,
478
- maxAvailBytes: true,
479
- objects: true,
480
- lastSeenAt: true,
481
- cephClusterId: true,
482
- cephCluster: { name: true },
483
- },
484
238
  },
485
239
  "docker-swarm-resource": {
486
240
  modelType: DockerSwarmResource,
@@ -489,30 +243,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
489
243
  [DashboardComponentType.DockerSwarmNodeList]: "Node",
490
244
  [DashboardComponentType.DockerSwarmServiceList]: "Service",
491
245
  },
492
- allowedQueryKeys: [
493
- "dockerSwarmClusterId",
494
- "role",
495
- "serviceMode",
496
- "isReady",
497
- ],
498
- select: {
499
- _id: true,
500
- name: true,
501
- externalId: true,
502
- kind: true,
503
- role: true,
504
- state: true,
505
- serviceMode: true,
506
- desiredReplicas: true,
507
- runningReplicas: true,
508
- image: true,
509
- isReady: true,
510
- latestCpuPercent: true,
511
- latestMemoryPercent: true,
512
- lastSeenAt: true,
513
- dockerSwarmClusterId: true,
514
- dockerSwarmCluster: { name: true },
515
- },
516
246
  },
517
247
  span: {
518
248
  modelType: Span,
@@ -520,17 +250,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
520
250
  widgets: {
521
251
  [DashboardComponentType.TraceList]: null,
522
252
  },
523
- allowedQueryKeys: ["startTime", "statusCode"],
524
- select: {
525
- startTime: true,
526
- name: true,
527
- statusCode: true,
528
- durationUnixNano: true,
529
- traceId: true,
530
- spanId: true,
531
- kind: true,
532
- primaryEntityId: true,
533
- },
534
253
  },
535
254
  log: {
536
255
  modelType: Log,
@@ -538,16 +257,6 @@ const PUBLIC_DASHBOARD_RESOURCES: Record<
538
257
  widgets: {
539
258
  [DashboardComponentType.LogStream]: null,
540
259
  },
541
- allowedQueryKeys: ["time", "severityText", "body", "attributes"],
542
- select: {
543
- time: true,
544
- severityText: true,
545
- body: true,
546
- primaryEntityId: true,
547
- traceId: true,
548
- spanId: true,
549
- attributes: true,
550
- },
551
260
  },
552
261
  };
553
262
 
@@ -763,24 +472,25 @@ export default class DashboardAPI extends BaseAPI<
763
472
  /*
764
473
  * Everything below is derived from columns the public /metadata and
765
474
  * /view-config endpoints already serve to anonymous viewers — the
766
- * overview only reshapes them into a single GET-able document.
475
+ * overview only reshapes them into a single GET-able document, and
476
+ * applies the same external-Data-Source strip /view-config does.
767
477
  */
478
+ const publicViewConfig: DashboardViewConfig | null =
479
+ PublicDashboardViewConfig.sanitize(dashboard.dashboardViewConfig);
480
+
768
481
  return Response.sendJsonObjectResponse(req, res, {
769
482
  _id: dashboard._id?.toString() || "",
770
483
  name: dashboard.name || "Dashboard",
771
484
  description: dashboard.description || "",
772
485
  pageTitle: dashboard.pageTitle || "",
773
486
  pageDescription: dashboard.pageDescription || "",
774
- components: DashboardAPI.buildPublicComponentSummaries(
775
- dashboard.dashboardViewConfig,
776
- ),
487
+ components:
488
+ DashboardAPI.buildPublicComponentSummaries(publicViewConfig),
777
489
  metricsUsed: Array.from(
778
- DashboardAPI.collectDashboardMetricNames(
779
- dashboard.dashboardViewConfig,
780
- ),
490
+ DashboardAPI.collectDashboardMetricNames(publicViewConfig),
781
491
  ).sort(),
782
- dashboardViewConfig: dashboard.dashboardViewConfig
783
- ? JSONFunctions.serialize(dashboard.dashboardViewConfig as any)
492
+ dashboardViewConfig: publicViewConfig
493
+ ? JSONFunctions.serialize(publicViewConfig as any)
784
494
  : null,
785
495
  });
786
496
  } catch (err) {
@@ -966,6 +676,9 @@ export default class DashboardAPI extends BaseAPI<
966
676
  throw new NotFoundException("Dashboard not found");
967
677
  }
968
678
 
679
+ const publicViewConfig: DashboardViewConfig | null =
680
+ PublicDashboardViewConfig.sanitize(dashboard.dashboardViewConfig);
681
+
969
682
  return Response.sendJsonObjectResponse(req, res, {
970
683
  _id: dashboard._id?.toString() || "",
971
684
  name: dashboard.name || "Dashboard",
@@ -975,8 +688,19 @@ export default class DashboardAPI extends BaseAPI<
975
688
  logoFile: DashboardAPI.getFileAsBase64JSONObject(
976
689
  dashboard.logoFile,
977
690
  ),
978
- dashboardViewConfig: dashboard.dashboardViewConfig
979
- ? JSONFunctions.serialize(dashboard.dashboardViewConfig as any)
691
+ /*
692
+ * External Data Source widgets are stripped: they cannot render
693
+ * for an anonymous viewer, and their config IS the query — raw
694
+ * SQL / PromQL naming internal tables, jobs, and instances.
695
+ *
696
+ * The null stays null. JSONFunctions.serialize(null) returns
697
+ * `{}`, and the public page falls back to a default config only
698
+ * on a FALSY value — an empty object is truthy, so it would sail
699
+ * through and the canvas would read `.components.length` off
700
+ * undefined.
701
+ */
702
+ dashboardViewConfig: publicViewConfig
703
+ ? JSONFunctions.serialize(publicViewConfig as any)
980
704
  : null,
981
705
  });
982
706
  } catch (err) {
@@ -1494,8 +1218,8 @@ export default class DashboardAPI extends BaseAPI<
1494
1218
  * Public resource lists for non-metric dashboard widgets (incident /
1495
1219
  * alert / monitor / trace / log / kubernetes / docker / host lists).
1496
1220
  *
1497
- * Each widget renders a fixed set of columns; the server pins the select
1498
- * to exactly those columns (see PUBLIC_DASHBOARD_RESOURCES) and forces the
1221
+ * Each widget renders a fixed set of columns; the server-owned widget
1222
+ * policy pins the select to exactly those columns and forces the
1499
1223
  * project scope to the dashboard's project, so a public viewer can only
1500
1224
  * read the data the widget was built to show, for this dashboard's
1501
1225
  * project. Authorization reuses DashboardService.hasReadAccess.
@@ -1926,119 +1650,130 @@ export default class DashboardAPI extends BaseAPI<
1926
1650
  }
1927
1651
 
1928
1652
  /*
1929
- * Walk a stored dashboard view config and collect every widget type it
1930
- * renders. Used to build an allowlist for the public resource-list
1931
- * endpoint so an anonymous viewer can only read the resources this
1932
- * dashboard was actually built to show — a dashboard with a monitor list
1933
- * on it must not double as a project-wide log or incident reader.
1653
+ * Read only the real, top-level dashboard components. Recursively scanning
1654
+ * arbitrary widget arguments would let a nested object carrying a
1655
+ * `componentType` masquerade as a widget and become an authorization input.
1934
1656
  */
1935
- private static collectDashboardComponentTypes(
1657
+ private static collectDashboardWidgets(
1936
1658
  dashboardViewConfig: unknown,
1937
- ): Set<string> {
1938
- const componentTypes: Set<string> = new Set<string>();
1939
-
1940
- const walk: (node: unknown) => void = (node: unknown): void => {
1941
- if (!node || typeof node !== "object") {
1942
- return;
1943
- }
1944
-
1945
- if (Array.isArray(node)) {
1946
- for (const item of node) {
1947
- walk(item);
1948
- }
1949
- return;
1950
- }
1951
-
1952
- const obj: Record<string, unknown> = node as Record<string, unknown>;
1953
-
1954
- const componentType: unknown = obj["componentType"];
1955
- if (typeof componentType === "string" && componentType.length > 0) {
1956
- componentTypes.add(componentType);
1957
- }
1659
+ ): Array<JSONObject> {
1660
+ if (
1661
+ !dashboardViewConfig ||
1662
+ typeof dashboardViewConfig !== "object" ||
1663
+ Array.isArray(dashboardViewConfig)
1664
+ ) {
1665
+ return [];
1666
+ }
1958
1667
 
1959
- for (const key of Object.keys(obj)) {
1960
- walk(obj[key]);
1961
- }
1962
- };
1668
+ const components: unknown = (
1669
+ dashboardViewConfig as Record<string, unknown>
1670
+ )["components"];
1963
1671
 
1964
- walk(dashboardViewConfig);
1672
+ if (!Array.isArray(components)) {
1673
+ return [];
1674
+ }
1965
1675
 
1966
- return componentTypes;
1676
+ return components.filter((component: unknown): component is JSONObject => {
1677
+ return Boolean(
1678
+ component && typeof component === "object" && !Array.isArray(component),
1679
+ );
1680
+ });
1967
1681
  }
1968
1682
 
1969
- /*
1970
- * Reduce a client-supplied query to the filter keys the widget is allowed
1971
- * to narrow by. Anything else the client sends — a foreign projectId, a
1972
- * filter on a column the widget never renders, an operator on a secret
1973
- * column used as a blind oracle — is dropped rather than merged.
1974
- */
1975
- private static sanitizePublicResourceQuery(data: {
1976
- query: unknown;
1977
- allowedQueryKeys: Array<string>;
1978
- }): JSONObject {
1979
- const { query, allowedQueryKeys } = data;
1683
+ private static readDashboardWidgetComponentId(
1684
+ widget: JSONObject,
1685
+ ): string | null {
1686
+ const componentId: unknown = widget["componentId"];
1980
1687
 
1981
- const sanitized: Record<string, unknown> = {};
1688
+ if (componentId instanceof ObjectID) {
1689
+ return componentId.toString();
1690
+ }
1982
1691
 
1983
- if (!query || typeof query !== "object" || Array.isArray(query)) {
1984
- return sanitized as JSONObject;
1692
+ if (typeof componentId === "string" && componentId.length > 0) {
1693
+ return componentId;
1985
1694
  }
1986
1695
 
1987
- const queryObject: Record<string, unknown> = query as Record<
1988
- string,
1989
- unknown
1990
- >;
1991
-
1992
- for (const key of allowedQueryKeys) {
1993
- if (
1994
- Object.prototype.hasOwnProperty.call(queryObject, key) &&
1995
- queryObject[key] !== undefined
1996
- ) {
1997
- sanitized[key] = queryObject[key];
1696
+ if (
1697
+ componentId &&
1698
+ typeof componentId === "object" &&
1699
+ !Array.isArray(componentId)
1700
+ ) {
1701
+ const value: unknown = (componentId as Record<string, unknown>)["value"];
1702
+
1703
+ if (typeof value === "string" && value.length > 0) {
1704
+ return value;
1998
1705
  }
1999
1706
  }
2000
1707
 
2001
- return sanitized as JSONObject;
1708
+ return null;
2002
1709
  }
2003
1710
 
2004
1711
  /*
2005
- * Reduce a client-supplied sort to the columns the widget already renders
2006
- * (the registry's fixed select). Sorting by a column the viewer cannot see
2007
- * would otherwise order rows by a hidden value and leak it.
1712
+ * Select the exact stored widget whose policy will be executed. A legacy
1713
+ * caller may omit componentId only when there is exactly one matching
1714
+ * widget, so two differently-filtered widgets are never conflated.
2008
1715
  */
2009
- private static sanitizePublicResourceSort(data: {
2010
- sort: unknown;
2011
- select: JSONObject;
1716
+ private static selectPublicResourceWidget(data: {
1717
+ dashboardViewConfig: unknown;
1718
+ config: PublicDashboardResourceConfig;
1719
+ requestedComponentId: unknown;
2012
1720
  }): JSONObject {
2013
- const { sort, select } = data;
1721
+ const matchingWidgets: Array<JSONObject> =
1722
+ DashboardAPI.collectDashboardWidgets(data.dashboardViewConfig).filter(
1723
+ (widget: JSONObject): boolean => {
1724
+ const componentType: unknown = widget["componentType"];
1725
+
1726
+ return (
1727
+ typeof componentType === "string" &&
1728
+ Object.prototype.hasOwnProperty.call(
1729
+ data.config.widgets,
1730
+ componentType,
1731
+ )
1732
+ );
1733
+ },
1734
+ );
1735
+
1736
+ if (matchingWidgets.length === 0) {
1737
+ throw new BadDataException(
1738
+ "This resource is not part of this dashboard.",
1739
+ );
1740
+ }
2014
1741
 
2015
- const sanitized: JSONObject = {};
1742
+ if (
1743
+ data.requestedComponentId === undefined ||
1744
+ data.requestedComponentId === null
1745
+ ) {
1746
+ if (matchingWidgets.length === 1) {
1747
+ return matchingWidgets[0] as JSONObject;
1748
+ }
2016
1749
 
2017
- if (!sort || typeof sort !== "object" || Array.isArray(sort)) {
2018
- return sanitized;
1750
+ throw new BadDataException(
1751
+ "A componentId is required to read this resource from this dashboard.",
1752
+ );
2019
1753
  }
2020
1754
 
2021
- const sortObject: Record<string, unknown> = sort as Record<string, unknown>;
1755
+ if (typeof data.requestedComponentId !== "string") {
1756
+ throw new BadDataException("componentId must be a string UUID.");
1757
+ }
2022
1758
 
2023
- for (const key of Object.keys(sortObject)) {
2024
- // Only scalar columns of the fixed select are sortable.
2025
- if (select[key] !== true) {
2026
- continue;
2027
- }
1759
+ ObjectID.validateUUID(data.requestedComponentId);
2028
1760
 
2029
- const order: unknown = sortObject[key];
1761
+ const selectedWidget: JSONObject | undefined = matchingWidgets.find(
1762
+ (widget: JSONObject): boolean => {
1763
+ return (
1764
+ DashboardAPI.readDashboardWidgetComponentId(widget) ===
1765
+ data.requestedComponentId
1766
+ );
1767
+ },
1768
+ );
2030
1769
 
2031
- if (
2032
- typeof order === "string" &&
2033
- order.toUpperCase() === SortOrder.Descending
2034
- ) {
2035
- sanitized[key] = SortOrder.Descending;
2036
- } else {
2037
- sanitized[key] = SortOrder.Ascending;
2038
- }
1770
+ if (!selectedWidget) {
1771
+ throw new BadDataException(
1772
+ "This resource is not part of this dashboard.",
1773
+ );
2039
1774
  }
2040
1775
 
2041
- return sanitized;
1776
+ return selectedWidget;
2042
1777
  }
2043
1778
 
2044
1779
  /*
@@ -2087,117 +1822,66 @@ export default class DashboardAPI extends BaseAPI<
2087
1822
  throw new NotFoundException("Dashboard not found");
2088
1823
  }
2089
1824
 
2090
- /*
2091
- * Security: the dashboard must actually contain a widget that renders
2092
- * this resource. Without this check, knowing any public dashboard ID
2093
- * would be enough to read every resource type in its project — the
2094
- * dashboard's own widgets are the owner's opt-in, so they are the
2095
- * allowlist.
2096
- */
2097
- const dashboardComponentTypes: Set<string> =
2098
- DashboardAPI.collectDashboardComponentTypes(
2099
- dashboard.dashboardViewConfig,
2100
- );
2101
-
2102
- const presentWidgets: Array<string> = Object.keys(config.widgets).filter(
2103
- (componentType: string) => {
2104
- return dashboardComponentTypes.has(componentType);
2105
- },
2106
- );
2107
-
2108
- if (presentWidgets.length === 0) {
2109
- throw new BadDataException(
2110
- "This resource is not part of this dashboard.",
2111
- );
2112
- }
1825
+ const widget: JSONObject = DashboardAPI.selectPublicResourceWidget({
1826
+ dashboardViewConfig: dashboard.dashboardViewConfig,
1827
+ config,
1828
+ requestedComponentId: req.body ? req.body["componentId"] : undefined,
1829
+ });
2113
1830
 
2114
- const clientQuery: JSONObject =
1831
+ const requestedQuery: JSONObject =
2115
1832
  req.body && req.body["query"]
2116
1833
  ? (JSONFunctions.deserialize(
2117
1834
  req.body["query"] as JSONObject,
2118
1835
  ) as JSONObject)
2119
1836
  : {};
2120
1837
 
2121
- const query: JSONObject = DashboardAPI.sanitizePublicResourceQuery({
2122
- query: clientQuery,
2123
- allowedQueryKeys: config.allowedQueryKeys,
2124
- });
2125
-
2126
- /*
2127
- * Security: pin to the dashboard's project; never trust a client-supplied
2128
- * projectId on a public, unauthenticated endpoint.
2129
- */
2130
- (query as Record<string, unknown>)["projectId"] = dashboard.projectId;
2131
-
2132
- /*
2133
- * Models that pack several resource kinds into one table (Kubernetes,
2134
- * Docker, Podman, Proxmox, Ceph, Swarm) are constrained to the kinds the
2135
- * dashboard's widgets render, so a "volumes" widget cannot be used to
2136
- * list containers. A widget may pick one of those kinds; anything else is
2137
- * rejected, and a request that names no kind gets all of them.
2138
- */
2139
- const allowedKinds: Array<string> = presentWidgets
2140
- .map((componentType: string) => {
2141
- return config.widgets[componentType as DashboardComponentType];
2142
- })
2143
- .filter((kind: string | null | undefined): kind is string => {
2144
- return Boolean(kind);
1838
+ const policy: PublicDashboardResourceListPolicyResult =
1839
+ PublicDashboardResourceListPolicy.build({
1840
+ widget,
1841
+ dashboardViewConfig: dashboard.dashboardViewConfig,
1842
+ requestedVariables: req.body ? req.body["variables"] : undefined,
1843
+ requestedQuery,
2145
1844
  });
2146
1845
 
2147
- if (allowedKinds.length > 0) {
2148
- const requestedKind: unknown = (clientQuery as Record<string, unknown>)[
2149
- "kind"
2150
- ];
2151
-
2152
- if (requestedKind !== undefined && requestedKind !== null) {
2153
- if (
2154
- typeof requestedKind !== "string" ||
2155
- !allowedKinds.includes(requestedKind)
2156
- ) {
2157
- throw new BadDataException(
2158
- "This resource is not part of this dashboard.",
2159
- );
2160
- }
1846
+ const requestedResourceType: string = req.params["resourceType"] as string;
2161
1847
 
2162
- (query as Record<string, unknown>)["kind"] = requestedKind;
2163
- } else if (allowedKinds.length === 1) {
2164
- (query as Record<string, unknown>)["kind"] = allowedKinds[0];
2165
- } else {
2166
- (query as Record<string, unknown>)["kind"] = new Includes(allowedKinds);
2167
- }
1848
+ if (policy.resourceType !== requestedResourceType) {
1849
+ throw new BadDataException(
1850
+ "This resource is not part of this dashboard.",
1851
+ );
2168
1852
  }
2169
1853
 
2170
- const sort: JSONObject = DashboardAPI.sanitizePublicResourceSort({
2171
- sort:
2172
- req.body && req.body["sort"]
2173
- ? JSONFunctions.deserialize(req.body["sort"] as JSONObject)
2174
- : {},
2175
- select: config.select,
2176
- });
1854
+ let query: JSONObject = {
1855
+ ...policy.query,
1856
+ };
2177
1857
 
2178
- const requestedLimit: number = req.query["limit"]
2179
- ? parseInt(req.query["limit"] as string, 10)
2180
- : DEFAULT_DASHBOARD_RESOURCE_LIMIT;
2181
- const limit: number = Math.min(
2182
- Number.isFinite(requestedLimit) && requestedLimit > 0
2183
- ? requestedLimit
2184
- : DEFAULT_DASHBOARD_RESOURCE_LIMIT,
2185
- LIMIT_PER_PROJECT,
2186
- );
1858
+ /*
1859
+ * IncidentService and AlertService normally apply privacy in their
1860
+ * onBeforeFind hooks. The root read below intentionally bypasses those
1861
+ * hooks' user context, so apply the anonymous form explicitly first:
1862
+ * public dashboards may show public rows, never private tenant rows.
1863
+ */
1864
+ if (requestedResourceType === "incident") {
1865
+ query = applyIncidentSelfPrivacyFilter(query, {});
1866
+ } else if (requestedResourceType === "alert") {
1867
+ query = applyAlertSelfPrivacyFilter(query, {});
1868
+ }
2187
1869
 
2188
- const requestedSkip: number = req.query["skip"]
2189
- ? parseInt(req.query["skip"] as string, 10)
2190
- : 0;
2191
- const skip: number =
2192
- Number.isFinite(requestedSkip) && requestedSkip > 0 ? requestedSkip : 0;
1870
+ /*
1871
+ * Project scope is the final query invariant. Neither the request nor a
1872
+ * future policy builder may redirect this root read to another project.
1873
+ * Resource kind, where applicable, comes solely from the selected
1874
+ * widget's policy query.
1875
+ */
1876
+ query["projectId"] = dashboard.projectId;
2193
1877
 
2194
1878
  const list: Array<BaseModel | AnalyticsDataModel> =
2195
1879
  await config.service.findBy({
2196
1880
  query: query,
2197
- select: config.select,
2198
- sort: sort,
2199
- limit: limit,
2200
- skip: skip,
1881
+ select: policy.select,
1882
+ sort: policy.sort,
1883
+ limit: policy.limit,
1884
+ skip: 0,
2201
1885
  props: {
2202
1886
  isRoot: true,
2203
1887
  },