@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
@@ -20,6 +20,7 @@ export interface GenerateFromAIModalProps {
20
20
  onGenerate: (data: GenerateAIRequestData) => Promise<string>;
21
21
  onSuccess: (generatedContent: string) => void;
22
22
  templates?: Array<{ id: string; name: string; content?: string }>;
23
+ noteType?: NoteType; // Type of note being generated (determines default templates)
23
24
  }
24
25
 
25
26
  export interface GenerateAIRequestData {
@@ -27,13 +28,19 @@ export interface GenerateAIRequestData {
27
28
  templateId?: string;
28
29
  }
29
30
 
31
+ // Template categories for different note types
32
+ export type NoteType = "postmortem" | "public-note" | "internal-note";
33
+
30
34
  // Default hardcoded templates for incident postmortem
31
- const DEFAULT_TEMPLATES: Array<{ id: string; name: string; content: string }> =
32
- [
33
- {
34
- id: "default-standard",
35
- name: "Standard Postmortem",
36
- content: `## Executive Summary
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
37
44
  [Brief overview of the incident, its impact, and resolution]
38
45
 
39
46
  ## Incident Timeline
@@ -59,11 +66,11 @@ const DEFAULT_TEMPLATES: Array<{ id: string; name: string; content: string }> =
59
66
 
60
67
  ## Lessons Learned
61
68
  [Key takeaways and improvements identified]`,
62
- },
63
- {
64
- id: "default-detailed",
65
- name: "Detailed Technical Postmortem",
66
- content: `## Incident Overview
69
+ },
70
+ {
71
+ id: "default-detailed",
72
+ name: "Detailed Technical Postmortem",
73
+ content: `## Incident Overview
67
74
  **Incident Title**: [Title]
68
75
  **Severity**: [P1/P2/P3/P4]
69
76
  **Duration**: [Start time] - [End time]
@@ -125,11 +132,11 @@ const DEFAULT_TEMPLATES: Array<{ id: string; name: string; content: string }> =
125
132
 
126
133
  ## Appendix
127
134
  [Any additional technical details, logs, or graphs]`,
128
- },
129
- {
130
- id: "default-brief",
131
- name: "Brief Postmortem",
132
- content: `## What Happened
135
+ },
136
+ {
137
+ id: "default-brief",
138
+ name: "Brief Postmortem",
139
+ content: `## What Happened
133
140
  [Concise description of the incident]
134
141
 
135
142
  ## Why It Happened
@@ -141,22 +148,152 @@ const DEFAULT_TEMPLATES: Array<{ id: string; name: string; content: string }> =
141
148
  ## How We Prevent It
142
149
  - [ ] [Prevention action 1]
143
150
  - [ ] [Prevention action 2]`,
144
- },
145
- ];
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
+ };
146
279
 
147
280
  const GenerateFromAIModal: FunctionComponent<GenerateFromAIModalProps> = (
148
281
  props: GenerateFromAIModalProps,
149
282
  ): 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
+
150
287
  const [isGenerating, setIsGenerating] = useState<boolean>(false);
151
288
  const [error, setError] = useState<string>("");
152
289
  const [selectedTemplateId, setSelectedTemplateId] = useState<string>(
153
- DEFAULT_TEMPLATES[0]?.id || "",
290
+ defaultTemplates[0]?.id || "",
154
291
  );
155
292
  const [templateContent, setTemplateContent] = useState<string>("");
156
293
 
157
294
  // Combine default templates with custom templates
158
295
  const allTemplates: Array<{ id: string; name: string; content?: string }> = [
159
- ...DEFAULT_TEMPLATES,
296
+ ...defaultTemplates,
160
297
  ...(props.templates || []),
161
298
  ];
162
299
 
