@oneuptime/common 12.0.6 → 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 (424) hide show
  1. package/Models/DatabaseModels/AIInsight.ts +1 -1
  2. package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +2 -3
  3. package/Models/DatabaseModels/DeletedProject.ts +595 -0
  4. package/Models/DatabaseModels/Index.ts +2 -0
  5. package/Models/DatabaseModels/Monitor.ts +111 -0
  6. package/Models/DatabaseModels/Project.ts +3 -3
  7. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -1
  8. package/Server/API/FileAPI.ts +15 -2
  9. package/Server/API/MicrosoftTeamsAPI.ts +6 -1
  10. package/Server/API/ProjectAPI.ts +214 -0
  11. package/Server/API/StatusPageAPI.ts +39 -6
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.ts +50 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.ts +67 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.ts +39 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  16. package/Server/Services/AIAgentService.ts +20 -0
  17. package/Server/Services/DashboardDomainService.ts +73 -28
  18. package/Server/Services/DatabaseService.ts +1 -0
  19. package/Server/Services/DeletedProjectService.ts +138 -0
  20. package/Server/Services/FileService.ts +61 -0
  21. package/Server/Services/IncidentEpisodePublicNoteService.ts +18 -0
  22. package/Server/Services/IncidentPublicNoteService.ts +18 -0
  23. package/Server/Services/Index.ts +2 -0
  24. package/Server/Services/MonitorService.ts +311 -0
  25. package/Server/Services/ProbeService.ts +20 -0
  26. package/Server/Services/ProjectService.ts +297 -1
  27. package/Server/Services/PushNotificationService.ts +71 -0
  28. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +18 -0
  29. package/Server/Services/StatusPageAnnouncementService.ts +53 -0
  30. package/Server/Services/StatusPageDomainService.ts +73 -28
  31. package/Server/Services/TeamMemberService.ts +117 -12
  32. package/Server/Services/TelemetryIngestionKeyService.ts +1 -0
  33. package/Server/Services/UserWebhookService.ts +34 -109
  34. package/Server/Services/WorkspaceNotificationRuleService.ts +69 -0
  35. package/Server/Services/WorkspaceProjectAuthTokenService.ts +37 -1
  36. package/Server/Types/Database/DeleteById.ts +2 -0
  37. package/Server/Types/Database/DeleteOneBy.ts +6 -0
  38. package/Server/Types/Domain.ts +41 -0
  39. package/Server/Types/Workflow/Components/API/Delete.ts +2 -1
  40. package/Server/Types/Workflow/Components/API/Get.ts +2 -1
  41. package/Server/Types/Workflow/Components/API/Patch.ts +2 -1
  42. package/Server/Types/Workflow/Components/API/Post.ts +2 -1
  43. package/Server/Types/Workflow/Components/API/Put.ts +2 -1
  44. package/Server/Types/Workflow/Components/API/Utils.ts +41 -2
  45. package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +25 -19
  46. package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +6 -5
  47. package/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.ts +32 -14
  48. package/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.ts +31 -13
  49. package/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.ts +29 -20
  50. package/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.ts +28 -21
  51. package/Server/Types/Workflow/Components/BaseModel/LogComponentError.ts +89 -0
  52. package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +208 -0
  53. package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +11 -0
  54. package/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.ts +41 -18
  55. package/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.ts +45 -19
  56. package/Server/Types/Workflow/Components/Discord/SendMessageToChannel.ts +16 -9
  57. package/Server/Types/Workflow/Components/IncomingWebhookUtils.ts +66 -0
  58. package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +15 -9
  59. package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +17 -0
  60. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
  61. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +171 -0
  62. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +3 -3
  63. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -2
  64. package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
  65. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +6 -6
  66. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +43 -5
  67. package/Server/Utils/DataSource/EgressGuard.ts +176 -16
  68. package/Server/Utils/DataSource/HttpFetch.ts +6 -45
  69. package/Server/Utils/Execute.ts +8 -0
  70. package/Server/Utils/InlineImageAccessTokenSync.ts +23 -0
  71. package/Server/Utils/LLM/LLMService.ts +57 -12
  72. package/Server/Utils/Monitor/MonitorAlert.ts +40 -0
  73. package/Server/Utils/Monitor/MonitorDependencySuppression.ts +192 -0
  74. package/Server/Utils/Monitor/MonitorIncident.ts +40 -0
  75. package/Server/Utils/Monitor/MonitorResource.ts +36 -0
  76. package/Server/Utils/Response.ts +142 -6
  77. package/Server/Utils/SSRFProtection.ts +273 -60
  78. package/Server/Utils/StartServer.ts +8 -0
  79. package/Server/Utils/VM/VMRunner.ts +88 -1
  80. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +555 -49
  81. package/Server/Utils/Workspace/Slack/Slack.ts +25 -2
  82. package/Server/Utils/Workspace/WorkspaceBase.ts +6 -0
  83. package/Tests/App/Dashboard/DangerZone.test.tsx +334 -0
  84. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +539 -0
  85. package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +678 -0
  86. package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +706 -0
  87. package/Tests/App/Dashboard/DashboardVariablesModal.test.tsx +508 -0
  88. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +470 -0
  89. package/Tests/App/StatusPage/StatusPageDetailPagesNotFound.test.tsx +308 -0
  90. package/Tests/Models/DatabaseModels/DeletedProjectModel.test.ts +251 -0
  91. package/Tests/Models/DatabaseModels/SavedViewJSONColumnTuples.test.ts +115 -0
  92. package/Tests/Server/API/FileAPIAccessControl.test.ts +316 -0
  93. package/Tests/Server/API/ProjectAPI.test.ts +299 -1
  94. package/Tests/Server/API/ProjectAPIAdjustBalance.test.ts +459 -0
  95. package/Tests/Server/API/ProjectAPIAdjustBalanceBillingDisabled.test.ts +177 -0
  96. package/Tests/Server/Services/DatabaseServiceDeletionReason.test.ts +123 -0
  97. package/Tests/Server/Services/DeletedProjectService.test.ts +415 -0
  98. package/Tests/Server/Services/DeletedProjectServiceSelfHosted.test.ts +70 -0
  99. package/Tests/Server/Services/DomainSubdomainHooks.test.ts +94 -0
  100. package/Tests/Server/Services/FileIsPublicBooleanMigration.test.ts +244 -0
  101. package/Tests/Server/Services/FileServiceMimeType.test.ts +89 -0
  102. package/Tests/Server/Services/MonitorServiceDependencyValidation.test.ts +702 -0
  103. package/Tests/Server/Services/ProjectServiceAdjustBalance.test.ts +615 -0
  104. package/Tests/Server/Services/ProjectServiceDeleteAudit.test.ts +406 -0
  105. package/Tests/Server/Services/PublishTimeImageVisibility.test.ts +450 -0
  106. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +669 -0
  107. package/Tests/Server/Services/UserWebhookSSRF.test.ts +174 -0
  108. package/Tests/Server/Services/WebPushEndpointAllowlist.test.ts +133 -0
  109. package/Tests/Server/Services/WorkspaceProjectAuthTokenRepoint.test.ts +618 -0
  110. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +26 -1
  111. package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +215 -0
  112. package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +742 -0
  113. package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +256 -0
  114. package/Tests/Server/Types/Workflow/Components/ModelArguments.test.ts +371 -0
  115. package/Tests/Server/Utils/AI/CodeAgentCommandGuard.test.ts +204 -0
  116. package/Tests/Server/Utils/AI/CodeAgentWriteLimits.test.ts +213 -0
  117. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +52 -5
  118. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +3 -0
  119. package/Tests/Server/Utils/AI/LLMServiceEgressGuard.test.ts +315 -0
  120. package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +3 -0
  121. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +17 -5
  122. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +14 -1
  123. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +35 -0
  124. package/Tests/Server/Utils/AI/StubLLMEgressGuard.ts +25 -0
  125. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +62 -7
  126. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +69 -0
  127. package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +330 -0
  128. package/Tests/Server/Utils/GitHubCreatePullRequestWithToken.test.ts +393 -0
  129. package/Tests/Server/Utils/InlineImageAccessTokenSync.test.ts +202 -0
  130. package/Tests/Server/Utils/Monitor/MonitorDependencySuppression.test.ts +811 -0
  131. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +604 -0
  132. package/Tests/Server/Utils/ResponseSendFileResponse.test.ts +192 -0
  133. package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +406 -0
  134. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +194 -0
  135. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +1169 -0
  136. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +2 -0
  137. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +1605 -0
  138. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTenantResolution.test.ts +1218 -0
  139. package/Tests/Types/AI/AIChatMessageStatus.test.ts +79 -0
  140. package/Tests/Types/AI/AIInsightStatus.test.ts +40 -0
  141. package/Tests/Types/API/HostnameAuthorityParsing.test.ts +157 -0
  142. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +27 -0
  143. package/Tests/Types/DataSource/DataSourceLimits.test.ts +71 -0
  144. package/Tests/Types/DataSource/DataSourceType.test.ts +181 -0
  145. package/Tests/Types/DomainSubdomainValidation.test.ts +90 -0
  146. package/Tests/Types/JSONFunctions.test.ts +252 -1
  147. package/Tests/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.test.ts +61 -0
  148. package/Tests/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.test.ts +62 -0
  149. package/Tests/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.test.ts +68 -0
  150. package/Tests/Types/Monitor/SnmpMonitor/SnmpVersion.test.ts +51 -0
  151. package/Tests/UI/Components/404.test.tsx +1 -1
  152. package/Tests/UI/Components/Alert.test.tsx +1 -1
  153. package/Tests/UI/Components/Badge.test.tsx +1 -1
  154. package/Tests/UI/Components/BasicForm.test.tsx +39 -10
  155. package/Tests/UI/Components/Button.test.tsx +1 -1
  156. package/Tests/UI/Components/Card.test.tsx +1 -1
  157. package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +1 -1
  158. package/Tests/UI/Components/ColorViewer.test.tsx +1 -1
  159. package/Tests/UI/Components/ComponentsModal.test.tsx +7 -1
  160. package/Tests/UI/Components/DictionaryOfStrings.test.tsx +1 -1
  161. package/Tests/UI/Components/Dropdown.test.tsx +1 -1
  162. package/Tests/UI/Components/FilePicker.test.tsx +1 -1
  163. package/Tests/UI/Components/HiddenText.test.tsx +1 -1
  164. package/Tests/UI/Components/Input.test.tsx +1 -1
  165. package/Tests/UI/Components/Loader.test.tsx +1 -1
  166. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +1 -1
  167. package/Tests/UI/Components/MasterPage.test.tsx +1 -1
  168. package/Tests/UI/Components/ModalPortalDismissal.test.tsx +489 -0
  169. package/Tests/UI/Components/ModelDelete.test.tsx +214 -0
  170. package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1 -1
  171. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +1 -1
  172. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +1 -1
  173. package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +1 -1
  174. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1 -1
  175. package/Tests/UI/Components/NavBar.test.tsx +1 -1
  176. package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +1 -1
  177. package/Tests/UI/Components/Pagination.test.tsx +1 -1
  178. package/Tests/UI/Components/Pill.test.tsx +1 -1
  179. package/Tests/UI/Components/Probe.test.tsx +1 -1
  180. package/Tests/UI/Components/ProgressBar.test.tsx +1 -1
  181. package/Tests/UI/Components/RadioButtons.test.tsx +1 -1
  182. package/Tests/UI/Components/SideMenuItem.test.tsx +1 -1
  183. package/Tests/UI/Components/SideOver.test.tsx +500 -6
  184. package/Tests/UI/Components/Tabs.test.tsx +1 -1
  185. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +1 -1
  186. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +1 -1
  187. package/Tests/UI/Components/TextArea.test.tsx +1 -1
  188. package/Tests/UI/Components/Toast.test.tsx +1 -1
  189. package/Tests/UI/Components/Toggle.test.tsx +1 -1
  190. package/Tests/UI/Components/TopSection.test.tsx +1 -1
  191. package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +1 -1
  192. package/Tests/UI/Rum/ReplayScrubber.test.tsx +1 -1
  193. package/Tests/UI/Rum/ReplayStage.test.tsx +1 -1
  194. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +1 -1
  195. package/Tests/UI/Utils/LocalStorageArrayRoundTrip.test.ts +72 -0
  196. package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +19 -2
  197. package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +44 -0
  198. package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +288 -5
  199. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +42 -0
  200. package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +27 -0
  201. package/Tests/Utils/LegacySerializedArray.test.ts +139 -0
  202. package/Tests/Utils/Monitor/MonitorDependencyRule.test.ts +190 -0
  203. package/Tests/Utils/Realtime.test.ts +78 -0
  204. package/Tests/Utils/Telemetry/SavedViewFilters.test.ts +246 -0
  205. package/Tests/__mocks__/i18next-browser-languagedetector.js +21 -0
  206. package/Types/AI/FixPullRequestCiStatus.ts +1 -1
  207. package/Types/AI/FixVerificationStatus.ts +2 -2
  208. package/Types/API/Hostname.ts +92 -4
  209. package/Types/API/URL.ts +43 -25
  210. package/Types/Billing/BalanceAdjustmentType.ts +14 -0
  211. package/Types/Billing/ProjectBalanceType.ts +13 -0
  212. package/Types/Domain.ts +26 -0
  213. package/Types/File/MimeType.ts +11 -0
  214. package/Types/JSONFunctions.ts +15 -0
  215. package/Types/Telemetry/TelemetrySavedViewState.ts +9 -1
  216. package/Types/Workflow/Components/BaseModel.ts +92 -28
  217. package/Typings/Index.d.ts +12 -0
  218. package/UI/Components/GanttChart/ChartContainer.tsx +4 -3
  219. package/UI/Components/Modal/ConfirmModal.tsx +10 -5
  220. package/UI/Components/Modal/Modal.tsx +27 -47
  221. package/UI/Components/ModelDelete/ModelDelete.tsx +23 -6
  222. package/UI/Components/SideOver/SideOver.tsx +195 -68
  223. package/UI/Utils/PageScrollLock.ts +66 -0
  224. package/Utils/Dashboard/HtmlWidgetDocument.ts +4 -2
  225. package/Utils/Dashboard/VariableInterpolation.ts +19 -1
  226. package/Utils/LegacySerializedArray.ts +60 -0
  227. package/Utils/Monitor/MonitorDependencyRule.ts +88 -0
  228. package/Utils/Telemetry/SavedViewFilters.ts +88 -0
  229. package/build/dist/Models/DatabaseModels/AIInsight.js +1 -1
  230. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -1
  231. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +2 -3
  232. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
  233. package/build/dist/Models/DatabaseModels/DeletedProject.js +640 -0
  234. package/build/dist/Models/DatabaseModels/DeletedProject.js.map +1 -0
  235. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  236. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  237. package/build/dist/Models/DatabaseModels/Monitor.js +106 -0
  238. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  239. package/build/dist/Models/DatabaseModels/Project.js +3 -3
  240. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  241. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  242. package/build/dist/Server/API/FileAPI.js +14 -2
  243. package/build/dist/Server/API/FileAPI.js.map +1 -1
  244. package/build/dist/Server/API/MicrosoftTeamsAPI.js +6 -1
  245. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  246. package/build/dist/Server/API/ProjectAPI.js +157 -4
  247. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  248. package/build/dist/Server/API/StatusPageAPI.js +27 -3
  249. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js +34 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js.map +1 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js +30 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js.map +1 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js +20 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js.map +1 -0
  256. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  257. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  258. package/build/dist/Server/Services/AIAgentService.js +17 -0
  259. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  260. package/build/dist/Server/Services/DashboardDomainService.js +55 -18
  261. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  262. package/build/dist/Server/Services/DatabaseService.js +1 -0
  263. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  264. package/build/dist/Server/Services/DeletedProjectService.js +124 -0
  265. package/build/dist/Server/Services/DeletedProjectService.js.map +1 -0
  266. package/build/dist/Server/Services/FileService.js +52 -0
  267. package/build/dist/Server/Services/FileService.js.map +1 -1
  268. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +10 -1
  269. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
  270. package/build/dist/Server/Services/IncidentPublicNoteService.js +10 -1
  271. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  272. package/build/dist/Server/Services/Index.js +2 -0
  273. package/build/dist/Server/Services/Index.js.map +1 -1
  274. package/build/dist/Server/Services/MonitorService.js +232 -0
  275. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  276. package/build/dist/Server/Services/ProbeService.js +17 -0
  277. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  278. package/build/dist/Server/Services/ProjectService.js +228 -6
  279. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  280. package/build/dist/Server/Services/PushNotificationService.js +56 -0
  281. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  282. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +10 -1
  283. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  284. package/build/dist/Server/Services/StatusPageAnnouncementService.js +54 -0
  285. package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
  286. package/build/dist/Server/Services/StatusPageDomainService.js +55 -18
  287. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  288. package/build/dist/Server/Services/TeamMemberService.js +97 -6
  289. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  290. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +1 -0
  291. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  292. package/build/dist/Server/Services/UserWebhookService.js +31 -87
  293. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  294. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +65 -0
  295. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  296. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +23 -0
  297. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
  298. package/build/dist/Server/Types/Domain.js +37 -0
  299. package/build/dist/Server/Types/Domain.js.map +1 -1
  300. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +2 -1
  301. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  302. package/build/dist/Server/Types/Workflow/Components/API/Get.js +2 -1
  303. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  304. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +2 -1
  305. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  306. package/build/dist/Server/Types/Workflow/Components/API/Post.js +2 -1
  307. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  308. package/build/dist/Server/Types/Workflow/Components/API/Put.js +2 -1
  309. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  310. package/build/dist/Server/Types/Workflow/Components/API/Utils.js +35 -2
  311. package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
  312. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +15 -11
  313. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
  314. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +2 -3
  315. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
  316. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js +21 -10
  317. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js.map +1 -1
  318. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js +21 -10
  319. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js.map +1 -1
  320. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js +18 -13
  321. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js.map +1 -1
  322. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js +18 -13
  323. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js.map +1 -1
  324. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js +43 -0
  325. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js.map +1 -0
  326. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +116 -0
  327. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -0
  328. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +7 -0
  329. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
  330. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js +24 -13
  331. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js.map +1 -1
  332. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js +27 -13
  333. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js.map +1 -1
  334. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js +14 -6
  335. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js.map +1 -1
  336. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js +42 -0
  337. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js.map +1 -0
  338. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +15 -6
  339. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
  340. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +10 -2
  341. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
  342. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
  343. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +141 -0
  344. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -1
  345. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
  346. package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
  347. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +6 -6
  348. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -1
  349. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +39 -5
  350. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  351. package/build/dist/Server/Utils/DataSource/EgressGuard.js +94 -10
  352. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  353. package/build/dist/Server/Utils/DataSource/HttpFetch.js +1 -19
  354. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
  355. package/build/dist/Server/Utils/Execute.js +2 -2
  356. package/build/dist/Server/Utils/Execute.js.map +1 -1
  357. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +13 -0
  358. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -1
  359. package/build/dist/Server/Utils/LLM/LLMService.js +43 -12
  360. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  361. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -24
  362. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  363. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js +158 -0
  364. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js.map +1 -0
  365. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +50 -30
  366. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  367. package/build/dist/Server/Utils/Monitor/MonitorResource.js +32 -0
  368. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  369. package/build/dist/Server/Utils/Response.js +112 -5
  370. package/build/dist/Server/Utils/Response.js.map +1 -1
  371. package/build/dist/Server/Utils/SSRFProtection.js +219 -53
  372. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  373. package/build/dist/Server/Utils/StartServer.js +7 -0
  374. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  375. package/build/dist/Server/Utils/VM/VMRunner.js +73 -1
  376. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  377. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +445 -43
  378. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  379. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +18 -1
  380. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  381. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  382. package/build/dist/Types/AI/FixPullRequestCiStatus.js +1 -1
  383. package/build/dist/Types/AI/FixVerificationStatus.js +2 -2
  384. package/build/dist/Types/API/Hostname.js +73 -4
  385. package/build/dist/Types/API/Hostname.js.map +1 -1
  386. package/build/dist/Types/API/URL.js +42 -24
  387. package/build/dist/Types/API/URL.js.map +1 -1
  388. package/build/dist/Types/Billing/BalanceAdjustmentType.js +15 -0
  389. package/build/dist/Types/Billing/BalanceAdjustmentType.js.map +1 -0
  390. package/build/dist/Types/Billing/ProjectBalanceType.js +14 -0
  391. package/build/dist/Types/Billing/ProjectBalanceType.js.map +1 -0
  392. package/build/dist/Types/Domain.js +22 -0
  393. package/build/dist/Types/Domain.js.map +1 -1
  394. package/build/dist/Types/File/MimeType.js +11 -0
  395. package/build/dist/Types/File/MimeType.js.map +1 -1
  396. package/build/dist/Types/JSONFunctions.js +14 -0
  397. package/build/dist/Types/JSONFunctions.js.map +1 -1
  398. package/build/dist/Types/Workflow/Components/BaseModel.js +83 -28
  399. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  400. package/build/dist/UI/Components/GanttChart/ChartContainer.js +4 -3
  401. package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +1 -1
  402. package/build/dist/UI/Components/Modal/ConfirmModal.js +3 -1
  403. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  404. package/build/dist/UI/Components/Modal/Modal.js +24 -34
  405. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  406. package/build/dist/UI/Components/ModelDelete/ModelDelete.js +11 -6
  407. package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
  408. package/build/dist/UI/Components/SideOver/SideOver.js +105 -30
  409. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  410. package/build/dist/UI/Utils/PageScrollLock.js +52 -0
  411. package/build/dist/UI/Utils/PageScrollLock.js.map +1 -0
  412. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +4 -2
  413. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -1
  414. package/build/dist/Utils/Dashboard/VariableInterpolation.js +19 -1
  415. package/build/dist/Utils/Dashboard/VariableInterpolation.js.map +1 -1
  416. package/build/dist/Utils/LegacySerializedArray.js +51 -0
  417. package/build/dist/Utils/LegacySerializedArray.js.map +1 -0
  418. package/build/dist/Utils/Monitor/MonitorDependencyRule.js +47 -0
  419. package/build/dist/Utils/Monitor/MonitorDependencyRule.js.map +1 -0
  420. package/build/dist/Utils/Telemetry/SavedViewFilters.js +52 -0
  421. package/build/dist/Utils/Telemetry/SavedViewFilters.js.map +1 -0
  422. package/jest.config.json +3 -0
  423. package/package.json +1 -1
  424. package/tsconfig.json +3 -1
