@e2b/n8n-nodes-e2b 0.1.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 (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/dist/credentials/E2BApi.credentials.d.ts +13 -0
  4. package/dist/credentials/E2BApi.credentials.js +58 -0
  5. package/dist/credentials/E2BApi.credentials.js.map +1 -0
  6. package/dist/credentials/e2b.dark.svg +1 -0
  7. package/dist/credentials/e2b.svg +1 -0
  8. package/dist/nodes/E2B/E2b.node.d.ts +5 -0
  9. package/dist/nodes/E2B/E2b.node.js +2901 -0
  10. package/dist/nodes/E2B/E2b.node.js.map +7 -0
  11. package/dist/nodes/E2B/E2b.node.json +20 -0
  12. package/dist/nodes/E2B/actions/code.operations.d.ts +8 -0
  13. package/dist/nodes/E2B/actions/code.operations.js +67 -0
  14. package/dist/nodes/E2B/actions/code.operations.js.map +1 -0
  15. package/dist/nodes/E2B/actions/file.operations.d.ts +95 -0
  16. package/dist/nodes/E2B/actions/file.operations.js +183 -0
  17. package/dist/nodes/E2B/actions/file.operations.js.map +1 -0
  18. package/dist/nodes/E2B/actions/git.operations.d.ts +48 -0
  19. package/dist/nodes/E2B/actions/git.operations.js +554 -0
  20. package/dist/nodes/E2B/actions/git.operations.js.map +1 -0
  21. package/dist/nodes/E2B/actions/index.d.ts +2 -0
  22. package/dist/nodes/E2B/actions/index.js +95 -0
  23. package/dist/nodes/E2B/actions/index.js.map +1 -0
  24. package/dist/nodes/E2B/actions/sandbox.operations.d.ts +48 -0
  25. package/dist/nodes/E2B/actions/sandbox.operations.js +93 -0
  26. package/dist/nodes/E2B/actions/sandbox.operations.js.map +1 -0
  27. package/dist/nodes/E2B/actions/snapshot.operations.d.ts +22 -0
  28. package/dist/nodes/E2B/actions/snapshot.operations.js +46 -0
  29. package/dist/nodes/E2B/actions/snapshot.operations.js.map +1 -0
  30. package/dist/nodes/E2B/actions/volume.operations.d.ts +28 -0
  31. package/dist/nodes/E2B/actions/volume.operations.js +57 -0
  32. package/dist/nodes/E2B/actions/volume.operations.js.map +1 -0
  33. package/dist/nodes/E2B/client.d.ts +97 -0
  34. package/dist/nodes/E2B/client.js +546 -0
  35. package/dist/nodes/E2B/client.js.map +1 -0
  36. package/dist/nodes/E2B/e2b.dark.svg +1 -0
  37. package/dist/nodes/E2B/e2b.svg +1 -0
  38. package/dist/nodes/E2B/helpers.d.ts +22 -0
  39. package/dist/nodes/E2B/helpers.js +224 -0
  40. package/dist/nodes/E2B/helpers.js.map +1 -0
  41. package/dist/nodes/E2B/types.d.ts +21 -0
  42. package/dist/nodes/E2B/types.js +21 -0
  43. package/dist/nodes/E2B/types.js.map +1 -0
  44. package/package.json +70 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asNonEmptyString = asNonEmptyString;
4
+ exports.getErrorMessage = getErrorMessage;
5
+ exports.getCollectionParameter = getCollectionParameter;
6
+ exports.getRecordString = getRecordString;
7
+ exports.getRecordBoolean = getRecordBoolean;
8
+ exports.getRecordNumber = getRecordNumber;
9
+ exports.splitCommaSeparated = splitCommaSeparated;
10
+ exports.quoteShellArg = quoteShellArg;
11
+ exports.parseStringMapParameter = parseStringMapParameter;
12
+ exports.getTimeoutMs = getTimeoutMs;
13
+ exports.getLimit = getLimit;
14
+ exports.getPort = getPort;
15
+ exports.getRequiredStringParameter = getRequiredStringParameter;
16
+ exports.getSandboxCreateOptions = getSandboxCreateOptions;
17
+ exports.toSandboxInfoData = toSandboxInfoData;
18
+ exports.toSnapshotInfoData = toSnapshotInfoData;
19
+ exports.toFileInfoData = toFileInfoData;
20
+ exports.toVolumeInfoData = toVolumeInfoData;
21
+ exports.toCommandResultData = toCommandResultData;
22
+ exports.toOperationCommandResultData = toOperationCommandResultData;
23
+ const n8n_workflow_1 = require("n8n-workflow");
24
+ function asNonEmptyString(value) {
25
+ return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
26
+ }
27
+ function getErrorMessage(error) {
28
+ if (error instanceof Error)
29
+ return error.message;
30
+ return String(error);
31
+ }
32
+ function isRecord(value) {
33
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
34
+ }
35
+ function getCollectionParameter(executeFunctions, name, itemIndex) {
36
+ const value = executeFunctions.getNodeParameter(name, itemIndex, {});
37
+ return isRecord(value) ? value : {};
38
+ }
39
+ function getRecordString(record, key) {
40
+ return asNonEmptyString(record[key]);
41
+ }
42
+ function getRecordBoolean(record, key) {
43
+ return typeof record[key] === 'boolean' ? record[key] : undefined;
44
+ }
45
+ function getRecordNumber(record, key) {
46
+ const value = record[key];
47
+ const numberValue = typeof value === 'number' ? value : Number(value);
48
+ return Number.isFinite(numberValue) ? numberValue : undefined;
49
+ }
50
+ function splitCommaSeparated(value) {
51
+ if (!value)
52
+ return undefined;
53
+ const entries = value
54
+ .split(',')
55
+ .map((entry) => entry.trim())
56
+ .filter((entry) => entry.length > 0);
57
+ return entries.length > 0 ? entries : undefined;
58
+ }
59
+ function quoteShellArg(value) {
60
+ return `'${value.replaceAll("'", "'\\''")}'`;
61
+ }
62
+ function parseStringMapParameter(executeFunctions, value, displayName, itemIndex) {
63
+ if (value === undefined || value === null || value === '')
64
+ return undefined;
65
+ let parsed = value;
66
+ if (typeof value === 'string') {
67
+ try {
68
+ parsed = JSON.parse(value);
69
+ }
70
+ catch (error) {
71
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `${displayName} must be valid JSON: ${getErrorMessage(error)}`, { itemIndex });
72
+ }
73
+ }
74
+ if (!isRecord(parsed)) {
75
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `${displayName} must be a JSON object`, {
76
+ itemIndex,
77
+ });
78
+ }
79
+ const output = {};
80
+ for (const [key, entryValue] of Object.entries(parsed)) {
81
+ if (entryValue === undefined || entryValue === null)
82
+ continue;
83
+ if (typeof entryValue === 'object') {
84
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `${displayName} values must be strings, numbers, or booleans`, { itemIndex });
85
+ }
86
+ output[key] = String(entryValue);
87
+ }
88
+ return Object.keys(output).length > 0 ? output : undefined;
89
+ }
90
+ function getTimeoutMs(executeFunctions, itemIndex) {
91
+ const timeoutSeconds = Number(executeFunctions.getNodeParameter('timeoutSeconds', itemIndex, 300));
92
+ if (!Number.isFinite(timeoutSeconds) || timeoutSeconds <= 0) {
93
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), 'Timeout must be greater than 0', {
94
+ itemIndex,
95
+ });
96
+ }
97
+ return Math.round(timeoutSeconds * 1000);
98
+ }
99
+ function getLimit(executeFunctions, itemIndex) {
100
+ const limit = Number(executeFunctions.getNodeParameter('limit', itemIndex, 50));
101
+ if (!Number.isInteger(limit) || limit <= 0) {
102
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), 'Limit must be a positive integer', {
103
+ itemIndex,
104
+ });
105
+ }
106
+ return limit;
107
+ }
108
+ function getPort(executeFunctions, itemIndex) {
109
+ const port = Number(executeFunctions.getNodeParameter('port', itemIndex, 3000));
110
+ if (!Number.isInteger(port) || port < 1 || port > 65535) {
111
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), 'Port must be an integer between 1 and 65535', { itemIndex });
112
+ }
113
+ return port;
114
+ }
115
+ function getRequiredStringParameter(executeFunctions, name, displayName, itemIndex) {
116
+ const value = asNonEmptyString(executeFunctions.getNodeParameter(name, itemIndex));
117
+ if (!value) {
118
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `${displayName} is required`, {
119
+ itemIndex,
120
+ });
121
+ }
122
+ return value;
123
+ }
124
+ function getSandboxCreateOptions(executeFunctions, itemIndex) {
125
+ const timeoutMs = getTimeoutMs(executeFunctions, itemIndex);
126
+ const template = asNonEmptyString(executeFunctions.getNodeParameter('template', itemIndex, ''));
127
+ const metadata = parseStringMapParameter(executeFunctions, executeFunctions.getNodeParameter('metadataJson', itemIndex, ''), 'Metadata', itemIndex);
128
+ const envs = parseStringMapParameter(executeFunctions, executeFunctions.getNodeParameter('envJson', itemIndex, ''), 'Environment Variables', itemIndex);
129
+ const volumeMounts = parseStringMapParameter(executeFunctions, executeFunctions.getNodeParameter('volumeMountsJson', itemIndex, ''), 'Volume Mounts', itemIndex);
130
+ const allowInternetAccess = executeFunctions.getNodeParameter('allowInternetAccess', itemIndex, true) === true;
131
+ return {
132
+ ...(template ? { template } : {}),
133
+ ...(metadata ? { metadata } : {}),
134
+ ...(envs ? { envs } : {}),
135
+ ...(volumeMounts ? { volumeMounts } : {}),
136
+ allowInternetAccess,
137
+ timeoutMs,
138
+ };
139
+ }
140
+ function toIsoString(value) {
141
+ if (value instanceof Date)
142
+ return value.toISOString();
143
+ return value;
144
+ }
145
+ function toSandboxInfoData(info, sandboxDomain) {
146
+ return {
147
+ sandboxId: info.sandboxId,
148
+ templateId: info.templateId,
149
+ name: info.name,
150
+ state: info.state,
151
+ metadata: info.metadata ?? {},
152
+ startedAt: toIsoString(info.startedAt),
153
+ endAt: toIsoString(info.endAt),
154
+ cpuCount: info.cpuCount,
155
+ memoryMB: info.memoryMB,
156
+ envdVersion: info.envdVersion,
157
+ allowInternetAccess: info.allowInternetAccess,
158
+ network: info.network,
159
+ lifecycle: info.lifecycle,
160
+ volumeMounts: info.volumeMounts ?? [],
161
+ sandboxDomain: sandboxDomain ?? info.sandboxDomain,
162
+ };
163
+ }
164
+ function toSnapshotInfoData(info) {
165
+ return {
166
+ snapshotId: info.snapshotId,
167
+ names: info.names,
168
+ };
169
+ }
170
+ function toFileInfoData(info) {
171
+ return {
172
+ name: info.name,
173
+ type: info.type,
174
+ path: info.path,
175
+ metadata: info.metadata ?? {},
176
+ ...('size' in info
177
+ ? {
178
+ size: info.size,
179
+ mode: info.mode,
180
+ permissions: info.permissions,
181
+ owner: info.owner,
182
+ group: info.group,
183
+ modifiedTime: toIsoString(info.modifiedTime),
184
+ symlinkTarget: info.symlinkTarget,
185
+ }
186
+ : {}),
187
+ };
188
+ }
189
+ function toVolumeInfoData(info) {
190
+ return {
191
+ volumeId: info.volumeId,
192
+ name: info.name,
193
+ ...(info.token ? { token: info.token } : {}),
194
+ };
195
+ }
196
+ function toCommandResultData(result, sandbox, command, startedAt, createdSandbox, killedAfterRun) {
197
+ return {
198
+ sandboxId: sandbox.sandboxId,
199
+ sandboxDomain: sandbox.sandboxDomain,
200
+ createdSandbox,
201
+ killedAfterRun,
202
+ command,
203
+ success: result.exitCode === 0,
204
+ exitCode: result.exitCode,
205
+ stdout: result.stdout,
206
+ stderr: result.stderr,
207
+ error: result.error,
208
+ executionTimeMs: Date.now() - startedAt,
209
+ };
210
+ }
211
+ function toOperationCommandResultData(result, sandboxId, operation, startedAt, extra = {}) {
212
+ return {
213
+ sandboxId,
214
+ operation,
215
+ success: result.exitCode === 0,
216
+ exitCode: result.exitCode,
217
+ stdout: result.stdout,
218
+ stderr: result.stderr,
219
+ error: result.error,
220
+ executionTimeMs: Date.now() - startedAt,
221
+ ...extra,
222
+ };
223
+ }
224
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../nodes/E2B/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ICredentialDataDecryptedObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ export declare const RESOURCE_OPERATIONS: {
3
+ readonly code: readonly ["runCommand"];
4
+ readonly file: readonly ["createFolder", "delete", "download", "info", "list", "move", "read", "upload", "write"];
5
+ readonly git: readonly ["add", "checkout", "clone", "commit", "pull", "push", "status"];
6
+ readonly sandbox: readonly ["create", "get", "getMany", "getPreviewUrl", "kill", "pause"];
7
+ readonly snapshot: readonly ["create", "delete", "getMany"];
8
+ readonly volume: readonly ["create", "delete", "get", "getMany"];
9
+ };
10
+ export type Resource = keyof typeof RESOURCE_OPERATIONS;
11
+ export type OperationForResource<R extends Resource> = (typeof RESOURCE_OPERATIONS)[R][number];
12
+ export type Operation = OperationForResource<Resource>;
13
+ export interface E2BOperationContext {
14
+ executeFunctions: IExecuteFunctions;
15
+ credentials: ICredentialDataDecryptedObject;
16
+ itemIndex: number;
17
+ timeoutMs: number;
18
+ }
19
+ export type E2BOperationHandler = (context: E2BOperationContext) => Promise<INodeExecutionData[]>;
20
+ export declare function isResource(value: unknown): value is Resource;
21
+ export declare function isOperationForResource<R extends Resource>(resource: R, value: unknown): value is OperationForResource<R>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESOURCE_OPERATIONS = void 0;
4
+ exports.isResource = isResource;
5
+ exports.isOperationForResource = isOperationForResource;
6
+ exports.RESOURCE_OPERATIONS = {
7
+ code: ['runCommand'],
8
+ file: ['createFolder', 'delete', 'download', 'info', 'list', 'move', 'read', 'upload', 'write'],
9
+ git: ['add', 'checkout', 'clone', 'commit', 'pull', 'push', 'status'],
10
+ sandbox: ['create', 'get', 'getMany', 'getPreviewUrl', 'kill', 'pause'],
11
+ snapshot: ['create', 'delete', 'getMany'],
12
+ volume: ['create', 'delete', 'get', 'getMany'],
13
+ };
14
+ function isResource(value) {
15
+ return typeof value === 'string' && value in exports.RESOURCE_OPERATIONS;
16
+ }
17
+ function isOperationForResource(resource, value) {
18
+ return (typeof value === 'string' &&
19
+ exports.RESOURCE_OPERATIONS[resource].some((operation) => operation === value));
20
+ }
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../nodes/E2B/types.ts"],"names":[],"mappings":";;;AAgCA,gCAEC;AAED,wDAQC;AAtCY,QAAA,mBAAmB,GAAG;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC;IACpB,IAAI,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC/F,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IACrE,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC;IACvE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;CACrC,CAAC;AAmBX,SAAgB,UAAU,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,2BAAmB,CAAC;AAClE,CAAC;AAED,SAAgB,sBAAsB,CACrC,QAAW,EACX,KAAc;IAEd,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,2BAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CACtE,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@e2b/n8n-nodes-e2b",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for E2B - create and manage sandboxes and snapshots, and run commands in cloud sandboxes from your workflows.",
5
+ "packageManager": "pnpm@11.7.0",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/e2b-dev/n8n-nodes-e2b#readme",
8
+ "keywords": [
9
+ "n8n-community-node-package",
10
+ "n8n",
11
+ "e2b",
12
+ "sandbox",
13
+ "code-execution",
14
+ "ai-agents"
15
+ ],
16
+ "author": {
17
+ "name": "FoundryLabs, Inc.",
18
+ "email": "hello@e2b.dev",
19
+ "url": "https://e2b.dev"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/e2b-dev/n8n-nodes-e2b.git"
24
+ },
25
+ "bugs": {
26
+ "url": "https://github.com/e2b-dev/n8n-nodes-e2b/issues"
27
+ },
28
+ "scripts": {
29
+ "build": "n8n-node build && node scripts/bundle-node.mjs",
30
+ "build:watch": "tsc --watch",
31
+ "dev": "n8n-node dev",
32
+ "lint": "n8n-node lint",
33
+ "lint:basic": "eslint . --config eslint.basic.config.mjs",
34
+ "lint:fix": "n8n-node lint --fix",
35
+ "release": "n8n-node release",
36
+ "prepublishOnly": "n8n-node prerelease",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest",
39
+ "typecheck": "tsc --noEmit"
40
+ },
41
+ "files": [
42
+ "dist"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "provenance": true
47
+ },
48
+ "n8n": {
49
+ "n8nNodesApiVersion": 1,
50
+ "strict": true,
51
+ "credentials": [
52
+ "dist/credentials/E2BApi.credentials.js"
53
+ ],
54
+ "nodes": [
55
+ "dist/nodes/E2B/E2b.node.js"
56
+ ]
57
+ },
58
+ "devDependencies": {
59
+ "@n8n/node-cli": "*",
60
+ "@types/node": "^24.10.1",
61
+ "esbuild": "^0.28.1",
62
+ "eslint": "9.29.0",
63
+ "n8n-workflow": "^2.27.0",
64
+ "typescript": "^5.9.2",
65
+ "vitest": "^4.1.5"
66
+ },
67
+ "peerDependencies": {
68
+ "n8n-workflow": "*"
69
+ }
70
+ }