@@ -0,0 +1,94 @@
1
+ import Alert from "../../Models/DatabaseModels/Alert";
2
+ import NotFoundException from "../../Types/Exception/NotFoundException";
3
+ import BadDataException from "../../Types/Exception/BadDataException";
4
+ import ObjectID from "../../Types/ObjectID";
5
+ import AlertService from "../Services/AlertService";
6
+ import UserMiddleware from "../Middleware/UserAuthorization";
7
+ import Response from "../Utils/Response";
8
+ import BaseAPI from "./BaseAPI";
9
+ import CommonAPI from "./CommonAPI";
10
+ import AIService from "../Services/AIService";
11
+ import AlertAIContextBuilder from "../Utils/AI/AlertAIContextBuilder";
12
+ import JSONFunctions from "../../Types/JSONFunctions";
13
+ import Permission from "../../Types/Permission";
14
+ export default class AlertAPI extends BaseAPI {
15
+ constructor() {
16
+ var _a;
17
+ super(Alert, AlertService);
18
+ // Generate note from AI
19
+ this.router.post(`${(_a = new this.entityType().getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/generate-note-from-ai/:alertId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
20
+ try {
21
+ await this.generateNoteFromAI(req, res);
22
+ }
23
+ catch (err) {
24
+ next(err);
25
+ }
26
+ });
27
+ }
28
+ async generateNoteFromAI(req, res) {
29
+ var _a;
30
+ const alertIdParam = req.params["alertId"];
31
+ if (!alertIdParam) {
32
+ throw new BadDataException("Alert ID is required");
33
+ }
34
+ let alertId;
35
+ try {
36
+ alertId = new ObjectID(alertIdParam);
37
+ }
38
+ catch (_b) {
39
+ throw new BadDataException("Invalid Alert ID");
40
+ }
41
+ const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
42
+ // Verify user has permission
43
+ const permissions = (_a = props
44
+ .userTenantAccessPermission) === null || _a === void 0 ? void 0 : _a["permissions"];
45
+ const hasPermission = permissions
46
+ ? permissions.some((p) => {
47
+ return (p === Permission.ProjectOwner ||
48
+ p === Permission.ProjectAdmin ||
49
+ p === Permission.EditAlert ||
50
+ p === Permission.CreateAlertInternalNote);
51
+ })
52
+ : false;
53
+ if (!hasPermission && !props.isMasterAdmin) {
54
+ throw new BadDataException("You do not have permission to generate notes for this alert.");
55
+ }
56
+ // Get the template from request body
57
+ const template = JSONFunctions.getJSONValueInPath(req.body, "template");
58
+ // Get the alert to verify it exists and get the project ID
59
+ const alert = await this.service.findOneById({
60
+ id: alertId,
61
+ select: {
62
+ _id: true,
63
+ projectId: true,
64
+ },
65
+ props,
66
+ });
67
+ if (!alert || !alert.projectId) {
68
+ throw new NotFoundException("Alert not found");
69
+ }
70
+ // Build alert context
71
+ const contextData = await AlertAIContextBuilder.buildAlertContext({
72
+ alertId,
73
+ });
74
+ // Format context for note generation
75
+ const aiContext = AlertAIContextBuilder.formatAlertContextForNote(contextData, template);
76
+ // Generate note using AIService (handles billing and logging)
77
+ const aiLogRequest = {
78
+ projectId: alert.projectId,
79
+ feature: "Alert Internal Note",
80
+ alertId: alertId,
81
+ messages: aiContext.messages,
82
+ maxTokens: 4096,
83
+ temperature: 0.7,
84
+ };
85
+ if (props.userId) {
86
+ aiLogRequest.userId = props.userId;
87
+ }
88
+ const response = await AIService.executeWithLogging(aiLogRequest);
89
+ return Response.sendJsonObjectResponse(req, res, {
90
+ note: response.content,
91
+ });
92
+ }
93
+ }
94
+ //# sourceMappingURL=AlertAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertAPI.js","sourceRoot":"","sources":["../../../../Server/API/AlertAPI.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import JSONFunctions from "../../Types/JSONFunctions";
13
13
  import Permission from "../../Types/Permission";
14
14
  export default class IncidentAPI extends BaseAPI {
15
15
  constructor() {
16
- var _a, _b;
16
+ var _a, _b, _c;
17
17
  super(Incident, IncidentService);
18
18
  this.router.get(`${(_a = new this.entityType()
19
19
  .getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/postmortem/attachment/:projectId/:incidentId/:fileId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
@@ -34,6 +34,16 @@ export default class IncidentAPI extends BaseAPI {
34
34
  next(err);
35
35
  }
36
36
  });
37
+ // Generate note from AI
38
+ this.router.post(`${(_c = new this.entityType()
39
+ .getCrudApiPath()) === null || _c === void 0 ? void 0 : _c.toString()}/generate-note-from-ai/:incidentId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
40
+ try {
41
+ await this.generateNoteFromAI(req, res);
42
+ }
43
+ catch (err) {
44
+ next(err);
45
+ }
46
+ });
37
47
  }
38
48
  async getPostmortemAttachment(req, res) {
39
49
  var _a;
@@ -155,5 +165,82 @@ export default class IncidentAPI extends BaseAPI {
155
165
  postmortemNote: response.content,
156
166
  });
157
167
  }
168
+ async generateNoteFromAI(req, res) {
169
+ var _a;
170
+ const incidentIdParam = req.params["incidentId"];
171
+ if (!incidentIdParam) {
172
+ throw new BadDataException("Incident ID is required");
173
+ }
174
+ let incidentId;
175
+ try {
176
+ incidentId = new ObjectID(incidentIdParam);
177
+ }
178
+ catch (_b) {
179
+ throw new BadDataException("Invalid Incident ID");
180
+ }
181
+ const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
182
+ // Verify user has permission to edit the incident
183
+ const permissions = (_a = props
184
+ .userTenantAccessPermission) === null || _a === void 0 ? void 0 : _a["permissions"];
185
+ const hasPermission = permissions
186
+ ? permissions.some((p) => {
187
+ return (p === Permission.ProjectOwner ||
188
+ p === Permission.ProjectAdmin ||
189
+ p === Permission.EditProjectIncident ||
190
+ p === Permission.CreateIncidentInternalNote ||
191
+ p === Permission.CreateIncidentPublicNote);
192
+ })
193
+ : false;
194
+ if (!hasPermission && !props.isMasterAdmin) {
195
+ throw new BadDataException("You do not have permission to generate notes for this incident.");
196
+ }
197
+ // Get the template and note type from request body
198
+ const template = JSONFunctions.getJSONValueInPath(req.body, "template");
199
+ const noteType = JSONFunctions.getJSONValueInPath(req.body, "noteType") ||
200
+ "internal";
201
+ if (noteType !== "public" && noteType !== "internal") {
202
+ throw new BadDataException("Note type must be 'public' or 'internal'");
203
+ }
204
+ // Always include workspace messages for comprehensive context
205
+ const includeWorkspaceMessages = true;
206
+ // Get the incident to verify it exists and get the project ID
207
+ const incident = await this.service.findOneById({
208
+ id: incidentId,
209
+ select: {
210
+ _id: true,
211
+ projectId: true,
212
+ },
213
+ props,
214
+ });
215
+ if (!incident || !incident.projectId) {
216
+ throw new NotFoundException("Incident not found");
217
+ }
218
+ // Build incident context
219
+ const contextData = await IncidentAIContextBuilder.buildIncidentContext({
220
+ incidentId,
221
+ includeWorkspaceMessages,
222
+ workspaceMessageLimit: 300,
223
+ });
224
+ // Format context for note generation
225
+ const aiContext = IncidentAIContextBuilder.formatIncidentContextForNote(contextData, noteType, template);
226
+ // Generate note using AIService (handles billing and logging)
227
+ const aiLogRequest = {
228
+ projectId: incident.projectId,
229
+ feature: noteType === "public"
230
+ ? "Incident Public Note"
231
+ : "Incident Internal Note",
232
+ incidentId: incidentId,
233
+ messages: aiContext.messages,
234
+ maxTokens: 4096,
235
+ temperature: 0.7,
236
+ };
237
+ if (props.userId) {
238
+ aiLogRequest.userId = props.userId;
239
+ }
240
+ const response = await AIService.executeWithLogging(aiLogRequest);
241
+ return Response.sendJsonObjectResponse(req, res, {
242
+ note: response.content,
243
+ });
244
+ }
158
245
  }
159
246
  //# sourceMappingURL=IncidentAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IncidentAPI.js","sourceRoot":"","sources":["../../../../Server/API/IncidentAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncidentAPI.js","sourceRoot":"","sources":["../../../../Server/API/IncidentAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import ScheduledMaintenance from "../../Models/DatabaseModels/ScheduledMaintenance";
2
+ import NotFoundException from "../../Types/Exception/NotFoundException";
3
+ import BadDataException from "../../Types/Exception/BadDataException";
4
+ import ObjectID from "../../Types/ObjectID";
5
+ import ScheduledMaintenanceService from "../Services/ScheduledMaintenanceService";
6
+ import UserMiddleware from "../Middleware/UserAuthorization";
7
+ import Response from "../Utils/Response";
8
+ import BaseAPI from "./BaseAPI";
9
+ import CommonAPI from "./CommonAPI";
10
+ import AIService from "../Services/AIService";
11
+ import ScheduledMaintenanceAIContextBuilder from "../Utils/AI/ScheduledMaintenanceAIContextBuilder";
12
+ import JSONFunctions from "../../Types/JSONFunctions";
13
+ import Permission from "../../Types/Permission";
14
+ export default class ScheduledMaintenanceAPI extends BaseAPI {
15
+ constructor() {
16
+ var _a;
17
+ super(ScheduledMaintenance, ScheduledMaintenanceService);
18
+ // Generate note from AI
19
+ this.router.post(`${(_a = new this.entityType()
20
+ .getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/generate-note-from-ai/:scheduledMaintenanceId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
21
+ try {
22
+ await this.generateNoteFromAI(req, res);
23
+ }
24
+ catch (err) {
25
+ next(err);
26
+ }
27
+ });
28
+ }
29
+ async generateNoteFromAI(req, res) {
30
+ var _a;
31
+ const scheduledMaintenanceIdParam = req.params["scheduledMaintenanceId"];
32
+ if (!scheduledMaintenanceIdParam) {
33
+ throw new BadDataException("Scheduled Maintenance ID is required");
34
+ }
35
+ let scheduledMaintenanceId;
36
+ try {
37
+ scheduledMaintenanceId = new ObjectID(scheduledMaintenanceIdParam);
38
+ }
39
+ catch (_b) {
40
+ throw new BadDataException("Invalid Scheduled Maintenance ID");
41
+ }
42
+ const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
43
+ // Verify user has permission
44
+ const permissions = (_a = props
45
+ .userTenantAccessPermission) === null || _a === void 0 ? void 0 : _a["permissions"];
46
+ const hasPermission = permissions
47
+ ? permissions.some((p) => {
48
+ return (p === Permission.ProjectOwner ||
49
+ p === Permission.ProjectAdmin ||
50
+ p === Permission.EditProjectScheduledMaintenance ||
51
+ p === Permission.CreateScheduledMaintenanceInternalNote ||
52
+ p === Permission.CreateScheduledMaintenancePublicNote);
53
+ })
54
+ : false;
55
+ if (!hasPermission && !props.isMasterAdmin) {
56
+ throw new BadDataException("You do not have permission to generate notes for this scheduled maintenance.");
57
+ }
58
+ // Get the template and note type from request body
59
+ const template = JSONFunctions.getJSONValueInPath(req.body, "template");
60
+ const noteType = JSONFunctions.getJSONValueInPath(req.body, "noteType") ||
61
+ "internal";
62
+ if (noteType !== "public" && noteType !== "internal") {
63
+ throw new BadDataException("Note type must be 'public' or 'internal'");
64
+ }
65
+ // Get the scheduled maintenance to verify it exists and get the project ID
66
+ const scheduledMaintenance = await this.service.findOneById({
67
+ id: scheduledMaintenanceId,
68
+ select: {
69
+ _id: true,
70
+ projectId: true,
71
+ },
72
+ props,
73
+ });
74
+ if (!scheduledMaintenance || !scheduledMaintenance.projectId) {
75
+ throw new NotFoundException("Scheduled Maintenance not found");
76
+ }
77
+ // Build scheduled maintenance context
78
+ const contextData = await ScheduledMaintenanceAIContextBuilder.buildScheduledMaintenanceContext({
79
+ scheduledMaintenanceId,
80
+ });
81
+ // Format context for note generation
82
+ const aiContext = ScheduledMaintenanceAIContextBuilder.formatScheduledMaintenanceContextForNote(contextData, noteType, template);
83
+ // Generate note using AIService (handles billing and logging)
84
+ const aiLogRequest = {
85
+ projectId: scheduledMaintenance.projectId,
86
+ feature: noteType === "public"
87
+ ? "Scheduled Maintenance Public Note"
88
+ : "Scheduled Maintenance Internal Note",
89
+ scheduledMaintenanceId: scheduledMaintenanceId,
90
+ messages: aiContext.messages,
91
+ maxTokens: 4096,
92
+ temperature: 0.7,
93
+ };
94
+ if (props.userId) {
95
+ aiLogRequest.userId = props.userId;
96
+ }
97
+ const response = await AIService.executeWithLogging(aiLogRequest);
98
+ return Response.sendJsonObjectResponse(req, res, {
99
+ note: response.content,
100
+ });
101
+ }
102
+ }
103
+ //# sourceMappingURL=ScheduledMaintenanceAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledMaintenanceAPI.js","sourceRoot":"","sources":["../../../../Server/API/ScheduledMaintenanceAPI.ts"],"names":[],"mappings":"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"}
@@ -110,7 +110,6 @@ export class Service extends BaseService {
110
110
  const response = await LLMService.getCompletion({
111
111
  llmProviderConfig: llmConfig,
112
112
  messages: request.messages,
113
- maxTokens: request.maxTokens || 4096,
114
113
  temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
115
114
  });
116
115
  const endTime = new Date();
@@ -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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"}
@@ -1808,7 +1808,6 @@ ${incidentSeverity.name}
1808
1808
  const response = await LLMService.getCompletion({
1809
1809
  llmProviderConfig: llmConfig,
1810
1810
  messages: aiContext.messages,
1811
- maxTokens: 8192,
1812
1811
  temperature: 0.7,
1813
1812
  });
1814
1813
  return response.content;