@@ -572,7 +572,7 @@ export default class AIInsight extends BaseModel {
572
572
  canReadOnRelationQuery: true,
573
573
  title: "Fix AI Run ID",
574
574
  description:
575
- "The AI agent fix task queued for this insight (a CodeFix AIRun that opens a draft pull request).",
575
+ "The AI agent fix task queued for this insight (a CodeFix AIRun that opens a pull request, ready for review).",
576
576
  })
577
577
  @Column({
578
578
  type: ColumnType.ObjectID,
@@ -98,14 +98,13 @@ export default class FileModel extends BaseModel {
98
98
  @TableColumn({
99
99
  required: true,
100
100
  isDefaultValueColumn: true,
101
- type: TableColumnType.Slug,
101
+ type: TableColumnType.Boolean,
102
102
  canReadOnRelationQuery: true,
103
103
  })
104
104
  @Column({
105
105
  nullable: false,
106
106
  default: true,
107
- type: ColumnType.Slug,
108
- length: ColumnLength.Slug,
107
+ type: ColumnType.Boolean,
109
108
  })
110
109
  public isPublic?: boolean = undefined;
111
110
 
@@ -0,0 +1,595 @@
1
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
2
+ import User from "./User";
3
+ import Route from "../../Types/API/Route";
4
+ import SubscriptionStatus from "../../Types/Billing/SubscriptionStatus";
5
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
6
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
7
+ import ColumnLength from "../../Types/Database/ColumnLength";
8
+ import ColumnType from "../../Types/Database/ColumnType";
9
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
10
+ import TableColumn from "../../Types/Database/TableColumn";
11
+ import TableColumnType from "../../Types/Database/TableColumnType";
12
+ import TableMetadata from "../../Types/Database/TableMetadata";
13
+ import Email from "../../Types/Email";
14
+ import IconProp from "../../Types/Icon/IconProp";
15
+ import ObjectID from "../../Types/ObjectID";
16
+ import Phone from "../../Types/Phone";
17
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
18
+
19
+ /*
20
+ * Snapshot of a project taken at the moment it was deleted, kept so the team
21
+ * can follow up with the customer and understand why they left.
22
+ *
23
+ * Projects are hard-deleted (DatabaseService._deleteBy), so nothing about them
24
+ * survives the delete - this table is the only record that the project ever
25
+ * existed. That is also why the project columns below are a denormalised copy
26
+ * rather than a foreign key, and why the user columns keep the name, email and
27
+ * company alongside the (nullable) relation: the row has to stay readable
28
+ * after the user is gone too.
29
+ *
30
+ * Written by ProjectService's delete hooks on SaaS only (IsBillingEnabled).
31
+ * Master-admin only - empty access control arrays deny every project user, and
32
+ * root/master admin short-circuit the permission checks before they run.
33
+ */
34
+ @TableAccessControl({
35
+ create: [],
36
+ read: [],
37
+ update: [],
38
+ delete: [],
39
+ })
40
+ @CrudApiEndpoint(new Route("/deleted-project"))
41
+ @TableMetadata({
42
+ tableName: "DeletedProject",
43
+ singularName: "Deleted Project",
44
+ pluralName: "Deleted Projects",
45
+ icon: IconProp.Trash,
46
+ tableDescription:
47
+ "Record of projects that have been deleted, with the reason the customer gave, kept for customer outreach.",
48
+ })
49
+ @Entity({
50
+ name: "DeletedProject",
51
+ })
52
+ export default class DeletedProject extends BaseModel {
53
+ @ColumnAccessControl({
54
+ create: [],
55
+ read: [],
56
+ update: [],
57
+ })
58
+ @Index("idx_deleted_project_project_id")
59
+ @TableColumn({
60
+ required: true,
61
+ type: TableColumnType.ObjectID,
62
+ title: "Project ID",
63
+ description:
64
+ "ID of the project that was deleted. Not a relation - the project row no longer exists.",
65
+ example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
66
+ })
67
+ @Column({
68
+ nullable: false,
69
+ type: ColumnType.ObjectID,
70
+ transformer: ObjectID.getDatabaseTransformer(),
71
+ })
72
+ public projectId?: ObjectID = undefined;
73
+
74
+ @ColumnAccessControl({
75
+ create: [],
76
+ read: [],
77
+ update: [],
78
+ })
79
+ @TableColumn({
80
+ required: true,
81
+ type: TableColumnType.ShortText,
82
+ title: "Project Name",
83
+ description: "Name the deleted project had.",
84
+ example: "My Awesome Project",
85
+ })
86
+ @Column({
87
+ nullable: false,
88
+ type: ColumnType.ShortText,
89
+ length: ColumnLength.ShortText,
90
+ })
91
+ public projectName?: string = undefined;
92
+
93
+ @ColumnAccessControl({
94
+ create: [],
95
+ read: [],
96
+ update: [],
97
+ })
98
+ @TableColumn({
99
+ required: false,
100
+ type: TableColumnType.Slug,
101
+ title: "Project Slug",
102
+ description: "Slug the deleted project had.",
103
+ example: "my-awesome-project",
104
+ })
105
+ @Column({
106
+ nullable: true,
107
+ type: ColumnType.Slug,
108
+ length: ColumnLength.Slug,
109
+ })
110
+ public projectSlug?: string | undefined = undefined;
111
+
112
+ @ColumnAccessControl({
113
+ create: [],
114
+ read: [],
115
+ update: [],
116
+ })
117
+ @TableColumn({
118
+ required: false,
119
+ type: TableColumnType.Date,
120
+ title: "Project Created At",
121
+ description:
122
+ "When the deleted project was created. Together with Deleted At this gives the lifetime of the account.",
123
+ })
124
+ @Column({
125
+ nullable: true,
126
+ type: ColumnType.Date,
127
+ })
128
+ public projectCreatedAt?: Date | undefined = undefined;
129
+
130
+ @ColumnAccessControl({
131
+ create: [],
132
+ read: [],
133
+ update: [],
134
+ })
135
+ @Index("idx_deleted_project_project_deleted_at")
136
+ @TableColumn({
137
+ required: true,
138
+ type: TableColumnType.Date,
139
+ title: "Project Deleted At",
140
+ description: "When the project was deleted.",
141
+ })
142
+ @Column({
143
+ nullable: false,
144
+ type: ColumnType.Date,
145
+ })
146
+ public projectDeletedAt?: Date = undefined;
147
+
148
+ @ColumnAccessControl({
149
+ create: [],
150
+ read: [],
151
+ update: [],
152
+ })
153
+ @TableColumn({
154
+ required: false,
155
+ type: TableColumnType.VeryLongText,
156
+ title: "Deletion Reason",
157
+ description:
158
+ "Why the customer said they were deleting the project, as typed into the delete confirmation. Empty when the delete did not come from the dashboard or the customer skipped the question.",
159
+ example: "We consolidated onto a single project.",
160
+ })
161
+ @Column({
162
+ nullable: true,
163
+ type: ColumnType.VeryLongText,
164
+ })
165
+ public deletionReason?: string | undefined = undefined;
166
+
167
+ @ColumnAccessControl({
168
+ create: [],
169
+ read: [],
170
+ update: [],
171
+ })
172
+ @TableColumn({
173
+ manyToOneRelationColumn: "projectDeletedByUserId",
174
+ type: TableColumnType.Entity,
175
+ modelType: User,
176
+ title: "Project Deleted by User",
177
+ description:
178
+ "Relation to the User who deleted the project (if a User deleted it).",
179
+ example: "b2c3d4e5-f6a7-8901-bcde-f12345678901",
180
+ })
181
+ @ManyToOne(
182
+ () => {
183
+ return User;
184
+ },
185
+ {
186
+ cascade: false,
187
+ eager: false,
188
+ nullable: true,
189
+ onDelete: "SET NULL",
190
+ orphanedRowAction: "nullify",
191
+ },
192
+ )
193
+ @JoinColumn({ name: "projectDeletedByUserId" })
194
+ public projectDeletedByUser?: User | undefined = undefined;
195
+
196
+ @ColumnAccessControl({
197
+ create: [],
198
+ read: [],
199
+ update: [],
200
+ })
201
+ @TableColumn({
202
+ required: false,
203
+ type: TableColumnType.ObjectID,
204
+ title: "Project Deleted by User ID",
205
+ description:
206
+ "ID of the User who deleted the project (if a User deleted it).",
207
+ example: "b2c3d4e5-f6a7-8901-bcde-f12345678901",
208
+ })
209
+ @Column({
210
+ nullable: true,
211
+ type: ColumnType.ObjectID,
212
+ transformer: ObjectID.getDatabaseTransformer(),
213
+ })
214
+ public projectDeletedByUserId?: ObjectID | undefined = undefined;
215
+
216
+ @ColumnAccessControl({
217
+ create: [],
218
+ read: [],
219
+ update: [],
220
+ })
221
+ @TableColumn({
222
+ required: false,
223
+ type: TableColumnType.Name,
224
+ title: "Project Deleted by User Name",
225
+ description:
226
+ "Name of the User who deleted the project, copied so it survives that user being deleted.",
227
+ example: "Jane Doe",
228
+ })
229
+ @Column({
230
+ nullable: true,
231
+ type: ColumnType.Name,
232
+ length: ColumnLength.Name,
233
+ })
234
+ public projectDeletedByUserName?: string | undefined = undefined;
235
+
236
+ @ColumnAccessControl({
237
+ create: [],
238
+ read: [],
239
+ update: [],
240
+ })
241
+ @TableColumn({
242
+ required: false,
243
+ type: TableColumnType.Email,
244
+ title: "Project Deleted by User Email",
245
+ description:
246
+ "Email of the User who deleted the project. This is the address to reach out on.",
247
+ example: "jane@example.com",
248
+ })
249
+ @Column({
250
+ nullable: true,
251
+ type: ColumnType.Email,
252
+ length: ColumnLength.Email,
253
+ transformer: Email.getDatabaseTransformer(),
254
+ })
255
+ public projectDeletedByUserEmail?: Email | undefined = undefined;
256
+
257
+ @ColumnAccessControl({
258
+ create: [],
259
+ read: [],
260
+ update: [],
261
+ })
262
+ @TableColumn({
263
+ manyToOneRelationColumn: "projectCreatedByUserId",
264
+ type: TableColumnType.Entity,
265
+ modelType: User,
266
+ title: "Project Created by User",
267
+ description:
268
+ "Relation to the User who created the project (if a User created it).",
269
+ example: "c3d4e5f6-a7b8-9012-cdef-123456789012",
270
+ })
271
+ @ManyToOne(
272
+ () => {
273
+ return User;
274
+ },
275
+ {
276
+ cascade: false,
277
+ eager: false,
278
+ nullable: true,
279
+ onDelete: "SET NULL",
280
+ orphanedRowAction: "nullify",
281
+ },
282
+ )
283
+ @JoinColumn({ name: "projectCreatedByUserId" })
284
+ public projectCreatedByUser?: User | undefined = undefined;
285
+
286
+ @ColumnAccessControl({
287
+ create: [],
288
+ read: [],
289
+ update: [],
290
+ })
291
+ @TableColumn({
292
+ required: false,
293
+ type: TableColumnType.ObjectID,
294
+ title: "Project Created by User ID",
295
+ description:
296
+ "ID of the User who created the project (if a User created it).",
297
+ example: "c3d4e5f6-a7b8-9012-cdef-123456789012",
298
+ })
299
+ @Column({
300
+ nullable: true,
301
+ type: ColumnType.ObjectID,
302
+ transformer: ObjectID.getDatabaseTransformer(),
303
+ })
304
+ public projectCreatedByUserId?: ObjectID | undefined = undefined;
305
+
306
+ @ColumnAccessControl({
307
+ create: [],
308
+ read: [],
309
+ update: [],
310
+ })
311
+ @TableColumn({
312
+ required: false,
313
+ type: TableColumnType.Name,
314
+ title: "Project Created by User Name",
315
+ description:
316
+ "Name of the User who created the project, copied so it survives that user being deleted.",
317
+ example: "John Doe",
318
+ })
319
+ @Column({
320
+ nullable: true,
321
+ type: ColumnType.Name,
322
+ length: ColumnLength.Name,
323
+ })
324
+ public projectCreatedByUserName?: string | undefined = undefined;
325
+
326
+ @ColumnAccessControl({
327
+ create: [],
328
+ read: [],
329
+ update: [],
330
+ })
331
+ @TableColumn({
332
+ required: false,
333
+ type: TableColumnType.Email,
334
+ title: "Project Created by User Email",
335
+ description: "Email of the User who created the project.",
336
+ example: "john@example.com",
337
+ })
338
+ @Column({
339
+ nullable: true,
340
+ type: ColumnType.Email,
341
+ length: ColumnLength.Email,
342
+ transformer: Email.getDatabaseTransformer(),
343
+ })
344
+ public projectCreatedByUserEmail?: Email | undefined = undefined;
345
+
346
+ @ColumnAccessControl({
347
+ create: [],
348
+ read: [],
349
+ update: [],
350
+ })
351
+ @TableColumn({
352
+ required: false,
353
+ type: TableColumnType.ShortText,
354
+ title: "Company Name",
355
+ description:
356
+ "Company the project belonged to, taken from the user who created the project and falling back to the user who deleted it.",
357
+ example: "Acme Inc.",
358
+ })
359
+ @Column({
360
+ nullable: true,
361
+ type: ColumnType.ShortText,
362
+ length: ColumnLength.ShortText,
363
+ })
364
+ public companyName?: string | undefined = undefined;
365
+
366
+ @ColumnAccessControl({
367
+ create: [],
368
+ read: [],
369
+ update: [],
370
+ })
371
+ @TableColumn({
372
+ required: false,
373
+ type: TableColumnType.Phone,
374
+ title: "Company Phone Number",
375
+ description: "Phone number on file for the company, for outreach.",
376
+ example: "+1-555-555-5555",
377
+ })
378
+ @Column({
379
+ nullable: true,
380
+ type: ColumnType.Phone,
381
+ length: ColumnLength.Phone,
382
+ transformer: Phone.getDatabaseTransformer(),
383
+ })
384
+ public companyPhoneNumber?: Phone | undefined = undefined;
385
+
386
+ @ColumnAccessControl({
387
+ create: [],
388
+ read: [],
389
+ update: [],
390
+ })
391
+ @TableColumn({
392
+ required: false,
393
+ type: TableColumnType.ShortText,
394
+ title: "Company Size",
395
+ description: "Company size the customer selected when they signed up.",
396
+ example: "11-50 People",
397
+ })
398
+ @Column({
399
+ nullable: true,
400
+ type: ColumnType.ShortText,
401
+ length: ColumnLength.ShortText,
402
+ })
403
+ public companySize?: string | undefined = undefined;
404
+
405
+ @ColumnAccessControl({
406
+ create: [],
407
+ read: [],
408
+ update: [],
409
+ })
410
+ @TableColumn({
411
+ required: false,
412
+ type: TableColumnType.ShortText,
413
+ title: "Job Role",
414
+ description: "Job role the customer selected when they signed up.",
415
+ example: "Engineering Manager",
416
+ })
417
+ @Column({
418
+ nullable: true,
419
+ type: ColumnType.ShortText,
420
+ length: ColumnLength.ShortText,
421
+ })
422
+ public jobRole?: string | undefined = undefined;
423
+
424
+ @ColumnAccessControl({
425
+ create: [],
426
+ read: [],
427
+ update: [],
428
+ })
429
+ @TableColumn({
430
+ required: false,
431
+ type: TableColumnType.ShortText,
432
+ title: "Plan Name",
433
+ description: "Plan the project was on when it was deleted.",
434
+ example: "Growth",
435
+ })
436
+ @Column({
437
+ nullable: true,
438
+ type: ColumnType.ShortText,
439
+ length: ColumnLength.ShortText,
440
+ })
441
+ public planName?: string | undefined = undefined;
442
+
443
+ @ColumnAccessControl({
444
+ create: [],
445
+ read: [],
446
+ update: [],
447
+ })
448
+ @TableColumn({
449
+ required: false,
450
+ type: TableColumnType.ShortText,
451
+ title: "Payment Provider Plan ID",
452
+ description: "Billing plan ID the project was subscribed to.",
453
+ example: "price_1234567890",
454
+ })
455
+ @Column({
456
+ nullable: true,
457
+ type: ColumnType.ShortText,
458
+ length: ColumnLength.ShortText,
459
+ })
460
+ public paymentProviderPlanId?: string | undefined = undefined;
461
+
462
+ @ColumnAccessControl({
463
+ create: [],
464
+ read: [],
465
+ update: [],
466
+ })
467
+ @TableColumn({
468
+ required: false,
469
+ type: TableColumnType.ShortText,
470
+ title: "Payment Provider Customer ID",
471
+ description:
472
+ "Billing customer ID of the project, so the account can be looked up in the payment provider.",
473
+ example: "cus_1234567890",
474
+ })
475
+ @Column({
476
+ nullable: true,
477
+ type: ColumnType.ShortText,
478
+ length: ColumnLength.ShortText,
479
+ })
480
+ public paymentProviderCustomerId?: string | undefined = undefined;
481
+
482
+ @ColumnAccessControl({
483
+ create: [],
484
+ read: [],
485
+ update: [],
486
+ })
487
+ @TableColumn({
488
+ required: false,
489
+ type: TableColumnType.ShortText,
490
+ title: "Payment Provider Subscription ID",
491
+ description: "Billing subscription ID of the project.",
492
+ example: "sub_1234567890",
493
+ })
494
+ @Column({
495
+ nullable: true,
496
+ type: ColumnType.ShortText,
497
+ length: ColumnLength.ShortText,
498
+ })
499
+ public paymentProviderSubscriptionId?: string | undefined = undefined;
500
+
501
+ @ColumnAccessControl({
502
+ create: [],
503
+ read: [],
504
+ update: [],
505
+ })
506
+ @TableColumn({
507
+ required: false,
508
+ type: TableColumnType.ShortText,
509
+ title: "Payment Provider Subscription Status",
510
+ description:
511
+ "Status the billing subscription was in when the project was deleted.",
512
+ example: "active",
513
+ })
514
+ @Column({
515
+ nullable: true,
516
+ type: ColumnType.ShortText,
517
+ length: ColumnLength.ShortText,
518
+ })
519
+ public paymentProviderSubscriptionStatus?: SubscriptionStatus | undefined =
520
+ undefined;
521
+
522
+ @ColumnAccessControl({
523
+ create: [],
524
+ read: [],
525
+ update: [],
526
+ })
527
+ @TableColumn({
528
+ required: false,
529
+ type: TableColumnType.Number,
530
+ title: "Payment Provider Subscription Seats",
531
+ description:
532
+ "Number of seats the project was billed for when it was deleted.",
533
+ example: "5",
534
+ })
535
+ @Column({
536
+ nullable: true,
537
+ type: ColumnType.Number,
538
+ })
539
+ public paymentProviderSubscriptionSeats?: number | undefined = undefined;
540
+
541
+ @ColumnAccessControl({
542
+ create: [],
543
+ read: [],
544
+ update: [],
545
+ })
546
+ @TableColumn({
547
+ required: false,
548
+ type: TableColumnType.Date,
549
+ title: "Trial Ends At",
550
+ description: "When the project's trial ended, or was going to end.",
551
+ })
552
+ @Column({
553
+ nullable: true,
554
+ type: ColumnType.Date,
555
+ })
556
+ public trialEndsAt?: Date | undefined = undefined;
557
+
558
+ @ColumnAccessControl({
559
+ create: [],
560
+ read: [],
561
+ update: [],
562
+ })
563
+ @TableColumn({
564
+ required: false,
565
+ type: TableColumnType.Number,
566
+ title: "Active Monitor Count",
567
+ description:
568
+ "Number of active monitors the project had when it was deleted - a rough measure of how much the customer had invested in it.",
569
+ example: "12",
570
+ })
571
+ @Column({
572
+ nullable: true,
573
+ type: ColumnType.Number,
574
+ })
575
+ public activeMonitorCount?: number | undefined = undefined;
576
+
577
+ @ColumnAccessControl({
578
+ create: [],
579
+ read: [],
580
+ update: [],
581
+ })
582
+ @TableColumn({
583
+ required: false,
584
+ type: TableColumnType.Boolean,
585
+ title: "Was Project Blocked",
586
+ description:
587
+ "Whether the project was blocked when it was deleted. Blocked projects are deleted for very different reasons than active ones.",
588
+ example: "false",
589
+ })
590
+ @Column({
591
+ nullable: true,
592
+ type: ColumnType.Boolean,
593
+ })
594
+ public wasProjectBlocked?: boolean | undefined = undefined;
595
+ }
@@ -424,6 +424,7 @@ import ProjectSCIM from "./ProjectSCIM";
424
424
  import ProjectSCIMLog from "./ProjectSCIMLog";
425
425
  import StatusPageSCIMLog from "./StatusPageSCIMLog";
426
426
  import MarketingConversion from "./MarketingConversion";
427
+ import DeletedProject from "./DeletedProject";
427
428
 
428
429
  const AllModelTypes: Array<{
429
430
  new (): BaseModel;
@@ -869,6 +870,7 @@ const AllModelTypes: Array<{
869
870
  RumSessionErasureRequest,
870
871
  RumSessionPin,
871
872
  MarketingConversion,
873
+ DeletedProject,
872
874
  ];
873
875
 
874
876
  const modelTypeMap: { [key: string]: { new (): BaseModel } } = {};