@elaraai/e3-core 1.0.4 → 1.0.6

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 (92) hide show
  1. package/README.md +3 -2
  2. package/dist/src/dataflow/orchestrator/LocalOrchestrator.d.ts.map +1 -1
  3. package/dist/src/dataflow/orchestrator/LocalOrchestrator.js +65 -6
  4. package/dist/src/dataflow/orchestrator/LocalOrchestrator.js.map +1 -1
  5. package/dist/src/dataflow/steps.d.ts.map +1 -1
  6. package/dist/src/dataflow/steps.js +2 -3
  7. package/dist/src/dataflow/steps.js.map +1 -1
  8. package/dist/src/dataflow/steps.spec.js +1 -0
  9. package/dist/src/dataflow/steps.spec.js.map +1 -1
  10. package/dist/src/dataflow-orchestration.spec.js +399 -0
  11. package/dist/src/dataflow-orchestration.spec.js.map +1 -1
  12. package/dist/src/dataflow.d.ts.map +1 -1
  13. package/dist/src/dataflow.js +2 -3
  14. package/dist/src/dataflow.js.map +1 -1
  15. package/dist/src/dataflow.spec.js +2 -152
  16. package/dist/src/dataflow.spec.js.map +1 -1
  17. package/dist/src/dataset-refs.spec.d.ts +6 -0
  18. package/dist/src/dataset-refs.spec.d.ts.map +1 -0
  19. package/dist/src/dataset-refs.spec.js +107 -0
  20. package/dist/src/dataset-refs.spec.js.map +1 -0
  21. package/dist/src/execution/LocalTaskRunner.d.ts +3 -0
  22. package/dist/src/execution/LocalTaskRunner.d.ts.map +1 -1
  23. package/dist/src/execution/LocalTaskRunner.js +81 -125
  24. package/dist/src/execution/LocalTaskRunner.js.map +1 -1
  25. package/dist/src/execution/LocalTaskRunner.spec.d.ts +6 -0
  26. package/dist/src/execution/LocalTaskRunner.spec.d.ts.map +1 -0
  27. package/dist/src/execution/LocalTaskRunner.spec.js +52 -0
  28. package/dist/src/execution/LocalTaskRunner.spec.js.map +1 -0
  29. package/dist/src/execution/MockTaskRunner.d.ts +8 -0
  30. package/dist/src/execution/MockTaskRunner.d.ts.map +1 -1
  31. package/dist/src/execution/MockTaskRunner.js +21 -0
  32. package/dist/src/execution/MockTaskRunner.js.map +1 -1
  33. package/dist/src/execution/index.d.ts +2 -0
  34. package/dist/src/execution/index.d.ts.map +1 -1
  35. package/dist/src/execution/index.js +4 -0
  36. package/dist/src/execution/index.js.map +1 -1
  37. package/dist/src/execution/interfaces.d.ts +11 -0
  38. package/dist/src/execution/interfaces.d.ts.map +1 -1
  39. package/dist/src/execution/processExec.d.ts +108 -0
  40. package/dist/src/execution/processExec.d.ts.map +1 -0
  41. package/dist/src/execution/processExec.js +271 -0
  42. package/dist/src/execution/processExec.js.map +1 -0
  43. package/dist/src/execution/runDetached.d.ts +83 -0
  44. package/dist/src/execution/runDetached.d.ts.map +1 -0
  45. package/dist/src/execution/runDetached.js +90 -0
  46. package/dist/src/execution/runDetached.js.map +1 -0
  47. package/dist/src/execution/runDetached.spec.d.ts +6 -0
  48. package/dist/src/execution/runDetached.spec.d.ts.map +1 -0
  49. package/dist/src/execution/runDetached.spec.js +193 -0
  50. package/dist/src/execution/runDetached.spec.js.map +1 -0
  51. package/dist/src/gc.spec.js +36 -3
  52. package/dist/src/gc.spec.js.map +1 -1
  53. package/dist/src/objects.spec.js +3 -1
  54. package/dist/src/objects.spec.js.map +1 -1
  55. package/dist/src/packages.d.ts.map +1 -1
  56. package/dist/src/packages.js +13 -5
  57. package/dist/src/packages.js.map +1 -1
  58. package/dist/src/storage/in-memory/InMemoryStorage.d.ts +4 -0
  59. package/dist/src/storage/in-memory/InMemoryStorage.d.ts.map +1 -1
  60. package/dist/src/storage/in-memory/InMemoryStorage.js +9 -0
  61. package/dist/src/storage/in-memory/InMemoryStorage.js.map +1 -1
  62. package/dist/src/storage/interfaces.d.ts +19 -0
  63. package/dist/src/storage/interfaces.d.ts.map +1 -1
  64. package/dist/src/storage/local/LocalDatasetRefStore.d.ts.map +1 -1
  65. package/dist/src/storage/local/LocalDatasetRefStore.js +41 -4
  66. package/dist/src/storage/local/LocalDatasetRefStore.js.map +1 -1
  67. package/dist/src/storage/local/LocalLockService.spec.js +3 -1
  68. package/dist/src/storage/local/LocalLockService.spec.js.map +1 -1
  69. package/dist/src/storage/local/LocalRefStore.d.ts +4 -0
  70. package/dist/src/storage/local/LocalRefStore.d.ts.map +1 -1
  71. package/dist/src/storage/local/LocalRefStore.js +11 -0
  72. package/dist/src/storage/local/LocalRefStore.js.map +1 -1
  73. package/dist/src/storage/local/gc.d.ts.map +1 -1
  74. package/dist/src/storage/local/gc.js +22 -0
  75. package/dist/src/storage/local/gc.js.map +1 -1
  76. package/dist/src/tasks.d.ts.map +1 -1
  77. package/dist/src/tasks.js +2 -3
  78. package/dist/src/tasks.js.map +1 -1
  79. package/dist/src/trees.d.ts.map +1 -1
  80. package/dist/src/trees.js +3 -5
  81. package/dist/src/trees.js.map +1 -1
  82. package/dist/src/workspaceStatus.d.ts.map +1 -1
  83. package/dist/src/workspaceStatus.js +16 -11
  84. package/dist/src/workspaceStatus.js.map +1 -1
  85. package/dist/src/workspaceStatus.spec.d.ts +6 -0
  86. package/dist/src/workspaceStatus.spec.d.ts.map +1 -0
  87. package/dist/src/workspaceStatus.spec.js +156 -0
  88. package/dist/src/workspaceStatus.spec.js.map +1 -0
  89. package/dist/src/workspaces.d.ts.map +1 -1
  90. package/dist/src/workspaces.js +15 -4
  91. package/dist/src/workspaces.js.map +1 -1
  92. package/package.json +6 -4
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { describe, it, before, after } from 'node:test';
6
+ import assert from 'node:assert/strict';
7
+ import { mkdtempSync, mkdirSync, rmSync } from 'node:fs';
8
+ import { tmpdir } from 'node:os';
9
+ import * as path from 'node:path';
10
+ import { collectNodeModulesBins } from './LocalTaskRunner.js';
11
+ describe('collectNodeModulesBins', () => {
12
+ let root;
13
+ before(() => {
14
+ root = mkdtempSync(path.join(tmpdir(), 'e3-bin-walk-'));
15
+ });
16
+ after(() => {
17
+ rmSync(root, { recursive: true, force: true });
18
+ });
19
+ // Filter out any .bin dirs the walk picks up OUTSIDE our temp subtree
20
+ // (the walk always reaches `/` and a system-wide node_modules above the
21
+ // temp would otherwise leak into the assertion).
22
+ const within = (entries, base) => entries.filter((b) => b.startsWith(base + path.sep));
23
+ it('finds .bin in the start dir', () => {
24
+ const proj = path.join(root, 'a');
25
+ const bin = path.join(proj, 'node_modules', '.bin');
26
+ mkdirSync(bin, { recursive: true });
27
+ assert.deepEqual(within(collectNodeModulesBins(proj), root), [bin]);
28
+ });
29
+ it('walks up to a parent .bin from a nested subdirectory (typical .repos case)', () => {
30
+ const proj = path.join(root, 'b');
31
+ const bin = path.join(proj, 'node_modules', '.bin');
32
+ const nested = path.join(proj, '.repos', 'workspace_id');
33
+ mkdirSync(bin, { recursive: true });
34
+ mkdirSync(nested, { recursive: true });
35
+ assert.deepEqual(within(collectNodeModulesBins(nested), root), [bin]);
36
+ });
37
+ it('returns an empty list when no node_modules/.bin exists in the subtree', () => {
38
+ const island = path.join(root, 'c', 'no-modules-anywhere');
39
+ mkdirSync(island, { recursive: true });
40
+ assert.deepEqual(within(collectNodeModulesBins(island), root), []);
41
+ });
42
+ it('collects every .bin on the walk-up path, closest first', () => {
43
+ const outer = path.join(root, 'd');
44
+ const inner = path.join(outer, 'inner-pkg');
45
+ const outerBin = path.join(outer, 'node_modules', '.bin');
46
+ const innerBin = path.join(inner, 'node_modules', '.bin');
47
+ mkdirSync(outerBin, { recursive: true });
48
+ mkdirSync(innerBin, { recursive: true });
49
+ assert.deepEqual(within(collectNodeModulesBins(inner), root), [innerBin, outerBin]);
50
+ });
51
+ });
52
+ //# sourceMappingURL=LocalTaskRunner.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalTaskRunner.spec.js","sourceRoot":"","sources":["../../../src/execution/LocalTaskRunner.spec.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { StorageBackend } from '../storage/interfaces.js';
6
6
  import type { TaskRunner, TaskExecuteOptions, TaskResult } from './interfaces.js';
