@oneuptime/common 9.2.18 → 9.2.21

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 (100) hide show
  1. package/Server/Services/AIService.ts +1 -1
  2. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +78 -1
  3. package/Server/Utils/Workspace/Slack/Slack.ts +80 -1
  4. package/Tests/Server/API/BaseAPI.test.ts +9 -4
  5. package/Tests/Server/Middleware/ProjectAuthorization.test.ts +133 -162
  6. package/Tests/Server/Services/ProbeService.test.ts +91 -784
  7. package/Tests/Server/Services/ScheduledMaintenanceService.test.ts +131 -112
  8. package/Tests/Server/Services/TeamMemberService.test.ts +87 -1343
  9. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +18 -9
  10. package/Tests/Server/Utils/Cookie.test.ts +10 -2
  11. package/Tests/Types/HashedString.test.ts +52 -8
  12. package/Tests/UI/Components/404.test.tsx +10 -15
  13. package/Tests/UI/Components/Breadcrumbs.test.tsx +6 -2
  14. package/Tests/UI/Components/Button.test.tsx +12 -12
  15. package/Tests/UI/Components/Card.test.tsx +4 -2
  16. package/Tests/UI/Components/ConfirmModal.test.tsx +1 -1
  17. package/Tests/UI/Components/Dropdown.test.tsx +37 -4
  18. package/Tests/UI/Components/DuplicateModel.test.tsx +49 -45
  19. package/Tests/UI/Components/FilePicker.test.tsx +258 -178
  20. package/Tests/UI/Components/List.test.tsx +3 -1
  21. package/Tests/UI/Components/MarkdownEditor.test.tsx +6 -5
  22. package/Tests/UI/Components/MasterPage.test.tsx +1 -1
  23. package/Tests/UI/Components/Modal.test.tsx +5 -5
  24. package/Tests/UI/Components/NavBar.test.tsx +14 -1
  25. package/Tests/UI/Components/OrderedStatesList.test.tsx +1 -1
  26. package/Tests/UI/Components/Pagination.test.tsx +6 -2
  27. package/Tests/Utils/API.test.ts +133 -11
  28. package/Tests/__mocks__/azure.js +2 -0
  29. package/Tests/__mocks__/botbuilder-stdlib.js +2 -0
  30. package/Tests/__mocks__/botbuilder.js +10 -0
  31. package/Tests/__mocks__/locter.js +5 -0
  32. package/Tests/__mocks__/otpauth.js +30 -0
  33. package/Tests/__mocks__/simplewebauthn.js +34 -0
  34. package/Tests/__mocks__/styleMock.js +1 -0
  35. package/Tests/__mocks__/uuid.js +31 -0
  36. package/Tests/__mocks__/yaml.js +11 -0
  37. package/Tests/jest.setup.ts +14 -0
  38. package/UI/Components/AI/AITemplates.ts +226 -0
  39. package/UI/Components/AI/GenerateFromAIModal.tsx +21 -270
  40. package/build/dist/Server/Services/AIService.js +1 -1
  41. package/build/dist/Server/Services/AIService.js.map +1 -1
  42. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +59 -2
  43. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  44. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +61 -1
  45. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  46. package/build/dist/Tests/Server/API/BaseAPI.test.js +7 -2
  47. package/build/dist/Tests/Server/API/BaseAPI.test.js.map +1 -1
  48. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js +89 -101
  49. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js.map +1 -1
  50. package/build/dist/Tests/Server/Services/ProbeService.test.js +95 -687
  51. package/build/dist/Tests/Server/Services/ProbeService.test.js.map +1 -1
  52. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js +108 -89
  53. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js.map +1 -1
  54. package/build/dist/Tests/Server/Services/TeamMemberService.test.js +85 -924
  55. package/build/dist/Tests/Server/Services/TeamMemberService.test.js.map +1 -1
  56. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +14 -9
  57. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +1 -1
  58. package/build/dist/Tests/Server/Utils/Cookie.test.js +10 -4
  59. package/build/dist/Tests/Server/Utils/Cookie.test.js.map +1 -1
  60. package/build/dist/Tests/Types/HashedString.test.js +39 -6
  61. package/build/dist/Tests/Types/HashedString.test.js.map +1 -1
  62. package/build/dist/Tests/UI/Components/404.test.js +10 -10
  63. package/build/dist/Tests/UI/Components/404.test.js.map +1 -1
  64. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js +6 -2
  65. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js.map +1 -1
  66. package/build/dist/Tests/UI/Components/Button.test.js +12 -12
  67. package/build/dist/Tests/UI/Components/Card.test.js +4 -2
  68. package/build/dist/Tests/UI/Components/Card.test.js.map +1 -1
  69. package/build/dist/Tests/UI/Components/ConfirmModal.test.js +1 -1
  70. package/build/dist/Tests/UI/Components/ConfirmModal.test.js.map +1 -1
  71. package/build/dist/Tests/UI/Components/Dropdown.test.js +19 -3
  72. package/build/dist/Tests/UI/Components/Dropdown.test.js.map +1 -1
  73. package/build/dist/Tests/UI/Components/DuplicateModel.test.js +46 -41
  74. package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +1 -1
  75. package/build/dist/Tests/UI/Components/FilePicker.test.js +210 -117
  76. package/build/dist/Tests/UI/Components/FilePicker.test.js.map +1 -1
  77. package/build/dist/Tests/UI/Components/List.test.js +3 -1
  78. package/build/dist/Tests/UI/Components/List.test.js.map +1 -1
  79. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +6 -5
  80. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +1 -1
  81. package/build/dist/Tests/UI/Components/MasterPage.test.js +1 -1
  82. package/build/dist/Tests/UI/Components/MasterPage.test.js.map +1 -1
  83. package/build/dist/Tests/UI/Components/Modal.test.js +5 -5
  84. package/build/dist/Tests/UI/Components/Modal.test.js.map +1 -1
  85. package/build/dist/Tests/UI/Components/NavBar.test.js +13 -1
  86. package/build/dist/Tests/UI/Components/NavBar.test.js.map +1 -1
  87. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js +1 -1
  88. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js.map +1 -1
  89. package/build/dist/Tests/UI/Components/Pagination.test.js +6 -2
  90. package/build/dist/Tests/UI/Components/Pagination.test.js.map +1 -1
  91. package/build/dist/Tests/Utils/API.test.js +100 -9
  92. package/build/dist/Tests/Utils/API.test.js.map +1 -1
  93. package/build/dist/Tests/jest.setup.js +13 -0
  94. package/build/dist/Tests/jest.setup.js.map +1 -0
  95. package/build/dist/UI/Components/AI/AITemplates.js +218 -0
  96. package/build/dist/UI/Components/AI/AITemplates.js.map +1 -0
  97. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +5 -238
  98. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  99. package/jest.config.json +18 -1
  100. package/package.json +1 -1
