@elaraai/e3-core 0.0.1-beta.0 → 0.0.2-beta.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/README.md +34 -7
- package/dist/src/dataflow.d.ts +41 -1
- package/dist/src/dataflow.d.ts.map +1 -1
- package/dist/src/dataflow.js +165 -36
- package/dist/src/dataflow.js.map +1 -1
- package/dist/src/errors.d.ts +39 -1
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +34 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/executions.d.ts +14 -1
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +60 -10
- package/dist/src/executions.js.map +1 -1
- package/dist/src/formats.d.ts +1 -1
- package/dist/src/formats.js +1 -1
- package/dist/src/gc.d.ts +1 -1
- package/dist/src/gc.js +3 -2
- package/dist/src/gc.js.map +1 -1
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/objects.d.ts +1 -1
- package/dist/src/objects.js +1 -1
- package/dist/src/packages.d.ts +9 -1
- package/dist/src/packages.d.ts.map +1 -1
- package/dist/src/packages.js +16 -1
- package/dist/src/packages.js.map +1 -1
- package/dist/src/repository.d.ts +1 -1
- package/dist/src/repository.js +1 -1
- package/dist/src/tasks.d.ts +1 -1
- package/dist/src/tasks.js +1 -1
- package/dist/src/test-helpers.d.ts +1 -1
- package/dist/src/test-helpers.js +1 -1
- package/dist/src/trees.d.ts +24 -2
- package/dist/src/trees.d.ts.map +1 -1
- package/dist/src/trees.js +31 -2
- package/dist/src/trees.js.map +1 -1
- package/dist/src/workspaceLock.d.ts +67 -0
- package/dist/src/workspaceLock.d.ts.map +1 -0
- package/dist/src/workspaceLock.js +217 -0
- package/dist/src/workspaceLock.js.map +1 -0
- package/dist/src/workspaceStatus.d.ts +126 -0
- package/dist/src/workspaceStatus.d.ts.map +1 -0
- package/dist/src/workspaceStatus.js +352 -0
- package/dist/src/workspaceStatus.js.map +1 -0
- package/dist/src/workspaces.d.ts +37 -3
- package/dist/src/workspaces.d.ts.map +1 -1
- package/dist/src/workspaces.js +56 -22
- package/dist/src/workspaces.js.map +1 -1
- package/package.json +11 -2
package/README.md
CHANGED
|
@@ -60,17 +60,44 @@ import { setTaskRef, deleteTaskRef, listTaskRefs, resolveToTaskId } from '@elara
|
|
|
60
60
|
await setTaskRef(repoPath, 'my-task', taskId);
|
|
61
61
|
const taskId = await resolveToTaskId(repoPath, 'my-task');
|
|
62
62
|
```
|
|
63
|
+
## License
|
|
64
|
+
|
|
65
|
+
BSL 1.1. See [LICENSE.md](./LICENSE.md).
|
|
66
|
+
|
|
67
|
+
### Ecosystem
|
|
68
|
+
|
|
69
|
+
- **[East Node](https://github.com/elaraai/east-node)**: Node.js platform functions for I/O, databases, and system operations. Connect East programs to filesystems, SQL/NoSQL databases, cloud storage, and network services.
|
|
70
|
+
- [@elaraai/east-node-std](https://www.npmjs.com/package/@elaraai/east-node-std): Filesystem, console, HTTP fetch, crypto, random distributions, timestamps
|
|
71
|
+
- [@elaraai/east-node-io](https://www.npmjs.com/package/@elaraai/east-node-io): SQLite, PostgreSQL, MySQL, MongoDB, S3, FTP, SFTP
|
|
72
|
+
- [@elaraai/east-node-cli](https://www.npmjs.com/package/@elaraai/east-node-cli): CLI for running East IR programs in Node.js
|
|
63
73
|
|
|
64
|
-
|
|
74
|
+
- **[East Python](https://github.com/elaraai/east-py)**: Python runtime and platform functions for data science and machine learning. Execute East programs with access to optimization solvers, gradient boosting, neural networks, and model explainability.
|
|
75
|
+
- [@elaraai/east-py-datascience](https://www.npmjs.com/package/@elaraai/east-py-datascience): TypeScript types for optimization, gradient boosting, neural networks, explainability
|
|
65
76
|
|
|
66
|
-
- **[
|
|
67
|
-
-
|
|
68
|
-
-
|
|
77
|
+
- **[East UI](https://github.com/elaraai/east-ui)**: East types and expressions for building dashboards and interactive layouts. Define UIs as data structures that render consistently across React, web, and other environments.
|
|
78
|
+
- [@elaraai/east-ui](https://www.npmjs.com/package/@elaraai/east-ui): 50+ typed UI components for layouts, forms, charts, tables, dialogs
|
|
79
|
+
- [@elaraai/east-ui-components](https://www.npmjs.com/package/@elaraai/east-ui-components): React renderer with Chakra UI styling
|
|
80
|
+
|
|
81
|
+
- **[e3 - East Execution Engine](https://github.com/elaraai/e3)**: Durable execution engine for running East pipelines at scale. Features Git-like content-addressable storage, automatic memoization, task queuing, and real-time monitoring.
|
|
82
|
+
- [@elaraai/e3](https://www.npmjs.com/package/@elaraai/e3): SDK for authoring e3 packages with typed tasks and pipelines
|
|
83
|
+
- [@elaraai/e3-core](https://www.npmjs.com/package/@elaraai/e3-core): Git-like object store, task queue, result caching
|
|
84
|
+
- [@elaraai/e3-types](https://www.npmjs.com/package/@elaraai/e3-types): Shared type definitions for e3 packages
|
|
85
|
+
- [@elaraai/e3-cli](https://www.npmjs.com/package/@elaraai/e3-cli): `e3 init`, `e3 run`, `e3 logs` commands for managing and monitoring tasks
|
|
86
|
+
- [@elaraai/e3-api-client](https://www.npmjs.com/package/@elaraai/e3-api-client): HTTP client for remote e3 servers
|
|
87
|
+
- [@elaraai/e3-api-server](https://www.npmjs.com/package/@elaraai/e3-api-server): REST API server for e3 repositories
|
|
88
|
+
|
|
89
|
+
## Links
|
|
90
|
+
|
|
91
|
+
- [East Language](https://github.com/elaraai/east)
|
|
92
|
+
- [East Python Runtime](https://github.com/elaraai/east-py)
|
|
93
|
+
- [Elara AI](https://elaraai.com/)
|
|
94
|
+
- [Issues](https://github.com/elaraai/e3/issues)
|
|
95
|
+
- support@elara.ai
|
|
69
96
|
|
|
70
97
|
## About Elara
|
|
71
98
|
|
|
72
|
-
|
|
99
|
+
East is developed by [Elara AI Pty Ltd](https://elaraai.com/), an AI-powered platform that creates economic digital twins of businesses that optimize performance. Elara combines business objectives, decisions and data to help organizations make data-driven decisions across operations, purchasing, sales and customer engagement, and project and investment planning. East powers the computational layer of Elara solutions, enabling the expression of complex business logic and data in a simple, type-safe and portable language.
|
|
73
100
|
|
|
74
|
-
|
|
101
|
+
---
|
|
75
102
|
|
|
76
|
-
|
|
103
|
+
*Developed by [Elara AI Pty Ltd](https://elaraai.com/)*
|
package/dist/src/dataflow.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
*
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
+
import { type WorkspaceLockHandle } from './workspaceLock.js';
|
|
5
6
|
/**
|
|
6
7
|
* Result of executing a single task in the dataflow.
|
|
7
8
|
*/
|
|
@@ -48,6 +49,22 @@ export interface DataflowOptions {
|
|
|
48
49
|
force?: boolean;
|
|
49
50
|
/** Filter to run only specific task(s) by exact name */
|
|
50
51
|
filter?: string;
|
|
52
|
+
/**
|
|
53
|
+
* External workspace lock to use. If provided, the caller is responsible
|
|
54
|
+
* for releasing the lock after execution. If not provided, dataflowExecute
|
|
55
|
+
* will acquire and release a lock internally.
|
|
56
|
+
*
|
|
57
|
+
* Use an external lock when you need to hold the lock across multiple
|
|
58
|
+
* operations (e.g., API server that cancels and restarts dataflow on writes).
|
|
59
|
+
*/
|
|
60
|
+
lock?: WorkspaceLockHandle;
|
|
61
|
+
/**
|
|
62
|
+
* AbortSignal for cancellation. When aborted:
|
|
63
|
+
* - No new tasks will be started
|
|
64
|
+
* - Running tasks will be killed (SIGTERM, then SIGKILL)
|
|
65
|
+
* - DataflowAbortedError will be thrown with partial results
|
|
66
|
+
*/
|
|
67
|
+
signal?: AbortSignal;
|
|
51
68
|
/** Callback when a task starts */
|
|
52
69
|
onTaskStart?: (name: string) => void;
|
|
53
70
|
/** Callback when a task completes */
|
|
@@ -64,16 +81,39 @@ export interface DataflowOptions {
|
|
|
64
81
|
* the concurrency limit. On failure, no new tasks are launched but
|
|
65
82
|
* running tasks are allowed to complete.
|
|
66
83
|
*
|
|
84
|
+
* Acquires an exclusive lock on the workspace for the duration of execution
|
|
85
|
+
* to prevent concurrent modifications. If options.lock is provided, uses that
|
|
86
|
+
* lock instead (caller is responsible for releasing it).
|
|
87
|
+
*
|
|
67
88
|
* @param repoPath - Path to .e3 repository
|
|
68
89
|
* @param ws - Workspace name
|
|
69
90
|
* @param options - Execution options
|
|
70
91
|
* @returns Result of the dataflow execution
|
|
92
|
+
* @throws {WorkspaceLockError} If workspace is locked by another process
|
|
71
93
|
* @throws {WorkspaceNotFoundError} If workspace doesn't exist
|
|
72
94
|
* @throws {WorkspaceNotDeployedError} If workspace has no package deployed
|
|
73
95
|
* @throws {TaskNotFoundError} If filter specifies a task that doesn't exist
|
|
74
96
|
* @throws {DataflowError} If execution fails for other reasons
|
|
75
97
|
*/
|
|
76
98
|
export declare function dataflowExecute(repoPath: string, ws: string, options?: DataflowOptions): Promise<DataflowResult>;
|
|
99
|
+
/**
|
|
100
|
+
* Start dataflow execution in the background (non-blocking).
|
|
101
|
+
*
|
|
102
|
+
* Returns a promise immediately without awaiting execution. The lock is
|
|
103
|
+
* released automatically when execution completes.
|
|
104
|
+
*
|
|
105
|
+
* @param repoPath - Path to .e3 repository
|
|
106
|
+
* @param ws - Workspace name
|
|
107
|
+
* @param options - Execution options (lock must be provided)
|
|
108
|
+
* @returns Promise that resolves when execution completes
|
|
109
|
+
* @throws {WorkspaceNotFoundError} If workspace doesn't exist
|
|
110
|
+
* @throws {WorkspaceNotDeployedError} If workspace has no package deployed
|
|
111
|
+
* @throws {TaskNotFoundError} If filter specifies a task that doesn't exist
|
|
112
|
+
* @throws {DataflowError} If execution fails for other reasons
|
|
113
|
+
*/
|
|
114
|
+
export declare function dataflowStart(repoPath: string, ws: string, options: DataflowOptions & {
|
|
115
|
+
lock: WorkspaceLockHandle;
|
|
116
|
+
}): Promise<DataflowResult>;
|
|
77
117
|
/**
|
|
78
118
|
* Get the dependency graph for a workspace (for visualization/debugging).
|
|
79
119
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/dataflow.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/dataflow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmDH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AA2E5B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAClD,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kCAAkC;IAClC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,qCAAqC;IACrC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvD,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAqHD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAazB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACvD,OAAO,CAAC,cAAc,CAAC,CAGzB;AAmVD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IACT,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,CAAC;CACJ,CAAC,CA0CD"}
|
package/dist/src/dataflow.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
*
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Dataflow execution for e3 workspaces.
|
|
@@ -13,18 +13,71 @@
|
|
|
13
13
|
* 2. Compute reverse dependencies (which tasks depend on each output)
|
|
14
14
|
* 3. Initialize ready queue with tasks whose inputs are all assigned
|
|
15
15
|
* 4. Execute tasks from ready queue, respecting concurrency limit
|
|
16
|
-
* 5. On task completion,
|
|
16
|
+
* 5. On task completion, queue workspace update then check dependents for readiness
|
|
17
17
|
* 6. On failure, stop launching new tasks but wait for running ones
|
|
18
|
+
*
|
|
19
|
+
* IMPORTANT: Workspace state updates are serialized through an async queue to
|
|
20
|
+
* prevent race conditions when multiple tasks complete concurrently. Each task's
|
|
21
|
+
* output is written to the workspace and dependents are notified only after the
|
|
22
|
+
* write completes, ensuring downstream tasks see consistent state.
|
|
18
23
|
*/
|
|
19
24
|
import { decodeBeast2For } from '@elaraai/east';
|
|
20
25
|
import { PackageObjectType, TaskObjectType, WorkspaceStateType, pathToString, } from '@elaraai/e3-types';
|
|
21
26
|
import { objectRead } from './objects.js';
|
|
22
27
|
import { taskExecute, executionGetOutput, inputsHash, } from './executions.js';
|
|
23
28
|
import { workspaceGetDatasetHash, workspaceSetDatasetByHash, } from './trees.js';
|
|
24
|
-
import { E3Error, WorkspaceNotFoundError, WorkspaceNotDeployedError, TaskNotFoundError, DataflowError, isNotFoundError, } from './errors.js';
|
|
29
|
+
import { E3Error, WorkspaceNotFoundError, WorkspaceNotDeployedError, TaskNotFoundError, DataflowError, DataflowAbortedError, isNotFoundError, } from './errors.js';
|
|
30
|
+
import { acquireWorkspaceLock, } from './workspaceLock.js';
|
|
25
31
|
import * as fs from 'fs/promises';
|
|
26
32
|
import * as path from 'path';
|
|
27
33
|
// =============================================================================
|
|
34
|
+
// Async Mutex for Workspace Updates
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Simple async mutex to serialize workspace state updates.
|
|
38
|
+
*
|
|
39
|
+
* When multiple tasks complete concurrently, their workspace writes must be
|
|
40
|
+
* serialized to prevent race conditions (read-modify-write on the workspace
|
|
41
|
+
* root hash). This mutex ensures only one update runs at a time.
|
|
42
|
+
*/
|
|
43
|
+
class AsyncMutex {
|
|
44
|
+
queue = [];
|
|
45
|
+
locked = false;
|
|
46
|
+
/**
|
|
47
|
+
* Acquire the mutex, execute the callback, then release.
|
|
48
|
+
* If the mutex is already held, waits until it's available.
|
|
49
|
+
*/
|
|
50
|
+
async runExclusive(fn) {
|
|
51
|
+
await this.acquire();
|
|
52
|
+
try {
|
|
53
|
+
return await fn();
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
this.release();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
acquire() {
|
|
60
|
+
return new Promise((resolve) => {
|
|
61
|
+
if (!this.locked) {
|
|
62
|
+
this.locked = true;
|
|
63
|
+
resolve();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.queue.push(resolve);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
release() {
|
|
71
|
+
const next = this.queue.shift();
|
|
72
|
+
if (next) {
|
|
73
|
+
next();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.locked = false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// =============================================================================
|
|
28
81
|
// Workspace State Reader
|
|
29
82
|
// =============================================================================
|
|
30
83
|
/**
|
|
@@ -126,16 +179,57 @@ async function buildDependencyGraph(repoPath, ws) {
|
|
|
126
179
|
* the concurrency limit. On failure, no new tasks are launched but
|
|
127
180
|
* running tasks are allowed to complete.
|
|
128
181
|
*
|
|
182
|
+
* Acquires an exclusive lock on the workspace for the duration of execution
|
|
183
|
+
* to prevent concurrent modifications. If options.lock is provided, uses that
|
|
184
|
+
* lock instead (caller is responsible for releasing it).
|
|
185
|
+
*
|
|
129
186
|
* @param repoPath - Path to .e3 repository
|
|
130
187
|
* @param ws - Workspace name
|
|
131
188
|
* @param options - Execution options
|
|
132
189
|
* @returns Result of the dataflow execution
|
|
190
|
+
* @throws {WorkspaceLockError} If workspace is locked by another process
|
|
133
191
|
* @throws {WorkspaceNotFoundError} If workspace doesn't exist
|
|
134
192
|
* @throws {WorkspaceNotDeployedError} If workspace has no package deployed
|
|
135
193
|
* @throws {TaskNotFoundError} If filter specifies a task that doesn't exist
|
|
136
194
|
* @throws {DataflowError} If execution fails for other reasons
|
|
137
195
|
*/
|
|
138
196
|
export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
197
|
+
// Acquire lock if not provided externally
|
|
198
|
+
const externalLock = options.lock;
|
|
199
|
+
const lock = externalLock ?? await acquireWorkspaceLock(repoPath, ws);
|
|
200
|
+
try {
|
|
201
|
+
return await dataflowExecuteWithLock(repoPath, ws, options);
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
// Only release the lock if we acquired it internally
|
|
205
|
+
if (!externalLock) {
|
|
206
|
+
await lock.release();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Start dataflow execution in the background (non-blocking).
|
|
212
|
+
*
|
|
213
|
+
* Returns a promise immediately without awaiting execution. The lock is
|
|
214
|
+
* released automatically when execution completes.
|
|
215
|
+
*
|
|
216
|
+
* @param repoPath - Path to .e3 repository
|
|
217
|
+
* @param ws - Workspace name
|
|
218
|
+
* @param options - Execution options (lock must be provided)
|
|
219
|
+
* @returns Promise that resolves when execution completes
|
|
220
|
+
* @throws {WorkspaceNotFoundError} If workspace doesn't exist
|
|
221
|
+
* @throws {WorkspaceNotDeployedError} If workspace has no package deployed
|
|
222
|
+
* @throws {TaskNotFoundError} If filter specifies a task that doesn't exist
|
|
223
|
+
* @throws {DataflowError} If execution fails for other reasons
|
|
224
|
+
*/
|
|
225
|
+
export function dataflowStart(repoPath, ws, options) {
|
|
226
|
+
return dataflowExecuteWithLock(repoPath, ws, options)
|
|
227
|
+
.finally(() => options.lock.release());
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Internal: Execute dataflow with lock already held.
|
|
231
|
+
*/
|
|
232
|
+
async function dataflowExecuteWithLock(repoPath, ws, options) {
|
|
139
233
|
const startTime = Date.now();
|
|
140
234
|
const concurrency = options.concurrency ?? 4;
|
|
141
235
|
let taskNodes;
|
|
@@ -168,6 +262,18 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
168
262
|
let failed = 0;
|
|
169
263
|
let skipped = 0;
|
|
170
264
|
let hasFailure = false;
|
|
265
|
+
let aborted = false;
|
|
266
|
+
// Check for abort signal
|
|
267
|
+
const checkAborted = () => {
|
|
268
|
+
if (options.signal?.aborted && !aborted) {
|
|
269
|
+
aborted = true;
|
|
270
|
+
}
|
|
271
|
+
return aborted;
|
|
272
|
+
};
|
|
273
|
+
// Mutex to serialize workspace state updates.
|
|
274
|
+
// When multiple tasks complete concurrently, their writes to the workspace
|
|
275
|
+
// must be serialized to prevent lost updates (read-modify-write race).
|
|
276
|
+
const workspaceUpdateMutex = new AsyncMutex();
|
|
171
277
|
// Ready queue: tasks with all dependencies resolved
|
|
172
278
|
const readyQueue = [];
|
|
173
279
|
const completed = new Set();
|
|
@@ -212,7 +318,7 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
212
318
|
}
|
|
213
319
|
return cachedOutputHash;
|
|
214
320
|
}
|
|
215
|
-
// Execute a single task
|
|
321
|
+
// Execute a single task (does NOT write to workspace - caller must do that)
|
|
216
322
|
async function executeTask(taskName) {
|
|
217
323
|
const node = taskNodes.get(taskName);
|
|
218
324
|
const taskStartTime = Date.now();
|
|
@@ -236,11 +342,12 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
236
342
|
// Execute the task
|
|
237
343
|
const execOptions = {
|
|
238
344
|
force: options.force,
|
|
345
|
+
signal: options.signal,
|
|
239
346
|
onStdout: options.onStdout ? (data) => options.onStdout(taskName, data) : undefined,
|
|
240
347
|
onStderr: options.onStderr ? (data) => options.onStderr(taskName, data) : undefined,
|
|
241
348
|
};
|
|
242
349
|
const result = await taskExecute(repoPath, node.hash, inputHashes, execOptions);
|
|
243
|
-
// Build task result
|
|
350
|
+
// Build task result (NOTE: workspace update happens later, in mutex-protected section)
|
|
244
351
|
const taskResult = {
|
|
245
352
|
name: taskName,
|
|
246
353
|
cached: result.cached,
|
|
@@ -254,9 +361,9 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
254
361
|
taskResult.exitCode = result.exitCode ?? undefined;
|
|
255
362
|
taskResult.error = result.error ?? undefined;
|
|
256
363
|
}
|
|
257
|
-
//
|
|
364
|
+
// Pass output hash to caller for workspace update (if successful)
|
|
258
365
|
if (result.state === 'success' && result.outputHash) {
|
|
259
|
-
|
|
366
|
+
taskResult.outputHash = result.outputHash;
|
|
260
367
|
}
|
|
261
368
|
return taskResult;
|
|
262
369
|
}
|
|
@@ -311,50 +418,66 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
311
418
|
if (readyQueue.length === 0 && runningPromises.size === 0) {
|
|
312
419
|
break;
|
|
313
420
|
}
|
|
314
|
-
// Launch tasks up to concurrency limit if no failure
|
|
315
|
-
while (!hasFailure && readyQueue.length > 0 && runningPromises.size < concurrency) {
|
|
421
|
+
// Launch tasks up to concurrency limit if no failure and not aborted
|
|
422
|
+
while (!hasFailure && !checkAborted() && readyQueue.length > 0 && runningPromises.size < concurrency) {
|
|
316
423
|
const taskName = readyQueue.shift();
|
|
317
424
|
if (completed.has(taskName) || inProgress.has(taskName))
|
|
318
425
|
continue;
|
|
319
426
|
// Check if there's a valid cached execution for current inputs
|
|
320
427
|
const cachedOutputHash = await getCachedOutput(taskName);
|
|
321
428
|
if (cachedOutputHash !== null && !options.force) {
|
|
322
|
-
// Valid cached execution exists for current inputs
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
429
|
+
// Valid cached execution exists for current inputs.
|
|
430
|
+
// No workspace write needed (output already matches), but we still
|
|
431
|
+
// need mutex protection for state updates to prevent races with
|
|
432
|
+
// concurrent task completions.
|
|
433
|
+
await workspaceUpdateMutex.runExclusive(() => {
|
|
434
|
+
completed.add(taskName);
|
|
435
|
+
cached++;
|
|
436
|
+
const result = {
|
|
437
|
+
name: taskName,
|
|
438
|
+
cached: true,
|
|
439
|
+
state: 'success',
|
|
440
|
+
duration: 0,
|
|
441
|
+
};
|
|
442
|
+
results.push(result);
|
|
443
|
+
options.onTaskComplete?.(result);
|
|
444
|
+
notifyDependents(taskName);
|
|
445
|
+
});
|
|
334
446
|
continue;
|
|
335
447
|
}
|
|
336
448
|
inProgress.add(taskName);
|
|
337
449
|
const promise = (async () => {
|
|
338
450
|
try {
|
|
339
451
|
const result = await executeTask(taskName);
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
if (result.
|
|
346
|
-
|
|
452
|
+
// Use mutex to serialize workspace updates and dependent notifications.
|
|
453
|
+
// This prevents race conditions where two tasks complete simultaneously,
|
|
454
|
+
// both read the same workspace state, and one overwrites the other's changes.
|
|
455
|
+
await workspaceUpdateMutex.runExclusive(async () => {
|
|
456
|
+
// Write output to workspace BEFORE notifying dependents
|
|
457
|
+
if (result.state === 'success' && result.outputHash) {
|
|
458
|
+
const node = taskNodes.get(taskName);
|
|
459
|
+
await workspaceSetDatasetByHash(repoPath, ws, node.outputPath, result.outputHash);
|
|
460
|
+
}
|
|
461
|
+
// Now safe to update execution state and notify dependents
|
|
462
|
+
inProgress.delete(taskName);
|
|
463
|
+
completed.add(taskName);
|
|
464
|
+
results.push(result);
|
|
465
|
+
options.onTaskComplete?.(result);
|
|
466
|
+
if (result.state === 'success') {
|
|
467
|
+
if (result.cached) {
|
|
468
|
+
cached++;
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
executed++;
|
|
472
|
+
}
|
|
473
|
+
notifyDependents(taskName);
|
|
347
474
|
}
|
|
348
475
|
else {
|
|
349
|
-
|
|
476
|
+
failed++;
|
|
477
|
+
hasFailure = true;
|
|
478
|
+
skipDependents(taskName);
|
|
350
479
|
}
|
|
351
|
-
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
failed++;
|
|
355
|
-
hasFailure = true;
|
|
356
|
-
skipDependents(taskName);
|
|
357
|
-
}
|
|
480
|
+
});
|
|
358
481
|
}
|
|
359
482
|
finally {
|
|
360
483
|
runningPromises.delete(taskName);
|
|
@@ -377,6 +500,12 @@ export async function dataflowExecute(repoPath, ws, options = {}) {
|
|
|
377
500
|
if (runningPromises.size > 0) {
|
|
378
501
|
await Promise.all(runningPromises.values());
|
|
379
502
|
}
|
|
503
|
+
// Check for abort one final time
|
|
504
|
+
checkAborted();
|
|
505
|
+
// If aborted, throw with partial results
|
|
506
|
+
if (aborted) {
|
|
507
|
+
throw new DataflowAbortedError(results);
|
|
508
|
+
}
|
|
380
509
|
return {
|
|
381
510
|
success: !hasFailure,
|
|
382
511
|
executed,
|
package/dist/src/dataflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/dataflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/dataflow.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
*
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Domain error types for e3-core.
|
|
@@ -29,6 +29,33 @@ export declare class WorkspaceExistsError extends E3Error {
|
|
|
29
29
|
readonly workspace: string;
|
|
30
30
|
constructor(workspace: string);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Information about the process holding a workspace lock.
|
|
34
|
+
*/
|
|
35
|
+
export interface LockHolder {
|
|
36
|
+
/** Process ID of the lock holder */
|
|
37
|
+
pid: number;
|
|
38
|
+
/** When the lock was acquired (ISO 8601) */
|
|
39
|
+
acquiredAt: string;
|
|
40
|
+
/** System boot ID (to detect stale locks after reboot) */
|
|
41
|
+
bootId?: string;
|
|
42
|
+
/** Process start time in jiffies (to detect PID reuse) */
|
|
43
|
+
startTime?: number;
|
|
44
|
+
/** Command that acquired the lock (for debugging) */
|
|
45
|
+
command?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Thrown when a workspace is locked by another process.
|
|
49
|
+
*
|
|
50
|
+
* This error is thrown when attempting to acquire an exclusive lock on a
|
|
51
|
+
* workspace that is already locked by another process (e.g., another
|
|
52
|
+
* `e3 start` command or API server).
|
|
53
|
+
*/
|
|
54
|
+
export declare class WorkspaceLockError extends E3Error {
|
|
55
|
+
readonly workspace: string;
|
|
56
|
+
readonly holder?: LockHolder | undefined;
|
|
57
|
+
constructor(workspace: string, holder?: LockHolder | undefined);
|
|
58
|
+
}
|
|
32
59
|
export declare class PackageNotFoundError extends E3Error {
|
|
33
60
|
readonly packageName: string;
|
|
34
61
|
readonly version?: string | undefined;
|
|
@@ -72,6 +99,17 @@ export declare class DataflowError extends E3Error {
|
|
|
72
99
|
readonly cause?: Error | undefined;
|
|
73
100
|
constructor(message: string, taskResults?: TaskExecutionResult[] | undefined, cause?: Error | undefined);
|
|
74
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Thrown when a dataflow execution is aborted via AbortSignal.
|
|
104
|
+
*
|
|
105
|
+
* This is not an error condition - it indicates the execution was intentionally
|
|
106
|
+
* cancelled (e.g., by an API server before applying a write). The partial
|
|
107
|
+
* results contain the status of tasks that completed before the abort.
|
|
108
|
+
*/
|
|
109
|
+
export declare class DataflowAbortedError extends E3Error {
|
|
110
|
+
readonly partialResults?: TaskExecutionResult[] | undefined;
|
|
111
|
+
constructor(partialResults?: TaskExecutionResult[] | undefined);
|
|
112
|
+
}
|
|
75
113
|
export declare class PermissionDeniedError extends E3Error {
|
|
76
114
|
readonly path: string;
|
|
77
115
|
constructor(path: string);
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMzD,mCAAmC;AACnC,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAMD,qBAAa,uBAAwB,SAAQ,OAAO;aACtB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAGzC;AAMD,qBAAa,sBAAuB,SAAQ,OAAO;aACrB,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAG9C;AAED,qBAAa,yBAA0B,SAAQ,OAAO;aACxB,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAG9C;AAED,qBAAa,oBAAqB,SAAQ,OAAO;aACnB,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAG9C;AAMD,qBAAa,oBAAqB,SAAQ,OAAO;aAE7B,WAAW,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,MAAM;gBADhB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,YAAA;CAQnC;AAED,qBAAa,mBAAoB,SAAQ,OAAO;aAClB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAG3C;AAED,qBAAa,kBAAmB,SAAQ,OAAO;aAE3B,WAAW,EAAE,MAAM;aACnB,OAAO,EAAE,MAAM;gBADf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM;CAIlC;AAMD,qBAAa,oBAAqB,SAAQ,OAAO;aAE7B,SAAS,EAAE,MAAM;aACjB,IAAI,EAAE,MAAM;gBADZ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM;CAI/B;AAMD,qBAAa,iBAAkB,SAAQ,OAAO;aAChB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAGzC;AAMD,qBAAa,mBAAoB,SAAQ,OAAO;aAClB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAGzC;AAED,qBAAa,kBAAmB,SAAQ,OAAO;aAE3B,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;gBADd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAIjC;AAMD,qBAAa,qBAAsB,SAAQ,OAAO;aAE9B,QAAQ,EAAE,MAAM;aAChB,UAAU,EAAE,MAAM;aAClB,KAAK,EAAE,KAAK;gBAFZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK;CAM/B;AAMD,qBAAa,aAAc,SAAQ,OAAO;aAGtB,WAAW,CAAC,EAAE,mBAAmB,EAAE;aACnC,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,WAAW,CAAC,EAAE,mBAAmB,EAAE,YAAA,EACnC,KAAK,CAAC,EAAE,KAAK,YAAA;CAIhC;AAMD,qBAAa,qBAAsB,SAAQ,OAAO;aACpB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAGzC;AAMD,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIrD;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIvD;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAInD;AAED,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIhE"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
*
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
// =============================================================================
|
|
6
6
|
// Base Error
|
|
@@ -46,6 +46,25 @@ export class WorkspaceExistsError extends E3Error {
|
|
|
46
46
|
this.workspace = workspace;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Thrown when a workspace is locked by another process.
|
|
51
|
+
*
|
|
52
|
+
* This error is thrown when attempting to acquire an exclusive lock on a
|
|
53
|
+
* workspace that is already locked by another process (e.g., another
|
|
54
|
+
* `e3 start` command or API server).
|
|
55
|
+
*/
|
|
56
|
+
export class WorkspaceLockError extends E3Error {
|
|
57
|
+
workspace;
|
|
58
|
+
holder;
|
|
59
|
+
constructor(workspace, holder) {
|
|
60
|
+
const msg = holder
|
|
61
|
+
? `Workspace '${workspace}' is locked by process ${holder.pid} (since ${holder.acquiredAt})`
|
|
62
|
+
: `Workspace '${workspace}' is locked by another process`;
|
|
63
|
+
super(msg);
|
|
64
|
+
this.workspace = workspace;
|
|
65
|
+
this.holder = holder;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
49
68
|
// =============================================================================
|
|
50
69
|
// Package Errors
|
|
51
70
|
// =============================================================================
|
|
@@ -143,6 +162,20 @@ export class DataflowError extends E3Error {
|
|
|
143
162
|
this.cause = cause;
|
|
144
163
|
}
|
|
145
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Thrown when a dataflow execution is aborted via AbortSignal.
|
|
167
|
+
*
|
|
168
|
+
* This is not an error condition - it indicates the execution was intentionally
|
|
169
|
+
* cancelled (e.g., by an API server before applying a write). The partial
|
|
170
|
+
* results contain the status of tasks that completed before the abort.
|
|
171
|
+
*/
|
|
172
|
+
export class DataflowAbortedError extends E3Error {
|
|
173
|
+
partialResults;
|
|
174
|
+
constructor(partialResults) {
|
|
175
|
+
super('Dataflow execution was aborted');
|
|
176
|
+
this.partialResults = partialResults;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
146
179
|
// =============================================================================
|
|
147
180
|
// Generic Errors
|
|
148
181
|
// =============================================================================
|