@oneuptime/common 11.3.25 → 11.3.26

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 (189) 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/Index.ts +8 -0
  6. package/Models/DatabaseModels/LlmLog.ts +26 -0
  7. package/Models/DatabaseModels/LlmProvider.ts +2 -2
  8. package/Server/API/AIChatAPI.ts +693 -0
  9. package/Server/API/LlmProviderAPI.ts +169 -0
  10. package/Server/API/MicrosoftTeamsAPI.ts +5 -0
  11. package/Server/API/SlackAPI.ts +663 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.ts +245 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.ts +36 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.ts +46 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.ts +119 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  17. package/Server/Services/AIConversationMessageService.ts +39 -0
  18. package/Server/Services/AIConversationService.ts +63 -0
  19. package/Server/Services/AIRunEventService.ts +39 -0
  20. package/Server/Services/AIRunService.ts +39 -0
  21. package/Server/Services/AIService.ts +53 -31
  22. package/Server/Services/DatabaseService.ts +19 -0
  23. package/Server/Services/LlmProviderService.ts +110 -0
  24. package/Server/Services/ProjectService.ts +24 -0
  25. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +74 -9
  26. package/Server/Utils/AI/AIChatPrivacyFilter.ts +28 -0
  27. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +1054 -0
  28. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +239 -0
  29. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +51 -0
  30. package/Server/Utils/AI/Toolbox/AlertTools.ts +201 -0
  31. package/Server/Utils/AI/Toolbox/AlertWriteTools.ts +174 -0
  32. package/Server/Utils/AI/Toolbox/ContextTools.ts +189 -0
  33. package/Server/Utils/AI/Toolbox/ExceptionTools.ts +149 -0
  34. package/Server/Utils/AI/Toolbox/IncidentTools.ts +204 -0
  35. package/Server/Utils/AI/Toolbox/IncidentWriteTools.ts +350 -0
  36. package/Server/Utils/AI/Toolbox/Index.ts +228 -0
  37. package/Server/Utils/AI/Toolbox/LogTools.ts +339 -0
  38. package/Server/Utils/AI/Toolbox/MetricTools.ts +179 -0
  39. package/Server/Utils/AI/Toolbox/MonitorTools.ts +193 -0
  40. package/Server/Utils/AI/Toolbox/Serializer.ts +257 -0
  41. package/Server/Utils/AI/Toolbox/ToolTypes.ts +249 -0
  42. package/Server/Utils/AI/Toolbox/TraceTools.ts +402 -0
  43. package/Server/Utils/AI/Toolbox/WidgetBuilder.ts +189 -0
  44. package/Server/Utils/LLM/LLMService.ts +502 -92
  45. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +512 -19
  46. package/Server/Utils/Workspace/Slack/Slack.ts +80 -0
  47. package/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  48. package/Tests/Server/Utils/AI/AIChatModelACL.test.ts +42 -0
  49. package/Tests/Server/Utils/AI/ChatAgentHelpers.test.ts +89 -0
  50. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +139 -0
  51. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +308 -0
  52. package/Tests/Server/Utils/AI/ToolArgsGetTimeRange.test.ts +62 -0
  53. package/Tests/Server/Utils/AI/ToolArgsScopeServiceIds.test.ts +79 -0
  54. package/Tests/Server/Utils/AI/ToolResultSerializer.test.ts +155 -0
  55. package/Tests/Types/Billing/SubscriptionStatus.test.ts +127 -0
  56. package/Tests/Types/Metrics/RecordingRuleDefinition.test.ts +213 -0
  57. package/Types/AI/AIChatMessageRole.ts +6 -0
  58. package/Types/AI/AIChatMessageStatus.ts +32 -0
  59. package/Types/AI/AIChatPermissionMode.ts +69 -0
  60. package/Types/AI/AIChatTypes.ts +231 -0
  61. package/Types/AI/AIRunEventType.ts +17 -0
  62. package/Types/AI/AIRunStatus.ts +28 -0
  63. package/Types/AI/AIRunType.ts +6 -0
  64. package/Types/LLM/LlmType.ts +6 -0
  65. package/UI/Components/Header/HeaderIconDropdownButton.tsx +22 -12
  66. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +35 -3
  67. package/UI/Components/Page/Page.tsx +14 -0
  68. package/UI/Utils/LlmTypeDropdownOptions.ts +40 -0
  69. package/UI/Utils/TestLLMProvider.ts +59 -0
  70. package/build/dist/Models/DatabaseModels/AIConversation.js +345 -0
  71. package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -0
  72. package/build/dist/Models/DatabaseModels/AIConversationMessage.js +521 -0
  73. package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -0
  74. package/build/dist/Models/DatabaseModels/AIRun.js +619 -0
  75. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -0
  76. package/build/dist/Models/DatabaseModels/AIRunEvent.js +469 -0
  77. package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -0
  78. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  79. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  80. package/build/dist/Models/DatabaseModels/LlmLog.js +28 -0
  81. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  82. package/build/dist/Models/DatabaseModels/LlmProvider.js +2 -2
  83. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  84. package/build/dist/Server/API/AIChatAPI.js +498 -0
  85. package/build/dist/Server/API/AIChatAPI.js.map +1 -0
  86. package/build/dist/Server/API/LlmProviderAPI.js +107 -1
  87. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  88. package/build/dist/Server/API/MicrosoftTeamsAPI.js +4 -0
  89. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  90. package/build/dist/Server/API/SlackAPI.js +442 -0
  91. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  92. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js +96 -0
  93. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js.map +1 -0
  94. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js +25 -0
  95. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js.map +1 -0
  96. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js +31 -0
  97. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js.map +1 -0
  98. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js +46 -0
  99. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js.map +1 -0
  100. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  101. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  102. package/build/dist/Server/Services/AIConversationMessageService.js +34 -0
  103. package/build/dist/Server/Services/AIConversationMessageService.js.map +1 -0
  104. package/build/dist/Server/Services/AIConversationService.js +42 -0
  105. package/build/dist/Server/Services/AIConversationService.js.map +1 -0
  106. package/build/dist/Server/Services/AIRunEventService.js +34 -0
  107. package/build/dist/Server/Services/AIRunEventService.js.map +1 -0
  108. package/build/dist/Server/Services/AIRunService.js +34 -0
  109. package/build/dist/Server/Services/AIRunService.js.map +1 -0
  110. package/build/dist/Server/Services/AIService.js +31 -23
  111. package/build/dist/Server/Services/AIService.js.map +1 -1
  112. package/build/dist/Server/Services/DatabaseService.js +10 -0
  113. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  114. package/build/dist/Server/Services/LlmProviderService.js +108 -0
  115. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  116. package/build/dist/Server/Services/ProjectService.js +25 -0
  117. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  118. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +50 -7
  119. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  120. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js +18 -0
  121. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js.map +1 -0
  122. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +745 -0
  123. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -0
  124. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +165 -0
  125. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -0
  126. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +44 -0
  127. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -0
  128. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +167 -0
  129. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -0
  130. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js +136 -0
  131. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js.map +1 -0
  132. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js +141 -0
  133. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js.map +1 -0
  134. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js +117 -0
  135. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js.map +1 -0
  136. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +167 -0
  137. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -0
  138. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js +280 -0
  139. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js.map +1 -0
  140. package/build/dist/Server/Utils/AI/Toolbox/Index.js +150 -0
  141. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -0
  142. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js +246 -0
  143. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js.map +1 -0
  144. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +120 -0
  145. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -0
  146. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +158 -0
  147. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -0
  148. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js +188 -0
  149. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js.map +1 -0
  150. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js +142 -0
  151. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -0
  152. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +309 -0
  153. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -0
  154. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js +120 -0
  155. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js.map +1 -0
  156. package/build/dist/Server/Utils/LLM/LLMService.js +372 -88
  157. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  158. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +378 -15
  159. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  160. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +59 -0
  161. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  162. package/build/dist/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  163. package/build/dist/Types/AI/AIChatMessageRole.js +7 -0
  164. package/build/dist/Types/AI/AIChatMessageRole.js.map +1 -0
  165. package/build/dist/Types/AI/AIChatMessageStatus.js +27 -0
  166. package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -0
  167. package/build/dist/Types/AI/AIChatPermissionMode.js +53 -0
  168. package/build/dist/Types/AI/AIChatPermissionMode.js.map +1 -0
  169. package/build/dist/Types/AI/AIChatTypes.js +74 -0
  170. package/build/dist/Types/AI/AIChatTypes.js.map +1 -0
  171. package/build/dist/Types/AI/AIRunEventType.js +18 -0
  172. package/build/dist/Types/AI/AIRunEventType.js.map +1 -0
  173. package/build/dist/Types/AI/AIRunStatus.js +26 -0
  174. package/build/dist/Types/AI/AIRunStatus.js.map +1 -0
  175. package/build/dist/Types/AI/AIRunType.js +7 -0
  176. package/build/dist/Types/AI/AIRunType.js.map +1 -0
  177. package/build/dist/Types/LLM/LlmType.js +6 -0
  178. package/build/dist/Types/LLM/LlmType.js.map +1 -1
  179. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +10 -5
  180. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  181. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +18 -4
  182. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  183. package/build/dist/UI/Components/Page/Page.js +3 -1
  184. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  185. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js +38 -0
  186. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js.map +1 -0
  187. package/build/dist/UI/Utils/TestLLMProvider.js +37 -0
  188. package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -0
  189. package/package.json +1 -1
