@oneuptime/common 9.2.17 → 9.2.20

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 (40) hide show
  1. package/Server/API/AlertAPI.ts +139 -0
  2. package/Server/API/IncidentAPI.ts +132 -0
  3. package/Server/API/ScheduledMaintenanceAPI.ts +164 -0
  4. package/Server/Services/AIService.ts +0 -1
  5. package/Server/Services/IncidentService.ts +0 -1
  6. package/Server/Utils/AI/AlertAIContextBuilder.ts +264 -0
  7. package/Server/Utils/AI/IncidentAIContextBuilder.ts +212 -0
  8. package/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.ts +345 -0
  9. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +78 -1
  10. package/Server/Utils/Workspace/Slack/Slack.ts +80 -1
  11. package/Tests/Types/Domain.test.ts +24 -3
  12. package/Types/Domain.ts +21 -24
  13. package/UI/Components/AI/GenerateFromAIModal.tsx +157 -20
  14. package/build/dist/Server/API/AlertAPI.js +94 -0
  15. package/build/dist/Server/API/AlertAPI.js.map +1 -0
  16. package/build/dist/Server/API/IncidentAPI.js +88 -1
  17. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  18. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +103 -0
  19. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -0
  20. package/build/dist/Server/Services/AIService.js +0 -1
  21. package/build/dist/Server/Services/AIService.js.map +1 -1
  22. package/build/dist/Server/Services/IncidentService.js +0 -1
  23. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  24. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js +238 -0
  25. package/build/dist/Server/Utils/AI/AlertAIContextBuilder.js.map +1 -0
  26. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js +189 -0
  27. package/build/dist/Server/Utils/AI/IncidentAIContextBuilder.js.map +1 -1
  28. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js +311 -0
  29. package/build/dist/Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.js.map +1 -0
  30. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +59 -2
  31. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  32. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +61 -1
  33. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  34. package/build/dist/Tests/Types/Domain.test.js +19 -3
  35. package/build/dist/Tests/Types/Domain.test.js.map +1 -1
  36. package/build/dist/Types/Domain.js +18 -16
  37. package/build/dist/Types/Domain.js.map +1 -1
  38. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +116 -3
  39. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  40. package/package.json +1 -1
@@ -317,6 +317,189 @@ Write in a professional, clear, and concise manner. Use markdown formatting for
317
317
  messages,
318
318
  };
319
319
  }