7
+ import type { DetachedSpec, DetachedResult, DetachedRunOptions } from './runDetached.js';
7
8
  /**
8
9
  * Record of a single task execution call.
9
10
  */
@@ -45,5 +46,12 @@ export declare class MockTaskRunner implements TaskRunner {
45
46
  */
46
47
  clearCalls(): void;
47
48
  execute(_storage: StorageBackend, taskHash: string, inputHashes: string[], options?: TaskExecuteOptions): Promise<TaskResult>;
49
+ private detachedResult;
50
+ private detachedCalls;
51
+ /** Set the result returned by runDetached. */
52
+ setDetachedResult(result: DetachedResult): void;
53
+ /** Get all recorded runDetached calls. */
54
+ getDetachedCalls(): readonly DetachedSpec[];
55
+ runDetached(spec: DetachedSpec, _options?: DetachedRunOptions): Promise<DetachedResult>;
48
56
  }
49
57
  //# sourceMappingURL=MockTaskRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockTaskRunner.d.ts","sourceRoot":"","sources":["../../../src/execution/MockTaskRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,OAAO,CAAiG;IAChH,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,aAAa,CAA4E;IAEjG;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;IAIrH;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI1C;;;;OAIG;IACH,QAAQ,IAAI,SAAS,YAAY,EAAE;IAInC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIZ,OAAO,CACX,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,CAAC;CASvB"}