@@ -6,21 +6,26 @@ import React, {
6
6
  } from "react";
7
7
  import Modal, { ModalWidth } from "../Modal/Modal";
8
8
  import AILoader from "./AILoader";
9
- import ErrorMessage from "../ErrorMessage/ErrorMessage";
9
+ import Alert, { AlertType } from "../Alerts/Alert";
10
10
  import ButtonType from "../Button/ButtonTypes";
11
11
  import { ButtonStyleType } from "../Button/Button";
12
12
  import IconProp from "../../../Types/Icon/IconProp";
13
13
  import Dropdown, { DropdownOption, DropdownValue } from "../Dropdown/Dropdown";
14
14
  import MarkdownEditor from "../Markdown.tsx/MarkdownEditor";
15
15
 
16
+ export interface AITemplate {
17
+ id: string;
18
+ name: string;
19
+ content?: string;
20
+ }
21
+
16
22
  export interface GenerateFromAIModalProps {
17
23
  title: string;
18
24
  description?: string;
19
25
  onClose: () => void;
20
26
  onGenerate: (data: GenerateAIRequestData) => Promise<string>;
21
27
  onSuccess: (generatedContent: string) => void;
22
- templates?: Array<{ id: string; name: string; content?: string }>;
23
- noteType?: NoteType; // Type of note being generated (determines default templates)
28
+ templates: Array<AITemplate>;
24
29
  }
25
30
 
