@oneuptime/common 11.3.28 → 11.4.1

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 (244) hide show
  1. package/Models/DatabaseModels/AIRun.ts +50 -0
  2. package/Models/DatabaseModels/Project.ts +60 -0
  3. package/Server/API/AIAgentTaskAPI.ts +10 -24
  4. package/Server/API/AIInvestigationAPI.ts +148 -0
  5. package/Server/API/TelemetryAPI.ts +4 -3
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.ts +19 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.ts +33 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.ts +19 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  10. package/Server/Services/AIAgentTaskService.ts +62 -0
  11. package/Server/Services/AlertService.ts +25 -0
  12. package/Server/Services/AnalyticsDatabaseService.ts +27 -0
  13. package/Server/Services/IncidentService.ts +25 -0
  14. package/Server/Services/IncidentStateTimelineService.ts +19 -0
  15. package/Server/Services/LogAggregationService.ts +29 -11
  16. package/Server/Services/MetricService.ts +603 -13
  17. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +119 -11
  18. package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +141 -0
  19. package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +178 -0
  20. package/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.ts +105 -0
  21. package/Server/Utils/AI/Sentinel/README.md +10 -0
  22. package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +405 -0
  23. package/Server/Utils/AI/Sentinel/SentinelMemory.ts +167 -0
  24. package/Server/Utils/AI/Toolbox/Index.ts +11 -0
  25. package/Server/Utils/AI/Toolbox/SentinelActionTools.ts +577 -0
  26. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
  27. package/Server/Utils/Monitor/MonitorMetricUtil.ts +108 -2
  28. package/Tests/Server/API/BaseAPI.test.ts +1 -0
  29. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
  30. package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
  31. package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
  32. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
  33. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
  34. package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
  35. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtil.test.ts +260 -0
  36. package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
  37. package/Tests/UI/Components/Dropdown.test.tsx +17 -0
  38. package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
  39. package/Tests/UI/Components/Modal.test.tsx +144 -2
  40. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
  41. package/Tests/UI/Utils/Theme.test.ts +161 -0
  42. package/Types/BaseDatabase/AggregateBy.ts +12 -0
  43. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  44. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  45. package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +19 -0
  46. package/Types/Dashboard/DashboardTemplates.ts +9 -1
  47. package/Types/Date.ts +46 -0
  48. package/Types/Monitor/CriteriaFilter.ts +4 -0
  49. package/Types/Monitor/HttpPhaseTimings.ts +16 -0
  50. package/Types/Monitor/MonitorMetricType.ts +17 -0
  51. package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
  52. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +257 -0
  53. package/Types/Probe/ProbeMonitorResponse.ts +14 -0
  54. package/UI/Components/Calendar/Calendar.tsx +8 -2
  55. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +5 -5
  56. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
  57. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
  58. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
  59. package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
  60. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  61. package/UI/Components/Divider/Divider.tsx +1 -1
  62. package/UI/Components/Dropdown/Dropdown.tsx +13 -4
  63. package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
  64. package/UI/Components/ErrorBoundary.tsx +2 -1
  65. package/UI/Components/EventItem/EventItem.tsx +2 -2
  66. package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
  67. package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
  68. package/UI/Components/Header/Header.tsx +7 -0
  69. package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
  70. package/UI/Components/Label/Label.tsx +2 -2
  71. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
  72. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
  73. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
  74. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
  75. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  76. package/UI/Components/Modal/Modal.tsx +213 -121
  77. package/UI/Components/Modal/ModalFooter.tsx +33 -22
  78. package/UI/Components/ModelTable/TableView.tsx +1 -1
  79. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
  80. package/UI/Components/Pill/Pill.tsx +21 -13
  81. package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
  82. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
  83. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
  84. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
  85. package/UI/Components/Workflow/Component.tsx +53 -33
  86. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
  87. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
  88. package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
  89. package/UI/Components/Workflow/Workflow.tsx +13 -11
  90. package/UI/Utils/Theme.ts +140 -0
  91. package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +104 -0
  92. package/Utils/Dashboard/Components/Index.ts +7 -0
  93. package/Utils/Monitor/MonitorMetricType.ts +70 -2
  94. package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
  95. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  96. package/build/dist/Models/DatabaseModels/Project.js +62 -0
  97. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  98. package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
  99. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  100. package/build/dist/Server/API/AIInvestigationAPI.js +107 -0
  101. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -0
  102. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  103. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.js +12 -0
  104. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.js.map +1 -0
  105. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.js +18 -0
  106. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.js.map +1 -0
  107. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.js +12 -0
  108. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.js.map +1 -0
  109. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  110. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  111. package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
  112. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
  113. package/build/dist/Server/Services/AlertService.js +24 -0
  114. package/build/dist/Server/Services/AlertService.js.map +1 -1
  115. package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
  116. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  117. package/build/dist/Server/Services/IncidentService.js +24 -0
  118. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  119. package/build/dist/Server/Services/IncidentStateTimelineService.js +19 -0
  120. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  121. package/build/dist/Server/Services/LogAggregationService.js +21 -7
  122. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  123. package/build/dist/Server/Services/MetricService.js +449 -7
  124. package/build/dist/Server/Services/MetricService.js.map +1 -1
  125. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +59 -11
  126. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  127. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +119 -0
  128. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -0
  129. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +147 -0
  130. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -0
  131. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js +93 -0
  132. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +1 -0
  133. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +311 -0
  134. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -0
  135. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js +143 -0
  136. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +1 -0
  137. package/build/dist/Server/Utils/AI/Toolbox/Index.js +6 -0
  138. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  139. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js +451 -0
  140. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +1 -0
  141. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
  142. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  143. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +86 -2
  144. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  145. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  146. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  147. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  148. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  149. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
  150. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
  151. package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
  152. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  153. package/build/dist/Types/Date.js +32 -0
  154. package/build/dist/Types/Date.js.map +1 -1
  155. package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
  156. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  157. package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
  158. package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
  159. package/build/dist/Types/Monitor/MonitorMetricType.js +15 -0
  160. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  161. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
  162. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
  163. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +159 -0
  164. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -0
  165. package/build/dist/UI/Components/Calendar/Calendar.js +2 -2
  166. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  167. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
  168. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  169. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
  170. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  171. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
  172. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  173. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  174. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  175. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
  176. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  177. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
  178. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  179. package/build/dist/UI/Components/Divider/Divider.js +1 -1
  180. package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
  181. package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
  182. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  183. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
  184. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  185. package/build/dist/UI/Components/ErrorBoundary.js +2 -1
  186. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  187. package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
  188. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  189. package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
  190. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  191. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
  192. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  193. package/build/dist/UI/Components/Header/Header.js +1 -0
  194. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  195. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  196. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  197. package/build/dist/UI/Components/Label/Label.js +2 -2
  198. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  199. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
  200. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  201. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
  202. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  203. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
  204. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
  205. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  206. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  207. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  208. package/build/dist/UI/Components/Modal/Modal.js +109 -51
  209. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  210. package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
  211. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  212. package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
  213. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  214. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
  215. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  216. package/build/dist/UI/Components/Pill/Pill.js +12 -13
  217. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  218. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
  219. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  220. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  221. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  222. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
  223. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  224. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
  225. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  226. package/build/dist/UI/Components/Workflow/Component.js +43 -33
  227. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  228. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
  229. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  230. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
  231. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  232. package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
  233. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  234. package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
  235. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  236. package/build/dist/UI/Utils/Theme.js +106 -0
  237. package/build/dist/UI/Utils/Theme.js.map +1 -0
  238. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +92 -0
  239. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
  240. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  241. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  242. package/build/dist/Utils/Monitor/MonitorMetricType.js +70 -3
  243. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  244. package/package.json +1 -1
