@oneuptime/common 12.0.3 → 12.0.5

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 (516) hide show
  1. package/Models/DatabaseModels/AIRun.ts +38 -1
  2. package/Models/DatabaseModels/AlertFeed.ts +30 -0
  3. package/Models/DatabaseModels/CephCluster.ts +14 -0
  4. package/Models/DatabaseModels/CodeRepository.ts +14 -6
  5. package/Models/DatabaseModels/Dashboard.ts +28 -0
  6. package/Models/DatabaseModels/DockerHost.ts +14 -0
  7. package/Models/DatabaseModels/GlobalOidcProject.ts +18 -0
  8. package/Models/DatabaseModels/GlobalSsoProject.ts +18 -0
  9. package/Models/DatabaseModels/Incident.ts +2 -0
  10. package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
  11. package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
  12. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  13. package/Models/DatabaseModels/IncidentFeed.ts +30 -0
  14. package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
  15. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  16. package/Models/DatabaseModels/IoTFleet.ts +14 -0
  17. package/Models/DatabaseModels/KubernetesCluster.ts +14 -0
  18. package/Models/DatabaseModels/LogSavedView.ts +33 -0
  19. package/Models/DatabaseModels/NetworkDevice.ts +14 -0
  20. package/Models/DatabaseModels/NetworkInterface.ts +18 -0
  21. package/Models/DatabaseModels/Project.ts +247 -11
  22. package/Models/DatabaseModels/ProxmoxCluster.ts +14 -0
  23. package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
  24. package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
  25. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  26. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +4 -4
  27. package/Models/DatabaseModels/Service.ts +30 -0
  28. package/Models/DatabaseModels/StatusPage.ts +28 -0
  29. package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
  30. package/Models/DatabaseModels/StatusPagePrivateUser.ts +30 -0
  31. package/Models/DatabaseModels/User.ts +30 -0
  32. package/Server/API/AIAgentDataAPI.ts +75 -55
  33. package/Server/API/AIInvestigationAPI.ts +175 -17
  34. package/Server/API/DashboardAPI.ts +429 -22
  35. package/Server/API/GitHubAPI.ts +119 -283
  36. package/Server/API/StatusPageAPI.ts +38 -19
  37. package/Server/API/UserAPI.ts +263 -1
  38. package/Server/EnvironmentConfig.ts +23 -3
  39. package/Server/Infrastructure/ClickhouseConfig.ts +15 -1
  40. package/Server/Infrastructure/ClickhouseDatabase.ts +1 -1
  41. package/Server/Infrastructure/GlobalCache.ts +37 -0
  42. package/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts +21 -0
  43. package/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts +68 -0
  44. package/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.ts +27 -0
  45. package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +100 -0
  46. package/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.ts +89 -0
  47. package/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.ts +27 -0
  48. package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +214 -0
  49. package/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.ts +69 -0
  50. package/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.ts +40 -0
  51. package/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.ts +26 -0
  52. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
  53. package/Server/Services/AIRunService.ts +78 -10
  54. package/Server/Services/AIService.ts +94 -22
  55. package/Server/Services/AlertFeedService.ts +5 -0
  56. package/Server/Services/AnalyticsDatabaseService.ts +101 -1
  57. package/Server/Services/CodeRepositoryService.ts +105 -2
  58. package/Server/Services/DatabaseService.ts +227 -3
  59. package/Server/Services/IncidentFeedService.ts +5 -0
  60. package/Server/Services/LlmLogService.ts +46 -2
  61. package/Server/Services/OpenTelemetryIngestService.ts +230 -26
  62. package/Server/Services/UserService.ts +184 -0
  63. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +6 -0
  64. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +4 -0
  65. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +8 -5
  66. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +90 -16
  67. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +2 -0
  68. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +2 -0
  69. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +223 -22
  70. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +25 -24
  71. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +182 -71
  72. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +252 -43
  73. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +25 -24
  74. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +47 -13
  75. package/Server/Utils/AI/SRE/InvestigationGrader.ts +9 -5
  76. package/Server/Utils/AI/SRE/InvestigationQueue.ts +141 -24
  77. package/Server/Utils/AI/SRE/InvestigationSubjectLock.ts +66 -0
  78. package/Server/Utils/AI/SRE/PostedRootCause.ts +94 -3
  79. package/Server/Utils/AI/SRE/README.md +1 -1
  80. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +132 -10
  81. package/Server/Utils/AI/Toolbox/CodeTools.ts +45 -4
  82. package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +24 -0
  83. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -0
  84. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +157 -4
  85. package/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.ts +130 -0
  86. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +29 -0
  87. package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +56 -0
  88. package/Server/Utils/Monitor/MonitorMetricUtil.ts +46 -0
  89. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
  90. package/Server/Utils/PasswordHash.ts +330 -0
  91. package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +251 -0
  92. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +747 -0
  93. package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +480 -0
  94. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1184 -0
  95. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +500 -0
  96. package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +333 -0
  97. package/Tests/App/Dashboard/PortMonitorCriteriaFilter.test.ts +93 -0
  98. package/Tests/App/Dashboard/UserCustomFields.test.tsx +392 -0
  99. package/Tests/App/StatusPage/PublicStatusPageAPIErrorHandling.test.ts +117 -0
  100. package/Tests/App/StatusPage/StatusPageModelAPIPolymorphism.test.ts +223 -0
  101. package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +243 -0
  102. package/Tests/Server/API/AIAgentDataFixFromIncidentContext.test.ts +266 -0
  103. package/Tests/Server/API/AIAgentDataRepositoryToken.test.ts +381 -0
  104. package/Tests/Server/API/AIInvestigationAPI.test.ts +594 -0
  105. package/Tests/Server/API/AIInvestigationCreateFixTask.test.ts +80 -0
  106. package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +172 -1
  107. package/Tests/Server/API/DashboardPublicAttributeValuesAPI.test.ts +943 -0
  108. package/Tests/Server/API/DashboardPublicMetricsAggregateAPI.test.ts +1296 -0
  109. package/Tests/Server/API/DashboardPublicTemplatePayloads.test.ts +598 -0
  110. package/Tests/Server/API/GitHubAppInstallationBindingAPI.test.ts +539 -0
  111. package/Tests/Server/API/Helpers.ts +6 -1
  112. package/Tests/Server/API/StatusPageMasterPasswordAPI.test.ts +335 -0
  113. package/Tests/Server/API/UserProjectsAPI.test.ts +852 -0
  114. package/Tests/Server/Infrastructure/GlobalCache.test.ts +128 -0
  115. package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +215 -0
  116. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +59 -5
  117. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +127 -58
  118. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +396 -20
  119. package/Tests/Server/Services/AddMasterPasswordSaltMigration.test.ts +283 -0
  120. package/Tests/Server/Services/AddPerUserPasswordSaltMigration.test.ts +178 -0
  121. package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +582 -0
  122. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +30 -1
  123. package/Tests/Server/Services/CodeRepositoryInstallationBinding.test.ts +305 -0
  124. package/Tests/Server/Services/CodeRepositoryResolutionBinding.test.ts +147 -0
  125. package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +880 -0
  126. package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +54 -0
  127. package/Tests/Server/Services/FeedAIRunAssociation.test.ts +125 -0
  128. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +418 -57
  129. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +173 -14
  130. package/Tests/Server/Services/MasterPasswordScrypt.test.ts +567 -0
  131. package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +568 -0
  132. package/Tests/Server/Services/RestoreDroppedUniqueIndexesMigration.test.ts +386 -0
  133. package/Tests/Server/Services/RestoreServiceLowerNameIndexMigration.test.ts +240 -0
  134. package/Tests/Server/Services/SeparateIncidentAlertAiSettingsMigration.test.ts +194 -0
  135. package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +885 -0
  136. package/Tests/Server/Services/WidenHashedStringColumnsForScryptMigration.test.ts +220 -0
  137. package/Tests/Server/Utils/AI/AIAlertGating.test.ts +37 -4
  138. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +330 -29
  139. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +25 -0
  140. package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +293 -5
  141. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +59 -1
  142. package/Tests/Server/Utils/AI/CodeTools.test.ts +47 -1
  143. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +10 -0
  144. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +342 -19
  145. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +214 -30
  146. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +2 -0
  147. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +65 -17
  148. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +3 -0
  149. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +313 -20
  150. package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
  151. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +4 -0
  152. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +2 -0
  153. package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +44 -0
  154. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +30 -0
  155. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +120 -0
  156. package/Tests/Server/Utils/CodeRepository/GitHubInstallationBinding.test.ts +292 -0
  157. package/Tests/Server/Utils/GitHubInstallationOwnershipVerification.test.ts +340 -0
  158. package/Tests/Server/Utils/GitHubWebhookAndTreeCacheIsolation.test.ts +250 -0
  159. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +212 -0
  160. package/Tests/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.test.ts +401 -0
  161. package/Tests/Server/Utils/Monitor/MonitorMetricUtilPortTimings.test.ts +243 -0
  162. package/Tests/Server/Utils/PasswordHash.test.ts +585 -0
  163. package/Tests/Types/Dashboard/DashboardTemplates.test.ts +111 -0
  164. package/Tests/Types/Database/ColumnLength.test.ts +7 -1
  165. package/Tests/Types/HashedStringPerUserSalt.test.ts +476 -0
  166. package/Tests/Types/Monitor/CephMetricCatalog.test.ts +104 -0
  167. package/Tests/Types/Monitor/CriteriaFilter.test.ts +4 -0
  168. package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +293 -0
  169. package/Tests/Types/Monitor/DockerMetricCatalog.test.ts +109 -0
  170. package/Tests/Types/Monitor/DockerSwarmMetricCatalog.test.ts +118 -0
  171. package/Tests/Types/Monitor/HostAlertTemplates.test.ts +249 -0
  172. package/Tests/Types/Monitor/HostMetricCatalog.test.ts +104 -0
  173. package/Tests/Types/Monitor/IotAlertTemplates.test.ts +320 -0
  174. package/Tests/Types/Monitor/IotMetricCatalog.test.ts +104 -0
  175. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +118 -0
  176. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +42 -0
  177. package/Tests/Types/Monitor/MonitorStep.test.ts +38 -0
  178. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +75 -0
  179. package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +271 -0
  180. package/Tests/Types/Monitor/PodmanMetricCatalog.test.ts +109 -0
  181. package/Tests/Types/Monitor/ProxmoxMetricCatalog.test.ts +107 -0
  182. package/Tests/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.test.ts +151 -0
  183. package/Tests/Types/Permission.test.ts +137 -0
  184. package/Tests/Types/Rum/SessionReplayMaskingMode.test.ts +101 -0
  185. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +5 -5
  186. package/Tests/UI/Components/CardModelDetailEdit.test.tsx +3 -5
  187. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +696 -0
  188. package/Tests/UI/Components/ErrorBoundary.test.tsx +158 -0
  189. package/Tests/UI/Components/FeedItemSafeMode.test.tsx +74 -0
  190. package/Tests/UI/Components/MoreMenu.test.tsx +756 -0
  191. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +62 -0
  192. package/Tests/UI/Monitor/PortMonitorView.test.tsx +237 -0
  193. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +91 -0
  194. package/Tests/UI/Utils/DownloadFile.test.ts +103 -0
  195. package/Tests/UI/Utils/ErrorSupportBundle.test.ts +582 -0
  196. package/Tests/UI/Utils/Project.test.ts +31 -0
  197. package/Tests/UI/Utils/StatusPageModelAPIInjection.test.ts +245 -0
  198. package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +820 -0
  199. package/Tests/UI/Utils/UserProjectsModelAPI.test.ts +714 -0
  200. package/Tests/Utils/Dashboard/DashboardViewConfig.test.ts +329 -0
  201. package/Tests/Utils/Dashboard/GridLayout.test.ts +951 -0
  202. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +117 -0
  203. package/Tests/Utils/RecordingRuleExpression.test.ts +327 -0
  204. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +186 -0
  205. package/Tests/Utils/StatusPage/GroupTree.test.ts +456 -0
  206. package/Tests/Utils/StatusPage/OverviewGroupHierarchyVisibility.test.ts +588 -0
  207. package/Tests/Utils/TeamMembersByProject.test.ts +655 -0
  208. package/Tests/Utils/Telemetry/SavedViewTimeRange.test.ts +244 -0
  209. package/Tests/Utils/Telemetry/TelemetryQueryTimeRange.test.ts +825 -0
  210. package/Types/AI/AIRunCodeFixRecommendation.ts +17 -0
  211. package/Types/AI/CodeFixTaskContext.ts +63 -3
  212. package/Types/AI/CodeFixTaskType.ts +3 -3
  213. package/Types/Database/ColumnLength.ts +9 -1
  214. package/Types/Database/TableColumn.ts +11 -0
  215. package/Types/Database/UnsynchronizedIndex.ts +48 -0
  216. package/Types/HashedString.ts +140 -4
  217. package/Types/Monitor/CriteriaFilter.ts +4 -0
  218. package/Types/Monitor/DomainMonitor/DomainLookupMethod.ts +23 -0
  219. package/Types/Monitor/DomainMonitor/DomainMonitorResponse.ts +7 -0
  220. package/Types/Monitor/MonitorCriteriaInstance.ts +24 -7
  221. package/Types/Monitor/MonitorMetricType.ts +8 -0
  222. package/Types/Monitor/MonitorStep.ts +10 -1
  223. package/Types/Monitor/MonitorStepDomainMonitor.ts +21 -0
  224. package/Types/Monitor/PortMonitor/PortMonitorTimings.ts +10 -0
  225. package/Types/Permission.ts +23 -175
  226. package/Types/Probe/ProbeMonitorResponse.ts +6 -0
  227. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +2 -3
  228. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +85 -11
  229. package/UI/Components/ErrorBoundary.tsx +138 -11
  230. package/UI/Components/Feed/FeedItem.tsx +9 -2
  231. package/UI/Components/ModelDetail/CardModelDetail.tsx +0 -12
  232. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  233. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +12 -2
  234. package/UI/Components/MoreMenu/MoreMenu.tsx +285 -97
  235. package/UI/Components/MoreMenu/MoreMenuItem.tsx +8 -5
  236. package/UI/Components/Navbar/NavBar.tsx +12 -2
  237. package/UI/Components/Navbar/NavBarMenuModal.tsx +19 -7
  238. package/UI/Utils/DownloadFile.ts +16 -8
  239. package/UI/Utils/ErrorSupportBundle.ts +805 -0
  240. package/UI/Utils/ModelAPI/ModelAPI.ts +19 -8
  241. package/UI/Utils/ModelAPI/UserProjectsModelAPI.ts +257 -0
  242. package/UI/Utils/Project.ts +4 -0
  243. package/UI/Utils/StatusPage.ts +8 -2
  244. package/UI/Utils/UseDashboardGridDnd.ts +917 -0
  245. package/Utils/Dashboard/DashboardViewConfig.ts +80 -36
  246. package/Utils/Dashboard/GridLayout.ts +523 -0
  247. package/Utils/Metrics/RecordingRuleExpression.ts +19 -17
  248. package/Utils/Monitor/MonitorMetricType.ts +44 -2
  249. package/Utils/StatusPage/GroupNestingLayout.ts +69 -0
  250. package/Utils/StatusPage/GroupTree.ts +157 -66
  251. package/Utils/StatusPage/ResourceUptime.ts +37 -2
  252. package/Utils/TeamMembersByProject.ts +237 -0
  253. package/Utils/Telemetry/SavedViewTimeRange.ts +114 -0
  254. package/Utils/Telemetry/TelemetryQueryTimeRange.ts +334 -0
  255. package/build/dist/Models/DatabaseModels/AIRun.js +39 -1
  256. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  257. package/build/dist/Models/DatabaseModels/AlertFeed.js +32 -0
  258. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  259. package/build/dist/Models/DatabaseModels/CephCluster.js +16 -1
  260. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
  261. package/build/dist/Models/DatabaseModels/CodeRepository.js +14 -6
  262. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  263. package/build/dist/Models/DatabaseModels/Dashboard.js +29 -0
  264. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  265. package/build/dist/Models/DatabaseModels/DockerHost.js +16 -1
  266. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  267. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +16 -1
  268. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
  269. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +16 -1
  270. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
  271. package/build/dist/Models/DatabaseModels/Incident.js +2 -0
  272. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  273. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
  274. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  275. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
  276. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
  277. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  278. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  279. package/build/dist/Models/DatabaseModels/IncidentFeed.js +32 -0
  280. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  281. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
  282. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  283. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  284. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  285. package/build/dist/Models/DatabaseModels/IoTFleet.js +16 -1
  286. package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
  287. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +16 -1
  288. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  289. package/build/dist/Models/DatabaseModels/LogSavedView.js +33 -0
  290. package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
  291. package/build/dist/Models/DatabaseModels/NetworkDevice.js +16 -1
  292. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  293. package/build/dist/Models/DatabaseModels/NetworkInterface.js +16 -1
  294. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
  295. package/build/dist/Models/DatabaseModels/Project.js +257 -13
  296. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  297. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +16 -1
  298. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
  299. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
  300. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  301. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
  302. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
  303. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  304. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  305. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +4 -4
  306. package/build/dist/Models/DatabaseModels/Service.js +28 -1
  307. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  308. package/build/dist/Models/DatabaseModels/StatusPage.js +29 -0
  309. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  310. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
  311. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  312. package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +32 -0
  313. package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
  314. package/build/dist/Models/DatabaseModels/User.js +32 -0
  315. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  316. package/build/dist/Server/API/AIAgentDataAPI.js +49 -48
  317. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  318. package/build/dist/Server/API/AIInvestigationAPI.js +111 -11
  319. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  320. package/build/dist/Server/API/DashboardAPI.js +312 -15
  321. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  322. package/build/dist/Server/API/GitHubAPI.js +94 -167
  323. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  324. package/build/dist/Server/API/StatusPageAPI.js +29 -11
  325. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  326. package/build/dist/Server/API/UserAPI.js +187 -2
  327. package/build/dist/Server/API/UserAPI.js.map +1 -1
  328. package/build/dist/Server/EnvironmentConfig.js +21 -3
  329. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  330. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -1
  331. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  332. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +1 -1
  333. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  334. package/build/dist/Server/Infrastructure/GlobalCache.js +29 -0
  335. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  336. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js +14 -0
  337. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js.map +1 -0
  338. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js +59 -0
  339. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js.map +1 -0
  340. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js +22 -0
  341. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js.map +1 -0
  342. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +93 -0
  343. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js.map +1 -0
  344. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js +36 -0
  345. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js.map +1 -0
  346. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js +18 -0
  347. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js.map +1 -0
  348. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js +101 -0
  349. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js.map +1 -0
  350. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js +66 -0
  351. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js.map +1 -0
  352. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js +19 -0
  353. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js.map +1 -0
  354. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js +19 -0
  355. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js.map +1 -0
  356. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
  357. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  358. package/build/dist/Server/Services/AIRunService.js +58 -12
  359. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  360. package/build/dist/Server/Services/AIService.js +74 -21
  361. package/build/dist/Server/Services/AIService.js.map +1 -1
  362. package/build/dist/Server/Services/AlertFeedService.js +3 -0
  363. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  364. package/build/dist/Server/Services/AnalyticsDatabaseService.js +86 -2
  365. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  366. package/build/dist/Server/Services/CodeRepositoryService.js +90 -2
  367. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  368. package/build/dist/Server/Services/DatabaseService.js +180 -3
  369. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  370. package/build/dist/Server/Services/IncidentFeedService.js +3 -0
  371. package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
  372. package/build/dist/Server/Services/LlmLogService.js +22 -1
  373. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  374. package/build/dist/Server/Services/OpenTelemetryIngestService.js +155 -25
  375. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  376. package/build/dist/Server/Services/UserService.js +165 -0
  377. package/build/dist/Server/Services/UserService.js.map +1 -1
  378. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
  379. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  380. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +4 -0
  381. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  382. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +8 -5
  383. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  384. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +63 -24
  385. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  386. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +2 -0
  387. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  388. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +2 -0
  389. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
  390. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +156 -28
  391. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  392. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +21 -19
  393. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  394. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +128 -49
  395. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
  396. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +170 -31
  397. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  398. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +21 -19
  399. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  400. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +33 -9
  401. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
  402. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +9 -5
  403. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  404. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +121 -41
  405. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  406. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js +46 -0
  407. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js.map +1 -0
  408. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +61 -14
  409. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -1
  410. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +79 -1
  411. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
  412. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +31 -1
  413. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -1
  414. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +21 -0
  415. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
  416. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -0
  417. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  418. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +126 -4
  419. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  420. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js +136 -0
  421. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js.map +1 -0
  422. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +20 -3
  423. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  424. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +43 -0
  425. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
  426. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
  427. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  428. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
  429. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  430. package/build/dist/Server/Utils/PasswordHash.js +258 -0
  431. package/build/dist/Server/Utils/PasswordHash.js.map +1 -0
  432. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js +18 -0
  433. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js.map +1 -0
  434. package/build/dist/Types/AI/CodeFixTaskContext.js +23 -3
  435. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
  436. package/build/dist/Types/AI/CodeFixTaskType.js +3 -3
  437. package/build/dist/Types/Database/ColumnLength.js +9 -1
  438. package/build/dist/Types/Database/ColumnLength.js.map +1 -1
  439. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  440. package/build/dist/Types/Database/UnsynchronizedIndex.js +46 -0
  441. package/build/dist/Types/Database/UnsynchronizedIndex.js.map +1 -0
  442. package/build/dist/Types/HashedString.js +96 -5
  443. package/build/dist/Types/HashedString.js.map +1 -1
  444. package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
  445. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  446. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js +24 -0
  447. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js.map +1 -0
  448. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +24 -7
  449. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  450. package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
  451. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  452. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  453. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  454. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js +15 -0
  455. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js.map +1 -1
  456. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js +2 -0
  457. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js.map +1 -0
  458. package/build/dist/Types/Permission.js +23 -155
  459. package/build/dist/Types/Permission.js.map +1 -1
  460. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -5
  461. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  462. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +51 -10
  463. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  464. package/build/dist/UI/Components/ErrorBoundary.js +67 -8
  465. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  466. package/build/dist/UI/Components/Feed/FeedItem.js +2 -2
  467. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  468. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +0 -12
  469. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  470. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  471. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  472. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +12 -2
  473. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  474. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +193 -65
  475. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  476. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +1 -1
  477. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  478. package/build/dist/UI/Components/Navbar/NavBar.js +3 -1
  479. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  480. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +19 -7
  481. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  482. package/build/dist/UI/Utils/DownloadFile.js +15 -8
  483. package/build/dist/UI/Utils/DownloadFile.js.map +1 -1
  484. package/build/dist/UI/Utils/ErrorSupportBundle.js +476 -0
  485. package/build/dist/UI/Utils/ErrorSupportBundle.js.map +1 -0
  486. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -8
  487. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  488. package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js +156 -0
  489. package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js.map +1 -0
  490. package/build/dist/UI/Utils/Project.js +3 -0
  491. package/build/dist/UI/Utils/Project.js.map +1 -1
  492. package/build/dist/UI/Utils/StatusPage.js +4 -4
  493. package/build/dist/UI/Utils/StatusPage.js.map +1 -1
  494. package/build/dist/UI/Utils/UseDashboardGridDnd.js +551 -0
  495. package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -0
  496. package/build/dist/Utils/Dashboard/DashboardViewConfig.js +42 -26
  497. package/build/dist/Utils/Dashboard/DashboardViewConfig.js.map +1 -1
  498. package/build/dist/Utils/Dashboard/GridLayout.js +338 -0
  499. package/build/dist/Utils/Dashboard/GridLayout.js.map +1 -0
  500. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +19 -17
  501. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -1
  502. package/build/dist/Utils/Monitor/MonitorMetricType.js +38 -6
  503. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  504. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +46 -0
  505. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -1
  506. package/build/dist/Utils/StatusPage/GroupTree.js +79 -34
  507. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -1
  508. package/build/dist/Utils/StatusPage/ResourceUptime.js +22 -1
  509. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  510. package/build/dist/Utils/TeamMembersByProject.js +145 -0
  511. package/build/dist/Utils/TeamMembersByProject.js.map +1 -0
  512. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js +79 -0
  513. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js.map +1 -0
  514. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js +236 -0
  515. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js.map +1 -0
  516. package/package.json +1 -1
