@oneuptime/common 9.2.16 → 9.2.18

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 (133) hide show
  1. package/Models/DatabaseModels/CodeRepository.ts +664 -0
  2. package/Models/DatabaseModels/Index.ts +8 -0
  3. package/Models/DatabaseModels/LlmLog.ts +818 -0
  4. package/Models/DatabaseModels/LlmProvider.ts +21 -0
  5. package/Models/DatabaseModels/Project.ts +206 -0
  6. package/Models/DatabaseModels/ServiceCatalogCodeRepository.ts +549 -0
  7. package/Server/API/AIBillingAPI.ts +126 -0
  8. package/Server/API/AlertAPI.ts +139 -0
  9. package/Server/API/GitHubAPI.ts +360 -0
  10. package/Server/API/IncidentAPI.ts +258 -0
  11. package/Server/API/ScheduledMaintenanceAPI.ts +164 -0
  12. package/Server/EnvironmentConfig.ts +44 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1765580181582-MigrationName.ts +79 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1765633554715-MigrationName.ts +75 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1765801357168-MigrationName.ts +32 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1765810218488-MigrationName.ts +69 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1765830758857-MigrationName.ts +111 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1765834537501-MigrationName.ts +39 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  20. package/Server/Services/AIBillingService.ts +247 -0
  21. package/Server/Services/AIService.ts +238 -0
  22. package/Server/Services/CodeRepositoryService.ts +10 -0
  23. package/Server/Services/IncidentService.ts +88 -0
  24. package/Server/Services/Index.ts +2 -0
  25. package/Server/Services/LlmLogService.ts +14 -0
  26. package/Server/Services/LlmProviderService.ts +58 -0
  27. package/Server/Services/ServiceCatalogCodeRepositoryService.ts +55 -0
  28. package/Server/Utils/AI/AlertAIContextBuilder.ts +264 -0
  29. package/Server/Utils/AI/IncidentAIContextBuilder.ts +710 -0
  30. package/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.ts +345 -0
  31. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +226 -0
  32. package/Server/Utils/LLM/LLMService.ts +276 -0
  33. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +166 -0
  34. package/Server/Utils/Workspace/Slack/Slack.ts +134 -0
  35. package/Server/Utils/Workspace/Workspace.ts +126 -0
  36. package/Tests/Types/Domain.test.ts +24 -3
  37. package/Types/CodeRepository/CodeRepositoryType.ts +1 -1
  38. package/Types/Domain.ts +21 -24
  39. package/Types/LlmLogStatus.ts +7 -0
  40. package/Types/Permission.ts +87 -0
  41. package/Types/ServiceCatalog/CodeRepositoryImprovementAction.ts +9 -0
  42. package/UI/Components/AI/AILoader.tsx +95 -0
  43. package/UI/Components/AI/GenerateFromAIModal.tsx +432 -0
  44. package/UI/Components/Modal/Modal.tsx +6 -1
  45. package/build/dist/Models/DatabaseModels/CodeRepository.js +689 -0
  46. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -0
  47. package/build/dist/Models/DatabaseModels/Index.js +7 -0
  48. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  49. package/build/dist/Models/DatabaseModels/LlmLog.js +856 -0
  50. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -0
  51. package/build/dist/Models/DatabaseModels/LlmProvider.js +22 -0
  52. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  53. package/build/dist/Models/DatabaseModels/Project.js +220 -0
  54. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  55. package/build/dist/Models/DatabaseModels/ServiceCatalogCodeRepository.js +565 -0
  56. package/build/dist/Models/DatabaseModels/ServiceCatalogCodeRepository.js.map +1 -0
  57. package/build/dist/Server/API/AIBillingAPI.js +58 -0
  58. package/build/dist/Server/API/AIBillingAPI.js.map +1 -0
  59. package/build/dist/Server/API/AlertAPI.js +94 -0
  60. package/build/dist/Server/API/AlertAPI.js.map +1 -0
  61. package/build/dist/Server/API/GitHubAPI.js +207 -0
  62. package/build/dist/Server/API/GitHubAPI.js.map +1 -0
  63. package/build/dist/Server/API/IncidentAPI.js +171 -1
  64. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  65. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +103 -0
  66. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -0
  67. package/build/dist/Server/EnvironmentConfig.js +31 -0
  68. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765580181582-MigrationName.js +34 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765580181582-MigrationName.js.map +1 -0
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765633554715-MigrationName.js +32 -0
  72. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765633554715-MigrationName.js.map +1 -0
  73. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765801357168-MigrationName.js +38 -0
  74. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765801357168-MigrationName.js.map +1 -0
  75. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765810218488-MigrationName.js +30 -0
  76. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765810218488-MigrationName.js.map +1 -0
  77. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765830758857-MigrationName.js +44 -0
  78. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765830758857-MigrationName.js.map +1 -0
  79. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765834537501-MigrationName.js +22 -0
  80. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1765834537501-MigrationName.js.map +1 -0
  81. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  82. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  83. package/build/dist/Server/Services/AIBillingService.js +187 -0
  84. package/build/dist/Server/Services/AIBillingService.js.map +1 -0
  85. package/build/dist/Server/Services/AIService.js +184 -0
  86. package/build/dist/Server/Services/AIService.js.map +1 -0
  87. package/build/dist/Server/Services/CodeRepositoryService.js +9 -0
  88. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -0
  89. package/build/dist/Server/Services/IncidentService.js +60 -0
  90. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  91. package/build/dist/Server/Services/Index.js +2 -0
  92. package/build/dist/Server/Services/Index.js.map +1 -1
  93. package/build/dist/Server/Services/LlmLogService.js +13 -0
  94. package/build/dist/Server/Services/LlmLogService.js.map +1 -0
  95. package/build/dist/Server/Services/LlmProviderService.js +65 -0
  96. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  97. package/build/dist/Server/Services/ServiceCatalogCodeRepositoryService.js +54 -0
  98. package/build/dist/Server/Services/ServiceCatalogCodeRepositoryService.js.map +1 -0
  99. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js +238 -0
  100. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js.map +1 -0
  101. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js +597 -0
  102. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js.map +1 -0
  103. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js +311 -0
  104. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js.map +1 -0
  105. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +163 -0
  106. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  107. package/build/dist/Server/Utils/LLM/LLMService.js +225 -0
  108. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -0
  109. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +110 -0
  110. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  111. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +89 -0
  112. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  113. package/build/dist/Server/Utils/Workspace/Workspace.js +80 -0
  114. package/build/dist/Server/Utils/Workspace/Workspace.js.map +1 -1
  115. package/build/dist/Tests/Types/Domain.test.js +19 -3
  116. package/build/dist/Tests/Types/Domain.test.js.map +1 -1
  117. package/build/dist/Types/CodeRepository/CodeRepositoryType.js +1 -1
  118. package/build/dist/Types/CodeRepository/CodeRepositoryType.js.map +1 -1
  119. package/build/dist/Types/Domain.js +18 -16
  120. package/build/dist/Types/Domain.js.map +1 -1
  121. package/build/dist/Types/LlmLogStatus.js +8 -0
  122. package/build/dist/Types/LlmLogStatus.js.map +1 -0
  123. package/build/dist/Types/Permission.js +74 -0
  124. package/build/dist/Types/Permission.js.map +1 -1
  125. package/build/dist/Types/ServiceCatalog/CodeRepositoryImprovementAction.js +10 -0
  126. package/build/dist/Types/ServiceCatalog/CodeRepositoryImprovementAction.js.map +1 -0
  127. package/build/dist/UI/Components/AI/AILoader.js +64 -0
  128. package/build/dist/UI/Components/AI/AILoader.js.map +1 -0
  129. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +320 -0
  130. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -0
  131. package/build/dist/UI/Components/Modal/Modal.js +6 -1
  132. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  133. package/package.json +1 -1