@@ -0,0 +1,451 @@
1
+ import Incident from "../../../../Models/DatabaseModels/Incident";
2
+ import IncidentPublicNote from "../../../../Models/DatabaseModels/IncidentPublicNote";
3
+ import Runbook from "../../../../Models/DatabaseModels/Runbook";
4
+ import BadDataException from "../../../../Types/Exception/BadDataException";
5
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
6
+ import OneUptimeDate from "../../../../Types/Date";
7
+ import UserNotificationEventType from "../../../../Types/UserNotification/UserNotificationEventType";
8
+ import { AIChatCitationTargetType } from "../../../../Types/AI/AIChatTypes";
9
+ import IncidentService from "../../../Services/IncidentService";
10
+ import IncidentSeverityService from "../../../Services/IncidentSeverityService";
11
+ import IncidentPublicNoteService from "../../../Services/IncidentPublicNoteService";
12
+ import OnCallDutyPolicyService from "../../../Services/OnCallDutyPolicyService";
13
+ import RunbookService from "../../../Services/RunbookService";
14
+ import RunbookRuleEngineService from "../../../Services/RunbookRuleEngineService";
15
+ import ToolResultSerializer from "./Serializer";
16
+ import WidgetBuilder from "./WidgetBuilder";
17
+ import { ToolArgs, } from "./ToolTypes";
18
+ /*
19
+ * Sentinel "action belt" — Phase 0.
20
+ *
21
+ * Mutating tools that let the copilot OPERATE the platform (not just answer
22
+ * questions), each a thin wrapper over an already-RBAC-tested service method.
23
+ * They are gated twice: by the tool's requiredPermissions (RBAC) and by the
24
+ * conversation's permission mode (approval / auto-run / hidden in read-only).
25
+ * The acting user is always ctx.props.userId — never a tool argument.
26
+ *
27
+ * Permissions are resolved lazily (not at module load) because this module is
28
+ * pulled in through the service import graph before the model classes are fully
29
+ * wired up — calling a model method at import time throws a circular-dependency
30
+ * TypeError. By the time a tool executes, every module is loaded.
31
+ */
32
+ let cachedIncidentUpdatePermissions = null;
33
+ const resolveIncidentUpdatePermissions = () => {
34
+ if (!cachedIncidentUpdatePermissions) {
35
+ cachedIncidentUpdatePermissions = new Incident().getUpdatePermissions();
36
+ }
37
+ return cachedIncidentUpdatePermissions;
38
+ };
39
+ let cachedPublicNoteCreatePermissions = null;
40
+ const resolvePublicNoteCreatePermissions = () => {
41
+ if (!cachedPublicNoteCreatePermissions) {
42
+ cachedPublicNoteCreatePermissions =
43
+ new IncidentPublicNote().getCreatePermissions();
44
+ }
45
+ return cachedPublicNoteCreatePermissions;
46
+ };
47
+ let cachedRunbookUpdatePermissions = null;
48
+ const resolveRunbookUpdatePermissions = () => {
49
+ if (!cachedRunbookUpdatePermissions) {
50
+ cachedRunbookUpdatePermissions = new Runbook().getUpdatePermissions();
51
+ }
52
+ return cachedRunbookUpdatePermissions;
53
+ };
54
+ /*
55
+ * ---------------------------------------------------------------------------
56
+ * page_on_call_policy — escalate an incident to its responders.
57
+ * ---------------------------------------------------------------------------
58
+ */
59
+ export const PageOnCallPolicyTool = {
60
+ name: "page_on_call_policy",
61
+ description: "Page (trigger) an on-call duty policy so its responders are notified about an incident. Provide the on-call policy id and the incident id it relates to. Use query tools to find the on-call policy id and incident id first. This notifies real people — only do it when clearly asked.",
62
+ inputSchema: {
63
+ type: "object",
64
+ properties: {
65
+ onCallDutyPolicyId: {
66
+ type: "string",
67
+ description: "The on-call duty policy's ID to trigger (required).",
68
+ },
69
+ incidentId: {
70
+ type: "string",
71
+ description: "The incident's ID this page relates to (required). Find it with query_incidents first.",
72
+ },
73
+ },
74
+ required: ["onCallDutyPolicyId", "incidentId"],
75
+ },
76
+ get requiredPermissions() {
77
+ return resolveIncidentUpdatePermissions();
78
+ },
79
+ isMutation: true,
80
+ buildActionTitle: (args) => {
81
+ return `Page on-call policy ${ToolArgs.getString(args, "onCallDutyPolicyId") || ""}`.trim();
82
+ },
83
+ execute: async (args, ctx) => {
84
+ var _a;
85
+ const policyId = ToolArgs.getObjectID(args, "onCallDutyPolicyId");
86
+ if (!policyId) {
87
+ throw new BadDataException("onCallDutyPolicyId is required. Use query tools to find it first.");
88
+ }
89
+ const incidentId = ToolArgs.getObjectID(args, "incidentId");
90
+ if (!incidentId) {
91
+ throw new BadDataException("incidentId is required. Use query_incidents to find it first.");
92
+ }
93
+ // Visibility checks under the user's RBAC (execution runs as root inside the service).
94
+ const policy = await OnCallDutyPolicyService.findOneById({
95
+ id: policyId,
96
+ select: { _id: true, name: true },
97
+ props: ctx.props,
98
+ });
99
+ if (!policy) {
100
+ throw new BadDataException("On-call duty policy not found (or you do not have access to it).");
101
+ }
102
+ const incident = await IncidentService.findOneById({
103
+ id: incidentId,
104
+ select: { _id: true, incidentNumber: true, title: true },
105
+ props: ctx.props,
106
+ });
107
+ if (!incident) {
108
+ throw new BadDataException("Incident not found (or you do not have access to it).");
109
+ }
110
+ await OnCallDutyPolicyService.executePolicy(policyId, {
111
+ triggeredByIncidentId: incidentId,
112
+ userNotificationEventType: UserNotificationEventType.IncidentCreated,
113
+ });
114
+ const incidentIdString = incidentId.toString();
115
+ const serialized = ToolResultSerializer.serializeRows([
116
+ {
117
+ onCallPolicy: policy.name,
118
+ incidentNumber: incident.incidentNumber,
119
+ incidentTitle: incident.title,
120
+ },
121
+ ]);
122
+ return {
123
+ dataForLlm: `Paged on-call policy "${policy.name}" for incident #${incident.incidentNumber} ("${incident.title}"). Responders are being notified.\n${serialized.text}`,
124
+ rowCount: 1,
125
+ citationLabel: `Paged "${policy.name}" for incident #${incident.incidentNumber}`,
126
+ citationTarget: {
127
+ type: AIChatCitationTargetType.IncidentView,
128
+ params: { incidentId: incidentIdString },
129
+ },
130
+ redactionCount: serialized.redactionCount,
131
+ isTruncated: false,
132
+ widget: WidgetBuilder.resourceCard({
133
+ title: "On-call paged",
134
+ resourceType: "OnCallDutyPolicy",
135
+ heading: policy.name || "On-call policy",
136
+ subheading: `Incident #${incident.incidentNumber}`,
137
+ fields: [
138
+ { label: "Policy", value: policy.name || "—" },
139
+ { label: "Incident", value: `#${(_a = incident.incidentNumber) !== null && _a !== void 0 ? _a : ""}` },
140
+ ],
141
+ link: {
142
+ type: AIChatCitationTargetType.IncidentView,
143
+ params: { incidentId: incidentIdString },
144
+ },
145
+ }),
146
+ };
147
+ },
148
+ };
149
+ /*
150
+ * ---------------------------------------------------------------------------
151
+ * run_runbook — start an automated runbook.
152
+ * ---------------------------------------------------------------------------
153
+ */
154
+ export const RunRunbookTool = {
155
+ name: "run_runbook",
156
+ description: "Start (execute) a runbook by its id, optionally linked to an incident. Use this to run a predefined remediation or diagnostic automation. Find the runbook id with query tools first.",
157
+ inputSchema: {
158
+ type: "object",
159
+ properties: {
160
+ runbookId: {
161
+ type: "string",
162
+ description: "The runbook's ID to execute (required).",
163
+ },
164
+ incidentId: {
165
+ type: "string",
166
+ description: "Optional incident ID to link this runbook execution to. Find it with query_incidents first.",
167
+ },
168
+ },
169
+ required: ["runbookId"],
170
+ },
171
+ get requiredPermissions() {
172
+ return resolveRunbookUpdatePermissions();
173
+ },
174
+ isMutation: true,
175
+ buildActionTitle: (args) => {
176
+ return `Run runbook ${ToolArgs.getString(args, "runbookId") || ""}`.trim();
177
+ },
178
+ execute: async (args, ctx) => {
179
+ var _a;
180
+ const runbookId = ToolArgs.getObjectID(args, "runbookId");
181
+ if (!runbookId) {
182
+ throw new BadDataException("runbookId is required. Use query tools to find it first.");
183
+ }
184
+ const userId = ctx.props.userId;
185
+ if (!userId) {
186
+ throw new BadDataException("No authenticated user in context; cannot run a runbook.");
187
+ }
188
+ const incidentId = ToolArgs.getObjectID(args, "incidentId");
189
+ // Visibility check under the user's RBAC.
190
+ const runbook = await RunbookService.findOneById({
191
+ id: runbookId,
192
+ select: { _id: true, name: true },
193
+ props: ctx.props,
194
+ });
195
+ if (!runbook) {
196
+ throw new BadDataException("Runbook not found (or you do not have access to it).");
197
+ }
198
+ const execution = await RunbookRuleEngineService.startRunbookFor({
199
+ projectId: ctx.projectId,
200
+ runbookId: runbookId,
201
+ linkage: incidentId ? { incidentId: incidentId } : {},
202
+ triggeredByUserId: userId,
203
+ });
204
+ if (!execution) {
205
+ throw new BadDataException(`Runbook "${runbook.name}" could not be started. It may be disabled, empty, or not part of this project.`);
206
+ }
207
+ const serialized = ToolResultSerializer.serializeRows([
208
+ {
209
+ runbook: runbook.name,
210
+ executionId: (_a = execution.id) === null || _a === void 0 ? void 0 : _a.toString(),
211
+ },
212
+ ]);
213
+ const result = {
214
+ dataForLlm: `Started runbook "${runbook.name}". Execution is scheduled.\n${serialized.text}`,
215
+ rowCount: 1,
216
+ citationLabel: `Started runbook "${runbook.name}"`,
217
+ redactionCount: serialized.redactionCount,
218
+ isTruncated: false,
219
+ widget: WidgetBuilder.resourceCard({
220
+ title: "Runbook started",
221
+ resourceType: "Runbook",
222
+ heading: runbook.name || "Runbook",
223
+ subheading: "Execution scheduled",
224
+ fields: [{ label: "Runbook", value: runbook.name || "—" }],
225
+ }),
226
+ };
227
+ if (incidentId) {
228
+ result.citationTarget = {
229
+ type: AIChatCitationTargetType.IncidentView,
230
+ params: { incidentId: incidentId.toString() },
231
+ };
232
+ }
233
+ return result;
234
+ },
235
+ };
236
+ /*
237
+ * ---------------------------------------------------------------------------
238
+ * post_incident_status_update — customer-facing update on an incident.
239
+ * ---------------------------------------------------------------------------
240
+ */
241
+ export const PostIncidentStatusUpdateTool = {
242
+ name: "post_incident_status_update",
243
+ description: "Post a customer-facing status update (public note) on an incident. It appears on the status page and, by default, notifies subscribers. Provide the incident id and the update text.",
244
+ inputSchema: {
245
+ type: "object",
246
+ properties: {
247
+ incidentId: {
248
+ type: "string",
249
+ description: "The incident's ID (required).",
250
+ },
251
+ note: {
252
+ type: "string",
253
+ description: "The customer-facing update text in markdown (required).",
254
+ },
255
+ notifySubscribers: {
256
+ type: "boolean",
257
+ description: "Whether to notify status page subscribers. Defaults to true.",
258
+ },
259
+ },
260
+ required: ["incidentId", "note"],
261
+ },
262
+ get requiredPermissions() {
263
+ return resolvePublicNoteCreatePermissions();
264
+ },
265
+ isMutation: true,
266
+ buildActionTitle: (args) => {
267
+ return `Post public status update on incident ${ToolArgs.getString(args, "incidentId") || ""}`.trim();
268
+ },
269
+ execute: async (args, ctx) => {
270
+ var _a;
271
+ const incidentId = ToolArgs.getObjectID(args, "incidentId");
272
+ if (!incidentId) {
273
+ throw new BadDataException("incidentId is required. Use query_incidents to find it first.");
274
+ }
275
+ const note = ToolArgs.getString(args, "note");
276
+ if (!note) {
277
+ throw new BadDataException("note is required (the update text).");
278
+ }
279
+ const userId = ctx.props.userId;
280
+ if (!userId) {
281
+ throw new BadDataException("No authenticated user in context; cannot post a status update.");
282
+ }
283
+ const notifySubscribers = (_a = ToolArgs.getBoolean(args, "notifySubscribers")) !== null && _a !== void 0 ? _a : true;
284
+ const incident = await IncidentService.findOneById({
285
+ id: incidentId,
286
+ select: { _id: true, incidentNumber: true, title: true },
287
+ props: ctx.props,
288
+ });
289
+ if (!incident) {
290
+ throw new BadDataException("Incident not found (or you do not have access to it).");
291
+ }
292
+ const publicNote = new IncidentPublicNote();
293
+ publicNote.incidentId = incidentId;
294
+ publicNote.projectId = ctx.projectId;
295
+ publicNote.note = note;
296
+ publicNote.postedAt = OneUptimeDate.getCurrentDate();
297
+ publicNote.createdByUserId = userId;
298
+ publicNote.shouldStatusPageSubscribersBeNotifiedOnNoteCreated =
299
+ notifySubscribers;
300
+ await IncidentPublicNoteService.create({
301
+ data: publicNote,
302
+ props: ctx.props,
303
+ });
304
+ const incidentIdString = incidentId.toString();
305
+ const serialized = ToolResultSerializer.serializeRows([
306
+ {
307
+ incidentNumber: incident.incidentNumber,
308
+ notifySubscribers: notifySubscribers,
309
+ },
310
+ ]);
311
+ return {
312
+ dataForLlm: `Posted a public status update on incident #${incident.incidentNumber}${notifySubscribers ? " and notified subscribers" : ""}.\n${serialized.text}`,
313
+ rowCount: 1,
314
+ citationLabel: `Status update on incident #${incident.incidentNumber}`,
315
+ citationTarget: {
316
+ type: AIChatCitationTargetType.IncidentView,
317
+ params: { incidentId: incidentIdString },
318
+ },
319
+ redactionCount: serialized.redactionCount,
320
+ isTruncated: false,
321
+ widget: WidgetBuilder.resourceCard({
322
+ title: "Status update posted",
323
+ resourceType: "Incident",
324
+ heading: `#${incident.incidentNumber} · ${incident.title}`,
325
+ subheading: notifySubscribers
326
+ ? "Subscribers notified"
327
+ : "Subscribers not notified",
328
+ fields: [
329
+ {
330
+ label: "Update",
331
+ value: note.length > 200 ? `${note.substring(0, 200)}…` : note,
332
+ },
333
+ ],
334
+ link: {
335
+ type: AIChatCitationTargetType.IncidentView,
336
+ params: { incidentId: incidentIdString },
337
+ },
338
+ }),
339
+ };
340
+ },
341
+ };
342
+ /*
343
+ * ---------------------------------------------------------------------------
344
+ * change_incident_severity — re-classify an incident.
345
+ * ---------------------------------------------------------------------------
346
+ */
347
+ export const ChangeIncidentSeverityTool = {
348
+ name: "change_incident_severity",
349
+ description: "Change the severity of an existing incident. Provide the incident id and the new severity name (must match an existing incident severity in this project, e.g. 'SEV1', 'Critical').",
350
+ inputSchema: {
351
+ type: "object",
352
+ properties: {
353
+ incidentId: {
354
+ type: "string",
355
+ description: "The incident's ID (required).",
356
+ },
357
+ severityName: {
358
+ type: "string",
359
+ description: "Name of an existing incident severity (required).",
360
+ },
361
+ },
362
+ required: ["incidentId", "severityName"],
363
+ },
364
+ get requiredPermissions() {
365
+ return resolveIncidentUpdatePermissions();
366
+ },
367
+ isMutation: true,
368
+ buildActionTitle: (args) => {
369
+ return `Change incident ${ToolArgs.getString(args, "incidentId") || ""} severity to ${ToolArgs.getString(args, "severityName") || ""}`.trim();
370
+ },
371
+ execute: async (args, ctx) => {
372
+ var _a;
373
+ const incidentId = ToolArgs.getObjectID(args, "incidentId");
374
+ if (!incidentId) {
375
+ throw new BadDataException("incidentId is required. Use query_incidents to find it first.");
376
+ }
377
+ const severityName = ToolArgs.getString(args, "severityName");
378
+ if (!severityName) {
379
+ throw new BadDataException("severityName is required.");
380
+ }
381
+ const incident = await IncidentService.findOneById({
382
+ id: incidentId,
383
+ select: { _id: true, incidentNumber: true, title: true },
384
+ props: ctx.props,
385
+ });
386
+ if (!incident) {
387
+ throw new BadDataException("Incident not found (or you do not have access to it).");
388
+ }
389
+ const severities = await IncidentSeverityService.findBy({
390
+ query: {},
391
+ select: { _id: true, name: true, order: true },
392
+ sort: { order: SortOrder.Ascending },
393
+ limit: 50,
394
+ skip: 0,
395
+ props: ctx.props,
396
+ });
397
+ const severity = severities.find((item) => {
398
+ var _a;
399
+ return ((_a = item.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === severityName.toLowerCase();
400
+ });
401
+ if (!severity) {
402
+ const available = severities
403
+ .map((s) => {
404
+ return s.name;
405
+ })
406
+ .filter(Boolean)
407
+ .join(", ");
408
+ throw new BadDataException(`No incident severity named "${severityName}". Available severities: ${available || "none configured"}.`);
409
+ }
410
+ await IncidentService.updateOneById({
411
+ id: incidentId,
412
+ data: {
413
+ incidentSeverityId: severity.id,
414
+ },
415
+ props: ctx.props,
416
+ });
417
+ const incidentIdString = incidentId.toString();
418
+ const serialized = ToolResultSerializer.serializeRows([
419
+ {
420
+ incidentNumber: incident.incidentNumber,
421
+ newSeverity: severity.name,
422
+ },
423
+ ]);
424
+ return {
425
+ dataForLlm: `Changed incident #${incident.incidentNumber} severity to ${severity.name}.\n${serialized.text}`,
426
+ rowCount: 1,
427
+ citationLabel: `Incident #${incident.incidentNumber} → ${severity.name}`,
428
+ citationTarget: {
429
+ type: AIChatCitationTargetType.IncidentView,
430
+ params: { incidentId: incidentIdString },
431
+ },
432
+ redactionCount: serialized.redactionCount,
433
+ isTruncated: false,
434
+ widget: WidgetBuilder.resourceCard({
435
+ title: "Severity changed",
436
+ resourceType: "Incident",
437
+ heading: `#${incident.incidentNumber} · ${incident.title}`,
438
+ subheading: `Severity: ${severity.name}`,
439
+ fields: [
440
+ { label: "Number", value: `#${(_a = incident.incidentNumber) !== null && _a !== void 0 ? _a : ""}` },
441
+ { label: "New severity", value: severity.name || "—" },
442
+ ],
443
+ link: {
444
+ type: AIChatCitationTargetType.IncidentView,
445
+ params: { incidentId: incidentIdString },
446
+ },
447
+ }),
448
+ };
449
+ },
450
+ };
451
+ //# sourceMappingURL=SentinelActionTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SentinelActionTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/SentinelActionTools.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAElE,OAAO,kBAAkB,MAAM,sDAAsD,CAAC;AACtF,OAAO,OAAO,MAAM,2CAA2C,CAAC;AAMhE,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAC5E,OAAO,SAAS,MAAM,0CAA0C,CAAC;AACjE,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,yBAAyB,MAAM,8DAA8D,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,eAAe,MAAM,mCAAmC,CAAC;AAChE,OAAO,uBAAuB,MAAM,2CAA2C,CAAC;AAChF,OAAO,yBAAyB,MAAM,6CAA6C,CAAC;AACpF,OAAO,uBAAuB,MAAM,2CAA2C,CAAC;AAChF,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,wBAAwB,MAAM,4CAA4C,CAAC;AAClF,OAAO,oBAA0C,MAAM,cAAc,CAAC;AACtE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,QAAQ,GAGT,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;GAaG;AAEH,IAAI,+BAA+B,GAA6B,IAAI,CAAC;AACrE,MAAM,gCAAgC,GACpC,GAAsB,EAAE;IACtB,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACrC,+BAA+B,GAAG,IAAI,QAAQ,EAAE,CAAC,oBAAoB,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,+BAA+B,CAAC;AACzC,CAAC,CAAC;AAEJ,IAAI,iCAAiC,GAA6B,IAAI,CAAC;AACvE,MAAM,kCAAkC,GACtC,GAAsB,EAAE;IACtB,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACvC,iCAAiC;YAC/B,IAAI,kBAAkB,EAAE,CAAC,oBAAoB,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,iCAAiC,CAAC;AAC3C,CAAC,CAAC;AAEJ,IAAI,8BAA8B,GAA6B,IAAI,CAAC;AACpE,MAAM,+BAA+B,GACnC,GAAsB,EAAE;IACtB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACpC,8BAA8B,GAAG,IAAI,OAAO,EAAE,CAAC,oBAAoB,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,8BAA8B,CAAC;AACxC,CAAC,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,0RAA0R;IAC5R,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;aACnE;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;aAC3F;SACF;QACD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;KAC/C;IACD,IAAI,mBAAmB;QACrB,OAAO,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,uBAAuB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;;QAChC,MAAM,QAAQ,GAAyB,QAAQ,CAAC,WAAW,CACzD,IAAI,EACJ,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAyB,QAAQ,CAAC,WAAW,CAC3D,IAAI,EACJ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,uFAAuF;QACvF,MAAM,MAAM,GACV,MAAM,uBAAuB,CAAC,WAAW,CAAC;YACxC,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACL,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,gBAAgB,CACxB,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAoB,MAAM,eAAe,CAAC,WAAW,CAAC;YAClE,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YACxD,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,uBAAuB,CAAC,aAAa,CAAC,QAAQ,EAAE;YACpD,qBAAqB,EAAE,UAAU;YACjC,yBAAyB,EAAE,yBAAyB,CAAC,eAAe;SACrE,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAW,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;YACtE;gBACE,YAAY,EAAE,MAAM,CAAC,IAAI;gBACzB,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,aAAa,EAAE,QAAQ,CAAC,KAAK;aAC9B;SACF,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,yBAAyB,MAAM,CAAC,IAAI,mBAAmB,QAAQ,CAAC,cAAc,MAAM,QAAQ,CAAC,KAAK,uCAAuC,UAAU,CAAC,IAAI,EAAE;YACtK,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,UAAU,MAAM,CAAC,IAAI,mBAAmB,QAAQ,CAAC,cAAc,EAAE;YAChF,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB,CAAC,YAAY;gBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;aACzC;YACD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,kBAAkB;gBAChC,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,gBAAgB;gBACxC,UAAU,EAAE,aAAa,QAAQ,CAAC,cAAc,EAAE;gBAClD,MAAM,EAAE;oBACN,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE;oBAC9C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,EAAE,EAAE;iBAClE;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,wBAAwB,CAAC,YAAY;oBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;iBACzC;aACF,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,uLAAuL;IACzL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,6FAA6F;aAChG;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;IACD,IAAI,mBAAmB;QACrB,OAAO,+BAA+B,EAAE,CAAC;IAC3C,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,eAAe,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;;QAChC,MAAM,SAAS,GAAyB,QAAQ,CAAC,WAAW,CAC1D,IAAI,EACJ,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CACxB,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAyB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,gBAAgB,CACxB,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAyB,QAAQ,CAAC,WAAW,CAC3D,IAAI,EACJ,YAAY,CACb,CAAC;QAEF,0CAA0C;QAC1C,MAAM,OAAO,GAAmB,MAAM,cAAc,CAAC,WAAW,CAAC;YAC/D,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,gBAAgB,CACxB,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GACb,MAAM,wBAAwB,CAAC,eAAe,CAAC;YAC7C,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;YACrD,iBAAiB,EAAE,MAAM;SAC1B,CAAC,CAAC;QAEL,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CACxB,YAAY,OAAO,CAAC,IAAI,iFAAiF,CAC1G,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;YACtE;gBACE,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,WAAW,EAAE,MAAA,SAAS,CAAC,EAAE,0CAAE,QAAQ,EAAE;aACtC;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAwB;YAClC,UAAU,EAAE,oBAAoB,OAAO,CAAC,IAAI,+BAA+B,UAAU,CAAC,IAAI,EAAE;YAC5F,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,oBAAoB,OAAO,CAAC,IAAI,GAAG;YAClD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,iBAAiB;gBACxB,YAAY,EAAE,SAAS;gBACvB,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;gBAClC,UAAU,EAAE,qBAAqB;gBACjC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;aAC3D,CAAC;SACH,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,cAAc,GAAG;gBACtB,IAAI,EAAE,wBAAwB,CAAC,YAAY;gBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE;aAC9C,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC7D,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,sLAAsL;IACxL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,8DAA8D;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;KACjC;IACD,IAAI,mBAAmB;QACrB,OAAO,kCAAkC,EAAE,CAAC;IAC9C,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,yCAAyC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACxG,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;;QAChC,MAAM,UAAU,GAAyB,QAAQ,CAAC,WAAW,CAC3D,IAAI,EACJ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAyB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,gBAAgB,CACxB,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GACrB,MAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,mCAAI,IAAI,CAAC;QAEzD,MAAM,QAAQ,GAAoB,MAAM,eAAe,CAAC,WAAW,CAAC;YAClE,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YACxD,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAuB,IAAI,kBAAkB,EAAE,CAAC;QAChE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QACnC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QACrC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QACrD,UAAU,CAAC,eAAe,GAAG,MAAM,CAAC;QACpC,UAAU,CAAC,kDAAkD;YAC3D,iBAAiB,CAAC;QAEpB,MAAM,yBAAyB,CAAC,MAAM,CAAC;YACrC,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAW,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;YACtE;gBACE,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,iBAAiB,EAAE,iBAAiB;aACrC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,8CAA8C,QAAQ,CAAC,cAAc,GAC/E,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EACpD,MAAM,UAAU,CAAC,IAAI,EAAE;YACvB,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,8BAA8B,QAAQ,CAAC,cAAc,EAAE;YACtE,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB,CAAC,YAAY;gBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;aACzC;YACD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,sBAAsB;gBAC7B,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,IAAI,QAAQ,CAAC,cAAc,MAAM,QAAQ,CAAC,KAAK,EAAE;gBAC1D,UAAU,EAAE,iBAAiB;oBAC3B,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,0BAA0B;gBAC9B,MAAM,EAAE;oBACN;wBACE,KAAK,EAAE,QAAQ;wBACf,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;qBAC/D;iBACF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,wBAAwB,CAAC,YAAY;oBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;iBACzC;aACF,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,qLAAqL;IACvL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;KACzC;IACD,IAAI,mBAAmB;QACrB,OAAO,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,mBAAmB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,gBAAgB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAChJ,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;;QAChC,MAAM,UAAU,GAAyB,QAAQ,CAAC,WAAW,CAC3D,IAAI,EACJ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAuB,QAAQ,CAAC,SAAS,CACzD,IAAI,EACJ,cAAc,CACf,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAoB,MAAM,eAAe,CAAC,WAAW,CAAC;YAClE,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YACxD,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GACd,MAAM,uBAAuB,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QAEL,MAAM,QAAQ,GAAiC,UAAU,CAAC,IAAI,CAC5D,CAAC,IAAsB,EAAE,EAAE;;YACzB,OAAO,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,YAAY,CAAC,WAAW,EAAE,CAAC;QACjE,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAW,UAAU;iBACjC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE;gBAC3B,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,YAAY,4BAA4B,SAAS,IAAI,iBAAiB,GAAG,CACzG,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,CAAC,aAAa,CAAC;YAClC,EAAE,EAAE,UAAU;YACd,IAAI,EAAE;gBACJ,kBAAkB,EAAE,QAAQ,CAAC,EAAG;aACjC;YACD,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAW,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;YACtE;gBACE,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,WAAW,EAAE,QAAQ,CAAC,IAAI;aAC3B;SACF,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,qBAAqB,QAAQ,CAAC,cAAc,gBAAgB,QAAQ,CAAC,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE;YAC5G,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,aAAa,QAAQ,CAAC,cAAc,MAAM,QAAQ,CAAC,IAAI,EAAE;YACxE,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB,CAAC,YAAY;gBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;aACzC;YACD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,kBAAkB;gBACzB,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,IAAI,QAAQ,CAAC,cAAc,MAAM,QAAQ,CAAC,KAAK,EAAE;gBAC1D,UAAU,EAAE,aAAa,QAAQ,CAAC,IAAI,EAAE;gBACxC,MAAM,EAAE;oBACN,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,EAAE,EAAE;oBAC/D,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE;iBACvD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,wBAAwB,CAAC,YAAY;oBAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;iBACzC;aACF,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -16,6 +16,7 @@ import logger from "../../Logger";
16
16
  export default class APIRequestCriteria {
17
17
  static async isMonitorInstanceCriteriaFilterMet(input) {
18
18
  // Server Monitoring Checks
19
+ var _a, _b;
19
20
  let threshold = input.criteriaFilter.value;
20
21
  let overTimeValue = undefined;
21
22
  if (input.criteriaFilter.evaluateOverTime &&
@@ -65,6 +66,34 @@ export default class APIRequestCriteria {
65
66
  criteriaFilter: input.criteriaFilter,
66
67
  });
67
68
  }
69
+ // check packet loss (Ping/IP monitors with multi-packet checks)
70
+ if (input.criteriaFilter.checkOn === CheckOn.PacketLossPercent) {
71
+ const packetLossPercent = (_a = input.dataToProcess.pingResponse) === null || _a === void 0 ? void 0 : _a.packetLossPercent;
72
+ const value = overTimeValue || packetLossPercent;
73
+ if (value === undefined) {
74
+ return null;
75
+ }
76
+ threshold = CompareCriteria.convertToNumber(threshold);
77
+ return CompareCriteria.compareCriteriaNumbers({
78
+ value: value,
79
+ threshold: threshold,
80
+ criteriaFilter: input.criteriaFilter,
81
+ });
82
+ }
83
+ // check jitter (Ping/IP monitors with multi-packet checks)
84
+ if (input.criteriaFilter.checkOn === CheckOn.Jitter) {
85
+ const jitterInMs = (_b = input.dataToProcess.pingResponse) === null || _b === void 0 ? void 0 : _b.jitterInMs;
86
+ const value = overTimeValue || jitterInMs;
87
+ if (value === undefined) {
88
+ return null;
89
+ }
90
+ threshold = CompareCriteria.convertToNumber(threshold);
91
+ return CompareCriteria.compareCriteriaNumbers({
92
+ value: value,
93
+ threshold: threshold,
94
+ criteriaFilter: input.criteriaFilter,
95
+ });
96
+ }
68
97
  //check response code
69
98
  if (input.criteriaFilter.checkOn === CheckOn.ResponseStatusCode &&
70
99
  input.dataToProcess.responseCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"APIRequestCriteria.js","sourceRoot":"","sources":["../../../../../../Server/Utils/Monitor/Criteria/APIRequestCriteria.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"APIRequestCriteria.js","sourceRoot":"","sources":["../../../../../../Server/Utils/Monitor/Criteria/APIRequestCriteria.ts"],"names":[],"mappings":"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"}
@@ -703,6 +703,86 @@ class MonitorMetricUtil {
703
703
  metricType.unit = "ms";
704
704
  metricNameServiceNameMap[MonitorMetricType.ResponseTime] = metricType;
705
705
  }
706
+ if (data.dataToProcess.httpTimings) {
707
+ const httpTimings = data.dataToProcess.httpTimings;
708
+ const extraAttributes = {
709
+ probeId: data.dataToProcess.probeId.toString(),
710
+ };
711
+ const phaseMetrics = [
712
+ {
713
+ metricName: MonitorMetricType.DnsLookupTime,
714
+ value: httpTimings.dnsLookupInMs,
715
+ description: "DNS lookup time for this monitor",
716
+ },
717
+ {
718
+ metricName: MonitorMetricType.TcpConnectTime,
719
+ value: httpTimings.tcpConnectInMs,
720
+ description: "TCP connect time for this monitor",
721
+ },
722
+ {
723
+ metricName: MonitorMetricType.TlsHandshakeTime,
724
+ value: httpTimings.tlsHandshakeInMs,
725
+ description: "TLS handshake time for this monitor",
726
+ },
727
+ {
728
+ metricName: MonitorMetricType.TimeToFirstByte,
729
+ value: httpTimings.timeToFirstByteInMs,
730
+ description: "Time to first byte for this monitor",
731
+ },
732
+ {
733
+ metricName: MonitorMetricType.DownloadTime,
734
+ value: httpTimings.downloadInMs,
735
+ description: "Response download time for this monitor",
736
+ },
737
+ ];
738
+ for (const phaseMetric of phaseMetrics) {
739
+ await this.pushMonitorMetric({
740
+ projectId: data.projectId,
741
+ monitorId: data.monitorId,
742
+ monitorName: data.monitorName,
743
+ probeName: data.probeName,
744
+ metricName: phaseMetric.metricName,
745
+ value: phaseMetric.value,
746
+ description: phaseMetric.description,
747
+ unit: "ms",
748
+ extraAttributes: extraAttributes,
749
+ metricRows: metricRows,
750
+ metricNameServiceNameMap: metricNameServiceNameMap,
751
+ });
752
+ }
753
+ }
754
+ if (data.dataToProcess.pingResponse) {
755
+ const pingResponse = data.dataToProcess.pingResponse;
756
+ const extraAttributes = {
757
+ probeId: data.dataToProcess.probeId.toString(),
758
+ };
759
+ await this.pushMonitorMetric({
760
+ projectId: data.projectId,
761
+ monitorId: data.monitorId,
762
+ monitorName: data.monitorName,
763
+ probeName: data.probeName,
764
+ metricName: MonitorMetricType.PacketLossPercent,
765
+ value: pingResponse.packetLossPercent,
766
+ description: CheckOn.PacketLossPercent + " for this monitor",
767
+ unit: "%",
768
+ extraAttributes: extraAttributes,
769
+ metricRows: metricRows,
770
+ metricNameServiceNameMap: metricNameServiceNameMap,
771
+ });
772
+ await this.pushMonitorMetric({
773
+ projectId: data.projectId,
774
+ monitorId: data.monitorId,
775
+ monitorName: data.monitorName,
776
+ probeName: data.probeName,
777
+ metricName: MonitorMetricType.Jitter,
778
+ value: pingResponse.jitterInMs,
779
+ description: CheckOn.Jitter + " for this monitor",
780
+ unit: "ms",
781
+ extraAttributes: extraAttributes,
782
+ metricRows: metricRows,
783
+ metricNameServiceNameMap: metricNameServiceNameMap,
784
+ });
785
+ }
706
786
  if (data.dataToProcess.isOnline !== undefined) {
707
787
  const extraAttributes = {
708
788
  probeId: data.dataToProcess.probeId.toString(),
@@ -835,8 +915,12 @@ class MonitorMetricUtil {
835
915
  });
836
916
  }
837
917
  }
838
- // Default retention in days if GlobalConfig is not set
839
- MonitorMetricUtil.DEFAULT_RETENTION_DAYS = 1;
918
+ /*
919
+ * Default retention in days if GlobalConfig is not set. 30 days keeps
920
+ * enough history for trend analysis and evaluate-over-time criteria;
921
+ * one day made week-over-week charts impossible out of the box.
922
+ */
923
+ MonitorMetricUtil.DEFAULT_RETENTION_DAYS = 30;
840
924
  // Cached retention value to avoid querying GlobalConfig on every monitor check
841
925
  MonitorMetricUtil.cachedRetentionDays = null;
842
926
  MonitorMetricUtil.lastCacheRefresh = null;