@miragon/pulse-engine-core 0.0.0-bootstrap.0 → 0.25.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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/dist/activities.d.ts +31 -0
  3. package/dist/activities.d.ts.map +1 -0
  4. package/dist/activities.js +62 -0
  5. package/dist/activities.js.map +1 -0
  6. package/dist/advance-plan.d.ts +21 -0
  7. package/dist/advance-plan.d.ts.map +1 -0
  8. package/dist/advance-plan.js +192 -0
  9. package/dist/advance-plan.js.map +1 -0
  10. package/dist/conditions.d.ts +66 -0
  11. package/dist/conditions.d.ts.map +1 -0
  12. package/dist/conditions.js +119 -0
  13. package/dist/conditions.js.map +1 -0
  14. package/dist/dates.d.ts +59 -0
  15. package/dist/dates.d.ts.map +1 -0
  16. package/dist/dates.js +189 -0
  17. package/dist/dates.js.map +1 -0
  18. package/dist/durations.d.ts +4 -0
  19. package/dist/durations.d.ts.map +1 -0
  20. package/dist/durations.js +10 -0
  21. package/dist/durations.js.map +1 -0
  22. package/dist/engine-status.d.ts +57 -0
  23. package/dist/engine-status.d.ts.map +1 -0
  24. package/dist/engine-status.js +193 -0
  25. package/dist/engine-status.js.map +1 -0
  26. package/dist/errors.d.ts +101 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +18 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/filters.d.ts +53 -0
  31. package/dist/filters.d.ts.map +1 -0
  32. package/dist/filters.js +74 -0
  33. package/dist/filters.js.map +1 -0
  34. package/dist/findings.d.ts +46 -0
  35. package/dist/findings.d.ts.map +1 -0
  36. package/dist/findings.js +105 -0
  37. package/dist/findings.js.map +1 -0
  38. package/dist/incident-recovery.d.ts +35 -0
  39. package/dist/incident-recovery.d.ts.map +1 -0
  40. package/dist/incident-recovery.js +24 -0
  41. package/dist/incident-recovery.js.map +1 -0
  42. package/dist/index.d.ts +36 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +33 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/inspect.d.ts +34 -0
  47. package/dist/inspect.d.ts.map +1 -0
  48. package/dist/inspect.js +247 -0
  49. package/dist/inspect.js.map +1 -0
  50. package/dist/next.d.ts +26 -0
  51. package/dist/next.d.ts.map +1 -0
  52. package/dist/next.js +83 -0
  53. package/dist/next.js.map +1 -0
  54. package/dist/operations.d.ts +9 -0
  55. package/dist/operations.d.ts.map +1 -0
  56. package/dist/operations.js +41 -0
  57. package/dist/operations.js.map +1 -0
  58. package/dist/poll.d.ts +24 -0
  59. package/dist/poll.d.ts.map +1 -0
  60. package/dist/poll.js +29 -0
  61. package/dist/poll.js.map +1 -0
  62. package/dist/port.d.ts +95 -0
  63. package/dist/port.d.ts.map +1 -0
  64. package/dist/port.js +113 -0
  65. package/dist/port.js.map +1 -0
  66. package/dist/records.d.ts +27 -0
  67. package/dist/records.d.ts.map +1 -0
  68. package/dist/records.js +58 -0
  69. package/dist/records.js.map +1 -0
  70. package/dist/requests.d.ts +24 -0
  71. package/dist/requests.d.ts.map +1 -0
  72. package/dist/requests.js +35 -0
  73. package/dist/requests.js.map +1 -0
  74. package/dist/retry-plan.d.ts +62 -0
  75. package/dist/retry-plan.d.ts.map +1 -0
  76. package/dist/retry-plan.js +140 -0
  77. package/dist/retry-plan.js.map +1 -0
  78. package/dist/root-cause.d.ts +17 -0
  79. package/dist/root-cause.d.ts.map +1 -0
  80. package/dist/root-cause.js +35 -0
  81. package/dist/root-cause.js.map +1 -0
  82. package/dist/select.d.ts +16 -0
  83. package/dist/select.d.ts.map +1 -0
  84. package/dist/select.js +133 -0
  85. package/dist/select.js.map +1 -0
  86. package/dist/snapshot.d.ts +12 -0
  87. package/dist/snapshot.d.ts.map +1 -0
  88. package/dist/snapshot.js +134 -0
  89. package/dist/snapshot.js.map +1 -0
  90. package/dist/sorting.d.ts +20 -0
  91. package/dist/sorting.d.ts.map +1 -0
  92. package/dist/sorting.js +17 -0
  93. package/dist/sorting.js.map +1 -0
  94. package/dist/status.d.ts +91 -0
  95. package/dist/status.d.ts.map +1 -0
  96. package/dist/status.js +222 -0
  97. package/dist/status.js.map +1 -0
  98. package/dist/testing/fake-port.d.ts +31 -0
  99. package/dist/testing/fake-port.d.ts.map +1 -0
  100. package/dist/testing/fake-port.js +50 -0
  101. package/dist/testing/fake-port.js.map +1 -0
  102. package/dist/testing/fixture.d.ts +39 -0
  103. package/dist/testing/fixture.d.ts.map +1 -0
  104. package/dist/testing/fixture.js +288 -0
  105. package/dist/testing/fixture.js.map +1 -0
  106. package/dist/testing/index.d.ts +23 -0
  107. package/dist/testing/index.d.ts.map +1 -0
  108. package/dist/testing/index.js +23 -0
  109. package/dist/testing/index.js.map +1 -0
  110. package/dist/testing/inspect-routes.d.ts +12 -0
  111. package/dist/testing/inspect-routes.d.ts.map +1 -0
  112. package/dist/testing/inspect-routes.js +63 -0
  113. package/dist/testing/inspect-routes.js.map +1 -0
  114. package/dist/testing/status.d.ts +18 -0
  115. package/dist/testing/status.d.ts.map +1 -0
  116. package/dist/testing/status.js +12 -0
  117. package/dist/testing/status.js.map +1 -0
  118. package/dist/testing/waits.d.ts +60 -0
  119. package/dist/testing/waits.d.ts.map +1 -0
  120. package/dist/testing/waits.js +53 -0
  121. package/dist/testing/waits.js.map +1 -0
  122. package/dist/timeline.d.ts +9 -0
  123. package/dist/timeline.d.ts.map +1 -0
  124. package/dist/timeline.js +63 -0
  125. package/dist/timeline.js.map +1 -0
  126. package/dist/tree.d.ts +19 -0
  127. package/dist/tree.d.ts.map +1 -0
  128. package/dist/tree.js +61 -0
  129. package/dist/tree.js.map +1 -0
  130. package/dist/types.d.ts +254 -0
  131. package/dist/types.d.ts.map +1 -0
  132. package/dist/types.js +6 -0
  133. package/dist/types.js.map +1 -0
  134. package/dist/util.d.ts +26 -0
  135. package/dist/util.d.ts.map +1 -0
  136. package/dist/util.js +44 -0
  137. package/dist/util.js.map +1 -0
  138. package/dist/variable-writes.d.ts +32 -0
  139. package/dist/variable-writes.d.ts.map +1 -0
  140. package/dist/variable-writes.js +113 -0
  141. package/dist/variable-writes.js.map +1 -0
  142. package/dist/variables.d.ts +28 -0
  143. package/dist/variables.d.ts.map +1 -0
  144. package/dist/variables.js +64 -0
  145. package/dist/variables.js.map +1 -0
  146. package/dist/waits.d.ts +11 -0
  147. package/dist/waits.d.ts.map +1 -0
  148. package/dist/waits.js +253 -0
  149. package/dist/waits.js.map +1 -0
  150. package/package.json +47 -5