1
+ {"version":3,"file":"MockTaskRunner.d.ts","sourceRoot":"","sources":["../../../src/execution/MockTaskRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,OAAO,CAAiG;IAChH,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,aAAa,CAA4E;IAEjG;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;IAIrH;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI1C;;;;OAIG;IACH,QAAQ,IAAI,SAAS,YAAY,EAAE;IAInC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIZ,OAAO,CACX,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAUtB,OAAO,CAAC,cAAc,CAOpB;IACF,OAAO,CAAC,aAAa,CAAsB;IAE3C,8CAA8C;IAC9C,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI/C,0CAA0C;IAC1C,gBAAgB,IAAI,SAAS,YAAY,EAAE;IAI3C,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;CAIxF"}
@@ -50,5 +50,26 @@ export class MockTaskRunner {
50
50
  }
51
51
  return this.defaultResult;
52
52
  }
53
+ detachedResult = {
54
+ kind: 'success',
55
+ value: new Uint8Array(),
56
+ stdout: '',
57
+ stderr: '',
58
+ stdoutTruncated: false,
59
+ stderrTruncated: false,
60
+ };
61
+ detachedCalls = [];
62
+ /** Set the result returned by runDetached. */
63
+ setDetachedResult(result) {
64
+ this.detachedResult = result;
65
+ }
66
+ /** Get all recorded runDetached calls. */
67
+ getDetachedCalls() {
68
+ return this.detachedCalls;
69
+ }
70
+ runDetached(spec, _options) {
71
+ this.detachedCalls.push(spec);
72
+ return Promise.resolve(this.detachedResult);
73
+ }
53
74
  }
54
75
  //# sourceMappingURL=MockTaskRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockTaskRunner.js","sourceRoot":"","sources":["../../../src/execution/MockTaskRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,OAAO,GAAG,IAAI,GAAG,EAAsF,CAAC;IACxG,KAAK,GAAmB,EAAE,CAAC;IAC3B,aAAa,GAAe,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAEjG;;;;;OAKG;IACH,SAAS,CAAC,QAAgB,EAAE,MAAkF;QAC5G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAkB;QACjC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAwB,EACxB,QAAgB,EAChB,WAAqB,EACrB,OAA4B;QAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"MockTaskRunner.js","sourceRoot":"","sources":["../../../src/execution/MockTaskRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,OAAO,GAAG,IAAI,GAAG,EAAsF,CAAC;IACxG,KAAK,GAAmB,EAAE,CAAC;IAC3B,aAAa,GAAe,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAEjG;;;;;OAKG;IACH,SAAS,CAAC,QAAgB,EAAE,MAAkF;QAC5G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAkB;QACjC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAwB,EACxB,QAAgB,EAChB,WAAqB,EACrB,OAA4B;QAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,cAAc,GAAmB;QACvC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAI,UAAU,EAAE;QACvB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;KACvB,CAAC;IACM,aAAa,GAAmB,EAAE,CAAC;IAE3C,8CAA8C;IAC9C,iBAAiB,CAAC,MAAsB;QACtC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,0CAA0C;IAC1C,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,IAAkB,EAAE,QAA6B;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -13,4 +13,6 @@
