@elaraai/e3 1.0.67 → 1.0.69

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.
@@ -0,0 +1,114 @@
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 FunctionManifest } from '@elaraai/east';
6
+ import { type Runner } from './runner.js';
7
+ /** One package an owner's IR imports from: the functions it names, and the runner whose providers the export takes. */
8
+ export interface ImportReference {
9
+ /** The package named by `East.importFunction`. */
10
+ package: string;
11
+ /** The functions the owner imports from it. */
12
+ functions: string[];
13
+ /** The owning task / function / mutation, for messages. */
14
+ owner: string;
15
+ /** The owner's runner, for the exporter's providers. */
16
+ runner: Runner | undefined;
17
+ }
18
+ /** Progress of one resolved package (#652). */
19
+ export interface ResolveEvent {
20
+ /** The package resolved. */
21
+ package: string;
22
+ /** The tool that produced its manifest. */
23
+ tool: string;
24
+ /** How many functions it exports. */
25
+ count: number;
26
+ }
27
+ /**
28
+ * The functions an IR imports, by package — every distinct
29
+ * `East.importFunction(pkg, name, …)` in it.
30
+ */
31
+ export declare function importedFunctions(ir: unknown): Map<string, Set<string>>;
32
+ /** The packages an IR imports from — every distinct `East.importFunction` package name in it. */
33
+ export declare function importedPackages(ir: unknown): string[];
34
+ /**
35
+ * The python platform packages an owner's runner implies for the exporter's
36
+ * `-p`: each stock platform's python family member, and a `{ custom }` name
37
+ * as it stands on an east-py runner (on another runtime it is that runtime's
38
+ * package and cannot be loaded by python). A custom-command runner implies
39
+ * nothing.
40
+ */
41
+ export declare function pythonProviders(runner: Runner | undefined): string[];
42
+ /**
43
+ * The node platform packages an owner's runner implies for `east-node
44
+ * export-functions -p`: each stock platform's node family member, and a
45
+ * `{ custom }` name as it stands on an east-node runner. The twin of
46
+ * {@link pythonProviders}.
47
+ */
48
+ export declare function nodeProviders(runner: Runner | undefined): string[];
49
+ /** The `east-py` command for a package: the nearest `.venv` above its directory, else PATH. */
50
+ export declare function findEastPy(fromDir: string): string;
51
+ /**
52
+ * The `east-node` command for a package, as a command and its leading
53
+ * arguments: `EAST_NODE` names an executable outright; else the
54
+ * `@elaraai/east-node-cli` installed in the nearest `node_modules` above the
55
+ * package's directory (the project's own install — the one whose
56
+ * `@elaraai/east` the package's built module shares, run by this node with
57
+ * no bin shim and no shell); else `east-node` on PATH. The walk is over the
58
+ * directories, not `require.resolve`: the CLI's exports map exposes no
59
+ * `./package.json`, and an east-node from elsewhere carries its own copy of
60
+ * `@elaraai/east`, which does not recognise the member's functions.
61
+ */
62
+ export declare function findEastNode(fromDir: string): {
63
+ command: string;
64
+ args: string[];
65
+ };
66
+ /**
67
+ * Exports a python workspace member's `east_functions` as a manifest, in its
68
+ * own environment: `east-py export-functions <package> --name <package>
69
+ * [-p provider…] [--only name…]` with the member's source roots on
70
+ * `PYTHONPATH`, so the package imports whether or not it is installed.
71
+ *
72
+ * @param only - The functions to export (what the importing owners use)
73
+ * @throws {Error} Naming the owner and the package: no `east-py` to run, or
74
+ * an export the tool refused (its own message — no `east_functions`, a
75
+ * function it does not export, a platform call no provider implements, a
76
+ * function that is not closed)
77
+ */
78
+ export declare function exportPythonManifest(pkg: string, dir: string, version: string | null, providers: string[], only: string[], owner: string): FunctionManifest;
79
+ /**
80
+ * Exports a node workspace member's `eastFunctions` as a manifest, in its
81
+ * own environment: `east-node export-functions <entry> --name <package>
82
+ * [-p provider…] [--only name…]` in the member's directory, `<entry>` its
83
+ * built `./functions` export.
84
+ *
85
+ * @param only - The functions to export (what the importing owners use)
86
+ * @throws {Error} Naming the owner and the package: no `./functions` export
87
+ * or an unbuilt one, no `east-node` to run, or an export the tool refused
88
+ * (its own message — no `eastFunctions`, a function it does not export, a
89
+ * platform call no provider implements, a function that is not closed)
90
+ */
91
+ export declare function exportNodeManifest(pkg: string, dir: string, version: string | null, providers: string[], only: string[], owner: string): FunctionManifest;
92
+ /** The manifests the export produced, served per owner. */
93
+ export interface ResolvedManifests {
94
+ /**
95
+ * The manifests an owner links against: the explicit ones, and every
96
+ * workspace package's manifest exported for this runner's providers.
97
+ */
98
+ forOwner(runner: Runner | undefined): FunctionManifest[];
99
+ }
100
+ /**
101
+ * The manifests for every imported package the explicit ones do not cover,
102
+ * produced from the workspace (#652). One export per distinct package and
103
+ * provider set, of the union of the functions the owners with those
104
+ * providers import; a package that is not a local workspace member is an
105
+ * error naming the import.
106
+ *
107
+ * @param references - Every import an owner's IR makes, with its runner
108
+ * @param explicit - The manifests the export was given (they win)
109
+ * @param anchorDir - Directory the workspace is resolved from (the export cwd)
110
+ * @param onEvent - Progress per export
111
+ * @returns The manifests, served per owner
112
+ */
113
+ export declare function resolveFunctionManifests(references: ImportReference[], explicit: FunctionManifest[], anchorDir: string, onEvent?: (event: ResolveEvent) => void): ResolvedManifests;
114
+ //# sourceMappingURL=functions-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions-resolve.d.ts","sourceRoot":"","sources":["../../src/functions-resolve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH,OAAO,EAAmD,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAGnE,uHAAuH;AACvH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAgBvE;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,CAEtD;AAkBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAElE;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAejF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiC3J;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CA4BzJ;AAKD,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,EAAE,CAAC;CAC1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACtC,iBAAiB,CA2DnB"}
@@ -0,0 +1,345 @@
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
+ * Self-resolving cross-language imports at export (#652).
7
+ *
8
+ * `East.importFunction(pkg, name, type)` names a package. Where that
9
+ * package is a member of the uv or npm workspace the export runs in —
10
+ * resolved the way a `{ custom }` platform is, by name against the
11
+ * governing `uv.lock` / npm lockfile — its function manifest is produced
12
+ * here, in the package's own environment (`east-py export-functions` on a
13
+ * python member's root module, `east-node export-functions` on a node
14
+ * member's built `./functions` entry), and linked exactly as an explicit
15
+ * `functions:` manifest would be. The user writes the reference and nothing
16
+ * else; the platform DX. A manifest passed explicitly wins for its package
17
+ * (a package built elsewhere, a published one); a referenced package that is
18
+ * neither given nor a local member is an export error naming the import.
19
+ *
20
+ * Providers — the packages implementing the platform functions an exported
21
+ * function calls — come from the importing owner's runner, in the exporting
22
+ * language: a stock platform maps to its python / node family member
23
+ * (`@elaraai/east-node-std` → `east-py-std`, `east-py-std` →
24
+ * `@elaraai/east-node-std`), a `{ custom }` name passes through on a runner
25
+ * of the exporting runtime. The exporter records them per dependency, so
26
+ * the runner check at link is unchanged. An export is per package and
27
+ * provider set, of exactly the functions the owners with those providers
28
+ * import (`--only`): a sibling function's platform call never fails an
29
+ * owner that does not use it, and each owner links against the manifests
30
+ * produced for its own runner.
31
+ */
32
+ import * as fs from 'node:fs';
33
+ import * as os from 'node:os';
34
+ import * as path from 'node:path';
35
+ import { execFileSync } from 'node:child_process';
36
+ import { walkIR, decodeFunctionManifest, IMPORT_PLATFORM } from '@elaraai/east';
37
+ import { STOCK_PLATFORM_FAMILIES } from './runner.js';
38
+ import { pythonWorkspaceMember, nodeWorkspaceMember } from './environment-capture.js';
39
+ /**
40
+ * The functions an IR imports, by package — every distinct
41
+ * `East.importFunction(pkg, name, …)` in it.
42
+ */
43
+ export function importedFunctions(ir) {
44
+ const found = new Map();
45
+ walkIR(ir, (node) => {
46
+ if (node.type !== 'Platform' || node.value.name !== IMPORT_PLATFORM)
47
+ return;
48
+ const [first, second] = node.value.arguments;
49
+ if (first?.type !== 'Value' || typeof first.value?.value?.value !== 'string')
50
+ return;
51
+ if (second?.type !== 'Value' || typeof second.value?.value?.value !== 'string')
52
+ return;
53
+ const pkg = first.value.value.value;
54
+ let names = found.get(pkg);
55
+ if (names === undefined) {
56
+ names = new Set();
57
+ found.set(pkg, names);
58
+ }
59
+ names.add(second.value.value.value);
60
+ });
61
+ return found;
62
+ }
63
+ /** The packages an IR imports from — every distinct `East.importFunction` package name in it. */
64
+ export function importedPackages(ir) {
65
+ return [...importedFunctions(ir).keys()];
66
+ }
67
+ /** The stock platform packages of one runtime a runner's platforms map to, plus its `{ custom }` names on that runtime. */
68
+ function providersFor(runner, runtime, prefix) {
69
+ if (runner === undefined || runner.runtime === 'custom')
70
+ return [];
71
+ const out = new Set();
72
+ for (const p of runner.platforms ?? []) {
73
+ if (typeof p === 'string') {
74
+ const family = STOCK_PLATFORM_FAMILIES.find((f) => f.includes(p));
75
+ const member = family?.find((n) => n.startsWith(prefix));
76
+ if (member !== undefined)
77
+ out.add(member);
78
+ }
79
+ else if (runner.runtime === runtime) {
80
+ out.add(p.custom);
81
+ }
82
+ }
83
+ return [...out].sort();
84
+ }
85
+ /**
86
+ * The python platform packages an owner's runner implies for the exporter's
87
+ * `-p`: each stock platform's python family member, and a `{ custom }` name
88
+ * as it stands on an east-py runner (on another runtime it is that runtime's
89
+ * package and cannot be loaded by python). A custom-command runner implies
90
+ * nothing.
91
+ */
92
+ export function pythonProviders(runner) {
93
+ return providersFor(runner, 'east-py', 'east-py-');
94
+ }
95
+ /**
96
+ * The node platform packages an owner's runner implies for `east-node
97
+ * export-functions -p`: each stock platform's node family member, and a
98
+ * `{ custom }` name as it stands on an east-node runner. The twin of
99
+ * {@link pythonProviders}.
100
+ */
101
+ export function nodeProviders(runner) {
102
+ return providersFor(runner, 'east-node', '@elaraai/east-node-');
103
+ }
104
+ /** The `east-py` command for a package: the nearest `.venv` above its directory, else PATH. */
105
+ export function findEastPy(fromDir) {
106
+ const override = process.env['EAST_PY'];
107
+ if (override !== undefined && override !== '')
108
+ return override;
109
+ let dir = fromDir;
110
+ for (;;) {
111
+ for (const candidate of [path.join(dir, '.venv', 'bin', 'east-py'), path.join(dir, '.venv', 'Scripts', 'east-py.exe')]) {
112
+ if (fs.existsSync(candidate))
113
+ return candidate;
114
+ }
115
+ const parent = path.dirname(dir);
116
+ if (parent === dir)
117
+ return 'east-py';
118
+ dir = parent;
119
+ }
120
+ }
121
+ /**
122
+ * The `east-node` command for a package, as a command and its leading
123
+ * arguments: `EAST_NODE` names an executable outright; else the
124
+ * `@elaraai/east-node-cli` installed in the nearest `node_modules` above the
125
+ * package's directory (the project's own install — the one whose
126
+ * `@elaraai/east` the package's built module shares, run by this node with
127
+ * no bin shim and no shell); else `east-node` on PATH. The walk is over the
128
+ * directories, not `require.resolve`: the CLI's exports map exposes no
129
+ * `./package.json`, and an east-node from elsewhere carries its own copy of
130
+ * `@elaraai/east`, which does not recognise the member's functions.
131
+ */
132
+ export function findEastNode(fromDir) {
133
+ const override = process.env['EAST_NODE'];
134
+ if (override !== undefined && override !== '')
135
+ return { command: override, args: [] };
136
+ let dir = fromDir;
137
+ for (;;) {
138
+ const manifest = path.join(dir, 'node_modules', '@elaraai', 'east-node-cli', 'package.json');
139
+ if (fs.existsSync(manifest)) {
140
+ const bin = JSON.parse(fs.readFileSync(manifest, 'utf-8')).bin;
141
+ const entry = typeof bin === 'string' ? bin : bin?.['east-node'];
142
+ if (typeof entry === 'string')
143
+ return { command: process.execPath, args: [path.join(path.dirname(manifest), entry)] };
144
+ }
145
+ const parent = path.dirname(dir);
146
+ if (parent === dir)
147
+ return { command: 'east-node', args: [] };
148
+ dir = parent;
149
+ }
150
+ }
151
+ /**
152
+ * Exports a python workspace member's `east_functions` as a manifest, in its
153
+ * own environment: `east-py export-functions <package> --name <package>
154
+ * [-p provider…] [--only name…]` with the member's source roots on
155
+ * `PYTHONPATH`, so the package imports whether or not it is installed.
156
+ *
157
+ * @param only - The functions to export (what the importing owners use)
158
+ * @throws {Error} Naming the owner and the package: no `east-py` to run, or
159
+ * an export the tool refused (its own message — no `east_functions`, a
160
+ * function it does not export, a platform call no provider implements, a
161
+ * function that is not closed)
162
+ */
163
+ export function exportPythonManifest(pkg, dir, version, providers, only, owner) {
164
+ const eastPy = findEastPy(dir);
165
+ const outDir = fs.mkdtempSync(path.join(os.tmpdir(), 'e3-functions-'));
166
+ const out = path.join(outDir, `${pkg}.functions.beast2`);
167
+ const module = pkg.replace(/-/g, '_');
168
+ const args = ['export-functions', module, '-o', out, '--name', pkg, ...(version === null ? [] : ['--package-version', version])];
169
+ for (const p of providers)
170
+ args.push('-p', p);
171
+ for (const name of only)
172
+ args.push('--only', name);
173
+ const roots = [path.join(dir, 'src'), dir].filter((d) => fs.existsSync(d));
174
+ const pythonPath = [...roots, process.env['PYTHONPATH'] ?? ''].filter((p) => p !== '').join(path.delimiter);
175
+ try {
176
+ execFileSync(eastPy, args, {
177
+ cwd: dir,
178
+ stdio: ['ignore', 'pipe', 'pipe'],
179
+ // UTF-8 stdio: python encodes a piped stderr in the locale's code page
180
+ // on Windows (cp1252), and the exporter's messages carry an em dash
181
+ env: { ...process.env, PYTHONPATH: pythonPath, PYTHONIOENCODING: 'utf-8' },
182
+ shell: process.platform === 'win32',
183
+ });
184
+ return decodeFunctionManifest(new Uint8Array(fs.readFileSync(out)));
185
+ }
186
+ catch (err) {
187
+ const e = err;
188
+ if (e.code === 'ENOENT') {
189
+ throw new Error(`${owner} imports from "${pkg}", a package of this workspace at '${dir}', but no east-py is available to export its functions — ` +
190
+ `install east-py-cli in the project's .venv (uv add east-py-cli) or on PATH, or pass the package's manifest in \`functions:\``);
191
+ }
192
+ const stderr = e.stderr?.toString().trim() ?? String(err);
193
+ throw new Error(`${owner} imports from "${pkg}": 'east-py ${args.join(' ')}' failed in '${dir}':\n${stderr}`);
194
+ }
195
+ finally {
196
+ fs.rmSync(outDir, { recursive: true, force: true });
197
+ }
198
+ }
199
+ /**
200
+ * The built module a node member exports its East functions from: the
201
+ * target of its `package.json` `exports["./functions"]` (a path, or a
202
+ * conditional object's `import` / `default`), which must exist — a member
203
+ * is built before it is exported, as it is before it is packed.
204
+ *
205
+ * @throws {Error} Naming the owner and the package: no `./functions` export,
206
+ * or a target that is not built
207
+ */
208
+ function nodeFunctionsEntry(pkg, dir, owner) {
209
+ const manifest = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf-8'));
210
+ const exports = manifest.exports;
211
+ const declared = exports !== null && typeof exports === 'object' ? exports['./functions'] : undefined;
212
+ const target = typeof declared === 'string'
213
+ ? declared
214
+ : declared !== null && typeof declared === 'object'
215
+ ? declared['import'] ?? declared['default']
216
+ : undefined;
217
+ if (typeof target !== 'string') {
218
+ throw new Error(`${owner} imports from "${pkg}", a package of this workspace at '${dir}', but its package.json exports no "./functions" entry — ` +
219
+ `add "./functions": "./dist/functions.js" (a module exporting \`eastFunctions\`, name -> East.function) to its exports, ` +
220
+ `or pass the package's manifest in \`functions:\``);
221
+ }
222
+ const entry = path.resolve(dir, target);
223
+ if (!fs.existsSync(entry)) {
224
+ throw new Error(`${owner} imports from "${pkg}": its "./functions" entry '${entry}' does not exist — build the package first (npm run build), ` +
225
+ `or pass its manifest in \`functions:\``);
226
+ }
227
+ return entry;
228
+ }
229
+ /**
230
+ * Exports a node workspace member's `eastFunctions` as a manifest, in its
231
+ * own environment: `east-node export-functions <entry> --name <package>
232
+ * [-p provider…] [--only name…]` in the member's directory, `<entry>` its
233
+ * built `./functions` export.
234
+ *
235
+ * @param only - The functions to export (what the importing owners use)
236
+ * @throws {Error} Naming the owner and the package: no `./functions` export
237
+ * or an unbuilt one, no `east-node` to run, or an export the tool refused
238
+ * (its own message — no `eastFunctions`, a function it does not export, a
239
+ * platform call no provider implements, a function that is not closed)
240
+ */
241
+ export function exportNodeManifest(pkg, dir, version, providers, only, owner) {
242
+ const entry = nodeFunctionsEntry(pkg, dir, owner);
243
+ const eastNode = findEastNode(dir);
244
+ const outDir = fs.mkdtempSync(path.join(os.tmpdir(), 'e3-functions-'));
245
+ const out = path.join(outDir, `${pkg.replace(/[^\w.-]+/g, '_')}.functions.beast2`);
246
+ const args = ['export-functions', entry, '-o', out, '--name', pkg, ...(version === null ? [] : ['--package-version', version])];
247
+ for (const p of providers)
248
+ args.push('-p', p);
249
+ for (const name of only)
250
+ args.push('--only', name);
251
+ try {
252
+ execFileSync(eastNode.command, [...eastNode.args, ...args], {
253
+ cwd: dir,
254
+ stdio: ['ignore', 'pipe', 'pipe'],
255
+ shell: process.platform === 'win32',
256
+ });
257
+ return decodeFunctionManifest(new Uint8Array(fs.readFileSync(out)));
258
+ }
259
+ catch (err) {
260
+ const e = err;
261
+ if (e.code === 'ENOENT') {
262
+ throw new Error(`${owner} imports from "${pkg}", a package of this workspace at '${dir}', but no east-node is available to export its functions — ` +
263
+ `install @elaraai/east-node-cli in the project (npm install -D @elaraai/east-node-cli) or on PATH, or pass the package's manifest in \`functions:\``);
264
+ }
265
+ const stderr = e.stderr?.toString().trim() ?? String(err);
266
+ throw new Error(`${owner} imports from "${pkg}": 'east-node ${args.join(' ')}' failed in '${dir}':\n${stderr}`);
267
+ }
268
+ finally {
269
+ fs.rmSync(outDir, { recursive: true, force: true });
270
+ }
271
+ }
272
+ /**
273
+ * The manifests for every imported package the explicit ones do not cover,
274
+ * produced from the workspace (#652). One export per distinct package and
275
+ * provider set, of the union of the functions the owners with those
276
+ * providers import; a package that is not a local workspace member is an
277
+ * error naming the import.
278
+ *
279
+ * @param references - Every import an owner's IR makes, with its runner
280
+ * @param explicit - The manifests the export was given (they win)
281
+ * @param anchorDir - Directory the workspace is resolved from (the export cwd)
282
+ * @param onEvent - Progress per export
283
+ * @returns The manifests, served per owner
284
+ */
285
+ export function resolveFunctionManifests(references, explicit, anchorDir, onEvent) {
286
+ const covered = new Set(explicit.map((m) => m.package));
287
+ const members = new Map();
288
+ const memberOf = (ref) => {
289
+ let member = members.get(ref.package);
290
+ if (member === undefined) {
291
+ const python = pythonWorkspaceMember(ref.package, anchorDir, ref.owner);
292
+ const node = python === null ? nodeWorkspaceMember(ref.package, anchorDir) : null;
293
+ member = python !== null ? { kind: 'python', ...python } : node !== null ? { kind: 'node', ...node } : null;
294
+ members.set(ref.package, member);
295
+ }
296
+ return member;
297
+ };
298
+ const providersOf = (member, runner) => member.kind === 'python' ? pythonProviders(runner) : nodeProviders(runner);
299
+ const keyOf = (pkg, providers) => `${pkg}\0${providers.join(',')}`;
300
+ // One export per package and provider set, of every function its owners import.
301
+ const groups = new Map();
302
+ for (const ref of references) {
303
+ if (covered.has(ref.package))
304
+ continue;
305
+ const member = memberOf(ref);
306
+ if (member === null) {
307
+ throw new Error(`${ref.owner} imports from "${ref.package}", but no function manifest was given for it and it is not a member of the uv or npm workspace ` +
308
+ `at or above '${anchorDir}' — add the package to the workspace (a python package whose root module declares \`east_functions\`, ` +
309
+ `a node package whose "./functions" export declares \`eastFunctions\`), ` +
310
+ `or export it where it lives (east-py export-functions / east-node export-functions) and pass the manifest in \`functions:\``);
311
+ }
312
+ const providers = providersOf(member, ref.runner);
313
+ const key = keyOf(ref.package, providers);
314
+ let group = groups.get(key);
315
+ if (group === undefined) {
316
+ group = { package: ref.package, member, providers, functions: new Set(), owner: ref.owner };
317
+ groups.set(key, group);
318
+ }
319
+ for (const name of ref.functions)
320
+ group.functions.add(name);
321
+ }
322
+ const resolved = new Map();
323
+ for (const [key, group] of groups) {
324
+ const only = [...group.functions].sort();
325
+ const manifest = group.member.kind === 'python'
326
+ ? exportPythonManifest(group.package, group.member.dir, group.member.version, group.providers, only, group.owner)
327
+ : exportNodeManifest(group.package, group.member.dir, group.member.version, group.providers, only, group.owner);
328
+ resolved.set(key, manifest);
329
+ onEvent?.({ package: group.package, tool: `${group.member.kind === 'python' ? 'east-py' : 'east-node'} export-functions`, count: manifest.functions.length });
330
+ }
331
+ return {
332
+ forOwner(runner) {
333
+ const own = [...explicit];
334
+ for (const [pkg, member] of members) {
335
+ if (member === null)
336
+ continue;
337
+ const hit = resolved.get(keyOf(pkg, providersOf(member, runner)));
338
+ if (hit !== undefined)
339
+ own.push(hit);
340
+ }
341
+ return own;
342
+ },
343
+ };
344
+ }
345
+ //# sourceMappingURL=functions-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions-resolve.js","sourceRoot":"","sources":["../../src/functions-resolve.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,26 @@ export declare function runnerToVariant(r: Runner): RunnerValue;
70
70
  * this function only produces what goes ahead of those.
71
71
  */
72
72
  export declare function runnerToCommand(r: Runner): string[];
73
+ /**
74
+ * The stock platform packages that implement ONE platform contract per
75
+ * runtime. An imported function (#628) whose platform dependency is
76
+ * provided by `east-py-std` runs unchanged on an east-node runner listing
77
+ * `@elaraai/east-node-std`: the compliance suites pin that each family
78
+ * implements the same functions on every runtime. A custom package name
79
+ * must match exactly.
80
+ */
81
+ export declare const STOCK_PLATFORM_FAMILIES: ReadonlyArray<ReadonlyArray<string>>;
82
+ /**
83
+ * Whether a runner's platform packages include `provider`, or a stock
84
+ * package of `provider`'s family. A `custom` runner is an arbitrary command
85
+ * that cannot be inspected and is trusted.
86
+ *
87
+ * @param runner - The consuming task's runner
88
+ * @param provider - The package an imported function's manifest names as
89
+ * implementing a platform dependency
90
+ * @returns Whether the runner provides it
91
+ */
92
+ export declare function runnerProvides(runner: Runner, provider: string): boolean;
73
93
  /**
74
94
  * Default runner when `e3.task(..., { runner })` is omitted.
75
95
  *
@@ -1 +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,MAAM,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAatD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAC"}
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,MAAM,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAatD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAIxE,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMxE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAC"}
@@ -54,6 +54,38 @@ export function runnerToCommand(r) {
54
54
  }
55
55
  return [r.runtime, 'run', ...flags];
56
56
  }
57
+ /**
58
+ * The stock platform packages that implement ONE platform contract per
59
+ * runtime. An imported function (#628) whose platform dependency is
60
+ * provided by `east-py-std` runs unchanged on an east-node runner listing
61
+ * `@elaraai/east-node-std`: the compliance suites pin that each family
62
+ * implements the same functions on every runtime. A custom package name
63
+ * must match exactly.
64
+ */
65
+ export const STOCK_PLATFORM_FAMILIES = [
66
+ ['east-py-std', '@elaraai/east-node-std', 'east-c-std'],
67
+ ['east-py-io', '@elaraai/east-node-io'],
68
+ ['east-py-datascience'],
69
+ ];
70
+ /**
71
+ * Whether a runner's platform packages include `provider`, or a stock
72
+ * package of `provider`'s family. A `custom` runner is an arbitrary command
73
+ * that cannot be inspected and is trusted.
74
+ *
75
+ * @param runner - The consuming task's runner
76
+ * @param provider - The package an imported function's manifest names as
77
+ * implementing a platform dependency
78
+ * @returns Whether the runner provides it
79
+ */
80
+ export function runnerProvides(runner, provider) {
81
+ if (runner.runtime === 'custom')
82
+ return true;
83
+ const names = (runner.platforms ?? []).map((p) => (typeof p === 'string' ? p : p.custom));
84
+ if (names.includes(provider))
85
+ return true;
86
+ const family = STOCK_PLATFORM_FAMILIES.find((f) => f.includes(provider));
87
+ return family !== undefined && names.some((n) => family.includes(n));
88
+ }
57
89
  /**
58
90
  * Default runner when `e3.task(..., { runner })` is omitted.
59
91
  *
@@ -1 +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;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,4EAA4E;IAC5E,4EAA4E;IAC5E,wBAAwB;IACxB,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.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.67",
3
+ "version": "1.0.69",
4
4
  "description": "TypeScript SDK for authoring e3 packages",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -19,10 +19,10 @@
19
19
  "dependencies": {
20
20
  "smol-toml": "^1.3.1",
21
21
  "yazl": "^2.5.1",
22
- "@elaraai/e3-types": "1.0.67"
22
+ "@elaraai/e3-types": "1.0.69"
23
23
  },
24
24
  "peerDependencies": {
25
- "@elaraai/east": "1.0.67"
25
+ "@elaraai/east": "1.0.69"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.10.1",