@oneuptime/common 11.4.0 → 11.5.0

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 (473) hide show
  1. package/Models/DatabaseModels/AIRun.ts +50 -0
  2. package/Models/DatabaseModels/AlertSeverity.ts +6 -0
  3. package/Models/DatabaseModels/IncidentSeverity.ts +6 -0
  4. package/Models/DatabaseModels/Index.ts +16 -0
  5. package/Models/DatabaseModels/IoTDeviceCredential.ts +471 -0
  6. package/Models/DatabaseModels/LlmLog.ts +56 -0
  7. package/Models/DatabaseModels/LlmProvider.ts +33 -0
  8. package/Models/DatabaseModels/NetworkDevice.ts +1385 -0
  9. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +717 -0
  10. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +514 -0
  11. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +596 -0
  12. package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +487 -0
  13. package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +486 -0
  14. package/Models/DatabaseModels/NetworkInterface.ts +563 -0
  15. package/Models/DatabaseModels/Project.ts +145 -0
  16. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +54 -0
  17. package/Server/API/AIAgentTaskAPI.ts +10 -24
  18. package/Server/API/AIInvestigationAPI.ts +131 -63
  19. package/Server/API/AlertAPI.ts +5 -0
  20. package/Server/API/IncidentAPI.ts +10 -0
  21. package/Server/API/IncidentEpisodeAPI.ts +5 -0
  22. package/Server/API/LlmProviderAPI.ts +4 -0
  23. package/Server/API/ScheduledMaintenanceAPI.ts +5 -0
  24. package/Server/API/TelemetryAPI.ts +4 -3
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.ts +19 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.ts +25 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.ts +31 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.ts +19 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.ts +105 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.ts +15 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.ts +192 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.ts +37 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.ts +19 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.ts +25 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.ts +31 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.ts +79 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.ts +49 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +24 -0
  39. package/Server/Services/AIAgentTaskService.ts +62 -0
  40. package/Server/Services/AIRunService.ts +58 -0
  41. package/Server/Services/AIService.ts +101 -0
  42. package/Server/Services/AnalyticsDatabaseService.ts +27 -0
  43. package/Server/Services/IncidentService.ts +14 -41
  44. package/Server/Services/Index.ts +14 -0
  45. package/Server/Services/IoTDeviceCredentialService.ts +351 -0
  46. package/Server/Services/IoTDeviceService.ts +64 -21
  47. package/Server/Services/LlmLogService.ts +26 -0
  48. package/Server/Services/LlmProviderService.ts +3 -0
  49. package/Server/Services/LogAggregationService.ts +29 -11
  50. package/Server/Services/MetricService.ts +603 -13
  51. package/Server/Services/MonitorService.ts +4 -1
  52. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +10 -0
  53. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +204 -0
  54. package/Server/Services/NetworkDeviceLabelRuleService.ts +14 -0
  55. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +222 -0
  56. package/Server/Services/NetworkDeviceOwnerRuleService.ts +14 -0
  57. package/Server/Services/NetworkDeviceOwnerTeamService.ts +10 -0
  58. package/Server/Services/NetworkDeviceOwnerUserService.ts +10 -0
  59. package/Server/Services/NetworkDeviceService.ts +50 -0
  60. package/Server/Services/NetworkInterfaceService.ts +10 -0
  61. package/Server/Services/TelemetryEntityRelationshipService.ts +23 -0
  62. package/Server/Services/TelemetryEntityService.ts +72 -2
  63. package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +244 -12
  64. package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +92 -19
  65. package/Server/Utils/AI/Sentinel/InvestigationQueue.ts +493 -0
  66. package/Server/Utils/AI/Sentinel/README.md +10 -0
  67. package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +88 -68
  68. package/Server/Utils/AI/Toolbox/Index.ts +2 -1
  69. package/Server/Utils/AI/Toolbox/MetricTools.ts +391 -0
  70. package/Server/Utils/LLM/LLMService.ts +21 -0
  71. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
  72. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +170 -2
  73. package/Server/Utils/Monitor/IoTDeviceAbsenceSeries.ts +101 -0
  74. package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
  75. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +1 -1
  76. package/Server/Utils/Monitor/MonitorIncident.ts +19 -3
  77. package/Server/Utils/Monitor/MonitorMetricUtil.ts +195 -2
  78. package/Server/Utils/Monitor/MonitorResource.ts +77 -21
  79. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -1
  80. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +201 -0
  81. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +215 -0
  82. package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +169 -0
  83. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
  84. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +173 -0
  85. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +97 -0
  86. package/Tests/Server/Services/IoTDeviceService.test.ts +54 -0
  87. package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
  88. package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
  89. package/Tests/Server/Utils/AI/BaselineAnomalyTool.test.ts +253 -0
  90. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +44 -0
  91. package/Tests/Server/Utils/AI/SentinelAlertGating.test.ts +360 -0
  92. package/Tests/Server/Utils/AI/SentinelInvestigationQueue.test.ts +295 -0
  93. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +59 -0
  94. package/Tests/Server/Utils/Monitor/IoTDeviceAbsenceSeries.test.ts +113 -0
  95. package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +198 -0
  96. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
  97. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
  98. package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
  99. package/Tests/Types/Monitor/MonitorType.test.ts +1 -1
  100. package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
  101. package/Tests/UI/Components/Dropdown.test.tsx +17 -0
  102. package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
  103. package/Tests/UI/Components/Modal.test.tsx +144 -2
  104. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
  105. package/Tests/UI/Utils/Theme.test.ts +161 -0
  106. package/Tests/Utils/Monitor/LatencyMatrixUtil.test.ts +111 -0
  107. package/Types/AI/AIRunStatus.ts +9 -0
  108. package/Types/BaseDatabase/AggregateBy.ts +12 -0
  109. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  110. package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +24 -0
  111. package/Types/Dashboard/DashboardTemplates.ts +9 -1
  112. package/Types/LlmLogStatus.ts +1 -0
  113. package/Types/Monitor/CriteriaFilter.ts +9 -0
  114. package/Types/Monitor/HttpPhaseTimings.ts +16 -0
  115. package/Types/Monitor/IotAlertTemplates.ts +22 -3
  116. package/Types/Monitor/LatencyMatrix.ts +27 -0
  117. package/Types/Monitor/MonitorCriteriaInstance.ts +2 -2
  118. package/Types/Monitor/MonitorMetricType.ts +27 -0
  119. package/Types/Monitor/MonitorStep.ts +36 -11
  120. package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +55 -0
  121. package/Types/Monitor/MonitorStepSnmpMonitor.ts +8 -0
  122. package/Types/Monitor/MonitorType.ts +14 -9
  123. package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
  124. package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +12 -0
  125. package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +116 -0
  126. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +29 -0
  127. package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +31 -0
  128. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +24 -0
  129. package/Types/Monitor/SnmpMonitor/SnmpTrap.ts +20 -0
  130. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +173 -0
  131. package/Types/Permission.ts +314 -0
  132. package/Types/Probe/ProbeMonitorResponse.ts +22 -0
  133. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
  134. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
  135. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
  136. package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
  137. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  138. package/UI/Components/Divider/Divider.tsx +1 -1
  139. package/UI/Components/Dropdown/Dropdown.tsx +13 -4
  140. package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
  141. package/UI/Components/ErrorBoundary.tsx +2 -1
  142. package/UI/Components/EventItem/EventItem.tsx +2 -2
  143. package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
  144. package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
  145. package/UI/Components/Header/Header.tsx +7 -0
  146. package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
  147. package/UI/Components/Icon/Icon.tsx +8 -6
  148. package/UI/Components/Label/Label.tsx +2 -2
  149. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
  150. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
  151. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
  152. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
  153. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  154. package/UI/Components/Modal/Modal.tsx +213 -121
  155. package/UI/Components/Modal/ModalFooter.tsx +33 -22
  156. package/UI/Components/ModelTable/TableView.tsx +1 -1
  157. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
  158. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +2 -2
  159. package/UI/Components/Pill/Pill.tsx +21 -13
  160. package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
  161. package/UI/Components/Tabs/Tabs.tsx +10 -1
  162. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
  163. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
  164. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
  165. package/UI/Components/Workflow/Component.tsx +53 -33
  166. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
  167. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
  168. package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
  169. package/UI/Components/Workflow/Workflow.tsx +13 -11
  170. package/UI/Utils/Navigation.ts +10 -1
  171. package/UI/Utils/Theme.ts +140 -0
  172. package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +99 -0
  173. package/Utils/Dashboard/Components/Index.ts +7 -0
  174. package/Utils/Monitor/LatencyMatrixUtil.ts +162 -0
  175. package/Utils/Monitor/MonitorMetricType.ts +141 -3
  176. package/Utils/Monitor/NetworkTopologyUtil.ts +159 -0
  177. package/Utils/Telemetry/EntityRelationship.ts +11 -0
  178. package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
  179. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  180. package/build/dist/Models/DatabaseModels/AlertSeverity.js +6 -0
  181. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  182. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +6 -0
  183. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  184. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  185. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js +493 -0
  187. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js.map +1 -0
  188. package/build/dist/Models/DatabaseModels/LlmLog.js +58 -0
  189. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/LlmProvider.js +33 -0
  191. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/NetworkDevice.js +1426 -0
  193. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -0
  194. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +738 -0
  195. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -0
  196. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +522 -0
  197. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -0
  198. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +603 -0
  199. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +503 -0
  201. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -0
  202. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +502 -0
  203. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -0
  204. package/build/dist/Models/DatabaseModels/NetworkInterface.js +589 -0
  205. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/Project.js +147 -0
  207. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +57 -0
  209. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
  210. package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
  211. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  212. package/build/dist/Server/API/AIInvestigationAPI.js +95 -55
  213. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  214. package/build/dist/Server/API/AlertAPI.js +5 -0
  215. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  216. package/build/dist/Server/API/IncidentAPI.js +10 -0
  217. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  218. package/build/dist/Server/API/IncidentEpisodeAPI.js +5 -0
  219. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  220. package/build/dist/Server/API/LlmProviderAPI.js +5 -7
  221. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  222. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +5 -0
  223. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  224. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js +12 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js.map +1 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js +14 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js.map +1 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js +18 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js.map +1 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js +12 -0
  232. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js.map +1 -0
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js +51 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js.map +1 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js +12 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js +101 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js +18 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js +12 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js +14 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js.map +1 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js +16 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js.map +1 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js +38 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js.map +1 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js +22 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js.map +1 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +24 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  253. package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
  254. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
  255. package/build/dist/Server/Services/AIRunService.js +33 -0
  256. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  257. package/build/dist/Server/Services/AIService.js +82 -9
  258. package/build/dist/Server/Services/AIService.js.map +1 -1
  259. package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
  260. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  261. package/build/dist/Server/Services/IncidentService.js +14 -25
  262. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  263. package/build/dist/Server/Services/Index.js +14 -0
  264. package/build/dist/Server/Services/Index.js.map +1 -1
  265. package/build/dist/Server/Services/IoTDeviceCredentialService.js +321 -0
  266. package/build/dist/Server/Services/IoTDeviceCredentialService.js.map +1 -0
  267. package/build/dist/Server/Services/IoTDeviceService.js +49 -15
  268. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  269. package/build/dist/Server/Services/LlmLogService.js +29 -0
  270. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  271. package/build/dist/Server/Services/LlmProviderService.js +3 -0
  272. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  273. package/build/dist/Server/Services/LogAggregationService.js +21 -7
  274. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  275. package/build/dist/Server/Services/MetricService.js +449 -7
  276. package/build/dist/Server/Services/MetricService.js.map +1 -1
  277. package/build/dist/Server/Services/MonitorService.js +2 -1
  278. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  279. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +9 -0
  280. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -0
  281. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +166 -0
  282. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -0
  283. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +13 -0
  284. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -0
  285. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +186 -0
  286. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -0
  287. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +13 -0
  288. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -0
  289. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +9 -0
  290. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -0
  291. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +9 -0
  292. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -0
  293. package/build/dist/Server/Services/NetworkDeviceService.js +52 -0
  294. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -0
  295. package/build/dist/Server/Services/NetworkInterfaceService.js +9 -0
  296. package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -0
  297. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +22 -0
  298. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  299. package/build/dist/Server/Services/TelemetryEntityService.js +64 -2
  300. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  301. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +189 -9
  302. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -1
  303. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +84 -17
  304. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -1
  305. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js +428 -0
  306. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +1 -0
  307. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +63 -47
  308. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -1
  309. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -1
  310. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  311. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +300 -0
  312. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -1
  313. package/build/dist/Server/Utils/LLM/LLMService.js +16 -0
  314. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  315. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
  316. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  317. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +130 -2
  318. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  319. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js +81 -0
  320. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js.map +1 -0
  321. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +18 -7
  322. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  323. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1 -1
  324. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  325. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -10
  326. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  327. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +155 -5
  328. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  329. package/build/dist/Server/Utils/Monitor/MonitorResource.js +76 -30
  330. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  331. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -1
  332. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  333. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +147 -0
  334. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -0
  335. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +167 -0
  336. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -0
  337. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +93 -0
  338. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -0
  339. package/build/dist/Types/AI/AIRunStatus.js +9 -0
  340. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  341. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  342. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  343. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
  344. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
  345. package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
  346. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  347. package/build/dist/Types/LlmLogStatus.js +1 -0
  348. package/build/dist/Types/LlmLogStatus.js.map +1 -1
  349. package/build/dist/Types/Monitor/CriteriaFilter.js +9 -0
  350. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  351. package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
  352. package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
  353. package/build/dist/Types/Monitor/IotAlertTemplates.js +7 -7
  354. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  355. package/build/dist/Types/Monitor/LatencyMatrix.js +2 -0
  356. package/build/dist/Types/Monitor/LatencyMatrix.js.map +1 -0
  357. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +2 -2
  358. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  359. package/build/dist/Types/Monitor/MonitorMetricType.js +24 -0
  360. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  361. package/build/dist/Types/Monitor/MonitorStep.js +22 -9
  362. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  363. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +36 -0
  364. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -0
  365. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +3 -0
  366. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -1
  367. package/build/dist/Types/Monitor/MonitorType.js +14 -9
  368. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  369. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
  370. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
  371. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js +2 -0
  372. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js.map +1 -0
  373. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +89 -0
  374. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -0
  375. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js +2 -0
  376. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js.map +1 -0
  377. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js +2 -0
  378. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js.map +1 -0
  379. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js +2 -0
  380. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js.map +1 -0
  381. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +137 -0
  382. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -0
  383. package/build/dist/Types/Permission.js +280 -0
  384. package/build/dist/Types/Permission.js.map +1 -1
  385. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
  386. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  387. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
  388. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  389. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  390. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  391. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
  392. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  393. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
  394. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  395. package/build/dist/UI/Components/Divider/Divider.js +1 -1
  396. package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
  397. package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
  398. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  399. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
  400. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  401. package/build/dist/UI/Components/ErrorBoundary.js +2 -1
  402. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  403. package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
  404. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  405. package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
  406. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  407. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
  408. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  409. package/build/dist/UI/Components/Header/Header.js +1 -0
  410. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  411. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  412. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  413. package/build/dist/UI/Components/Icon/Icon.js +8 -6
  414. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  415. package/build/dist/UI/Components/Label/Label.js +2 -2
  416. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  417. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
  418. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  419. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
  420. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  421. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
  422. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
  423. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  424. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  425. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  426. package/build/dist/UI/Components/Modal/Modal.js +109 -51
  427. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  428. package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
  429. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  430. package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
  431. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  432. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
  433. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  434. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -2
  435. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  436. package/build/dist/UI/Components/Pill/Pill.js +12 -13
  437. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  438. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
  439. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  440. package/build/dist/UI/Components/Tabs/Tabs.js +3 -1
  441. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  442. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  443. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  444. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
  445. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  446. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
  447. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  448. package/build/dist/UI/Components/Workflow/Component.js +43 -33
  449. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  450. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
  451. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  452. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
  453. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  454. package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
  455. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  456. package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
  457. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  458. package/build/dist/UI/Utils/Navigation.js +11 -1
  459. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  460. package/build/dist/UI/Utils/Theme.js +106 -0
  461. package/build/dist/UI/Utils/Theme.js.map +1 -0
  462. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +89 -0
  463. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
  464. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  465. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  466. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js +89 -0
  467. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js.map +1 -0
  468. package/build/dist/Utils/Monitor/MonitorMetricType.js +138 -4
  469. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  470. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +112 -0
  471. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -0
  472. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  473. package/package.json +1 -1