@@ -0,0 +1,238 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import AlertService from "../../Services/AlertService";
11
+ import AlertStateTimelineService from "../../Services/AlertStateTimelineService";
12
+ import AlertInternalNoteService from "../../Services/AlertInternalNoteService";
13
+ import CaptureSpan from "../Telemetry/CaptureSpan";
14
+ import OneUptimeDate from "../../../Types/Date";
15
+ import SortOrder from "../../../Types/BaseDatabase/SortOrder";
16
+ export default class AlertAIContextBuilder {
17
+ static async buildAlertContext(data) {
18
+ const alert = await AlertService.findOneById({
19
+ id: data.alertId,
20
+ select: {
21
+ _id: true,
22
+ title: true,
23
+ description: true,
24
+ createdAt: true,
25
+ customFields: true,
26
+ projectId: true,
27
+ alertSeverity: {
28
+ name: true,
29
+ color: true,
30
+ },
31
+ currentAlertState: {
32
+ name: true,
33
+ color: true,
34
+ },
35
+ monitor: {
36
+ name: true,
37
+ },
38
+ labels: {
39
+ name: true,
40
+ color: true,
41
+ },
42
+ rootCause: true,
43
+ remediationNotes: true,
44
+ },
45
+ props: {
46
+ isRoot: true,
47
+ },
48
+ });
49
+ if (!alert) {
50
+ throw new Error("Alert not found");
51
+ }
52
+ // Fetch state timeline
53
+ const stateTimeline = await AlertStateTimelineService.findBy({
54
+ query: {
55
+ alertId: data.alertId,
56
+ },
57
+ select: {
58
+ _id: true,
59
+ createdAt: true,
60
+ startsAt: true,
61
+ endsAt: true,
62
+ rootCause: true,
63
+ alertState: {
64
+ name: true,
65
+ color: true,
66
+ },
67
+ createdByUser: {
68
+ name: true,
69
+ email: true,
70
+ },
71
+ },
72
+ sort: {
73
+ startsAt: SortOrder.Ascending,
74
+ },
75
+ limit: 100,
76
+ skip: 0,
77
+ props: {
78
+ isRoot: true,
79
+ },
80
+ });
81
+ // Fetch internal notes
82
+ const internalNotes = await AlertInternalNoteService.findBy({
83
+ query: {
84
+ alertId: data.alertId,
85
+ },
86
+ select: {
87
+ _id: true,
88
+ note: true,
89
+ createdAt: true,
90
+ createdByUser: {
91
+ name: true,
92
+ email: true,
93
+ },
94
+ },
95
+ sort: {
96
+ createdAt: SortOrder.Ascending,
97
+ },
98
+ limit: 100,
99
+ skip: 0,
100
+ props: {
101
+ isRoot: true,
102
+ },
103
+ });
104
+ return {
105
+ alert,
106
+ stateTimeline,
107
+ internalNotes,
108
+ };
109
+ }
110
+ static formatAlertContextForNote(contextData, template) {
111
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
112
+ const { alert, stateTimeline, internalNotes } = contextData;
113
+ let contextText = "";
114
+ // Basic alert information
115
+ contextText += "# Alert Information\n\n";
116
+ contextText += `**Title:** ${alert.title || "N/A"}\n\n`;
117
+ contextText += `**Description:** ${alert.description || "N/A"}\n\n`;
118
+ contextText += `**Severity:** ${((_a = alert.alertSeverity) === null || _a === void 0 ? void 0 : _a.name) || "N/A"}\n\n`;
119
+ contextText += `**Current State:** ${((_b = alert.currentAlertState) === null || _b === void 0 ? void 0 : _b.name) || "N/A"}\n\n`;
120
+ contextText += `**Created At:** ${alert.createdAt ? OneUptimeDate.getDateAsFormattedString(alert.createdAt) : "N/A"}\n\n`;
121
+ // Affected monitor
122
+ if (alert.monitor) {
123
+ contextText += `**Monitor:** ${alert.monitor.name || "N/A"}\n\n`;
124
+ }
125
+ // Labels
126
+ if (alert.labels && alert.labels.length > 0) {
127
+ contextText += "**Labels:** ";
128
+ contextText += alert.labels
129
+ .map((l) => {
130
+ return l.name;
131
+ })
132
+ .join(", ");
133
+ contextText += "\n\n";
134
+ }
135
+ // Root cause if available
136
+ if (alert.rootCause) {
137
+ contextText += `**Root Cause:** ${alert.rootCause}\n\n`;
138
+ }
139
+ // Remediation notes if available
140
+ if (alert.remediationNotes) {
141
+ contextText += `**Remediation Notes:** ${alert.remediationNotes}\n\n`;
142
+ }
143
+ // State timeline
144
+ if (stateTimeline.length > 0) {
145
+ contextText += "# State Timeline\n\n";
146
+ for (const timeline of stateTimeline) {
147
+ const startTime = timeline.startsAt
148
+ ? OneUptimeDate.getDateAsFormattedString(timeline.startsAt)
149
+ : "N/A";
150
+ const stateName = ((_d = (_c = timeline.alertState) === null || _c === void 0 ? void 0 : _c.name) === null || _d === void 0 ? void 0 : _d.toString()) || "Unknown";
151
+ const createdBy = ((_f = (_e = timeline.createdByUser) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.toString()) ||
152
+ ((_h = (_g = timeline.createdByUser) === null || _g === void 0 ? void 0 : _g.email) === null || _h === void 0 ? void 0 : _h.toString()) ||
153
+ "System";
154
+ contextText += `- **${startTime}**: State changed to **${stateName}** by ${createdBy}\n`;
155
+ if (timeline.rootCause) {
156
+ contextText += ` - Root cause noted: ${timeline.rootCause}\n`;
157
+ }
158
+ }
159
+ contextText += "\n";
160
+ }
161
+ // Internal notes
162
+ if (internalNotes.length > 0) {
163
+ contextText += "# Internal Notes (Private)\n\n";
164
+ for (const note of internalNotes) {
165
+ const noteTime = note.createdAt
166
+ ? OneUptimeDate.getDateAsFormattedString(note.createdAt)
167
+ : "N/A";
168
+ const createdBy = ((_k = (_j = note.createdByUser) === null || _j === void 0 ? void 0 : _j.name) === null || _k === void 0 ? void 0 : _k.toString()) ||
169
+ ((_m = (_l = note.createdByUser) === null || _l === void 0 ? void 0 : _l.email) === null || _m === void 0 ? void 0 : _m.toString()) ||
170
+ "Unknown";
171
+ contextText += `**[${noteTime}] ${createdBy}:**\n`;
172
+ contextText += `${note.note || "N/A"}\n\n`;
173
+ }
174
+ }
175
+ // System prompt for note generation (alerts only have internal notes)
176
+ let systemPrompt;
177
+ if (template) {
178
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to fill in an internal alert note template based on the provided alert data.
179
+
180
+ CRITICAL INSTRUCTIONS:
181
+ - You MUST use ONLY the exact template structure provided below
182
+ - Fill in each section of the template with relevant information from the alert data
183
+ - Do NOT add any new sections, headers, or content that is not part of the template
184
+ - Do NOT add introductions, conclusions, or any text outside the template structure
185
+ - Be technical and detailed - this is for the internal team
186
+ - Include relevant technical details, observations, and analysis
187
+
188
+ TEMPLATE TO FILL (use this exact structure):
189
+
190
+ ${template}`;
191
+ }
192
+ else {
193
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to generate an internal alert note for the team.
194
+
195
+ The note should:
196
+ 1. Provide technical details about the alert and its current status
197
+ 2. Document observations, findings, or actions taken
198
+ 3. Include relevant metrics or error messages if mentioned in the context
199
+ 4. Be detailed enough to help team members understand the situation
200
+ 5. Use technical language appropriate for the engineering team
201
+
202
+ Write in markdown format for better readability. Be thorough and technical.`;
203
+ }
204
+ // Build user message
205
+ const userMessage = template
206
+ ? `Fill in the template above using ONLY the following alert data. Output only the filled template, nothing else:\n\n${contextText}`
207
+ : `Based on the following alert data, please generate an internal technical alert note:\n\n${contextText}`;
208
+ // Build messages array
209
+ const messages = [
210
+ {
211
+ role: "system",
212
+ content: systemPrompt,
213
+ },
214
+ {
215
+ role: "user",
216
+ content: userMessage,
217
+ },
218
+ ];
219
+ return {
220
+ contextText,
221
+ systemPrompt,
222
+ messages,
223
+ };
224
+ }
225
+ }
226
+ __decorate([
227
+ CaptureSpan(),
228
+ __metadata("design:type", Function),
229
+ __metadata("design:paramtypes", [Object]),
230
+ __metadata("design:returntype", Promise)
231
+ ], AlertAIContextBuilder, "buildAlertContext", null);
232
+ __decorate([
233
+ CaptureSpan(),
234
+ __metadata("design:type", Function),
235
+ __metadata("design:paramtypes", [Object, String]),
236
+ __metadata("design:returntype", Object)
237
+ ], AlertAIContextBuilder, "formatAlertContextForNote", null);
238
+ //# sourceMappingURL=AlertAIContextBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertAIContextBuilder.js","sourceRoot":"","sources":["../../../../../Server/Utils/AI/AlertAIContextBuilder.ts"],"names":[],"mappings":"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"}