@elaraai/e3-core 0.0.2-beta.20 → 0.0.2-beta.21
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 +25 -22
- package/dist/src/dataflow/api-compat.d.ts +90 -0
- package/dist/src/dataflow/api-compat.d.ts.map +1 -0
- package/dist/src/dataflow/api-compat.js +134 -0
- package/dist/src/dataflow/api-compat.js.map +1 -0
- package/dist/src/dataflow/index.d.ts +18 -0
- package/dist/src/dataflow/index.d.ts.map +1 -0
- package/dist/src/dataflow/index.js +23 -0
- package/dist/src/dataflow/index.js.map +1 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.d.ts +53 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.js +416 -0
- package/dist/src/dataflow/orchestrator/LocalOrchestrator.js.map +1 -0
- package/dist/src/dataflow/orchestrator/index.d.ts +12 -0
- package/dist/src/dataflow/orchestrator/index.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/index.js +12 -0
- package/dist/src/dataflow/orchestrator/index.js.map +1 -0
- package/dist/src/dataflow/orchestrator/interfaces.d.ts +157 -0
- package/dist/src/dataflow/orchestrator/interfaces.d.ts.map +1 -0
- package/dist/src/dataflow/orchestrator/interfaces.js +51 -0
- package/dist/src/dataflow/orchestrator/interfaces.js.map +1 -0
- package/dist/src/dataflow/state-store/FileStateStore.d.ts +67 -0
- package/dist/src/dataflow/state-store/FileStateStore.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/FileStateStore.js +286 -0
- package/dist/src/dataflow/state-store/FileStateStore.js.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.d.ts +42 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.js +214 -0
- package/dist/src/dataflow/state-store/InMemoryStateStore.js.map +1 -0
- package/dist/src/dataflow/state-store/index.d.ts +13 -0
- package/dist/src/dataflow/state-store/index.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/index.js +13 -0
- package/dist/src/dataflow/state-store/index.js.map +1 -0
- package/dist/src/dataflow/state-store/interfaces.d.ts +159 -0
- package/dist/src/dataflow/state-store/interfaces.d.ts.map +1 -0
- package/dist/src/dataflow/state-store/interfaces.js +6 -0
- package/dist/src/dataflow/state-store/interfaces.js.map +1 -0
- package/dist/src/dataflow/steps.d.ts +176 -0
- package/dist/src/dataflow/steps.d.ts.map +1 -0
- package/dist/src/dataflow/steps.js +528 -0
- package/dist/src/dataflow/steps.js.map +1 -0
- package/dist/src/dataflow/types.d.ts +116 -0
- package/dist/src/dataflow/types.d.ts.map +1 -0
- package/dist/src/dataflow/types.js +7 -0
- package/dist/src/dataflow/types.js.map +1 -0
- package/dist/src/dataflow.d.ts +9 -0
- package/dist/src/dataflow.d.ts.map +1 -1
- package/dist/src/dataflow.js +11 -6
- package/dist/src/dataflow.js.map +1 -1
- package/dist/src/execution/LocalTaskRunner.d.ts +71 -0
- package/dist/src/execution/LocalTaskRunner.d.ts.map +1 -0
- package/dist/src/execution/LocalTaskRunner.js +360 -0
- package/dist/src/execution/LocalTaskRunner.js.map +1 -0
- package/dist/src/execution/MockTaskRunner.d.ts +49 -0
- package/dist/src/execution/MockTaskRunner.d.ts.map +1 -0
- package/dist/src/execution/MockTaskRunner.js +55 -0
- package/dist/src/execution/MockTaskRunner.js.map +1 -0
- package/dist/src/execution/index.d.ts +2 -0
- package/dist/src/execution/index.d.ts.map +1 -1
- package/dist/src/execution/index.js +3 -1
- package/dist/src/execution/index.js.map +1 -1
- package/dist/src/execution/processHelpers.d.ts +20 -0
- package/dist/src/execution/processHelpers.d.ts.map +1 -0
- package/dist/src/execution/processHelpers.js +62 -0
- package/dist/src/execution/processHelpers.js.map +1 -0
- package/dist/src/executions.d.ts +1 -69
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +6 -365
- package/dist/src/executions.js.map +1 -1
- package/dist/src/index.d.ts +10 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/objects.d.ts +6 -53
- package/dist/src/objects.d.ts.map +1 -1
- package/dist/src/objects.js +11 -232
- package/dist/src/objects.js.map +1 -1
- package/dist/src/storage/local/LocalLockService.d.ts +84 -1
- package/dist/src/storage/local/LocalLockService.d.ts.map +1 -1
- package/dist/src/storage/local/LocalLockService.js +305 -1
- package/dist/src/storage/local/LocalLockService.js.map +1 -1
- package/dist/src/storage/local/LocalObjectStore.d.ts +33 -1
- package/dist/src/storage/local/LocalObjectStore.d.ts.map +1 -1
- package/dist/src/storage/local/LocalObjectStore.js +198 -3
- package/dist/src/storage/local/LocalObjectStore.js.map +1 -1
- package/dist/src/{gc.d.ts → storage/local/gc.d.ts} +1 -1
- package/dist/src/storage/local/gc.d.ts.map +1 -0
- package/dist/src/{gc.js → storage/local/gc.js} +5 -2
- package/dist/src/storage/local/gc.js.map +1 -0
- package/dist/src/storage/local/localHelpers.d.ts +25 -0
- package/dist/src/storage/local/localHelpers.d.ts.map +1 -0
- package/dist/src/storage/local/localHelpers.js +69 -0
- package/dist/src/storage/local/localHelpers.js.map +1 -0
- package/dist/src/storage/local/repository.d.ts.map +1 -0
- package/dist/src/{repository.js → storage/local/repository.js} +6 -0
- package/dist/src/storage/local/repository.js.map +1 -0
- package/dist/src/test-helpers.js +1 -1
- package/dist/src/test-helpers.js.map +1 -1
- package/dist/src/trees.d.ts +2 -1
- package/dist/src/trees.d.ts.map +1 -1
- package/dist/src/trees.js +2 -0
- package/dist/src/trees.js.map +1 -1
- package/dist/src/workspaceStatus.js +3 -2
- package/dist/src/workspaceStatus.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/gc.d.ts.map +0 -1
- package/dist/src/gc.js.map +0 -1
- package/dist/src/repository.d.ts.map +0 -1
- package/dist/src/repository.js.map +0 -1
- package/dist/src/workspaceLock.d.ts +0 -89
- package/dist/src/workspaceLock.d.ts.map +0 -1
- package/dist/src/workspaceLock.js +0 -307
- package/dist/src/workspaceLock.js.map +0 -1
- /package/dist/src/{repository.d.ts → storage/local/repository.d.ts} +0 -0
package/dist/src/executions.js
CHANGED
|
@@ -3,20 +3,17 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Generic task execution APIs for e3 repositories.
|
|
7
7
|
*
|
|
8
|
-
* Provides APIs for:
|
|
8
|
+
* Provides storage-agnostic APIs for:
|
|
9
9
|
* - Computing execution identity (inputsHash)
|
|
10
10
|
* - Querying execution status and results
|
|
11
11
|
* - Reading execution logs
|
|
12
|
-
* -
|
|
12
|
+
* - Evaluating command IR
|
|
13
|
+
*
|
|
14
|
+
* Note: Local process execution is in execution/LocalTaskRunner.ts
|
|
13
15
|
*/
|
|
14
|
-
import
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import { spawn } from 'child_process';
|
|
17
|
-
import { tmpdir } from 'os';
|
|
18
|
-
import { decodeBeast2For, variant, EastIR, IRType } from '@elaraai/east';
|
|
19
|
-
import { TaskObjectType, } from '@elaraai/e3-types';
|
|
16
|
+
import { decodeBeast2For, EastIR, IRType } from '@elaraai/east';
|
|
20
17
|
import { computeHash } from './objects.js';
|
|
21
18
|
// ============================================================================
|
|
22
19
|
// Execution Identity
|
|
@@ -181,360 +178,4 @@ export async function evaluateCommandIr(storage, repo, commandIrHash, inputPaths
|
|
|
181
178
|
throw new Error(`Failed to evaluate command IR: ${err}`);
|
|
182
179
|
}
|
|
183
180
|
}
|
|
184
|
-
// ============================================================================
|
|
185
|
-
// Process Identification (for crash detection)
|
|
186
|
-
// ============================================================================
|
|
187
|
-
/**
|
|
188
|
-
* Get the current system boot ID.
|
|
189
|
-
* Used for detecting stale locks/processes after system reboot.
|
|
190
|
-
*/
|
|
191
|
-
export async function getBootId() {
|
|
192
|
-
try {
|
|
193
|
-
const data = await fs.readFile('/proc/sys/kernel/random/boot_id', 'utf-8');
|
|
194
|
-
return data.trim();
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
// Not on Linux, use a placeholder
|
|
198
|
-
return 'unknown-boot-id';
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get process start time from /proc/<pid>/stat.
|
|
203
|
-
* Returns the starttime field (field 22) which is jiffies since boot.
|
|
204
|
-
* Used together with boot ID to uniquely identify a process (handles PID reuse).
|
|
205
|
-
*/
|
|
206
|
-
export async function getPidStartTime(pid) {
|
|
207
|
-
try {
|
|
208
|
-
const data = await fs.readFile(`/proc/${pid}/stat`, 'utf-8');
|
|
209
|
-
// Fields are space-separated, but comm (field 2) can contain spaces and is in parens
|
|
210
|
-
// Find the closing paren, then split the rest
|
|
211
|
-
const closeParen = data.lastIndexOf(')');
|
|
212
|
-
const fields = data.slice(closeParen + 2).split(' ');
|
|
213
|
-
// After the closing paren, field index 0 is state (field 3), so starttime is at index 19
|
|
214
|
-
// (field 22 - 3 = 19)
|
|
215
|
-
return parseInt(fields[19], 10);
|
|
216
|
-
}
|
|
217
|
-
catch {
|
|
218
|
-
return 0;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Check if a process is still alive based on stored identification
|
|
223
|
-
*/
|
|
224
|
-
export async function isProcessAlive(pid, pidStartTime, bootId) {
|
|
225
|
-
// Different boot? Process is dead
|
|
226
|
-
const currentBootId = await getBootId();
|
|
227
|
-
if (currentBootId !== bootId)
|
|
228
|
-
return false;
|
|
229
|
-
// Check if PID exists and has same start time
|
|
230
|
-
const currentStartTime = await getPidStartTime(pid);
|
|
231
|
-
if (currentStartTime === 0)
|
|
232
|
-
return false; // PID doesn't exist
|
|
233
|
-
if (currentStartTime !== pidStartTime)
|
|
234
|
-
return false; // PID reused
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Execute a single task.
|
|
239
|
-
*
|
|
240
|
-
* This is the core execution primitive. It:
|
|
241
|
-
* 1. Computes the execution identity from task + inputs
|
|
242
|
-
* 2. Checks cache (unless force=true)
|
|
243
|
-
* 3. Marshals inputs to a scratch directory
|
|
244
|
-
* 4. Evaluates command IR to get exec args
|
|
245
|
-
* 5. Runs the command
|
|
246
|
-
* 6. Stores the output and updates status
|
|
247
|
-
*
|
|
248
|
-
* @param storage - Storage backend
|
|
249
|
-
* @param repo - Repository identifier (for local storage, the path to e3 repository directory)
|
|
250
|
-
* @param taskHash - Hash of the task object
|
|
251
|
-
* @param inputHashes - Array of input dataset hashes
|
|
252
|
-
* @param options - Execution options
|
|
253
|
-
* @returns Execution result
|
|
254
|
-
*/
|
|
255
|
-
export async function taskExecute(storage, repo, taskHash, inputHashes, options = {}) {
|
|
256
|
-
const inHash = inputsHash(inputHashes);
|
|
257
|
-
const startTime = Date.now();
|
|
258
|
-
// Step 1: Check cache (unless force)
|
|
259
|
-
if (!options.force) {
|
|
260
|
-
const existingOutput = await storage.refs.executionGetOutput(repo, taskHash, inHash);
|
|
261
|
-
if (existingOutput !== null) {
|
|
262
|
-
const status = await storage.refs.executionGet(repo, taskHash, inHash);
|
|
263
|
-
if (status && status.type === 'success') {
|
|
264
|
-
return {
|
|
265
|
-
inputsHash: inHash,
|
|
266
|
-
cached: true,
|
|
267
|
-
state: 'success',
|
|
268
|
-
outputHash: existingOutput,
|
|
269
|
-
exitCode: 0,
|
|
270
|
-
duration: 0,
|
|
271
|
-
error: null,
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
// Step 2: Read task object
|
|
277
|
-
let task;
|
|
278
|
-
try {
|
|
279
|
-
const taskData = await storage.objects.read(repo, taskHash);
|
|
280
|
-
const decoder = decodeBeast2For(TaskObjectType);
|
|
281
|
-
task = decoder(Buffer.from(taskData));
|
|
282
|
-
}
|
|
283
|
-
catch (err) {
|
|
284
|
-
return {
|
|
285
|
-
inputsHash: inHash,
|
|
286
|
-
cached: false,
|
|
287
|
-
state: 'error',
|
|
288
|
-
outputHash: null,
|
|
289
|
-
exitCode: null,
|
|
290
|
-
duration: Date.now() - startTime,
|
|
291
|
-
error: `Failed to read task object: ${err}`,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
// Step 3: Create scratch directory
|
|
295
|
-
// Include PID to prevent collisions when multiple e3 processes run the same
|
|
296
|
-
// task concurrently (e.g., same task in different workspaces at same millisecond)
|
|
297
|
-
const scratchDir = path.join(tmpdir(), `e3-exec-${taskHash.slice(0, 8)}-${inHash.slice(0, 8)}-${process.pid}-${Date.now()}`);
|
|
298
|
-
await fs.mkdir(scratchDir, { recursive: true });
|
|
299
|
-
try {
|
|
300
|
-
// Step 4: Marshal inputs to scratch dir
|
|
301
|
-
const inputPaths = [];
|
|
302
|
-
for (let i = 0; i < inputHashes.length; i++) {
|
|
303
|
-
const inputPath = path.join(scratchDir, `input-${i}.beast2`);
|
|
304
|
-
const inputData = await storage.objects.read(repo, inputHashes[i]);
|
|
305
|
-
await fs.writeFile(inputPath, inputData);
|
|
306
|
-
inputPaths.push(inputPath);
|
|
307
|
-
}
|
|
308
|
-
// Step 5: Evaluate command IR to get exec args
|
|
309
|
-
const outputPath = path.join(scratchDir, 'output.beast2');
|
|
310
|
-
let args;
|
|
311
|
-
try {
|
|
312
|
-
args = await evaluateCommandIr(storage, repo, task.commandIr, inputPaths, outputPath);
|
|
313
|
-
}
|
|
314
|
-
catch (err) {
|
|
315
|
-
return {
|
|
316
|
-
inputsHash: inHash,
|
|
317
|
-
cached: false,
|
|
318
|
-
state: 'error',
|
|
319
|
-
outputHash: null,
|
|
320
|
-
exitCode: null,
|
|
321
|
-
duration: Date.now() - startTime,
|
|
322
|
-
error: `Failed to evaluate command IR: ${err}`,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
if (args.length === 0) {
|
|
326
|
-
return {
|
|
327
|
-
inputsHash: inHash,
|
|
328
|
-
cached: false,
|
|
329
|
-
state: 'error',
|
|
330
|
-
outputHash: null,
|
|
331
|
-
exitCode: null,
|
|
332
|
-
duration: Date.now() - startTime,
|
|
333
|
-
error: 'Command IR produced empty command',
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
// Step 6: Get boot ID for crash detection
|
|
337
|
-
const bootId = await getBootId();
|
|
338
|
-
// Step 7: Execute command
|
|
339
|
-
const result = await runCommand(storage, repo, taskHash, inHash, args, inputHashes, bootId, options);
|
|
340
|
-
// Step 8: Handle result
|
|
341
|
-
if (result.exitCode === 0) {
|
|
342
|
-
// Success - read and store output
|
|
343
|
-
try {
|
|
344
|
-
const outputData = await fs.readFile(outputPath);
|
|
345
|
-
const outputHash = await storage.objects.write(repo, outputData);
|
|
346
|
-
// Write output ref and success status
|
|
347
|
-
await storage.refs.executionWriteOutput(repo, taskHash, inHash, outputHash);
|
|
348
|
-
const status = variant('success', {
|
|
349
|
-
inputHashes,
|
|
350
|
-
outputHash,
|
|
351
|
-
startedAt: new Date(startTime),
|
|
352
|
-
completedAt: new Date(),
|
|
353
|
-
});
|
|
354
|
-
await storage.refs.executionWrite(repo, taskHash, inHash, status);
|
|
355
|
-
return {
|
|
356
|
-
inputsHash: inHash,
|
|
357
|
-
cached: false,
|
|
358
|
-
state: 'success',
|
|
359
|
-
outputHash,
|
|
360
|
-
exitCode: 0,
|
|
361
|
-
duration: Date.now() - startTime,
|
|
362
|
-
error: null,
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
catch (err) {
|
|
366
|
-
// Output file missing or unreadable
|
|
367
|
-
const status = variant('error', {
|
|
368
|
-
inputHashes,
|
|
369
|
-
startedAt: new Date(startTime),
|
|
370
|
-
completedAt: new Date(),
|
|
371
|
-
message: `Failed to read output: ${err}`,
|
|
372
|
-
});
|
|
373
|
-
await storage.refs.executionWrite(repo, taskHash, inHash, status);
|
|
374
|
-
return {
|
|
375
|
-
inputsHash: inHash,
|
|
376
|
-
cached: false,
|
|
377
|
-
state: 'error',
|
|
378
|
-
outputHash: null,
|
|
379
|
-
exitCode: 0,
|
|
380
|
-
duration: Date.now() - startTime,
|
|
381
|
-
error: `Failed to read output: ${err}`,
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
// Failed - write failed status
|
|
387
|
-
const status = variant('failed', {
|
|
388
|
-
inputHashes,
|
|
389
|
-
startedAt: new Date(startTime),
|
|
390
|
-
completedAt: new Date(),
|
|
391
|
-
exitCode: BigInt(result?.exitCode ?? -1),
|
|
392
|
-
});
|
|
393
|
-
await storage.refs.executionWrite(repo, taskHash, inHash, status);
|
|
394
|
-
return {
|
|
395
|
-
inputsHash: inHash,
|
|
396
|
-
cached: false,
|
|
397
|
-
state: 'failed',
|
|
398
|
-
outputHash: null,
|
|
399
|
-
exitCode: result.exitCode,
|
|
400
|
-
duration: Date.now() - startTime,
|
|
401
|
-
error: result.error,
|
|
402
|
-
};
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
finally {
|
|
406
|
-
// Cleanup scratch directory
|
|
407
|
-
try {
|
|
408
|
-
await fs.rm(scratchDir, { recursive: true, force: true });
|
|
409
|
-
}
|
|
410
|
-
catch {
|
|
411
|
-
// Ignore cleanup errors
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Run a command and capture output
|
|
417
|
-
*/
|
|
418
|
-
async function runCommand(storage, repo, taskHash, inHash, args, inputHashes, bootId, options) {
|
|
419
|
-
const [cmd, ...cmdArgs] = args;
|
|
420
|
-
// Process Lifecycle Management
|
|
421
|
-
// ============================
|
|
422
|
-
// We use detached: true to create a new process group, allowing us to kill
|
|
423
|
-
// the entire process tree by signaling the negative PID (process group leader).
|
|
424
|
-
//
|
|
425
|
-
// LIMITATION: Process groups are flat, not hierarchical. If a task spawns a
|
|
426
|
-
// subprocess that creates its own process group (via setsid, daemonization,
|
|
427
|
-
// or another detached spawn), that subprocess will escape our kill signal.
|
|
428
|
-
// This is a fundamental Unix limitation - process groups were designed for
|
|
429
|
-
// terminal job control (Ctrl+C/Ctrl+Z), not process tree management.
|
|
430
|
-
//
|
|
431
|
-
// For most tasks (shell scripts, pipelines, normal child processes) this works
|
|
432
|
-
// fine. A task would have to intentionally call setsid() to escape.
|
|
433
|
-
//
|
|
434
|
-
// Potential improvements for hosted e3:
|
|
435
|
-
// - Linux cgroups: Hierarchical containment with no escape. Requires root or
|
|
436
|
-
// systemd integration (systemd-run --scope). Used by Docker/Kubernetes.
|
|
437
|
-
// - PR_SET_CHILD_SUBREAPER: Makes e3 adopt orphaned processes instead of init,
|
|
438
|
-
// allowing tracking and cleanup. Requires polling to detect orphans.
|
|
439
|
-
// - Firecracker/microVMs: Complete isolation with hardware virtualization.
|
|
440
|
-
// The VM boundary provides bulletproof containment. Best for multi-tenant.
|
|
441
|
-
const child = spawn(cmd, cmdArgs, {
|
|
442
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
443
|
-
detached: true,
|
|
444
|
-
});
|
|
445
|
-
// Set up event listeners IMMEDIATELY before any async work
|
|
446
|
-
// to avoid missing events if the process completes quickly
|
|
447
|
-
const resultPromise = new Promise((resolve) => {
|
|
448
|
-
child.on('error', (err) => {
|
|
449
|
-
resolve({ exitCode: null, error: `Failed to spawn: ${err.message}` });
|
|
450
|
-
});
|
|
451
|
-
child.on('close', (code) => {
|
|
452
|
-
resolve({ exitCode: code, error: code !== 0 ? `Exit code: ${code}` : null });
|
|
453
|
-
});
|
|
454
|
-
});
|
|
455
|
-
// Use promise chains to ensure sequential log writes without overlapping
|
|
456
|
-
let stdoutWriteChain = Promise.resolve();
|
|
457
|
-
let stderrWriteChain = Promise.resolve();
|
|
458
|
-
// Tee stdout - use storage.logs.append for log persistence
|
|
459
|
-
child.stdout?.on('data', (data) => {
|
|
460
|
-
const str = data.toString('utf-8');
|
|
461
|
-
// Chain writes sequentially to avoid overlapping
|
|
462
|
-
stdoutWriteChain = stdoutWriteChain.then(async () => {
|
|
463
|
-
try {
|
|
464
|
-
await storage.logs.append(repo, taskHash, inHash, 'stdout', str);
|
|
465
|
-
}
|
|
466
|
-
catch (err) {
|
|
467
|
-
console.warn(`Failed to append stdout log: ${err instanceof Error ? err.message : String(err)}`);
|
|
468
|
-
}
|
|
469
|
-
});
|
|
470
|
-
if (options.onStdout) {
|
|
471
|
-
options.onStdout(str);
|
|
472
|
-
}
|
|
473
|
-
});
|
|
474
|
-
// Tee stderr - use storage.logs.append for log persistence
|
|
475
|
-
child.stderr?.on('data', (data) => {
|
|
476
|
-
const str = data.toString('utf-8');
|
|
477
|
-
// Chain writes sequentially to avoid overlapping
|
|
478
|
-
stderrWriteChain = stderrWriteChain.then(async () => {
|
|
479
|
-
try {
|
|
480
|
-
await storage.logs.append(repo, taskHash, inHash, 'stderr', str);
|
|
481
|
-
}
|
|
482
|
-
catch (err) {
|
|
483
|
-
console.warn(`Failed to append stderr log: ${err instanceof Error ? err.message : String(err)}`);
|
|
484
|
-
}
|
|
485
|
-
});
|
|
486
|
-
if (options.onStderr) {
|
|
487
|
-
options.onStderr(str);
|
|
488
|
-
}
|
|
489
|
-
});
|
|
490
|
-
// Helper to kill the entire process group (child and all its descendants).
|
|
491
|
-
// With detached: true, child.pid is the process group leader, so killing
|
|
492
|
-
// -child.pid sends the signal to all processes in that group.
|
|
493
|
-
const killProcessGroup = () => {
|
|
494
|
-
if (child.pid) {
|
|
495
|
-
try {
|
|
496
|
-
process.kill(-child.pid, 'SIGKILL');
|
|
497
|
-
}
|
|
498
|
-
catch {
|
|
499
|
-
// Process may have already exited
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
};
|
|
503
|
-
// Handle timeout
|
|
504
|
-
let timeoutId;
|
|
505
|
-
if (options.timeout) {
|
|
506
|
-
timeoutId = setTimeout(killProcessGroup, options.timeout);
|
|
507
|
-
}
|
|
508
|
-
// Handle abort signal
|
|
509
|
-
if (options.signal) {
|
|
510
|
-
if (options.signal.aborted) {
|
|
511
|
-
// Already aborted before we started
|
|
512
|
-
killProcessGroup();
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
options.signal.addEventListener('abort', killProcessGroup, { once: true });
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
// Write running status with actual child PID
|
|
519
|
-
const pidStartTime = await getPidStartTime(child.pid);
|
|
520
|
-
const status = variant('running', {
|
|
521
|
-
inputHashes,
|
|
522
|
-
startedAt: new Date(),
|
|
523
|
-
pid: BigInt(child.pid ?? -1),
|
|
524
|
-
pidStartTime: BigInt(pidStartTime ?? -1),
|
|
525
|
-
bootId,
|
|
526
|
-
});
|
|
527
|
-
await storage.refs.executionWrite(repo, taskHash, inHash, status);
|
|
528
|
-
// Wait for process to complete
|
|
529
|
-
const result = await resultPromise;
|
|
530
|
-
// Wait for any pending log writes to complete
|
|
531
|
-
await Promise.all([stdoutWriteChain, stderrWriteChain]);
|
|
532
|
-
// Cleanup
|
|
533
|
-
if (timeoutId)
|
|
534
|
-
clearTimeout(timeoutId);
|
|
535
|
-
if (options.signal) {
|
|
536
|
-
options.signal.removeEventListener('abort', killProcessGroup);
|
|
537
|
-
}
|
|
538
|
-
return result;
|
|
539
|
-
}
|
|
540
181
|
//# sourceMappingURL=executions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAEL,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,WAAqB;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,MAAc;IAEd,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,MAAc;IAEd,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,IAAY,EACZ,QAAgB;IAEhB,OAAO,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB,EACvB,IAAY;IAEZ,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAcD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,IAAY,EACZ,EAAU,EACV,QAAgB;IAEhB,2CAA2C;IAC3C,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEjE,kDAAkD;IAClD,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAE7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzC,iBAAiB,GAAG,KAAK,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEvE,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,MAAc,EACd,MAA2B,EAC3B,UAA0B,EAAE;IAE5B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,IAAY,EACZ,aAAqB,EACrB,UAAoB,EACpB,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,mCAAmC;QACnC,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAe,CAAC;QAEtD,sEAAsE;QACtE,MAAM,MAAM,GAAG,IAAI,MAAM,CAA+B,EAAE,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtC,+DAA+D;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAElD,yCAAyC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,MAAM,kBAAkB,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,IAAI,oBAAoB,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;QAClC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7D,qFAAqF;QACrF,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,yFAAyF;QACzF,sBAAsB;QACtB,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,YAAoB,EACpB,MAAc;IAEd,kCAAkC;IAClC,MAAM,aAAa,GAAG,MAAM,SAAS,EAAE,CAAC;IACxC,IAAI,aAAa,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAE3C,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,oBAAoB;IAC9D,IAAI,gBAAgB,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC,CAAC,aAAa;IAElE,OAAO,IAAI,CAAC;AACd,CAAC;AA0CD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,WAAqB,EACrB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,qCAAqC;IACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,OAAO;oBACL,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE,cAAc;oBAC1B,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,CAAC;oBACX,KAAK,EAAE,IAAI;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,IAAgB,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,KAAK,EAAE,+BAA+B,GAAG,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,4EAA4E;IAC5E,kFAAkF;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,MAAM,EAAE,EACR,WAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CACrF,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;YACpE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC1D,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,kCAAkC,GAAG,EAAE;aAC/C,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,mCAAmC;aAC3C,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,0BAA0B;QAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,WAAW,EACX,MAAM,EACN,OAAO,CACR,CAAC;QAEF,wBAAwB;QACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,kCAAkC;YAClC,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACjD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAEjE,sCAAsC;gBACtC,MAAM,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAE5E,MAAM,MAAM,GAAoB,OAAO,CAAC,SAAS,EAAE;oBACjD,WAAW;oBACX,UAAU;oBACV,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;oBAC9B,WAAW,EAAE,IAAI,IAAI,EAAE;iBACxB,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAElE,OAAO;oBACL,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,SAAS;oBAChB,UAAU;oBACV,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAChC,KAAK,EAAE,IAAI;iBACZ,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,oCAAoC;gBACpC,MAAM,MAAM,GAAoB,OAAO,CAAC,OAAO,EAAE;oBAC/C,WAAW;oBACX,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;oBAC9B,WAAW,EAAE,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,0BAA0B,GAAG,EAAE;iBACzC,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAElE,OAAO;oBACL,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,OAAO;oBACd,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAChC,KAAK,EAAE,0BAA0B,GAAG,EAAE;iBACvC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,MAAM,GAAoB,OAAO,CAAC,QAAQ,EAAE;gBAChD,WAAW;gBACX,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;gBAC9B,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;aACzC,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAElE,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,4BAA4B;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,OAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,MAAc,EACd,IAAc,EACd,WAAqB,EACrB,MAAc,EACd,OAAuB;IAEvB,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAE/B,+BAA+B;IAC/B,+BAA+B;IAC/B,2EAA2E;IAC3E,gFAAgF;IAChF,EAAE;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,EAAE;IACF,+EAA+E;IAC/E,oEAAoE;IACpE,EAAE;IACF,wCAAwC;IACxC,6EAA6E;IAC7E,0EAA0E;IAC1E,+EAA+E;IAC/E,uEAAuE;IACvE,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE;QAChC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,2DAA2D;IAC3D,2DAA2D;IAC3D,MAAM,aAAa,GAAG,IAAI,OAAO,CAAoD,CAAC,OAAO,EAAE,EAAE;QAC/F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,IAAI,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACzC,IAAI,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEzC,2DAA2D;IAC3D,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,iDAAiD;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAClD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,iDAAiD;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAClD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,iBAAiB;IACjB,IAAI,SAAqC,CAAC;IAC1C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,GAAG,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,oCAAoC;YACpC,gBAAgB,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,GAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAoB,OAAO,CAAC,SAAS,EAAE;QACjD,WAAW;QACX,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACxC,MAAM;KACP,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAElE,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;IAEnC,8CAA8C;IAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAExD,UAAU;IACV,IAAI,SAAS;QAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -11,17 +11,22 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export * from './storage/index.js';
|
|
13
13
|
export * from './execution/index.js';
|
|
14
|
-
export { repoInit, repoFind, repoGet, type InitRepositoryResult, } from './repository.js';
|
|
15
|
-
export { repoGc, type GcOptions, type GcResult } from './gc.js';
|
|
16
|
-
export { computeHash
|
|
14
|
+
export { repoInit, repoFind, repoGet, type InitRepositoryResult, } from './storage/local/repository.js';
|
|
15
|
+
export { repoGc, type GcOptions, type GcResult } from './storage/local/gc.js';
|
|
16
|
+
export { computeHash } from './objects.js';
|
|
17
|
+
export { objectWrite, objectWriteStream, objectRead, objectExists, } from './storage/local/LocalObjectStore.js';
|
|
18
|
+
export { objectPath, objectAbbrev } from './storage/local/localHelpers.js';
|
|
17
19
|
export { packageImport, packageExport, packageRemove, packageList, packageGetLatestVersion, packageResolve, packageRead, type PackageImportResult, type PackageExportResult, } from './packages.js';
|
|
18
20
|
export { workspaceList, workspaceCreate, workspaceRemove, workspaceGetState, workspaceGetPackage, workspaceGetRoot, workspaceSetRoot, workspaceDeploy, workspaceExport, type WorkspaceExportResult, type WorkspaceRemoveOptions, type WorkspaceDeployOptions, } from './workspaces.js';
|
|
19
21
|
export { treeRead, treeWrite, datasetRead, datasetWrite, type TreeObject, } from './trees.js';
|
|
20
22
|
export { packageListTree, packageGetDataset, workspaceListTree, workspaceGetDataset, workspaceGetDatasetHash, workspaceSetDataset, workspaceSetDatasetByHash, workspaceGetTree, type WorkspaceSetDatasetOptions, type WorkspaceGetTreeOptions, type TreeNode, type TreeBranchNode, type TreeLeafNode, } from './trees.js';
|
|
21
23
|
export { packageListTasks, packageGetTask, workspaceListTasks, workspaceGetTask, workspaceGetTaskHash, } from './tasks.js';
|
|
22
|
-
export { inputsHash, executionGet, executionGetOutput, executionListForTask, executionList, executionFindCurrent, type CurrentExecutionRef, executionReadLog, type LogReadOptions, evaluateCommandIr,
|
|
24
|
+
export { inputsHash, executionGet, executionGetOutput, executionListForTask, executionList, executionFindCurrent, type CurrentExecutionRef, executionReadLog, type LogReadOptions, evaluateCommandIr, } from './executions.js';
|
|
25
|
+
export { taskExecute, type ExecuteOptions, type ExecutionResult, } from './execution/LocalTaskRunner.js';
|
|
26
|
+
export { getBootId, getPidStartTime, isProcessAlive, } from './execution/processHelpers.js';
|
|
23
27
|
export { dataflowExecute, dataflowStart, dataflowGetGraph, dataflowGetReadyTasks, dataflowCheckCache, dataflowGetDependentsToSkip, dataflowResolveInputHashes, parsePathString, type DataflowGraph, type DataflowOptions, type DataflowResult, type TaskExecutionResult, } from './dataflow.js';
|
|
24
|
-
export {
|
|
28
|
+
export { type DataflowExecutionState, type DataflowExecutionStatus, type TaskState, type TaskStatus as DataflowTaskStatus, type ExecutionEvent, type DataflowGraph as DataflowGraphType, type DataflowGraphTask as DataflowGraphTaskType, type InitializeResult, type PrepareTaskResult, type TaskExecuteResult, type TaskCompletedResult, type TaskFailedResult, type FinalizeResult, stepInitialize, stepGetReady, stepPrepareTask, stepTaskStarted, stepTaskCompleted, stepTaskFailed, stepTasksSkipped, stepIsComplete, stepFinalize, stepCancel, type StepInitializeOptions, type ExecutionStateStore, type TaskStatusDetails, type ExecutionStatusDetails, InMemoryStateStore, FileStateStore, type DataflowOrchestrator, type ExecutionHandle, type ExecutionStatus as OrchestratorExecutionStatus, type OrchestratorStartOptions, type TaskCompletedCallback, LocalOrchestrator, stateToStatus, type ApiDataflowEventType, type ApiDataflowEvent, type ApiExecutionStatus, type ApiExecutionSummary, type ApiExecutionState, coreEventToApiEvent, coreStatusToApiStatus, coreStateToApiState, } from './dataflow/index.js';
|
|
29
|
+
export { acquireWorkspaceLock, getWorkspaceLockState, getWorkspaceLockHolder, lockStateToHolderInfo, isLockHolderAlive, workspaceLockPath, type WorkspaceLockHandle, type AcquireLockOptions, } from './storage/local/LocalLockService.js';
|
|
25
30
|
export { workspaceStatus, type DatasetStatus, type TaskStatus, type DatasetStatusInfo, type TaskStatusInfo, type WorkspaceStatusResult, } from './workspaceStatus.js';
|
|
26
31
|
export { E3Error, RepositoryNotFoundError, RepoNotFoundError, RepoAlreadyExistsError, RepoStatusConflictError, WorkspaceNotFoundError, WorkspaceNotDeployedError, WorkspaceExistsError, WorkspaceLockError, type LockHolderInfo, PackageNotFoundError, PackageInvalidError, PackageExistsError, DatasetNotFoundError, TaskNotFoundError, ObjectNotFoundError, ObjectCorruptError, ExecutionCorruptError, DataflowError, DataflowAbortedError, PermissionDeniedError, isNotFoundError, isPermissionError, isExistsError, wrapError, } from './errors.js';
|
|
27
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAUH,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AASrC,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,oBAAoB,GAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -23,12 +23,15 @@ export * from './execution/index.js';
|
|
|
23
23
|
// =============================================================================
|
|
24
24
|
// These functions use repoPath directly. Future versions will also accept
|
|
25
25
|
// a StorageBackend for backend-agnostic operation.
|
|
26
|
-
// Repository management
|
|
27
|
-
export { repoInit, repoFind, repoGet, } from './repository.js';
|
|
28
|
-
// Garbage collection
|
|
29
|
-
export { repoGc } from './gc.js';
|
|
26
|
+
// Repository management (local filesystem)
|
|
27
|
+
export { repoInit, repoFind, repoGet, } from './storage/local/repository.js';
|
|
28
|
+
// Garbage collection (local filesystem)
|
|
29
|
+
export { repoGc } from './storage/local/gc.js';
|
|
30
30
|
// Object storage
|
|
31
|
-
export { computeHash
|
|
31
|
+
export { computeHash } from './objects.js';
|
|
32
|
+
// Local object storage functions (for backwards compatibility)
|
|
33
|
+
export { objectWrite, objectWriteStream, objectRead, objectExists, } from './storage/local/LocalObjectStore.js';
|
|
34
|
+
export { objectPath, objectAbbrev } from './storage/local/localHelpers.js';
|
|
32
35
|
// Package operations
|
|
33
36
|
export { packageImport, packageExport, packageRemove, packageList, packageGetLatestVersion, packageResolve, packageRead, } from './packages.js';
|
|
34
37
|
// Workspace operations
|
|
@@ -51,15 +54,19 @@ executionFindCurrent,
|
|
|
51
54
|
executionReadLog,
|
|
52
55
|
// Note: LogChunk is exported from './storage/index.js' (aligned interface)
|
|
53
56
|
// Command IR evaluation
|
|
54
|
-
evaluateCommandIr,
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
57
|
+
evaluateCommandIr, } from './executions.js';
|
|
58
|
+
// Local process execution (in execution/ directory)
|
|
59
|
+
export { taskExecute, } from './execution/LocalTaskRunner.js';
|
|
60
|
+
// Process identification helpers (local execution support)
|
|
61
|
+
export { getBootId, getPidStartTime, isProcessAlive, } from './execution/processHelpers.js';
|
|
59
62
|
// Dataflow execution
|
|
60
63
|
export { dataflowExecute, dataflowStart, dataflowGetGraph, dataflowGetReadyTasks, dataflowCheckCache, dataflowGetDependentsToSkip, dataflowResolveInputHashes, parsePathString, } from './dataflow.js';
|
|
61
|
-
//
|
|
62
|
-
export {
|
|
64
|
+
// Resumable dataflow execution
|
|
65
|
+
export {
|
|
66
|
+
// Step functions
|
|
67
|
+
stepInitialize, stepGetReady, stepPrepareTask, stepTaskStarted, stepTaskCompleted, stepTaskFailed, stepTasksSkipped, stepIsComplete, stepFinalize, stepCancel, InMemoryStateStore, FileStateStore, LocalOrchestrator, stateToStatus, coreEventToApiEvent, coreStatusToApiStatus, coreStateToApiState, } from './dataflow/index.js';
|
|
68
|
+
// Workspace locking (in storage/local/)
|
|
69
|
+
export { acquireWorkspaceLock, getWorkspaceLockState, getWorkspaceLockHolder, lockStateToHolderInfo, isLockHolderAlive, workspaceLockPath, } from './storage/local/LocalLockService.js';
|
|
63
70
|
// Workspace status
|
|
64
71
|
export { workspaceStatus, } from './workspaceStatus.js';
|
|
65
72
|
// Errors
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAChF,sEAAsE;AACtE,kDAAkD;AAClD,8CAA8C;AAC9C,wCAAwC;AAExC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAChF,0EAA0E;AAC1E,mDAAmD;AAEnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/objects.d.ts
CHANGED
|
@@ -3,60 +3,13 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Calculate SHA256 hash of data
|
|
7
|
-
*/
|
|
8
|
-
export declare function computeHash(data: Uint8Array): string;
|
|
9
|
-
/**
|
|
10
|
-
* Atomically write an object to the repository
|
|
11
|
-
*
|
|
12
|
-
* @param repoPath - Path to e3 repository
|
|
13
|
-
* @param data - Data to store
|
|
14
|
-
* @returns SHA256 hash of the data
|
|
15
|
-
*/
|
|
16
|
-
export declare function objectWrite(repoPath: string, data: Uint8Array): Promise<string>;
|
|
17
|
-
/**
|
|
18
|
-
* Atomically write a stream to the repository
|
|
6
|
+
* Calculate SHA256 hash of data.
|
|
19
7
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @returns SHA256 hash of the data
|
|
23
|
-
*/
|
|
24
|
-
export declare function objectWriteStream(repoPath: string, stream: ReadableStream<Uint8Array>): Promise<string>;
|
|
25
|
-
/**
|
|
26
|
-
* Read an object from the repository
|
|
8
|
+
* This is the core hashing function used throughout e3 for content addressing.
|
|
9
|
+
* It's storage-agnostic and can be used with any backend.
|
|
27
10
|
*
|
|
28
|
-
* @param
|
|
29
|
-
* @
|
|
30
|
-
* @returns Object data
|
|
31
|
-
* @throws {ObjectNotFoundError} If object not found
|
|
11
|
+
* @param data - Data to hash
|
|
12
|
+
* @returns SHA256 hash as a hex string
|
|
32
13
|
*/
|
|
33
|
-
export declare function
|
|
34
|
-
/**
|
|
35
|
-
* Check if an object exists in the repository
|
|
36
|
-
*
|
|
37
|
-
* @param repoPath - Path to e3 repository
|
|
38
|
-
* @param hash - SHA256 hash of the object
|
|
39
|
-
* @returns true if object exists
|
|
40
|
-
*/
|
|
41
|
-
export declare function objectExists(repoPath: string, hash: string): Promise<boolean>;
|
|
42
|
-
/**
|
|
43
|
-
* Get the filesystem path for an object
|
|
44
|
-
*
|
|
45
|
-
* @param repoPath - Path to e3 repository
|
|
46
|
-
* @param hash - SHA256 hash of the object
|
|
47
|
-
* @returns Filesystem path: objects/<hash[0..2]>/<hash[2..]>.beast2
|
|
48
|
-
*/
|
|
49
|
-
export declare function objectPath(repoPath: string, hash: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* Get the minimum unambiguous prefix length for an object hash.
|
|
52
|
-
*
|
|
53
|
-
* Scans the object store to find the shortest prefix of the given hash
|
|
54
|
-
* that uniquely identifies it among all stored objects.
|
|
55
|
-
*
|
|
56
|
-
* @param repoPath - Path to e3 repository
|
|
57
|
-
* @param hash - Full SHA256 hash of the object
|
|
58
|
-
* @param minLength - Minimum prefix length to return (default: 4)
|
|
59
|
-
* @returns Minimum unambiguous prefix length
|
|
60
|
-
*/
|
|
61
|
-
export declare function objectAbbrev(repoPath: string, hash: string, minLength?: number): Promise<number>;
|
|
14
|
+
export declare function computeHash(data: Uint8Array): string;
|
|
62
15
|
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEpD"}
|