@oneuptime/common 11.3.25 → 11.3.28

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 (397) hide show
  1. package/Models/DatabaseModels/AIConversation.ts +322 -0
  2. package/Models/DatabaseModels/AIConversationMessage.ts +495 -0
  3. package/Models/DatabaseModels/AIRun.ts +584 -0
  4. package/Models/DatabaseModels/AIRunEvent.ts +443 -0
  5. package/Models/DatabaseModels/IncidentEpisodeRoleMember.ts +1 -1
  6. package/Models/DatabaseModels/IncidentMember.ts +1 -1
  7. package/Models/DatabaseModels/IncomingCallPolicy.ts +13 -0
  8. package/Models/DatabaseModels/Index.ts +11 -0
  9. package/Models/DatabaseModels/LlmLog.ts +26 -0
  10. package/Models/DatabaseModels/LlmProvider.ts +2 -2
  11. package/Models/DatabaseModels/MigrationFailure.ts +170 -0
  12. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +51 -2
  13. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +44 -0
  14. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.ts +6 -0
  15. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLayerUser.ts +6 -0
  16. package/Models/DatabaseModels/OnCallDutyPolicyTimeLog.ts +1 -1
  17. package/Models/DatabaseModels/OnCallDutyPolicyUserOverride.ts +2 -2
  18. package/Server/API/AIChatAPI.ts +693 -0
  19. package/Server/API/AlertAPI.ts +1 -1
  20. package/Server/API/IncidentAPI.ts +2 -2
  21. package/Server/API/IncidentEpisodeAPI.ts +1 -1
  22. package/Server/API/LlmProviderAPI.ts +170 -0
  23. package/Server/API/MicrosoftTeamsAPI.ts +5 -0
  24. package/Server/API/ScheduledMaintenanceAPI.ts +1 -1
  25. package/Server/API/SlackAPI.ts +663 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.ts +245 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.ts +36 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.ts +46 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.ts +119 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783470000000-AddIncomingCallPolicyRoutingPhoneNumberUnique.ts +25 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783510935686-FixNotNullForeignKeysOnDelete.ts +81 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783515836148-MigrationName.ts +25 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1783523076215-AddMigrationFailureTable.ts +35 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +16 -0
  35. package/Server/Infrastructure/PostgresDatabase.ts +11 -0
  36. package/Server/Services/AIConversationMessageService.ts +39 -0
  37. package/Server/Services/AIConversationService.ts +63 -0
  38. package/Server/Services/AIRunEventService.ts +39 -0
  39. package/Server/Services/AIRunService.ts +39 -0
  40. package/Server/Services/AIService.ts +127 -33
  41. package/Server/Services/AnalyticsDatabaseService.ts +10 -1
  42. package/Server/Services/DatabaseService.ts +29 -1
  43. package/Server/Services/IncidentService.ts +1 -1
  44. package/Server/Services/IncomingCallPolicyEscalationRuleService.ts +75 -2
  45. package/Server/Services/IncomingCallPolicyService.ts +42 -1
  46. package/Server/Services/Index.ts +2 -0
  47. package/Server/Services/LlmProviderService.ts +110 -0
  48. package/Server/Services/MigrationFailureService.ts +9 -0
  49. package/Server/Services/MonitorProbeService.ts +33 -7
  50. package/Server/Services/MonitorService.ts +19 -7
  51. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +65 -0
  52. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +185 -41
  53. package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +23 -15
  54. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +39 -0
  55. package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +148 -0
  56. package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +11 -2
  57. package/Server/Services/OnCallDutyPolicyScheduleService.ts +502 -26
  58. package/Server/Services/OnCallDutyPolicyTimeLogService.ts +49 -7
  59. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +218 -4
  60. package/Server/Services/ProjectCallSMSConfigService.ts +82 -1
  61. package/Server/Services/ProjectService.ts +24 -0
  62. package/Server/Services/TeamMemberService.ts +6 -0
  63. package/Server/Services/UserNotificationRuleService.ts +13 -42
  64. package/Server/Services/UserOnCallLogService.ts +90 -0
  65. package/Server/Services/UserOnCallLogTimelineService.ts +43 -1
  66. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +74 -9
  67. package/Server/Types/Database/QueryUtil.ts +57 -0
  68. package/Server/Utils/AI/AIChatPrivacyFilter.ts +28 -0
  69. package/Server/Utils/AI/AlertAIContextBuilder.ts +6 -1
  70. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +1066 -0
  71. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +239 -0
  72. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +51 -0
  73. package/Server/Utils/AI/IncidentAIContextBuilder.ts +18 -3
  74. package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +6 -1
  75. package/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.ts +12 -2
  76. package/Server/Utils/AI/Toolbox/AlertTools.ts +201 -0
  77. package/Server/Utils/AI/Toolbox/AlertWriteTools.ts +174 -0
  78. package/Server/Utils/AI/Toolbox/ContextTools.ts +189 -0
  79. package/Server/Utils/AI/Toolbox/ExceptionTools.ts +149 -0
  80. package/Server/Utils/AI/Toolbox/IncidentTools.ts +386 -0
  81. package/Server/Utils/AI/Toolbox/IncidentWriteTools.ts +350 -0
  82. package/Server/Utils/AI/Toolbox/Index.ts +231 -0
  83. package/Server/Utils/AI/Toolbox/LogTools.ts +339 -0
  84. package/Server/Utils/AI/Toolbox/MetricTools.ts +179 -0
  85. package/Server/Utils/AI/Toolbox/MonitorTools.ts +193 -0
  86. package/Server/Utils/AI/Toolbox/RecentChangesTools.ts +208 -0
  87. package/Server/Utils/AI/Toolbox/Serializer.ts +299 -0
  88. package/Server/Utils/AI/Toolbox/ToolTypes.ts +249 -0
  89. package/Server/Utils/AI/Toolbox/TraceTools.ts +402 -0
  90. package/Server/Utils/AI/Toolbox/WidgetBuilder.ts +189 -0
  91. package/Server/Utils/Database/MigrationFailureLog.ts +240 -0
  92. package/Server/Utils/IncomingCallPhoneNumber.ts +41 -0
  93. package/Server/Utils/LLM/LLMService.ts +605 -96
  94. package/Server/Utils/Telemetry/IoTSnapshotScan.ts +12 -9
  95. package/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.ts +12 -9
  96. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +512 -19
  97. package/Server/Utils/Workspace/Slack/Slack.ts +80 -0
  98. package/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  99. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +0 -8
  100. package/Tests/Server/Services/OnCallDutyPolicyScheduleLayerUserReorder.test.ts +233 -0
  101. package/Tests/Server/Services/OnCallDutyPolicyTimeLogServiceScoping.test.ts +242 -0
  102. package/Tests/Server/Services/OnCallDutyPolicyUserOverrideEdit.test.ts +198 -0
  103. package/Tests/Server/Services/UserOnCallLogClaimNotificationRule.test.ts +495 -0
  104. package/Tests/Server/Types/Database/QueryUtil.test.ts +74 -0
  105. package/Tests/Server/Utils/AI/AIChatModelACL.test.ts +42 -0
  106. package/Tests/Server/Utils/AI/ChatAgentHelpers.test.ts +89 -0
  107. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +139 -0
  108. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +386 -0
  109. package/Tests/Server/Utils/AI/ToolArgsGetTimeRange.test.ts +62 -0
  110. package/Tests/Server/Utils/AI/ToolArgsScopeServiceIds.test.ts +79 -0
  111. package/Tests/Server/Utils/AI/ToolResultSerializer.test.ts +223 -0
  112. package/Tests/Types/Billing/SubscriptionStatus.test.ts +127 -0
  113. package/Tests/Types/DateExhaustiveTimezone.test.ts +700 -0
  114. package/Tests/Types/DateTimezoneWallClock.test.ts +99 -0
  115. package/Tests/Types/Events/Recurring.test.ts +22 -9
  116. package/Tests/Types/Metrics/RecordingRuleDefinition.test.ts +213 -0
  117. package/Tests/Types/OnCallDutyPolicy/LayerUtilAuditFixes.test.ts +291 -0
  118. package/Tests/Types/OnCallDutyPolicy/LayerUtilAuditFixesRound2.test.ts +398 -0
  119. package/Tests/Types/OnCallDutyPolicy/LayerUtilDSTWeekendGap.test.ts +114 -0
  120. package/Tests/Types/OnCallDutyPolicy/LayerUtilDSTWeeklyDayShift.test.ts +76 -0
  121. package/Tests/Types/OnCallDutyPolicy/LayerUtilDailyMutation.test.ts +128 -0
  122. package/Tests/Types/OnCallDutyPolicy/LayerUtilDailyProbe.test.ts +203 -0
  123. package/Tests/Types/OnCallDutyPolicy/LayerUtilDiffFuzz.test.ts +322 -0
  124. package/Tests/Types/OnCallDutyPolicy/LayerUtilEdgeCases.test.ts +280 -0
  125. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveCurrentUser.test.ts +863 -0
  126. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveDaily.test.ts +900 -0
  127. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveMultiLayer.test.ts +1104 -0
  128. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveRotation.test.ts +957 -0
  129. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveWeekly.test.ts +1095 -0
  130. package/Tests/Types/OnCallDutyPolicy/LayerUtilInvariants.test.ts +232 -0
  131. package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeAudit.test.ts +227 -0
  132. package/Tests/Types/OnCallDutyPolicy/LayerUtilMonthYearAudit.test.ts +255 -0
  133. package/Tests/Types/OnCallDutyPolicy/LayerUtilMultiLayerAudit.test.ts +388 -0
  134. package/Tests/Types/OnCallDutyPolicy/LayerUtilMultiLayerEdge.test.ts +300 -0
  135. package/Tests/Types/OnCallDutyPolicy/LayerUtilOvernightDSTAudit.test.ts +158 -0
  136. package/Tests/Types/OnCallDutyPolicy/LayerUtilRestrictedGapFix.test.ts +253 -0
  137. package/Tests/Types/OnCallDutyPolicy/LayerUtilRestrictedGapRepro.test.ts +157 -0
  138. package/Tests/Types/OnCallDutyPolicy/LayerUtilRotationFixes.test.ts +414 -0
  139. package/Tests/Types/OnCallDutyPolicy/LayerUtilTimezone.test.ts +243 -0
  140. package/Tests/Types/OnCallDutyPolicy/LayerUtilWeekendGapRepro.test.ts +112 -0
  141. package/Tests/Types/OnCallDutyPolicy/OverrideLensAudit.test.ts +117 -0
  142. package/Tests/Types/OnCallDutyPolicy/RestrictionTimes.test.ts +8 -6
  143. package/Tests/Types/OnCallDutyPolicy/RestrictionTimesDefaultDayAudit.test.ts +112 -0
  144. package/Tests/Types/OnCallDutyPolicy/RestrictionTimesExhaustive.test.ts +821 -0
  145. package/Tests/Types/OnCallDutyPolicy/RestrictionTimesMutationInvariant.test.ts +886 -0
  146. package/Tests/Types/OnCallDutyPolicy/UserOverrideUtil.test.ts +255 -0
  147. package/Tests/Types/OnCallDutyPolicy/UserOverrideUtilExhaustive.test.ts +1126 -0
  148. package/Types/AI/AIChatMessageRole.ts +6 -0
  149. package/Types/AI/AIChatMessageStatus.ts +32 -0
  150. package/Types/AI/AIChatPermissionMode.ts +69 -0
  151. package/Types/AI/AIChatTypes.ts +231 -0
  152. package/Types/AI/AIRunEventType.ts +17 -0
  153. package/Types/AI/AIRunStatus.ts +28 -0
  154. package/Types/AI/AIRunType.ts +6 -0
  155. package/Types/Date.ts +200 -15
  156. package/Types/LLM/LlmType.ts +6 -0
  157. package/Types/OnCallDutyPolicy/Layer.ts +790 -260
  158. package/Types/OnCallDutyPolicy/RestrictionTimes.ts +39 -13
  159. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +21 -5
  160. package/UI/Components/Events/RecurringFieldElement.tsx +16 -0
  161. package/UI/Components/Header/HeaderIconDropdownButton.tsx +22 -12
  162. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +35 -3
  163. package/UI/Components/ModelFormModal/ModelFormModal.tsx +8 -0
  164. package/UI/Components/Page/Page.tsx +14 -0
  165. package/UI/Components/RadioButtons/BasicRadioButtons.tsx +1 -1
  166. package/UI/Utils/LlmTypeDropdownOptions.ts +40 -0
  167. package/UI/Utils/TestLLMProvider.ts +59 -0
  168. package/build/dist/Models/DatabaseModels/AIConversation.js +345 -0
  169. package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -0
  170. package/build/dist/Models/DatabaseModels/AIConversationMessage.js +521 -0
  171. package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -0
  172. package/build/dist/Models/DatabaseModels/AIRun.js +619 -0
  173. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -0
  174. package/build/dist/Models/DatabaseModels/AIRunEvent.js +469 -0
  175. package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -0
  176. package/build/dist/Models/DatabaseModels/IncidentEpisodeRoleMember.js +1 -1
  177. package/build/dist/Models/DatabaseModels/IncidentEpisodeRoleMember.js.map +1 -1
  178. package/build/dist/Models/DatabaseModels/IncidentMember.js +1 -1
  179. package/build/dist/Models/DatabaseModels/IncidentMember.js.map +1 -1
  180. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +10 -0
  181. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -1
  182. package/build/dist/Models/DatabaseModels/Index.js +10 -0
  183. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  184. package/build/dist/Models/DatabaseModels/LlmLog.js +28 -0
  185. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/LlmProvider.js +2 -2
  187. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  188. package/build/dist/Models/DatabaseModels/MigrationFailure.js +196 -0
  189. package/build/dist/Models/DatabaseModels/MigrationFailure.js.map +1 -0
  190. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +52 -2
  191. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +45 -0
  193. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.js +6 -0
  195. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayerUser.js +6 -0
  197. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayerUser.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js +1 -1
  199. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js +2 -2
  201. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js.map +1 -1
  202. package/build/dist/Server/API/AIChatAPI.js +498 -0
  203. package/build/dist/Server/API/AIChatAPI.js.map +1 -0
  204. package/build/dist/Server/API/AlertAPI.js +1 -1
  205. package/build/dist/Server/API/IncidentAPI.js +2 -2
  206. package/build/dist/Server/API/IncidentEpisodeAPI.js +1 -1
  207. package/build/dist/Server/API/LlmProviderAPI.js +108 -1
  208. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  209. package/build/dist/Server/API/MicrosoftTeamsAPI.js +4 -0
  210. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  211. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +1 -1
  212. package/build/dist/Server/API/SlackAPI.js +442 -0
  213. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  214. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js +96 -0
  215. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js.map +1 -0
  216. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js +25 -0
  217. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js.map +1 -0
  218. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js +31 -0
  219. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js.map +1 -0
  220. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js +46 -0
  221. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js.map +1 -0
  222. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783470000000-AddIncomingCallPolicyRoutingPhoneNumberUnique.js +18 -0
  223. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783470000000-AddIncomingCallPolicyRoutingPhoneNumberUnique.js.map +1 -0
  224. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783510935686-FixNotNullForeignKeysOnDelete.js +38 -0
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783510935686-FixNotNullForeignKeysOnDelete.js.map +1 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783515836148-MigrationName.js +16 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783515836148-MigrationName.js.map +1 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783523076215-AddMigrationFailureTable.js +18 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783523076215-AddMigrationFailureTable.js.map +1 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +16 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  232. package/build/dist/Server/Infrastructure/PostgresDatabase.js +9 -0
  233. package/build/dist/Server/Infrastructure/PostgresDatabase.js.map +1 -1
  234. package/build/dist/Server/Services/AIConversationMessageService.js +34 -0
  235. package/build/dist/Server/Services/AIConversationMessageService.js.map +1 -0
  236. package/build/dist/Server/Services/AIConversationService.js +42 -0
  237. package/build/dist/Server/Services/AIConversationService.js.map +1 -0
  238. package/build/dist/Server/Services/AIRunEventService.js +34 -0
  239. package/build/dist/Server/Services/AIRunEventService.js.map +1 -0
  240. package/build/dist/Server/Services/AIRunService.js +34 -0
  241. package/build/dist/Server/Services/AIRunService.js.map +1 -0
  242. package/build/dist/Server/Services/AIService.js +84 -25
  243. package/build/dist/Server/Services/AIService.js.map +1 -1
  244. package/build/dist/Server/Services/AnalyticsDatabaseService.js +10 -1
  245. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  246. package/build/dist/Server/Services/DatabaseService.js +20 -1
  247. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  248. package/build/dist/Server/Services/IncidentService.js +1 -1
  249. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js +55 -2
  250. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js.map +1 -1
  251. package/build/dist/Server/Services/IncomingCallPolicyService.js +40 -0
  252. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  253. package/build/dist/Server/Services/Index.js +2 -0
  254. package/build/dist/Server/Services/Index.js.map +1 -1
  255. package/build/dist/Server/Services/LlmProviderService.js +108 -0
  256. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  257. package/build/dist/Server/Services/MigrationFailureService.js +9 -0
  258. package/build/dist/Server/Services/MigrationFailureService.js.map +1 -0
  259. package/build/dist/Server/Services/MonitorProbeService.js +33 -7
  260. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  261. package/build/dist/Server/Services/MonitorService.js +12 -5
  262. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  263. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +81 -22
  264. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  265. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +134 -31
  266. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  267. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +21 -13
  268. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
  269. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +36 -0
  270. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  271. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +121 -0
  272. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
  273. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +11 -2
  274. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
  275. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +409 -36
  276. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  277. package/build/dist/Server/Services/OnCallDutyPolicyTimeLogService.js +52 -8
  278. package/build/dist/Server/Services/OnCallDutyPolicyTimeLogService.js.map +1 -1
  279. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +170 -3
  280. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  281. package/build/dist/Server/Services/ProjectCallSMSConfigService.js +72 -0
  282. package/build/dist/Server/Services/ProjectCallSMSConfigService.js.map +1 -1
  283. package/build/dist/Server/Services/ProjectService.js +25 -0
  284. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  285. package/build/dist/Server/Services/TeamMemberService.js +6 -0
  286. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  287. package/build/dist/Server/Services/UserNotificationRuleService.js +12 -30
  288. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  289. package/build/dist/Server/Services/UserOnCallLogService.js +75 -0
  290. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  291. package/build/dist/Server/Services/UserOnCallLogTimelineService.js +31 -1
  292. package/build/dist/Server/Services/UserOnCallLogTimelineService.js.map +1 -1
  293. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +50 -7
  294. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  295. package/build/dist/Server/Types/Database/QueryUtil.js +45 -0
  296. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  297. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js +18 -0
  298. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js.map +1 -0
  299. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js +6 -1
  300. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js.map +1 -1
  301. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +756 -0
  302. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -0
  303. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +165 -0
  304. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -0
  305. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +44 -0
  306. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -0
  307. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js +18 -3
  308. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js.map +1 -1
  309. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +6 -1
  310. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -1
  311. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js +12 -2
  312. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js.map +1 -1
  313. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +167 -0
  314. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -0
  315. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js +136 -0
  316. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js.map +1 -0
  317. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js +141 -0
  318. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js.map +1 -0
  319. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js +117 -0
  320. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js.map +1 -0
  321. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +318 -0
  322. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -0
  323. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js +280 -0
  324. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js.map +1 -0
  325. package/build/dist/Server/Utils/AI/Toolbox/Index.js +153 -0
  326. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -0
  327. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js +246 -0
  328. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js.map +1 -0
  329. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +120 -0
  330. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -0
  331. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +158 -0
  332. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -0
  333. package/build/dist/Server/Utils/AI/Toolbox/RecentChangesTools.js +165 -0
  334. package/build/dist/Server/Utils/AI/Toolbox/RecentChangesTools.js.map +1 -0
  335. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js +228 -0
  336. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js.map +1 -0
  337. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js +142 -0
  338. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -0
  339. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +309 -0
  340. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -0
  341. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js +120 -0
  342. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js.map +1 -0
  343. package/build/dist/Server/Utils/Database/MigrationFailureLog.js +174 -0
  344. package/build/dist/Server/Utils/Database/MigrationFailureLog.js.map +1 -0
  345. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js +30 -0
  346. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js.map +1 -0
  347. package/build/dist/Server/Utils/LLM/LLMService.js +452 -92
  348. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  349. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +11 -8
  350. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -1
  351. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js +11 -8
  352. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js.map +1 -1
  353. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +378 -15
  354. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  355. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +59 -0
  356. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  357. package/build/dist/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  358. package/build/dist/Types/AI/AIChatMessageRole.js +7 -0
  359. package/build/dist/Types/AI/AIChatMessageRole.js.map +1 -0
  360. package/build/dist/Types/AI/AIChatMessageStatus.js +27 -0
  361. package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -0
  362. package/build/dist/Types/AI/AIChatPermissionMode.js +53 -0
  363. package/build/dist/Types/AI/AIChatPermissionMode.js.map +1 -0
  364. package/build/dist/Types/AI/AIChatTypes.js +74 -0
  365. package/build/dist/Types/AI/AIChatTypes.js.map +1 -0
  366. package/build/dist/Types/AI/AIRunEventType.js +18 -0
  367. package/build/dist/Types/AI/AIRunEventType.js.map +1 -0
  368. package/build/dist/Types/AI/AIRunStatus.js +26 -0
  369. package/build/dist/Types/AI/AIRunStatus.js.map +1 -0
  370. package/build/dist/Types/AI/AIRunType.js +7 -0
  371. package/build/dist/Types/AI/AIRunType.js.map +1 -0
  372. package/build/dist/Types/Date.js +153 -15
  373. package/build/dist/Types/Date.js.map +1 -1
  374. package/build/dist/Types/LLM/LlmType.js +6 -0
  375. package/build/dist/Types/LLM/LlmType.js.map +1 -1
  376. package/build/dist/Types/OnCallDutyPolicy/Layer.js +602 -171
  377. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  378. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js +27 -13
  379. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js.map +1 -1
  380. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +20 -5
  381. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  382. package/build/dist/UI/Components/Events/RecurringFieldElement.js +13 -0
  383. package/build/dist/UI/Components/Events/RecurringFieldElement.js.map +1 -1
  384. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +10 -5
  385. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  386. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +18 -4
  387. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  388. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  389. package/build/dist/UI/Components/Page/Page.js +3 -1
  390. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  391. package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +1 -1
  392. package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
  393. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js +38 -0
  394. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js.map +1 -0
  395. package/build/dist/UI/Utils/TestLLMProvider.js +37 -0
  396. package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -0
  397. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ import Alert from "../../../../Models/DatabaseModels/Alert";