@@ -7,23 +7,29 @@ import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
7
7
  import LIMIT_MAX from "../../Types/Database/LimitMax";
8
8
  import { DashboardClientUrl, GitHubAppName, HomeClientUrl, } from "../EnvironmentConfig";
9
9
  import ObjectID from "../../Types/ObjectID";
10
- import GitHubUtil, { GitHubInstallationNotFoundError, } from "../Utils/CodeRepository/GitHub/GitHub";
10
+ import GitHubUtil from "../Utils/CodeRepository/GitHub/GitHub";
11
11
  import CodeRepositoryService from "../Services/CodeRepositoryService";
12
12
  import ProjectService from "../Services/ProjectService";
13
13
  import AccessTokenService from "../Services/AccessTokenService";
14
- import CodeRepository from "../../Models/DatabaseModels/CodeRepository";
15
- import CodeRepositoryType from "../../Types/CodeRepository/CodeRepositoryType";
16
14
  import URL from "../../Types/API/URL";
17
15
  import UserMiddleware from "../Middleware/UserAuthorization";
18
16
  import JSONWebToken from "../Utils/JsonWebToken";
19
- import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
20
17
  export default class GitHubAPI {
21
18
  /*
22
- * Resolves the projects linked to a GitHub App installation. The
23
- * installation ID is stored on the Project when the install callback runs
24
- * (mirroring how the uninstall webhook resolves projects). As a fallback,
25
- * also look at existing CodeRepository rows that carry the installation ID
26
- * (e.g. if the ID was cleared from the project but repositories remain).
19
+ * Resolves the projects linked to a GitHub App installation.
20
+ *
21
+ * Project.gitHubAppInstallationId is the only source consulted, because it
22
+ * is the only one GitHub has vouched for the install callback writes it
23
+ * after verifying the installer controls the installation, and the
24
+ * uninstall webhook clears it.
25
+ *
26
+ * This used to fall back to CodeRepository rows carrying the installation
27
+ * ID. That inverted the trust: a row is supposed to derive its right to an
28
+ * installation FROM its project, so letting a row nominate its project as a
29
+ * link target meant anyone who could write an installation ID onto a row in
30
+ * their own project would have that project treated as an owner of the
31
+ * installation — and every webhook would then import the victim's
32
+ * repositories into it.
27
33
  */
28
34
  static async getProjectIdsForInstallation(installationId) {
29
35
  const projectIds = [];
@@ -42,31 +48,10 @@ export default class GitHubAPI {
42
48
  });
43
49
  for (const project of projects) {
44
50
  if (project.id) {
45
- projectIds.push(project.id.toString());
51
+ projectIds.push(project.id);
46
52
  }
47
53
  }
48
- const codeRepositories = await CodeRepositoryService.findBy({
49
- query: {
50
- gitHubAppInstallationId: installationId,
51
- },
52
- select: {
53
- projectId: true,
54
- },
55
- limit: LIMIT_MAX,
56
- skip: 0,
57
- props: {
58
- isRoot: true,
59
- },
60
- });
61
- for (const codeRepository of codeRepositories) {
62
- if (codeRepository.projectId &&
63
- !projectIds.includes(codeRepository.projectId.toString())) {
64
- projectIds.push(codeRepository.projectId.toString());
65
- }
66
- }
67
- return projectIds.map((projectId) => {
68
- return new ObjectID(projectId);
69
- });
54
+ return projectIds;
70
55
  }
