@elaraai/e3 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.
- package/README.md +3 -2
- package/dist/src/export.d.ts.map +1 -1
- package/dist/src/export.js +22 -1
- package/dist/src/export.js.map +1 -1
- package/dist/src/function.d.ts +55 -0
- package/dist/src/function.d.ts.map +1 -0
- package/dist/src/function.js +27 -0
- package/dist/src/function.js.map +1 -0
- package/dist/src/function.spec.d.ts +6 -0
- package/dist/src/function.spec.d.ts.map +1 -0
- package/dist/src/function.spec.js +184 -0
- package/dist/src/function.spec.js.map +1 -0
- package/dist/src/index.d.ts +7 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/package.d.ts +2 -2
- package/dist/src/package.d.ts.map +1 -1
- package/dist/src/package.js +15 -0
- package/dist/src/package.js.map +1 -1
- package/dist/src/runner.d.ts +87 -0
- package/dist/src/runner.d.ts.map +1 -0
- package/dist/src/runner.js +71 -0
- package/dist/src/runner.js.map +1 -0
- package/dist/src/runner.spec.d.ts +6 -0
- package/dist/src/runner.spec.d.ts.map +1 -0
- package/dist/src/runner.spec.js +60 -0
- package/dist/src/runner.spec.js.map +1 -0
- package/dist/src/task.d.ts +2 -1
- package/dist/src/task.d.ts.map +1 -1
- package/dist/src/task.js +9 -2
- package/dist/src/task.js.map +1 -1
- package/dist/src/task.spec.js +1 -1
- package/dist/src/task.spec.js.map +1 -1
- package/dist/src/types.d.ts +29 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -89,8 +89,9 @@ Dual AGPL-3.0 / Commercial. See [LICENSE.md](./LICENSE.md).
|
|
|
89
89
|
- [@elaraai/east-node-io](https://www.npmjs.com/package/@elaraai/east-node-io): SQLite, PostgreSQL, MySQL, MongoDB, Redis, S3, FTP, SFTP, XLSX, XML, compression
|
|
90
90
|
- [@elaraai/east-node-cli](https://www.npmjs.com/package/@elaraai/east-node-cli): CLI for running East IR programs in Node.js
|
|
91
91
|
|
|
92
|
-
- **[East C](https://github.com/elaraai/east-workspace/tree/main/libs/east-c)**: C11 native runtime for executing East IR.
|
|
93
|
-
-
|
|
92
|
+
- **[East C](https://github.com/elaraai/east-workspace/tree/main/libs/east-c)**: C11 native runtime for executing East IR. Distributed via npm (launcher + per-platform optional dependencies) and as tarballs on each GitHub Release.
|
|
93
|
+
- [@elaraai/east-c-cli](https://www.npmjs.com/package/@elaraai/east-c-cli): npm launcher — installs the matching native binary as an optional dependency
|
|
94
|
+
- `east-c`: Core runtime — type system, IR interpreter, builtins, serialization (Beast2, JSON, CSV, East text)
|
|
94
95
|
- `east-c-std`: Console, FileSystem, Fetch, Crypto, Time, Path, Random
|
|
95
96
|
- `east-c-cli`: CLI for running East IR programs natively
|
|
96
97
|
|
package/dist/src/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAG1D;;;;;;;;;;;;;;;GAeG;AAEH,wBAAsB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmMlH;AAOD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE"}
|
package/dist/src/export.js
CHANGED
|
@@ -15,7 +15,8 @@ import * as fs from 'node:fs';
|
|
|
15
15
|
import { createHash } from 'node:crypto';
|
|
16
16
|
import yazl from 'yazl';
|
|
17
17
|
import { variant, encodeBeast2For, encodeEastIR, EastIR, AsyncEastIR, printIdentifier, SortedMap, toEastTypeValue } from '@elaraai/east';
|
|
18
|
-
import { DatasetRefType, PackageObjectType, TaskObjectType } from '@elaraai/e3-types';
|
|
18
|
+
import { DatasetRefType, PackageObjectType, TaskObjectType, FunctionObjectType } from '@elaraai/e3-types';
|
|
19
|
+
import { runnerToVariant } from './runner.js';
|
|
19
20
|
/**
|
|
20
21
|
* Exports a package to a .zip bundle.
|
|
21
22
|
*
|
|
@@ -153,6 +154,25 @@ export async function export_(pkg, outputPath) {
|
|
|
153
154
|
throw new Error(`Unknown package item kind: ${item.kind}`);
|
|
154
155
|
}
|
|
155
156
|
}
|
|
157
|
+
// Write function objects (functions are not in pkg.contents — they have
|
|
158
|
+
// no deps and never enter the data tree). Mirrors how tasks are written:
|
|
159
|
+
// body IR as a content object, then a small FunctionObject pointing at it.
|
|
160
|
+
const functions = new SortedMap(); // name -> function object hash
|
|
161
|
+
const functionEncoder = encodeBeast2For(FunctionObjectType);
|
|
162
|
+
for (const [fname, fdef] of Object.entries(pkg.functions)) {
|
|
163
|
+
const bodyIrData = encodeEastIR(fdef.body);
|
|
164
|
+
const bodyIrHash = addObject(zipfile, Buffer.from(bodyIrData));
|
|
165
|
+
// The FunctionObject stores homoiconic type VALUES (EastTypeType), not
|
|
166
|
+
// the raw TS EastType definitions Expr.type yields.
|
|
167
|
+
const fnObject = {
|
|
168
|
+
bodyIr: bodyIrHash,
|
|
169
|
+
inputTypes: fdef.inputTypes.map((t) => toEastTypeValue(t)),
|
|
170
|
+
outputType: toEastTypeValue(fdef.outputType),
|
|
171
|
+
runner: runnerToVariant(fdef.runner),
|
|
172
|
+
};
|
|
173
|
+
const fnHash = addObject(zipfile, Buffer.from(functionEncoder(fnObject)));
|
|
174
|
+
functions.set(fname, fnHash);
|
|
175
|
+
}
|
|
156
176
|
// Get the root structure
|
|
157
177
|
const rootStructure = structures.get('');
|
|
158
178
|
if (!rootStructure) {
|
|
@@ -165,6 +185,7 @@ export async function export_(pkg, outputPath) {
|
|
|
165
185
|
structure: rootStructure,
|
|
166
186
|
refs,
|
|
167
187
|
},
|
|
188
|
+
functions,
|
|
168
189
|
};
|
|
169
190
|
const packageObjectEncoder = encodeBeast2For(PackageObjectType);
|
|
170
191
|
const packageObjectData = packageObjectEncoder(packageObject);
|
package/dist/src/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzI,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Named function definitions for e3 packages.
|
|
7
|
+
*
|
|
8
|
+
* `e3.function` declares a named, typed function stored in a package and
|
|
9
|
+
* invoked by name with argument values over the CLI (`e3 call`) and HTTP
|
|
10
|
+
* API. It is e3's "stored procedure" / RPC method: not wired to datasets,
|
|
11
|
+
* not part of the dataflow graph, and its result is returned inline to the
|
|
12
|
+
* caller — nothing durable is written by a call.
|
|
13
|
+
*/
|
|
14
|
+
import type { AsyncFunctionExpr, CallableAsyncFunctionExpr, CallableFunctionExpr, EastType, FunctionExpr } from '@elaraai/east';
|
|
15
|
+
import type { FunctionDef } from './types.js';
|
|
16
|
+
import { type FunctionRunner } from './runner.js';
|
|
17
|
+
/**
|
|
18
|
+
* Defines a named function stored in a package.
|
|
19
|
+
*
|
|
20
|
+
* The body is an ordinary East function (sync or async); its signature IS
|
|
21
|
+
* the parameter list — `inputTypes` / `outputType` are inferred from the
|
|
22
|
+
* East function, so there is no separate type array to keep in sync.
|
|
23
|
+
*
|
|
24
|
+
* Unlike a task, a function creates no dataset tree nodes and no command IR:
|
|
25
|
+
* its body IR is stored directly as a content object, its signature lives on
|
|
26
|
+
* the function object, and the executor builds the runner argv directly at
|
|
27
|
+
* call time (which is what enables a request-time runner override).
|
|
28
|
+
*
|
|
29
|
+
* @typeParam Name - Function name (literal type)
|
|
30
|
+
* @typeParam Inputs - Positional parameter types
|
|
31
|
+
* @typeParam Output - Return type
|
|
32
|
+
* @param name - Function name (unique within the package)
|
|
33
|
+
* @param fn - The East function body. Pure compute — no dataset reads; may
|
|
34
|
+
* be async (platform calls / IO).
|
|
35
|
+
* @param config - Optional runner selection. Only the known runtimes are
|
|
36
|
+
* allowed (no `custom` raw-argv runner — see {@link FunctionRunner}).
|
|
37
|
+
* @returns A FunctionDef to pass to `e3.package`
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const forecast = e3.function(
|
|
42
|
+
* 'forecast',
|
|
43
|
+
* East.function([IntegerType, FloatType], FloatType, ($, periods, growthRate) => {
|
|
44
|
+
* ...
|
|
45
|
+
* }),
|
|
46
|
+
* { runner: { runtime: 'east-py', platforms: ['east-py-datascience'] } },
|
|
47
|
+
* );
|
|
48
|
+
*
|
|
49
|
+
* const pkg = e3.package('planning', '1.0.0', forecast);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function function_<Name extends string, Inputs extends EastType[], Output extends EastType>(name: Name, fn: FunctionExpr<Inputs, Output> | CallableFunctionExpr<Inputs, Output> | AsyncFunctionExpr<Inputs, Output> | CallableAsyncFunctionExpr<Inputs, Output>, config?: {
|
|
53
|
+
runner?: FunctionRunner;
|
|
54
|
+
}): FunctionDef<Inputs, Output>;
|
|
55
|
+
//# sourceMappingURL=function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/function.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,QAAQ,EAAE,EAAE,MAAM,SAAS,QAAQ,EAC/F,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7C,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,GACnC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { Expr } from '@elaraai/east';
|
|
6
|
+
import { DEFAULT_RUNNER, runnerToVariant } from './runner.js';
|
|
7
|
+
export function function_(name, fn, config) {
|
|
8
|
+
if (!name) {
|
|
9
|
+
throw new Error('e3.function requires a non-empty name');
|
|
10
|
+
}
|
|
11
|
+
const runner = config?.runner ?? DEFAULT_RUNNER;
|
|
12
|
+
// Validate eagerly so a bad runner fails at definition time, not export time.
|
|
13
|
+
runnerToVariant(runner);
|
|
14
|
+
// Keep the full EastIR bundle (IR + source map) so export.ts can encode
|
|
15
|
+
// with encodeEastIR and preserve source locations.
|
|
16
|
+
const eastIR = fn.toIR();
|
|
17
|
+
const fnType = Expr.type(fn);
|
|
18
|
+
return {
|
|
19
|
+
kind: 'function',
|
|
20
|
+
name,
|
|
21
|
+
body: eastIR,
|
|
22
|
+
inputTypes: fnType.inputs,
|
|
23
|
+
outputType: fnType.output,
|
|
24
|
+
runner,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/function.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AA6CnF,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,EAAwD,EACxD,MAAoC;IAEpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,cAAc,CAAC;IAChD,8EAA8E;IAC9E,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,wEAAwE;IACxE,mDAAmD;IACnD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAe,CAA6C,CAAC;IAEtF,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,IAAI,EAAE,MAAa;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.spec.d.ts","sourceRoot":"","sources":["../../src/function.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, before, after } from 'node:test';
|
|
6
|
+
import * as assert from 'node:assert';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as os from 'node:os';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import yauzl from 'yauzl';
|
|
11
|
+
import { East, IntegerType, FloatType, StringType, StructType, DictType, decodeBeast2For, encodeBeast2For, toEastTypeValue, variant, } from '@elaraai/east';
|
|
12
|
+
import { PackageObjectType, PackageDataType, FunctionObjectType, decodePackageObject, } from '@elaraai/e3-types';
|
|
13
|
+
import { function_ } from './function.js';
|
|
14
|
+
import { runnerToVariant } from './runner.js';
|
|
15
|
+
import { package_ } from './package.js';
|
|
16
|
+
import { export_ } from './export.js';
|
|
17
|
+
import { input } from './input.js';
|
|
18
|
+
import { task } from './task.js';
|
|
19
|
+
/**
|
|
20
|
+
* Helper to read a zip file and return entries as a map of path -> buffer
|
|
21
|
+
*/
|
|
22
|
+
async function readZip(zipPath) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
yauzl.open(zipPath, { lazyEntries: true }, (err, zipfile) => {
|
|
25
|
+
if (err)
|
|
26
|
+
return reject(err);
|
|
27
|
+
if (!zipfile)
|
|
28
|
+
return reject(new Error('No zipfile'));
|
|
29
|
+
const entries = new Map();
|
|
30
|
+
zipfile.readEntry();
|
|
31
|
+
zipfile.on('entry', (entry) => {
|
|
32
|
+
if (/\/$/.test(entry.fileName)) {
|
|
33
|
+
zipfile.readEntry();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
zipfile.openReadStream(entry, (err, readStream) => {
|
|
37
|
+
if (err)
|
|
38
|
+
return reject(err);
|
|
39
|
+
if (!readStream)
|
|
40
|
+
return reject(new Error('No read stream'));
|
|
41
|
+
const chunks = [];
|
|
42
|
+
readStream.on('data', (chunk) => chunks.push(chunk));
|
|
43
|
+
readStream.on('end', () => {
|
|
44
|
+
entries.set(entry.fileName, Buffer.concat(chunks));
|
|
45
|
+
zipfile.readEntry();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
zipfile.on('end', () => resolve(entries));
|
|
51
|
+
zipfile.on('error', reject);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function objectEntry(entries, hash) {
|
|
56
|
+
return entries.get(`objects/${hash.slice(0, 2)}/${hash.slice(2)}.beast2`);
|
|
57
|
+
}
|
|
58
|
+
describe('function_', () => {
|
|
59
|
+
it('infers inputTypes/outputType from the East function', () => {
|
|
60
|
+
const fn = function_('forecast', East.function([IntegerType, FloatType], FloatType, ($, periods, rate) => rate.multiply(periods.toFloat())));
|
|
61
|
+
assert.strictEqual(fn.kind, 'function');
|
|
62
|
+
assert.strictEqual(fn.name, 'forecast');
|
|
63
|
+
assert.deepStrictEqual(toEastTypeValue(fn.inputTypes[0]), toEastTypeValue(IntegerType));
|
|
64
|
+
assert.deepStrictEqual(toEastTypeValue(fn.inputTypes[1]), toEastTypeValue(FloatType));
|
|
65
|
+
assert.deepStrictEqual(toEastTypeValue(fn.outputType), toEastTypeValue(FloatType));
|
|
66
|
+
// Defaults to DEFAULT_RUNNER (east-node + east-node-std)
|
|
67
|
+
assert.deepStrictEqual(runnerToVariant(fn.runner), variant('east_node', {
|
|
68
|
+
platforms: ['@elaraai/east-node-std'],
|
|
69
|
+
}));
|
|
70
|
+
});
|
|
71
|
+
it('rejects an empty name', () => {
|
|
72
|
+
assert.throws(() => function_('', East.function([IntegerType], IntegerType, ($, x) => x)), /non-empty name/);
|
|
73
|
+
});
|
|
74
|
+
it('rejects a custom runner at definition time', () => {
|
|
75
|
+
assert.throws(() => function_('bad', East.function([IntegerType], IntegerType, ($, x) => x),
|
|
76
|
+
// Cast: the typed signature already forbids this — verify the runtime backstop
|
|
77
|
+
{ runner: { runtime: 'custom', command: ['python3'] } }), /custom/);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('runnerToVariant', () => {
|
|
81
|
+
it('maps each known runtime and coalesces missing platforms', () => {
|
|
82
|
+
assert.deepStrictEqual(runnerToVariant({ runtime: 'east-py' }), variant('east_py', { platforms: [] }));
|
|
83
|
+
assert.deepStrictEqual(runnerToVariant({ runtime: 'east-c', platforms: ['east-c-std'] }), variant('east_c', { platforms: ['east-c-std'] }));
|
|
84
|
+
});
|
|
85
|
+
it('collapses { custom: name } platform entries to plain strings', () => {
|
|
86
|
+
assert.deepStrictEqual(runnerToVariant({ runtime: 'east-py', platforms: ['east-py-std', { custom: 'my-platform' }] }), variant('east_py', { platforms: ['east-py-std', 'my-platform'] }));
|
|
87
|
+
});
|
|
88
|
+
it('rejects the custom runtime', () => {
|
|
89
|
+
assert.throws(() => runnerToVariant({ runtime: 'custom', command: ['bash', '-c', 'true'] }), /custom/);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('package_ with functions', () => {
|
|
93
|
+
it('collects functions by name, separate from contents', () => {
|
|
94
|
+
const fn = function_('double', East.function([IntegerType], IntegerType, ($, x) => x.multiply(2n)));
|
|
95
|
+
const pkg = package_('fns', '1.0.0', fn);
|
|
96
|
+
assert.strictEqual(pkg.functions['double'], fn);
|
|
97
|
+
assert.strictEqual(pkg.contents.length, 0);
|
|
98
|
+
});
|
|
99
|
+
it('merges functions from nested packages', () => {
|
|
100
|
+
const fn = function_('double', East.function([IntegerType], IntegerType, ($, x) => x.multiply(2n)));
|
|
101
|
+
const inner = package_('inner', '1.0.0', fn);
|
|
102
|
+
const outer = package_('outer', '1.0.0', inner);
|
|
103
|
+
assert.strictEqual(outer.functions['double'], fn);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('export_ with functions', () => {
|
|
107
|
+
let tempDir;
|
|
108
|
+
before(() => {
|
|
109
|
+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'e3-function-export-'));
|
|
110
|
+
});
|
|
111
|
+
after(() => {
|
|
112
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
113
|
+
});
|
|
114
|
+
it('round-trips a FunctionObject through the bundle', async () => {
|
|
115
|
+
const greeting = input('greeting', StringType, 'hello');
|
|
116
|
+
const shout = task('shout', [greeting], East.function([StringType], StringType, ($, s) => s));
|
|
117
|
+
const double = function_('double', East.function([IntegerType], IntegerType, ($, x) => x.multiply(2n)), { runner: { runtime: 'east-node', platforms: ['@elaraai/east-node-std'] } });
|
|
118
|
+
const pkg = package_('fn-pkg', '1.0.0', shout, double);
|
|
119
|
+
const zipPath = path.join(tempDir, 'fn-pkg-1.0.0.zip');
|
|
120
|
+
await export_(pkg, zipPath);
|
|
121
|
+
const entries = await readZip(zipPath);
|
|
122
|
+
// Resolve the package object from the ref
|
|
123
|
+
const refData = entries.get('packages/fn-pkg/1.0.0');
|
|
124
|
+
assert.ok(refData, 'package ref missing');
|
|
125
|
+
const pkgHash = refData.toString('utf-8').trim();
|
|
126
|
+
const pkgData = objectEntry(entries, pkgHash);
|
|
127
|
+
assert.ok(pkgData, 'package object missing');
|
|
128
|
+
const pkgObject = decodeBeast2For(PackageObjectType)(pkgData);
|
|
129
|
+
// tasks/data unchanged by the function
|
|
130
|
+
assert.ok(pkgObject.tasks.get('shout'), 'task missing');
|
|
131
|
+
assert.ok(pkgObject.data.refs.get('inputs/greeting'), 'dataset ref missing');
|
|
132
|
+
// functions map points at a FunctionObject
|
|
133
|
+
const fnHash = pkgObject.functions.get('double');
|
|
134
|
+
assert.ok(fnHash, 'functions map missing entry');
|
|
135
|
+
const fnData = objectEntry(entries, fnHash);
|
|
136
|
+
assert.ok(fnData, 'FunctionObject missing from bundle');
|
|
137
|
+
const fnObject = decodeBeast2For(FunctionObjectType)(fnData);
|
|
138
|
+
// Note: decoded type values lack toEastTypeValue's cache symbol, so
|
|
139
|
+
// compare the structural fields rather than deep-equality on the object.
|
|
140
|
+
assert.strictEqual(fnObject.inputTypes.length, 1);
|
|
141
|
+
assert.strictEqual(fnObject.inputTypes[0].type, 'Integer');
|
|
142
|
+
assert.strictEqual(fnObject.outputType.type, 'Integer');
|
|
143
|
+
assert.deepStrictEqual(fnObject.runner, variant('east_node', { platforms: ['@elaraai/east-node-std'] }));
|
|
144
|
+
// The body IR object itself is in the bundle
|
|
145
|
+
assert.ok(objectEntry(entries, fnObject.bodyIr), 'bodyIr object missing from bundle');
|
|
146
|
+
});
|
|
147
|
+
it('produces identical output for the same package (deterministic)', async () => {
|
|
148
|
+
const fn = function_('double', East.function([IntegerType], IntegerType, ($, x) => x.multiply(2n)));
|
|
149
|
+
const pkg = package_('det-pkg', '1.0.0', fn);
|
|
150
|
+
const zip1 = path.join(tempDir, 'det1.zip');
|
|
151
|
+
const zip2 = path.join(tempDir, 'det2.zip');
|
|
152
|
+
await export_(pkg, zip1);
|
|
153
|
+
await export_(pkg, zip2);
|
|
154
|
+
assert.deepStrictEqual(fs.readFileSync(zip1), fs.readFileSync(zip2));
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('decodePackageObject', () => {
|
|
158
|
+
it('decodes the current format', () => {
|
|
159
|
+
const bytes = encodeBeast2For(PackageObjectType)({
|
|
160
|
+
tasks: new Map([['t', 'a'.repeat(64)]]),
|
|
161
|
+
data: { structure: variant('struct', new Map()), refs: new Map() },
|
|
162
|
+
functions: new Map([['f', 'b'.repeat(64)]]),
|
|
163
|
+
});
|
|
164
|
+
const decoded = decodePackageObject(bytes);
|
|
165
|
+
assert.strictEqual(decoded.functions.get('f'), 'b'.repeat(64));
|
|
166
|
+
});
|
|
167
|
+
it('decodes a pre-functions (legacy) package with functions defaulted empty', () => {
|
|
168
|
+
const LegacyPackageObjectType = StructType({
|
|
169
|
+
tasks: DictType(StringType, StringType),
|
|
170
|
+
data: PackageDataType,
|
|
171
|
+
});
|
|
172
|
+
const bytes = encodeBeast2For(LegacyPackageObjectType)({
|
|
173
|
+
tasks: new Map([['t', 'a'.repeat(64)]]),
|
|
174
|
+
data: { structure: variant('struct', new Map()), refs: new Map() },
|
|
175
|
+
});
|
|
176
|
+
// The strict decoder rejects old bytes...
|
|
177
|
+
assert.throws(() => decodeBeast2For(PackageObjectType)(bytes));
|
|
178
|
+
// ...but the tolerant decoder accepts them
|
|
179
|
+
const decoded = decodePackageObject(bytes);
|
|
180
|
+
assert.strictEqual(decoded.tasks.get('t'), 'a'.repeat(64));
|
|
181
|
+
assert.strictEqual(decoded.functions.size, 0);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=function.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.spec.js","sourceRoot":"","sources":["../../src/function.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -42,12 +42,15 @@
|
|
|
42
42
|
* await e3.export(pkg, 'package.zip');
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
|
-
import type { DatasetDef, DataTreeDef, DatasetsOf, MergeDatasets, PackageDef, PackageItem, TaskDef } from './types.js';
|
|
45
|
+
import type { DatasetDef, DataTreeDef, DatasetsOf, FunctionDef, MergeDatasets, PackageDef, PackageItem, TaskDef } from './types.js';
|
|
46
46
|
import { input } from './input.js';
|
|
47
47
|
import { task, customTask } from './task.js';
|
|
48
|
+
import { function_ } from './function.js';
|
|
48
49
|
import { package_ } from './package.js';
|
|
49
50
|
import { export_ } from './export.js';
|
|
50
|
-
export type { DataTreeDef, DatasetDef, DatasetsOf, TaskDef, PackageDef, PackageItem, MergeDatasets, };
|
|
51
|
+
export type { DataTreeDef, DatasetDef, DatasetsOf, FunctionDef, TaskDef, PackageDef, PackageItem, MergeDatasets, };
|
|
52
|
+
export type { Runner, FunctionRunner, Platform, EastPyPlatform, EastNodePlatform, EastCPlatform, } from './runner.js';
|
|
53
|
+
export { runnerToCommand, runnerToVariant, DEFAULT_RUNNER } from './runner.js';
|
|
51
54
|
/**
|
|
52
55
|
* The e3 SDK namespace.
|
|
53
56
|
*
|
|
@@ -57,11 +60,12 @@ declare const e3: {
|
|
|
57
60
|
input: typeof input;
|
|
58
61
|
task: typeof task;
|
|
59
62
|
customTask: typeof customTask;
|
|
63
|
+
function: typeof function_;
|
|
60
64
|
package: typeof package_;
|
|
61
65
|
export: typeof export_;
|
|
62
66
|
};
|
|
63
67
|
export default e3;
|
|
64
|
-
export { input, task, customTask, package_ as package, export_ as export };
|
|
68
|
+
export { input, task, customTask, function_, package_ as package, export_ as export };
|
|
65
69
|
export { inputsTree } from './input.js';
|
|
66
70
|
export { tasksTree } from './task.js';
|
|
67
71
|
export { sha256File, sha256Bytes, hashToPath } from './sha256.js';
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,EACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,EACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,CAAC;AAGF,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,QAAA,MAAM,EAAE;;;;;;;CAOP,CAAC;AAEF,eAAe,EAAE,CAAC;AAGlB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { input } from './input.js';
|
|
6
6
|
import { task, customTask } from './task.js';
|
|
7
|
+
import { function_ } from './function.js';
|
|
7
8
|
import { package_ } from './package.js';
|
|
8
9
|
import { export_ } from './export.js';
|
|
10
|
+
export { runnerToCommand, runnerToVariant, DEFAULT_RUNNER } from './runner.js';
|
|
9
11
|
/**
|
|
10
12
|
* The e3 SDK namespace.
|
|
11
13
|
*
|
|
@@ -15,12 +17,13 @@ const e3 = {
|
|
|
15
17
|
input,
|
|
16
18
|
task,
|
|
17
19
|
customTask,
|
|
20
|
+
function: function_,
|
|
18
21
|
package: package_,
|
|
19
22
|
export: export_,
|
|
20
23
|
};
|
|
21
24
|
export default e3;
|
|
22
25
|
// Also export individual functions for tree-shaking
|
|
23
|
-
export { input, task, customTask, package_ as package, export_ as export };
|
|
26
|
+
export { input, task, customTask, function_, package_ as package, export_ as export };
|
|
24
27
|
// Singleton tree definitions
|
|
25
28
|
export { inputsTree } from './input.js';
|
|
26
29
|
export { tasksTree } from './task.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqDH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAsBtC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,EAAE,GAAG;IACT,KAAK;IACL,IAAI;IACJ,UAAU;IACV,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,eAAe,EAAE,CAAC;AAElB,oDAAoD;AACpD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAEtF,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/src/package.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Package definitions for e3.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { FunctionDef, PackageDef, PackageItem } from './types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Creates a package definition from items.
|
|
11
11
|
*
|
|
@@ -37,5 +37,5 @@ import type { MergeDatasets, PackageDef, PackageItem } from './types.js';
|
|
|
37
37
|
* const helloTask = pkg.tasks.say_hello;
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
export declare function package_
|
|
40
|
+
export declare function package_(name: string, version: string, ...items: (PackageItem | FunctionDef | PackageDef<any>)[]): PackageDef<Record<string, unknown>>;
|
|
41
41
|
//# sourceMappingURL=package.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAQH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,GAAG,KAAK,EAAE,CAAC,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GACxD,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoFrC"}
|
package/dist/src/package.js
CHANGED
|
@@ -33,10 +33,20 @@
|
|
|
33
33
|
* const helloTask = pkg.tasks.say_hello;
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
|
+
// NOTE: the return is deliberately `PackageDef<Record<string, unknown>>`, NOT
|
|
37
|
+
// `PackageDef<MergeDatasets<TItems>>`. The precise merged-datasets map (used only
|
|
38
|
+
// for the optional `pkg.datasets.tasks.x.output` typed-access convenience) inlines
|
|
39
|
+
// every task's full dataset type; with rich task outputs that map exceeds tsc's
|
|
40
|
+
// type-serialization limit, so `export default e3.package(...)` failed with TS7056
|
|
41
|
+
// and forced authors to hand-annotate. Access datasets via the exported
|
|
42
|
+
// task/input consts (`myTask.output`, `myInput.path`) instead — fully typed.
|
|
36
43
|
export function package_(name, version, ...items) {
|
|
37
44
|
// Recursively collect all items and their transitive dependencies
|
|
38
45
|
const all_items = new Set();
|
|
39
46
|
const visited = new Set();
|
|
47
|
+
// Functions have no deps and never enter the data tree — collected by
|
|
48
|
+
// name, separately from all_items.
|
|
49
|
+
const functions = {};
|
|
40
50
|
function collect(item) {
|
|
41
51
|
if (visited.has(item))
|
|
42
52
|
return;
|
|
@@ -53,6 +63,10 @@ export function package_(name, version, ...items) {
|
|
|
53
63
|
for (const dep of item.contents) {
|
|
54
64
|
all_items.add(dep);
|
|
55
65
|
}
|
|
66
|
+
Object.assign(functions, item.functions);
|
|
67
|
+
}
|
|
68
|
+
else if (item.kind === "function") {
|
|
69
|
+
functions[item.name] = item;
|
|
56
70
|
}
|
|
57
71
|
else {
|
|
58
72
|
collect(item);
|
|
@@ -106,6 +120,7 @@ export function package_(name, version, ...items) {
|
|
|
106
120
|
version,
|
|
107
121
|
datasets: datasets,
|
|
108
122
|
contents: [...all_items],
|
|
123
|
+
functions,
|
|
109
124
|
};
|
|
110
125
|
}
|
|
111
126
|
//# sourceMappingURL=package.js.map
|
package/dist/src/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,OAAe,EACf,GAAG,
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { RunnerValue } from '@elaraai/e3-types';
|
|
6
|
+
/** Stock platforms shipped by `@elaraai/east-py-cli` runner. */
|
|
7
|
+
export type EastPyPlatform = 'east-py-std' | 'east-py-io' | 'east-py-datascience';
|
|
8
|
+
/** Stock platforms shipped by `@elaraai/east-node-cli` runner. */
|
|
9
|
+
export type EastNodePlatform = '@elaraai/east-node-std' | '@elaraai/east-node-io';
|
|
10
|
+
/** Stock platforms shipped by `@elaraai/east-c-cli` runner. */
|
|
11
|
+
export type EastCPlatform = 'east-c-std';
|
|
12
|
+
/**
|
|
13
|
+
* A platform argument: a stock literal, or an explicit user-defined name.
|
|
14
|
+
*
|
|
15
|
+
* The explicit `{ custom: '...' }` form is the only way to pass a non-stock
|
|
16
|
+
* name. Bare strings are rejected so a typo of a stock name (e.g.
|
|
17
|
+
* `'east-py-stdd'`) is a compile error instead of silently accepted.
|
|
18
|
+
*/
|
|
19
|
+
export type Platform<Known extends string> = Known | {
|
|
20
|
+
custom: string;
|
|
21
|
+
};
|
|
22
|
+
/** Non-empty tuple — at least one element required at the type level. */
|
|
23
|
+
type NonEmpty<T> = [T, ...T[]];
|
|
24
|
+
/**
|
|
25
|
+
* Runner selection for {@link task}.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* // east-c with the standard platform
|
|
30
|
+
* { runtime: 'east-c', platforms: ['east-c-std'] }
|
|
31
|
+
*
|
|
32
|
+
* // east-node with two stock platforms
|
|
33
|
+
* { runtime: 'east-node', platforms: ['@elaraai/east-node-std', '@elaraai/east-node-io'] }
|
|
34
|
+
*
|
|
35
|
+
* // east-py + a user-defined platform name
|
|
36
|
+
* { runtime: 'east-py', platforms: ['east-py-std', { custom: 'my-org-platform' }] }
|
|
37
|
+
*
|
|
38
|
+
* // Anything else: Julia, uv wrap, container exec, …
|
|
39
|
+
* { runtime: 'custom', command: ['uv', 'run', 'east-py', 'run', '-p', 'east-py-std'] }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export type Runner = {
|
|
43
|
+
runtime: 'east-py';
|
|
44
|
+
platforms?: Platform<EastPyPlatform>[];
|
|
45
|
+
} | {
|
|
46
|
+
runtime: 'east-node';
|
|
47
|
+
platforms?: Platform<EastNodePlatform>[];
|
|
48
|
+
} | {
|
|
49
|
+
runtime: 'east-c';
|
|
50
|
+
platforms?: Platform<EastCPlatform>[];
|
|
51
|
+
} | {
|
|
52
|
+
runtime: 'custom';
|
|
53
|
+
command: NonEmpty<string>;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* A {@link Runner} restricted to the known runtimes — the only runners an
|
|
57
|
+
* `e3.function` may use. The `custom` (raw-argv) runtime is task-only: a
|
|
58
|
+
* function's runner is stored on the wire and resolvable at call time, so
|
|
59
|
+
* allowing raw argv would be arbitrary command execution by construction.
|
|
60
|
+
*/
|
|
61
|
+
export type FunctionRunner = Exclude<Runner, {
|
|
62
|
+
runtime: 'custom';
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Convert a {@link Runner} to its wire-format {@link RunnerValue} variant
|
|
66
|
+
* (used by `e3.function` / `e3.export`). Rejects the `custom` runtime —
|
|
67
|
+
* prefer typing call sites as {@link FunctionRunner} so the rejection is a
|
|
68
|
+
* compile error; this throw is the runtime backstop.
|
|
69
|
+
*/
|
|
70
|
+
export declare function runnerToVariant(r: Runner): RunnerValue;
|
|
71
|
+
/**
|
|
72
|
+
* Resolves a {@link Runner} to the argv prefix. The `-i` / `-o` / IR path
|
|
73
|
+
* suffix is appended by {@link task}'s East command IR at evaluation time;
|
|
74
|
+
* this function only produces what goes ahead of those.
|
|
75
|
+
*/
|
|
76
|
+
export declare function runnerToCommand(r: Runner): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Default runner when `e3.task(..., { runner })` is omitted.
|
|
79
|
+
*
|
|
80
|
+
* east-node is the safer baseline: every e3 project already needs Node to
|
|
81
|
+
* compile and deploy, so the runner resolves with no extra toolchain. east-py
|
|
82
|
+
* needs a Python install + uv + east-py wheels on top, which is fine when a
|
|
83
|
+
* task actually uses python platforms but heavy as a default.
|
|
84
|
+
*/
|
|
85
|
+
export declare const DEFAULT_RUNNER: Runner;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,gEAAgE;AAChE,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,YAAY,GACZ,qBAAqB,CAAC;AAE1B,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,uBAAuB,CAAC;AAE5B,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GACrB,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,yEAAyE;AACzE,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,MAAM,GACd;IAAE,OAAO,EAAE,SAAS,CAAC;IAAG,SAAS,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAA;CAAE,GAChE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAA;CAAE,GAClE;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAI,SAAS,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAI,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAetD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Typed runner selection for {@link task}.
|
|
7
|
+
*
|
|
8
|
+
* Replaces the previous `runner: string[]` (raw argv) with a discriminated
|
|
9
|
+
* union pairing each runtime with the platform names it accepts. The literal
|
|
10
|
+
* platform sets are closed — a typo or a cross-runtime platform name is a
|
|
11
|
+
* compile error. User-defined platforms go through `{ custom: 'name' }` so
|
|
12
|
+
* the typed path stays typo-safe; the `custom` runtime branch is the full
|
|
13
|
+
* escape hatch (any argv).
|
|
14
|
+
*
|
|
15
|
+
* The runner is consumed at task-definition time inside `e3.task` and
|
|
16
|
+
* resolved into the existing argv-emitting `commandIr` constant — the wire
|
|
17
|
+
* format (`TaskObjectType`) is unchanged.
|
|
18
|
+
*
|
|
19
|
+
* `e3.function` instead stores the runner as a wire variant (`RunnerType`
|
|
20
|
+
* in e3-types) via {@link runnerToVariant}, which excludes the `custom`
|
|
21
|
+
* runtime (see {@link FunctionRunner}).
|
|
22
|
+
*/
|
|
23
|
+
import { variant } from '@elaraai/east';
|
|
24
|
+
/**
|
|
25
|
+
* Convert a {@link Runner} to its wire-format {@link RunnerValue} variant
|
|
26
|
+
* (used by `e3.function` / `e3.export`). Rejects the `custom` runtime —
|
|
27
|
+
* prefer typing call sites as {@link FunctionRunner} so the rejection is a
|
|
28
|
+
* compile error; this throw is the runtime backstop.
|
|
29
|
+
*/
|
|
30
|
+
export function runnerToVariant(r) {
|
|
31
|
+
if (r.runtime === 'custom') {
|
|
32
|
+
throw new Error("e3.function does not support the 'custom' runner — functions run only on a known runtime (east-node, east-py, east-c)");
|
|
33
|
+
}
|
|
34
|
+
// The SDK makes `platforms` optional and allows `{ custom: name }` entries;
|
|
35
|
+
// the wire type requires a plain string array — collapse both here, exactly
|
|
36
|
+
// like runnerToCommand.
|
|
37
|
+
const platforms = (r.platforms ?? []).map((p) => (typeof p === 'string' ? p : p.custom));
|
|
38
|
+
switch (r.runtime) {
|
|
39
|
+
case 'east-node': return variant('east_node', { platforms });
|
|
40
|
+
case 'east-py': return variant('east_py', { platforms });
|
|
41
|
+
case 'east-c': return variant('east_c', { platforms });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolves a {@link Runner} to the argv prefix. The `-i` / `-o` / IR path
|
|
46
|
+
* suffix is appended by {@link task}'s East command IR at evaluation time;
|
|
47
|
+
* this function only produces what goes ahead of those.
|
|
48
|
+
*/
|
|
49
|
+
export function runnerToCommand(r) {
|
|
50
|
+
if (r.runtime === 'custom')
|
|
51
|
+
return [...r.command];
|
|
52
|
+
const platforms = r.platforms ?? [];
|
|
53
|
+
const flags = [];
|
|
54
|
+
for (const p of platforms) {
|
|
55
|
+
flags.push('-p', typeof p === 'string' ? p : p.custom);
|
|
56
|
+
}
|
|
57
|
+
return [r.runtime, 'run', ...flags];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Default runner when `e3.task(..., { runner })` is omitted.
|
|
61
|
+
*
|
|
62
|
+
* east-node is the safer baseline: every e3 project already needs Node to
|
|
63
|
+
* compile and deploy, so the runner resolves with no extra toolchain. east-py
|
|
64
|
+
* needs a Python install + uv + east-py wheels on top, which is fine when a
|
|
65
|
+
* task actually uses python platforms but heavy as a default.
|
|
66
|
+
*/
|
|
67
|
+
export const DEFAULT_RUNNER = {
|
|
68
|
+
runtime: 'east-node',
|
|
69
|
+
platforms: ['@elaraai/east-node-std'],
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA8DxC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,wBAAwB;IACxB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,KAAK,SAAS,CAAC,CAAG,OAAO,OAAO,CAAC,SAAS,EAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC,CAAI,OAAO,OAAO,CAAC,QAAQ,EAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,CAAC,wBAAwB,CAAC;CACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.spec.d.ts","sourceRoot":"","sources":["../../src/runner.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it } from 'node:test';
|
|
6
|
+
import assert from 'node:assert/strict';
|
|
7
|
+
import { DEFAULT_RUNNER, runnerToCommand } from './runner.js';
|
|
8
|
+
describe('runnerToCommand', () => {
|
|
9
|
+
it('default is east-node + east-node-std (cheap to resolve in any e3 project)', () => {
|
|
10
|
+
assert.deepEqual(runnerToCommand(DEFAULT_RUNNER), ['east-node', 'run', '-p', '@elaraai/east-node-std']);
|
|
11
|
+
});
|
|
12
|
+
it('east-py with multiple stock platforms', () => {
|
|
13
|
+
const r = {
|
|
14
|
+
runtime: 'east-py',
|
|
15
|
+
platforms: ['east-py-std', 'east-py-io', 'east-py-datascience'],
|
|
16
|
+
};
|
|
17
|
+
assert.deepEqual(runnerToCommand(r), ['east-py', 'run', '-p', 'east-py-std', '-p', 'east-py-io', '-p', 'east-py-datascience']);
|
|
18
|
+
});
|
|
19
|
+
it('east-node uses the @elaraai/* scoped platform names verbatim', () => {
|
|
20
|
+
const r = {
|
|
21
|
+
runtime: 'east-node',
|
|
22
|
+
platforms: ['@elaraai/east-node-std', '@elaraai/east-node-io'],
|
|
23
|
+
};
|
|
24
|
+
assert.deepEqual(runnerToCommand(r), ['east-node', 'run', '-p', '@elaraai/east-node-std', '-p', '@elaraai/east-node-io']);
|
|
25
|
+
});
|
|
26
|
+
it('east-c with the std platform', () => {
|
|
27
|
+
const r = { runtime: 'east-c', platforms: ['east-c-std'] };
|
|
28
|
+
assert.deepEqual(runnerToCommand(r), ['east-c', 'run', '-p', 'east-c-std']);
|
|
29
|
+
});
|
|
30
|
+
it('mixes stock literals with explicit { custom: ... } user-defined platforms', () => {
|
|
31
|
+
const r = {
|
|
32
|
+
runtime: 'east-py',
|
|
33
|
+
platforms: ['east-py-std', { custom: 'my-org-platform' }],
|
|
34
|
+
};
|
|
35
|
+
assert.deepEqual(runnerToCommand(r), ['east-py', 'run', '-p', 'east-py-std', '-p', 'my-org-platform']);
|
|
36
|
+
});
|
|
37
|
+
it('omits -p flags entirely when platforms is omitted', () => {
|
|
38
|
+
const r = { runtime: 'east-c' };
|
|
39
|
+
assert.deepEqual(runnerToCommand(r), ['east-c', 'run']);
|
|
40
|
+
});
|
|
41
|
+
it('omits -p flags when platforms is an empty array', () => {
|
|
42
|
+
const r = { runtime: 'east-py', platforms: [] };
|
|
43
|
+
assert.deepEqual(runnerToCommand(r), ['east-py', 'run']);
|
|
44
|
+
});
|
|
45
|
+
it('custom runtime returns the command argv verbatim', () => {
|
|
46
|
+
const r = {
|
|
47
|
+
runtime: 'custom',
|
|
48
|
+
command: ['uv', 'run', 'east-py', 'run', '-p', 'east-py-std'],
|
|
49
|
+
};
|
|
50
|
+
assert.deepEqual(runnerToCommand(r), ['uv', 'run', 'east-py', 'run', '-p', 'east-py-std']);
|
|
51
|
+
});
|
|
52
|
+
it('returns a fresh array on each call (defensive copy on custom command)', () => {
|
|
53
|
+
const cmd = ['julia', 'run.jl'];
|
|
54
|
+
const r = { runtime: 'custom', command: cmd };
|
|
55
|
+
const out = runnerToCommand(r);
|
|
56
|
+
out.push('--mutated');
|
|
57
|
+
assert.deepEqual(cmd, ['julia', 'run.jl'], 'caller-supplied command must not be mutated');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=runner.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.spec.js","sourceRoot":"","sources":["../../src/runner.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/task.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { AsyncFunctionExpr, BlockBuilder, CallableAsyncFunctionExpr, CallableFunctionExpr, EastType, ExprType, FunctionExpr } from '@elaraai/east';
|
|
13
13
|
import { Expr, variant, ArrayType, StringType } from '@elaraai/east';
|
|
14
14
|
import type { DatasetDef, DataTreeDef, TaskDef } from './types.js';
|
|
15
|
+
import { type Runner } from './runner.js';
|
|
15
16
|
/**
|
|
16
17
|
* Helper type to extract East types from DatasetDef array.
|
|
17
18
|
* Preserves tuple structure when T is a tuple.
|
|
@@ -64,7 +65,7 @@ export declare const tasksTree: DataTreeDef;
|
|
|
64
65
|
* ```
|
|
65
66
|
*/
|
|
66
67
|
export declare function task<Name extends string, Inputs extends readonly DatasetDef[], Output extends EastType>(name: Name, inputs: [...Inputs], fn: FunctionExpr<ExtractDatasetTypes<Inputs>, Output> | CallableFunctionExpr<ExtractDatasetTypes<Inputs>, Output> | AsyncFunctionExpr<ExtractDatasetTypes<Inputs>, Output> | CallableAsyncFunctionExpr<ExtractDatasetTypes<Inputs>, Output>, config?: {
|
|
67
|
-
runner?:
|
|
68
|
+
runner?: Runner;
|
|
68
69
|
kind?: string;
|
|
69
70
|
metadata?: Uint8Array;
|
|
70
71
|
}): TaskDef<Output, [variant<'field', 'tasks'>, variant<'field', Name>, variant<'field', 'output'>]>;
|
package/dist/src/task.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAqC,MAAM,eAAe,CAAC;AACxG,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAqC,MAAM,eAAe,CAAC;AACxG,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE3E;;;GAGG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,IAAI;KACzD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC7D,GAAG,QAAQ,EAAE,CAAC;AAEf;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,WAKvB,CAAC;AAgGF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,IAAI,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,SAAS,UAAU,EAAE,EAAE,MAAM,SAAS,QAAQ,EACrG,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EACnB,EAAE,EAAE,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjD,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACzD,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACtD,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAClE,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;CAAE,GACjE,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AA8EpG,wBAAgB,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,SAAS,QAAQ,EACvG,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAClJ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAoClG"}
|
package/dist/src/task.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Expr, variant, ArrayType, StringType, East, IRType } from '@elaraai/east';
|
|
6
|
+
import { DEFAULT_RUNNER, runnerToCommand } from './runner.js';
|
|
6
7
|
/**
|
|
7
8
|
* Singleton tree definition for `.tasks`.
|
|
8
9
|
*
|
|
@@ -107,9 +108,15 @@ export function task(name, inputs, fn, config) {
|
|
|
107
108
|
];
|
|
108
109
|
// Create the output dataset
|
|
109
110
|
const output = createOutputDataset(name, taskTree, outputType);
|
|
110
|
-
//
|
|
111
|
+
// Resolve the typed Runner to argv at task-definition time. The variant is
|
|
112
|
+
// SDK-only metadata: it never reaches the IR or the wire — only the
|
|
113
|
+
// resolved string array does, baked in as an East constant below. Default
|
|
114
|
+
// is east-node + east-node-std (every e3 project has Node already).
|
|
115
|
+
const argvPrefix = runnerToCommand(config?.runner ?? DEFAULT_RUNNER);
|
|
116
|
+
// Build the command IR. At task-execution time this East function is
|
|
117
|
+
// evaluated with the staged input/output paths and returns the final argv.
|
|
111
118
|
const commandFn = East.function([ArrayType(StringType), StringType], ArrayType(StringType), ($, input_paths, output_path) => {
|
|
112
|
-
const command = $.let(
|
|
119
|
+
const command = $.let(argvPrefix, ArrayType(StringType));
|
|
113
120
|
// Function argument paths
|
|
114
121
|
const i = $.let(1n);
|
|
115
122
|
$.while(East.less(i, input_paths.size()), $ => {
|
package/dist/src/task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAU3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,IAAI,GAAG,EAAE;CAChB,CAAC;AAEF;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,IAAY,EAAE,QAAqB,EAAE,MAAgD;IACpH,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC1F,IAAI,EAAE,MAAM;QACZ,6EAA6E;QAC7E,gDAAgD;QAChD,OAAO,EAAE,MAAa;QACtB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,IAAU,EACV,QAAqB,EACrB,UAAkB;IAElB,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrF,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAClB,QAAqB,EACrB,aAAyB,EACzB,MAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE3D,oBAAoB;IACpB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEpB,6BAA6B;IAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnB,4CAA4C;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAED,mFAAmF;IACnF,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAExB,OAAO,IAAI,CAAC;AACd,CAAC;AAiDD,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,MAAoB,EACpB,EAAwD,EACxD,MAAkE;IAElE,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAe,CAAC,CAAC,MAAkB,CAAC;IAEjE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEtC,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE1E,+CAA+C;IAC/C,MAAM,cAAc,GAAG;QACrB,iBAAiB;QACjB,GAAG,MAAM;KACV,CAAC;IAEF,4BAA4B;IAC5B,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE/D,2EAA2E;IAC3E,oEAAoE;IACpE,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,IAAI,cAAc,CAAC,CAAC;IAErE,qEAAqE;IACrE,2EAA2E;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAC7B,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EACnC,SAAS,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzD,0BAA0B;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YAC5C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACzB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;QAEhC,iCAAiC;QACjC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAExC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAY;QACvB,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,uEAAuE;QACvE,OAAO,EAAE,SAAS,CAAC,IAAI,EAA0C;QACjE,MAAM,EAAE,cAAc;QACtB,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC;QACnD,QAAQ,EAAE,MAAM,EAAE,IAAI;QACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;KAC3B,CAAC;IAEF,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAU,EACV,MAAc,EACd,UAAkB,EAClB,OAAkJ,EAClJ,OAAgB;IAGhB,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEtC,4BAA4B;IAC5B,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE/D,sCAAsC;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CACjC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EACnC,UAAU,EACV,OAAO,CACR,CAAC;IAEF,4CAA4C;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAC7B,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EACnC,SAAS,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACzF,CAAC;IAEF,MAAM,OAAO,GAAqG;QAChH,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,uEAAuE;QACvE,OAAO,EAAE,SAAS,CAAC,IAAI,EAA0C;QACjE,MAAM;QACN,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAC5C,CAAC;IAEF,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEzB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/src/task.spec.js
CHANGED
|
@@ -105,7 +105,7 @@ describe('task', () => {
|
|
|
105
105
|
it('preserves custom runner config', () => {
|
|
106
106
|
const name_input = input('name', StringType, 'World');
|
|
107
107
|
const greet = task('greet', [name_input], East.function([StringType], StringType, ($, name) => $.return(name)), {
|
|
108
|
-
runner: ['uv', 'run', 'east-py', 'run', '-p', 'east-py-std']
|
|
108
|
+
runner: { runtime: 'custom', command: ['uv', 'run', 'east-py', 'run', '-p', 'east-py-std'] },
|
|
109
109
|
});
|
|
110
110
|
assert.strictEqual(greet.kind, 'task');
|
|
111
111
|
// The runner is encoded in the command, we just verify the task was created
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.spec.js","sourceRoot":"","sources":["../../src/task.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"task.spec.js","sourceRoot":"","sources":["../../src/task.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
* - **Structure**: The shape of the data tree (what trees/datasets exist and their types)
|
|
13
13
|
* - **Task**: A transformation that reads input datasets and produces an output dataset
|
|
14
14
|
*/
|
|
15
|
-
import type { EastType, EastIR, ValueTypeOf, variant } from '@elaraai/east';
|
|
15
|
+
import type { EastType, EastIR, AsyncEastIR, ValueTypeOf, variant } from '@elaraai/east';
|
|
16
16
|
import type { TreePath } from '@elaraai/e3-types';
|
|
17
|
+
import type { Runner } from './runner.js';
|
|
17
18
|
/**
|
|
18
19
|
* A tree definition.
|
|
19
20
|
*
|
|
@@ -79,6 +80,30 @@ export interface TaskDef<TOutput extends EastType = EastType, Path extends TreeP
|
|
|
79
80
|
/** Opaque extension metadata (beast2-encoded) */
|
|
80
81
|
readonly metadata?: Uint8Array;
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* A function definition.
|
|
85
|
+
*
|
|
86
|
+
* Functions are named, typed callables stored in a package and invoked by
|
|
87
|
+
* name with argument values (CLI / HTTP API). Unlike a task, a function is
|
|
88
|
+
* not wired to datasets, is not part of the dataflow graph, and triggers no
|
|
89
|
+
* recomputation. Its result is returned inline to the caller and nothing is
|
|
90
|
+
* persisted.
|
|
91
|
+
*
|
|
92
|
+
* @typeParam Inputs - The East types of the positional parameters
|
|
93
|
+
* @typeParam Output - The East type of the return value
|
|
94
|
+
*/
|
|
95
|
+
export interface FunctionDef<Inputs extends readonly EastType[] = readonly EastType[], Output extends EastType = EastType> {
|
|
96
|
+
readonly kind: 'function';
|
|
97
|
+
/** Function name (unique within the package) */
|
|
98
|
+
readonly name: string;
|
|
99
|
+
readonly body: EastIR<any, any> | AsyncEastIR<any, any>;
|
|
100
|
+
/** Positional parameter types (the East function's signature) */
|
|
101
|
+
readonly inputTypes: Inputs;
|
|
102
|
+
/** Return type */
|
|
103
|
+
readonly outputType: Output;
|
|
104
|
+
/** Runtime the body runs on; defaults to DEFAULT_RUNNER */
|
|
105
|
+
readonly runner: Runner;
|
|
106
|
+
}
|
|
82
107
|
/**
|
|
83
108
|
* An item that can be passed to e3.package().
|
|
84
109
|
*/
|
|
@@ -131,6 +156,9 @@ export interface PackageDef<Datasets extends Record<string, any>> {
|
|
|
131
156
|
readonly datasets: Datasets;
|
|
132
157
|
/** All contents of the package (trees, datasets, tasks) */
|
|
133
158
|
readonly contents: Array<PackageItem>;
|
|
159
|
+
/** Named functions, by name. Functions are not part of `contents` —
|
|
160
|
+
* they have no deps and never enter the data tree. */
|
|
161
|
+
readonly functions: Record<string, FunctionDef>;
|
|
134
162
|
}
|
|
135
163
|
export {};
|
|
136
164
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/e3",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "TypeScript SDK for authoring e3 packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"yazl": "^2.5.1",
|
|
16
|
-
"@elaraai/e3-types": "1.0.
|
|
16
|
+
"@elaraai/e3-types": "1.0.6"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@elaraai/east": "1.0.
|
|
19
|
+
"@elaraai/east": "1.0.6"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/node": "^22.10.1",
|