@meyicloud/meyi-insight-server 1.0.7 → 1.1.0

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 (89) hide show
  1. package/dist/constants/incidentCategories.d.ts +38 -9
  2. package/dist/constants/incidentCategories.d.ts.map +1 -1
  3. package/dist/constants/incidentCategories.js +70 -10
  4. package/dist/constants/incidentCategories.js.map +1 -1
  5. package/dist/controllers/incident.controller.d.ts.map +1 -1
  6. package/dist/controllers/incident.controller.js +23 -3
  7. package/dist/controllers/incident.controller.js.map +1 -1
  8. package/dist/database/schema.d.ts +257 -18
  9. package/dist/database/schema.d.ts.map +1 -1
  10. package/dist/database/schema.js +36 -3
  11. package/dist/database/schema.js.map +1 -1
  12. package/dist/features/incident-priority/index.d.ts +3 -0
  13. package/dist/features/incident-priority/index.d.ts.map +1 -0
  14. package/dist/features/incident-priority/index.js +3 -0
  15. package/dist/features/incident-priority/index.js.map +1 -0
  16. package/dist/features/incident-priority/priority.rules.d.ts +15 -0
  17. package/dist/features/incident-priority/priority.rules.d.ts.map +1 -0
  18. package/dist/features/incident-priority/priority.rules.js +38 -0
  19. package/dist/features/incident-priority/priority.rules.js.map +1 -0
  20. package/dist/features/incident-priority/priority.types.d.ts +13 -0
  21. package/dist/features/incident-priority/priority.types.d.ts.map +1 -0
  22. package/dist/features/incident-priority/priority.types.js +7 -0
  23. package/dist/features/incident-priority/priority.types.js.map +1 -0
  24. package/dist/features/sla/domain/sla.defaults.d.ts +12 -0
  25. package/dist/features/sla/domain/sla.defaults.d.ts.map +1 -0
  26. package/dist/features/sla/domain/sla.defaults.js +30 -0
  27. package/dist/features/sla/domain/sla.defaults.js.map +1 -0
  28. package/dist/features/sla/domain/sla.evaluator.d.ts +22 -2
  29. package/dist/features/sla/domain/sla.evaluator.d.ts.map +1 -1
  30. package/dist/features/sla/domain/sla.evaluator.js +26 -3
  31. package/dist/features/sla/domain/sla.evaluator.js.map +1 -1
  32. package/dist/features/sla/domain/sla.resolver.d.ts +42 -10
  33. package/dist/features/sla/domain/sla.resolver.d.ts.map +1 -1
  34. package/dist/features/sla/domain/sla.resolver.js +109 -15
  35. package/dist/features/sla/domain/sla.resolver.js.map +1 -1
  36. package/dist/features/sla/domain/sla.types.d.ts +54 -8
  37. package/dist/features/sla/domain/sla.types.d.ts.map +1 -1
  38. package/dist/features/sla/domain/sla.types.js +1 -0
  39. package/dist/features/sla/domain/sla.types.js.map +1 -1
  40. package/dist/features/sla/index.d.ts +2 -1
  41. package/dist/features/sla/index.d.ts.map +1 -1
  42. package/dist/features/sla/index.js +1 -0
  43. package/dist/features/sla/index.js.map +1 -1
  44. package/dist/features/sla/sla-policy.model.d.ts +30 -10
  45. package/dist/features/sla/sla-policy.model.d.ts.map +1 -1
  46. package/dist/features/sla/sla-policy.model.js +64 -28
  47. package/dist/features/sla/sla-policy.model.js.map +1 -1
  48. package/dist/features/sla/sla-policy.service.d.ts +16 -13
  49. package/dist/features/sla/sla-policy.service.d.ts.map +1 -1
  50. package/dist/features/sla/sla-policy.service.js +65 -23
  51. package/dist/features/sla/sla-policy.service.js.map +1 -1
  52. package/dist/features/sla/sla.schema.d.ts +84 -2
  53. package/dist/features/sla/sla.schema.d.ts.map +1 -1
  54. package/dist/features/sla/sla.schema.js +25 -7
  55. package/dist/features/sla/sla.schema.js.map +1 -1
  56. package/dist/index.d.ts +3 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +2 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/migrations/run.d.ts.map +1 -1
  61. package/dist/migrations/run.js +212 -5
  62. package/dist/migrations/run.js.map +1 -1
  63. package/dist/models/incident.model.d.ts +47 -2
  64. package/dist/models/incident.model.d.ts.map +1 -1
  65. package/dist/models/incident.model.js +127 -21
  66. package/dist/models/incident.model.js.map +1 -1
  67. package/dist/server.d.ts +2 -0
  68. package/dist/server.d.ts.map +1 -1
  69. package/dist/server.js +2 -1
  70. package/dist/server.js.map +1 -1
  71. package/dist/service.d.ts +28 -3
  72. package/dist/service.d.ts.map +1 -1
  73. package/dist/service.js +14 -2
  74. package/dist/service.js.map +1 -1
  75. package/dist/services/alert.service.d.ts.map +1 -1
  76. package/dist/services/alert.service.js +2 -0
  77. package/dist/services/alert.service.js.map +1 -1
  78. package/dist/services/incident.service.d.ts +50 -2
  79. package/dist/services/incident.service.d.ts.map +1 -1
  80. package/dist/services/incident.service.js +113 -17
  81. package/dist/services/incident.service.js.map +1 -1
  82. package/dist/services/retention.service.d.ts +63 -0
  83. package/dist/services/retention.service.d.ts.map +1 -0
  84. package/dist/services/retention.service.js +264 -0
  85. package/dist/services/retention.service.js.map +1 -0
  86. package/dist/services/workflow.service.d.ts.map +1 -1
  87. package/dist/services/workflow.service.js +2 -0
  88. package/dist/services/workflow.service.js.map +1 -1
  89. package/package.json +2 -1
