@n8n/task-runner 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/js-task-runner/errors/error-like.d.ts +5 -0
  3. package/dist/js-task-runner/errors/error-like.js +10 -0
  4. package/dist/js-task-runner/errors/error-like.js.map +1 -0
  5. package/dist/js-task-runner/errors/execution-error.d.ts +4 -5
  6. package/dist/js-task-runner/errors/execution-error.js +10 -5
  7. package/dist/js-task-runner/errors/execution-error.js.map +1 -1
  8. package/dist/js-task-runner/errors/serializable-error.d.ts +4 -0
  9. package/dist/js-task-runner/errors/serializable-error.js +27 -0
  10. package/dist/js-task-runner/errors/serializable-error.js.map +1 -0
  11. package/dist/js-task-runner/errors/validation-error.d.ts +2 -2
  12. package/dist/js-task-runner/errors/validation-error.js +2 -2
  13. package/dist/js-task-runner/errors/validation-error.js.map +1 -1
  14. package/dist/js-task-runner/js-task-runner.d.ts +12 -2
  15. package/dist/js-task-runner/js-task-runner.js +51 -27
  16. package/dist/js-task-runner/js-task-runner.js.map +1 -1
  17. package/dist/js-task-runner/require-resolver.d.ts +6 -0
  18. package/dist/js-task-runner/require-resolver.js +22 -0
  19. package/dist/js-task-runner/require-resolver.js.map +1 -0
  20. package/dist/node-types.d.ts +10 -0
  21. package/dist/node-types.js +45 -0
  22. package/dist/node-types.js.map +1 -0
  23. package/dist/runner-types.d.ts +6 -2
  24. package/dist/runner-types.js.map +1 -1
  25. package/dist/start.js +9 -38
  26. package/dist/start.js.map +1 -1
  27. package/dist/task-runner.d.ts +4 -0
  28. package/dist/task-runner.js +14 -2
  29. package/dist/task-runner.js.map +1 -1
  30. package/package.json +4 -4
  31. package/dist/authenticator.d.ts +0 -5
  32. package/dist/authenticator.js +0 -57
  33. package/dist/authenticator.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ export interface ErrorLike {
2
+ message: string;
3
+ stack?: string;
4
+ }
5
+ export declare function isErrorLike(value: unknown): value is ErrorLike;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isErrorLike = isErrorLike;
4
+ function isErrorLike(value) {
5
+ if (typeof value !== 'object' || value === null)
6
+ return false;
7
+ const errorLike = value;
8
+ return typeof errorLike.message === 'string';
9
+ }
10
+ //# sourceMappingURL=error-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-like.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/error-like.ts"],"names":[],"mappings":";;AAKA,kCAMC;AAND,SAAgB,WAAW,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE9D,MAAM,SAAS,GAAG,KAAkB,CAAC;IAErC,OAAO,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC;AAC9C,CAAC"}
@@ -1,5 +1,6 @@
1
- import { ApplicationError } from 'n8n-workflow';
2
- export declare class ExecutionError extends ApplicationError {
1
+ import type { ErrorLike } from './error-like';
2
+ import { SerializableError } from './serializable-error';
3
+ export declare class ExecutionError extends SerializableError {
3
4
  description: string | null;
4
5
  itemIndex: number | undefined;
5
6
  context: {
@@ -7,9 +8,7 @@ export declare class ExecutionError extends ApplicationError {
7
8
  } | undefined;
8
9
  stack: string;
9
10
  lineNumber: number | undefined;
10
- constructor(error: Error & {
11
- stack?: string;
12
- }, itemIndex?: number);
11
+ constructor(error: ErrorLike, itemIndex?: number);
13
12
  private populateFromStack;
14
13
  private toLineNumberDisplay;
15
14
  private toErrorDetailsAndType;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExecutionError = void 0;
4
- const n8n_workflow_1 = require("n8n-workflow");
5
- class ExecutionError extends n8n_workflow_1.ApplicationError {
4
+ const serializable_error_1 = require("./serializable-error");
5
+ const VM_WRAPPER_FN_NAME = 'VmCodeWrapper';
6
+ class ExecutionError extends serializable_error_1.SerializableError {
6
7
  constructor(error, itemIndex) {
7
8
  super(error.message);
8
9
  this.description = null;
@@ -21,9 +22,10 @@ class ExecutionError extends n8n_workflow_1.ApplicationError {
21
22
  const stackRows = this.stack.split('\n');
22
23
  if (stackRows.length === 0) {
23
24
  this.message = 'Unknown error';
25
+ return;
24
26
  }
25
27
  const messageRow = stackRows.find((line) => line.includes('Error:'));
26
- const lineNumberRow = stackRows.find((line) => line.includes('Code:'));
28
+ const lineNumberRow = stackRows.find((line) => line.includes(`at ${VM_WRAPPER_FN_NAME} `));
27
29
  const lineNumberDisplay = this.toLineNumberDisplay(lineNumberRow);
28
30
  if (!messageRow) {
29
31
  this.message = `Unknown error ${lineNumberDisplay}`;
@@ -39,13 +41,16 @@ class ExecutionError extends n8n_workflow_1.ApplicationError {
39
41
  this.message = `${errorDetails} ${lineNumberDisplay}`;
40
42
  }
41
43
  toLineNumberDisplay(lineNumberRow) {
42
- const errorLineNumberMatch = lineNumberRow?.match(/Code:(?<lineNumber>\d+)/);
44
+ if (!lineNumberRow)
45
+ return '';
46
+ const regex = new RegExp(`at ${VM_WRAPPER_FN_NAME} \\(evalmachine\\.<anonymous>:(?<lineNumber>\\d+):`);
47
+ const errorLineNumberMatch = lineNumberRow.match(regex);
43
48
  if (!errorLineNumberMatch?.groups?.lineNumber)
44
49
  return null;
45
50
  const lineNumber = errorLineNumberMatch.groups.lineNumber;
46
- this.lineNumber = Number(lineNumber);
47
51
  if (!lineNumber)
48
52
  return '';
53
+ this.lineNumber = Number(lineNumber);
49
54
  return this.itemIndex === undefined
50
55
  ? `[line ${lineNumber}]`
51
56
  : `[line ${lineNumber}, for item ${this.itemIndex}]`;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-error.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/execution-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-error.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/execution-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function makeSerializable(error: Error): Error;
2
+ export declare abstract class SerializableError extends Error {
3
+ constructor(message: string);
4
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SerializableError = void 0;
4
+ exports.makeSerializable = makeSerializable;
5
+ function makeSerializable(error) {
6
+ Object.defineProperties(error, {
7
+ message: {
8
+ value: error.message,
9
+ enumerable: true,
10
+ configurable: true,
11
+ },
12
+ stack: {
13
+ value: error.stack,
14
+ enumerable: true,
15
+ configurable: true,
16
+ },
17
+ });
18
+ return error;
19
+ }
20
+ class SerializableError extends Error {
21
+ constructor(message) {
22
+ super(message);
23
+ makeSerializable(this);
24
+ }
25
+ }
26
+ exports.SerializableError = SerializableError;
27
+ //# sourceMappingURL=serializable-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-error.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/serializable-error.ts"],"names":[],"mappings":";;;AAIA,4CAeC;AAfD,SAAgB,gBAAgB,CAAC,KAAY;IAC5C,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC9B,OAAO,EAAE;YACR,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB;QACD,KAAK,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB;KACD,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACd,CAAC;AAMD,MAAsB,iBAAkB,SAAQ,KAAK;IACpD,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACD;AAND,8CAMC"}
@@ -1,5 +1,5 @@
1
- import { ApplicationError } from 'n8n-workflow';
2
- export declare class ValidationError extends ApplicationError {
1
+ import { SerializableError } from './serializable-error';
2
+ export declare class ValidationError extends SerializableError {
3
3
  description: string;
4
4
  itemIndex: number | undefined;
5
5
  context: {
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ValidationError = void 0;
4
- const n8n_workflow_1 = require("n8n-workflow");
5
- class ValidationError extends n8n_workflow_1.ApplicationError {
4
+ const serializable_error_1 = require("./serializable-error");
5
+ class ValidationError extends serializable_error_1.SerializableError {
6
6
  constructor({ message, description, itemIndex, lineNumber, }) {
7
7
  super(message);
8
8
  this.description = '';
@@ -1 +1 @@
1
- {"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/validation-error.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAEhD,MAAa,eAAgB,SAAQ,+BAAgB;IASpD,YAAY,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,UAAU,GAMV;QACA,KAAK,CAAC,OAAO,CAAC,CAAC;QAnBhB,gBAAW,GAAG,EAAE,CAAC;QAEjB,cAAS,GAAuB,SAAS,CAAC;QAE1C,YAAO,GAAsC,SAAS,CAAC;QAEvD,eAAU,GAAuB,SAAS,CAAC;QAe1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,UAAU,cAAc,SAAS,GAAG,CAAC;QACzE,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,UAAU,GAAG,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,SAAS,GAAG,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,CAAC;IACF,CAAC;CACD;AAzCD,0CAyCC"}
1
+ {"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../../src/js-task-runner/errors/validation-error.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AAEzD,MAAa,eAAgB,SAAQ,sCAAiB;IASrD,YAAY,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,UAAU,GAMV;QACA,KAAK,CAAC,OAAO,CAAC,CAAC;QAnBhB,gBAAW,GAAG,EAAE,CAAC;QAEjB,cAAS,GAAuB,SAAS,CAAC;QAE1C,YAAO,GAAsC,SAAS,CAAC;QAEvD,eAAU,GAAuB,SAAS,CAAC;QAe1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,UAAU,cAAc,SAAS,GAAG,CAAC;QACzE,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,UAAU,GAAG,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,GAAG,OAAO,UAAU,SAAS,GAAG,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,CAAC;IACF,CAAC;CACD;AAzCD,0CAyCC"}
@@ -40,11 +40,21 @@ export interface AllCodeTaskData {
40
40
  contextNodeName: string;
41
41
  additionalData: PartialAdditionalData;
42
42
  }
43
+ export interface JsTaskRunnerOpts {
44
+ wsUrl: string;
45
+ grantToken: string;
46
+ maxConcurrency: number;
47
+ name?: string;
48
+ allowedBuiltInModules?: string;
49
+ allowedExternalModules?: string;
50
+ }
43
51
  export declare class JsTaskRunner extends TaskRunner {
44
- constructor(taskType: string, wsUrl: string, grantToken: string, maxConcurrency: number, name?: string);
52
+ private readonly requireResolver;
53
+ constructor({ grantToken, maxConcurrency, wsUrl, name, allowedBuiltInModules, allowedExternalModules, }: JsTaskRunnerOpts);
45
54
  executeTask(task: Task<JSExecSettings>): Promise<TaskResultData>;
55
+ private getNativeVariables;
46
56
  private runForAllItems;
47
57
  private runForEachItem;
48
58
  private createDataProxy;
49
- private getErrorMessageFromVmError;
59
+ private toExecutionErrorIfNeeded;
50
60
  }
@@ -29,10 +29,19 @@ const n8n_workflow_1 = require("n8n-workflow");
29
29
  const a = __importStar(require("node:assert"));
30
30
  const node_vm_1 = require("node:vm");
31
31
  const task_runner_1 = require("../task-runner");
32
+ const error_like_1 = require("./errors/error-like");
33
+ const execution_error_1 = require("./errors/execution-error");
34
+ const serializable_error_1 = require("./errors/serializable-error");
35
+ const require_resolver_1 = require("./require-resolver");
32
36
  const result_validation_1 = require("./result-validation");
33
37
  class JsTaskRunner extends task_runner_1.TaskRunner {
34
- constructor(taskType, wsUrl, grantToken, maxConcurrency, name) {
35
- super(taskType, wsUrl, grantToken, maxConcurrency, name ?? 'JS Task Runner');
38
+ constructor({ grantToken, maxConcurrency, wsUrl, name = 'JS Task Runner', allowedBuiltInModules, allowedExternalModules, }) {
39
+ super('javascript', wsUrl, grantToken, maxConcurrency, name);
40
+ const parseModuleAllowList = (moduleList) => moduleList === '*' ? null : new Set(moduleList.split(',').map((x) => x.trim()));
41
+ this.requireResolver = (0, require_resolver_1.createRequireResolver)({
42
+ allowedBuiltInModules: parseModuleAllowList(allowedBuiltInModules ?? ''),
43
+ allowedExternalModules: parseModuleAllowList(allowedExternalModules ?? ''),
44
+ });
36
45
  }
37
46
  async executeTask(task) {
38
47
  const allData = await this.requestData(task.taskId, 'all');
@@ -41,17 +50,7 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
41
50
  const workflowParams = allData.workflow;
42
51
  const workflow = new n8n_workflow_1.Workflow({
43
52
  ...workflowParams,
44
- nodeTypes: {
45
- getByNameAndVersion() {
46
- return undefined;
47
- },
48
- getByName() {
49
- return undefined;
50
- },
51
- getKnownTypes() {
52
- return {};
53
- },
54
- },
53
+ nodeTypes: this.nodeTypes,
55
54
  });
56
55
  const customConsole = {
57
56
  log: (...args) => {
@@ -69,29 +68,50 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
69
68
  customData: allData.runExecutionData.resultData.metadata,
70
69
  };
71
70
  }
71
+ getNativeVariables() {
72
+ return {
73
+ Buffer,
74
+ Function,
75
+ eval,
76
+ setTimeout,
77
+ setInterval,
78
+ setImmediate,
79
+ clearTimeout,
80
+ clearInterval,
81
+ clearImmediate,
82
+ btoa,
83
+ atob,
84
+ TextDecoder,
85
+ TextDecoderStream,
86
+ TextEncoder,
87
+ TextEncoderStream,
88
+ FormData,
89
+ };
90
+ }
72
91
  async runForAllItems(taskId, settings, allData, workflow, customConsole) {
73
92
  const dataProxy = this.createDataProxy(allData, workflow, allData.itemIndex);
74
93
  const inputItems = allData.connectionInputData;
75
94
  const context = {
76
- require,
95
+ require: this.requireResolver,
77
96
  module: {},
78
97
  console: customConsole,
79
98
  items: inputItems,
99
+ ...this.getNativeVariables(),
80
100
  ...dataProxy,
81
101
  ...this.buildRpcCallObject(taskId),
82
102
  };
83
103
  try {
84
- const result = (await (0, node_vm_1.runInNewContext)(`module.exports = async function() {${settings.code}\n}()`, context));
104
+ const result = (await (0, node_vm_1.runInNewContext)(`globalThis.global = globalThis; module.exports = async function VmCodeWrapper() {${settings.code}\n}()`, context));
85
105
  if (result === null) {
86
106
  return [];
87
107
  }
88
108
  return (0, result_validation_1.validateRunForAllItemsOutput)(result);
89
109
  }
90
- catch (error) {
110
+ catch (e) {
111
+ const error = this.toExecutionErrorIfNeeded(e);
91
112
  if (settings.continueOnFail) {
92
- return [{ json: { error: this.getErrorMessageFromVmError(error) } }];
113
+ return [{ json: { error: error.message } }];
93
114
  }
94
- error.node = allData.node;
95
115
  throw error;
96
116
  }
97
117
  }
@@ -102,15 +122,16 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
102
122
  const item = inputItems[index];
103
123
  const dataProxy = this.createDataProxy(allData, workflow, index);
104
124
  const context = {
105
- require,
125
+ require: this.requireResolver,
106
126
  module: {},
107
127
  console: customConsole,
108
128
  item,
129
+ ...this.getNativeVariables(),
109
130
  ...dataProxy,
110
131
  ...this.buildRpcCallObject(taskId),
111
132
  };
112
133
  try {
113
- let result = (await (0, node_vm_1.runInNewContext)(`module.exports = async function() {${settings.code}\n}()`, context));
134
+ let result = (await (0, node_vm_1.runInNewContext)(`module.exports = async function VmCodeWrapper() {${settings.code}\n}()`, context));
114
135
  if (result === null) {
115
136
  continue;
116
137
  }
@@ -128,13 +149,13 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
128
149
  });
129
150
  }
130
151
  }
131
- catch (error) {
152
+ catch (e) {
153
+ const error = this.toExecutionErrorIfNeeded(e);
132
154
  if (!settings.continueOnFail) {
133
- error.node = allData.node;
134
155
  throw error;
135
156
  }
136
157
  returnData.push({
137
- json: { error: this.getErrorMessageFromVmError(error) },
158
+ json: { error: error.message },
138
159
  pairedItem: {
139
160
  item: index,
140
161
  },
@@ -150,11 +171,14 @@ class JsTaskRunner extends task_runner_1.TaskRunner {
150
171
  isProcessAvailable: true,
151
172
  }).getDataProxy();
152
173
  }
153
- getErrorMessageFromVmError(error) {
154
- if (typeof error === 'object' && !!error && 'message' in error) {
155
- return error.message;
174
+ toExecutionErrorIfNeeded(error) {
175
+ if (error instanceof Error) {
176
+ return (0, serializable_error_1.makeSerializable)(error);
177
+ }
178
+ if ((0, error_like_1.isErrorLike)(error)) {
179
+ return new execution_error_1.ExecutionError(error);
156
180
  }
157
- return JSON.stringify(error);
181
+ return new execution_error_1.ExecutionError({ message: JSON.stringify(error) });
158
182
  }
159
183
  }
160
184
  exports.JsTaskRunner = JsTaskRunner;
@@ -1 +1 @@
1
- {"version":3,"file":"js-task-runner.js","sourceRoot":"","sources":["../../src/js-task-runner/js-task-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"js-task-runner.js","sourceRoot":"","sources":["../../src/js-task-runner/js-task-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type RequireResolverOpts = {
2
+ allowedBuiltInModules: Set<string> | null;
3
+ allowedExternalModules: Set<string> | null;
4
+ };
5
+ export type RequireResolver = (request: string) => unknown;
6
+ export declare function createRequireResolver({ allowedBuiltInModules, allowedExternalModules, }: RequireResolverOpts): (request: string) => unknown;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRequireResolver = createRequireResolver;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const node_module_1 = require("node:module");
6
+ const execution_error_1 = require("./errors/execution-error");
7
+ function createRequireResolver({ allowedBuiltInModules, allowedExternalModules, }) {
8
+ return (request) => {
9
+ const checkIsAllowed = (allowList, moduleName) => {
10
+ return allowList ? allowList.has(moduleName) : true;
11
+ };
12
+ const isAllowed = (0, node_module_1.isBuiltin)(request)
13
+ ? checkIsAllowed(allowedBuiltInModules, request)
14
+ : checkIsAllowed(allowedExternalModules, request);
15
+ if (!isAllowed) {
16
+ const error = new n8n_workflow_1.ApplicationError(`Cannot find module '${request}'`);
17
+ throw new execution_error_1.ExecutionError(error);
18
+ }
19
+ return require(request);
20
+ };
21
+ }
22
+ //# sourceMappingURL=require-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-resolver.js","sourceRoot":"","sources":["../../src/js-task-runner/require-resolver.ts"],"names":[],"mappings":";;AAqBA,sDAqBC;AA1CD,+CAAgD;AAChD,6CAAwC;AAExC,8DAA0D;AAkB1D,SAAgB,qBAAqB,CAAC,EACrC,qBAAqB,EACrB,sBAAsB,GACD;IACrB,OAAO,CAAC,OAAe,EAAE,EAAE;QAC1B,MAAM,cAAc,GAAG,CAAC,SAA6B,EAAE,UAAkB,EAAE,EAAE;YAC5E,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,OAAO,CAAC;YACnC,CAAC,CAAC,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC;YAChD,CAAC,CAAC,cAAc,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,+BAAgB,CAAC,uBAAuB,OAAO,GAAG,CAAC,CAAC;YACtE,MAAM,IAAI,gCAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAGD,OAAO,OAAO,CAAC,OAAO,CAAY,CAAC;IACpC,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type IDataObject, type INodeType, type INodeTypeDescription, type INodeTypes, type IVersionedNodeType } from 'n8n-workflow';
2
+ export declare const DEFAULT_NODETYPE_VERSION = 1;
3
+ export declare class TaskRunnerNodeTypes implements INodeTypes {
4
+ private nodeTypesByVersion;
5
+ constructor(nodeTypes: INodeTypeDescription[]);
6
+ private parseNodeTypes;
7
+ getByName(_nodeType: string): INodeType | IVersionedNodeType;
8
+ getByNameAndVersion(nodeType: string, version?: number): INodeType;
9
+ getKnownTypes(): IDataObject;
10
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRunnerNodeTypes = exports.DEFAULT_NODETYPE_VERSION = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ exports.DEFAULT_NODETYPE_VERSION = 1;
6
+ class TaskRunnerNodeTypes {
7
+ constructor(nodeTypes) {
8
+ this.nodeTypesByVersion = this.parseNodeTypes(nodeTypes);
9
+ }
10
+ parseNodeTypes(nodeTypes) {
11
+ const versionedTypes = new Map();
12
+ for (const nt of nodeTypes) {
13
+ const versions = Array.isArray(nt.version)
14
+ ? nt.version
15
+ : [nt.version ?? exports.DEFAULT_NODETYPE_VERSION];
16
+ const versioned = versionedTypes.get(nt.name) ?? new Map();
17
+ for (const version of versions) {
18
+ versioned.set(version, { ...versioned.get(version), ...nt });
19
+ }
20
+ versionedTypes.set(nt.name, versioned);
21
+ }
22
+ return versionedTypes;
23
+ }
24
+ getByName(_nodeType) {
25
+ throw new n8n_workflow_1.ApplicationError('Unimplemented `getByName`', { level: 'error' });
26
+ }
27
+ getByNameAndVersion(nodeType, version) {
28
+ const versions = this.nodeTypesByVersion.get(nodeType);
29
+ if (!versions) {
30
+ return undefined;
31
+ }
32
+ const nodeVersion = versions.get(version ?? Math.max(...versions.keys()));
33
+ if (!nodeVersion) {
34
+ return undefined;
35
+ }
36
+ return {
37
+ description: nodeVersion,
38
+ };
39
+ }
40
+ getKnownTypes() {
41
+ throw new n8n_workflow_1.ApplicationError('Unimplemented `getKnownTypes`', { level: 'error' });
42
+ }
43
+ }
44
+ exports.TaskRunnerNodeTypes = TaskRunnerNodeTypes;
45
+ //# sourceMappingURL=node-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../src/node-types.ts"],"names":[],"mappings":";;;AAAA,+CAOsB;AAIT,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAa,mBAAmB;IAG/B,YAAY,SAAiC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEO,cAAc,CAAC,SAAiC;QACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEzD,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;gBACzC,CAAC,CAAC,EAAE,CAAC,OAAO;gBACZ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,gCAAwB,CAAC,CAAC;YAE5C,MAAM,SAAS,GACd,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAgC,CAAC;YACxE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAChC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAGD,SAAS,CAAC,SAAiB;QAC1B,MAAM,IAAI,+BAAgB,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,mBAAmB,CAAC,QAAgB,EAAE,OAAgB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,SAAiC,CAAC;QAC1C,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,SAAiC,CAAC;QAC1C,CAAC;QACD,OAAO;YACN,WAAW,EAAE,WAAW;SACxB,CAAC;IACH,CAAC;IAGD,aAAa;QACZ,MAAM,IAAI,+BAAgB,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;CACD;AAlDD,kDAkDC"}
@@ -1,4 +1,4 @@
1
- import type { INodeExecutionData } from 'n8n-workflow';
1
+ import type { INodeExecutionData, INodeTypeBaseDescription } from 'n8n-workflow';
2
2
  export type DataRequestType = 'input' | 'node' | 'all';
3
3
  export interface TaskResultData {
4
4
  result: INodeExecutionData[];
@@ -40,7 +40,11 @@ export declare namespace N8nMessage {
40
40
  requestId: string;
41
41
  data: unknown;
42
42
  }
43
- type All = InfoRequest | TaskOfferAccept | TaskCancel | TaskSettings | RunnerRegistered | RPCResponse | TaskDataResponse;
43
+ interface NodeTypes {
44
+ type: 'broker:nodetypes';
45
+ nodeTypes: INodeTypeBaseDescription[];
46
+ }
47
+ type All = InfoRequest | TaskOfferAccept | TaskCancel | TaskSettings | RunnerRegistered | RPCResponse | TaskDataResponse | NodeTypes;
44
48
  }
45
49
  namespace ToRequester {
46
50
  interface TaskReady {
@@ -1 +1 @@
1
- {"version":3,"file":"runner-types.js","sourceRoot":"","sources":["../src/runner-types.ts"],"names":[],"mappings":";;;AA8Ma,QAAA,cAAc,GAAG;IAC7B,uCAAuC;IACvC,4CAA4C;IAI5C,6BAA6B;IAG7B,sBAAsB;IACtB,0BAA0B;IAE1B,4BAA4B;IAC5B,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,wBAAwB;IAGxB,yBAAyB;IACzB,2BAA2B;IAC3B,+BAA+B;IAC/B,qBAAqB;IACrB,eAAe;CACN,CAAC"}
1
+ {"version":3,"file":"runner-types.js","sourceRoot":"","sources":["../src/runner-types.ts"],"names":[],"mappings":";;;AAoNa,QAAA,cAAc,GAAG;IAC7B,uCAAuC;IACvC,4CAA4C;IAI5C,6BAA6B;IAG7B,sBAAsB;IACtB,0BAA0B;IAE1B,4BAA4B;IAC5B,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,wBAAwB;IAGxB,yBAAyB;IACzB,2BAA2B;IAC3B,+BAA+B;IAC/B,qBAAqB;IACrB,eAAe;CACN,CAAC"}
package/dist/start.js CHANGED
@@ -1,43 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  const n8n_workflow_1 = require("n8n-workflow");
27
- const a = __importStar(require("node:assert/strict"));
28
- const authenticator_1 = require("./authenticator");
29
4
  const js_task_runner_1 = require("./js-task-runner/js-task-runner");
30
5
  let runner;
31
6
  let isShuttingDown = false;
32
7
  function readAndParseConfig() {
33
- const authToken = process.env.N8N_RUNNERS_AUTH_TOKEN;
34
8
  const grantToken = process.env.N8N_RUNNERS_GRANT_TOKEN;
35
- if (!authToken && !grantToken) {
36
- throw new n8n_workflow_1.ApplicationError('Missing task runner authentication. Use either N8N_RUNNERS_AUTH_TOKEN or N8N_RUNNERS_GRANT_TOKEN to configure it');
9
+ if (!grantToken) {
10
+ throw new n8n_workflow_1.ApplicationError('Missing N8N_RUNNERS_GRANT_TOKEN environment variable');
37
11
  }
38
12
  return {
39
13
  n8nUri: process.env.N8N_RUNNERS_N8N_URI ?? '127.0.0.1:5679',
40
- authToken,
41
14
  grantToken,
42
15
  };
43
16
  }
@@ -65,16 +38,14 @@ function createSignalHandler(signal) {
65
38
  }
66
39
  void (async function start() {
67
40
  const config = readAndParseConfig();
68
- let grantToken = config.grantToken;
69
- if (!grantToken) {
70
- a.ok(config.authToken);
71
- grantToken = await (0, authenticator_1.authenticate)({
72
- authToken: config.authToken,
73
- n8nUri: config.n8nUri,
74
- });
75
- }
76
41
  const wsUrl = `ws://${config.n8nUri}/runners/_ws`;
77
- runner = new js_task_runner_1.JsTaskRunner('javascript', wsUrl, grantToken, 5);
42
+ runner = new js_task_runner_1.JsTaskRunner({
43
+ wsUrl,
44
+ grantToken: config.grantToken,
45
+ maxConcurrency: 5,
46
+ allowedBuiltInModules: process.env.NODE_FUNCTION_ALLOW_BUILTIN,
47
+ allowedExternalModules: process.env.NODE_FUNCTION_ALLOW_EXTERNAL,
48
+ });
78
49
  process.on('SIGINT', createSignalHandler('SIGINT'));
79
50
  process.on('SIGTERM', createSignalHandler('SIGTERM'));
80
51
  })().catch((e) => {
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA6D;AAC7D,sDAAwC;AAExC,mDAA+C;AAC/C,oEAA+D;AAE/D,IAAI,MAAgC,CAAC;AACrC,IAAI,cAAc,GAAG,KAAK,CAAC;AAQ3B,SAAS,kBAAkB;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACvD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,+BAAgB,CACzB,kHAAkH,CAClH,CAAC;IACH,CAAC;IAED,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gBAAgB;QAC3D,SAAS;QACT,UAAU;KACV,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IAC1C,OAAO,KAAK,UAAU,QAAQ;QAC7B,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,2BAA2B,CAAC,CAAC;QAE3D,cAAc,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACJ,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,GAAG,SAAS,CAAC;YACpB,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED,KAAK,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEvB,UAAU,GAAG,MAAM,IAAA,4BAAY,EAAC;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,MAAM,CAAC,MAAM,cAAc,CAAC;IAClD,MAAM,GAAG,IAAI,6BAAY,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAE9D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAChB,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,oEAA+D;AAE/D,IAAI,MAAgC,CAAC;AACrC,IAAI,cAAc,GAAG,KAAK,CAAC;AAO3B,SAAS,kBAAkB;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,+BAAgB,CAAC,sDAAsD,CAAC,CAAC;IACpF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gBAAgB;QAC3D,UAAU;KACV,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IAC1C,OAAO,KAAK,UAAU,QAAQ;QAC7B,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,2BAA2B,CAAC,CAAC;QAE3D,cAAc,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACJ,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,GAAG,SAAS,CAAC;YACpB,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED,KAAK,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,MAAM,CAAC,MAAM,cAAc,CAAC;IAClD,MAAM,GAAG,IAAI,6BAAY,CAAC;QACzB,KAAK;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,CAAC;QACjB,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;QAC9D,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;KAChE,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAChB,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { type INodeTypeDescription } from 'n8n-workflow';
1
2
  import { WebSocket } from 'ws';
3
+ import { TaskRunnerNodeTypes } from './node-types';
2
4
  import { type RunnerMessage, type N8nMessage, type TaskResultData } from './runner-types';
3
5
  export interface Task<T = unknown> {
4
6
  taskId: string;
@@ -35,6 +37,7 @@ export declare abstract class TaskRunner {
35
37
  openOffers: Map<TaskOffer['offerId'], TaskOffer>;
36
38
  dataRequests: Map<DataRequest['requestId'], DataRequest>;
37
39
  rpcCalls: Map<RPCCall['callId'], RPCCall>;
40
+ nodeTypes: TaskRunnerNodeTypes;
38
41
  constructor(taskType: string, wsUrl: string, grantToken: string, maxConcurrency: number, name?: string | undefined);
39
42
  private receiveMessage;
40
43
  private stopTaskOffers;
@@ -43,6 +46,7 @@ export declare abstract class TaskRunner {
43
46
  sendOffers(): void;
44
47
  send(message: RunnerMessage.ToN8n.All): void;
45
48
  onMessage(message: N8nMessage.ToRunner.All): void;
49
+ setNodeTypes(nodeTypes: INodeTypeDescription[]): void;
46
50
  processDataResponse(requestId: string, data: unknown): void;
47
51
  hasOpenTasks(): boolean;
48
52
  offerAccepted(offerId: string, taskId: string): void;