@mondaydotcomorg/atp-server 0.19.6 → 0.19.7
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/dist/executor/in-isolate-runtime.d.ts +28 -0
- package/dist/executor/in-isolate-runtime.d.ts.map +1 -0
- package/dist/executor/in-isolate-runtime.js +122 -0
- package/dist/executor/in-isolate-runtime.js.map +1 -0
- package/dist/executor/sandbox-injector.d.ts.map +1 -1
- package/dist/executor/sandbox-injector.js +12 -3
- package/dist/executor/sandbox-injector.js.map +1 -1
- package/package.json +2 -2
- package/src/executor/in-isolate-runtime.ts +145 -0
- package/src/executor/sandbox-injector.ts +17 -5
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Isolate Runtime Functions
|
|
3
|
+
*
|
|
4
|
+
* These runtime functions must run entirely inside the isolated-vm sandbox because they
|
|
5
|
+
* receive Promise arguments or callback functions that might contain Promises.
|
|
6
|
+
* Promises and functions with closures cannot be cloned/copied across the isolated-vm boundary.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: batchParallel is NOT included because it needs to communicate with the host
|
|
9
|
+
* to execute callbacks (LLM, approval, etc.) - it receives serializable callback descriptors,
|
|
10
|
+
* not Promises or functions.
|
|
11
|
+
*/
|
|
12
|
+
import { RuntimeFunction, IN_ISOLATE_RUNTIME_FUNCTIONS, isInIsolateRuntimeFunction, type RuntimeFunctionType } from '@mondaydotcomorg/atp-compiler';
|
|
13
|
+
export { RuntimeFunction, IN_ISOLATE_RUNTIME_FUNCTIONS, isInIsolateRuntimeFunction };
|
|
14
|
+
export type { RuntimeFunctionType };
|
|
15
|
+
/**
|
|
16
|
+
* Check if a function name should run inside the isolate
|
|
17
|
+
*/
|
|
18
|
+
export declare function isInIsolateFunction(name: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* JavaScript implementations for in-isolate runtime functions.
|
|
21
|
+
* These are stringified code that gets evaluated inside the isolated-vm.
|
|
22
|
+
*/
|
|
23
|
+
export declare const IN_ISOLATE_IMPLEMENTATIONS: Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Get the in-isolate implementation for a function, if it exists
|
|
26
|
+
*/
|
|
27
|
+
export declare function getInIsolateImplementation(name: string): string | undefined;
|
|
28
|
+
//# sourceMappingURL=in-isolate-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-isolate-runtime.d.ts","sourceRoot":"","sources":["../../src/executor/in-isolate-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACN,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,CAAC;AACrF,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsG7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE3E"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Isolate Runtime Functions
|
|
3
|
+
*
|
|
4
|
+
* These runtime functions must run entirely inside the isolated-vm sandbox because they
|
|
5
|
+
* receive Promise arguments or callback functions that might contain Promises.
|
|
6
|
+
* Promises and functions with closures cannot be cloned/copied across the isolated-vm boundary.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: batchParallel is NOT included because it needs to communicate with the host
|
|
9
|
+
* to execute callbacks (LLM, approval, etc.) - it receives serializable callback descriptors,
|
|
10
|
+
* not Promises or functions.
|
|
11
|
+
*/
|
|
12
|
+
import { RuntimeFunction, IN_ISOLATE_RUNTIME_FUNCTIONS, isInIsolateRuntimeFunction, } from '@mondaydotcomorg/atp-compiler';
|
|
13
|
+
// Re-export for convenience
|
|
14
|
+
export { RuntimeFunction, IN_ISOLATE_RUNTIME_FUNCTIONS, isInIsolateRuntimeFunction };
|
|
15
|
+
/**
|
|
16
|
+
* Check if a function name should run inside the isolate
|
|
17
|
+
*/
|
|
18
|
+
export function isInIsolateFunction(name) {
|
|
19
|
+
return isInIsolateRuntimeFunction(name);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* JavaScript implementations for in-isolate runtime functions.
|
|
23
|
+
* These are stringified code that gets evaluated inside the isolated-vm.
|
|
24
|
+
*/
|
|
25
|
+
export const IN_ISOLATE_IMPLEMENTATIONS = {
|
|
26
|
+
[RuntimeFunction.RESUMABLE_PROMISE_ALL]: `async (promises, parallelId) => {
|
|
27
|
+
// Use native Promise.all for true parallel execution and proper error handling
|
|
28
|
+
return await Promise.all(promises);
|
|
29
|
+
}`,
|
|
30
|
+
[RuntimeFunction.RESUMABLE_PROMISE_ALL_SETTLED]: `async (promises, parallelId) => {
|
|
31
|
+
// Use native Promise.allSettled for true parallel execution
|
|
32
|
+
return await Promise.allSettled(promises);
|
|
33
|
+
}`,
|
|
34
|
+
[RuntimeFunction.RESUMABLE_FOR_OF]: `async (iterable, callback, loopId) => {
|
|
35
|
+
let index = 0;
|
|
36
|
+
for (const item of iterable) {
|
|
37
|
+
await callback(item, index);
|
|
38
|
+
index++;
|
|
39
|
+
}
|
|
40
|
+
}`,
|
|
41
|
+
[RuntimeFunction.RESUMABLE_FOR_LOOP]: `async (init, condition, update, body, loopId) => {
|
|
42
|
+
for (init(); condition(); update()) {
|
|
43
|
+
await body();
|
|
44
|
+
}
|
|
45
|
+
}`,
|
|
46
|
+
[RuntimeFunction.RESUMABLE_WHILE]: `async (condition, body, loopId) => {
|
|
47
|
+
while (await condition()) {
|
|
48
|
+
await body();
|
|
49
|
+
}
|
|
50
|
+
}`,
|
|
51
|
+
[RuntimeFunction.RESUMABLE_MAP]: `async (array, callback, loopId) => {
|
|
52
|
+
const results = [];
|
|
53
|
+
for (let i = 0; i < array.length; i++) {
|
|
54
|
+
results[i] = await callback(array[i], i);
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}`,
|
|
58
|
+
[RuntimeFunction.RESUMABLE_FOR_EACH]: `async (array, callback, loopId) => {
|
|
59
|
+
for (let i = 0; i < array.length; i++) {
|
|
60
|
+
await callback(array[i], i);
|
|
61
|
+
}
|
|
62
|
+
}`,
|
|
63
|
+
[RuntimeFunction.RESUMABLE_FILTER]: `async (array, callback, loopId) => {
|
|
64
|
+
const results = [];
|
|
65
|
+
for (let i = 0; i < array.length; i++) {
|
|
66
|
+
if (await callback(array[i], i)) {
|
|
67
|
+
results.push(array[i]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return results;
|
|
71
|
+
}`,
|
|
72
|
+
[RuntimeFunction.RESUMABLE_REDUCE]: `async (array, callback, initialValue, loopId) => {
|
|
73
|
+
let accumulator = initialValue;
|
|
74
|
+
for (let i = 0; i < array.length; i++) {
|
|
75
|
+
accumulator = await callback(accumulator, array[i], i);
|
|
76
|
+
}
|
|
77
|
+
return accumulator;
|
|
78
|
+
}`,
|
|
79
|
+
[RuntimeFunction.RESUMABLE_FIND]: `async (array, callback, loopId) => {
|
|
80
|
+
for (let i = 0; i < array.length; i++) {
|
|
81
|
+
if (await callback(array[i], i)) {
|
|
82
|
+
return array[i];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}`,
|
|
87
|
+
[RuntimeFunction.RESUMABLE_SOME]: `async (array, callback, loopId) => {
|
|
88
|
+
for (let i = 0; i < array.length; i++) {
|
|
89
|
+
if (await callback(array[i], i)) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}`,
|
|
95
|
+
[RuntimeFunction.RESUMABLE_EVERY]: `async (array, callback, loopId) => {
|
|
96
|
+
for (let i = 0; i < array.length; i++) {
|
|
97
|
+
if (!(await callback(array[i], i))) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}`,
|
|
103
|
+
[RuntimeFunction.RESUMABLE_FLAT_MAP]: `async (array, callback, loopId) => {
|
|
104
|
+
const results = [];
|
|
105
|
+
for (let i = 0; i < array.length; i++) {
|
|
106
|
+
const mapped = await callback(array[i], i);
|
|
107
|
+
if (Array.isArray(mapped)) {
|
|
108
|
+
results.push(...mapped);
|
|
109
|
+
} else {
|
|
110
|
+
results.push(mapped);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return results;
|
|
114
|
+
}`,
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Get the in-isolate implementation for a function, if it exists
|
|
118
|
+
*/
|
|
119
|
+
export function getInIsolateImplementation(name) {
|
|
120
|
+
return IN_ISOLATE_IMPLEMENTATIONS[name];
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=in-isolate-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-isolate-runtime.js","sourceRoot":"","sources":["../../src/executor/in-isolate-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACN,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,GAE1B,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,CAAC;AAGrF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IACjE,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE;;;GAGvC;IAEF,CAAC,eAAe,CAAC,6BAA6B,CAAC,EAAE;;;GAG/C;IAEF,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;;;;;;GAMlC;IAEF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;;;;GAIpC;IAEF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE;;;;GAIjC;IAEF,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;;;;;;GAM/B;IAEF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;;;;GAIpC;IAEF,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;;;;;;;;GAQlC;IAEF,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;;;;;;GAMlC;IAEF,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;;;;;;;GAOhC;IAEF,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;;;;;;;GAOhC;IAEF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE;;;;;;;GAOjC;IAEF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;;;;;;;;;;;GAWpC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACtD,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-injector.d.ts","sourceRoot":"","sources":["../../src/executor/sandbox-injector.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox-injector.d.ts","sourceRoot":"","sources":["../../src/executor/sandbox-injector.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAS3D,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF;AAED,wBAAsB,aAAa,CAClC,UAAU,EAAE,GAAG,CAAC,OAAO,EACvB,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACtC,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CA4Kf;AAED,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,GAAG,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,GAAG,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA0Ff"}
|
|
@@ -2,6 +2,7 @@ import ivm from 'isolated-vm';
|
|
|
2
2
|
import { isPauseError, runInExecutionContext } from '@mondaydotcomorg/atp-runtime';
|
|
3
3
|
import { isBatchPauseError } from '@mondaydotcomorg/atp-compiler';
|
|
4
4
|
import { PAUSE_EXECUTION_MARKER } from './constants.js';
|
|
5
|
+
import { isInIsolateFunction, getInIsolateImplementation, } from './in-isolate-runtime.js';
|
|
5
6
|
export async function injectTimerPolyfills(ivmContext) {
|
|
6
7
|
await ivmContext.eval(`
|
|
7
8
|
globalThis._timerCounter = 1;
|
|
@@ -201,9 +202,17 @@ export async function setupRuntimeNamespace(ivmContext, sandbox) {
|
|
|
201
202
|
return;
|
|
202
203
|
}
|
|
203
204
|
let runtimeSetup = 'globalThis.__runtime = {\n';
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
const functionSetups = [];
|
|
206
|
+
for (const key of runtimeKeys) {
|
|
207
|
+
const inIsolateImpl = getInIsolateImplementation(key);
|
|
208
|
+
if (isInIsolateFunction(key) && inIsolateImpl) {
|
|
209
|
+
functionSetups.push(`\t${key}: ${inIsolateImpl}`);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
functionSetups.push(`\t${key}: async (...args) => {\n\t\treturn await __runtime_${key}_impl.apply(undefined, args, { arguments: { copy: true }, result: { promise: true } });\n\t}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
runtimeSetup += functionSetups.join(',\n');
|
|
207
216
|
runtimeSetup += '\n};';
|
|
208
217
|
await ivmContext.eval(runtimeSetup);
|
|
209
218
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-injector.js","sourceRoot":"","sources":["../../src/executor/sandbox-injector.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox-injector.js","sourceRoot":"","sources":["../../src/executor/sandbox-injector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/atp-server",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.7",
|
|
4
4
|
"description": "Server implementation for Agent Tool Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@babel/parser": "^7.26.0",
|
|
47
47
|
"@babel/traverse": "^7.26.0",
|
|
48
48
|
"@babel/types": "^7.26.0",
|
|
49
|
-
"@mondaydotcomorg/atp-compiler": "0.19.
|
|
49
|
+
"@mondaydotcomorg/atp-compiler": "0.19.7",
|
|
50
50
|
"@mondaydotcomorg/atp-protocol": "0.19.6",
|
|
51
51
|
"@mondaydotcomorg/atp-provenance": "0.19.6",
|
|
52
52
|
"@mondaydotcomorg/atp-providers": "0.19.6",
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Isolate Runtime Functions
|
|
3
|
+
*
|
|
4
|
+
* These runtime functions must run entirely inside the isolated-vm sandbox because they
|
|
5
|
+
* receive Promise arguments or callback functions that might contain Promises.
|
|
6
|
+
* Promises and functions with closures cannot be cloned/copied across the isolated-vm boundary.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: batchParallel is NOT included because it needs to communicate with the host
|
|
9
|
+
* to execute callbacks (LLM, approval, etc.) - it receives serializable callback descriptors,
|
|
10
|
+
* not Promises or functions.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
RuntimeFunction,
|
|
15
|
+
IN_ISOLATE_RUNTIME_FUNCTIONS,
|
|
16
|
+
isInIsolateRuntimeFunction,
|
|
17
|
+
type RuntimeFunctionType,
|
|
18
|
+
} from '@mondaydotcomorg/atp-compiler';
|
|
19
|
+
|
|
20
|
+
// Re-export for convenience
|
|
21
|
+
export { RuntimeFunction, IN_ISOLATE_RUNTIME_FUNCTIONS, isInIsolateRuntimeFunction };
|
|
22
|
+
export type { RuntimeFunctionType };
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Check if a function name should run inside the isolate
|
|
26
|
+
*/
|
|
27
|
+
export function isInIsolateFunction(name: string): boolean {
|
|
28
|
+
return isInIsolateRuntimeFunction(name);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* JavaScript implementations for in-isolate runtime functions.
|
|
33
|
+
* These are stringified code that gets evaluated inside the isolated-vm.
|
|
34
|
+
*/
|
|
35
|
+
export const IN_ISOLATE_IMPLEMENTATIONS: Record<string, string> = {
|
|
36
|
+
[RuntimeFunction.RESUMABLE_PROMISE_ALL]: `async (promises, parallelId) => {
|
|
37
|
+
// Use native Promise.all for true parallel execution and proper error handling
|
|
38
|
+
return await Promise.all(promises);
|
|
39
|
+
}`,
|
|
40
|
+
|
|
41
|
+
[RuntimeFunction.RESUMABLE_PROMISE_ALL_SETTLED]: `async (promises, parallelId) => {
|
|
42
|
+
// Use native Promise.allSettled for true parallel execution
|
|
43
|
+
return await Promise.allSettled(promises);
|
|
44
|
+
}`,
|
|
45
|
+
|
|
46
|
+
[RuntimeFunction.RESUMABLE_FOR_OF]: `async (iterable, callback, loopId) => {
|
|
47
|
+
let index = 0;
|
|
48
|
+
for (const item of iterable) {
|
|
49
|
+
await callback(item, index);
|
|
50
|
+
index++;
|
|
51
|
+
}
|
|
52
|
+
}`,
|
|
53
|
+
|
|
54
|
+
[RuntimeFunction.RESUMABLE_FOR_LOOP]: `async (init, condition, update, body, loopId) => {
|
|
55
|
+
for (init(); condition(); update()) {
|
|
56
|
+
await body();
|
|
57
|
+
}
|
|
58
|
+
}`,
|
|
59
|
+
|
|
60
|
+
[RuntimeFunction.RESUMABLE_WHILE]: `async (condition, body, loopId) => {
|
|
61
|
+
while (await condition()) {
|
|
62
|
+
await body();
|
|
63
|
+
}
|
|
64
|
+
}`,
|
|
65
|
+
|
|
66
|
+
[RuntimeFunction.RESUMABLE_MAP]: `async (array, callback, loopId) => {
|
|
67
|
+
const results = [];
|
|
68
|
+
for (let i = 0; i < array.length; i++) {
|
|
69
|
+
results[i] = await callback(array[i], i);
|
|
70
|
+
}
|
|
71
|
+
return results;
|
|
72
|
+
}`,
|
|
73
|
+
|
|
74
|
+
[RuntimeFunction.RESUMABLE_FOR_EACH]: `async (array, callback, loopId) => {
|
|
75
|
+
for (let i = 0; i < array.length; i++) {
|
|
76
|
+
await callback(array[i], i);
|
|
77
|
+
}
|
|
78
|
+
}`,
|
|
79
|
+
|
|
80
|
+
[RuntimeFunction.RESUMABLE_FILTER]: `async (array, callback, loopId) => {
|
|
81
|
+
const results = [];
|
|
82
|
+
for (let i = 0; i < array.length; i++) {
|
|
83
|
+
if (await callback(array[i], i)) {
|
|
84
|
+
results.push(array[i]);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}`,
|
|
89
|
+
|
|
90
|
+
[RuntimeFunction.RESUMABLE_REDUCE]: `async (array, callback, initialValue, loopId) => {
|
|
91
|
+
let accumulator = initialValue;
|
|
92
|
+
for (let i = 0; i < array.length; i++) {
|
|
93
|
+
accumulator = await callback(accumulator, array[i], i);
|
|
94
|
+
}
|
|
95
|
+
return accumulator;
|
|
96
|
+
}`,
|
|
97
|
+
|
|
98
|
+
[RuntimeFunction.RESUMABLE_FIND]: `async (array, callback, loopId) => {
|
|
99
|
+
for (let i = 0; i < array.length; i++) {
|
|
100
|
+
if (await callback(array[i], i)) {
|
|
101
|
+
return array[i];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}`,
|
|
106
|
+
|
|
107
|
+
[RuntimeFunction.RESUMABLE_SOME]: `async (array, callback, loopId) => {
|
|
108
|
+
for (let i = 0; i < array.length; i++) {
|
|
109
|
+
if (await callback(array[i], i)) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}`,
|
|
115
|
+
|
|
116
|
+
[RuntimeFunction.RESUMABLE_EVERY]: `async (array, callback, loopId) => {
|
|
117
|
+
for (let i = 0; i < array.length; i++) {
|
|
118
|
+
if (!(await callback(array[i], i))) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}`,
|
|
124
|
+
|
|
125
|
+
[RuntimeFunction.RESUMABLE_FLAT_MAP]: `async (array, callback, loopId) => {
|
|
126
|
+
const results = [];
|
|
127
|
+
for (let i = 0; i < array.length; i++) {
|
|
128
|
+
const mapped = await callback(array[i], i);
|
|
129
|
+
if (Array.isArray(mapped)) {
|
|
130
|
+
results.push(...mapped);
|
|
131
|
+
} else {
|
|
132
|
+
results.push(mapped);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return results;
|
|
136
|
+
}`,
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Get the in-isolate implementation for a function, if it exists
|
|
141
|
+
*/
|
|
142
|
+
export function getInIsolateImplementation(name: string): string | undefined {
|
|
143
|
+
return IN_ISOLATE_IMPLEMENTATIONS[name];
|
|
144
|
+
}
|
|
145
|
+
|
|
@@ -3,6 +3,10 @@ import type { Logger } from '@mondaydotcomorg/atp-runtime';
|
|
|
3
3
|
import { isPauseError, runInExecutionContext } from '@mondaydotcomorg/atp-runtime';
|
|
4
4
|
import { isBatchPauseError } from '@mondaydotcomorg/atp-compiler';
|
|
5
5
|
import { PAUSE_EXECUTION_MARKER } from './constants.js';
|
|
6
|
+
import {
|
|
7
|
+
isInIsolateFunction,
|
|
8
|
+
getInIsolateImplementation,
|
|
9
|
+
} from './in-isolate-runtime.js';
|
|
6
10
|
|
|
7
11
|
export async function injectTimerPolyfills(ivmContext: ivm.Context): Promise<void> {
|
|
8
12
|
await ivmContext.eval(`
|
|
@@ -237,12 +241,20 @@ export async function setupRuntimeNamespace(
|
|
|
237
241
|
}
|
|
238
242
|
|
|
239
243
|
let runtimeSetup = 'globalThis.__runtime = {\n';
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
244
|
+
const functionSetups: string[] = [];
|
|
245
|
+
|
|
246
|
+
for (const key of runtimeKeys) {
|
|
247
|
+
const inIsolateImpl = getInIsolateImplementation(key);
|
|
248
|
+
if (isInIsolateFunction(key) && inIsolateImpl) {
|
|
249
|
+
functionSetups.push(`\t${key}: ${inIsolateImpl}`);
|
|
250
|
+
} else {
|
|
251
|
+
functionSetups.push(
|
|
243
252
|
`\t${key}: async (...args) => {\n\t\treturn await __runtime_${key}_impl.apply(undefined, args, { arguments: { copy: true }, result: { promise: true } });\n\t}`
|
|
244
|
-
|
|
245
|
-
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
runtimeSetup += functionSetups.join(',\n');
|
|
246
258
|
runtimeSetup += '\n};';
|
|
247
259
|
|
|
248
260
|
await ivmContext.eval(runtimeSetup);
|