2
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
3
+ import { AIChatCitationTargetType } from "../../../../Types/AI/AIChatTypes";
4
+ import AlertService from "../../../Services/AlertService";
5
+ import QueryHelper from "../../../Types/Database/QueryHelper";
6
+ import OneUptimeDate from "../../../../Types/Date";
7
+ import ToolResultSerializer from "./Serializer";
8
+ import WidgetBuilder from "./WidgetBuilder";
9
+ import { ToolArgs, } from "./ToolTypes";
10
+ /*
11
+ * Derived from the model ACL so the tool gate can never drift from RBAC.
12
+ * Resolved lazily rather than at module load: this module is pulled in through
13
+ * the service import graph before the Alert model class is fully wired up, so
14
+ * calling a model method at import time throws a circular-dependency
15
+ * TypeError. By the time a tool actually executes, every module is loaded.
16
+ */
17
+ let cachedReadPermissions = null;
18
+ const resolveReadPermissions = () => {
19
+ if (!cachedReadPermissions) {
20
+ cachedReadPermissions = new Alert().getReadPermissions();
21
+ }
22
+ return cachedReadPermissions;
23
+ };
24
+ export const QueryAlertsTool = {
25
+ name: "query_alerts",
26
+ description: "Query alerts in this project. Returns the most recent alerts with their current state and severity. Pass alertId to get full details of one alert.",
27
+ inputSchema: {
28
+ type: "object",
29
+ properties: {
30
+ alertId: {
31
+ type: "string",
32
+ description: "Get one alert by its ID (includes description).",
33
+ },
34
+ createdWithinHours: {
35
+ type: "number",
36
+ description: "Only alerts created within this many hours (default 24, max 720).",
37
+ },
38
+ limit: {
39
+ type: "number",
40
+ description: "Maximum alerts to return (default 10, max 25).",
41
+ },
42
+ },
43
+ },
44
+ get requiredPermissions() {
45
+ return resolveReadPermissions();
46
+ },
47
+ execute: async (args, ctx) => {
48
+ var _a, _b, _c, _d;
49
+ const alertId = ToolArgs.getObjectID(args, "alertId");
50
+ if (alertId) {
51
+ const alert = await AlertService.findOneById({
52
+ id: alertId,
53
+ select: {
54
+ _id: true,
55
+ title: true,
56
+ description: true,
57
+ alertNumber: true,
58
+ createdAt: true,
59
+ currentAlertState: {
60
+ name: true,
61
+ },
62
+ alertSeverity: {
63
+ name: true,
64
+ },
65
+ },
66
+ props: ctx.props,
67
+ });
68
+ const rows = alert
69
+ ? [
70
+ {
71
+ id: (_a = alert.id) === null || _a === void 0 ? void 0 : _a.toString(),
72
+ alertNumber: alert.alertNumber,
73
+ title: alert.title,
74
+ description: alert.description,
75
+ state: (_b = alert.currentAlertState) === null || _b === void 0 ? void 0 : _b.name,
76
+ severity: (_c = alert.alertSeverity) === null || _c === void 0 ? void 0 : _c.name,
77
+ createdAt: alert.createdAt,
78
+ },
79
+ ]
80
+ : [];
81
+ const serialized = ToolResultSerializer.serializeRows(rows);
82
+ return {
83
+ dataForLlm: serialized.text,
84
+ rowCount: serialized.rowCount,
85
+ citationLabel: `Alert ${(alert === null || alert === void 0 ? void 0 : alert.alertNumber) ? `#${alert.alertNumber}` : alertId.toString()}`,
86
+ citationTarget: {
87
+ type: AIChatCitationTargetType.AlertView,
88
+ params: { alertId: alertId.toString() },
89
+ },
90
+ redactionCount: serialized.redactionCount,
91
+ isTruncated: serialized.isTruncated,
92
+ widget: rows.length > 0
93
+ ? WidgetBuilder.alertList({
94
+ title: `Alert #${(_d = alert === null || alert === void 0 ? void 0 : alert.alertNumber) !== null && _d !== void 0 ? _d : ""}`.trim(),
95
+ items: rows,
96
+ link: {
97
+ type: AIChatCitationTargetType.AlertView,
98
+ params: { alertId: alertId.toString() },
99
+ },
100
+ })
101
+ : undefined,
102
+ };
103
+ }
104
+ const createdWithinHours = ToolArgs.getNumber(args, "createdWithinHours", { defaultValue: 24, min: 1, max: 720 });
105
+ const limit = ToolArgs.getNumber(args, "limit", {
106
+ defaultValue: 10,
107
+ min: 1,
108
+ max: 25,
109
+ });
110
+ const endTime = OneUptimeDate.getCurrentDate();
111
+ const startTime = OneUptimeDate.addRemoveHours(endTime, -1 * createdWithinHours);
112
+ const alerts = await AlertService.findBy({
113
+ query: {
114
+ createdAt: QueryHelper.inBetween(startTime, endTime),
115
+ },
116
+ select: {
117
+ _id: true,
118
+ title: true,
119
+ alertNumber: true,
120
+ createdAt: true,
121
+ currentAlertState: {
122
+ name: true,
123
+ },
124
+ alertSeverity: {
125
+ name: true,
126
+ },
127
+ },
128
+ sort: {
129
+ createdAt: SortOrder.Descending,
130
+ },
131
+ limit: limit,
132
+ skip: 0,
133
+ props: ctx.props,
134
+ });
135
+ const rows = alerts.map((alert) => {
136
+ var _a, _b, _c;
137
+ return {
138
+ id: (_a = alert.id) === null || _a === void 0 ? void 0 : _a.toString(),
139
+ alertNumber: alert.alertNumber,
140
+ title: alert.title,
141
+ state: (_b = alert.currentAlertState) === null || _b === void 0 ? void 0 : _b.name,
142
+ severity: (_c = alert.alertSeverity) === null || _c === void 0 ? void 0 : _c.name,
143
+ createdAt: alert.createdAt,
144
+ };
145
+ });
146
+ const serialized = ToolResultSerializer.serializeRows(rows);
147
+ return {
148
+ dataForLlm: serialized.text,
149
+ rowCount: serialized.rowCount,
150
+ citationLabel: `Alerts, last ${createdWithinHours}h (${serialized.rowCount} found)`,
151
+ citationTarget: {
152
+ type: AIChatCitationTargetType.Alerts,
153
+ },
154
+ redactionCount: serialized.redactionCount,
155
+ isTruncated: serialized.isTruncated,
156
+ widget: rows.length > 0
157
+ ? WidgetBuilder.alertList({
158
+ title: `Alerts (${rows.length})`,
159
+ description: `Created in the last ${createdWithinHours}h`,
160
+ items: rows,
161
+ link: { type: AIChatCitationTargetType.Alerts },
162
+ })
163
+ : undefined,
164
+ };
165
+ },
166
+ };
167
+ //# sourceMappingURL=AlertTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/AlertTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yCAAyC,CAAC;AAI5D,OAAO,SAAS,MAAM,0CAA0C,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,oBAA0C,MAAM,cAAc,CAAC;AACtE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,QAAQ,GAGT,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,IAAI,qBAAqB,GAA6B,IAAI,CAAC;AAC3D,MAAM,sBAAsB,GAC1B,GAAsB,EAAE;IACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,IAAI,KAAK,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,oJAAoJ;IACtJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;aAC/D;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,mEAAmE;aACtE;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;SACF;KACF;IACD,IAAI,mBAAmB;QACrB,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;;QAChC,MAAM,OAAO,GAAyB,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAiB,MAAM,YAAY,CAAC,WAAW,CAAC;gBACzD,EAAE,EAAE,OAAO;gBACX,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,IAAI;oBACX,WAAW,EAAE,IAAI;oBACjB,WAAW,EAAE,IAAI;oBACjB,SAAS,EAAE,IAAI;oBACf,iBAAiB,EAAE;wBACjB,IAAI,EAAE,IAAI;qBACX;oBACD,aAAa,EAAE;wBACb,IAAI,EAAE,IAAI;qBACX;iBACF;gBACD,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAsB,KAAK;gBACnC,CAAC,CAAC;oBACE;wBACE,EAAE,EAAE,MAAA,KAAK,CAAC,EAAE,0CAAE,QAAQ,EAAE;wBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,KAAK,EAAE,MAAA,KAAK,CAAC,iBAAiB,0CAAE,IAAI;wBACpC,QAAQ,EAAE,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAI;wBACnC,SAAS,EAAE,KAAK,CAAC,SAAS;qBAC3B;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,UAAU,GACd,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAE3C,OAAO;gBACL,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,aAAa,EAAE,SAAS,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;gBAC3F,cAAc,EAAE;oBACd,IAAI,EAAE,wBAAwB,CAAC,SAAS;oBACxC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE;iBACxC;gBACD,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,MAAM,EACJ,IAAI,CAAC,MAAM,GAAG,CAAC;oBACb,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;wBACtB,KAAK,EAAE,UAAU,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,mCAAI,EAAE,EAAE,CAAC,IAAI,EAAE;wBAClD,KAAK,EAAE,IAAI;wBACX,IAAI,EAAE;4BACJ,IAAI,EAAE,wBAAwB,CAAC,SAAS;4BACxC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE;yBACxC;qBACF,CAAC;oBACJ,CAAC,CAAC,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAW,QAAQ,CAAC,SAAS,CACnD,IAAI,EACJ,oBAAoB,EACpB,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CACvC,CAAC;QACF,MAAM,KAAK,GAAW,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE;YACtD,YAAY,EAAE,EAAE;YAChB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC,CAAC;QAEH,MAAM,OAAO,GAAS,aAAa,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,SAAS,GAAS,aAAa,CAAC,cAAc,CAClD,OAAO,EACP,CAAC,CAAC,GAAG,kBAAkB,CACxB,CAAC;QAEF,MAAM,MAAM,GAAiB,MAAM,YAAY,CAAC,MAAM,CAAC;YACrD,KAAK,EAAE;gBACL,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;aACrD;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;gBACf,iBAAiB,EAAE;oBACjB,IAAI,EAAE,IAAI;iBACX;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,IAAI;iBACX;aACF;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,SAAS,CAAC,UAAU;aAChC;YACD,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE;;YAC1D,OAAO;gBACL,EAAE,EAAE,MAAA,KAAK,CAAC,EAAE,0CAAE,QAAQ,EAAE;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,MAAA,KAAK,CAAC,iBAAiB,0CAAE,IAAI;gBACpC,QAAQ,EAAE,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAI;gBACnC,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GACd,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE3C,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,aAAa,EAAE,gBAAgB,kBAAkB,MAAM,UAAU,CAAC,QAAQ,SAAS;YACnF,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB,CAAC,MAAM;aACtC;YACD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,MAAM,EACJ,IAAI,CAAC,MAAM,GAAG,CAAC;gBACb,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;oBACtB,KAAK,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG;oBAChC,WAAW,EAAE,uBAAuB,kBAAkB,GAAG;oBACzD,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,wBAAwB,CAAC,MAAM,EAAE;iBAChD,CAAC;gBACJ,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,136 @@
1
+ import Alert from "../../../../Models/DatabaseModels/Alert";
2
+ import BadDataException from "../../../../Types/Exception/BadDataException";
3
+ import { AIChatCitationTargetType } from "../../../../Types/AI/AIChatTypes";
4
+ import AlertService from "../../../Services/AlertService";
5
+ import ToolResultSerializer from "./Serializer";
6
+ import WidgetBuilder from "./WidgetBuilder";
7
+ import { ToolArgs, } from "./ToolTypes";
8
+ /*
9
+ * Derived from the model ACL so the tool gate can never drift from RBAC.
10
+ * Resolved lazily rather than at module load: this module is pulled in through
11
+ * the service import graph before the Alert model class is fully wired up, so
12
+ * calling a model method at import time throws a circular-dependency
13
+ * TypeError. By the time a tool actually executes, every module is loaded.
14
+ */
15
+ let cachedUpdatePermissions = null;
16
+ const resolveUpdatePermissions = () => {
17
+ if (!cachedUpdatePermissions) {
18
+ cachedUpdatePermissions = new Alert().getUpdatePermissions();
19
+ }
20
+ return cachedUpdatePermissions;
21
+ };
22
+ async function changeAlertStateTool(data) {
23
+ var _a;
24
+ const { args, ctx, verb } = data;
25
+ const alertId = ToolArgs.getObjectID(args, "alertId");
26
+ if (!alertId) {
27
+ throw new BadDataException("alertId is required. Use query_alerts to find it first.");
28
+ }
29
+ const userId = ctx.props.userId;
30
+ if (!userId) {
31
+ throw new BadDataException("No authenticated user in context; cannot change the alert.");
32
+ }
33
+ // Confirm the alert is visible to this user under their RBAC.
34
+ const alert = await AlertService.findOneById({
35
+ id: alertId,
36
+ select: {
37
+ _id: true,
38
+ alertNumber: true,
39
+ title: true,
40
+ },
41
+ props: ctx.props,
42
+ });
43
+ if (!alert) {
44
+ throw new BadDataException("Alert not found (or you do not have access to it).");
45
+ }
46
+ if (verb === "acknowledge") {
47
+ await AlertService.acknowledgeAlert(alertId, userId);
48
+ }
49
+ else {
50
+ await AlertService.resolveAlert(alertId, userId);
51
+ }
52
+ const newStateName = verb === "acknowledge" ? "Acknowledged" : "Resolved";
53
+ const alertIdString = alertId.toString();
54
+ const serialized = ToolResultSerializer.serializeRows([
55
+ {
56
+ id: alertIdString,
57
+ alertNumber: alert.alertNumber,
58
+ title: alert.title,
59
+ newState: newStateName,
60
+ },
61
+ ]);
62
+ return {
63
+ dataForLlm: `Alert #${alert.alertNumber} ("${alert.title}") is now ${newStateName}.\n${serialized.text}`,
64
+ rowCount: 1,
65
+ citationLabel: `${newStateName} alert #${alert.alertNumber}`,
66
+ citationTarget: {
67
+ type: AIChatCitationTargetType.AlertView,
68
+ params: { alertId: alertIdString },
69
+ },
70
+ redactionCount: serialized.redactionCount,
71
+ isTruncated: false,
72
+ widget: WidgetBuilder.resourceCard({
73
+ title: `Alert ${newStateName.toLowerCase()}`,
74
+ resourceType: "Alert",
75
+ heading: `#${alert.alertNumber} · ${alert.title}`,
76
+ subheading: `Now ${newStateName}`,
77
+ fields: [
78
+ { label: "Number", value: `#${(_a = alert.alertNumber) !== null && _a !== void 0 ? _a : ""}` },
79
+ { label: "State", value: newStateName },
80
+ ],
81
+ link: {
82
+ type: AIChatCitationTargetType.AlertView,
83
+ params: { alertId: alertIdString },
84
+ },
85
+ }),
86
+ };
87
+ }
88
+ export const AcknowledgeAlertTool = {
89
+ name: "acknowledge_alert",
90
+ description: "Acknowledge an alert (move it to the acknowledged state) by its alertId. Find the alertId with query_alerts first.",
91
+ inputSchema: {
92
+ type: "object",
93
+ properties: {
94
+ alertId: {
95
+ type: "string",
96
+ description: "The alert's ID (required).",
97
+ },
98
+ },
99
+ required: ["alertId"],
100
+ },
101
+ get requiredPermissions() {
102
+ return resolveUpdatePermissions();
103
+ },
104
+ isMutation: true,
105
+ buildActionTitle: (args) => {
106
+ return `Acknowledge alert ${ToolArgs.getString(args, "alertId") || ""}`.trim();
107
+ },
108
+ execute: async (args, ctx) => {
109
+ return changeAlertStateTool({ args, ctx, verb: "acknowledge" });
110
+ },
111
+ };
112
+ export const ResolveAlertTool = {
113
+ name: "resolve_alert",
114
+ description: "Resolve an alert (move it to the resolved state) by its alertId. Find the alertId with query_alerts first.",
115
+ inputSchema: {
116
+ type: "object",
117
+ properties: {
118
+ alertId: {
119
+ type: "string",
120
+ description: "The alert's ID (required).",
121
+ },
122
+ },
123
+ required: ["alertId"],
124
+ },
125
+ get requiredPermissions() {
126
+ return resolveUpdatePermissions();
127
+ },
128
+ isMutation: true,
129
+ buildActionTitle: (args) => {
130
+ return `Resolve alert ${ToolArgs.getString(args, "alertId") || ""}`.trim();
131
+ },
132
+ execute: async (args, ctx) => {
133
+ return changeAlertStateTool({ args, ctx, verb: "resolve" });
134
+ },
135
+ };
136
+ //# sourceMappingURL=AlertWriteTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertWriteTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/AlertWriteTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yCAAyC,CAAC;AAI5D,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,oBAA0C,MAAM,cAAc,CAAC;AACtE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,QAAQ,GAGT,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,IAAI,uBAAuB,GAA6B,IAAI,CAAC;AAC7D,MAAM,wBAAwB,GAC5B,GAAsB,EAAE;IACtB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,IAAI,KAAK,EAAE,CAAC,oBAAoB,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC,CAAC;AAEJ,KAAK,UAAU,oBAAoB,CAAC,IAInC;;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEjC,MAAM,OAAO,GAAyB,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CACxB,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAyB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,gBAAgB,CACxB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,KAAK,GAAiB,MAAM,YAAY,CAAC,WAAW,CAAC;QACzD,EAAE,EAAE,OAAO;QACX,MAAM,EAAE;YACN,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;SACZ;QACD,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,gBAAgB,CACxB,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,YAAY,GAChB,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;IAEvD,MAAM,aAAa,GAAW,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEjD,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;QACtE;YACE,EAAE,EAAE,aAAa;YACjB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,YAAY;SACvB;KACF,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,UAAU,KAAK,CAAC,WAAW,MAAM,KAAK,CAAC,KAAK,aAAa,YAAY,MAAM,UAAU,CAAC,IAAI,EAAE;QACxG,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,GAAG,YAAY,WAAW,KAAK,CAAC,WAAW,EAAE;QAC5D,cAAc,EAAE;YACd,IAAI,EAAE,wBAAwB,CAAC,SAAS;YACxC,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;SACnC;QACD,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC;YACjC,KAAK,EAAE,SAAS,YAAY,CAAC,WAAW,EAAE,EAAE;YAC5C,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,MAAM,KAAK,CAAC,KAAK,EAAE;YACjD,UAAU,EAAE,OAAO,YAAY,EAAE;YACjC,MAAM,EAAE;gBACN,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE,EAAE,EAAE;gBACzD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;aACxC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,wBAAwB,CAAC,SAAS;gBACxC,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;aACnC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,oHAAoH;IACtH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,IAAI,mBAAmB;QACrB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,qBAAqB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;QAChC,OAAO,oBAAoB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,4GAA4G;IAC9G,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,IAAI,mBAAmB;QACrB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IACD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,CAAC,IAAgB,EAAU,EAAE;QAC7C,OAAO,iBAAiB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;QAChC,OAAO,oBAAoB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC"}
@@ -0,0 +1,141 @@
1
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
2
+ import BadDataException from "../../../../Types/Exception/BadDataException";
3
+ import Permission from "../../../../Types/Permission";
4
+ import TelemetryType from "../../../../Types/Telemetry/TelemetryType";
5
+ import MetricTypeService from "../../../Services/MetricTypeService";
6
+ import ServiceService from "../../../Services/ServiceService";
7
+ import TelemetryAttributeService from "../../../Services/TelemetryAttributeService";
8
+ import QueryHelper from "../../../Types/Database/QueryHelper";
9
+ import ToolResultSerializer from "./Serializer";
10
+ import { ToolArgs, } from "./ToolTypes";
11
+ const CONTEXT_READ_PERMISSIONS = [
12
+ Permission.ProjectOwner,
13
+ Permission.ProjectAdmin,
14
+ Permission.ProjectMember,
15
+ Permission.Viewer,
16
+ Permission.TelemetryAdmin,
17
+ Permission.TelemetryMember,
18
+ Permission.TelemetryViewer,
19
+ ];
20
+ export const LookupContextTool = {
21
+ name: "lookup_context",
22
+ description: "Discover what exists in this project so other tools can be called with exact identifiers: telemetry services (name → ID), metric names, and attribute keys for logs/traces/metrics. ALWAYS resolve a service name to its ID here before filtering other tools by service.",
23
+ inputSchema: {
24
+ type: "object",
25
+ properties: {
26
+ type: {
27
+ type: "string",
28
+ enum: ["services", "metricNames", "attributeKeys"],
29
+ description: "What to look up (required).",
30
+ },
31
+ nameSearch: {
32
+ type: "string",
33
+ description: "Filter results whose name contains this text.",
34
+ },
35
+ telemetryType: {
36
+ type: "string",
37
+ enum: ["Log", "Trace", "Metric", "Exception"],
38
+ description: "For attributeKeys lookups: which signal's attribute keys to list.",
39
+ },
40
+ },
41
+ required: ["type"],
42
+ },
43
+ requiredPermissions: CONTEXT_READ_PERMISSIONS,
44
+ execute: async (args, ctx) => {
45
+ const lookupType = ToolArgs.getString(args, "type");
46
+ const nameSearch = ToolArgs.getString(args, "nameSearch");
47
+ if (lookupType === "services") {
48
+ const services = await ServiceService.findBy({
49
+ query: nameSearch
50
+ ? {
51
+ name: QueryHelper.search(nameSearch),
52
+ }
53
+ : {},
54
+ select: {
55
+ _id: true,
56
+ name: true,
57
+ },
58
+ sort: {
59
+ name: SortOrder.Ascending,
60
+ },
61
+ limit: 100,
62
+ skip: 0,
63
+ props: ctx.props,
64
+ });
65
+ const rows = services.map((service) => {
66
+ var _a;
67
+ return {
68
+ id: (_a = service.id) === null || _a === void 0 ? void 0 : _a.toString(),
69
+ name: service.name,
70
+ };
71
+ });
72
+ const serialized = ToolResultSerializer.serializeRows(rows);
73
+ return {
74
+ dataForLlm: serialized.text,
75
+ rowCount: serialized.rowCount,
76
+ citationLabel: `Telemetry services (${serialized.rowCount} found)`,
77
+ citationTarget: undefined,
78
+ redactionCount: serialized.redactionCount,
79
+ isTruncated: serialized.isTruncated,
80
+ };
81
+ }
82
+ if (lookupType === "metricNames") {
83
+ const metricTypes = await MetricTypeService.findBy({
84
+ query: nameSearch
85
+ ? {
86
+ name: QueryHelper.search(nameSearch),
87
+ }
88
+ : {},
89
+ select: {
90
+ name: true,
91
+ },
92
+ sort: {
93
+ name: SortOrder.Ascending,
94
+ },
95
+ limit: 200,
96
+ skip: 0,
97
+ props: ctx.props,
98
+ });
99
+ const rows = metricTypes.map((metricType) => {
100
+ return {
101
+ name: metricType.name,
102
+ };
103
+ });
104
+ const serialized = ToolResultSerializer.serializeRows(rows);
105
+ return {
106
+ dataForLlm: serialized.text,
107
+ rowCount: serialized.rowCount,
108
+ citationLabel: `Metric names (${serialized.rowCount} found)`,
109
+ citationTarget: undefined,
110
+ redactionCount: serialized.redactionCount,
111
+ isTruncated: serialized.isTruncated,
112
+ };
113
+ }
114
+ if (lookupType === "attributeKeys") {
115
+ const telemetryTypeString = ToolArgs.getString(args, "telemetryType") || "Log";
116
+ if (!Object.values(TelemetryType).includes(telemetryTypeString)) {
117
+ throw new BadDataException(`Invalid telemetryType: ${telemetryTypeString}`);
118
+ }
119
+ const attributes = await TelemetryAttributeService.fetchAttributes({
120
+ projectId: ctx.projectId,
121
+ telemetryType: telemetryTypeString,
122
+ });
123
+ const filtered = nameSearch
124
+ ? attributes.filter((attribute) => {
125
+ return attribute.toLowerCase().includes(nameSearch.toLowerCase());
126
+ })
127
+ : attributes;
128
+ const serialized = ToolResultSerializer.serializeText(filtered.slice(0, 200).join("\n"), filtered.length);
129
+ return {
130
+ dataForLlm: serialized.text,
131
+ rowCount: serialized.rowCount,
132
+ citationLabel: `${telemetryTypeString} attribute keys (${filtered.length} found)`,
133
+ citationTarget: undefined,
134
+ redactionCount: serialized.redactionCount,
135
+ isTruncated: serialized.isTruncated,
136
+ };
137
+ }
138
+ throw new BadDataException(`Invalid lookup type: ${lookupType}. Use one of: services, metricNames, attributeKeys.`);
139
+ },
140
+ };
141
+ //# sourceMappingURL=ContextTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/ContextTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import TelemetryException from "../../../../Models/DatabaseModels/TelemetryException";
2
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
3
+ import { AIChatCitationTargetType } from "../../../../Types/AI/AIChatTypes";
4
+ import TelemetryExceptionService from "../../../Services/TelemetryExceptionService";
5
+ import QueryHelper from "../../../Types/Database/QueryHelper";
6
+ import OneUptimeDate from "../../../../Types/Date";
7
+ import ToolResultSerializer from "./Serializer";
8
+ import WidgetBuilder from "./WidgetBuilder";
9
+ import { ToolArgs, } from "./ToolTypes";
10
+ /*
11
+ * Derived from the model ACL so the tool gate can never drift from RBAC.
12
+ * Resolved lazily rather than at module load: this module is pulled in through
13
+ * the service import graph before the TelemetryException model class is fully
14
+ * wired up, so calling a model method at import time throws a
15
+ * circular-dependency TypeError. By the time a tool actually executes, every
16
+ * module is loaded.
17
+ */
18
+ let cachedReadPermissions = null;
19
+ const resolveReadPermissions = () => {
20
+ if (!cachedReadPermissions) {
21
+ cachedReadPermissions = new TelemetryException().getReadPermissions();
22
+ }
23
+ return cachedReadPermissions;
24
+ };
25
+ export const TopExceptionsTool = {
26
+ name: "top_exceptions",
27
+ description: "Get the top exceptions (grouped by fingerprint) in this project, sorted by occurrence count. Includes first/last seen timestamps so you can tell if an exception is new or recurring.",
28
+ inputSchema: {
29
+ type: "object",
30
+ properties: {
31
+ lastSeenWithinHours: {
32
+ type: "number",
33
+ description: "Only exceptions last seen within this many hours (default 168 = 7 days, max 720).",
34
+ },
35
+ includeResolved: {
36
+ type: "boolean",
37
+ description: "Include resolved exceptions (default false).",
38
+ },
39
+ limit: {
40
+ type: "number",
41
+ description: "Maximum exception groups to return (default 10, max 25).",
42
+ },
43
+ },
44
+ },
45
+ get requiredPermissions() {
46
+ return resolveReadPermissions();
47
+ },
48
+ execute: async (args, ctx) => {
49
+ var _a;
50
+ const lastSeenWithinHours = ToolArgs.getNumber(args, "lastSeenWithinHours", { defaultValue: 168, min: 1, max: 720 });
51
+ const includeResolved = (_a = ToolArgs.getBoolean(args, "includeResolved")) !== null && _a !== void 0 ? _a : false;
52
+ const limit = ToolArgs.getNumber(args, "limit", {
53
+ defaultValue: 10,
54
+ min: 1,
55
+ max: 25,
56
+ });
57
+ const since = OneUptimeDate.addRemoveHours(OneUptimeDate.getCurrentDate(), -1 * lastSeenWithinHours);
58
+ const query = {
59
+ lastSeenAt: QueryHelper.greaterThanEqualTo(since),
60
+ };
61
+ if (!includeResolved) {
62
+ query["isResolved"] = false;
63
+ }
64
+ const exceptions = await TelemetryExceptionService.findBy({
65
+ query: query,
66
+ select: {
67
+ _id: true,
68
+ message: true,
69
+ exceptionType: true,
70
+ fingerprint: true,
71
+ occuranceCount: true,
72
+ firstSeenAt: true,
73
+ lastSeenAt: true,
74
+ isResolved: true,
75
+ },
76
+ sort: {
77
+ occuranceCount: SortOrder.Descending,
78
+ },
79
+ limit: limit,
80
+ skip: 0,
81
+ props: ctx.props,
82
+ });
83
+ const rows = exceptions.map((exception) => {
84
+ var _a;
85
+ return {
86
+ id: (_a = exception.id) === null || _a === void 0 ? void 0 : _a.toString(),
87
+ type: exception.exceptionType,
88
+ message: exception.message,
89
+ occurrences: exception.occuranceCount,
90
+ firstSeenAt: exception.firstSeenAt,
91
+ lastSeenAt: exception.lastSeenAt,
92
+ isResolved: exception.isResolved,
93
+ fingerprint: exception.fingerprint,
94
+ };
95
+ });
96
+ const serialized = ToolResultSerializer.serializeRows(rows);
97
+ return {
98
+ dataForLlm: serialized.text,
99
+ rowCount: serialized.rowCount,
100
+ citationLabel: `Top exceptions, last ${lastSeenWithinHours}h (${serialized.rowCount} found)`,
101
+ citationTarget: {
102
+ type: AIChatCitationTargetType.Exceptions,
103
+ },
104
+ redactionCount: serialized.redactionCount,
105
+ isTruncated: serialized.isTruncated,
106
+ widget: rows.length > 0
107
+ ? WidgetBuilder.exceptionList({
108
+ title: `Top exceptions (${rows.length})`,
109
+ description: `Last ${lastSeenWithinHours}h, by occurrence count`,
110
+ items: rows,
111
+ link: { type: AIChatCitationTargetType.Exceptions },
112
+ })
113
+ : undefined,
114
+ };
115
+ },
116
+ };
117
+ //# sourceMappingURL=ExceptionTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExceptionTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/ExceptionTools.ts"],"names":[],"mappings":"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"}