@acmekit/orchestration 2.13.34 → 2.13.35
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.
- package/dist/transaction/audit-log.d.ts +66 -0
- package/dist/transaction/audit-log.d.ts.map +1 -0
- package/dist/transaction/audit-log.js +32 -0
- package/dist/transaction/audit-log.js.map +1 -0
- package/dist/transaction/circuit-breaker.d.ts +48 -0
- package/dist/transaction/circuit-breaker.d.ts.map +1 -0
- package/dist/transaction/circuit-breaker.js +59 -0
- package/dist/transaction/circuit-breaker.js.map +1 -0
- package/dist/transaction/errors.d.ts +14 -0
- package/dist/transaction/errors.d.ts.map +1 -1
- package/dist/transaction/errors.js +37 -1
- package/dist/transaction/errors.js.map +1 -1
- package/dist/transaction/index.d.ts +4 -0
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction/index.js +4 -0
- package/dist/transaction/index.js.map +1 -1
- package/dist/transaction/metrics.d.ts +71 -0
- package/dist/transaction/metrics.d.ts.map +1 -0
- package/dist/transaction/metrics.js +37 -0
- package/dist/transaction/metrics.js.map +1 -0
- package/dist/transaction/rate-limiter.d.ts +40 -0
- package/dist/transaction/rate-limiter.d.ts.map +1 -0
- package/dist/transaction/rate-limiter.js +31 -0
- package/dist/transaction/rate-limiter.js.map +1 -0
- package/dist/transaction/transaction-orchestrator.d.ts +31 -0
- package/dist/transaction/transaction-orchestrator.d.ts.map +1 -1
- package/dist/transaction/transaction-orchestrator.js +225 -1
- package/dist/transaction/transaction-orchestrator.js.map +1 -1
- package/dist/transaction/types.d.ts +85 -0
- package/dist/transaction/types.d.ts.map +1 -1
- package/dist/transaction/types.js +1 -0
- package/dist/transaction/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { DistributedTransactionEvent } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* A single immutable audit log entry capturing a workflow state transition.
|
|
4
|
+
*
|
|
5
|
+
* Each step transition (begin, success, failure, compensate, etc.) produces
|
|
6
|
+
* one entry. These entries form a complete, ordered history of a workflow execution
|
|
7
|
+
* that can be used for compliance (SOC2, GDPR), debugging, and live dashboard rendering.
|
|
8
|
+
*/
|
|
9
|
+
export type AuditLogEntry = {
|
|
10
|
+
/** Unique identifier for this entry */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Timestamp when the event occurred */
|
|
13
|
+
timestamp: number;
|
|
14
|
+
/** The type of event */
|
|
15
|
+
event: DistributedTransactionEvent;
|
|
16
|
+
/** The workflow model ID */
|
|
17
|
+
workflowId: string;
|
|
18
|
+
/** The transaction ID */
|
|
19
|
+
transactionId: string;
|
|
20
|
+
/** The step action name (if applicable) */
|
|
21
|
+
stepId?: string;
|
|
22
|
+
/** The step action (if applicable) */
|
|
23
|
+
stepAction?: string;
|
|
24
|
+
/** Whether this is an invoke or compensate action */
|
|
25
|
+
handlerType?: "invoke" | "compensate";
|
|
26
|
+
/** The attempt number */
|
|
27
|
+
attempt?: number;
|
|
28
|
+
/** Duration in milliseconds (for completed steps) */
|
|
29
|
+
durationMs?: number;
|
|
30
|
+
/** Error message (for failed steps) */
|
|
31
|
+
errorMessage?: string;
|
|
32
|
+
/** Additional data */
|
|
33
|
+
data?: Record<string, unknown>;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Interface for persisting audit log entries.
|
|
37
|
+
* Implement this to store entries in a database, Redis stream, or external service.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* class PostgresAuditLogStore implements IAuditLogStore {
|
|
42
|
+
* async append(entry: AuditLogEntry) {
|
|
43
|
+
* await this.db.insert("workflow_audit_log", entry)
|
|
44
|
+
* }
|
|
45
|
+
* async getEntries(transactionId: string) {
|
|
46
|
+
* return this.db.select("workflow_audit_log", { transactionId })
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export interface IAuditLogStore {
|
|
52
|
+
append(entry: AuditLogEntry): void | Promise<void>;
|
|
53
|
+
getEntries(transactionId: string): AuditLogEntry[] | Promise<AuditLogEntry[]>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Default in-memory audit log store. Entries are stored in memory and lost on restart.
|
|
57
|
+
* Suitable for development, testing, and short-lived processes.
|
|
58
|
+
*/
|
|
59
|
+
export declare class InMemoryAuditLogStore implements IAuditLogStore {
|
|
60
|
+
private entries_;
|
|
61
|
+
append(entry: AuditLogEntry): void;
|
|
62
|
+
getEntries(transactionId: string): AuditLogEntry[];
|
|
63
|
+
getAllEntries(): AuditLogEntry[];
|
|
64
|
+
clear(): void;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=audit-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/transaction/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,KAAK,EAAE,2BAA2B,CAAA;IAClC,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;IACrC,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;CAC9E;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAA0C;IAE1D,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMlC,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE;IAIlD,aAAa,IAAI,aAAa,EAAE;IAQhC,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryAuditLogStore = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default in-memory audit log store. Entries are stored in memory and lost on restart.
|
|
6
|
+
* Suitable for development, testing, and short-lived processes.
|
|
7
|
+
*/
|
|
8
|
+
class InMemoryAuditLogStore {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.entries_ = new Map();
|
|
11
|
+
}
|
|
12
|
+
append(entry) {
|
|
13
|
+
const existing = this.entries_.get(entry.transactionId) ?? [];
|
|
14
|
+
existing.push(entry);
|
|
15
|
+
this.entries_.set(entry.transactionId, existing);
|
|
16
|
+
}
|
|
17
|
+
getEntries(transactionId) {
|
|
18
|
+
return [...(this.entries_.get(transactionId) ?? [])];
|
|
19
|
+
}
|
|
20
|
+
getAllEntries() {
|
|
21
|
+
const all = [];
|
|
22
|
+
for (const entries of this.entries_.values()) {
|
|
23
|
+
all.push(...entries);
|
|
24
|
+
}
|
|
25
|
+
return all;
|
|
26
|
+
}
|
|
27
|
+
clear() {
|
|
28
|
+
this.entries_.clear();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.InMemoryAuditLogStore = InMemoryAuditLogStore;
|
|
32
|
+
//# sourceMappingURL=audit-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/transaction/audit-log.ts"],"names":[],"mappings":";;;AAyDA;;;GAGG;AACH,MAAa,qBAAqB;IAAlC;QACU,aAAQ,GAAiC,IAAI,GAAG,EAAE,CAAA;IAuB5D,CAAC;IArBC,MAAM,CAAC,KAAoB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;QAC7D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,UAAU,CAAC,aAAqB;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,aAAa;QACX,MAAM,GAAG,GAAoB,EAAE,CAAA;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;CACF;AAxBD,sDAwBC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for a circuit breaker protecting a workflow step.
|
|
3
|
+
*/
|
|
4
|
+
export type CircuitBreakerConfig = {
|
|
5
|
+
/** Number of consecutive failures before the circuit opens. */
|
|
6
|
+
threshold: number;
|
|
7
|
+
/** Time in milliseconds before the circuit transitions from open to half-open. */
|
|
8
|
+
resetAfterMs: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Circuit breaker state machine: CLOSED -> OPEN -> HALF_OPEN -> CLOSED/OPEN.
|
|
12
|
+
*/
|
|
13
|
+
export type CircuitState = "closed" | "open" | "half_open";
|
|
14
|
+
/**
|
|
15
|
+
* Interface for a circuit breaker store. Implement this to back the circuit
|
|
16
|
+
* breaker with Redis, a database, or any shared state.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* class RedisCircuitBreaker implements ICircuitBreaker {
|
|
21
|
+
* async getState(key: string) { ... }
|
|
22
|
+
* async recordSuccess(key: string) { ... }
|
|
23
|
+
* async recordFailure(key: string, config: CircuitBreakerConfig) { ... }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface ICircuitBreaker {
|
|
28
|
+
getState(key: string): CircuitState | Promise<CircuitState>;
|
|
29
|
+
recordSuccess(key: string): void | Promise<void>;
|
|
30
|
+
recordFailure(key: string, config: CircuitBreakerConfig): void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Default in-memory circuit breaker. Suitable for single-process deployments,
|
|
34
|
+
* development, and testing.
|
|
35
|
+
*/
|
|
36
|
+
export declare class InMemoryCircuitBreaker implements ICircuitBreaker {
|
|
37
|
+
private circuits_;
|
|
38
|
+
private getOrCreate;
|
|
39
|
+
getState(key: string): CircuitState;
|
|
40
|
+
/**
|
|
41
|
+
* Transition from open to half-open if enough time has passed.
|
|
42
|
+
*/
|
|
43
|
+
maybeTransition(key: string, config: CircuitBreakerConfig): CircuitState;
|
|
44
|
+
recordSuccess(key: string): void;
|
|
45
|
+
recordFailure(key: string, config: CircuitBreakerConfig): void;
|
|
46
|
+
clear(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/transaction/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC3D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,aAAa,CACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,oBAAoB,GAC3B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AAQD;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,SAAS,CAAuC;IAExD,OAAO,CAAC,WAAW;IASnB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;IASnC;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,YAAY;IAYxE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAS9D,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryCircuitBreaker = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default in-memory circuit breaker. Suitable for single-process deployments,
|
|
6
|
+
* development, and testing.
|
|
7
|
+
*/
|
|
8
|
+
class InMemoryCircuitBreaker {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.circuits_ = new Map();
|
|
11
|
+
}
|
|
12
|
+
getOrCreate(key) {
|
|
13
|
+
let entry = this.circuits_.get(key);
|
|
14
|
+
if (!entry) {
|
|
15
|
+
entry = { state: "closed", failures: 0, lastFailureAt: null };
|
|
16
|
+
this.circuits_.set(key, entry);
|
|
17
|
+
}
|
|
18
|
+
return entry;
|
|
19
|
+
}
|
|
20
|
+
getState(key) {
|
|
21
|
+
const entry = this.getOrCreate(key);
|
|
22
|
+
if (entry.state === "open" && entry.lastFailureAt) {
|
|
23
|
+
// This is checked externally via config.resetAfterMs
|
|
24
|
+
// Here we just return the raw state; the orchestrator handles transition
|
|
25
|
+
}
|
|
26
|
+
return entry.state;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Transition from open to half-open if enough time has passed.
|
|
30
|
+
*/
|
|
31
|
+
maybeTransition(key, config) {
|
|
32
|
+
const entry = this.getOrCreate(key);
|
|
33
|
+
if (entry.state === "open" &&
|
|
34
|
+
entry.lastFailureAt &&
|
|
35
|
+
Date.now() - entry.lastFailureAt >= config.resetAfterMs) {
|
|
36
|
+
entry.state = "half_open";
|
|
37
|
+
}
|
|
38
|
+
return entry.state;
|
|
39
|
+
}
|
|
40
|
+
recordSuccess(key) {
|
|
41
|
+
const entry = this.getOrCreate(key);
|
|
42
|
+
entry.state = "closed";
|
|
43
|
+
entry.failures = 0;
|
|
44
|
+
entry.lastFailureAt = null;
|
|
45
|
+
}
|
|
46
|
+
recordFailure(key, config) {
|
|
47
|
+
const entry = this.getOrCreate(key);
|
|
48
|
+
entry.failures++;
|
|
49
|
+
entry.lastFailureAt = Date.now();
|
|
50
|
+
if (entry.failures >= config.threshold) {
|
|
51
|
+
entry.state = "open";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
clear() {
|
|
55
|
+
this.circuits_.clear();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.InMemoryCircuitBreaker = InMemoryCircuitBreaker;
|
|
59
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/transaction/circuit-breaker.ts"],"names":[],"mappings":";;;AA2CA;;;GAGG;AACH,MAAa,sBAAsB;IAAnC;QACU,cAAS,GAA8B,IAAI,GAAG,EAAE,CAAA;IAsD1D,CAAC;IApDS,WAAW,CAAC,GAAW;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;YAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAClD,qDAAqD;YACrD,yEAAyE;QAC3E,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,GAAW,EAAE,MAA4B;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,IACE,KAAK,CAAC,KAAK,KAAK,MAAM;YACtB,KAAK,CAAC,aAAa;YACnB,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,EACvD,CAAC;YACD,KAAK,CAAC,KAAK,GAAG,WAAW,CAAA;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;QACtB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAA;QAClB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,MAA4B;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF;AAvDD,wDAuDC"}
|
|
@@ -31,6 +31,20 @@ export declare class SkipStepAlreadyFinishedError extends Error {
|
|
|
31
31
|
static isSkipStepAlreadyFinishedError(error: Error): error is SkipStepAlreadyFinishedError;
|
|
32
32
|
constructor(message?: string);
|
|
33
33
|
}
|
|
34
|
+
export declare class WorkflowVersionMismatchError extends Error {
|
|
35
|
+
currentVersion: string;
|
|
36
|
+
storedVersion: string;
|
|
37
|
+
static isWorkflowVersionMismatchError(error: Error): error is WorkflowVersionMismatchError;
|
|
38
|
+
constructor(currentVersion: string, storedVersion: string, message?: string);
|
|
39
|
+
}
|
|
40
|
+
export declare class CircuitOpenError extends Error {
|
|
41
|
+
static isCircuitOpenError(error: Error): error is CircuitOpenError;
|
|
42
|
+
constructor(stepAction: string);
|
|
43
|
+
}
|
|
44
|
+
export declare class RateLimitExceededError extends Error {
|
|
45
|
+
static isRateLimitExceededError(error: Error): error is RateLimitExceededError;
|
|
46
|
+
constructor(workflowId: string);
|
|
47
|
+
}
|
|
34
48
|
export declare class SkipCancelledExecutionError extends Error {
|
|
35
49
|
#private;
|
|
36
50
|
get __type(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"AAEA,cAAM,cAAe,SAAQ,KAAK;;gBAGpB,IAAI,KAAA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IAM1D,eAAe,IAAI,OAAO;CAG3B;AAED,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,MAAM,CAAC,2BAA2B,CAChC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,yBAAyB;gBAOzB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB;gBAMtD,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,2BAA4B,SAAQ,cAAc;IAC7D,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IACzD,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,uBAAuB;gBAOvB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,gCAAgC,CACrC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,8BAA8B;gBAO9B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,kBAAkB;gBAO1D,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,8BAA8B,CACnC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,4BAA4B;gBAO5B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;IAGpD,IAAI,MAAM,WAET;IAED,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM;CAI7B"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"AAEA,cAAM,cAAe,SAAQ,KAAK;;gBAGpB,IAAI,KAAA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IAM1D,eAAe,IAAI,OAAO;CAG3B;AAED,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,MAAM,CAAC,2BAA2B,CAChC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,yBAAyB;gBAOzB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB;gBAMtD,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,2BAA4B,SAAQ,cAAc;IAC7D,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IACzD,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,uBAAuB;gBAOvB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,gCAAgC,CACrC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,8BAA8B;gBAO9B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,kBAAkB;gBAO1D,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,8BAA8B,CACnC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,4BAA4B;gBAO5B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IAW5C,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,MAAM;IAX9B,MAAM,CAAC,8BAA8B,CACnC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,4BAA4B;gBAQ/B,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,MAAM;CASnB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB;gBAMtD,UAAU,EAAE,MAAM;CAI/B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,sBAAsB;gBAOtB,UAAU,EAAE,MAAM;CAI/B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;IAGpD,IAAI,MAAM,WAET;IAED,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM;CAI7B"}
|
|
@@ -12,7 +12,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
};
|
|
13
13
|
var _BaseStepErrror_stepResponse, _SkipCancelledExecutionError___type;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SkipCancelledExecutionError = exports.SkipStepAlreadyFinishedError = exports.SkipExecutionError = exports.NonSerializableCheckPointError = exports.TransactionTimeoutError = exports.TransactionStepTimeoutError = exports.SkipStepResponse = exports.PermanentStepFailureError = void 0;
|
|
15
|
+
exports.SkipCancelledExecutionError = exports.RateLimitExceededError = exports.CircuitOpenError = exports.WorkflowVersionMismatchError = exports.SkipStepAlreadyFinishedError = exports.SkipExecutionError = exports.NonSerializableCheckPointError = exports.TransactionTimeoutError = exports.TransactionStepTimeoutError = exports.SkipStepResponse = exports.PermanentStepFailureError = void 0;
|
|
16
16
|
const utils_1 = require("@acmekit/utils");
|
|
17
17
|
class BaseStepErrror extends Error {
|
|
18
18
|
constructor(name, message, stepResponse) {
|
|
@@ -98,6 +98,42 @@ class SkipStepAlreadyFinishedError extends Error {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
exports.SkipStepAlreadyFinishedError = SkipStepAlreadyFinishedError;
|
|
101
|
+
class WorkflowVersionMismatchError extends Error {
|
|
102
|
+
static isWorkflowVersionMismatchError(error) {
|
|
103
|
+
return (error instanceof WorkflowVersionMismatchError ||
|
|
104
|
+
error?.name === "WorkflowVersionMismatchError");
|
|
105
|
+
}
|
|
106
|
+
constructor(currentVersion, storedVersion, message) {
|
|
107
|
+
super(message ??
|
|
108
|
+
`Workflow version mismatch: stored "${storedVersion}" vs current "${currentVersion}". ` +
|
|
109
|
+
`Use migrations to handle version changes or set versionPolicy to "lenient".`);
|
|
110
|
+
this.currentVersion = currentVersion;
|
|
111
|
+
this.storedVersion = storedVersion;
|
|
112
|
+
this.name = "WorkflowVersionMismatchError";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.WorkflowVersionMismatchError = WorkflowVersionMismatchError;
|
|
116
|
+
class CircuitOpenError extends Error {
|
|
117
|
+
static isCircuitOpenError(error) {
|
|
118
|
+
return (error instanceof CircuitOpenError || error?.name === "CircuitOpenError");
|
|
119
|
+
}
|
|
120
|
+
constructor(stepAction) {
|
|
121
|
+
super(`Circuit breaker is open for step "${stepAction}"`);
|
|
122
|
+
this.name = "CircuitOpenError";
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.CircuitOpenError = CircuitOpenError;
|
|
126
|
+
class RateLimitExceededError extends Error {
|
|
127
|
+
static isRateLimitExceededError(error) {
|
|
128
|
+
return (error instanceof RateLimitExceededError ||
|
|
129
|
+
error?.name === "RateLimitExceededError");
|
|
130
|
+
}
|
|
131
|
+
constructor(workflowId) {
|
|
132
|
+
super(`Rate limit exceeded for workflow "${workflowId}"`);
|
|
133
|
+
this.name = "RateLimitExceededError";
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.RateLimitExceededError = RateLimitExceededError;
|
|
101
137
|
class SkipCancelledExecutionError extends Error {
|
|
102
138
|
get __type() {
|
|
103
139
|
return __classPrivateFieldGet(this, _SkipCancelledExecutionError___type, "f");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
export * from "./audit-log";
|
|
2
|
+
export * from "./circuit-breaker";
|
|
1
3
|
export * from "./datastore/abstract-storage";
|
|
2
4
|
export * from "./distributed-transaction";
|
|
3
5
|
export * from "./errors";
|
|
6
|
+
export * from "./metrics";
|
|
4
7
|
export * from "./orchestrator-builder";
|
|
8
|
+
export * from "./rate-limiter";
|
|
5
9
|
export * from "./transaction-orchestrator";
|
|
6
10
|
export * from "./transaction-step";
|
|
7
11
|
export * from "./types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA"}
|
|
@@ -14,10 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./audit-log"), exports);
|
|
18
|
+
__exportStar(require("./circuit-breaker"), exports);
|
|
17
19
|
__exportStar(require("./datastore/abstract-storage"), exports);
|
|
18
20
|
__exportStar(require("./distributed-transaction"), exports);
|
|
19
21
|
__exportStar(require("./errors"), exports);
|
|
22
|
+
__exportStar(require("./metrics"), exports);
|
|
20
23
|
__exportStar(require("./orchestrator-builder"), exports);
|
|
24
|
+
__exportStar(require("./rate-limiter"), exports);
|
|
21
25
|
__exportStar(require("./transaction-orchestrator"), exports);
|
|
22
26
|
__exportStar(require("./transaction-step"), exports);
|
|
23
27
|
__exportStar(require("./types"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA4C;AAC5C,4DAAyC;AACzC,2CAAwB;AACxB,yDAAsC;AACtC,6DAA0C;AAC1C,qDAAkC;AAClC,0CAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,oDAAiC;AACjC,+DAA4C;AAC5C,4DAAyC;AACzC,2CAAwB;AACxB,4CAAyB;AACzB,yDAAsC;AACtC,iDAA8B;AAC9B,6DAA0C;AAC1C,qDAAkC;AAClC,0CAAuB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics for an individual step execution.
|
|
3
|
+
*/
|
|
4
|
+
export type StepMetrics = {
|
|
5
|
+
workflowId: string;
|
|
6
|
+
transactionId: string;
|
|
7
|
+
stepId: string;
|
|
8
|
+
action: string;
|
|
9
|
+
type: "invoke" | "compensate";
|
|
10
|
+
status: "success" | "failure" | "skipped" | "timeout";
|
|
11
|
+
attempt: number;
|
|
12
|
+
startedAt: number;
|
|
13
|
+
completedAt: number;
|
|
14
|
+
durationMs: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Aggregated metrics for a complete workflow execution.
|
|
18
|
+
*/
|
|
19
|
+
export type WorkflowMetrics = {
|
|
20
|
+
workflowId: string;
|
|
21
|
+
transactionId: string;
|
|
22
|
+
status: "done" | "reverted" | "failed";
|
|
23
|
+
startedAt: number;
|
|
24
|
+
completedAt: number;
|
|
25
|
+
totalDurationMs: number;
|
|
26
|
+
stepCount: number;
|
|
27
|
+
compensationCount: number;
|
|
28
|
+
retryTotal: number;
|
|
29
|
+
steps: StepMetrics[];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Interface for collecting workflow and step metrics.
|
|
33
|
+
* Implement this interface to integrate with Prometheus, Datadog, or any monitoring system.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* class PrometheusMetricsCollector implements IMetricsCollector {
|
|
38
|
+
* recordStepMetrics(metrics: StepMetrics) {
|
|
39
|
+
* stepDurationHistogram.observe(
|
|
40
|
+
* { workflow: metrics.workflowId, step: metrics.action, status: metrics.status },
|
|
41
|
+
* metrics.durationMs / 1000
|
|
42
|
+
* )
|
|
43
|
+
* }
|
|
44
|
+
* recordWorkflowMetrics(metrics: WorkflowMetrics) {
|
|
45
|
+
* workflowDurationHistogram.observe(
|
|
46
|
+
* { workflow: metrics.workflowId, status: metrics.status },
|
|
47
|
+
* metrics.totalDurationMs / 1000
|
|
48
|
+
* )
|
|
49
|
+
* }
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export interface IMetricsCollector {
|
|
54
|
+
recordStepMetrics(metrics: StepMetrics): void;
|
|
55
|
+
recordWorkflowMetrics(metrics: WorkflowMetrics): void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Default in-memory metrics collector. Stores metrics in memory for inspection.
|
|
59
|
+
* Useful for development, testing, and lightweight deployments.
|
|
60
|
+
*/
|
|
61
|
+
export declare class InMemoryMetricsCollector implements IMetricsCollector {
|
|
62
|
+
private stepMetrics_;
|
|
63
|
+
private workflowMetrics_;
|
|
64
|
+
recordStepMetrics(metrics: StepMetrics): void;
|
|
65
|
+
recordWorkflowMetrics(metrics: WorkflowMetrics): void;
|
|
66
|
+
getStepMetrics(transactionId?: string): StepMetrics[];
|
|
67
|
+
getWorkflowMetrics(transactionId: string): WorkflowMetrics | undefined;
|
|
68
|
+
getAllWorkflowMetrics(): WorkflowMetrics[];
|
|
69
|
+
clear(): void;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/transaction/metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAA;IAC7B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACrD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7C,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;CACtD;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,gBAAgB,CAA0C;IAElE,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAI7C,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIrD,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAOrD,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAItE,qBAAqB,IAAI,eAAe,EAAE;IAI1C,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryMetricsCollector = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default in-memory metrics collector. Stores metrics in memory for inspection.
|
|
6
|
+
* Useful for development, testing, and lightweight deployments.
|
|
7
|
+
*/
|
|
8
|
+
class InMemoryMetricsCollector {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.stepMetrics_ = [];
|
|
11
|
+
this.workflowMetrics_ = new Map();
|
|
12
|
+
}
|
|
13
|
+
recordStepMetrics(metrics) {
|
|
14
|
+
this.stepMetrics_.push(metrics);
|
|
15
|
+
}
|
|
16
|
+
recordWorkflowMetrics(metrics) {
|
|
17
|
+
this.workflowMetrics_.set(metrics.transactionId, metrics);
|
|
18
|
+
}
|
|
19
|
+
getStepMetrics(transactionId) {
|
|
20
|
+
if (transactionId) {
|
|
21
|
+
return this.stepMetrics_.filter((m) => m.transactionId === transactionId);
|
|
22
|
+
}
|
|
23
|
+
return [...this.stepMetrics_];
|
|
24
|
+
}
|
|
25
|
+
getWorkflowMetrics(transactionId) {
|
|
26
|
+
return this.workflowMetrics_.get(transactionId);
|
|
27
|
+
}
|
|
28
|
+
getAllWorkflowMetrics() {
|
|
29
|
+
return [...this.workflowMetrics_.values()];
|
|
30
|
+
}
|
|
31
|
+
clear() {
|
|
32
|
+
this.stepMetrics_ = [];
|
|
33
|
+
this.workflowMetrics_.clear();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.InMemoryMetricsCollector = InMemoryMetricsCollector;
|
|
37
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/transaction/metrics.ts"],"names":[],"mappings":";;;AA2DA;;;GAGG;AACH,MAAa,wBAAwB;IAArC;QACU,iBAAY,GAAkB,EAAE,CAAA;QAChC,qBAAgB,GAAiC,IAAI,GAAG,EAAE,CAAA;IA6BpE,CAAC;IA3BC,iBAAiB,CAAC,OAAoB;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,qBAAqB,CAAC,OAAwB;QAC5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,cAAc,CAAC,aAAsB;QACnC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,CAAA;QAC3E,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC;IAED,kBAAkB,CAAC,aAAqB;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACjD,CAAC;IAED,qBAAqB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;CACF;AA/BD,4DA+BC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for workflow-level rate limiting.
|
|
3
|
+
*/
|
|
4
|
+
export type RateLimitConfig = {
|
|
5
|
+
/** Maximum number of executions allowed in the window. */
|
|
6
|
+
maxExecutions: number;
|
|
7
|
+
/** Rolling window duration in milliseconds. */
|
|
8
|
+
windowMs: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Interface for a rate limiter. Implement this to back rate limiting
|
|
12
|
+
* with Redis (sliding window), a database, or any shared state.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* class RedisRateLimiter implements IRateLimiter {
|
|
17
|
+
* async acquire(key: string, config: RateLimitConfig) {
|
|
18
|
+
* // Use ZRANGEBYSCORE + ZADD for sliding window
|
|
19
|
+
* return allowed
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export interface IRateLimiter {
|
|
25
|
+
/**
|
|
26
|
+
* Attempt to acquire a rate limit slot.
|
|
27
|
+
* Returns `true` if the execution is allowed, `false` if rate-limited.
|
|
28
|
+
*/
|
|
29
|
+
acquire(key: string, config: RateLimitConfig): boolean | Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Default in-memory rate limiter using a sliding window of timestamps.
|
|
33
|
+
* Suitable for single-process deployments, development, and testing.
|
|
34
|
+
*/
|
|
35
|
+
export declare class InMemoryRateLimiter implements IRateLimiter {
|
|
36
|
+
private windows_;
|
|
37
|
+
acquire(key: string, config: RateLimitConfig): boolean;
|
|
38
|
+
clear(): void;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/transaction/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CACL,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9B;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAmC;IAEnD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO;IAkBtD,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryRateLimiter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default in-memory rate limiter using a sliding window of timestamps.
|
|
6
|
+
* Suitable for single-process deployments, development, and testing.
|
|
7
|
+
*/
|
|
8
|
+
class InMemoryRateLimiter {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.windows_ = new Map();
|
|
11
|
+
}
|
|
12
|
+
acquire(key, config) {
|
|
13
|
+
const now = Date.now();
|
|
14
|
+
const cutoff = now - config.windowMs;
|
|
15
|
+
let timestamps = this.windows_.get(key) ?? [];
|
|
16
|
+
// Remove expired entries
|
|
17
|
+
timestamps = timestamps.filter((t) => t > cutoff);
|
|
18
|
+
if (timestamps.length >= config.maxExecutions) {
|
|
19
|
+
this.windows_.set(key, timestamps);
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
timestamps.push(now);
|
|
23
|
+
this.windows_.set(key, timestamps);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.windows_.clear();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.InMemoryRateLimiter = InMemoryRateLimiter;
|
|
31
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/transaction/rate-limiter.ts"],"names":[],"mappings":";;;AAmCA;;;GAGG;AACH,MAAa,mBAAmB;IAAhC;QACU,aAAQ,GAA0B,IAAI,GAAG,EAAE,CAAA;IAuBrD,CAAC;IArBC,OAAO,CAAC,GAAW,EAAE,MAAuB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAA;QAEpC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7C,yBAAyB;QACzB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;QAEjD,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;CACF;AAxBD,kDAwBC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { IAuditLogStore } from "./audit-log";
|
|
2
|
+
import { ICircuitBreaker } from "./circuit-breaker";
|
|
1
3
|
import { DistributedTransactionType } from "./distributed-transaction";
|
|
4
|
+
import { IMetricsCollector } from "./metrics";
|
|
5
|
+
import { IRateLimiter } from "./rate-limiter";
|
|
2
6
|
import { TransactionStep, TransactionStepHandler } from "./transaction-step";
|
|
3
7
|
import { StepFeatures, TransactionFlow, TransactionModelOptions, TransactionOptions, TransactionStepsDefinition } from "./types";
|
|
4
8
|
import { Context } from "@acmekit/types";
|
|
@@ -39,6 +43,32 @@ export declare class TransactionOrchestrator extends EventEmitter {
|
|
|
39
43
|
async: boolean;
|
|
40
44
|
idempotency_key: string;
|
|
41
45
|
}) => Promise<any>;
|
|
46
|
+
/**
|
|
47
|
+
* Optional metrics collector for recording step and workflow metrics.
|
|
48
|
+
* Set this to integrate with Prometheus, Datadog, or any monitoring system.
|
|
49
|
+
*/
|
|
50
|
+
static metricsCollector?: IMetricsCollector;
|
|
51
|
+
/**
|
|
52
|
+
* Optional audit log store for persisting workflow state transitions.
|
|
53
|
+
* Set this to store audit entries in a database, Redis stream, or external service.
|
|
54
|
+
*/
|
|
55
|
+
static auditLogStore?: IAuditLogStore;
|
|
56
|
+
/**
|
|
57
|
+
* Optional circuit breaker for protecting steps from repeated failures.
|
|
58
|
+
* Defaults to an InMemoryCircuitBreaker when a step has circuitBreaker config.
|
|
59
|
+
*/
|
|
60
|
+
static circuitBreaker?: ICircuitBreaker;
|
|
61
|
+
/**
|
|
62
|
+
* Optional rate limiter for throttling workflow executions.
|
|
63
|
+
* Set this to use Redis-backed or distributed rate limiting.
|
|
64
|
+
*/
|
|
65
|
+
static rateLimiter?: IRateLimiter;
|
|
66
|
+
private static appendAuditEntry;
|
|
67
|
+
/**
|
|
68
|
+
* Compute a simple hash of a workflow definition for version tracking.
|
|
69
|
+
* This uses the action names and their order as the version fingerprint.
|
|
70
|
+
*/
|
|
71
|
+
private static computeDefinitionHash;
|
|
42
72
|
constructor({ id, definition, options, isClone, }: {
|
|
43
73
|
id: string;
|
|
44
74
|
definition: TransactionStepsDefinition;
|
|
@@ -120,6 +150,7 @@ export declare class TransactionOrchestrator extends EventEmitter {
|
|
|
120
150
|
*/
|
|
121
151
|
cancelTransaction(transaction: DistributedTransactionType, options?: {
|
|
122
152
|
preventExecuteNext?: boolean;
|
|
153
|
+
reason?: string;
|
|
123
154
|
}): Promise<void>;
|
|
124
155
|
private parseFlowOptions;
|
|
125
156
|
private createTransactionFlow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-orchestrator.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction-orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,0BAA0B,EAG3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAEL,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACvB,kBAAkB,EAElB,0BAA0B,EAE3B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAWxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"transaction-orchestrator.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction-orchestrator.ts"],"names":[],"mappings":"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"}
|