@orbytautomation/engine 0.6.1 → 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.
Files changed (41) hide show
  1. package/dist/adapters/AdapterRegistry.d.ts.map +1 -1
  2. package/dist/adapters/AdapterRegistry.js +2 -1
  3. package/dist/adapters/AdapterRegistry.js.map +1 -1
  4. package/dist/adapters/builtins/CLIAdapter.d.ts.map +1 -1
  5. package/dist/adapters/builtins/CLIAdapter.js +6 -5
  6. package/dist/adapters/builtins/CLIAdapter.js.map +1 -1
  7. package/dist/core/OrbytEngine.d.ts +19 -0
  8. package/dist/core/OrbytEngine.d.ts.map +1 -1
  9. package/dist/core/OrbytEngine.js +35 -0
  10. package/dist/core/OrbytEngine.js.map +1 -1
  11. package/dist/execution/StepExecutor.d.ts.map +1 -1
  12. package/dist/execution/StepExecutor.js +11 -9
  13. package/dist/execution/StepExecutor.js.map +1 -1
  14. package/dist/execution/WorkflowExecutor.d.ts +6 -0
  15. package/dist/execution/WorkflowExecutor.d.ts.map +1 -1
  16. package/dist/execution/WorkflowExecutor.js +27 -5
  17. package/dist/execution/WorkflowExecutor.js.map +1 -1
  18. package/dist/scheduling/workers/workflow-worker.d.ts +14 -0
  19. package/dist/scheduling/workers/workflow-worker.d.ts.map +1 -0
  20. package/dist/scheduling/workers/workflow-worker.js +46 -0
  21. package/dist/scheduling/workers/workflow-worker.js.map +1 -0
  22. package/dist/storage/ExecutionStore.d.ts +102 -1
  23. package/dist/storage/ExecutionStore.d.ts.map +1 -1
  24. package/dist/storage/ExecutionStore.js +188 -1
  25. package/dist/storage/ExecutionStore.js.map +1 -1
  26. package/dist/storage/ScheduleStore.d.ts +154 -1
  27. package/dist/storage/ScheduleStore.d.ts.map +1 -1
  28. package/dist/storage/ScheduleStore.js +208 -1
  29. package/dist/storage/ScheduleStore.js.map +1 -1
  30. package/dist/storage/WorkflowStore.d.ts +82 -1
  31. package/dist/storage/WorkflowStore.d.ts.map +1 -1
  32. package/dist/storage/WorkflowStore.js +183 -1
  33. package/dist/storage/WorkflowStore.js.map +1 -1
  34. package/dist/storage/index.d.ts +3 -1
  35. package/dist/storage/index.d.ts.map +1 -1
  36. package/dist/storage/index.js +3 -4
  37. package/dist/storage/index.js.map +1 -1
  38. package/dist/types/core-types.d.ts +2 -0
  39. package/dist/types/core-types.d.ts.map +1 -1
  40. package/dist/types/core-types.js.map +1 -1
  41. 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: completedAt.getTime() - startedAt.getTime(),
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
- return this.buildResult(workflow, stepResults, status, startedAt, completedAt, plan, workflowError);
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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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Workflow Worker
3
+ *
4
+ * Node.js worker thread for processing scheduled/queued workflow jobs.
5
+ * Spawned by JobScheduler — one instance per worker pool slot.
6
+ *
7
+ * Protocol:
8
+ * Main → Worker: { type: 'execute', job: { id, workflowId, payload, metadata } }
9
+ * Worker → Main: { type: 'ready' }
10
+ * { type: 'completed', result: any }
11
+ * { type: 'failed', error: string }
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=workflow-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-worker.d.ts","sourceRoot":"","sources":["../../../src/scheduling/workers/workflow-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Workflow Worker
3
+ *
4
+ * Node.js worker thread for processing scheduled/queued workflow jobs.
5
+ * Spawned by JobScheduler — one instance per worker pool slot.
6
+ *
7
+ * Protocol:
8
+ * Main → Worker: { type: 'execute', job: { id, workflowId, payload, metadata } }
9
+ * Worker → Main: { type: 'ready' }
10
+ * { type: 'completed', result: any }
11
+ * { type: 'failed', error: string }
12
+ */
13
+ import { parentPort } from 'node:worker_threads';
14
+ if (!parentPort) {
15
+ throw new Error('workflow-worker must be run as a worker thread');
16
+ }
17
+ const port = parentPort;
18
+ // Signal ready to the scheduler
19
+ port.postMessage({ type: 'ready' });
20
+ port.on('message', async (message) => {
21
+ if (message.type !== 'execute' || !message.job) {
22
+ return;
23
+ }
24
+ const job = message.job;
25
+ try {
26
+ // Scheduled workflow execution is not yet implemented.
27
+ // The scheduler worker pool is reserved for future trigger-based execution.
28
+ // Direct engine.run() calls bypass this worker entirely.
29
+ port.postMessage({
30
+ type: 'completed',
31
+ result: {
32
+ jobId: job.id,
33
+ workflowId: job.workflowId,
34
+ status: 'skipped',
35
+ message: 'Scheduled execution not yet implemented',
36
+ },
37
+ });
38
+ }
39
+ catch (err) {
40
+ port.postMessage({
41
+ type: 'failed',
42
+ error: err instanceof Error ? err.message : String(err),
43
+ });
44
+ }
45
+ });
46
+ //# sourceMappingURL=workflow-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-worker.js","sourceRoot":"","sources":["../../../src/scheduling/workers/workflow-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,IAAI,GAAG,UAAU,CAAC;AAExB,gCAAgC;AAChC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoC,EAAE,EAAE;IAChE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,IAAI,CAAC;QACH,uDAAuD;QACvD,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,CAAC,WAAW,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE;gBACN,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,yCAAyC;aACnD;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,2 +1,103 @@
1
- export {};
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
- export {};
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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"}