@@ -1,18 +1,47 @@
1
1
  /**
2
2
  * Incident categorization and source type mappings.
3
3
  *
4
- * Maps top-level incident categories (operations, security, cost) to their
5
- * corresponding source types in the Insight engine.
4
+ * Maps top-level incident groups (operations, security, cost) to their
5
+ * corresponding source types in the Insight engine. The group of an incident
6
+ * is derived from its `source` and never stored, so it cannot drift.
6
7
  */
7
- export declare const INCIDENT_TYPE_SOURCES: Record<string, string[]>;
8
+ export type IncidentGroup = "operations" | "security" | "cost";
9
+ export declare const INCIDENT_GROUPS: readonly IncidentGroup[];
10
+ export declare const INCIDENT_TYPE_SOURCES: Record<IncidentGroup, string[]>;
11
+ /** Sources that are NOT operations. Everything else (including unknown sources) is operations. */
12
+ export declare const NON_OPERATIONS_SOURCES: readonly string[];
13
+ export declare function isIncidentGroup(value: unknown): value is IncidentGroup;
8
14
  /**
9
- * Resolves the effective source types for a given incident type / category.
15
+ * The incident group for a source. Security and cost are explicit lists; any other source
16
+ * (manual, prometheus, datadog, grafana, unknown, null) is operations, so a new source is never invisible.
17
+ */
18
+ export declare function incidentGroupForSource(source: string | null | undefined): IncidentGroup;
19
+ /** How an incident query is narrowed by source. `sourceTypes` = include list; `excludeSourceTypes` = exclude list. */
20
+ export interface IncidentSourceFilter {
21
+ sourceTypes?: string[];
22
+ excludeSourceTypes?: string[];
23
+ }
24
+ /**
25
+ * Resolves the source filter for an incident type (group) plus optional explicit source types.
10
26
  *
11
- * - If incidentType matches a configured category, returns the mapped sources.
12
- * If explicit sourceTypes are also provided, returns their intersection.
13
- * - If incidentType is provided but unrecognized (or has 0 sources), returns []
14
- * so the database query matches 0 records instead of failing open.
15
- * - If incidentType is omitted (or "all"), falls back to explicit sourceTypes or undefined.
27
+ * - security / cost: the group's source list, intersected with explicit sources when given.
28
+ * - operations: "not security and not cost" (exclude list), or the explicit sources that are operations.
29
+ * - unknown type: matches nothing (fails closed).
30
+ * - omitted / "all": explicit sources, or no filter.
31
+ */
32
+ export declare function resolveSourceFilterForIncidentType(incidentType?: string, explicitSourceTypes?: string[]): IncidentSourceFilter;
33
+ /**
34
+ * @deprecated Use `resolveSourceFilterForIncidentType`, which also covers unlisted operations sources.
35
+ * Kept for package consumers; returns only an include list (operations yields its explicit list).
16
36
  */