71
56
  // Imports all repositories in an installation into every project linked to it.
72
57
  static async importInstallationRepositoriesForLinkedProjects(installationId) {
@@ -125,7 +110,7 @@ export default class GitHubAPI {
125
110
  * The state parameter contains base64 encoded JSON with projectId and userId
126
111
  */
127
112
  router.get("/github/auth/callback", async (req, res) => {
128
- var _a, _b;
113
+ var _a, _b, _c;
129
114
  try {
130
115
  // GitHub sends state parameter back which contains projectId and userId
131
116
  const state = (_a = req.query["state"]) === null || _a === void 0 ? void 0 : _a.toString();
@@ -140,7 +125,7 @@ export default class GitHubAPI {
140
125
  projectId = decodedState["projectId"];
141
126
  userId = decodedState["userId"];
142
127
  }
143
- catch (_c) {
128
+ catch (_d) {
144
129
  return Response.sendErrorResponse(req, res, new BadDataException("Invalid or expired state parameter. Please restart the GitHub App installation."));
145
130
  }
146
131
  if (!projectId) {
@@ -159,6 +144,41 @@ export default class GitHubAPI {
159
144
  if (!installationId) {
160
145
  return Response.sendErrorResponse(req, res, new BadDataException("Installation ID is required. Please install the GitHub App first."));
161
146
  }
147
+ /*
148
+ * Prove the installation actually belongs to the person completing
149
+ * this redirect, before writing the binding everything downstream
150
+ * trusts.
151
+ *
152
+ * A valid `state` only says "this OneUptime user asked to install
153
+ * something for this project" — it says nothing about WHICH
154
+ * installation, and `installation_id` is an unauthenticated integer
155
+ * in a query string. Without this step anyone could start an install
156
+ * for their own project, then hand-edit the callback URL to a victim's
157
+ * installation ID: OneUptime would record their project as the owner
158
+ * of that installation, import the victim's private repositories into
159
+ * it, and mint write-scoped tokens for them on demand.
160
+ *
161
+ * The OAuth `code` is the missing proof. GitHub mints it for one
162
+ * GitHub account, it is single-use, and trading it in tells us which
163
+ * installations that account can actually administer.
164
+ */
165
+ const oauthCode = (_c = req.query["code"]) === null || _c === void 0 ? void 0 : _c.toString();
166
+ if (!oauthCode) {
167
+ return Response.sendErrorResponse(req, res, new BadDataException('GitHub did not return an authorization code, so this installation could not be verified. Please enable "Request user authorization (OAuth) during installation" in the GitHub App settings and install again.'));
168
+ }
169
+ try {
170
+ await GitHubUtil.assertUserControlsInstallation({
171
+ oauthCode: oauthCode,
172
+ installationId: installationId,
173
+ });
174
+ }
175
+ catch (verificationError) {
176
+ logger.error(`GitHub Auth Callback: refusing to bind installation ${installationId} to project ${projectId} — could not verify the installing user controls it.`, getLogAttributesFromRequest(req));
177
+ logger.error(verificationError, getLogAttributesFromRequest(req));
178
+ return Response.sendErrorResponse(req, res, verificationError instanceof Error
179
+ ? new BadDataException(verificationError.message)
180
+ : new BadDataException("Could not verify this GitHub App installation."));
181
+ }
162
182
  /*
163
183
  * Store the installation ID in the project
164
184
  * This allows reuse when connecting additional repositories
@@ -202,16 +222,32 @@ export default class GitHubAPI {
202
222
  }
203
223
  });
204
224
  // Initiate GitHub App installation
205
- router.get("/github/auth/install", async (req, res) => {
206
- var _a, _b;
225
+ router.get("/github/auth/install", UserMiddleware.getUserMiddleware, async (req, res) => {
226
+ var _a;
207
227
  try {
208
228
  if (!GitHubAppName) {
209
229
  return Response.sendErrorResponse(req, res, new BadDataException("GitHub App is not configured. Please set GITHUB_APP_NAME."));
210
230
  }
231
+ const oneuptimeRequest = req;
232
+ /*
233
+ * The state this route signs is what the callback trusts to decide
234
+ * which project gets the installation, so it must only ever be
235
+ * issued to the logged-in user for a project they belong to. Taking
236
+ * the user id from a query parameter — as this route used to — let
237
+ * anyone mint a valid state for any (project, user) pair without
238
+ * even holding a session.
239
+ */
240
+ if (!oneuptimeRequest.userAuthorization) {
241
+ return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Authentication is required to install the GitHub App."));
242
+ }
211
243
  const projectId = (_a = req.query["projectId"]) === null || _a === void 0 ? void 0 : _a.toString();
212
- const userId = (_b = req.query["userId"]) === null || _b === void 0 ? void 0 : _b.toString();
213
- if (!projectId || !userId) {
214
- return Response.sendErrorResponse(req, res, new BadDataException("Project ID and User ID are required"));
244
+ if (!projectId) {
245
+ return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
246
+ }
247
+ const userId = oneuptimeRequest.userAuthorization.userId.toString();
248
+ const userTenantAccessPermission = await AccessTokenService.getUserTenantAccessPermission(new ObjectID(userId), new ObjectID(projectId));
249
+ if (!userTenantAccessPermission) {
250
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
215
251
  }
216
252
  /*
217
253
  * Redirect to GitHub App installation page
@@ -231,134 +267,25 @@ export default class GitHubAPI {
231
267
  : new BadDataException("An error occurred"));
232
268
  }
233
269
  });
234
- // List repositories for an installation
235
- router.get("/github/repositories/:projectId/:installationId", UserMiddleware.getUserMiddleware, async (req, res) => {
236
- var _a, _b, _c;
237
- try {
238
- const oneuptimeRequest = req;
239
- // Require authentication
240
- if (!oneuptimeRequest.userAuthorization) {
241
- return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Authentication is required to list repositories."));
242
- }
243
- const projectId = (_a = req.params["projectId"]) === null || _a === void 0 ? void 0 : _a.toString();
244
- const installationId = (_b = req.params["installationId"]) === null || _b === void 0 ? void 0 : _b.toString();
245
- if (!projectId) {
246
- return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
247
- }
248
- if (!installationId) {
249
- return Response.sendErrorResponse(req, res, new BadDataException("Installation ID is required"));
250
- }
251
- // Verify user has access to this project
252
- const userTenantAccessPermission = await AccessTokenService.getUserTenantAccessPermission(oneuptimeRequest.userAuthorization.userId, new ObjectID(projectId));
253
- if (!userTenantAccessPermission) {
254
- return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
255
- }
256
- const repositories = await GitHubUtil.listRepositoriesForInstallation(installationId);
257
- return Response.sendJsonObjectResponse(req, res, {
258
- repositories: repositories,
259
- });
260
- }
261
- catch (error) {
262
- logger.error("GitHub List Repositories Error:", getLogAttributesFromRequest(req));
263
- logger.error(error, getLogAttributesFromRequest(req));
264
- // Handle stale installation ID - clear it from the project and return specific error
265
- if (error instanceof GitHubInstallationNotFoundError) {
266
- const projectId = (_c = req.params["projectId"]) === null || _c === void 0 ? void 0 : _c.toString();
267
- if (projectId) {
268
- try {
269
- // Clear the stale installation ID from the project
270
- await ProjectService.updateOneById({
271
- id: new ObjectID(projectId),
272
- data: {
273
- gitHubAppInstallationId: null,
274
- },
275
- props: {
276
- isRoot: true,
277
- },
278
- });
279
- logger.info(`Cleared stale GitHub App installation ID from project ${projectId}`, getLogAttributesFromRequest(req));
280
- }
281
- catch (clearError) {
282
- logger.error("Failed to clear stale installation ID from project:", getLogAttributesFromRequest(req));
283
- logger.error(clearError, getLogAttributesFromRequest(req));
284
- }
285
- }
286
- // Return the specific error so the frontend knows to prompt reinstallation
287
- return Response.sendErrorResponse(req, res, error);
288
- }
289
- return Response.sendErrorResponse(req, res, error instanceof Error
290
- ? new BadDataException(error.message)
291
- : new BadDataException("An error occurred"));
292
- }
293
- });
294
- // Connect a repository to a project
295
- router.post("/github/repository/connect", UserMiddleware.getUserMiddleware, async (req, res) => {
296
- var _a, _b, _c, _d, _e, _f, _g, _h;
297
- try {
298
- const oneuptimeRequest = req;
299
- // Require authentication
300
- if (!oneuptimeRequest.userAuthorization) {
301
- return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Authentication is required to connect a repository."));
302
- }
303
- const body = req.body;
304
- const projectId = (_a = body["projectId"]) === null || _a === void 0 ? void 0 : _a.toString();
305
- const installationId = (_b = body["installationId"]) === null || _b === void 0 ? void 0 : _b.toString();
306
- const repositoryName = (_c = body["repositoryName"]) === null || _c === void 0 ? void 0 : _c.toString();
307
- const organizationName = (_d = body["organizationName"]) === null || _d === void 0 ? void 0 : _d.toString();
308
- const name = (_e = body["name"]) === null || _e === void 0 ? void 0 : _e.toString();
309
- const defaultBranch = (_f = body["defaultBranch"]) === null || _f === void 0 ? void 0 : _f.toString();
310
- const repositoryUrl = (_g = body["repositoryUrl"]) === null || _g === void 0 ? void 0 : _g.toString();
311
- const description = (_h = body["description"]) === null || _h === void 0 ? void 0 : _h.toString();
312
- if (!projectId) {
313
- return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
314
- }
315
- if (!installationId) {
316
- return Response.sendErrorResponse(req, res, new BadDataException("Installation ID is required"));
317
- }
318
- // Verify user has access to this project
319
- const userTenantAccessPermission = await AccessTokenService.getUserTenantAccessPermission(oneuptimeRequest.userAuthorization.userId, new ObjectID(projectId));
320
- if (!userTenantAccessPermission) {
321
- return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
322
- }
323
- if (!repositoryName) {
324
- return Response.sendErrorResponse(req, res, new BadDataException("Repository name is required"));
325
- }
326
- if (!organizationName) {
327
- return Response.sendErrorResponse(req, res, new BadDataException("Organization name is required"));
328
- }
329
- // Create the code repository record
330
- const codeRepository = new CodeRepository();
331
- codeRepository.projectId = new ObjectID(projectId);
332
- codeRepository.name = name || `${organizationName}/${repositoryName}`;
333
- codeRepository.repositoryHostedAt = CodeRepositoryType.GitHub;
334
- codeRepository.organizationName = organizationName;
335
- codeRepository.repositoryName = repositoryName;
336
- codeRepository.mainBranchName = defaultBranch || "main";
337
- codeRepository.gitHubAppInstallationId = installationId;
338
- if (repositoryUrl) {
339
- codeRepository.repositoryUrl = URL.fromString(repositoryUrl);
340
- }
341
- if (description) {
342
- codeRepository.description = description;
343
- }
344
- const createdRepository = await CodeRepositoryService.create({
345
- data: codeRepository,
346
- props: {
347
- isRoot: true,
348
- },
349
- });
350
- return Response.sendJsonObjectResponse(req, res, {
351
- repository: BaseModel.toJSON(createdRepository, CodeRepository),
352
- });
353
- }
354
- catch (error) {
355
- logger.error("GitHub Connect Repository Error:", getLogAttributesFromRequest(req));
356
- logger.error(error, getLogAttributesFromRequest(req));
357
- return Response.sendErrorResponse(req, res, error instanceof Error
358
- ? new BadDataException(error.message)
359
- : new BadDataException("An error occurred"));
360
- }
361
- });
270
+ /*
271
+ * GET /github/repositories/:projectId/:installationId and
272
+ * POST /github/repository/connect used to live here. Both are gone.
273
+ *
274
+ * Both took an installation ID straight from the caller and checked only
275
+ * that the caller could access the project THEY had named — a comparison
276
+ * the caller controls both sides of, since anyone can create a project and
277
+ * own it. The listing route would then return any installation's private
278
+ * repository list (an enumeration oracle over a small integer space), and
279
+ * the connect route would persist the caller's installation ID onto a
280
+ * CodeRepository row, which is exactly the self-asserted binding the
281
+ * repository-token endpoint later minted a `ghs_` token from.
282
+ *
283
+ * Nothing called them: repositories are imported automatically by the
284
+ * install callback below and kept in sync by the installation webhooks, so
285
+ * the binding is always established by GitHub rather than asserted by a
286
+ * client. There is no supported way to name an installation ID over the
287
+ * API any more, and that is deliberate — see GitHubInstallationBinding.
288
+ */
362
289
  // GitHub webhook handler
363
290
  router.post("/github/webhook", async (req, res) => {
364
291
  var _a, _b, _c, _d, _e, _f, _g;
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubAPI.js","sourceRoot":"","sources":["../../../../Server/API/GitHubAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubAPI.js","sourceRoot":"","sources":["../../../../Server/API/GitHubAPI.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,6 @@ import JSONFunctions from "../../Types/JSONFunctions";
51
51
  import ObjectID from "../../Types/ObjectID";
52
52
  import Phone from "../../Types/Phone";
53
53
  import PositiveNumber from "../../Types/PositiveNumber";
54
- import HashedString from "../../Types/HashedString";
55
54
  import Incident from "../../Models/DatabaseModels/Incident";
56
55
  import IncidentEpisode from "../../Models/DatabaseModels/IncidentEpisode";
57
56
  import IncidentEpisodePublicNote from "../../Models/DatabaseModels/IncidentEpisodePublicNote";
@@ -88,7 +87,6 @@ import MailService from "../Services/MailService";
88
87
  import EmailTemplateType from "../../Types/Email/EmailTemplateType";
89
88
  import DatabaseConfig from "../DatabaseConfig";
90
89
  import CookieUtil from "../Utils/Cookie";
91
- import { EncryptionSecret } from "../EnvironmentConfig";
92
90
  import { StatusPageApiRoute } from "../../ServiceRoute";
93
91
  import ProjectSmtpConfigService from "../Services/ProjectSmtpConfigService";
94
92
  import SlackUtil from "../Utils/Workspace/Slack/Slack";
@@ -665,7 +663,7 @@ export default class StatusPageAPI extends BaseAPI {
665
663
  }
666
664
  const statusPageId = new ObjectID(req.params["statusPageId"]);
667
665
  const password = req.body && req.body["password"];
668
- if (!password) {
666
+ if (typeof password !== "string" || !password) {
669
667
  throw new BadDataException("Master password is required.");
670
668
  }
671
669
  const statusPage = await StatusPageService.findOneById({
@@ -675,6 +673,7 @@ export default class StatusPageAPI extends BaseAPI {
675
673
  projectId: true,
676
674
  enableMasterPassword: true,
677
675
  masterPassword: true,
676
+ masterPasswordSalt: true,
678
677
  isPublicStatusPage: true,
679
678
  },
680
679
  props: {
@@ -690,8 +689,12 @@ export default class StatusPageAPI extends BaseAPI {
690
689
  if (!statusPage.enableMasterPassword || !statusPage.masterPassword) {
691
690
  throw new BadDataException("Master password has not been configured for this status page.");
692
691
  }
693
- const hashedInput = await HashedString.hashValue(password, EncryptionSecret);
694
- if (hashedInput !== statusPage.masterPassword.toString()) {
692
+ const isMasterPasswordValid = await StatusPageService.verifyHashedColumnValue({
693
+ item: statusPage,
694
+ columnName: "masterPassword",
695
+ plainValue: password,
696
+ });
697
+ if (!isMasterPasswordValid) {
695
698
  throw new BadDataException(MASTER_PASSWORD_INVALID_MESSAGE);
696
699
  }
697
700
  CookieUtil.setStatusPageMasterPasswordCookie({
@@ -792,7 +795,7 @@ export default class StatusPageAPI extends BaseAPI {
792
795
  });
793
796
  this.router.post(`${(_w = new this.entityType()
794
797
  .getCrudApiPath()) === null || _w === void 0 ? void 0 : _w.toString()}/uptime/:statusPageId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
795
- var _a;
798
+ var _a, _b;
796
799
  try {
797
800
  // This reosurce ID can be of a status page resource OR a status page group.
798
801
  const statusPageResourceId = new ObjectID(req.params["statusPageResourceId"]);
@@ -949,20 +952,35 @@ export default class StatusPageAPI extends BaseAPI {
949
952
  * parentStatusPageGroupId so callers can rebuild the tree.
950
953
  */
951
954
  const resourceUptimesByGroupId = {};
955
+ /*
956
+ * Keyed the same way, so the loop below can look a group's uptime up
957
+ * instead of scanning the whole list for it. A status page can carry
958
+ * well over a thousand groups, and a scan per group is a scan of the
959
+ * whole list per group.
960
+ */
961
+ const groupUptimeByGroupId = {};
952
962
  for (const groupUptime of groupUptimes) {
953
- resourceUptimesByGroupId[((_a = groupUptime.statusPageGroupId) === null || _a === void 0 ? void 0 : _a.toString()) || ""] = groupUptime.statusPageResourceUptimes;
963
+ const groupId = ((_a = groupUptime.statusPageGroupId) === null || _a === void 0 ? void 0 : _a.toString()) || "";
964
+ resourceUptimesByGroupId[groupId] =
965
+ groupUptime.statusPageResourceUptimes;
966
+ groupUptimeByGroupId[groupId] = groupUptime;
954
967
  }
968
+ /*
969
+ * One index for every subtree walk below, rather than one
970
+ * re-bucketing of the group list per group.
971
+ */
972
+ const statusPageGroupTreeIndex = StatusPageGroupTreeUtil.buildIndex({
973
+ statusPageGroups: statusPageGroups,
974
+ });
955
975
  for (const group of statusPageGroups) {
956
- const groupUptime = groupUptimes.find((item) => {
957
- var _a, _b;
958
- return (((_a = item.statusPageGroupId) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = group.id) === null || _b === void 0 ? void 0 : _b.toString()));
959
- });
976
+ const groupUptime = groupUptimeByGroupId[((_b = group.id) === null || _b === void 0 ? void 0 : _b.toString()) || ""];
960
977
  if (!groupUptime) {
961
978
  continue;
962
979
  }
963
980
  const resourceUptimesInSubtree = StatusPageGroupTreeUtil.getGroupAndDescendants({
964
981
  statusPageGroup: group,
965
982
  statusPageGroups: statusPageGroups,
983
+ index: statusPageGroupTreeIndex,
966
984
  }).flatMap((groupInSubtree) => {
967
985
  var _a;
968
986
  return (resourceUptimesByGroupId[((_a = groupInSubtree.id) === null || _a === void 0 ? void 0 : _a.toString()) || ""] || []);