26
31
  export interface GenerateAIRequestData {
@@ -28,278 +33,19 @@ export interface GenerateAIRequestData {
28
33
  templateId?: string;
29
34
  }
30
35
 
31
- // Template categories for different note types
32
- export type NoteType = "postmortem" | "public-note" | "internal-note";
33
-
34
- // Default hardcoded templates for incident postmortem
35
- const POSTMORTEM_TEMPLATES: Array<{
36
- id: string;
37
- name: string;
38
- content: string;
39
- }> = [
40
- {
41
- id: "default-standard",
42
- name: "Standard Postmortem",
43
- content: `## Executive Summary
44
- [Brief overview of the incident, its impact, and resolution]
45
-
46
- ## Incident Timeline
47
- | Time | Event |
48
- |------|-------|
49
- | [Time] | [Event description] |
50
-
51
- ## Root Cause Analysis
52
- [Detailed analysis of what caused the incident]
53
-
54
- ## Impact Assessment
55
- - **Duration**: [How long the incident lasted]
56
- - **Users Affected**: [Number or percentage of affected users]
57
- - **Services Affected**: [List of affected services]
58
-
59
- ## Resolution
60
- [Steps taken to resolve the incident]
61
-
62
- ## Action Items
63
- - [ ] [Action item 1]
64
- - [ ] [Action item 2]
65
- - [ ] [Action item 3]
66
-
67
- ## Lessons Learned
68
- [Key takeaways and improvements identified]`,
69
- },
70
- {
71
- id: "default-detailed",
72
- name: "Detailed Technical Postmortem",
73
- content: `## Incident Overview
74
- **Incident Title**: [Title]
75
- **Severity**: [P1/P2/P3/P4]
76
- **Duration**: [Start time] - [End time]
77
- **Authors**: [Names]
78
-
79
- ## Summary
80
- [2-3 sentence summary of the incident]
81
-
82
- ## Detection
83
- - **How was the incident detected?** [Monitoring alert / Customer report / etc.]
84
- - **Time to detection**: [Duration from start to detection]
85
-
86
- ## Timeline
87
- | Timestamp | Action | Owner |
88
- |-----------|--------|-------|
89
- | [Time] | [What happened] | [Who did it] |
90
-
91
- ## Root Cause
92
- ### Primary Cause
93
- [Detailed explanation of the root cause]
94
-
95
- ### Contributing Factors
96
- 1. [Factor 1]
97
- 2. [Factor 2]
98
-
99
- ## Impact
100
- ### Customer Impact
101
- [Description of how customers were affected]
102
-
103
- ### Business Impact
104
- [Description of business consequences]
105
-
106
- ### Technical Impact
107
- [Systems and services affected]
108
-
109
- ## Mitigation & Resolution
110
- ### Immediate Actions
111
- [Steps taken to stop the bleeding]
112
-
113
- ### Permanent Fix
114
- [Long-term solution implemented]
115
-
116
- ## Prevention
117
- ### What Went Well
118
- - [Item 1]
119
- - [Item 2]
120
-
121
- ### What Went Wrong
122
- - [Item 1]
123
- - [Item 2]
124
-
125
- ### Where We Got Lucky
126
- - [Item 1]
127
-
128
- ## Action Items
129
- | Action | Owner | Priority | Due Date |
130
- |--------|-------|----------|----------|
131
- | [Action] | [Name] | [High/Medium/Low] | [Date] |
132
-
133
- ## Appendix
134
- [Any additional technical details, logs, or graphs]`,
135
- },
136
- {
137
- id: "default-brief",
138
- name: "Brief Postmortem",
139
- content: `## What Happened
140
- [Concise description of the incident]
141
-
142
- ## Why It Happened
143
- [Root cause explanation]
144
-
145
- ## How We Fixed It
146
- [Resolution steps]
147
-
148
- ## How We Prevent It
149
- - [ ] [Prevention action 1]
150
- - [ ] [Prevention action 2]`,
151
- },
152
- ];
153
-
154
- // Default templates for public notes (customer-facing)
155
- const PUBLIC_NOTE_TEMPLATES: Array<{
156
- id: string;
157
- name: string;
158
- content: string;
159
- }> = [
160
- {
161
- id: "public-status-update",
162
- name: "Status Update",
163
- content: `## Current Status
164
- [Brief description of the current situation]
165
-
166
- ## What We're Doing
167
- [Actions being taken to resolve the issue]
168
-
169
- ## Next Update
170
- [Expected time for next update or resolution]`,
171
- },
172
- {
173
- id: "public-resolution",
174
- name: "Resolution Notice",
175
- content: `## Issue Resolved
176
- [Brief description of what was resolved]
177
-
178
- ## Summary
179
- [What happened and how it was fixed]
180
-
181
- ## Prevention
182
- [Steps taken to prevent recurrence]
183
-
184
- Thank you for your patience.`,
185
- },
186
- {
187
- id: "public-maintenance",
188
- name: "Maintenance Update",
189
- content: `## Maintenance Status
190
- [Current phase of the maintenance]
191
-
192
- ## Progress
193
- [What has been completed]
194
-
195
- ## Remaining Work
196
- [What still needs to be done]
197
-
198
- ## Expected Completion
199
- [Estimated completion time]`,
200
- },
201
- ];
202
-
203
- // Default templates for internal notes (team-facing)
204
- const INTERNAL_NOTE_TEMPLATES: Array<{
205
- id: string;
206
- name: string;
207
- content: string;
208
- }> = [
209
- {
210
- id: "internal-investigation",
211
- name: "Investigation Update",
212
- content: `## Current Investigation Status
213
- [What we're looking at]
214
-
215
- ## Findings So Far
216
- - [Finding 1]
217
- - [Finding 2]
218
-
219
- ## Hypothesis
220
- [Current theory about the root cause]
221
-
222
- ## Next Steps
223
- - [ ] [Action 1]
224
- - [ ] [Action 2]`,
225
- },
226
- {
227
- id: "internal-technical",
228
- name: "Technical Analysis",
229
- content: `## Technical Details
230
- [Detailed technical observations]
231
-
232
- ## Metrics/Logs
233
- [Relevant metrics or log entries]
234
-
235
- ## Impact Assessment
236
- [Technical impact analysis]
237
-
238
- ## Recommendations
239
- [Technical recommendations for resolution]`,
240
- },
241
- {
242
- id: "internal-handoff",
243
- name: "Shift Handoff",
244
- content: `## Current State
245
- [Where things stand now]
246
-
247
- ## Actions Taken
248
- [What has been done so far]
249
-
250
- ## Open Questions
251
- [Things that still need investigation]
252
-
253
- ## Immediate Priorities
254
- - [ ] [Priority 1]
255
- - [ ] [Priority 2]
256
-
257
- ## Contacts
258
- [Key people involved or to contact]`,
259
- },
260
- ];
261
-
262
- // Function to get default templates based on note type
263
- const getDefaultTemplates: (
264
- noteType: NoteType,
265
- ) => Array<{ id: string; name: string; content: string }> = (
266
- noteType: NoteType,
267
- ): Array<{ id: string; name: string; content: string }> => {
268
- switch (noteType) {
269
- case "postmortem":
270
- return POSTMORTEM_TEMPLATES;
271
- case "public-note":
272
- return PUBLIC_NOTE_TEMPLATES;
273
- case "internal-note":
274
- return INTERNAL_NOTE_TEMPLATES;
275
- default:
276
- return POSTMORTEM_TEMPLATES;
277
- }
278
- };
279
-
280
36
  const GenerateFromAIModal: FunctionComponent<GenerateFromAIModalProps> = (
281
37
  props: GenerateFromAIModalProps,
282
38
  ): ReactElement => {
283
- // Get default templates based on note type
284
- const defaultTemplates: Array<{ id: string; name: string; content: string }> =
285
- getDefaultTemplates(props.noteType || "postmortem");
286
-
287
39
  const [isGenerating, setIsGenerating] = useState<boolean>(false);
288
40
  const [error, setError] = useState<string>("");
289
41
  const [selectedTemplateId, setSelectedTemplateId] = useState<string>(
290
- defaultTemplates[0]?.id || "",
42
+ props.templates[0]?.id || "",
291
43
  );
292
44
  const [templateContent, setTemplateContent] = useState<string>("");
293
45
 
294
- // Combine default templates with custom templates
295
- const allTemplates: Array<{ id: string; name: string; content?: string }> = [
296
- ...defaultTemplates,
297
- ...(props.templates || []),
298
- ];
299
-
300
46
  // Build dropdown options
301
- const templateOptions: Array<DropdownOption> = allTemplates.map(
302
- (template: { id: string; name: string; content?: string }) => {
47
+ const templateOptions: Array<DropdownOption> = props.templates.map(
48
+ (template: AITemplate) => {
303
49
  return {
304
50
  label: template.name,
305
51
  value: template.id,
@@ -310,10 +56,8 @@ const GenerateFromAIModal: FunctionComponent<GenerateFromAIModalProps> = (
310
56
  // Update template content when selection changes
311
57
  useEffect(() => {
312
58
  if (selectedTemplateId) {
313
- const selectedTemplate:
314
- | { id: string; name: string; content?: string }
315
- | undefined = allTemplates.find(
316
- (t: { id: string; name: string; content?: string }) => {
59
+ const selectedTemplate: AITemplate | undefined = props.templates.find(
60
+ (t: AITemplate) => {
317
61
  return t.id === selectedTemplateId;
318
62
  },
319
63
  );
@@ -371,7 +115,14 @@ const GenerateFromAIModal: FunctionComponent<GenerateFromAIModalProps> = (
371
115
  icon={IconProp.Bolt}
372
116
  >
373
117
  <>
374
- {error && <ErrorMessage message={error} />}
118
+ {error && (
119
+ <Alert
120
+ type={AlertType.DANGER}
121
+ strongTitle="Error"
122
+ title={error}
123
+ className="mb-4"
124
+ />
125
+ )}
375
126
 
376
127
  {isGenerating && <AILoader />}
377
128
 
@@ -89,7 +89,7 @@ export class Service extends BaseService {
89
89
  data: logEntry,
90
90
  props: { isRoot: true },
91
91
  });
92
- throw new BadDataException("Insufficient AI balance. Please recharge your AI balance in Project Settings > Billing.");
92
+ throw new BadDataException("Insufficient AI balance. Please recharge your AI balance in Project Settings > AI Credits.");
93
93
  }
94
94
  }
95
95
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"AIService.js","sourceRoot":"","sources":["../../../../Server/Services/AIService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIService.js","sourceRoot":"","sources":["../../../../Server/Services/AIService.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();