@@ -0,0 +1,1385 @@
1
+ import Label from "./Label";
2
+ import Probe from "./Probe";
3
+ import Project from "./Project";
4
+ import User from "./User";
5
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
6
+ import Route from "../../Types/API/Route";
7
+ import LldpNeighbor from "../../Types/Monitor/SnmpMonitor/LldpNeighbor";
8
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
9
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
10
+ import AccessControlColumn from "../../Types/Database/AccessControlColumn";
11
+ import ColumnLength from "../../Types/Database/ColumnLength";
12
+ import ColumnType from "../../Types/Database/ColumnType";
13
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
14
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
15
+ import SlugifyColumn from "../../Types/Database/SlugifyColumn";
16
+ import TableColumn from "../../Types/Database/TableColumn";
17
+ import TableColumnType from "../../Types/Database/TableColumnType";
18
+ import TableMetadata from "../../Types/Database/TableMetadata";
19
+ import TenantColumn from "../../Types/Database/TenantColumn";
20
+ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
21
+ import IconProp from "../../Types/Icon/IconProp";
22
+ import { JSONObject } from "../../Types/JSON";
23
+ import ObjectID from "../../Types/ObjectID";
24
+ import Permission from "../../Types/Permission";
25
+ import {
26
+ Column,
27
+ Entity,
28
+ Index,
29
+ JoinColumn,
30
+ JoinTable,
31
+ ManyToMany,
32
+ ManyToOne,
33
+ } from "typeorm";
34
+
35
+ @AccessControlColumn("labels")
36
+ @EnableDocumentation()
37
+ @TenantColumn("projectId")
38
+ @TableAccessControl({
39
+ create: [
40
+ Permission.ProjectOwner,
41
+ Permission.ProjectAdmin,
42
+ Permission.ProjectMember,
43
+ Permission.SettingsAdmin,
44
+ Permission.SettingsMember,
45
+ Permission.CreateNetworkDevice,
46
+ ],
47
+ read: [
48
+ Permission.ProjectOwner,
49
+ Permission.ProjectAdmin,
50
+ Permission.ProjectMember,
51
+ Permission.Viewer,
52
+ Permission.SettingsAdmin,
53
+ Permission.SettingsMember,
54
+ Permission.SettingsViewer,
55
+ Permission.ReadNetworkDevice,
56
+ ],
57
+ delete: [
58
+ Permission.ProjectOwner,
59
+ Permission.ProjectAdmin,
60
+ Permission.ProjectMember,
61
+ Permission.SettingsAdmin,
62
+ Permission.SettingsMember,
63
+ Permission.DeleteNetworkDevice,
64
+ ],
65
+ update: [
66
+ Permission.ProjectOwner,
67
+ Permission.ProjectAdmin,
68
+ Permission.ProjectMember,
69
+ Permission.SettingsAdmin,
70
+ Permission.SettingsMember,
71
+ Permission.EditNetworkDevice,
72
+ ],
73
+ })
74
+ @CrudApiEndpoint(new Route("/network-device"))
75
+ @SlugifyColumn("name", "slug")
76
+ @Index(["projectId", "isArchived"])
77
+ @TableMetadata({
78
+ tableName: "NetworkDevice",
79
+ singularName: "Network Device",
80
+ pluralName: "Network Devices",
81
+ icon: IconProp.Signal,
82
+ tableDescription:
83
+ "Network Devices (routers, switches, firewalls) that are being monitored in this project via SNMP polling and traps.",
84
+ })
85
+ @Entity({
86
+ name: "NetworkDevice",
87
+ })
88
+ export default class NetworkDevice extends BaseModel {
89
+ @ColumnAccessControl({
90
+ create: [
91
+ Permission.ProjectOwner,
92
+ Permission.ProjectAdmin,
93
+ Permission.ProjectMember,
94
+ Permission.SettingsAdmin,
95
+ Permission.SettingsMember,
96
+ Permission.CreateNetworkDevice,
97
+ ],
98
+ read: [
99
+ Permission.ProjectOwner,
100
+ Permission.ProjectAdmin,
101
+ Permission.ProjectMember,
102
+ Permission.Viewer,
103
+ Permission.SettingsAdmin,
104
+ Permission.SettingsMember,
105
+ Permission.SettingsViewer,
106
+ Permission.ReadNetworkDevice,
107
+ ],
108
+ update: [],
109
+ })
110
+ @TableColumn({
111
+ manyToOneRelationColumn: "projectId",
112
+ type: TableColumnType.Entity,
113
+ modelType: Project,
114
+ title: "Project",
115
+ description: "Relation to Project Resource in which this object belongs",
116
+ })
117
+ @ManyToOne(
118
+ () => {
119
+ return Project;
120
+ },
121
+ {
122
+ eager: false,
123
+ nullable: true,
124
+ onDelete: "CASCADE",
125
+ orphanedRowAction: "nullify",
126
+ },
127
+ )
128
+ @JoinColumn({ name: "projectId" })
129
+ public project?: Project = undefined;
130
+
131
+ @ColumnAccessControl({
132
+ create: [
133
+ Permission.ProjectOwner,
134
+ Permission.ProjectAdmin,
135
+ Permission.ProjectMember,
136
+ Permission.SettingsAdmin,
137
+ Permission.SettingsMember,
138
+ Permission.CreateNetworkDevice,
139
+ ],
140
+ read: [
141
+ Permission.ProjectOwner,
142
+ Permission.ProjectAdmin,
143
+ Permission.ProjectMember,
144
+ Permission.Viewer,
145
+ Permission.SettingsAdmin,
146
+ Permission.SettingsMember,
147
+ Permission.SettingsViewer,
148
+ Permission.ReadNetworkDevice,
149
+ ],
150
+ update: [],
151
+ })
152
+ @Index()
153
+ @TableColumn({
154
+ type: TableColumnType.ObjectID,
155
+ required: true,
156
+ canReadOnRelationQuery: true,
157
+ title: "Project ID",
158
+ description: "ID of your OneUptime Project in which this object belongs",
159
+ })
160
+ @Column({
161
+ type: ColumnType.ObjectID,
162
+ nullable: false,
163
+ transformer: ObjectID.getDatabaseTransformer(),
164
+ })
165
+ public projectId?: ObjectID = undefined;
166
+
167
+ @ColumnAccessControl({
168
+ create: [
169
+ Permission.ProjectOwner,
170
+ Permission.ProjectAdmin,
171
+ Permission.ProjectMember,
172
+ Permission.SettingsAdmin,
173
+ Permission.SettingsMember,
174
+ Permission.CreateNetworkDevice,
175
+ ],
176
+ read: [
177
+ Permission.ProjectOwner,
178
+ Permission.ProjectAdmin,
179
+ Permission.ProjectMember,
180
+ Permission.Viewer,
181
+ Permission.SettingsAdmin,
182
+ Permission.SettingsMember,
183
+ Permission.SettingsViewer,
184
+ Permission.ReadNetworkDevice,
185
+ ],
186
+ update: [
187
+ Permission.ProjectOwner,
188
+ Permission.ProjectAdmin,
189
+ Permission.ProjectMember,
190
+ Permission.SettingsAdmin,
191
+ Permission.SettingsMember,
192
+ Permission.EditNetworkDevice,
193
+ ],
194
+ })
195
+ @TableColumn({
196
+ required: true,
197
+ type: TableColumnType.ShortText,
198
+ canReadOnRelationQuery: true,
199
+ title: "Name",
200
+ description: "Friendly name for this network device",
201
+ example: "core-switch-1",
202
+ })
203
+ @Column({
204
+ nullable: false,
205
+ type: ColumnType.ShortText,
206
+ length: ColumnLength.ShortText,
207
+ })
208
+ @UniqueColumnBy("projectId")
209
+ public name?: string = undefined;
210
+
211
+ @ColumnAccessControl({
212
+ create: [],
213
+ read: [
214
+ Permission.ProjectOwner,
215
+ Permission.ProjectAdmin,
216
+ Permission.ProjectMember,
217
+ Permission.Viewer,
218
+ Permission.SettingsAdmin,
219
+ Permission.SettingsMember,
220
+ Permission.SettingsViewer,
221
+ Permission.ReadNetworkDevice,
222
+ ],
223
+ update: [],
224
+ })
225
+ @TableColumn({
226
+ required: true,
227
+ unique: true,
228
+ type: TableColumnType.Slug,
229
+ computed: true,
230
+ title: "Slug",
231
+ description: "Friendly globally unique name for your object",
232
+ })
233
+ @Column({
234
+ nullable: false,
235
+ type: ColumnType.Slug,
236
+ length: ColumnLength.Slug,
237
+ })
238
+ public slug?: string = undefined;
239
+
240
+ @ColumnAccessControl({
241
+ create: [
242
+ Permission.ProjectOwner,
243
+ Permission.ProjectAdmin,
244
+ Permission.ProjectMember,
245
+ Permission.SettingsAdmin,
246
+ Permission.SettingsMember,
247
+ Permission.CreateNetworkDevice,
248
+ ],
249
+ read: [
250
+ Permission.ProjectOwner,
251
+ Permission.ProjectAdmin,
252
+ Permission.ProjectMember,
253
+ Permission.Viewer,
254
+ Permission.SettingsAdmin,
255
+ Permission.SettingsMember,
256
+ Permission.SettingsViewer,
257
+ Permission.ReadNetworkDevice,
258
+ ],
259
+ update: [
260
+ Permission.ProjectOwner,
261
+ Permission.ProjectAdmin,
262
+ Permission.ProjectMember,
263
+ Permission.SettingsAdmin,
264
+ Permission.SettingsMember,
265
+ Permission.EditNetworkDevice,
266
+ ],
267
+ })
268
+ @TableColumn({
269
+ required: false,
270
+ type: TableColumnType.LongText,
271
+ canReadOnRelationQuery: true,
272
+ title: "Description",
273
+ description: "Friendly description for this network device",
274
+ example: "Core switch in the US East datacenter",
275
+ })
276
+ @Column({
277
+ nullable: true,
278
+ type: ColumnType.LongText,
279
+ length: ColumnLength.LongText,
280
+ })
281
+ public description?: string = undefined;
282
+
283
+ @ColumnAccessControl({
284
+ create: [
285
+ Permission.ProjectOwner,
286
+ Permission.ProjectAdmin,
287
+ Permission.ProjectMember,
288
+ Permission.SettingsAdmin,
289
+ Permission.SettingsMember,
290
+ Permission.CreateNetworkDevice,
291
+ ],
292
+ read: [
293
+ Permission.ProjectOwner,
294
+ Permission.ProjectAdmin,
295
+ Permission.ProjectMember,
296
+ Permission.Viewer,
297
+ Permission.SettingsAdmin,
298
+ Permission.SettingsMember,
299
+ Permission.SettingsViewer,
300
+ Permission.ReadNetworkDevice,
301
+ ],
302
+ update: [
303
+ Permission.ProjectOwner,
304
+ Permission.ProjectAdmin,
305
+ Permission.ProjectMember,
306
+ Permission.SettingsAdmin,
307
+ Permission.SettingsMember,
308
+ Permission.EditNetworkDevice,
309
+ ],
310
+ })
311
+ @Index()
312
+ @TableColumn({
313
+ required: true,
314
+ type: TableColumnType.ShortText,
315
+ canReadOnRelationQuery: true,
316
+ title: "Hostname",
317
+ description:
318
+ "IP address or hostname the probe polls; also matches SNMP trap sources",
319
+ example: "10.0.0.1",
320
+ })
321
+ @Column({
322
+ nullable: false,
323
+ type: ColumnType.ShortText,
324
+ length: ColumnLength.ShortText,
325
+ })
326
+ public hostname?: string = undefined;
327
+
328
+ @ColumnAccessControl({
329
+ create: [
330
+ Permission.ProjectOwner,
331
+ Permission.ProjectAdmin,
332
+ Permission.ProjectMember,
333
+ Permission.SettingsAdmin,
334
+ Permission.SettingsMember,
335
+ Permission.CreateNetworkDevice,
336
+ ],
337
+ read: [
338
+ Permission.ProjectOwner,
339
+ Permission.ProjectAdmin,
340
+ Permission.ProjectMember,
341
+ Permission.Viewer,
342
+ Permission.SettingsAdmin,
343
+ Permission.SettingsMember,
344
+ Permission.SettingsViewer,
345
+ Permission.ReadNetworkDevice,
346
+ ],
347
+ update: [
348
+ Permission.ProjectOwner,
349
+ Permission.ProjectAdmin,
350
+ Permission.ProjectMember,
351
+ Permission.SettingsAdmin,
352
+ Permission.SettingsMember,
353
+ Permission.EditNetworkDevice,
354
+ ],
355
+ })
356
+ @TableColumn({
357
+ manyToOneRelationColumn: "probeId",
358
+ type: TableColumnType.Entity,
359
+ modelType: Probe,
360
+ title: "Polling Probe",
361
+ description: "Relation to the Probe that polls this network device",
362
+ })
363
+ @ManyToOne(
364
+ () => {
365
+ return Probe;
366
+ },
367
+ {
368
+ eager: false,
369
+ nullable: true,
370
+ onDelete: "SET NULL",
371
+ orphanedRowAction: "nullify",
372
+ },
373
+ )
374
+ @JoinColumn({ name: "probeId" })
375
+ public probe?: Probe = undefined;
376
+
377
+ @ColumnAccessControl({
378
+ create: [
379
+ Permission.ProjectOwner,
380
+ Permission.ProjectAdmin,
381
+ Permission.ProjectMember,
382
+ Permission.SettingsAdmin,
383
+ Permission.SettingsMember,
384
+ Permission.CreateNetworkDevice,
385
+ ],
386
+ read: [
387
+ Permission.ProjectOwner,
388
+ Permission.ProjectAdmin,
389
+ Permission.ProjectMember,
390
+ Permission.Viewer,
391
+ Permission.SettingsAdmin,
392
+ Permission.SettingsMember,
393
+ Permission.SettingsViewer,
394
+ Permission.ReadNetworkDevice,
395
+ ],
396
+ update: [
397
+ Permission.ProjectOwner,
398
+ Permission.ProjectAdmin,
399
+ Permission.ProjectMember,
400
+ Permission.SettingsAdmin,
401
+ Permission.SettingsMember,
402
+ Permission.EditNetworkDevice,
403
+ ],
404
+ })
405
+ @TableColumn({
406
+ type: TableColumnType.ObjectID,
407
+ required: false,
408
+ canReadOnRelationQuery: true,
409
+ title: "Polling Probe ID",
410
+ description: "ID of the Probe that polls this network device",
411
+ })
412
+ @Column({
413
+ type: ColumnType.ObjectID,
414
+ nullable: true,
415
+ transformer: ObjectID.getDatabaseTransformer(),
416
+ })
417
+ public probeId?: ObjectID = undefined;
418
+
419
+ @ColumnAccessControl({
420
+ create: [
421
+ Permission.ProjectOwner,
422
+ Permission.ProjectAdmin,
423
+ Permission.ProjectMember,
424
+ Permission.SettingsAdmin,
425
+ Permission.SettingsMember,
426
+ Permission.CreateNetworkDevice,
427
+ ],
428
+ read: [
429
+ Permission.ProjectOwner,
430
+ Permission.ProjectAdmin,
431
+ Permission.ProjectMember,
432
+ Permission.Viewer,
433
+ Permission.SettingsAdmin,
434
+ Permission.SettingsMember,
435
+ Permission.SettingsViewer,
436
+ Permission.ReadNetworkDevice,
437
+ ],
438
+ update: [
439
+ Permission.ProjectOwner,
440
+ Permission.ProjectAdmin,
441
+ Permission.ProjectMember,
442
+ Permission.SettingsAdmin,
443
+ Permission.SettingsMember,
444
+ Permission.EditNetworkDevice,
445
+ ],
446
+ })
447
+ @TableColumn({
448
+ required: false,
449
+ type: TableColumnType.ShortText,
450
+ canReadOnRelationQuery: true,
451
+ title: "SNMP Version",
452
+ description: "SNMP version to use when polling this device (V1, V2c, V3)",
453
+ example: "V2c",
454
+ })
455
+ @Column({
456
+ nullable: true,
457
+ type: ColumnType.ShortText,
458
+ length: ColumnLength.ShortText,
459
+ default: "V2c",
460
+ })
461
+ public snmpVersion?: string = undefined;
462
+
463
+ @ColumnAccessControl({
464
+ create: [
465
+ Permission.ProjectOwner,
466
+ Permission.ProjectAdmin,
467
+ Permission.ProjectMember,
468
+ Permission.SettingsAdmin,
469
+ Permission.SettingsMember,
470
+ Permission.CreateNetworkDevice,
471
+ ],
472
+ read: [
473
+ Permission.ProjectOwner,
474
+ Permission.ProjectAdmin,
475
+ Permission.ProjectMember,
476
+ Permission.Viewer,
477
+ Permission.SettingsAdmin,
478
+ Permission.SettingsMember,
479
+ Permission.SettingsViewer,
480
+ Permission.ReadNetworkDevice,
481
+ ],
482
+ update: [
483
+ Permission.ProjectOwner,
484
+ Permission.ProjectAdmin,
485
+ Permission.ProjectMember,
486
+ Permission.SettingsAdmin,
487
+ Permission.SettingsMember,
488
+ Permission.EditNetworkDevice,
489
+ ],
490
+ })
491
+ @TableColumn({
492
+ required: false,
493
+ type: TableColumnType.ShortText,
494
+ title: "SNMP Community String",
495
+ description: "Community string used for SNMP v1/v2c polling",
496
+ example: "public",
497
+ })
498
+ @Column({
499
+ nullable: true,
500
+ type: ColumnType.ShortText,
501
+ length: ColumnLength.ShortText,
502
+ })
503
+ public snmpCommunityString?: string = undefined;
504
+
505
+ @ColumnAccessControl({
506
+ create: [
507
+ Permission.ProjectOwner,
508
+ Permission.ProjectAdmin,
509
+ Permission.ProjectMember,
510
+ Permission.SettingsAdmin,
511
+ Permission.SettingsMember,
512
+ Permission.CreateNetworkDevice,
513
+ ],
514
+ read: [
515
+ Permission.ProjectOwner,
516
+ Permission.ProjectAdmin,
517
+ Permission.ProjectMember,
518
+ Permission.Viewer,
519
+ Permission.SettingsAdmin,
520
+ Permission.SettingsMember,
521
+ Permission.SettingsViewer,
522
+ Permission.ReadNetworkDevice,
523
+ ],
524
+ update: [
525
+ Permission.ProjectOwner,
526
+ Permission.ProjectAdmin,
527
+ Permission.ProjectMember,
528
+ Permission.SettingsAdmin,
529
+ Permission.SettingsMember,
530
+ Permission.EditNetworkDevice,
531
+ ],
532
+ })
533
+ @TableColumn({
534
+ required: false,
535
+ type: TableColumnType.Number,
536
+ title: "SNMP Port",
537
+ description: "UDP port used for SNMP polling",
538
+ example: "161",
539
+ })
540
+ @Column({
541
+ type: ColumnType.Number,
542
+ nullable: true,
543
+ default: 161,
544
+ })
545
+ public snmpPort?: number = undefined;
546
+
547
+ @ColumnAccessControl({
548
+ create: [
549
+ Permission.ProjectOwner,
550
+ Permission.ProjectAdmin,
551
+ Permission.ProjectMember,
552
+ Permission.SettingsAdmin,
553
+ Permission.SettingsMember,
554
+ Permission.CreateNetworkDevice,
555
+ ],
556
+ read: [
557
+ Permission.ProjectOwner,
558
+ Permission.ProjectAdmin,
559
+ Permission.ProjectMember,
560
+ Permission.Viewer,
561
+ Permission.SettingsAdmin,
562
+ Permission.SettingsMember,
563
+ Permission.SettingsViewer,
564
+ Permission.ReadNetworkDevice,
565
+ ],
566
+ update: [
567
+ Permission.ProjectOwner,
568
+ Permission.ProjectAdmin,
569
+ Permission.ProjectMember,
570
+ Permission.SettingsAdmin,
571
+ Permission.SettingsMember,
572
+ Permission.EditNetworkDevice,
573
+ ],
574
+ })
575
+ @TableColumn({
576
+ type: TableColumnType.JSON,
577
+ required: false,
578
+ title: "SNMP v3 Authentication",
579
+ description:
580
+ "Deprecated: SNMP v3 auth is now stored in the snmpV3* columns below. Retained for reading legacy devices.",
581
+ })
582
+ @Column({
583
+ type: ColumnType.JSON,
584
+ nullable: true,
585
+ })
586
+ public snmpV3Auth?: JSONObject = undefined;
587
+
588
+ @ColumnAccessControl({
589
+ create: [
590
+ Permission.ProjectOwner,
591
+ Permission.ProjectAdmin,
592
+ Permission.ProjectMember,
593
+ Permission.SettingsAdmin,
594
+ Permission.SettingsMember,
595
+ Permission.CreateNetworkDevice,
596
+ ],
597
+ read: [
598
+ Permission.ProjectOwner,
599
+ Permission.ProjectAdmin,
600
+ Permission.ProjectMember,
601
+ Permission.Viewer,
602
+ Permission.SettingsAdmin,
603
+ Permission.SettingsMember,
604
+ Permission.SettingsViewer,
605
+ Permission.ReadNetworkDevice,
606
+ ],
607
+ update: [
608
+ Permission.ProjectOwner,
609
+ Permission.ProjectAdmin,
610
+ Permission.ProjectMember,
611
+ Permission.SettingsAdmin,
612
+ Permission.SettingsMember,
613
+ Permission.EditNetworkDevice,
614
+ ],
615
+ })
616
+ @TableColumn({
617
+ required: false,
618
+ type: TableColumnType.ShortText,
619
+ title: "SNMP v3 Security Level",
620
+ description:
621
+ "SNMP v3 security level: noAuthNoPriv, authNoPriv, or authPriv",
622
+ example: "authPriv",
623
+ })
624
+ @Column({
625
+ nullable: true,
626
+ type: ColumnType.ShortText,
627
+ length: ColumnLength.ShortText,
628
+ })
629
+ public snmpV3SecurityLevel?: string = undefined;
630
+
631
+ @ColumnAccessControl({
632
+ create: [
633
+ Permission.ProjectOwner,
634
+ Permission.ProjectAdmin,
635
+ Permission.ProjectMember,
636
+ Permission.SettingsAdmin,
637
+ Permission.SettingsMember,
638
+ Permission.CreateNetworkDevice,
639
+ ],
640
+ read: [
641
+ Permission.ProjectOwner,
642
+ Permission.ProjectAdmin,
643
+ Permission.ProjectMember,
644
+ Permission.Viewer,
645
+ Permission.SettingsAdmin,
646
+ Permission.SettingsMember,
647
+ Permission.SettingsViewer,
648
+ Permission.ReadNetworkDevice,
649
+ ],
650
+ update: [
651
+ Permission.ProjectOwner,
652
+ Permission.ProjectAdmin,
653
+ Permission.ProjectMember,
654
+ Permission.SettingsAdmin,
655
+ Permission.SettingsMember,
656
+ Permission.EditNetworkDevice,
657
+ ],
658
+ })
659
+ @TableColumn({
660
+ required: false,
661
+ type: TableColumnType.ShortText,
662
+ title: "SNMP v3 Username",
663
+ description: "Security name (username) used for SNMP v3 polling",
664
+ example: "monitoring",
665
+ })
666
+ @Column({
667
+ nullable: true,
668
+ type: ColumnType.ShortText,
669
+ length: ColumnLength.ShortText,
670
+ })
671
+ public snmpV3Username?: string = undefined;
672
+
673
+ @ColumnAccessControl({
674
+ create: [
675
+ Permission.ProjectOwner,
676
+ Permission.ProjectAdmin,
677
+ Permission.ProjectMember,
678
+ Permission.SettingsAdmin,
679
+ Permission.SettingsMember,
680
+ Permission.CreateNetworkDevice,
681
+ ],
682
+ read: [
683
+ Permission.ProjectOwner,
684
+ Permission.ProjectAdmin,
685
+ Permission.ProjectMember,
686
+ Permission.Viewer,
687
+ Permission.SettingsAdmin,
688
+ Permission.SettingsMember,
689
+ Permission.SettingsViewer,
690
+ Permission.ReadNetworkDevice,
691
+ ],
692
+ update: [
693
+ Permission.ProjectOwner,
694
+ Permission.ProjectAdmin,
695
+ Permission.ProjectMember,
696
+ Permission.SettingsAdmin,
697
+ Permission.SettingsMember,
698
+ Permission.EditNetworkDevice,
699
+ ],
700
+ })
701
+ @TableColumn({
702
+ required: false,
703
+ type: TableColumnType.ShortText,
704
+ title: "SNMP v3 Authentication Protocol",
705
+ description: "SNMP v3 authentication protocol: MD5, SHA, SHA256, or SHA512",
706
+ example: "SHA",
707
+ })
708
+ @Column({
709
+ nullable: true,
710
+ type: ColumnType.ShortText,
711
+ length: ColumnLength.ShortText,
712
+ })
713
+ public snmpV3AuthProtocol?: string = undefined;
714
+
715
+ @ColumnAccessControl({
716
+ create: [
717
+ Permission.ProjectOwner,
718
+ Permission.ProjectAdmin,
719
+ Permission.ProjectMember,
720
+ Permission.SettingsAdmin,
721
+ Permission.SettingsMember,
722
+ Permission.CreateNetworkDevice,
723
+ ],
724
+ read: [
725
+ Permission.ProjectOwner,
726
+ Permission.ProjectAdmin,
727
+ Permission.ProjectMember,
728
+ Permission.Viewer,
729
+ Permission.SettingsAdmin,
730
+ Permission.SettingsMember,
731
+ Permission.SettingsViewer,
732
+ Permission.ReadNetworkDevice,
733
+ ],
734
+ update: [
735
+ Permission.ProjectOwner,
736
+ Permission.ProjectAdmin,
737
+ Permission.ProjectMember,
738
+ Permission.SettingsAdmin,
739
+ Permission.SettingsMember,
740
+ Permission.EditNetworkDevice,
741
+ ],
742
+ })
743
+ @TableColumn({
744
+ required: false,
745
+ type: TableColumnType.LongText,
746
+ title: "SNMP v3 Authentication Key",
747
+ description: "SNMP v3 authentication passphrase",
748
+ })
749
+ @Column({
750
+ nullable: true,
751
+ type: ColumnType.LongText,
752
+ })
753
+ public snmpV3AuthKey?: string = undefined;
754
+
755
+ @ColumnAccessControl({
756
+ create: [
757
+ Permission.ProjectOwner,
758
+ Permission.ProjectAdmin,
759
+ Permission.ProjectMember,
760
+ Permission.SettingsAdmin,
761
+ Permission.SettingsMember,
762
+ Permission.CreateNetworkDevice,
763
+ ],
764
+ read: [
765
+ Permission.ProjectOwner,
766
+ Permission.ProjectAdmin,
767
+ Permission.ProjectMember,
768
+ Permission.Viewer,
769
+ Permission.SettingsAdmin,
770
+ Permission.SettingsMember,
771
+ Permission.SettingsViewer,
772
+ Permission.ReadNetworkDevice,
773
+ ],
774
+ update: [
775
+ Permission.ProjectOwner,
776
+ Permission.ProjectAdmin,
777
+ Permission.ProjectMember,
778
+ Permission.SettingsAdmin,
779
+ Permission.SettingsMember,
780
+ Permission.EditNetworkDevice,
781
+ ],
782
+ })
783
+ @TableColumn({
784
+ required: false,
785
+ type: TableColumnType.ShortText,
786
+ title: "SNMP v3 Privacy Protocol",
787
+ description: "SNMP v3 privacy (encryption) protocol: DES, AES, or AES256",
788
+ example: "AES",
789
+ })
790
+ @Column({
791
+ nullable: true,
792
+ type: ColumnType.ShortText,
793
+ length: ColumnLength.ShortText,
794
+ })
795
+ public snmpV3PrivProtocol?: string = undefined;
796
+
797
+ @ColumnAccessControl({
798
+ create: [
799
+ Permission.ProjectOwner,
800
+ Permission.ProjectAdmin,
801
+ Permission.ProjectMember,
802
+ Permission.SettingsAdmin,
803
+ Permission.SettingsMember,
804
+ Permission.CreateNetworkDevice,
805
+ ],
806
+ read: [
807
+ Permission.ProjectOwner,
808
+ Permission.ProjectAdmin,
809
+ Permission.ProjectMember,
810
+ Permission.Viewer,
811
+ Permission.SettingsAdmin,
812
+ Permission.SettingsMember,
813
+ Permission.SettingsViewer,
814
+ Permission.ReadNetworkDevice,
815
+ ],
816
+ update: [
817
+ Permission.ProjectOwner,
818
+ Permission.ProjectAdmin,
819
+ Permission.ProjectMember,
820
+ Permission.SettingsAdmin,
821
+ Permission.SettingsMember,
822
+ Permission.EditNetworkDevice,
823
+ ],
824
+ })
825
+ @TableColumn({
826
+ required: false,
827
+ type: TableColumnType.LongText,
828
+ title: "SNMP v3 Privacy Key",
829
+ description: "SNMP v3 privacy (encryption) passphrase",
830
+ })
831
+ @Column({
832
+ nullable: true,
833
+ type: ColumnType.LongText,
834
+ })
835
+ public snmpV3PrivKey?: string = undefined;
836
+
837
+ @ColumnAccessControl({
838
+ create: [],
839
+ read: [
840
+ Permission.ProjectOwner,
841
+ Permission.ProjectAdmin,
842
+ Permission.ProjectMember,
843
+ Permission.Viewer,
844
+ Permission.SettingsAdmin,
845
+ Permission.SettingsMember,
846
+ Permission.SettingsViewer,
847
+ Permission.ReadNetworkDevice,
848
+ ],
849
+ update: [
850
+ Permission.ProjectOwner,
851
+ Permission.ProjectAdmin,
852
+ Permission.EditNetworkDevice,
853
+ ],
854
+ })
855
+ @TableColumn({
856
+ required: false,
857
+ type: TableColumnType.LongText,
858
+ canReadOnRelationQuery: true,
859
+ title: "System Description",
860
+ description:
861
+ "System description (sysDescr) enriched from SNMP walks of this device",
862
+ example: "Cisco IOS Software, C2960 Software",
863
+ })
864
+ @Column({
865
+ nullable: true,
866
+ type: ColumnType.LongText,
867
+ length: ColumnLength.LongText,
868
+ })
869
+ public sysDescr?: string = undefined;
870
+
871
+ @ColumnAccessControl({
872
+ create: [],
873
+ read: [
874
+ Permission.ProjectOwner,
875
+ Permission.ProjectAdmin,
876
+ Permission.ProjectMember,
877
+ Permission.Viewer,
878
+ Permission.SettingsAdmin,
879
+ Permission.SettingsMember,
880
+ Permission.SettingsViewer,
881
+ Permission.ReadNetworkDevice,
882
+ ],
883
+ update: [
884
+ Permission.ProjectOwner,
885
+ Permission.ProjectAdmin,
886
+ Permission.EditNetworkDevice,
887
+ ],
888
+ })
889
+ @TableColumn({
890
+ required: false,
891
+ type: TableColumnType.ShortText,
892
+ canReadOnRelationQuery: true,
893
+ title: "System Name",
894
+ description:
895
+ "System name (sysName) enriched from SNMP walks of this device",
896
+ example: "core-sw-01.example.com",
897
+ })
898
+ @Column({
899
+ nullable: true,
900
+ type: ColumnType.ShortText,
901
+ length: ColumnLength.ShortText,
902
+ })
903
+ public sysName?: string = undefined;
904
+
905
+ @ColumnAccessControl({
906
+ create: [],
907
+ read: [
908
+ Permission.ProjectOwner,
909
+ Permission.ProjectAdmin,
910
+ Permission.ProjectMember,
911
+ Permission.Viewer,
912
+ Permission.SettingsAdmin,
913
+ Permission.SettingsMember,
914
+ Permission.SettingsViewer,
915
+ Permission.ReadNetworkDevice,
916
+ ],
917
+ update: [
918
+ Permission.ProjectOwner,
919
+ Permission.ProjectAdmin,
920
+ Permission.EditNetworkDevice,
921
+ ],
922
+ })
923
+ @TableColumn({
924
+ required: false,
925
+ type: TableColumnType.JSON,
926
+ title: "LLDP Neighbors",
927
+ description:
928
+ "LLDP neighbors discovered on the last SNMP walk, used to build the network topology graph. Managed by the probe.",
929
+ })
930
+ @Column({
931
+ nullable: true,
932
+ type: ColumnType.JSON,
933
+ })
934
+ public lldpNeighbors?: Array<LldpNeighbor> = undefined;
935
+
936
+ @ColumnAccessControl({
937
+ create: [],
938
+ read: [
939
+ Permission.ProjectOwner,
940
+ Permission.ProjectAdmin,
941
+ Permission.ProjectMember,
942
+ Permission.Viewer,
943
+ Permission.SettingsAdmin,
944
+ Permission.SettingsMember,
945
+ Permission.SettingsViewer,
946
+ Permission.ReadNetworkDevice,
947
+ ],
948
+ update: [
949
+ Permission.ProjectOwner,
950
+ Permission.ProjectAdmin,
951
+ Permission.EditNetworkDevice,
952
+ ],
953
+ })
954
+ @TableColumn({
955
+ required: false,
956
+ type: TableColumnType.Date,
957
+ canReadOnRelationQuery: true,
958
+ title: "Last Seen At",
959
+ description: "When SNMP data was last received from this device",
960
+ })
961
+ @Column({
962
+ nullable: true,
963
+ type: ColumnType.Date,
964
+ })
965
+ public lastSeenAt?: Date = undefined;
966
+
967
+ @ColumnAccessControl({
968
+ create: [],
969
+ read: [
970
+ Permission.ProjectOwner,
971
+ Permission.ProjectAdmin,
972
+ Permission.ProjectMember,
973
+ Permission.Viewer,
974
+ Permission.SettingsAdmin,
975
+ Permission.SettingsMember,
976
+ Permission.SettingsViewer,
977
+ Permission.ReadNetworkDevice,
978
+ ],
979
+ update: [
980
+ Permission.ProjectOwner,
981
+ Permission.ProjectAdmin,
982
+ Permission.EditNetworkDevice,
983
+ ],
984
+ })
985
+ @TableColumn({
986
+ type: TableColumnType.Number,
987
+ title: "Interfaces Total",
988
+ description: "Cached total count of interfaces on this device",
989
+ })
990
+ @Column({
991
+ type: ColumnType.Number,
992
+ nullable: true,
993
+ default: 0,
994
+ })
995
+ public interfacesTotal?: number = undefined;
996
+
997
+ @ColumnAccessControl({
998
+ create: [],
999
+ read: [
1000
+ Permission.ProjectOwner,
1001
+ Permission.ProjectAdmin,
1002
+ Permission.ProjectMember,
1003
+ Permission.Viewer,
1004
+ Permission.SettingsAdmin,
1005
+ Permission.SettingsMember,
1006
+ Permission.SettingsViewer,
1007
+ Permission.ReadNetworkDevice,
1008
+ ],
1009
+ update: [
1010
+ Permission.ProjectOwner,
1011
+ Permission.ProjectAdmin,
1012
+ Permission.EditNetworkDevice,
1013
+ ],
1014
+ })
1015
+ @TableColumn({
1016
+ type: TableColumnType.Number,
1017
+ title: "Interfaces Up",
1018
+ description: "Cached count of operationally up interfaces on this device",
1019
+ })
1020
+ @Column({
1021
+ type: ColumnType.Number,
1022
+ nullable: true,
1023
+ default: 0,
1024
+ })
1025
+ public interfacesUp?: number = undefined;
1026
+
1027
+ @ColumnAccessControl({
1028
+ create: [],
1029
+ read: [
1030
+ Permission.ProjectOwner,
1031
+ Permission.ProjectAdmin,
1032
+ Permission.ProjectMember,
1033
+ Permission.Viewer,
1034
+ Permission.SettingsAdmin,
1035
+ Permission.SettingsMember,
1036
+ Permission.SettingsViewer,
1037
+ Permission.ReadNetworkDevice,
1038
+ ],
1039
+ update: [
1040
+ Permission.ProjectOwner,
1041
+ Permission.ProjectAdmin,
1042
+ Permission.EditNetworkDevice,
1043
+ ],
1044
+ })
1045
+ @TableColumn({
1046
+ type: TableColumnType.Number,
1047
+ title: "Interfaces Down",
1048
+ description: "Cached count of operationally down interfaces on this device",
1049
+ })
1050
+ @Column({
1051
+ type: ColumnType.Number,
1052
+ nullable: true,
1053
+ default: 0,
1054
+ })
1055
+ public interfacesDown?: number = undefined;
1056
+
1057
+ @ColumnAccessControl({
1058
+ create: [
1059
+ Permission.ProjectOwner,
1060
+ Permission.ProjectAdmin,
1061
+ Permission.ProjectMember,
1062
+ Permission.SettingsAdmin,
1063
+ Permission.SettingsMember,
1064
+ Permission.CreateNetworkDevice,
1065
+ ],
1066
+ read: [
1067
+ Permission.ProjectOwner,
1068
+ Permission.ProjectAdmin,
1069
+ Permission.ProjectMember,
1070
+ Permission.Viewer,
1071
+ Permission.SettingsAdmin,
1072
+ Permission.SettingsMember,
1073
+ Permission.SettingsViewer,
1074
+ Permission.ReadNetworkDevice,
1075
+ ],
1076
+ update: [],
1077
+ })
1078
+ @TableColumn({
1079
+ manyToOneRelationColumn: "createdByUserId",
1080
+ type: TableColumnType.Entity,
1081
+ modelType: User,
1082
+ title: "Created by User",
1083
+ description:
1084
+ "Relation to User who created this object (if this object was created by a User)",
1085
+ })
1086
+ @ManyToOne(
1087
+ () => {
1088
+ return User;
1089
+ },
1090
+ {
1091
+ eager: false,
1092
+ nullable: true,
1093
+ onDelete: "SET NULL",
1094
+ orphanedRowAction: "nullify",
1095
+ },
1096
+ )
1097
+ @JoinColumn({ name: "createdByUserId" })
1098
+ public createdByUser?: User = undefined;
1099
+
1100
+ @ColumnAccessControl({
1101
+ create: [
1102
+ Permission.ProjectOwner,
1103
+ Permission.ProjectAdmin,
1104
+ Permission.ProjectMember,
1105
+ Permission.SettingsAdmin,
1106
+ Permission.SettingsMember,
1107
+ Permission.CreateNetworkDevice,
1108
+ ],
1109
+ read: [
1110
+ Permission.ProjectOwner,
1111
+ Permission.ProjectAdmin,
1112
+ Permission.ProjectMember,
1113
+ Permission.Viewer,
1114
+ Permission.SettingsAdmin,
1115
+ Permission.SettingsMember,
1116
+ Permission.SettingsViewer,
1117
+ Permission.ReadNetworkDevice,
1118
+ ],
1119
+ update: [],
1120
+ })
1121
+ @TableColumn({
1122
+ type: TableColumnType.ObjectID,
1123
+ title: "Created by User ID",
1124
+ description:
1125
+ "User ID who created this object (if this object was created by a User)",
1126
+ })
1127
+ @Column({
1128
+ type: ColumnType.ObjectID,
1129
+ nullable: true,
1130
+ transformer: ObjectID.getDatabaseTransformer(),
1131
+ })
1132
+ public createdByUserId?: ObjectID = undefined;
1133
+
1134
+ @ColumnAccessControl({
1135
+ create: [
1136
+ Permission.ProjectOwner,
1137
+ Permission.ProjectAdmin,
1138
+ Permission.ProjectMember,
1139
+ Permission.SettingsAdmin,
1140
+ Permission.SettingsMember,
1141
+ Permission.CreateNetworkDevice,
1142
+ ],
1143
+ read: [
1144
+ Permission.ProjectOwner,
1145
+ Permission.ProjectAdmin,
1146
+ Permission.ProjectMember,
1147
+ Permission.Viewer,
1148
+ Permission.SettingsAdmin,
1149
+ Permission.SettingsMember,
1150
+ Permission.SettingsViewer,
1151
+ Permission.ReadNetworkDevice,
1152
+ ],
1153
+ update: [
1154
+ Permission.ProjectOwner,
1155
+ Permission.ProjectAdmin,
1156
+ Permission.ProjectMember,
1157
+ Permission.SettingsAdmin,
1158
+ Permission.SettingsMember,
1159
+ Permission.EditNetworkDevice,
1160
+ ],
1161
+ })
1162
+ @TableColumn({
1163
+ isDefaultValueColumn: true,
1164
+ required: true,
1165
+ type: TableColumnType.Boolean,
1166
+ title: "Is Archived",
1167
+ description:
1168
+ "Is this network device archived? Archived network devices are hidden from lists but keep collecting telemetry.",
1169
+ defaultValue: false,
1170
+ })
1171
+ @Column({
1172
+ type: ColumnType.Boolean,
1173
+ nullable: false,
1174
+ default: false,
1175
+ })
1176
+ public isArchived?: boolean = undefined;
1177
+
1178
+ @ColumnAccessControl({
1179
+ create: [],
1180
+ read: [
1181
+ Permission.ProjectOwner,
1182
+ Permission.ProjectAdmin,
1183
+ Permission.ProjectMember,
1184
+ Permission.Viewer,
1185
+ Permission.SettingsAdmin,
1186
+ Permission.SettingsMember,
1187
+ Permission.SettingsViewer,
1188
+ Permission.ReadNetworkDevice,
1189
+ ],
1190
+ update: [],
1191
+ })
1192
+ @TableColumn({
1193
+ required: false,
1194
+ type: TableColumnType.Date,
1195
+ title: "Archived At",
1196
+ description: "When was this network device archived?",
1197
+ })
1198
+ @Column({
1199
+ type: ColumnType.Date,
1200
+ nullable: true,
1201
+ })
1202
+ public archivedAt?: Date = undefined;
1203
+
1204
+ @ColumnAccessControl({
1205
+ create: [],
1206
+ read: [
1207
+ Permission.ProjectOwner,
1208
+ Permission.ProjectAdmin,
1209
+ Permission.ProjectMember,
1210
+ Permission.Viewer,
1211
+ Permission.SettingsAdmin,
1212
+ Permission.SettingsMember,
1213
+ Permission.SettingsViewer,
1214
+ Permission.ReadNetworkDevice,
1215
+ ],
1216
+ update: [],
1217
+ })
1218
+ @TableColumn({
1219
+ manyToOneRelationColumn: "archivedByUserId",
1220
+ type: TableColumnType.Entity,
1221
+ modelType: User,
1222
+ title: "Archived by User",
1223
+ description:
1224
+ "Relation to User who archived this object (if this object was archived by a User)",
1225
+ })
1226
+ @ManyToOne(
1227
+ () => {
1228
+ return User;
1229
+ },
1230
+ {
1231
+ eager: false,
1232
+ nullable: true,
1233
+ onDelete: "SET NULL",
1234
+ orphanedRowAction: "nullify",
1235
+ },
1236
+ )
1237
+ @JoinColumn({ name: "archivedByUserId" })
1238
+ public archivedByUser?: User = undefined;
1239
+
1240
+ @ColumnAccessControl({
1241
+ create: [],
1242
+ read: [
1243
+ Permission.ProjectOwner,
1244
+ Permission.ProjectAdmin,
1245
+ Permission.ProjectMember,
1246
+ Permission.Viewer,
1247
+ Permission.SettingsAdmin,
1248
+ Permission.SettingsMember,
1249
+ Permission.SettingsViewer,
1250
+ Permission.ReadNetworkDevice,
1251
+ ],
1252
+ update: [],
1253
+ })
1254
+ @TableColumn({
1255
+ type: TableColumnType.ObjectID,
1256
+ title: "Archived by User ID",
1257
+ description:
1258
+ "User ID who archived this object (if this object was archived by a User)",
1259
+ })
1260
+ @Column({
1261
+ type: ColumnType.ObjectID,
1262
+ nullable: true,
1263
+ transformer: ObjectID.getDatabaseTransformer(),
1264
+ })
1265
+ public archivedByUserId?: ObjectID = undefined;
1266
+
1267
+ @ColumnAccessControl({
1268
+ create: [],
1269
+ read: [
1270
+ Permission.ProjectOwner,
1271
+ Permission.ProjectAdmin,
1272
+ Permission.ProjectMember,
1273
+ Permission.Viewer,
1274
+ Permission.SettingsAdmin,
1275
+ Permission.SettingsMember,
1276
+ Permission.SettingsViewer,
1277
+ Permission.ReadNetworkDevice,
1278
+ ],
1279
+ update: [],
1280
+ })
1281
+ @TableColumn({
1282
+ manyToOneRelationColumn: "deletedByUserId",
1283
+ type: TableColumnType.Entity,
1284
+ title: "Deleted by User",
1285
+ modelType: User,
1286
+ description:
1287
+ "Relation to User who deleted this object (if this object was deleted by a User)",
1288
+ })
1289
+ @ManyToOne(
1290
+ () => {
1291
+ return User;
1292
+ },
1293
+ {
1294
+ cascade: false,
1295
+ eager: false,
1296
+ nullable: true,
1297
+ onDelete: "SET NULL",
1298
+ orphanedRowAction: "nullify",
1299
+ },
1300
+ )
1301
+ @JoinColumn({ name: "deletedByUserId" })
1302
+ public deletedByUser?: User = undefined;
1303
+
1304
+ @ColumnAccessControl({
1305
+ create: [],
1306
+ read: [
1307
+ Permission.ProjectOwner,
1308
+ Permission.ProjectAdmin,
1309
+ Permission.ProjectMember,
1310
+ Permission.Viewer,
1311
+ Permission.SettingsAdmin,
1312
+ Permission.SettingsMember,
1313
+ Permission.SettingsViewer,
1314
+ Permission.ReadNetworkDevice,
1315
+ ],
1316
+ update: [],
1317
+ })
1318
+ @TableColumn({
1319
+ type: TableColumnType.ObjectID,
1320
+ title: "Deleted by User ID",
1321
+ description:
1322
+ "User ID who deleted this object (if this object was deleted by a User)",
1323
+ })
1324
+ @Column({
1325
+ type: ColumnType.ObjectID,
1326
+ nullable: true,
1327
+ transformer: ObjectID.getDatabaseTransformer(),
1328
+ })
1329
+ public deletedByUserId?: ObjectID = undefined;
1330
+
1331
+ @ColumnAccessControl({
1332
+ create: [
1333
+ Permission.ProjectOwner,
1334
+ Permission.ProjectAdmin,
1335
+ Permission.ProjectMember,
1336
+ Permission.SettingsAdmin,
1337
+ Permission.SettingsMember,
1338
+ Permission.CreateNetworkDevice,
1339
+ ],
1340
+ read: [
1341
+ Permission.ProjectOwner,
1342
+ Permission.ProjectAdmin,
1343
+ Permission.ProjectMember,
1344
+ Permission.Viewer,
1345
+ Permission.SettingsAdmin,
1346
+ Permission.SettingsMember,
1347
+ Permission.SettingsViewer,
1348
+ Permission.ReadNetworkDevice,
1349
+ ],
1350
+ update: [
1351
+ Permission.ProjectOwner,
1352
+ Permission.ProjectAdmin,
1353
+ Permission.ProjectMember,
1354
+ Permission.SettingsAdmin,
1355
+ Permission.SettingsMember,
1356
+ Permission.EditNetworkDevice,
1357
+ ],
1358
+ })
1359
+ @TableColumn({
1360
+ required: false,
1361
+ type: TableColumnType.EntityArray,
1362
+ modelType: Label,
1363
+ title: "Labels",
1364
+ description:
1365
+ "Relation to Labels Array where this object is categorized in.",
1366
+ })
1367
+ @ManyToMany(
1368
+ () => {
1369
+ return Label;
1370
+ },
1371
+ { eager: false },
1372
+ )
1373
+ @JoinTable({
1374
+ name: "NetworkDeviceLabel",
1375
+ inverseJoinColumn: {
1376
+ name: "labelId",
1377
+ referencedColumnName: "_id",
1378
+ },
1379
+ joinColumn: {
1380
+ name: "networkDeviceId",
1381
+ referencedColumnName: "_id",
1382
+ },
1383
+ })
1384
+ public labels?: Array<Label> = undefined;
1385
+ }