13
13
  export { type TaskExecuteOptions, type TaskResult, type TaskRunner, type ExecutionHandle, type DataflowStatus, type DataflowExecuteOptions, type DataflowExecuteResult, type DataflowExecutor, type TaskGraph, type DataflowGetGraphFn, type DataflowCheckCacheFn, type DataflowWriteOutputFn, type DataflowGetReadyTasksFn, } from './interfaces.js';
14
14
  export { LocalTaskRunner } from './LocalTaskRunner.js';
15
15
  export { MockTaskRunner, type MockTaskCall } from './MockTaskRunner.js';
16
+ export { runDetached, type DetachedSpec, type DetachedResult, type DetachedRunOptions, } from './runDetached.js';
17
+ export { marshalInputsToDir, marshalBytesToDir, readOutputFile, buildRunnerArgv, spawnAndCapture, type SpawnAndCaptureOptions, type SpawnAndCaptureResult, } from './processExec.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,KAAK,SAAS,EAEd,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,KAAK,SAAS,EAEd,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,EACL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
@@ -5,4 +5,8 @@
5
5
  // TaskRunner implementations
6
6
  export { LocalTaskRunner } from './LocalTaskRunner.js';
7
7
  export { MockTaskRunner } from './MockTaskRunner.js';
8
+ // Graph-free execution (functions / one-shot)
9
+ export { runDetached, } from './runDetached.js';
10
+ // Persistence-free process helpers (shared by tracked + detached paths)
11
+ export { marshalInputsToDir, marshalBytesToDir, readOutputFile, buildRunnerArgv, spawnAndCapture, } from './processExec.js';
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAExE,8CAA8C;AAC9C,OAAO,EACL,WAAW,GAIZ,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,GAGhB,MAAM,kBAAkB,CAAC"}
@@ -15,6 +15,7 @@
15
15
  * Step Functions can replace the local loop while reusing all e3-core logic.
16
16
  */
17
17
  import type { StorageBackend, LockHandle } from '../storage/interfaces.js';
18
+ import type { DetachedSpec, DetachedResult, DetachedRunOptions } from './runDetached.js';
18
19
  /**
19
20
  * Options for task execution.
20
21
  */
@@ -64,6 +65,16 @@ export interface TaskRunner {
64
65
  * @returns Task result
65
66
  */
66
67
  execute(storage: StorageBackend, taskHash: string, inputHashes: string[], options?: TaskExecuteOptions): Promise<TaskResult>;
68
+ /**
69
+ * Run a body IR detached from the dataflow graph (function / one-shot
70
+ * call): marshal the arg bytes, run on the spec's runner, return the
71
+ * result inline. Writes nothing durable — no output object, no execution
72
+ * record, no logs.
73
+ *
74
+ * @param spec - Body IR, arg bytes, runner, and limits
75
+ * @param options - Cancellation + runner search anchor
76
+ */
77
+ runDetached(spec: DetachedSpec, options?: DetachedRunOptions): Promise<DetachedResult>;
67
78
  }