@@ -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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"}
@@ -0,0 +1,167 @@
1
+ import Incident from "../../../../Models/DatabaseModels/Incident";
2
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
3
+ import { AIChatCitationTargetType } from "../../../../Types/AI/AIChatTypes";
4
+ import IncidentService from "../../../Services/IncidentService";
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 Incident model class is fully wired up,
14
+ * so 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 Incident().getReadPermissions();
21
+ }
22
+ return cachedReadPermissions;
23
+ };
24
+ export const QueryIncidentsTool = {
25
+ name: "query_incidents",
26
+ description: "Query incidents in this project. Returns the most recent incidents with their current state and severity. Pass incidentId to get full details of one incident.",
27
+ inputSchema: {
28
+ type: "object",
29
+ properties: {
30
+ incidentId: {
31
+ type: "string",
32
+ description: "Get one incident by its ID (includes description).",
33
+ },
34
+ createdWithinHours: {
35
+ type: "number",
36
+ description: "Only incidents created within this many hours (default 168 = 7 days, max 720).",
37
+ },
38
+ limit: {
39
+ type: "number",
40
+ description: "Maximum incidents 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 incidentId = ToolArgs.getObjectID(args, "incidentId");
50
+ if (incidentId) {
51
+ const incident = await IncidentService.findOneById({
52
+ id: incidentId,
53
+ select: {
54
+ _id: true,
55
+ title: true,
56
+ description: true,
57
+ incidentNumber: true,
58
+ createdAt: true,
59
+ currentIncidentState: {
60
+ name: true,
61
+ },
62
+ incidentSeverity: {
63
+ name: true,
64
+ },
65
+ },
66
+ props: ctx.props,
67
+ });
68
+ const rows = incident
69
+ ? [
70
+ {
71
+ id: (_a = incident.id) === null || _a === void 0 ? void 0 : _a.toString(),
72
+ incidentNumber: incident.incidentNumber,
73
+ title: incident.title,
74
+ description: incident.description,
75
+ state: (_b = incident.currentIncidentState) === null || _b === void 0 ? void 0 : _b.name,
76
+ severity: (_c = incident.incidentSeverity) === null || _c === void 0 ? void 0 : _c.name,
77
+ createdAt: incident.createdAt,
78
+ },
79
+ ]
80
+ : [];
81
+ const serialized = ToolResultSerializer.serializeRows(rows);
82
+ return {
83
+ dataForLlm: serialized.text,
84
+ rowCount: serialized.rowCount,
85
+ citationLabel: `Incident ${(incident === null || incident === void 0 ? void 0 : incident.incidentNumber) ? `#${incident.incidentNumber}` : incidentId.toString()}`,
86
+ citationTarget: {
87
+ type: AIChatCitationTargetType.IncidentView,
88
+ params: { incidentId: incidentId.toString() },
89
+ },
90
+ redactionCount: serialized.redactionCount,
91
+ isTruncated: serialized.isTruncated,
92
+ widget: rows.length > 0
93
+ ? WidgetBuilder.incidentList({
94
+ title: `Incident #${(_d = incident === null || incident === void 0 ? void 0 : incident.incidentNumber) !== null && _d !== void 0 ? _d : ""}`.trim(),
95
+ items: rows,
96
+ link: {
97
+ type: AIChatCitationTargetType.IncidentView,
98
+ params: { incidentId: incidentId.toString() },
99
+ },
100
+ })
101
+ : undefined,
102
+ };
103
+ }
104
+ const createdWithinHours = ToolArgs.getNumber(args, "createdWithinHours", { defaultValue: 168, 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 incidents = await IncidentService.findBy({
113
+ query: {
114
+ createdAt: QueryHelper.inBetween(startTime, endTime),
115
+ },
116
+ select: {
117
+ _id: true,
118
+ title: true,
119
+ incidentNumber: true,
120
+ createdAt: true,
121
+ currentIncidentState: {
122
+ name: true,
123
+ },
124
+ incidentSeverity: {
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 = incidents.map((incident) => {
136
+ var _a, _b, _c;
137
+ return {
138
+ id: (_a = incident.id) === null || _a === void 0 ? void 0 : _a.toString(),
139
+ incidentNumber: incident.incidentNumber,
140
+ title: incident.title,
141
+ state: (_b = incident.currentIncidentState) === null || _b === void 0 ? void 0 : _b.name,
142
+ severity: (_c = incident.incidentSeverity) === null || _c === void 0 ? void 0 : _c.name,
143
+ createdAt: incident.createdAt,
144
+ };
145
+ });
146
+ const serialized = ToolResultSerializer.serializeRows(rows);
147
+ return {
148
+ dataForLlm: serialized.text,
149
+ rowCount: serialized.rowCount,
150
+ citationLabel: `Incidents, last ${createdWithinHours}h (${serialized.rowCount} found)`,
151
+ citationTarget: {
152
+ type: AIChatCitationTargetType.Incidents,
153
+ },
154
+ redactionCount: serialized.redactionCount,
155
+ isTruncated: serialized.isTruncated,
156
+ widget: rows.length > 0
157
+ ? WidgetBuilder.incidentList({
158
+ title: `Incidents (${rows.length})`,
159
+ description: `Created in the last ${createdWithinHours}h`,
160
+ items: rows,
161
+ link: { type: AIChatCitationTargetType.Incidents },
162
+ })
163
+ : undefined,
164
+ };
165
+ },
166
+ };
167
+ //# sourceMappingURL=IncidentTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncidentTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/IncidentTools.ts"],"names":[],"mappings":"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"}