320
+ static formatIncidentContextForNote(contextData, noteType, template) {
321
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
322
+ const { incident, stateTimeline, internalNotes, publicNotes, workspaceMessages, } = contextData;
323
+ let contextText = "";
324
+ // Basic incident information
325
+ contextText += "# Incident Information\n\n";
326
+ contextText += `**Title:** ${incident.title || "N/A"}\n\n`;
327
+ contextText += `**Description:** ${incident.description || "N/A"}\n\n`;
328
+ contextText += `**Severity:** ${((_a = incident.incidentSeverity) === null || _a === void 0 ? void 0 : _a.name) || "N/A"}\n\n`;
329
+ contextText += `**Current State:** ${((_b = incident.currentIncidentState) === null || _b === void 0 ? void 0 : _b.name) || "N/A"}\n\n`;
330
+ contextText += `**Created At:** ${incident.createdAt ? OneUptimeDate.getDateAsFormattedString(incident.createdAt) : "N/A"}\n\n`;
331
+ // Affected monitors
332
+ if (incident.monitors && incident.monitors.length > 0) {
333
+ contextText += "**Affected Monitors:** ";
334
+ contextText += incident.monitors
335
+ .map((m) => {
336
+ return m.name;
337
+ })
338
+ .join(", ");
339
+ contextText += "\n\n";
340
+ }
341
+ // Labels
342
+ if (incident.labels && incident.labels.length > 0) {
343
+ contextText += "**Labels:** ";
344
+ contextText += incident.labels
345
+ .map((l) => {
346
+ return l.name;
347
+ })
348
+ .join(", ");
349
+ contextText += "\n\n";
350
+ }
351
+ // Root cause if available
352
+ if (incident.rootCause) {
353
+ contextText += `**Root Cause:** ${incident.rootCause}\n\n`;
354
+ }
355
+ // State timeline
356
+ if (stateTimeline.length > 0) {
357
+ contextText += "# State Timeline\n\n";
358
+ for (const timeline of stateTimeline) {
359
+ const startTime = timeline.startsAt
360
+ ? OneUptimeDate.getDateAsFormattedString(timeline.startsAt)
361
+ : "N/A";
362
+ const stateName = ((_d = (_c = timeline.incidentState) === null || _c === void 0 ? void 0 : _c.name) === null || _d === void 0 ? void 0 : _d.toString()) || "Unknown";
363
+ const createdBy = ((_f = (_e = timeline.createdByUser) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.toString()) ||
364
+ ((_h = (_g = timeline.createdByUser) === null || _g === void 0 ? void 0 : _g.email) === null || _h === void 0 ? void 0 : _h.toString()) ||
365
+ "System";
366
+ contextText += `- **${startTime}**: State changed to **${stateName}** by ${createdBy}\n`;
367
+ if (timeline.rootCause) {
368
+ contextText += ` - Root cause noted: ${timeline.rootCause}\n`;
369
+ }
370
+ }
371
+ contextText += "\n";
372
+ }
373
+ // Include internal notes for context (for both note types)
374
+ if (internalNotes.length > 0) {
375
+ contextText += "# Internal Notes (Private)\n\n";
376
+ for (const note of internalNotes) {
377
+ const noteTime = note.createdAt
378
+ ? OneUptimeDate.getDateAsFormattedString(note.createdAt)
379
+ : "N/A";
380
+ const createdBy = ((_k = (_j = note.createdByUser) === null || _j === void 0 ? void 0 : _j.name) === null || _k === void 0 ? void 0 : _k.toString()) ||
381
+ ((_m = (_l = note.createdByUser) === null || _l === void 0 ? void 0 : _l.email) === null || _m === void 0 ? void 0 : _m.toString()) ||
382
+ "Unknown";
383
+ contextText += `**[${noteTime}] ${createdBy}:**\n`;
384
+ contextText += `${note.note || "N/A"}\n\n`;
385
+ }
386
+ }
387
+ // Public notes
388
+ if (publicNotes.length > 0) {
389
+ contextText += "# Public Notes\n\n";
390
+ for (const note of publicNotes) {
391
+ const noteTime = note.postedAt
392
+ ? OneUptimeDate.getDateAsFormattedString(note.postedAt)
393
+ : note.createdAt
394
+ ? OneUptimeDate.getDateAsFormattedString(note.createdAt)
395
+ : "N/A";
396
+ const createdBy = ((_p = (_o = note.createdByUser) === null || _o === void 0 ? void 0 : _o.name) === null || _p === void 0 ? void 0 : _p.toString()) ||
397
+ ((_r = (_q = note.createdByUser) === null || _q === void 0 ? void 0 : _q.email) === null || _r === void 0 ? void 0 : _r.toString()) ||
398
+ "Unknown";
399
+ contextText += `**[${noteTime}] ${createdBy}:**\n`;
400
+ contextText += `${note.note || "N/A"}\n\n`;
401
+ }
402
+ }
403
+ // Workspace messages (Slack/Teams)
404
+ if (workspaceMessages.length > 0) {
405
+ contextText += "# Discussion from Incident Channel\n\n";
406
+ contextText += WorkspaceUtil.formatMessagesAsContext(workspaceMessages, {
407
+ includeTimestamp: true,
408
+ includeUsername: true,
409
+ maxLength: 20000,
410
+ });
411
+ contextText += "\n\n";
412
+ }
413
+ // System prompt for note generation
414
+ let systemPrompt;
415
+ if (noteType === "public") {
416
+ if (template) {
417
+ systemPrompt = `You are an expert incident communicator. Your task is to fill in a public incident note template based on the provided incident data.
418
+
419
+ CRITICAL INSTRUCTIONS:
420
+ - You MUST use ONLY the exact template structure provided below
421
+ - Fill in each section of the template with relevant information from the incident data
422
+ - Do NOT add any new sections, headers, or content that is not part of the template
423
+ - Do NOT add introductions, conclusions, or any text outside the template structure
424
+ - Write in a professional, clear, and customer-friendly manner
425
+ - Focus on what customers need to know: impact, current status, and next steps
426
+ - Avoid technical jargon - keep it understandable for non-technical readers
427
+ - Be concise but informative
428
+
429
+ TEMPLATE TO FILL (use this exact structure):
430
+
431
+ ${template}`;
432
+ }
433
+ else {
434
+ systemPrompt = `You are an expert incident communicator. Your task is to generate a public incident note that will be visible to customers on the status page.
435
+
436
+ The note should:
437
+ 1. Be written in a professional, customer-friendly tone
438
+ 2. Clearly communicate the current status of the incident
439
+ 3. Explain the impact on users without excessive technical details
440
+ 4. Provide information about what is being done to resolve the issue
441
+ 5. Set appropriate expectations about resolution timing if known
442
+ 6. Be concise but informative
443
+
444
+ DO NOT include:
445
+ - Internal technical details that customers don't need
446
+ - Blame or finger-pointing
447
+ - Confidential information
448
+ - Excessive jargon
449
+
450
+ Write in markdown format for better readability.`;
451
+ }
452
+ }
453
+ else if (template) {
454
+ // Internal note with template
455
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to fill in an internal incident note template based on the provided incident data.
456
+
457
+ CRITICAL INSTRUCTIONS:
458
+ - You MUST use ONLY the exact template structure provided below
459
+ - Fill in each section of the template with relevant information from the incident data
460
+ - Do NOT add any new sections, headers, or content that is not part of the template
461
+ - Do NOT add introductions, conclusions, or any text outside the template structure
462
+ - Be technical and detailed - this is for the internal team
463
+ - Include relevant technical details, metrics, and observations
464
+
465
+ TEMPLATE TO FILL (use this exact structure):
466
+
467
+ ${template}`;
468
+ }
469
+ else {
470
+ // Internal note without template
471
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to generate an internal incident note for the response team.
472
+
473
+ The note should:
474
+ 1. Provide technical details about the current situation
475
+ 2. Document observations, findings, or actions taken
476
+ 3. Include relevant metrics or error messages if mentioned in the context
477
+ 4. Be detailed enough to help team members understand the situation
478
+ 5. Use technical language appropriate for the engineering team
479
+
480
+ Write in markdown format for better readability. Be thorough and technical.`;
481
+ }
482
+ // Build user message
483
+ const userMessage = template
484
+ ? `Fill in the template above using ONLY the following incident data. Output only the filled template, nothing else:\n\n${contextText}`
485
+ : `Based on the following incident data, please generate ${noteType === "public" ? "a customer-facing public" : "an internal technical"} incident note:\n\n${contextText}`;
486
+ // Build messages array
487
+ const messages = [
488
+ {
489
+ role: "system",
490
+ content: systemPrompt,
491
+ },
492
+ {
493
+ role: "user",
494
+ content: userMessage,
495
+ },
496
+ ];
497
+ return {
498
+ contextText,
499
+ systemPrompt,
500
+ messages,
501
+ };
502
+ }
320
503
  static buildGenericAIContext(data) {
321
504
  let userContent = data.userPrompt;
322
505
  if (data.context) {
@@ -393,6 +576,12 @@ __decorate([
393
576
  __metadata("design:paramtypes", [Object, String]),
394
577
  __metadata("design:returntype", Object)
395
578
  ], IncidentAIContextBuilder, "formatIncidentContextForPostmortem", null);
579
+ __decorate([
580
+ CaptureSpan(),
581
+ __metadata("design:type", Function),
582
+ __metadata("design:paramtypes", [Object, String, String]),
583
+ __metadata("design:returntype", Object)
584
+ ], IncidentAIContextBuilder, "formatIncidentContextForNote", null);
396
585
  __decorate([
397
586
  CaptureSpan(),
398
587
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"IncidentAIContextBuilder.js","sourceRoot":"","sources":["../../../../../Server/Utils/AI/IncidentAIContextBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncidentAIContextBuilder.js","sourceRoot":"","sources":["../../../../../Server/Utils/AI/IncidentAIContextBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
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 ScheduledMaintenanceService from "../../Services/ScheduledMaintenanceService";
11
+ import ScheduledMaintenanceStateTimelineService from "../../Services/ScheduledMaintenanceStateTimelineService";
12
+ import ScheduledMaintenanceInternalNoteService from "../../Services/ScheduledMaintenanceInternalNoteService";
13
+ import ScheduledMaintenancePublicNoteService from "../../Services/ScheduledMaintenancePublicNoteService";
14
+ import CaptureSpan from "../Telemetry/CaptureSpan";
15
+ import OneUptimeDate from "../../../Types/Date";
16
+ import SortOrder from "../../../Types/BaseDatabase/SortOrder";
17
+ export default class ScheduledMaintenanceAIContextBuilder {
18
+ static async buildScheduledMaintenanceContext(data) {
19
+ const scheduledMaintenance = await ScheduledMaintenanceService.findOneById({
20
+ id: data.scheduledMaintenanceId,
21
+ select: {
22
+ _id: true,
23
+ title: true,
24
+ description: true,
25
+ createdAt: true,
26
+ startsAt: true,
27
+ endsAt: true,
28
+ customFields: true,
29
+ projectId: true,
30
+ currentScheduledMaintenanceState: {
31
+ name: true,
32
+ color: true,
33
+ },
34
+ monitors: {
35
+ name: true,
36
+ },
37
+ labels: {
38
+ name: true,
39
+ color: true,
40
+ },
41
+ },
42
+ props: {
43
+ isRoot: true,
44
+ },
45
+ });
46
+ if (!scheduledMaintenance) {
47
+ throw new Error("Scheduled Maintenance not found");
48
+ }
49
+ // Fetch state timeline
50
+ const stateTimeline = await ScheduledMaintenanceStateTimelineService.findBy({
51
+ query: {
52
+ scheduledMaintenanceId: data.scheduledMaintenanceId,
53
+ },
54
+ select: {
55
+ _id: true,
56
+ createdAt: true,
57
+ startsAt: true,
58
+ endsAt: true,
59
+ scheduledMaintenanceState: {
60
+ name: true,
61
+ color: true,
62
+ },
63
+ createdByUser: {
64
+ name: true,
65
+ email: true,
66
+ },
67
+ },
68
+ sort: {
69
+ startsAt: SortOrder.Ascending,
70
+ },
71
+ limit: 100,
72
+ skip: 0,
73
+ props: {
74
+ isRoot: true,
75
+ },
76
+ });
77
+ // Fetch internal notes
78
+ const internalNotes = await ScheduledMaintenanceInternalNoteService.findBy({
79
+ query: {
80
+ scheduledMaintenanceId: data.scheduledMaintenanceId,
81
+ },
82
+ select: {
83
+ _id: true,
84
+ note: true,
85
+ createdAt: true,
86
+ createdByUser: {
87
+ name: true,
88
+ email: true,
89
+ },
90
+ },
91
+ sort: {
92
+ createdAt: SortOrder.Ascending,
93
+ },
94
+ limit: 100,
95
+ skip: 0,
96
+ props: {
97
+ isRoot: true,
98
+ },
99
+ });
100
+ // Fetch public notes
101
+ const publicNotes = await ScheduledMaintenancePublicNoteService.findBy({
102
+ query: {
103
+ scheduledMaintenanceId: data.scheduledMaintenanceId,
104
+ },
105
+ select: {
106
+ _id: true,
107
+ note: true,
108
+ createdAt: true,
109
+ postedAt: true,
110
+ createdByUser: {
111
+ name: true,
112
+ email: true,
113
+ },
114
+ },
115
+ sort: {
116
+ createdAt: SortOrder.Ascending,
117
+ },
118
+ limit: 100,
119
+ skip: 0,
120
+ props: {
121
+ isRoot: true,
122
+ },
123
+ });
124
+ return {
125
+ scheduledMaintenance,
126
+ stateTimeline,
127
+ internalNotes,
128
+ publicNotes,
129
+ };
130
+ }
131
+ static formatScheduledMaintenanceContextForNote(contextData, noteType, template) {
132
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
133
+ const { scheduledMaintenance, stateTimeline, internalNotes, publicNotes } = contextData;
134
+ let contextText = "";
135
+ // Basic scheduled maintenance information
136
+ contextText += "# Scheduled Maintenance Information\n\n";
137
+ contextText += `**Title:** ${scheduledMaintenance.title || "N/A"}\n\n`;
138
+ contextText += `**Description:** ${scheduledMaintenance.description || "N/A"}\n\n`;
139
+ contextText += `**Current State:** ${((_a = scheduledMaintenance.currentScheduledMaintenanceState) === null || _a === void 0 ? void 0 : _a.name) || "N/A"}\n\n`;
140
+ contextText += `**Scheduled Start:** ${scheduledMaintenance.startsAt ? OneUptimeDate.getDateAsFormattedString(scheduledMaintenance.startsAt) : "N/A"}\n\n`;
141
+ contextText += `**Scheduled End:** ${scheduledMaintenance.endsAt ? OneUptimeDate.getDateAsFormattedString(scheduledMaintenance.endsAt) : "N/A"}\n\n`;
142
+ contextText += `**Created At:** ${scheduledMaintenance.createdAt ? OneUptimeDate.getDateAsFormattedString(scheduledMaintenance.createdAt) : "N/A"}\n\n`;
143
+ // Affected monitors
144
+ if (scheduledMaintenance.monitors &&
145
+ scheduledMaintenance.monitors.length > 0) {
146
+ contextText += "**Affected Monitors:** ";
147
+ contextText += scheduledMaintenance.monitors
148
+ .map((m) => {
149
+ return m.name;
150
+ })
151
+ .join(", ");
152
+ contextText += "\n\n";
153
+ }
154
+ // Labels
155
+ if (scheduledMaintenance.labels && scheduledMaintenance.labels.length > 0) {
156
+ contextText += "**Labels:** ";
157
+ contextText += scheduledMaintenance.labels
158
+ .map((l) => {
159
+ return l.name;
160
+ })
161
+ .join(", ");
162
+ contextText += "\n\n";
163
+ }
164
+ // State timeline
165
+ if (stateTimeline.length > 0) {
166
+ contextText += "# State Timeline\n\n";
167
+ for (const timeline of stateTimeline) {
168
+ const startTime = timeline.startsAt
169
+ ? OneUptimeDate.getDateAsFormattedString(timeline.startsAt)
170
+ : "N/A";
171
+ const stateName = ((_c = (_b = timeline.scheduledMaintenanceState) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.toString()) || "Unknown";
172
+ const createdBy = ((_e = (_d = timeline.createdByUser) === null || _d === void 0 ? void 0 : _d.name) === null || _e === void 0 ? void 0 : _e.toString()) ||
173
+ ((_g = (_f = timeline.createdByUser) === null || _f === void 0 ? void 0 : _f.email) === null || _g === void 0 ? void 0 : _g.toString()) ||
174
+ "System";
175
+ contextText += `- **${startTime}**: State changed to **${stateName}** by ${createdBy}\n`;
176
+ }
177
+ contextText += "\n";
178
+ }
179
+ // Include internal notes for context (for both note types)
180
+ if (internalNotes.length > 0) {
181
+ contextText += "# Internal Notes (Private)\n\n";
182
+ for (const note of internalNotes) {
183
+ const noteTime = note.createdAt
184
+ ? OneUptimeDate.getDateAsFormattedString(note.createdAt)
185
+ : "N/A";
186
+ const createdBy = ((_j = (_h = note.createdByUser) === null || _h === void 0 ? void 0 : _h.name) === null || _j === void 0 ? void 0 : _j.toString()) ||
187
+ ((_l = (_k = note.createdByUser) === null || _k === void 0 ? void 0 : _k.email) === null || _l === void 0 ? void 0 : _l.toString()) ||
188
+ "Unknown";
189
+ contextText += `**[${noteTime}] ${createdBy}:**\n`;
190
+ contextText += `${note.note || "N/A"}\n\n`;
191
+ }
192
+ }
193
+ // Public notes
194
+ if (publicNotes.length > 0) {
195
+ contextText += "# Public Notes\n\n";
196
+ for (const note of publicNotes) {
197
+ const noteTime = note.postedAt
198
+ ? OneUptimeDate.getDateAsFormattedString(note.postedAt)
199
+ : note.createdAt
200
+ ? OneUptimeDate.getDateAsFormattedString(note.createdAt)
201
+ : "N/A";
202
+ const createdBy = ((_o = (_m = note.createdByUser) === null || _m === void 0 ? void 0 : _m.name) === null || _o === void 0 ? void 0 : _o.toString()) ||
203
+ ((_q = (_p = note.createdByUser) === null || _p === void 0 ? void 0 : _p.email) === null || _q === void 0 ? void 0 : _q.toString()) ||
204
+ "Unknown";
205
+ contextText += `**[${noteTime}] ${createdBy}:**\n`;
206
+ contextText += `${note.note || "N/A"}\n\n`;
207
+ }
208
+ }
209
+ // System prompt for note generation
210
+ let systemPrompt;
211
+ if (noteType === "public") {
212
+ if (template) {
213
+ systemPrompt = `You are an expert technical communicator. Your task is to fill in a public scheduled maintenance note template based on the provided maintenance event data.
214
+
215
+ CRITICAL INSTRUCTIONS:
216
+ - You MUST use ONLY the exact template structure provided below
217
+ - Fill in each section of the template with relevant information from the maintenance data
218
+ - Do NOT add any new sections, headers, or content that is not part of the template
219
+ - Do NOT add introductions, conclusions, or any text outside the template structure
220
+ - Write in a professional, clear, and customer-friendly manner
221
+ - Focus on what customers need to know: timing, impact, and what to expect
222
+ - Avoid technical jargon - keep it understandable for non-technical readers
223
+ - Be concise but informative
224
+
225
+ TEMPLATE TO FILL (use this exact structure):
226
+
227
+ ${template}`;
228
+ }
229
+ else {
230
+ systemPrompt = `You are an expert technical communicator. Your task is to generate a public scheduled maintenance note that will be visible to customers on the status page.
231
+
232
+ The note should:
233
+ 1. Be written in a professional, customer-friendly tone
234
+ 2. Clearly communicate the current status of the maintenance
235
+ 3. Explain what work is being done and any impact on users
236
+ 4. Provide timing information (when it started, expected completion, etc.)
237
+ 5. Set appropriate expectations
238
+ 6. Be concise but informative
239
+
240
+ DO NOT include:
241
+ - Internal technical details that customers don't need
242
+ - Confidential information
243
+ - Excessive jargon
244
+
245
+ Write in markdown format for better readability.`;
246
+ }
247
+ }
248
+ else if (template) {
249
+ // Internal note with template
250
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to fill in an internal scheduled maintenance note template based on the provided maintenance event data.
251
+
252
+ CRITICAL INSTRUCTIONS:
253
+ - You MUST use ONLY the exact template structure provided below
254
+ - Fill in each section of the template with relevant information from the maintenance data
255
+ - Do NOT add any new sections, headers, or content that is not part of the template
256
+ - Do NOT add introductions, conclusions, or any text outside the template structure
257
+ - Be technical and detailed - this is for the internal team
258
+ - Include relevant technical details, progress updates, and observations
259
+
260
+ TEMPLATE TO FILL (use this exact structure):
261
+
262
+ ${template}`;
263
+ }
264
+ else {
265
+ // Internal note without template
266
+ systemPrompt = `You are an expert Site Reliability Engineer (SRE). Your task is to generate an internal scheduled maintenance note for the team.
267
+
268
+ The note should:
269
+ 1. Provide technical details about the maintenance progress
270
+ 2. Document observations, findings, or actions taken
271
+ 3. Include any issues encountered or changes to the plan
272
+ 4. Be detailed enough to help team members understand the current status
273
+ 5. Use technical language appropriate for the engineering team
274
+
275
+ Write in markdown format for better readability. Be thorough and technical.`;
276
+ }
277
+ // Build user message
278
+ const userMessage = template
279
+ ? `Fill in the template above using ONLY the following scheduled maintenance data. Output only the filled template, nothing else:\n\n${contextText}`
280
+ : `Based on the following scheduled maintenance data, please generate ${noteType === "public" ? "a customer-facing public" : "an internal technical"} maintenance note:\n\n${contextText}`;
281
+ // Build messages array
282
+ const messages = [
283
+ {
284
+ role: "system",
285
+ content: systemPrompt,
286
+ },
287
+ {
288
+ role: "user",
289
+ content: userMessage,
290
+ },
291
+ ];
292
+ return {
293
+ contextText,
294
+ systemPrompt,
295
+ messages,
296
+ };
297
+ }
298
+ }
299
+ __decorate([
300
+ CaptureSpan(),
301
+ __metadata("design:type", Function),
302
+ __metadata("design:paramtypes", [Object]),
303
+ __metadata("design:returntype", Promise)
304
+ ], ScheduledMaintenanceAIContextBuilder, "buildScheduledMaintenanceContext", null);
305
+ __decorate([
306
+ CaptureSpan(),
307
+ __metadata("design:type", Function),
308
+ __metadata("design:paramtypes", [Object, String, String]),
309
+ __metadata("design:returntype", Object)
310
+ ], ScheduledMaintenanceAIContextBuilder, "formatScheduledMaintenanceContextForNote", null);
311
+ //# sourceMappingURL=ScheduledMaintenanceAIContextBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledMaintenanceAIContextBuilder.js","sourceRoot":"","sources":["../../../../../Server/Utils/AI/ScheduledMaintenanceAIContextBuilder.ts"],"names":[],"mappings":"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"}
@@ -261,13 +261,70 @@ class MicrosoftTeamsUtil extends WorkspaceBase {
261
261
  }
262
262
  return { actionType: actionType, actionValue };
263
263
  }
264
+ /**
265
+ * Converts markdown tables to HTML tables for Teams MessageCard.
266
+ * Teams MessageCard supports HTML in the text field.
267
+ */
268
+ static convertMarkdownTablesToHtml(markdown) {
269
+ // Regular expression to match markdown tables
270
+ const tableRegex = /(?:^|\n)((?:\|[^\n]+\|\n)+(?:\|[-:\s|]+\|\n)(?:\|[^\n]+\|\n?)+)/g;
271
+ return markdown.replace(tableRegex, (_match, table) => {
272
+ const lines = table.trim().split("\n");
273
+ if (lines.length < 2) {
274
+ return table;
275
+ }
276
+ // Parse header row
277
+ const headerLine = lines[0] || "";
278
+ const headers = headerLine
279
+ .split("|")
280
+ .map((cell) => {
281
+ return cell.trim();
282
+ })
283
+ .filter((cell) => {
284
+ return cell.length > 0;
285
+ });
286
+ // Skip separator line (line with dashes) and get data rows
287
+ const dataRows = lines.slice(2);
288
+ // Build HTML table
289
+ let html = '<table style="border-collapse: collapse; width: 100%;">';
290
+ // Header row
291
+ html += "<tr>";
292
+ for (const header of headers) {
293
+ html += `<th style="border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2; text-align: left;"><strong>${header}</strong></th>`;
294
+ }
295
+ html += "</tr>";
296
+ // Data rows
297
+ for (const row of dataRows) {
298
+ const cells = row
299
+ .split("|")
300
+ .map((cell) => {
301
+ return cell.trim();
302
+ })
303
+ .filter((cell) => {
304
+ return cell.length > 0;
305
+ });
306
+ if (cells.length === 0) {
307
+ continue;
308
+ }
309
+ html += "<tr>";
310
+ for (const cell of cells) {
311
+ html += `<td style="border: 1px solid #ddd; padding: 8px;">${cell}</td>`;
312
+ }
313
+ html += "</tr>";
314
+ }
315
+ html += "</table>";
316
+ return "\n" + html + "\n";
317
+ });
318
+ }
264
319
  static buildMessageCardFromMarkdown(markdown) {
265
- var _a, _b, _c, _d, _e;
266
320
  /*
267
321
  * Teams MessageCard has limited markdown support. Headings like '##' are not supported
268
322
  * and single newlines can collapse. Convert common patterns to a structured card.
269
323
  */
270
- const lines = markdown
324
+ var _a, _b, _c, _d, _e;
325
+ // First, convert markdown tables to HTML
326
+ const markdownWithHtmlTables = this.convertMarkdownTablesToHtml(markdown);
327
+ const lines = markdownWithHtmlTables
271
328
  .split("\n")
272
329
  .map((l) => {
273
330
  return l.trim();