68
79
  /**
69
80
  * Handle to a running dataflow execution.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/execution/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/execution/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { type RunnerValue } from '@elaraai/e3-types';
6
+ import type { StorageBackend } from '../storage/interfaces.js';
7
+ /**
8
+ * Walk up from `startDir` and return every `node_modules/.bin` directory
9
+ * found, ordered from nearest to furthest. Used to prepend each to a
10
+ * spawned process's PATH so the runner CLI resolves no matter which level
11
+ * of the monorepo a binary was hoisted to — pnpm puts shared bins at the
12
+ * workspace root, package-local bins next to their consumer.
13
+ */
14
+ export declare function collectNodeModulesBins(startDir: string): string[];
15
+ /**
16
+ * Marshal input objects to staged `.beast2` files in a scratch directory.
17
+ *
18
+ * This is the input-staging loop extracted from `taskExecute`: each input
19
+ * hash is read from the object store and written as `input-<i>.beast2`.
20
+ *
21
+ * @returns The staged file paths, in input order
22
+ */
23
+ export declare function marshalInputsToDir(storage: StorageBackend, repo: string, scratchDir: string, inputHashes: string[]): Promise<string[]>;
24
+ /**
25
+ * Marshal raw value bytes to staged `.beast2` files in a scratch directory.
26
+ *
27
+ * The graph-free path writes args to scratch directly from request bytes —
28
+ * no object-store round trip.
29
+ *
30
+ * @returns The staged file paths, in arg order
31
+ */
32
+ export declare function marshalBytesToDir(scratchDir: string, blobs: Uint8Array[]): Promise<string[]>;
33
+ /**
34
+ * Read a runner's output file back as bytes.
35
+ *
36
+ * Extracted so the graph-free path returns bytes without writing them to
37
+ * the object store.
38
+ */
39
+ export declare function readOutputFile(outputPath: string): Promise<Uint8Array>;
40
+ /**
41
+ * Build the full runner argv for a function/one-shot call.
42
+ *
43
+ * This is the function analogue of a task's `commandIr` output — built
44
+ * directly from the wire runner variant, no IR evaluation. (Task mapping:
45
+ * `args` ⇄ the `-i` data inputs, `bodyIr` ⇄ the trailing IR positional
46
+ * that was `input-0`.)
47
+ */
48
+ export declare function buildRunnerArgv(runner: RunnerValue, argPaths: string[], outputPath: string, bodyIrPath: string): string[];
49
+ /**
50
+ * Options for {@link spawnAndCapture}.
51
+ */
52
+ export interface SpawnAndCaptureOptions {
53
+ /** Wall-clock limit in ms; on expiry the process group is killed and the
54
+ * result reports `timedOut: true`. */
55
+ timeoutMs?: number;
56
+ /** AbortSignal for cancellation (kills the process group). */
57
+ signal?: AbortSignal;
58
+ /** Streaming stdout callback (called per chunk, before tail capture). */
59
+ onStdout?: (data: string) => void;
60
+ /** Streaming stderr callback (called per chunk, before tail capture). */
61
+ onStderr?: (data: string) => void;
62
+ /** Per-stream in-memory tail cap in bytes (default 64 KiB). */
63
+ maxLogBytes?: number;
64
+ /** Directories whose ancestor `node_modules/.bin` dirs are prepended to
65
+ * PATH so runner CLIs resolve (deduped, nearest first). */
66
+ searchDirs?: string[];
67
+ /** Called once the child has spawned, with its pid (or null). The tracked
68
+ * path uses this to write the `running` execution status. */
69
+ onSpawned?: (pid: number | null) => void | Promise<void>;
70
+ }
71
+ /**
72
+ * Result of {@link spawnAndCapture}.
73
+ */
74
+ export interface SpawnAndCaptureResult {
75
+ /** Process exit code (null if killed by signal or spawn failed) */
76
+ exitCode: number | null;
77
+ /** Spawn-failure / non-zero-exit description (null on success) */
78
+ error: string | null;
79
+ /** True if the timeout fired and killed the process group */
80
+ timedOut: boolean;
81
+ /** Bounded tail of stdout (per maxLogBytes) */
82
+ stdoutTail: string;
83
+ /** Bounded tail of stderr (per maxLogBytes) */
84
+ stderrTail: string;
85
+ /** True if stdout bytes were dropped from the tail */
86
+ stdoutTruncated: boolean;
87
+ /** True if stderr bytes were dropped from the tail */
88
+ stderrTruncated: boolean;
89
+ }
90
+ /**
91
+ * Spawn a command and capture its output — the `runCommand` mechanics from
92
+ * LocalTaskRunner minus every storage write.
93
+ *
94
+ * Keeps: cross-spawn/nodeSpawn selection, node_modules/.bin PATH
95
+ * augmentation, `detached: true` process-group management, stdout/stderr
96
+ * listeners (streaming callbacks + bounded in-memory tails), process-group
97
+ * kill, timeout + AbortSignal wiring.
98
+ *
99
+ * Process Lifecycle Management
100
+ * ============================
101
+ * We use detached: true to create a new process group, allowing us to kill
102
+ * the entire process tree by signaling the negative PID (process group
103
+ * leader). Process groups are flat, not hierarchical — a task that calls
104
+ * setsid() escapes the kill; that is a known, accepted limitation (see the
105
+ * discussion that used to live in runCommand).
106
+ */
107
+ export declare function spawnAndCapture(args: string[], scratchDir: string, options?: SpawnAndCaptureOptions): Promise<SpawnAndCaptureResult>;
108
+ //# sourceMappingURL=processExec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processExec.d.ts","sourceRoot":"","sources":["../../../src/execution/processExec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAc/D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjE;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAOV;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;2CACuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;gEAC4D;IAC5D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;kEAC8D;IAC9D,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kEAAkE;IAClE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAmJhC"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Persistence-free process execution helpers.
7
+ *
8
+ * These are the process mechanics extracted from `taskExecute`'s runCommand
9
+ * (LocalTaskRunner.ts) so they can be shared by the tracked dataflow path
10
+ * and the graph-free `runDetached` path. None of these functions touch the
11
+ * storage backend — persistence (execution records, logs, output objects)
12
+ * stays with the caller.
13
+ */
14
+ import * as fs from 'fs/promises';
15
+ import { existsSync } from 'fs';
16
+ import * as path from 'path';
17
+ import crossSpawn from 'cross-spawn';
18
+ import { spawn as nodeSpawn } from 'child_process';
19
+ import { runnerToArgv } from '@elaraai/e3-types';
20
+ // On Windows, pnpm's workspace bins are `.cmd` / `.ps1` files, not real
21
+ // executables. Node's `spawn(name, ...)` doesn't honour PATHEXT and
22
+ // won't find `east-node.cmd` from a bare `east-node` invocation;
23
+ // blanket `shell: true` works for that case but joins args into a
24
+ // shell-parsed string, which then breaks commands like
25
+ // `bash -c 'exit 42'` (the customTask path's bash wrapper). cross-spawn
26
+ // targets exactly this gap — PATHEXT-aware resolution + correct arg
27
+ // quoting for `.cmd`/`.bat`, passthrough for real binaries on POSIX.
28
+ const spawn = (process.platform === 'win32'
29
+ ? crossSpawn
30
+ : nodeSpawn);
31
+ /**
32
+ * Walk up from `startDir` and return every `node_modules/.bin` directory
33
+ * found, ordered from nearest to furthest. Used to prepend each to a
34
+ * spawned process's PATH so the runner CLI resolves no matter which level
35
+ * of the monorepo a binary was hoisted to — pnpm puts shared bins at the
36
+ * workspace root, package-local bins next to their consumer.
37
+ */
38
+ export function collectNodeModulesBins(startDir) {
39
+ const bins = [];
40
+ let dir = path.resolve(startDir);
41
+ while (true) {
42
+ const candidate = path.join(dir, 'node_modules', '.bin');
43
+ if (existsSync(candidate))
44
+ bins.push(candidate);
45
+ const parent = path.dirname(dir);
46
+ if (parent === dir)
47
+ return bins;
48
+ dir = parent;
49
+ }
50
+ }
51
+ /**
52
+ * Marshal input objects to staged `.beast2` files in a scratch directory.
53
+ *
54
+ * This is the input-staging loop extracted from `taskExecute`: each input
55
+ * hash is read from the object store and written as `input-<i>.beast2`.
56
+ *
57
+ * @returns The staged file paths, in input order
58
+ */
59
+ export async function marshalInputsToDir(storage, repo, scratchDir, inputHashes) {
60
+ const inputPaths = [];
61
+ for (let i = 0; i < inputHashes.length; i++) {
62
+ const inputPath = path.join(scratchDir, `input-${i}.beast2`);
63
+ const inputData = await storage.objects.read(repo, inputHashes[i]);
64
+ await fs.writeFile(inputPath, inputData);
65
+ inputPaths.push(inputPath);
66
+ }
67
+ return inputPaths;
68
+ }
69
+ /**
70
+ * Marshal raw value bytes to staged `.beast2` files in a scratch directory.
71
+ *
72
+ * The graph-free path writes args to scratch directly from request bytes —
73
+ * no object-store round trip.
74
+ *
75
+ * @returns The staged file paths, in arg order
76
+ */
77
+ export async function marshalBytesToDir(scratchDir, blobs) {
78
+ const argPaths = [];
79
+ for (let i = 0; i < blobs.length; i++) {
80
+ const argPath = path.join(scratchDir, `input-${i}.beast2`);
81
+ await fs.writeFile(argPath, blobs[i]);
82
+ argPaths.push(argPath);
83
+ }
84
+ return argPaths;
85
+ }
86
+ /**
87
+ * Read a runner's output file back as bytes.
88
+ *
89
+ * Extracted so the graph-free path returns bytes without writing them to
90
+ * the object store.
91
+ */
92
+ export async function readOutputFile(outputPath) {
93
+ return fs.readFile(outputPath);
94
+ }
95
+ /**
96
+ * Build the full runner argv for a function/one-shot call.
97
+ *
98
+ * This is the function analogue of a task's `commandIr` output — built
99
+ * directly from the wire runner variant, no IR evaluation. (Task mapping:
100
+ * `args` ⇄ the `-i` data inputs, `bodyIr` ⇄ the trailing IR positional
101
+ * that was `input-0`.)
102
+ */
103
+ export function buildRunnerArgv(runner, argPaths, outputPath, bodyIrPath) {
104
+ return [
105
+ ...runnerToArgv(runner),
106
+ ...argPaths.flatMap((p) => ['-i', p]),
107
+ '-o', outputPath,
108
+ bodyIrPath,
109
+ ];
110
+ }
111
+ /**
112
+ * Spawn a command and capture its output — the `runCommand` mechanics from
113
+ * LocalTaskRunner minus every storage write.
114
+ *
115
+ * Keeps: cross-spawn/nodeSpawn selection, node_modules/.bin PATH
116
+ * augmentation, `detached: true` process-group management, stdout/stderr
117
+ * listeners (streaming callbacks + bounded in-memory tails), process-group
118
+ * kill, timeout + AbortSignal wiring.
119
+ *
120
+ * Process Lifecycle Management
121
+ * ============================
122
+ * We use detached: true to create a new process group, allowing us to kill
123
+ * the entire process tree by signaling the negative PID (process group
124
+ * leader). Process groups are flat, not hierarchical — a task that calls
125
+ * setsid() escapes the kill; that is a known, accepted limitation (see the
126
+ * discussion that used to live in runCommand).
127
+ */
128
+ export async function spawnAndCapture(args, scratchDir, options = {}) {
129
+ const [cmd, ...cmdArgs] = args;
130
+ if (!cmd) {
131
+ return {
132
+ exitCode: null,
133
+ error: 'Empty command',
134
+ timedOut: false,
135
+ stdoutTail: '',
136
+ stderrTail: '',
137
+ stdoutTruncated: false,
138
+ stderrTruncated: false,
139
+ };
140
+ }
141
+ // Collect every node_modules/.bin walking up from each search dir and
142
+ // prepend the lot (deduped) so the spawn finds the installed runner
143
+ // regardless of where in a monorepo the project sits — the nearest .bin
144
+ // often lacks the runner (it's hoisted to the workspace root), so we
145
+ // can't stop at the first hit.
146
+ //
147
+ // Pass env ONLY when we have something to add. Without `env`, the child
148
+ // inherits process.env directly — exactly what we want when no augment
149
+ // is available (the inherited PATH is the proven-working state).
150
+ const seen = new Set();
151
+ const projectBins = (options.searchDirs ?? [])
152
+ .flatMap((d) => collectNodeModulesBins(d))
153
+ .filter((b) => (seen.has(b) ? false : (seen.add(b), true)));
154
+ const spawnOpts = {
155
+ // Run in the per-execution scratch dir, not the caller's cwd. Tasks
156
+ // address inputs/outputs by absolute path and resolve their runner via
157
+ // PATH, so cwd isn't part of the contract — and inheriting the
158
+ // caller's cwd pins it. On Windows a live process's cwd can't be
159
+ // removed, so a `detached` child that outlives a killed parent would
160
+ // hold the repo/project dir open and block its cleanup (EBUSY).
161
+ cwd: scratchDir,
162
+ stdio: ['ignore', 'pipe', 'pipe'],
163
+ detached: true,
164
+ windowsHide: true,
165
+ };
166
+ if (projectBins.length > 0) {
167
+ const pathSep = process.platform === 'win32' ? ';' : ':';
168
+ spawnOpts.env = {
169
+ ...process.env,
170
+ PATH: `${projectBins.join(pathSep)}${pathSep}${process.env.PATH ?? ''}`,
171
+ };
172
+ }
173
+ const child = spawn(cmd, cmdArgs, spawnOpts);
174
+ // Set up event listeners IMMEDIATELY before any async work to avoid
175
+ // missing events if the process completes quickly. Capture bounded tails
176
+ // of both streams so callers get a useful diagnostic without ballooning
177
+ // memory on chatty processes.
178
+ const tailBytes = options.maxLogBytes ?? 64 * 1024;
179
+ let stdoutTail = '';
180
+ let stderrTail = '';
181
+ let stdoutTruncated = false;
182
+ let stderrTruncated = false;
183
+ let timedOut = false;
184
+ const resultPromise = new Promise((resolve) => {
185
+ child.on('error', (err) => {
186
+ resolve({ exitCode: null, error: `Failed to spawn: ${err.message}` });
187
+ });
188
+ child.on('close', (code) => {
189
+ if (code === 0) {
190
+ resolve({ exitCode: code, error: null });
191
+ }
192
+ else {
193
+ const tail = stderrTail.trim();
194
+ const detail = tail ? `\nstderr:\n${tail}` : '';
195
+ resolve({ exitCode: code, error: `Exit code: ${code}${detail}` });
196
+ }
197
+ });
198
+ });
199
+ child.stdout?.on('data', (data) => {
200
+ const str = data.toString('utf-8');
201
+ const combined = stdoutTail + str;
202
+ if (combined.length > tailBytes)
203
+ stdoutTruncated = true;
204
+ stdoutTail = combined.slice(-tailBytes);
205
+ if (options.onStdout)
206
+ options.onStdout(str);
207
+ });
208
+ child.stderr?.on('data', (data) => {
209
+ const str = data.toString('utf-8');
210
+ const combined = stderrTail + str;
211
+ if (combined.length > tailBytes)
212
+ stderrTruncated = true;
213
+ stderrTail = combined.slice(-tailBytes);
214
+ if (options.onStderr)
215
+ options.onStderr(str);
216
+ });
217
+ // Helper to kill the entire process group (child and all its descendants).
218
+ // With detached: true, child.pid is the process group leader, so killing
219
+ // -child.pid sends the signal to all processes in that group.
220
+ const killProcessGroup = () => {
221
+ if (child.pid) {
222
+ try {
223
+ process.kill(-child.pid, 'SIGKILL');
224
+ }
225
+ catch {
226
+ // Process may have already exited
227
+ }
228
+ }
229
+ };
230
+ // Handle timeout
231
+ let timeoutId;
232
+ if (options.timeoutMs) {
233
+ timeoutId = setTimeout(() => {
234
+ timedOut = true;
235
+ killProcessGroup();
236
+ }, options.timeoutMs);
237
+ }
238
+ // Handle abort signal
239
+ if (options.signal) {
240
+ if (options.signal.aborted) {
241
+ // Already aborted before we started
242
+ killProcessGroup();
243
+ }
244
+ else {
245
+ options.signal.addEventListener('abort', killProcessGroup, { once: true });
246
+ }
247
+ }
248
+ // Notify the caller of the spawned pid (tracked path writes its
249
+ // `running` status here).
250
+ if (options.onSpawned) {
251
+ await options.onSpawned(child.pid ?? null);
252
+ }
253
+ // Wait for process to complete
254
+ const result = await resultPromise;
255
+ // Cleanup
256
+ if (timeoutId)
257
+ clearTimeout(timeoutId);
258
+ if (options.signal) {
259
+ options.signal.removeEventListener('abort', killProcessGroup);
260
+ }
261
+ return {
262
+ exitCode: result.exitCode,
263
+ error: result.error,
264
+ timedOut,
265
+ stdoutTail,
266
+ stderrTail,
267
+ stdoutTruncated,
268
+ stderrTruncated,
269
+ };
270
+ }
271
+ //# sourceMappingURL=processExec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processExec.js","sourceRoot":"","sources":["../../../src/execution/processExec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAGnE,wEAAwE;AACxE,oEAAoE;AACpE,iEAAiE;AACjE,kEAAkE;AAClE,uDAAuD;AACvD,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,MAAM,KAAK,GAAqB,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC3D,CAAC,CAAE,UAA0C;IAC7C,CAAC,CAAC,SAAS,CAAC,CAAC;AAEf;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,IAAY,EACZ,UAAkB,EAClB,WAAqB;IAErB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,KAAmB;IAEnB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,QAAkB,EAClB,UAAkB,EAClB,UAAkB;IAElB,OAAO;QACL,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,EAAE,UAAU;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAc,EACd,UAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,oEAAoE;IACpE,wEAAwE;IACxE,qEAAqE;IACrE,+BAA+B;IAC/B,EAAE;IACF,wEAAwE;IACxE,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;SAC3C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAgC;QAC7C,oEAAoE;QACpE,uEAAuE;QACvE,+DAA+D;QAC/D,iEAAiE;QACjE,qEAAqE;QACrE,gEAAgE;QAChE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,IAAI;KAClB,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzD,SAAS,CAAC,GAAG,GAAG;YACd,GAAG,OAAO,CAAC,GAAG;YACd,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAE7C,oEAAoE;IACpE,yEAAyE;IACzE,wEAAwE;IACxE,8BAA8B;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC;IACnD,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,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,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS;YAAE,eAAe,GAAG,IAAI,CAAC;QACxD,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS;YAAE,eAAe,GAAG,IAAI,CAAC;QACxD,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,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,SAAS,EAAE,CAAC;QACtB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC;YAChB,gBAAgB,EAAE,CAAC;QACrB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxB,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,gEAAgE;IAChE,0BAA0B;IAC1B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;IAEnC,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;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ;QACR,UAAU;QACV,UAAU;QACV,eAAe;QACf,eAAe;KAChB,CAAC;AACJ,CAAC"}