@orbytautomation/engine 0.6.2 → 0.7.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.
- package/dist/adapters/AdapterRegistry.d.ts.map +1 -1
- package/dist/adapters/AdapterRegistry.js +2 -1
- package/dist/adapters/AdapterRegistry.js.map +1 -1
- package/dist/adapters/builtins/CLIAdapter.d.ts.map +1 -1
- package/dist/adapters/builtins/CLIAdapter.js +6 -5
- package/dist/adapters/builtins/CLIAdapter.js.map +1 -1
- package/dist/core/OrbytEngine.d.ts +19 -0
- package/dist/core/OrbytEngine.d.ts.map +1 -1
- package/dist/core/OrbytEngine.js +35 -0
- package/dist/core/OrbytEngine.js.map +1 -1
- package/dist/execution/StepExecutor.d.ts.map +1 -1
- package/dist/execution/StepExecutor.js +11 -9
- package/dist/execution/StepExecutor.js.map +1 -1
- package/dist/execution/WorkflowExecutor.d.ts +6 -0
- package/dist/execution/WorkflowExecutor.d.ts.map +1 -1
- package/dist/execution/WorkflowExecutor.js +27 -5
- package/dist/execution/WorkflowExecutor.js.map +1 -1
- package/dist/storage/ExecutionStore.d.ts +102 -1
- package/dist/storage/ExecutionStore.d.ts.map +1 -1
- package/dist/storage/ExecutionStore.js +188 -1
- package/dist/storage/ExecutionStore.js.map +1 -1
- package/dist/storage/ScheduleStore.d.ts +154 -1
- package/dist/storage/ScheduleStore.d.ts.map +1 -1
- package/dist/storage/ScheduleStore.js +208 -1
- package/dist/storage/ScheduleStore.js.map +1 -1
- package/dist/storage/WorkflowStore.d.ts +82 -1
- package/dist/storage/WorkflowStore.d.ts.map +1 -1
- package/dist/storage/WorkflowStore.js +183 -1
- package/dist/storage/WorkflowStore.js.map +1 -1
- package/dist/storage/index.d.ts +3 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +3 -4
- package/dist/storage/index.js.map +1 -1
- package/dist/types/core-types.d.ts +2 -0
- package/dist/types/core-types.d.ts.map +1 -1
- package/dist/types/core-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,9 @@ import { ContextStore } from '../context/ContextStore.js';
|
|
|
17
17
|
import { createEvent } from '../events/EngineEvents.js';
|
|
18
18
|
import { LoggerManager } from '../logging/LoggerManager.js';
|
|
19
19
|
import { EngineEventType } from '../types/core-types.js';
|
|
20
|
+
import { performance } from 'node:perf_hooks';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { ExecutionStore } from '../storage/ExecutionStore.js';
|
|
20
23
|
/**
|
|
21
24
|
* Workflow executor
|
|
22
25
|
*/
|
|
@@ -26,6 +29,7 @@ export class WorkflowExecutor {
|
|
|
26
29
|
contextStore;
|
|
27
30
|
eventBus;
|
|
28
31
|
hookManager;
|
|
32
|
+
stateDir = join(process.cwd(), '.orbyt', 'executions');
|
|
29
33
|
constructor(stepExecutor) {
|
|
30
34
|
this.stepExecutor = stepExecutor;
|
|
31
35
|
this.executionId = this.generateExecutionId();
|
|
@@ -42,6 +46,13 @@ export class WorkflowExecutor {
|
|
|
42
46
|
setHookManager(hookManager) {
|
|
43
47
|
this.hookManager = hookManager;
|
|
44
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Set the directory where execution state JSON files are written.
|
|
51
|
+
* Defaults to <cwd>/.orbyt/executions
|
|
52
|
+
*/
|
|
53
|
+
setStateDir(dir) {
|
|
54
|
+
this.stateDir = dir;
|
|
55
|
+
}
|
|
45
56
|
/**
|
|
46
57
|
* Execute a complete workflow
|
|
47
58
|
*
|
|
@@ -50,9 +61,15 @@ export class WorkflowExecutor {
|
|
|
50
61
|
* @returns Workflow execution result
|
|
51
62
|
*/
|
|
52
63
|
async execute(workflow, options = {}) {
|
|
64
|
+
// Regenerate execution ID for each run so concurrent/sequential runs are distinct
|
|
65
|
+
this.executionId = this.generateExecutionId();
|
|
53
66
|
const startedAt = new Date();
|
|
67
|
+
const workflowStart = performance.now();
|
|
54
68
|
const stepResults = new Map();
|
|
55
69
|
const workflowName = workflow.metadata?.name || workflow.name || 'unnamed';
|
|
70
|
+
// Initialise state store (best-effort — never throws)
|
|
71
|
+
const stateStore = new ExecutionStore(this.stateDir);
|
|
72
|
+
stateStore.begin(this.executionId, workflowName, startedAt);
|
|
56
73
|
// Log workflow execution started
|
|
57
74
|
LoggerManager.getLogger().workflowStarted(workflowName, {
|
|
58
75
|
executionId: this.executionId,
|
|
@@ -135,7 +152,9 @@ export class WorkflowExecutor {
|
|
|
135
152
|
await this.executeWorkflowPlan(workflow, plan, context, stepResults, options, stepMap);
|
|
136
153
|
}
|
|
137
154
|
const completedAt = new Date();
|
|
138
|
-
const result = this.buildResult(workflow, stepResults, 'success', startedAt, completedAt, plan);
|
|
155
|
+
const result = this.buildResult(workflow, stepResults, 'success', startedAt, completedAt, plan, undefined, Math.round(performance.now() - workflowStart));
|
|
156
|
+
// Persist final state
|
|
157
|
+
stateStore.finalize(this.executionId, 'completed', completedAt, Array.from(stepResults.values()), Math.round(performance.now() - workflowStart));
|
|
139
158
|
// Emit workflow.completed event
|
|
140
159
|
if (this.eventBus) {
|
|
141
160
|
await this.eventBus.emit(createEvent(EngineEventType.WORKFLOW_COMPLETED, {
|
|
@@ -168,7 +187,7 @@ export class WorkflowExecutor {
|
|
|
168
187
|
workflowName,
|
|
169
188
|
runId: this.executionId,
|
|
170
189
|
error: workflowError.message,
|
|
171
|
-
durationMs:
|
|
190
|
+
durationMs: Math.round(performance.now() - workflowStart),
|
|
172
191
|
}, {
|
|
173
192
|
workflowId: workflow.name || this.executionId,
|
|
174
193
|
runId: this.executionId,
|
|
@@ -178,7 +197,9 @@ export class WorkflowExecutor {
|
|
|
178
197
|
if (this.hookManager) {
|
|
179
198
|
await this.hookManager.runOnError(hookContext, workflowError);
|
|
180
199
|
}
|
|
181
|
-
|
|
200
|
+
// Persist final state
|
|
201
|
+
stateStore.finalize(this.executionId, status === 'timeout' ? 'timeout' : 'failed', completedAt, Array.from(stepResults.values()), Math.round(performance.now() - workflowStart), workflowError);
|
|
202
|
+
return this.buildResult(workflow, stepResults, status, startedAt, completedAt, plan, workflowError, Math.round(performance.now() - workflowStart));
|
|
182
203
|
}
|
|
183
204
|
}
|
|
184
205
|
/**
|
|
@@ -319,13 +340,14 @@ export class WorkflowExecutor {
|
|
|
319
340
|
/**
|
|
320
341
|
* Build workflow execution result
|
|
321
342
|
*/
|
|
322
|
-
buildResult(workflow, stepResults, status, startedAt, completedAt, plan, error) {
|
|
343
|
+
buildResult(workflow, stepResults, status, startedAt, completedAt, plan, error, durationMs) {
|
|
323
344
|
const results = Array.from(stepResults.values());
|
|
324
345
|
return {
|
|
325
346
|
workflowName: workflow.name || 'unnamed-workflow',
|
|
347
|
+
executionId: this.executionId,
|
|
326
348
|
status,
|
|
327
349
|
stepResults,
|
|
328
|
-
duration: completedAt.getTime() - startedAt.getTime(),
|
|
350
|
+
duration: durationMs ?? completedAt.getTime() - startedAt.getTime(),
|
|
329
351
|
startedAt,
|
|
330
352
|
completedAt,
|
|
331
353
|
error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutor.js","sourceRoot":"","sources":["../../src/execution/WorkflowExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowExecutor.js","sourceRoot":"","sources":["../../src/execution/WorkflowExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,103 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Execution Store
|
|
3
|
+
*
|
|
4
|
+
* Persists workflow execution state as JSON files under .orbyt/executions/.
|
|
5
|
+
*
|
|
6
|
+
* Lifecycle:
|
|
7
|
+
* begin() — called at workflow start; writes status:"running" immediately
|
|
8
|
+
* so a process crash is always visible in the file.
|
|
9
|
+
* stepUpdate() — called after each step completes; updates the file in real-time
|
|
10
|
+
* so partial progress is always observable.
|
|
11
|
+
* finalize() — called on workflow end; writes final status, summary, and duration.
|
|
12
|
+
*
|
|
13
|
+
* All methods are non-fatal (errors are swallowed) — the store must never
|
|
14
|
+
* interrupt actual workflow execution.
|
|
15
|
+
*
|
|
16
|
+
* @module storage
|
|
17
|
+
*/
|
|
18
|
+
import type { StepResult } from '../types/core-types.js';
|
|
19
|
+
export interface PersistedStepState {
|
|
20
|
+
/** Step identifier */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Execution status */
|
|
23
|
+
status: 'success' | 'failure' | 'skipped' | 'timeout' | 'running';
|
|
24
|
+
/** Elapsed duration in milliseconds (monotonic) */
|
|
25
|
+
duration: number;
|
|
26
|
+
/** ISO 8601 wall-clock start timestamp */
|
|
27
|
+
startedAt: string;
|
|
28
|
+
/** ISO 8601 wall-clock end timestamp */
|
|
29
|
+
finishedAt: string;
|
|
30
|
+
/** Number of attempts made (1 = no retry) */
|
|
31
|
+
attempts: number;
|
|
32
|
+
/** Error message if the step failed */
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ExecutionSummary {
|
|
36
|
+
totalSteps: number;
|
|
37
|
+
successfulSteps: number;
|
|
38
|
+
failedSteps: number;
|
|
39
|
+
skippedSteps: number;
|
|
40
|
+
timedOutSteps: number;
|
|
41
|
+
/** Total wall-time of the entire workflow in milliseconds */
|
|
42
|
+
totalDurationMs: number;
|
|
43
|
+
}
|
|
44
|
+
export interface PersistedExecution {
|
|
45
|
+
/** Unique execution identifier (e.g. exec-1773167099155-rd81x4y4q) */
|
|
46
|
+
executionId: string;
|
|
47
|
+
/** Workflow name */
|
|
48
|
+
workflow: string;
|
|
49
|
+
/** Current execution status */
|
|
50
|
+
status: 'running' | 'completed' | 'failed' | 'timeout';
|
|
51
|
+
/** ISO 8601 start timestamp */
|
|
52
|
+
startedAt: string;
|
|
53
|
+
/** ISO 8601 end timestamp (absent while running) */
|
|
54
|
+
finishedAt?: string;
|
|
55
|
+
/** Monotonic duration in ms (absent while running) */
|
|
56
|
+
totalDurationMs?: number;
|
|
57
|
+
/** Per-step results (updated in real-time) */
|
|
58
|
+
steps: PersistedStepState[];
|
|
59
|
+
/** Aggregate counts (populated on finalize) */
|
|
60
|
+
summary?: ExecutionSummary;
|
|
61
|
+
/** Top-level error message if the workflow failed */
|
|
62
|
+
error?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* File-based execution state store.
|
|
66
|
+
*
|
|
67
|
+
* One JSON file per execution run, stored in the configured directory.
|
|
68
|
+
* An in-memory cache avoids re-reading the file on every step update.
|
|
69
|
+
*/
|
|
70
|
+
export declare class ExecutionStore {
|
|
71
|
+
private readonly dir;
|
|
72
|
+
/** In-memory cache: executionId → current state */
|
|
73
|
+
private readonly cache;
|
|
74
|
+
constructor(dir: string);
|
|
75
|
+
/**
|
|
76
|
+
* Initialise the execution record with status "running".
|
|
77
|
+
* Creates the storage directory if it does not exist.
|
|
78
|
+
*/
|
|
79
|
+
begin(executionId: string, workflowName: string, startedAt: Date): void;
|
|
80
|
+
/**
|
|
81
|
+
* Update a single step's result in the persisted record.
|
|
82
|
+
* Called after each step completes so partial progress is always visible.
|
|
83
|
+
*/
|
|
84
|
+
stepUpdate(executionId: string, step: StepResult): void;
|
|
85
|
+
/**
|
|
86
|
+
* Write the final execution record with status, summary, and total duration.
|
|
87
|
+
* Deletes the in-memory cache entry after writing to free memory.
|
|
88
|
+
*/
|
|
89
|
+
finalize(executionId: string, status: 'completed' | 'failed' | 'timeout', finishedAt: Date, stepResults: StepResult[], totalDurationMs: number, error?: Error): void;
|
|
90
|
+
/**
|
|
91
|
+
* Read a persisted execution record by ID.
|
|
92
|
+
* Returns null if the record does not exist or cannot be read.
|
|
93
|
+
*/
|
|
94
|
+
read(executionId: string): PersistedExecution | null;
|
|
95
|
+
/**
|
|
96
|
+
* List all execution IDs present in the store, sorted newest-first by filename.
|
|
97
|
+
*/
|
|
98
|
+
list(): string[];
|
|
99
|
+
private _getOrLoad;
|
|
100
|
+
private _filePath;
|
|
101
|
+
private _write;
|
|
102
|
+
}
|
|
2
103
|
//# sourceMappingURL=ExecutionStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionStore.d.ts","sourceRoot":"","sources":["../../src/storage/ExecutionStore.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ExecutionStore.d.ts","sourceRoot":"","sources":["../../src/storage/ExecutionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAClE,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;gBAEnD,GAAG,EAAE,MAAM;IAMvB;;;OAGG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI;IAiBvE;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IA6BvD;;;OAGG;IACH,QAAQ,CACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,EAC1C,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,UAAU,EAAE,EACzB,eAAe,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAyCP;;;OAGG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAapD;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAehB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -1,2 +1,189 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Execution Store
|
|
3
|
+
*
|
|
4
|
+
* Persists workflow execution state as JSON files under .orbyt/executions/.
|
|
5
|
+
*
|
|
6
|
+
* Lifecycle:
|
|
7
|
+
* begin() — called at workflow start; writes status:"running" immediately
|
|
8
|
+
* so a process crash is always visible in the file.
|
|
9
|
+
* stepUpdate() — called after each step completes; updates the file in real-time
|
|
10
|
+
* so partial progress is always observable.
|
|
11
|
+
* finalize() — called on workflow end; writes final status, summary, and duration.
|
|
12
|
+
*
|
|
13
|
+
* All methods are non-fatal (errors are swallowed) — the store must never
|
|
14
|
+
* interrupt actual workflow execution.
|
|
15
|
+
*
|
|
16
|
+
* @module storage
|
|
17
|
+
*/
|
|
18
|
+
import { mkdirSync, writeFileSync, readFileSync, existsSync, readdirSync } from 'fs';
|
|
19
|
+
import { join, basename } from 'node:path';
|
|
20
|
+
// ─── ExecutionStore ───────────────────────────────────────────────────────────
|
|
21
|
+
/**
|
|
22
|
+
* File-based execution state store.
|
|
23
|
+
*
|
|
24
|
+
* One JSON file per execution run, stored in the configured directory.
|
|
25
|
+
* An in-memory cache avoids re-reading the file on every step update.
|
|
26
|
+
*/
|
|
27
|
+
export class ExecutionStore {
|
|
28
|
+
dir;
|
|
29
|
+
/** In-memory cache: executionId → current state */
|
|
30
|
+
cache = new Map();
|
|
31
|
+
constructor(dir) {
|
|
32
|
+
this.dir = dir;
|
|
33
|
+
}
|
|
34
|
+
// ─── Write API ─────────────────────────────────────────────────────────────
|
|
35
|
+
/**
|
|
36
|
+
* Initialise the execution record with status "running".
|
|
37
|
+
* Creates the storage directory if it does not exist.
|
|
38
|
+
*/
|
|
39
|
+
begin(executionId, workflowName, startedAt) {
|
|
40
|
+
try {
|
|
41
|
+
mkdirSync(this.dir, { recursive: true });
|
|
42
|
+
const state = {
|
|
43
|
+
executionId,
|
|
44
|
+
workflow: workflowName,
|
|
45
|
+
status: 'running',
|
|
46
|
+
startedAt: startedAt.toISOString(),
|
|
47
|
+
steps: [],
|
|
48
|
+
};
|
|
49
|
+
this.cache.set(executionId, state);
|
|
50
|
+
this._write(executionId, state);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Non-fatal
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Update a single step's result in the persisted record.
|
|
58
|
+
* Called after each step completes so partial progress is always visible.
|
|
59
|
+
*/
|
|
60
|
+
stepUpdate(executionId, step) {
|
|
61
|
+
try {
|
|
62
|
+
const state = this._getOrLoad(executionId);
|
|
63
|
+
if (!state)
|
|
64
|
+
return;
|
|
65
|
+
const entry = {
|
|
66
|
+
id: step.stepId,
|
|
67
|
+
status: step.status,
|
|
68
|
+
duration: step.duration,
|
|
69
|
+
startedAt: step.startedAt.toISOString(),
|
|
70
|
+
finishedAt: step.completedAt.toISOString(),
|
|
71
|
+
attempts: step.attempts,
|
|
72
|
+
...(step.error ? { error: step.error.message } : {}),
|
|
73
|
+
};
|
|
74
|
+
const idx = state.steps.findIndex(s => s.id === step.stepId);
|
|
75
|
+
if (idx === -1) {
|
|
76
|
+
state.steps.push(entry);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
state.steps[idx] = entry;
|
|
80
|
+
}
|
|
81
|
+
this.cache.set(executionId, state);
|
|
82
|
+
this._write(executionId, state);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Non-fatal
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Write the final execution record with status, summary, and total duration.
|
|
90
|
+
* Deletes the in-memory cache entry after writing to free memory.
|
|
91
|
+
*/
|
|
92
|
+
finalize(executionId, status, finishedAt, stepResults, totalDurationMs, error) {
|
|
93
|
+
try {
|
|
94
|
+
const state = this._getOrLoad(executionId) ?? {
|
|
95
|
+
executionId,
|
|
96
|
+
workflow: 'unknown',
|
|
97
|
+
status: 'running',
|
|
98
|
+
startedAt: finishedAt.toISOString(),
|
|
99
|
+
steps: [],
|
|
100
|
+
};
|
|
101
|
+
state.status = status;
|
|
102
|
+
state.finishedAt = finishedAt.toISOString();
|
|
103
|
+
state.totalDurationMs = totalDurationMs;
|
|
104
|
+
state.steps = stepResults.map(r => ({
|
|
105
|
+
id: r.stepId,
|
|
106
|
+
status: r.status,
|
|
107
|
+
duration: r.duration,
|
|
108
|
+
startedAt: r.startedAt.toISOString(),
|
|
109
|
+
finishedAt: r.completedAt.toISOString(),
|
|
110
|
+
attempts: r.attempts,
|
|
111
|
+
...(r.error ? { error: r.error.message } : {}),
|
|
112
|
+
}));
|
|
113
|
+
state.summary = {
|
|
114
|
+
totalSteps: stepResults.length,
|
|
115
|
+
successfulSteps: stepResults.filter(r => r.status === 'success').length,
|
|
116
|
+
failedSteps: stepResults.filter(r => r.status === 'failure').length,
|
|
117
|
+
skippedSteps: stepResults.filter(r => r.status === 'skipped').length,
|
|
118
|
+
timedOutSteps: stepResults.filter(r => r.status === 'timeout').length,
|
|
119
|
+
totalDurationMs,
|
|
120
|
+
};
|
|
121
|
+
if (error)
|
|
122
|
+
state.error = error.message;
|
|
123
|
+
this._write(executionId, state);
|
|
124
|
+
this.cache.delete(executionId); // Release memory — execution is done
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Non-fatal
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ─── Read API ──────────────────────────────────────────────────────────────
|
|
131
|
+
/**
|
|
132
|
+
* Read a persisted execution record by ID.
|
|
133
|
+
* Returns null if the record does not exist or cannot be read.
|
|
134
|
+
*/
|
|
135
|
+
read(executionId) {
|
|
136
|
+
try {
|
|
137
|
+
const cached = this.cache.get(executionId);
|
|
138
|
+
if (cached)
|
|
139
|
+
return { ...cached }; // Return a copy
|
|
140
|
+
const filePath = this._filePath(executionId);
|
|
141
|
+
if (!existsSync(filePath))
|
|
142
|
+
return null;
|
|
143
|
+
return JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* List all execution IDs present in the store, sorted newest-first by filename.
|
|
151
|
+
*/
|
|
152
|
+
list() {
|
|
153
|
+
try {
|
|
154
|
+
mkdirSync(this.dir, { recursive: true });
|
|
155
|
+
return readdirSync(this.dir)
|
|
156
|
+
.filter(f => f.endsWith('.json'))
|
|
157
|
+
.map(f => basename(f, '.json'))
|
|
158
|
+
.sort()
|
|
159
|
+
.reverse();
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// ─── Internal helpers ──────────────────────────────────────────────────────
|
|
166
|
+
_getOrLoad(executionId) {
|
|
167
|
+
const cached = this.cache.get(executionId);
|
|
168
|
+
if (cached)
|
|
169
|
+
return cached;
|
|
170
|
+
const filePath = this._filePath(executionId);
|
|
171
|
+
if (!existsSync(filePath))
|
|
172
|
+
return null;
|
|
173
|
+
try {
|
|
174
|
+
const state = JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
175
|
+
this.cache.set(executionId, state);
|
|
176
|
+
return state;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
_filePath(executionId) {
|
|
183
|
+
return join(this.dir, `${executionId}.json`);
|
|
184
|
+
}
|
|
185
|
+
_write(executionId, state) {
|
|
186
|
+
writeFileSync(this._filePath(executionId), JSON.stringify(state, null, 2), 'utf-8');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
2
189
|
//# sourceMappingURL=ExecutionStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionStore.js","sourceRoot":"","sources":["../../src/storage/ExecutionStore.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ExecutionStore.js","sourceRoot":"","sources":["../../src/storage/ExecutionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,155 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Store
|
|
3
|
+
*
|
|
4
|
+
* Persists workflow schedule state under .orbyt/schedules/.
|
|
5
|
+
* One JSON file per schedule; enables restart recovery so the scheduler
|
|
6
|
+
* can reload all known schedules without re-registration by callers.
|
|
7
|
+
*
|
|
8
|
+
* Layout:
|
|
9
|
+
* .orbyt/schedules/<scheduleId>.json
|
|
10
|
+
*
|
|
11
|
+
* Primary purposes:
|
|
12
|
+
* - Persist cron/interval schedules so they survive process restarts
|
|
13
|
+
* - Track last-run / next-run timestamps for missed-run recovery
|
|
14
|
+
* - Record consecutive error counts for circuit-breaker logic
|
|
15
|
+
*
|
|
16
|
+
* All methods are non-fatal (errors are swallowed) — the store must never
|
|
17
|
+
* interrupt the scheduler or workflow execution.
|
|
18
|
+
*
|
|
19
|
+
* @module storage
|
|
20
|
+
*/
|
|
21
|
+
import type { ScheduleStatus, ScheduleTriggerType } from '../types/core-types.js';
|
|
22
|
+
export interface PersistedSchedule {
|
|
23
|
+
/** Unique schedule identifier */
|
|
24
|
+
scheduleId: string;
|
|
25
|
+
/** Identifier of the workflow this schedule triggers */
|
|
26
|
+
workflowId: string;
|
|
27
|
+
/** Human-readable workflow name (for display only) */
|
|
28
|
+
workflowName: string;
|
|
29
|
+
/**
|
|
30
|
+
* Trigger type — covers all scheduling modalities:
|
|
31
|
+
* 'cron' — cron expression (cronExpression field required)
|
|
32
|
+
* 'interval' — fixed interval (intervalMs field required)
|
|
33
|
+
* 'once' — one-shot at a future time (nextRunAt used as fire time)
|
|
34
|
+
* 'event' — external event bus trigger (eventSource field required)
|
|
35
|
+
* 'webhook' — inbound HTTP call (webhookEndpoint + optional webhookSecret)
|
|
36
|
+
* 'manual' — user-triggered; stored for replay/audit history
|
|
37
|
+
*/
|
|
38
|
+
triggerType: ScheduleTriggerType;
|
|
39
|
+
/** Cron expression (required when triggerType is 'cron') */
|
|
40
|
+
cronExpression?: string;
|
|
41
|
+
/** Interval in milliseconds (required when triggerType is 'interval') */
|
|
42
|
+
intervalMs?: number;
|
|
43
|
+
/** Timezone for cron evaluation (default: UTC) */
|
|
44
|
+
timezone?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Event source identifier (required when triggerType is 'event').
|
|
47
|
+
* E.g. 'analytics.report.ready', 'billing.invoice.created'.
|
|
48
|
+
*/
|
|
49
|
+
eventSource?: string;
|
|
50
|
+
/** Optional filter expression evaluated against the event payload */
|
|
51
|
+
eventFilter?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Inbound webhook path / endpoint (required when triggerType is 'webhook').
|
|
54
|
+
* E.g. '/hooks/deploy' or 'https://hooks.example.com/deploy'.
|
|
55
|
+
*/
|
|
56
|
+
webhookEndpoint?: string;
|
|
57
|
+
/**
|
|
58
|
+
* HMAC secret used for payload signature verification.
|
|
59
|
+
* Stored as-is; callers should pass an already-encrypted value.
|
|
60
|
+
*/
|
|
61
|
+
webhookSecret?: string;
|
|
62
|
+
/** HTTP method expected on the webhook endpoint (default: POST) */
|
|
63
|
+
webhookMethod?: 'GET' | 'POST' | 'PUT' | 'PATCH';
|
|
64
|
+
/**
|
|
65
|
+
* Current schedule status.
|
|
66
|
+
* 'active' — running normally
|
|
67
|
+
* 'paused' — temporarily disabled (can be re-enabled)
|
|
68
|
+
* 'disabled' — permanently disabled
|
|
69
|
+
* 'expired' — end date passed or maxExecutions reached
|
|
70
|
+
*/
|
|
71
|
+
status: ScheduleStatus;
|
|
72
|
+
/** ISO 8601 timestamp of when this schedule was first created */
|
|
73
|
+
createdAt: string;
|
|
74
|
+
/** ISO 8601 timestamp of when this schedule was last updated */
|
|
75
|
+
updatedAt: string;
|
|
76
|
+
/** ISO 8601 timestamp of the last trigger fire */
|
|
77
|
+
lastRunAt?: string;
|
|
78
|
+
/** Result of the last execution */
|
|
79
|
+
lastStatus?: 'completed' | 'failed' | 'timeout';
|
|
80
|
+
/** ISO 8601 timestamp of the next scheduled trigger (cron/interval/once) */
|
|
81
|
+
nextRunAt?: string;
|
|
82
|
+
/** Hard stop date — schedule will not fire after this (ISO 8601) */
|
|
83
|
+
endDate?: string;
|
|
84
|
+
/** Maximum number of executions (undefined = unlimited) */
|
|
85
|
+
maxExecutions?: number;
|
|
86
|
+
/** Number of times the schedule has fired */
|
|
87
|
+
executionCount: number;
|
|
88
|
+
/** Consecutive error count — reset to 0 on success */
|
|
89
|
+
errorCount: number;
|
|
90
|
+
/** Error message from the most recent failure */
|
|
91
|
+
lastError?: string;
|
|
92
|
+
/** Static input data merged into each triggered execution */
|
|
93
|
+
input?: Record<string, any>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* File-based schedule state store.
|
|
97
|
+
*
|
|
98
|
+
* An in-memory cache avoids re-reading files on every access.
|
|
99
|
+
* The cache is always the source of truth for in-flight updates;
|
|
100
|
+
* the file acts as the durable record for restarts.
|
|
101
|
+
*/
|
|
102
|
+
export declare class ScheduleStore {
|
|
103
|
+
private readonly dir;
|
|
104
|
+
/** In-memory cache: scheduleId → current state */
|
|
105
|
+
private readonly cache;
|
|
106
|
+
constructor(dir: string);
|
|
107
|
+
/**
|
|
108
|
+
* Persist a schedule record.
|
|
109
|
+
* Creates the storage directory on first call.
|
|
110
|
+
* If the schedule already exists it is fully replaced.
|
|
111
|
+
*/
|
|
112
|
+
save(schedule: PersistedSchedule): void;
|
|
113
|
+
/**
|
|
114
|
+
* Record the outcome of a schedule trigger.
|
|
115
|
+
*
|
|
116
|
+
* - Updates `lastRunAt`, `lastStatus`, `nextRunAt`
|
|
117
|
+
* - Increments `executionCount`
|
|
118
|
+
* - On success: resets `errorCount` and clears `lastError`
|
|
119
|
+
* - On failure: increments `errorCount` and stores `lastError`
|
|
120
|
+
*/
|
|
121
|
+
updateLastRun(scheduleId: string, status: 'completed' | 'failed' | 'timeout', runAt: Date, nextRunAt?: Date, error?: string): void;
|
|
122
|
+
/**
|
|
123
|
+
* Mark a schedule as active.
|
|
124
|
+
* No-op if the schedule does not exist.
|
|
125
|
+
*/
|
|
126
|
+
enable(scheduleId: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Mark a schedule as paused — it will not fire until re-enabled.
|
|
129
|
+
* No-op if the schedule does not exist.
|
|
130
|
+
*/
|
|
131
|
+
disable(scheduleId: string): void;
|
|
132
|
+
/**
|
|
133
|
+
* Remove a schedule from both the cache and disk.
|
|
134
|
+
* Safe to call if the schedule does not exist.
|
|
135
|
+
*/
|
|
136
|
+
delete(scheduleId: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* Read a single schedule by ID.
|
|
139
|
+
* Returns null if not found.
|
|
140
|
+
*/
|
|
141
|
+
load(scheduleId: string): PersistedSchedule | null;
|
|
142
|
+
/**
|
|
143
|
+
* Return all persisted schedules, sorted by `createdAt` ascending.
|
|
144
|
+
*/
|
|
145
|
+
list(): PersistedSchedule[];
|
|
146
|
+
/**
|
|
147
|
+
* Return only schedules that are currently active.
|
|
148
|
+
*/
|
|
149
|
+
listEnabled(): PersistedSchedule[];
|
|
150
|
+
private _setStatus;
|
|
151
|
+
private _getOrLoad;
|
|
152
|
+
private _filePath;
|
|
153
|
+
private _write;
|
|
154
|
+
}
|
|
2
155
|
//# sourceMappingURL=ScheduleStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleStore.d.ts","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScheduleStore.d.ts","sourceRoot":"","sources":["../../src/storage/ScheduleStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,WAAW,EAAE,mBAAmB,CAAC;IAGjC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAGjD;;;;;;OAMG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAGlB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAID;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;gBAElD,GAAG,EAAE,MAAM;IAMvB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAcvC;;;;;;;OAOG;IACH,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,EAC1C,KAAK,EAAE,IAAI,EACX,SAAS,CAAC,EAAE,IAAI,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;IA0BP;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjC;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAYhC;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAalD;;OAEG;IACH,IAAI,IAAI,iBAAiB,EAAE;IAoB3B;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAMlC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;CAGf"}
|