package/dist/select.js ADDED
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Instance selection: a process instance id, or a business key and/or a process definition key
3
+ * (with `latest`) resolved against history and runtime.
4
+ */
5
+ import { WorkflowError } from "./errors.js";
6
+ import { compareText, definitionKeyOf, num, records, str, yes } from "./records.js";
7
+ import { engineTime } from "./dates.js";
8
+ import { queryInput } from "./requests.js";
9
+ import { compact } from "./util.js";
10
+ /** The candidates an ambiguous selection names at most. */
11
+ const LISTED_CANDIDATES = 10;
12
+ /** One match more than the listed candidates tells whether the engine has more. */
13
+ const MATCH_LIMIT = LISTED_CANDIDATES + 1;
14
+ const ACTIVE_STATES = new Set(["ACTIVE", "SUSPENDED"]);
15
+ /** The rules of a selection; nothing is sent before this passed. */
16
+ export function checkSelection(selection) {
17
+ const filtered = selection.businessKey !== undefined || selection.processDefinitionKey !== undefined;
18
+ if (selection.id !== undefined && (filtered || selection.latest)) {
19
+ throw new WorkflowError({ kind: "selection-conflict" });
20
+ }
21
+ if (selection.id === undefined && !filtered) {
22
+ throw new WorkflowError({ kind: "selection-missing", latest: selection.latest });
23
+ }
24
+ }
25
+ function historyRequest(selection) {
26
+ return {
27
+ operationId: "getHistoricProcessInstances",
28
+ input: queryInput({
29
+ processInstanceBusinessKey: selection.businessKey,
30
+ processDefinitionKey: selection.processDefinitionKey,
31
+ sortBy: "startTime",
32
+ sortOrder: "desc",
33
+ maxResults: String(MATCH_LIMIT),
34
+ }),
35
+ };
36
+ }
37
+ function runtimeRequest(selection) {
38
+ return {
39
+ operationId: "getProcessInstances",
40
+ input: queryInput({
41
+ businessKey: selection.businessKey,
42
+ processDefinitionKey: selection.processDefinitionKey,
43
+ maxResults: String(MATCH_LIMIT),
44
+ }),
45
+ };
46
+ }
47
+ /** The requests that resolve the filters (history, runtime); none for an id. */
48
+ export function selectionRequests(selection) {
49
+ return selection.id === undefined ? [historyRequest(selection), runtimeRequest(selection)] : [];
50
+ }
51
+ function fromHistory(row) {
52
+ const id = str(row, "id");
53
+ if (id === undefined)
54
+ return undefined;
55
+ return {
56
+ id,
57
+ ...compact({
58
+ key: str(row, "processDefinitionKey"),
59
+ version: num(row, "processDefinitionVersion"),
60
+ businessKey: str(row, "businessKey"),
61
+ }),
62
+ state: str(row, "state") ?? "ACTIVE",
63
+ ...compact({ startTime: str(row, "startTime") }),
64
+ };
65
+ }
66
+ function fromRuntime(row) {
67
+ const id = str(row, "id");
68
+ if (id === undefined)
69
+ return undefined;
70
+ const key = str(row, "definitionKey") ?? definitionKeyOf(str(row, "definitionId"));
71
+ return {
72
+ id,
73
+ ...compact({ key, businessKey: str(row, "businessKey") }),
74
+ state: yes(row, "suspended") ? "SUSPENDED" : "ACTIVE",
75
+ };
76
+ }
77
+ function rank(candidate) {
78
+ return ACTIVE_STATES.has(candidate.state) ? 0 : 1;
79
+ }
80
+ /** Start time for a descending order; candidates without one (runtime only) come last. */
81
+ function startedAt(candidate) {
82
+ return engineTime(candidate.startTime) ?? Number.NEGATIVE_INFINITY;
83
+ }
84
+ /** Merged by id (history first), active before ended, then the most recently started first. */
85
+ export function mergeCandidates(history, runtime) {
86
+ const merged = new Map();
87
+ for (const candidate of [...history.map(fromHistory), ...runtime.map(fromRuntime)]) {
88
+ if (candidate !== undefined && !merged.has(candidate.id))
89
+ merged.set(candidate.id, candidate);
90
+ }
91
+ return [...merged.values()].sort((left, right) => rank(left) - rank(right) ||
92
+ startedAt(right) - startedAt(left) ||
93
+ compareText(left.id, right.id));
94
+ }
95
+ function latestOf(history, runtime, selection) {
96
+ const first = history.map(fromHistory).find((candidate) => candidate !== undefined);
97
+ if (first !== undefined)
98
+ return first.id;
99
+ const running = mergeCandidates([], runtime);
100
+ if (running.length > 1)
101
+ throw new WorkflowError({ kind: "latest-needs-history" });
102
+ const [only] = running;
103
+ if (only === undefined)
104
+ throw new WorkflowError({ kind: "selection-not-found", selection });
105
+ return only.id;
106
+ }
107
+ /** The id of the selected instance; filters are resolved in parallel against history and runtime. */
108
+ export async function selectInstance(port, selection) {
109
+ checkSelection(selection);
110
+ if (selection.id !== undefined)
111
+ return selection.id;
112
+ const load = async (request) => records(await port.json(request.operationId, request.input));
113
+ const [history, runtime] = await Promise.all([
114
+ load(historyRequest(selection)),
115
+ load(runtimeRequest(selection)),
116
+ ]);
117
+ if (selection.latest)
118
+ return latestOf(history, runtime, selection);
119
+ const candidates = mergeCandidates(history, runtime);
120
+ const [only, ...others] = candidates;
121
+ if (only === undefined)
122
+ throw new WorkflowError({ kind: "selection-not-found", selection });
123
+ if (others.length > 0) {
124
+ throw new WorkflowError({
125
+ kind: "selection-ambiguous",
126
+ selection,
127
+ candidates: candidates.slice(0, LISTED_CANDIDATES),
128
+ more: candidates.length > LISTED_CANDIDATES,
129
+ });
130
+ }
131
+ return only.id;
132
+ }
133
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The instance view of inspect, wait, advance, retry and deploy, assembled from
3
+ * what `inspect` loaded. Pure and deterministic: the view does not depend on the order of the
4
+ * engine's lists (except the timeline, which keeps the history order).
5
+ */
6
+ import { type Rec } from "./records.js";
7
+ import type { InstanceData, InstanceView } from "./types.js";
8
+ /** The open root cause incidents of the tree, by time and id. */
9
+ export declare function rootIncidents(incidents: readonly Rec[]): Rec[];
10
+ /** The instance view of the loaded data. */
11
+ export declare function instanceView(data: InstanceData): InstanceView;
12
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAML,KAAK,GAAG,EAGT,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAIV,YAAY,EAEZ,YAAY,EACb,MAAM,YAAY,CAAA;AA0FnB,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAQ9D;AA0BD,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAmB7D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * The instance view of inspect, wait, advance, retry and deploy, assembled from
3
+ * what `inspect` loaded. Pure and deterministic: the view does not depend on the order of the
4
+ * engine's lists (except the timeline, which keeps the history order).
5
+ */
6
+ import { incidentRecovery } from "./incident-recovery.js";
7
+ import { nextSteps } from "./next.js";
8
+ import { compareText, compareTime, definitionKeyOf, field, num, str, yes, } from "./records.js";
9
+ import { timelineOf } from "./timeline.js";
10
+ import { compact } from "./util.js";
11
+ import { plainVariables } from "./variables.js";
12
+ import { waitStates } from "./waits.js";
13
+ function definitionView(dto, id) {
14
+ return {
15
+ key: str(dto, "key") ?? definitionKeyOf(id) ?? "",
16
+ ...compact({ version: num(dto, "version"), name: str(dto, "name") }),
17
+ id,
18
+ };
19
+ }
20
+ /** From the history record, else from the definition list, else from the definition id. */
21
+ function definitionOf(data) {
22
+ const { history, runtime } = data;
23
+ const historyId = str(history, "processDefinitionId");
24
+ if (historyId !== undefined) {
25
+ return {
26
+ key: str(history, "processDefinitionKey") ?? definitionKeyOf(historyId) ?? "",
27
+ ...compact({
28
+ version: num(history, "processDefinitionVersion"),
29
+ name: str(history, "processDefinitionName"),
30
+ }),
31
+ id: historyId,
32
+ };
33
+ }
34
+ const id = field(runtime, "definitionId");
35
+ return definitionView(data.definitions.find((definition) => str(definition, "id") === id), id);
36
+ }
37
+ function stateOf(data) {
38
+ if (data.runtime !== undefined)
39
+ return yes(data.runtime, "suspended") ? "SUSPENDED" : "ACTIVE";
40
+ return (str(data.history, "state") ?? "COMPLETED");
41
+ }
42
+ function header(data) {
43
+ const { history, runtime } = data;
44
+ const root = str(history, "rootProcessInstanceId");
45
+ return {
46
+ id: data.id,
47
+ ...compact({ businessKey: str(history, "businessKey") ?? str(runtime, "businessKey") }),
48
+ definition: definitionOf(data),
49
+ state: stateOf(data),
50
+ ...compact({
51
+ startTime: str(history, "startTime"),
52
+ endTime: str(history, "endTime"),
53
+ durationMs: num(history, "durationInMillis"),
54
+ deleteReason: str(history, "deleteReason"),
55
+ parentId: str(history, "superProcessInstanceId") ?? data.parentId,
56
+ rootId: root === data.id ? undefined : root,
57
+ }),
58
+ };
59
+ }
60
+ function isRoot(incident) {
61
+ return str(incident, "id") === str(incident, "rootCauseIncidentId");
62
+ }
63
+ function incidentView(data, incident) {
64
+ const id = field(incident, "id");
65
+ const type = field(incident, "incidentType");
66
+ const pid = str(incident, "processInstanceId");
67
+ const recovery = incidentRecovery({
68
+ incidentType: type,
69
+ configuration: str(incident, "configuration"),
70
+ });
71
+ const cause = data.causes.get(id);
72
+ const message = str(incident, "incidentMessage");
73
+ return {
74
+ id,
75
+ type,
76
+ activityId: field(incident, "activityId"),
77
+ ...compact({
78
+ processInstanceId: pid === data.id ? undefined : pid,
79
+ message,
80
+ // left out when it says the same as the message
81
+ rootCause: cause?.rootCause === message ? undefined : cause?.rootCause,
82
+ jobId: recovery.action === "retry-job" ? recovery.jobId : undefined,
83
+ externalTaskId: recovery.action === "retry-external-task" ? recovery.externalTaskId : undefined,
84
+ }),
85
+ since: field(incident, "incidentTimestamp"),
86
+ ...compact({ annotation: str(incident, "annotation"), stacktrace: cause?.stacktrace }),
87
+ };
88
+ }
89
+ /** The open root cause incidents of the tree, by time and id. */
90
+ export function rootIncidents(incidents) {
91
+ return incidents
92
+ .filter(isRoot)
93
+ .toSorted((left, right) => compareTime(str(left, "incidentTimestamp"), str(right, "incidentTimestamp")) ||
94
+ compareText(field(left, "id"), field(right, "id")));
95
+ }
96
+ function children(data) {
97
+ const versions = new Map(data.definitions.map((definition) => [str(definition, "id"), definition]));
98
+ return data.tree
99
+ .filter((node) => node.depth > 0)
100
+ .toSorted((left, right) => left.depth - right.depth ||
101
+ compareText(left.definitionKey ?? "", right.definitionKey ?? "") ||
102
+ compareText(left.id, right.id))
103
+ .map((node) => {
104
+ const definition = versions.get(node.definitionId);
105
+ return {
106
+ id: node.id,
107
+ parentId: node.parentId ?? data.id,
108
+ key: node.definitionKey ?? field(definition, "key"),
109
+ ...compact({ version: num(definition, "version"), businessKey: node.businessKey }),
110
+ state: node.suspended ? "SUSPENDED" : "ACTIVE",
111
+ };
112
+ });
113
+ }
114
+ /** The instance view of the loaded data. */
115
+ export function instanceView(data) {
116
+ const active = data.runtime !== undefined;
117
+ const propagated = data.incidents.filter((incident) => !isRoot(incident)).length;
118
+ const view = {
119
+ ...header(data),
120
+ waitingAt: active ? waitStates(data) : [],
121
+ incidents: rootIncidents(data.incidents).map((incident) => incidentView(data, incident)),
122
+ ...compact({ propagatedIncidents: propagated > 0 ? propagated : undefined }),
123
+ children: children(data),
124
+ ...compact({
125
+ variables: data.variables === undefined ? undefined : plainVariables(data.variables),
126
+ timeline: data.timeline === undefined
127
+ ? undefined
128
+ : timelineOf(data.timeline, data.historicIncidents ?? []),
129
+ truncated: data.truncated ? true : undefined,
130
+ }),
131
+ };
132
+ return { ...view, next: nextSteps(view, data.historyRequested) };
133
+ }
134
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Query sorting. Every engine list query sorts only by an explicit PAIR:
3
+ * `sortBy` without `sortOrder` (or the reverse) is a 400 "Only a single
4
+ * sorting parameter specified. sortBy and sortOrder required". The tools keep
5
+ * both parameters optional and pair them here instead.
6
+ */
7
+ export type SortOrder = "asc" | "desc";
8
+ /**
9
+ * The sort pair a list query sends: a `sortBy` alone sorts ascending, a
10
+ * `sortOrder` alone has no field to apply to and is dropped: never one
11
+ * without the other.
12
+ */
13
+ export declare function engineSorting<TField extends string>(args: {
14
+ sortBy?: TField;
15
+ sortOrder?: SortOrder;
16
+ }): {
17
+ sortBy?: TField;
18
+ sortOrder?: SortOrder;
19
+ };
20
+ //# sourceMappingURL=sorting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorting.d.ts","sourceRoot":"","sources":["../src/sorting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA;AAEtC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,EAAE,IAAI,EAAE;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,CAG7C"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Query sorting. Every engine list query sorts only by an explicit PAIR:
3
+ * `sortBy` without `sortOrder` (or the reverse) is a 400 "Only a single
4
+ * sorting parameter specified. sortBy and sortOrder required". The tools keep
5
+ * both parameters optional and pair them here instead.
6
+ */
7
+ /**
8
+ * The sort pair a list query sends: a `sortBy` alone sorts ascending, a
9
+ * `sortOrder` alone has no field to apply to and is dropped: never one
10
+ * without the other.
11
+ */
12
+ export function engineSorting(args) {
13
+ if (!args.sortBy)
14
+ return {};
15
+ return { sortBy: args.sortBy, sortOrder: args.sortOrder ?? "asc" };
16
+ }
17
+ //# sourceMappingURL=sorting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorting.js","sourceRoot":"","sources":["../src/sorting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAwB,IAGpD;IACC,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAA;AACpE,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Aggregation of the status triage: definitions, incident groups, external task topics, jobs,
3
+ * tasks and batches from the responses of round 1. Pure; `now` is injected (engine and client
4
+ * clocks are assumed to agree, as for local containers).
5
+ */
6
+ import { type Rec } from "./records.js";
7
+ export interface DefinitionStatus {
8
+ readonly key: string;
9
+ readonly name?: string;
10
+ readonly latestVersion: number;
11
+ readonly versions: number;
12
+ readonly instances: number;
13
+ readonly failedJobs: number;
14
+ readonly incidents: number;
15
+ }
16
+ /**
17
+ * What to look at for an incident group: the incidents of a type or the failed jobs of a job
18
+ * definition (outside any process definition), a retry of an activity's failed jobs and external
19
+ * tasks (to preview), or the incidents at an activity.
20
+ */
21
+ export type GroupStep = {
22
+ readonly action: "listIncidentsOfType";
23
+ readonly incidentType: string;
24
+ } | {
25
+ readonly action: "listFailedJobs";
26
+ readonly jobDefinitionId?: string;
27
+ } | {
28
+ readonly action: "retryActivity";
29
+ readonly processDefinitionKey: string;
30
+ readonly activityId: string;
31
+ } | {
32
+ readonly action: "listIncidentsAtActivity";
33
+ readonly processDefinitionKey: string;
34
+ readonly activityId: string;
35
+ };
36
+ /** `N`: the next step, structured (`GroupStep`) or the text a caller renders from it. */
37
+ export interface IncidentGroup<N = GroupStep> {
38
+ readonly processDefinitionKey: string;
39
+ readonly activityId: string;
40
+ /** Only for incidents without a process definition (standalone jobs). */
41
+ readonly jobDefinitionId?: string;
42
+ readonly type: string;
43
+ readonly message: string;
44
+ readonly count: number;
45
+ readonly firstAt: string;
46
+ readonly lastAt: string;
47
+ readonly rootCause?: string;
48
+ readonly processInstanceIds: readonly string[];
49
+ readonly next: N;
50
+ }
51
+ export interface TopicStatus {
52
+ readonly topic: string;
53
+ readonly waiting: number;
54
+ readonly locked: number;
55
+ readonly lockExpired: number;
56
+ readonly failed: number;
57
+ readonly workers: readonly string[];
58
+ readonly oldestWaitingSince?: string;
59
+ /** The earliest expired lock (LOCK_EXPIRED waits the stale threshold past it). */
60
+ readonly oldestLockExpiredAt?: string;
61
+ }
62
+ export interface JobStatus {
63
+ readonly executable: number;
64
+ readonly overdue: number;
65
+ readonly oldestReadySince?: string;
66
+ }
67
+ /** The message with UUIDs, hex runs of 16+ characters and digit runs masked as `#`. */
68
+ export declare function messagePattern(message: string): string;
69
+ /** Named keys without any deployed definition (a typo, or another engine). */
70
+ export declare function unknownKeys(statistics: readonly Rec[], keys: readonly string[]): string[];
71
+ /** Statistics summed per key; keys without instances, failed jobs and incidents only when named. */
72
+ export declare function definitionStatus(statistics: readonly Rec[], keys: readonly string[]): DefinitionStatus[];
73
+ /** The tie-break of equal groups: action, then key, activity, incident type, job definition. */
74
+ export declare function defaultGroupOrder(left: GroupStep, right: GroupStep): number;
75
+ export interface GroupedIncidents {
76
+ readonly groups: readonly (IncidentGroup & {
77
+ readonly newest: Rec;
78
+ })[];
79
+ readonly propagated: number;
80
+ }
81
+ /**
82
+ * Root cause incidents grouped by key, activity, type and message pattern; largest groups first,
83
+ * then the most recent, then `compareSteps` over the next steps. Incidents of the failed jobs of a
84
+ * batch (`batchJobDefinitions`) are left out: BATCH_FAILURES reports them.
85
+ */
86
+ export declare function groupIncidents(incidents: readonly Rec[], statistics: readonly Rec[], batchJobDefinitions?: ReadonlySet<string>, compareSteps?: (left: GroupStep, right: GroupStep) => number): GroupedIncidents;
87
+ /** External tasks per topic, a partition: failed, locked, lock expired or waiting. */
88
+ export declare function topicStatus(tasks: readonly Rec[], now: number): TopicStatus[];
89
+ /** Executable jobs whose due date (or create time) is older than the threshold are overdue. */
90
+ export declare function jobStatus(executable: number, staleJobs: readonly Rec[], threshold: number): JobStatus;
91
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}