17
37
  export declare function resolveSourcesForIncidentType(incidentType?: string, explicitSourceTypes?: string[]): string[] | undefined;
38
+ /** Allowlisted list sort keys. The client never sends raw column names. */
39
+ export declare const INCIDENT_SORTS: readonly ["created_desc", "priority_savings"];
40
+ export type IncidentSort = (typeof INCIDENT_SORTS)[number];
41
+ export declare function isIncidentSort(value: unknown): value is IncidentSort;
42
+ /**
43
+ * The effective sort: an allowlisted explicit value, else `priority_savings` for the cost group and
44
+ * `created_desc` for everything else. Returns null for a value that is not on the allowlist.
45
+ */
46
+ export declare function resolveIncidentSort(sort: unknown, incidentType?: string): IncidentSort | null;
18
47
  //# sourceMappingURL=incidentCategories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"incidentCategories.d.ts","sourceRoot":"","sources":["../../src/constants/incidentCategories.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAI1D,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,CAAC,EAAE,MAAM,EACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC7B,MAAM,EAAE,GAAG,SAAS,CAkBtB"}
1
+ {"version":3,"file":"incidentCategories.d.ts","sourceRoot":"","sources":["../../src/constants/incidentCategories.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAA+D,CAAC;AAEpH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAIjE,CAAC;AAKF,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAKvF;AAED,sHAAsH;AACtH,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,CAAC,EAAE,MAAM,EACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC7B,oBAAoB,CAgBtB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,CAAC,EAAE,MAAM,EACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC7B,MAAM,EAAE,GAAG,SAAS,CAkBtB;AAID,2EAA2E;AAC3E,eAAO,MAAM,cAAc,+CAAgD,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAM7F"}
@@ -1,27 +1,70 @@
1
1
  /**
2
2
  * Incident categorization and source type mappings.
3
3
  *
4
- * Maps top-level incident categories (operations, security, cost) to their
5
- * corresponding source types in the Insight engine.
4
+ * Maps top-level incident groups (operations, security, cost) to their
5
+ * corresponding source types in the Insight engine. The group of an incident
6
+ * is derived from its `source` and never stored, so it cannot drift.
6
7
  */
8
+ export const INCIDENT_GROUPS = Object.freeze(["operations", "security", "cost"]);
7
9
  export const INCIDENT_TYPE_SOURCES = {
8
10
  operations: ["cloudwatch", "cloudtrail", "pulse", "meyi_pulse"],
9
11
  security: ["guardduty", "securityhub", "waf", "iam_access_analyzer"],
10
- cost: ["cost", "cur", "cost_anomaly", "budgets", "aws_cost"],
12
+ cost: ["cost", "cur", "cost_anomaly", "budgets", "aws_cost", "cost-ai-analyser", "finops-ai"],
11
13
  };
14
+ const SECURITY_SOURCES = new Set(INCIDENT_TYPE_SOURCES.security);
15
+ const COST_SOURCES = new Set(INCIDENT_TYPE_SOURCES.cost);
16
+ /** Sources that are NOT operations. Everything else (including unknown sources) is operations. */
17
+ export const NON_OPERATIONS_SOURCES = Object.freeze([
18
+ ...INCIDENT_TYPE_SOURCES.security,
19
+ ...INCIDENT_TYPE_SOURCES.cost,
20
+ ]);
21
+ export function isIncidentGroup(value) {
22
+ return typeof value === "string" && INCIDENT_GROUPS.includes(value);
23
+ }
24
+ /**
25
+ * The incident group for a source. Security and cost are explicit lists; any other source
26
+ * (manual, prometheus, datadog, grafana, unknown, null) is operations, so a new source is never invisible.
27
+ */
28
+ export function incidentGroupForSource(source) {
29
+ const key = typeof source === "string" ? source.trim().toLowerCase() : "";
30
+ if (SECURITY_SOURCES.has(key))
31
+ return "security";
32
+ if (COST_SOURCES.has(key))
33
+ return "cost";
34
+ return "operations";
35
+ }
12
36
  /**
13
- * Resolves the effective source types for a given incident type / category.
37
+ * Resolves the source filter for an incident type (group) plus optional explicit source types.
14
38
  *
15
- * - If incidentType matches a configured category, returns the mapped sources.
16
- * If explicit sourceTypes are also provided, returns their intersection.
17
- * - If incidentType is provided but unrecognized (or has 0 sources), returns []
18
- * so the database query matches 0 records instead of failing open.
19
- * - If incidentType is omitted (or "all"), falls back to explicit sourceTypes or undefined.
39
+ * - security / cost: the group's source list, intersected with explicit sources when given.
40
+ * - operations: "not security and not cost" (exclude list), or the explicit sources that are operations.
41
+ * - unknown type: matches nothing (fails closed).
42
+ * - omitted / "all": explicit sources, or no filter.
43
+ */
44
+ export function resolveSourceFilterForIncidentType(incidentType, explicitSourceTypes) {
45
+ const normType = incidentType?.trim().toLowerCase();
46
+ const explicit = explicitSourceTypes && explicitSourceTypes.length > 0 ? explicitSourceTypes : undefined;
47
+ if (!normType || normType === "all") {
48
+ return explicit ? { sourceTypes: explicit } : {};
49
+ }
50
+ if (!isIncidentGroup(normType))
51
+ return { sourceTypes: [] };
52
+ if (explicit) {
53
+ return { sourceTypes: explicit.filter((s) => incidentGroupForSource(s) === normType) };
54
+ }
55
+ if (normType === "operations") {
56
+ return { excludeSourceTypes: [...NON_OPERATIONS_SOURCES] };
57
+ }
58
+ return { sourceTypes: [...INCIDENT_TYPE_SOURCES[normType]] };
59
+ }
60
+ /**
61
+ * @deprecated Use `resolveSourceFilterForIncidentType`, which also covers unlisted operations sources.
62
+ * Kept for package consumers; returns only an include list (operations yields its explicit list).
20
63
  */
21
64
  export function resolveSourcesForIncidentType(incidentType, explicitSourceTypes) {
22
65
  const normType = incidentType?.trim().toLowerCase();
23
66
  if (normType && normType !== "all") {
24
- const categorySources = INCIDENT_TYPE_SOURCES[normType];
67
+ const categorySources = isIncidentGroup(normType) ? INCIDENT_TYPE_SOURCES[normType] : undefined;
25
68
  if (!categorySources || categorySources.length === 0) {
26
69
  return [];
27
70
  }
@@ -33,4 +76,21 @@ export function resolveSourcesForIncidentType(incidentType, explicitSourceTypes)
33
76
  }
34
77
  return explicitSourceTypes && explicitSourceTypes.length > 0 ? explicitSourceTypes : undefined;
35
78
  }
79
+ // ─── List sort ────────────────────────────────────────────────────────────────
80
+ /** Allowlisted list sort keys. The client never sends raw column names. */
81
+ export const INCIDENT_SORTS = ["created_desc", "priority_savings"];
82
+ export function isIncidentSort(value) {
83
+ return typeof value === "string" && INCIDENT_SORTS.includes(value);
84
+ }
85
+ /**
86
+ * The effective sort: an allowlisted explicit value, else `priority_savings` for the cost group and
87
+ * `created_desc` for everything else. Returns null for a value that is not on the allowlist.
88
+ */
89
+ export function resolveIncidentSort(sort, incidentType) {
90
+ if (sort !== undefined && sort !== null && sort !== "") {
91
+ const key = String(sort).trim().toLowerCase();
92
+ return isIncidentSort(key) ? key : null;
93
+ }
94
+ return incidentType?.trim().toLowerCase() === "cost" ? "priority_savings" : "created_desc";
95
+ }
36
96
  //# sourceMappingURL=incidentCategories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"incidentCategories.js","sourceRoot":"","sources":["../../src/constants/incidentCategories.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC;IAC/D,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,CAAC;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC;CAC7D,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAC3C,YAAqB,EACrB,mBAA8B;IAE9B,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"incidentCategories.js","sourceRoot":"","sources":["../../src/constants/incidentCategories.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"incident.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/incident.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkBvE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe;cAE7C,OAAO,OAAO,QAAQ;mBAgDjB,OAAO,OAAO,QAAQ;mBAetB,OAAO,OAAO,QAAQ;aAiB5B,OAAO,OAAO,QAAQ;mBAiBhB,OAAO,OAAO,QAAQ;gBAmBzB,OAAO,OAAO,QAAQ;yBAYb,OAAO,OAAO,QAAQ;gBAmB/B,OAAO,OAAO,QAAQ;gBAUtB,OAAO,OAAO,QAAQ;gBAiBtB,OAAO,OAAO,QAAQ;oBAUlB,OAAO,OAAO,QAAQ;EAuB/C"}
1
+ {"version":3,"file":"incident.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/incident.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAsBvE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe;cAE7C,OAAO,OAAO,QAAQ;mBA0DjB,OAAO,OAAO,QAAQ;mBAetB,OAAO,OAAO,QAAQ;aAiB5B,OAAO,OAAO,QAAQ;mBAiBhB,OAAO,OAAO,QAAQ;gBAmBzB,OAAO,OAAO,QAAQ;yBAcb,OAAO,OAAO,QAAQ;gBAmB/B,OAAO,OAAO,QAAQ;gBAUtB,OAAO,OAAO,QAAQ;gBAoBtB,OAAO,OAAO,QAAQ;oBAUlB,OAAO,OAAO,QAAQ;EAuB/C"}
@@ -1,5 +1,8 @@
1
+ import { DUPLICATE_OPEN_INCIDENT } from "../services/incident.service.js";
1
2
  import { resolveTenantId } from "../tenancy.js";
2
3
  import { parseEnvironmentQuery } from "../features/connector-environment/environment.query.js";
4
+ import { normalizePriority } from "../features/incident-priority/priority.rules.js";
5
+ import { resolveIncidentSort } from "../constants/incidentCategories.js";
3
6
  function actorLabel(req) {
4
7
  const u = req.user;
5
8
  if (!u)
@@ -33,6 +36,15 @@ export function createIncidentController(service) {
33
36
  const env = parseEnvironmentQuery(req);
34
37
  if (env.ok === false)
35
38
  return res.status(400).json({ ok: false, error: env.error });
39
+ const requestedPriorities = parseMultiQuery(req.query.priorities || req.query.priority);
40
+ const priorities = requestedPriorities.map(normalizePriority);
41
+ if (priorities.some((p) => p === null))
42
+ return res.status(400).json({ ok: false, error: "Invalid priority" });
43
+ // Allowlisted sort key only; absent = per-group default (cost: priority_savings, else created_desc).
44
+ const rawSort = Array.isArray(req.query.sort) ? req.query.sort[0] : req.query.sort;
45
+ const sort = resolveIncidentSort(rawSort, incidentType);
46
+ if (!sort)
47
+ return res.status(400).json({ ok: false, error: "Invalid sort" });
36
48
  const result = await service.list({
37
49
  page,
38
50
  limit,
@@ -44,7 +56,9 @@ export function createIncidentController(service) {
44
56
  accountNames: accountNames.length > 0 ? accountNames : undefined,
45
57
  incidentType,
46
58
  environment: env.environment,
59
+ priorities: priorities.length > 0 ? priorities : undefined,
47
60
  tenantId: resolveTenantId(req),
61
+ sort,
48
62
  });
49
63
  const incidents = result.incidents.map((inc) => ({
50
64
  ...inc,
@@ -56,6 +70,7 @@ export function createIncidentController(service) {
56
70
  total: result.total,
57
71
  page: result.page,
58
72
  limit: result.limit,
73
+ sort: result.sort,
59
74
  });
60
75
  }
61
76
  catch (e) {
@@ -125,10 +140,12 @@ export function createIncidentController(service) {
125
140
  },
126
141
  async create(req, res) {
127
142
  try {
128
- const { name, source, resourceName, resourceType, downMessage, tags, downTime, alertId, assigneeIds } = req.body;
143
+ const { name, source, resourceName, resourceType, downMessage, tags, downTime, alertId, assigneeIds, priority } = req.body;
129
144
  if (!name || !source || !resourceName || !resourceType)
130
145
  return res.status(400).json({ ok: false, error: "name, source, resourceName, resourceType required" });
131
- const result = await service.create({ name, source, resourceName, resourceType, downMessage, tags, downTime, alertId, assigneeIds, tenantId: resolveTenantId(req) });
146
+ if (priority !== undefined && priority !== null && !normalizePriority(priority))
147
+ return res.status(400).json({ ok: false, error: "Invalid priority" });
148
+ const result = await service.create({ name, source, resourceName, resourceType, downMessage, tags, downTime, alertId, assigneeIds, priority, tenantId: resolveTenantId(req) });
132
149
  return res.status(201).json({ ok: true, incidentId: result.id });
133
150
  }
134
151
  catch (e) {
@@ -172,6 +189,9 @@ export function createIncidentController(service) {
172
189
  const incident = await service.getById(req.params.id, tenantId);
173
190
  if (!incident)
174
191
  return res.status(404).json({ ok: false, error: "Incident not found" });
192
+ if ("priority" in req.body && !normalizePriority(req.body.priority)) {
193
+ return res.status(400).json({ ok: false, error: "Invalid priority" });
194
+ }
175
195
  if (req.body.status && user?.role === "user" && !incident.assigneeIds?.includes(user.id)) {
176
196
  return res.status(403).json({ ok: false, error: "Access denied: Only admins or assignees can change status" });
177
197
  }
@@ -179,7 +199,7 @@ export function createIncidentController(service) {
179
199
  return res.json({ ok: true });
180
200
  }
181
201
  catch (e) {
182
- const status = e.message === "Incident not found" ? 404 : 500;
202
+ const status = e.message === "Incident not found" ? 404 : e.message === DUPLICATE_OPEN_INCIDENT ? 409 : 500;
183
203
  return res.status(status).json({ ok: false, error: e.cause?.message ? `${e.message} - ${e.cause.message}` : e.message });
184
204
  }
185
205
  },
@@ -1 +1 @@
1
- {"version":3,"file":"incident.controller.js","sourceRoot":"","sources":["../../src/controllers/incident.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incident.controller.js","sourceRoot":"","sources":["../../src/controllers/incident.controller.ts"],"names":[],"mappings":"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"}