@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.
- package/LICENSE +21 -0
- package/README.md +51 -0
- package/dist/credentials/E2BApi.credentials.d.ts +13 -0
- package/dist/credentials/E2BApi.credentials.js +58 -0
- package/dist/credentials/E2BApi.credentials.js.map +1 -0
- package/dist/credentials/e2b.dark.svg +1 -0
- package/dist/credentials/e2b.svg +1 -0
- package/dist/nodes/E2B/E2b.node.d.ts +5 -0
- package/dist/nodes/E2B/E2b.node.js +2901 -0
- package/dist/nodes/E2B/E2b.node.js.map +7 -0
- package/dist/nodes/E2B/E2b.node.json +20 -0
- package/dist/nodes/E2B/actions/code.operations.d.ts +8 -0
- package/dist/nodes/E2B/actions/code.operations.js +67 -0
- package/dist/nodes/E2B/actions/code.operations.js.map +1 -0
- package/dist/nodes/E2B/actions/file.operations.d.ts +95 -0
- package/dist/nodes/E2B/actions/file.operations.js +183 -0
- package/dist/nodes/E2B/actions/file.operations.js.map +1 -0
- package/dist/nodes/E2B/actions/git.operations.d.ts +48 -0
- package/dist/nodes/E2B/actions/git.operations.js +554 -0
- package/dist/nodes/E2B/actions/git.operations.js.map +1 -0
- package/dist/nodes/E2B/actions/index.d.ts +2 -0
- package/dist/nodes/E2B/actions/index.js +95 -0
- package/dist/nodes/E2B/actions/index.js.map +1 -0
- package/dist/nodes/E2B/actions/sandbox.operations.d.ts +48 -0
- package/dist/nodes/E2B/actions/sandbox.operations.js +93 -0
- package/dist/nodes/E2B/actions/sandbox.operations.js.map +1 -0
- package/dist/nodes/E2B/actions/snapshot.operations.d.ts +22 -0
- package/dist/nodes/E2B/actions/snapshot.operations.js +46 -0
- package/dist/nodes/E2B/actions/snapshot.operations.js.map +1 -0
- package/dist/nodes/E2B/actions/volume.operations.d.ts +28 -0
- package/dist/nodes/E2B/actions/volume.operations.js +57 -0
- package/dist/nodes/E2B/actions/volume.operations.js.map +1 -0
- package/dist/nodes/E2B/client.d.ts +97 -0
- package/dist/nodes/E2B/client.js +546 -0
- package/dist/nodes/E2B/client.js.map +1 -0
- package/dist/nodes/E2B/e2b.dark.svg +1 -0
- package/dist/nodes/E2B/e2b.svg +1 -0
- package/dist/nodes/E2B/helpers.d.ts +22 -0
- package/dist/nodes/E2B/helpers.js +224 -0
- package/dist/nodes/E2B/helpers.js.map +1 -0
- package/dist/nodes/E2B/types.d.ts +21 -0
- package/dist/nodes/E2B/types.js +21 -0
- package/dist/nodes/E2B/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSandbox = createSandbox;
|
|
4
|
+
exports.connectSandbox = connectSandbox;
|
|
5
|
+
exports.getSandboxInfo = getSandboxInfo;
|
|
6
|
+
exports.listSandboxes = listSandboxes;
|
|
7
|
+
exports.killSandbox = killSandbox;
|
|
8
|
+
exports.pauseSandbox = pauseSandbox;
|
|
9
|
+
exports.createSnapshot = createSnapshot;
|
|
10
|
+
exports.listSnapshots = listSnapshots;
|
|
11
|
+
exports.deleteSnapshot = deleteSnapshot;
|
|
12
|
+
exports.createVolume = createVolume;
|
|
13
|
+
exports.getVolume = getVolume;
|
|
14
|
+
exports.listVolumes = listVolumes;
|
|
15
|
+
exports.deleteVolume = deleteVolume;
|
|
16
|
+
exports.getPreviewHost = getPreviewHost;
|
|
17
|
+
exports.readSandboxFile = readSandboxFile;
|
|
18
|
+
exports.writeSandboxFile = writeSandboxFile;
|
|
19
|
+
exports.listSandboxFiles = listSandboxFiles;
|
|
20
|
+
exports.createSandboxFolder = createSandboxFolder;
|
|
21
|
+
exports.deleteSandboxFile = deleteSandboxFile;
|
|
22
|
+
exports.getSandboxFileInfo = getSandboxFileInfo;
|
|
23
|
+
exports.moveSandboxFile = moveSandboxFile;
|
|
24
|
+
exports.runSandboxCommand = runSandboxCommand;
|
|
25
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
26
|
+
const CREDENTIAL_TYPE = 'e2bApi';
|
|
27
|
+
const DEFAULT_DOMAIN = 'e2b.app';
|
|
28
|
+
const DEFAULT_API_URL = `https://api.${DEFAULT_DOMAIN}`;
|
|
29
|
+
const DEFAULT_SANDBOX_TIMEOUT_MS = 300_000;
|
|
30
|
+
const ENVD_PORT = 49983;
|
|
31
|
+
const ENVD_DEFAULT_USER = '0.4.0';
|
|
32
|
+
const SUPPORTED_SANDBOX_DOMAINS = new Set(['e2b.app', 'e2b.dev', 'e2b.pro', 'e2b-staging.dev']);
|
|
33
|
+
const CONNECT_PROTOCOL_VERSION = '1';
|
|
34
|
+
const CONNECT_END_STREAM_FLAG = 0b00000010;
|
|
35
|
+
const CONNECT_COMPRESSED_FLAG = 0b00000001;
|
|
36
|
+
function asRecord(value) {
|
|
37
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
38
|
+
return undefined;
|
|
39
|
+
return Object.fromEntries(Object.entries(value));
|
|
40
|
+
}
|
|
41
|
+
function asString(value) {
|
|
42
|
+
return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
|
|
43
|
+
}
|
|
44
|
+
function asNumber(value) {
|
|
45
|
+
const numberValue = typeof value === 'number' ? value : Number(value);
|
|
46
|
+
return Number.isFinite(numberValue) ? numberValue : undefined;
|
|
47
|
+
}
|
|
48
|
+
function asBoolean(value) {
|
|
49
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
50
|
+
}
|
|
51
|
+
function asStringArray(value) {
|
|
52
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === 'string') : [];
|
|
53
|
+
}
|
|
54
|
+
function cleanBaseUrl(url) {
|
|
55
|
+
return url.replace(/\/+$/, '');
|
|
56
|
+
}
|
|
57
|
+
function getCredentialString(credentials, key) {
|
|
58
|
+
return asString(credentials[key]);
|
|
59
|
+
}
|
|
60
|
+
function getApiBaseUrl(credentials) {
|
|
61
|
+
return cleanBaseUrl(getCredentialString(credentials, 'apiUrl') ?? DEFAULT_API_URL);
|
|
62
|
+
}
|
|
63
|
+
function getDomain(credentials) {
|
|
64
|
+
return getCredentialString(credentials, 'domain') ?? DEFAULT_DOMAIN;
|
|
65
|
+
}
|
|
66
|
+
function getStatusCode(response) {
|
|
67
|
+
return response.statusCode ?? response.status;
|
|
68
|
+
}
|
|
69
|
+
function toJsonObject(value, fallbackMessage) {
|
|
70
|
+
const record = asRecord(value);
|
|
71
|
+
if (record)
|
|
72
|
+
return record;
|
|
73
|
+
return { message: fallbackMessage };
|
|
74
|
+
}
|
|
75
|
+
function getErrorMessageFromBody(body, fallback) {
|
|
76
|
+
const record = asRecord(body);
|
|
77
|
+
const message = asString(record?.message);
|
|
78
|
+
if (message)
|
|
79
|
+
return message;
|
|
80
|
+
const error = record?.error;
|
|
81
|
+
if (typeof error === 'string')
|
|
82
|
+
return error;
|
|
83
|
+
const nested = asRecord(error);
|
|
84
|
+
const nestedMessage = asString(nested?.message);
|
|
85
|
+
return nestedMessage ?? fallback;
|
|
86
|
+
}
|
|
87
|
+
function throwApiResponseError(executeFunctions, response, fallbackMessage) {
|
|
88
|
+
const statusCode = getStatusCode(response);
|
|
89
|
+
const message = getErrorMessageFromBody(response.body, statusCode ? `${statusCode}: ${fallbackMessage}` : fallbackMessage);
|
|
90
|
+
throw new n8n_workflow_1.NodeApiError(executeFunctions.getNode(), toJsonObject(response.body, message));
|
|
91
|
+
}
|
|
92
|
+
async function apiRequest(connection, method, endpoint, options = {}) {
|
|
93
|
+
const requestOptions = {
|
|
94
|
+
method,
|
|
95
|
+
url: `${getApiBaseUrl(connection.credentials)}${endpoint}`,
|
|
96
|
+
headers: options.headers,
|
|
97
|
+
qs: options.qs,
|
|
98
|
+
body: options.body,
|
|
99
|
+
encoding: options.encoding,
|
|
100
|
+
returnFullResponse: options.returnFullResponse,
|
|
101
|
+
ignoreHttpStatusErrors: options.ignoreHttpStatusErrors,
|
|
102
|
+
timeout: connection.timeoutMs,
|
|
103
|
+
};
|
|
104
|
+
try {
|
|
105
|
+
return (await connection.executeFunctions.helpers.httpRequestWithAuthentication.call(connection.executeFunctions, CREDENTIAL_TYPE, requestOptions));
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new n8n_workflow_1.NodeApiError(connection.executeFunctions.getNode(), toJsonObject(error, 'E2B API request failed'));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function apiRequestFull(connection, method, endpoint, options = {}) {
|
|
112
|
+
return await apiRequest(connection, method, endpoint, {
|
|
113
|
+
...options,
|
|
114
|
+
returnFullResponse: true,
|
|
115
|
+
ignoreHttpStatusErrors: true,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function mapSandboxInfo(value) {
|
|
119
|
+
const record = asRecord(value) ?? {};
|
|
120
|
+
return {
|
|
121
|
+
sandboxId: asString(record.sandboxID) ?? asString(record.sandboxId) ?? '',
|
|
122
|
+
templateId: asString(record.templateID) ?? asString(record.templateId) ?? '',
|
|
123
|
+
...(asString(record.alias) ? { name: asString(record.alias) } : {}),
|
|
124
|
+
metadata: asRecord(record.metadata) ?? {},
|
|
125
|
+
startedAt: asString(record.startedAt),
|
|
126
|
+
endAt: asString(record.endAt),
|
|
127
|
+
state: asString(record.state),
|
|
128
|
+
cpuCount: asNumber(record.cpuCount),
|
|
129
|
+
memoryMB: asNumber(record.memoryMB),
|
|
130
|
+
envdVersion: asString(record.envdVersion),
|
|
131
|
+
allowInternetAccess: asBoolean(record.allowInternetAccess),
|
|
132
|
+
network: asRecord(record.network),
|
|
133
|
+
lifecycle: asRecord(record.lifecycle),
|
|
134
|
+
volumeMounts: Array.isArray(record.volumeMounts) ? record.volumeMounts : [],
|
|
135
|
+
sandboxDomain: asString(record.domain) ?? asString(record.sandboxDomain),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function mapConnectedSandbox(value, sandboxId) {
|
|
139
|
+
const record = asRecord(value) ?? {};
|
|
140
|
+
return {
|
|
141
|
+
sandboxId: asString(record.sandboxID) ?? asString(record.sandboxId) ?? sandboxId ?? '',
|
|
142
|
+
sandboxDomain: asString(record.domain) ?? asString(record.sandboxDomain),
|
|
143
|
+
envdVersion: asString(record.envdVersion) ?? '0.0.0',
|
|
144
|
+
envdAccessToken: asString(record.envdAccessToken),
|
|
145
|
+
trafficAccessToken: asString(record.trafficAccessToken),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function mapSnapshot(value) {
|
|
149
|
+
const record = asRecord(value) ?? {};
|
|
150
|
+
return {
|
|
151
|
+
snapshotId: asString(record.snapshotID) ?? asString(record.snapshotId) ?? '',
|
|
152
|
+
names: asStringArray(record.names),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function mapVolume(value) {
|
|
156
|
+
const record = asRecord(value) ?? {};
|
|
157
|
+
return {
|
|
158
|
+
volumeId: asString(record.volumeID) ?? asString(record.volumeId) ?? '',
|
|
159
|
+
name: asString(record.name) ?? '',
|
|
160
|
+
token: asString(record.token),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function timeoutToSeconds(timeoutMs) {
|
|
164
|
+
return Math.round(timeoutMs / 1000);
|
|
165
|
+
}
|
|
166
|
+
async function createSandbox(connection, options) {
|
|
167
|
+
const body = {
|
|
168
|
+
templateID: options.template ?? 'base',
|
|
169
|
+
metadata: options.metadata,
|
|
170
|
+
envVars: options.envs,
|
|
171
|
+
timeout: timeoutToSeconds(options.timeoutMs),
|
|
172
|
+
secure: true,
|
|
173
|
+
allow_internet_access: options.allowInternetAccess,
|
|
174
|
+
};
|
|
175
|
+
if (options.volumeMounts) {
|
|
176
|
+
body.volumeMounts = Object.entries(options.volumeMounts).map(([path, name]) => ({ name, path }));
|
|
177
|
+
}
|
|
178
|
+
const response = await apiRequest(connection, 'POST', '/sandboxes', { body });
|
|
179
|
+
return mapConnectedSandbox(response);
|
|
180
|
+
}
|
|
181
|
+
async function connectSandbox(connection, sandboxId) {
|
|
182
|
+
const response = await apiRequest(connection, 'POST', `/sandboxes/${encodeURIComponent(sandboxId)}/connect`, {
|
|
183
|
+
body: {
|
|
184
|
+
timeout: timeoutToSeconds(DEFAULT_SANDBOX_TIMEOUT_MS),
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
return mapConnectedSandbox(response, sandboxId);
|
|
188
|
+
}
|
|
189
|
+
async function getSandboxInfo(connection, sandboxId) {
|
|
190
|
+
const response = await apiRequest(connection, 'GET', `/sandboxes/${encodeURIComponent(sandboxId)}`);
|
|
191
|
+
return mapSandboxInfo(response);
|
|
192
|
+
}
|
|
193
|
+
async function listSandboxes(connection, limit) {
|
|
194
|
+
const response = await apiRequest(connection, 'GET', '/v2/sandboxes', { qs: { limit } });
|
|
195
|
+
return Array.isArray(response) ? response.map(mapSandboxInfo) : [];
|
|
196
|
+
}
|
|
197
|
+
async function killSandbox(connection, sandboxId) {
|
|
198
|
+
const response = await apiRequestFull(connection, 'DELETE', `/sandboxes/${encodeURIComponent(sandboxId)}`);
|
|
199
|
+
const statusCode = getStatusCode(response);
|
|
200
|
+
if (statusCode === 404)
|
|
201
|
+
return false;
|
|
202
|
+
if (statusCode && statusCode >= 400)
|
|
203
|
+
throwApiResponseError(connection.executeFunctions, response, 'Failed to kill sandbox');
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
async function pauseSandbox(connection, sandboxId) {
|
|
207
|
+
const response = await apiRequestFull(connection, 'POST', `/sandboxes/${encodeURIComponent(sandboxId)}/pause`, {
|
|
208
|
+
body: { memory: true },
|
|
209
|
+
});
|
|
210
|
+
const statusCode = getStatusCode(response);
|
|
211
|
+
if (statusCode === 409)
|
|
212
|
+
return false;
|
|
213
|
+
if (statusCode && statusCode >= 400)
|
|
214
|
+
throwApiResponseError(connection.executeFunctions, response, 'Failed to pause sandbox');
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
async function createSnapshot(connection, sandboxId, name) {
|
|
218
|
+
const response = await apiRequest(connection, 'POST', `/sandboxes/${encodeURIComponent(sandboxId)}/snapshots`, {
|
|
219
|
+
body: name ? { name } : {},
|
|
220
|
+
});
|
|
221
|
+
return mapSnapshot(response);
|
|
222
|
+
}
|
|
223
|
+
async function listSnapshots(connection, limit, sandboxId) {
|
|
224
|
+
const response = await apiRequest(connection, 'GET', '/snapshots', {
|
|
225
|
+
qs: {
|
|
226
|
+
limit,
|
|
227
|
+
...(sandboxId ? { sandboxID: sandboxId } : {}),
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
return Array.isArray(response) ? response.map(mapSnapshot) : [];
|
|
231
|
+
}
|
|
232
|
+
async function deleteSnapshot(connection, snapshotId) {
|
|
233
|
+
const response = await apiRequestFull(connection, 'DELETE', `/templates/${encodeURIComponent(snapshotId)}`);
|
|
234
|
+
const statusCode = getStatusCode(response);
|
|
235
|
+
if (statusCode === 404)
|
|
236
|
+
return false;
|
|
237
|
+
if (statusCode && statusCode >= 400)
|
|
238
|
+
throwApiResponseError(connection.executeFunctions, response, 'Failed to delete snapshot');
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
async function createVolume(connection, name) {
|
|
242
|
+
const response = await apiRequest(connection, 'POST', '/volumes', { body: { name } });
|
|
243
|
+
return mapVolume(response);
|
|
244
|
+
}
|
|
245
|
+
async function getVolume(connection, volumeId) {
|
|
246
|
+
const response = await apiRequest(connection, 'GET', `/volumes/${encodeURIComponent(volumeId)}`);
|
|
247
|
+
return mapVolume(response);
|
|
248
|
+
}
|
|
249
|
+
async function listVolumes(connection) {
|
|
250
|
+
const response = await apiRequest(connection, 'GET', '/volumes');
|
|
251
|
+
return Array.isArray(response) ? response.map(mapVolume) : [];
|
|
252
|
+
}
|
|
253
|
+
async function deleteVolume(connection, volumeId) {
|
|
254
|
+
const response = await apiRequestFull(connection, 'DELETE', `/volumes/${encodeURIComponent(volumeId)}`);
|
|
255
|
+
const statusCode = getStatusCode(response);
|
|
256
|
+
if (statusCode === 404)
|
|
257
|
+
return false;
|
|
258
|
+
if (statusCode && statusCode >= 400)
|
|
259
|
+
throwApiResponseError(connection.executeFunctions, response, 'Failed to delete volume');
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
function getSandboxHost(connection, sandboxId, port, sandboxDomain) {
|
|
263
|
+
return `${port}-${sandboxId}.${sandboxDomain ?? getDomain(connection.credentials)}`;
|
|
264
|
+
}
|
|
265
|
+
function getPreviewHost(connection, sandbox, port) {
|
|
266
|
+
return getSandboxHost(connection, sandbox.sandboxId, port, sandbox.sandboxDomain);
|
|
267
|
+
}
|
|
268
|
+
function getEnvdBaseUrl(connection, sandbox) {
|
|
269
|
+
const sandboxUrl = getCredentialString(connection.credentials, 'sandboxUrl');
|
|
270
|
+
if (sandboxUrl)
|
|
271
|
+
return cleanBaseUrl(sandboxUrl);
|
|
272
|
+
const sandboxDomain = sandbox.sandboxDomain ?? getDomain(connection.credentials);
|
|
273
|
+
if (SUPPORTED_SANDBOX_DOMAINS.has(sandboxDomain)) {
|
|
274
|
+
return `https://sandbox.${sandboxDomain}`;
|
|
275
|
+
}
|
|
276
|
+
return `https://${getSandboxHost(connection, sandbox.sandboxId, ENVD_PORT, sandboxDomain)}`;
|
|
277
|
+
}
|
|
278
|
+
function compareVersion(left, right) {
|
|
279
|
+
const leftParts = left.split('.').map((part) => Number.parseInt(part, 10) || 0);
|
|
280
|
+
const rightParts = right.split('.').map((part) => Number.parseInt(part, 10) || 0);
|
|
281
|
+
const length = Math.max(leftParts.length, rightParts.length);
|
|
282
|
+
for (let index = 0; index < length; index++) {
|
|
283
|
+
const diff = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
|
|
284
|
+
if (diff !== 0)
|
|
285
|
+
return diff;
|
|
286
|
+
}
|
|
287
|
+
return 0;
|
|
288
|
+
}
|
|
289
|
+
function sandboxHeaders(connection, sandbox) {
|
|
290
|
+
const headers = {
|
|
291
|
+
'E2b-Sandbox-Id': sandbox.sandboxId,
|
|
292
|
+
'E2b-Sandbox-Port': ENVD_PORT.toString(),
|
|
293
|
+
};
|
|
294
|
+
if (sandbox.envdAccessToken) {
|
|
295
|
+
headers['X-Access-Token'] = sandbox.envdAccessToken;
|
|
296
|
+
}
|
|
297
|
+
if (compareVersion(sandbox.envdVersion, ENVD_DEFAULT_USER) < 0) {
|
|
298
|
+
headers.Authorization = `Basic ${Buffer.from('user:').toString('base64')}`;
|
|
299
|
+
}
|
|
300
|
+
return headers;
|
|
301
|
+
}
|
|
302
|
+
async function envdRequest(connection, sandbox, method, path, options = {}) {
|
|
303
|
+
const requestOptions = {
|
|
304
|
+
method,
|
|
305
|
+
url: `${getEnvdBaseUrl(connection, sandbox)}${path}`,
|
|
306
|
+
headers: {
|
|
307
|
+
...sandboxHeaders(connection, sandbox),
|
|
308
|
+
...options.headers,
|
|
309
|
+
},
|
|
310
|
+
qs: options.qs,
|
|
311
|
+
body: options.body,
|
|
312
|
+
encoding: options.encoding,
|
|
313
|
+
returnFullResponse: options.returnFullResponse,
|
|
314
|
+
ignoreHttpStatusErrors: options.ignoreHttpStatusErrors,
|
|
315
|
+
timeout: connection.timeoutMs,
|
|
316
|
+
};
|
|
317
|
+
try {
|
|
318
|
+
return (await connection.executeFunctions.helpers.httpRequest(requestOptions));
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
throw new n8n_workflow_1.NodeApiError(connection.executeFunctions.getNode(), toJsonObject(error, 'E2B sandbox request failed'));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
function encodeConnectEnvelope(message) {
|
|
325
|
+
const payload = Buffer.from(JSON.stringify(message), 'utf8');
|
|
326
|
+
const envelope = Buffer.alloc(payload.length + 5);
|
|
327
|
+
envelope.writeUInt8(0, 0);
|
|
328
|
+
envelope.writeUInt32BE(payload.length, 1);
|
|
329
|
+
payload.copy(envelope, 5);
|
|
330
|
+
return envelope;
|
|
331
|
+
}
|
|
332
|
+
function parseConnectEnvelopes(body) {
|
|
333
|
+
const buffer = Buffer.isBuffer(body) ? body : Buffer.from(body);
|
|
334
|
+
const messages = [];
|
|
335
|
+
let offset = 0;
|
|
336
|
+
while (offset < buffer.length) {
|
|
337
|
+
if (offset + 5 > buffer.length) {
|
|
338
|
+
throw new Error('Incomplete Connect response envelope');
|
|
339
|
+
}
|
|
340
|
+
const flags = buffer.readUInt8(offset);
|
|
341
|
+
const length = buffer.readUInt32BE(offset + 1);
|
|
342
|
+
const start = offset + 5;
|
|
343
|
+
const end = start + length;
|
|
344
|
+
if (end > buffer.length) {
|
|
345
|
+
throw new Error('Incomplete Connect response message');
|
|
346
|
+
}
|
|
347
|
+
if ((flags & CONNECT_COMPRESSED_FLAG) === CONNECT_COMPRESSED_FLAG) {
|
|
348
|
+
throw new Error('Compressed Connect responses are not supported');
|
|
349
|
+
}
|
|
350
|
+
const json = JSON.parse(buffer.subarray(start, end).toString('utf8'));
|
|
351
|
+
const record = asRecord(json) ?? {};
|
|
352
|
+
if ((flags & CONNECT_END_STREAM_FLAG) === CONNECT_END_STREAM_FLAG) {
|
|
353
|
+
const error = asRecord(record.error);
|
|
354
|
+
if (error)
|
|
355
|
+
throw new Error(getErrorMessageFromBody(error, 'E2B Connect request failed'));
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
messages.push(record);
|
|
359
|
+
}
|
|
360
|
+
offset = end;
|
|
361
|
+
}
|
|
362
|
+
return messages;
|
|
363
|
+
}
|
|
364
|
+
async function connectUnary(connection, sandbox, service, method, body) {
|
|
365
|
+
const response = await envdRequest(connection, sandbox, 'POST', `/${service}/${method}`, {
|
|
366
|
+
body,
|
|
367
|
+
headers: {
|
|
368
|
+
'Content-Type': 'application/json',
|
|
369
|
+
'Connect-Protocol-Version': CONNECT_PROTOCOL_VERSION,
|
|
370
|
+
'Connect-Timeout-Ms': connection.timeoutMs.toString(),
|
|
371
|
+
},
|
|
372
|
+
encoding: 'json',
|
|
373
|
+
returnFullResponse: true,
|
|
374
|
+
ignoreHttpStatusErrors: true,
|
|
375
|
+
});
|
|
376
|
+
const statusCode = getStatusCode(response);
|
|
377
|
+
if (statusCode && statusCode >= 400)
|
|
378
|
+
throwApiResponseError(connection.executeFunctions, response, 'E2B Connect request failed');
|
|
379
|
+
return (asRecord(response.body) ?? {});
|
|
380
|
+
}
|
|
381
|
+
async function connectStream(connection, sandbox, service, method, body) {
|
|
382
|
+
const response = await envdRequest(connection, sandbox, 'POST', `/${service}/${method}`, {
|
|
383
|
+
body: encodeConnectEnvelope(body),
|
|
384
|
+
headers: {
|
|
385
|
+
'Content-Type': 'application/connect+json',
|
|
386
|
+
'Connect-Protocol-Version': CONNECT_PROTOCOL_VERSION,
|
|
387
|
+
'Connect-Timeout-Ms': connection.timeoutMs.toString(),
|
|
388
|
+
'Keepalive-Ping-Interval': '50',
|
|
389
|
+
},
|
|
390
|
+
encoding: 'arraybuffer',
|
|
391
|
+
returnFullResponse: true,
|
|
392
|
+
ignoreHttpStatusErrors: true,
|
|
393
|
+
});
|
|
394
|
+
const statusCode = getStatusCode(response);
|
|
395
|
+
if (statusCode && statusCode >= 400)
|
|
396
|
+
throwApiResponseError(connection.executeFunctions, response, 'E2B Connect stream failed');
|
|
397
|
+
if (!response.body || !(response.body instanceof ArrayBuffer || Buffer.isBuffer(response.body))) {
|
|
398
|
+
throw new Error('Expected E2B Connect stream response body');
|
|
399
|
+
}
|
|
400
|
+
return parseConnectEnvelopes(response.body);
|
|
401
|
+
}
|
|
402
|
+
function mapFileType(value) {
|
|
403
|
+
if (value === 1 || value === 'FILE' || value === 'FILE_TYPE_FILE')
|
|
404
|
+
return 'file';
|
|
405
|
+
if (value === 2 || value === 'DIRECTORY' || value === 'FILE_TYPE_DIRECTORY')
|
|
406
|
+
return 'dir';
|
|
407
|
+
return undefined;
|
|
408
|
+
}
|
|
409
|
+
function mapFileInfo(value) {
|
|
410
|
+
const record = asRecord(value) ?? {};
|
|
411
|
+
const modifiedTime = record.modifiedTime;
|
|
412
|
+
return {
|
|
413
|
+
name: asString(record.name) ?? '',
|
|
414
|
+
type: mapFileType(record.type),
|
|
415
|
+
path: asString(record.path) ?? '',
|
|
416
|
+
metadata: asRecord(record.metadata),
|
|
417
|
+
size: asNumber(record.size),
|
|
418
|
+
mode: asNumber(record.mode),
|
|
419
|
+
permissions: asString(record.permissions),
|
|
420
|
+
owner: asString(record.owner),
|
|
421
|
+
group: asString(record.group),
|
|
422
|
+
modifiedTime: typeof modifiedTime === 'string'
|
|
423
|
+
? modifiedTime
|
|
424
|
+
: asString(asRecord(modifiedTime)?.seconds)
|
|
425
|
+
? new Date(Number(asString(asRecord(modifiedTime)?.seconds)) * 1000).toISOString()
|
|
426
|
+
: undefined,
|
|
427
|
+
symlinkTarget: asString(record.symlinkTarget),
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
function mapWriteInfo(value) {
|
|
431
|
+
const record = asRecord(value) ?? {};
|
|
432
|
+
return {
|
|
433
|
+
name: asString(record.name) ?? '',
|
|
434
|
+
type: mapFileType(record.type),
|
|
435
|
+
path: asString(record.path) ?? '',
|
|
436
|
+
metadata: asRecord(record.metadata),
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
function parseJsonArray(value) {
|
|
440
|
+
if (Array.isArray(value))
|
|
441
|
+
return value;
|
|
442
|
+
if (typeof value !== 'string')
|
|
443
|
+
return [];
|
|
444
|
+
try {
|
|
445
|
+
const parsed = JSON.parse(value);
|
|
446
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
447
|
+
}
|
|
448
|
+
catch {
|
|
449
|
+
return [];
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
async function readSandboxFile(connection, sandbox, path, format) {
|
|
453
|
+
const response = await envdRequest(connection, sandbox, 'GET', '/files', {
|
|
454
|
+
qs: { path },
|
|
455
|
+
encoding: format === 'bytes' ? 'arraybuffer' : 'text',
|
|
456
|
+
returnFullResponse: true,
|
|
457
|
+
ignoreHttpStatusErrors: true,
|
|
458
|
+
});
|
|
459
|
+
const statusCode = getStatusCode(response);
|
|
460
|
+
if (statusCode && statusCode >= 400)
|
|
461
|
+
throwApiResponseError(connection.executeFunctions, response, 'Failed to read sandbox file');
|
|
462
|
+
if (format === 'bytes') {
|
|
463
|
+
return Buffer.isBuffer(response.body) ? response.body : Buffer.from(response.body);
|
|
464
|
+
}
|
|
465
|
+
return typeof response.body === 'string' ? response.body : '';
|
|
466
|
+
}
|
|
467
|
+
async function writeSandboxFile(connection, sandbox, path, content) {
|
|
468
|
+
const formData = new FormData();
|
|
469
|
+
const blobContent = Buffer.isBuffer(content) ? new Uint8Array(content) : content;
|
|
470
|
+
formData.append('file', new Blob([blobContent]), path);
|
|
471
|
+
const response = await envdRequest(connection, sandbox, 'POST', '/files', {
|
|
472
|
+
qs: { path },
|
|
473
|
+
body: formData,
|
|
474
|
+
});
|
|
475
|
+
const files = parseJsonArray(response);
|
|
476
|
+
if (files.length === 0)
|
|
477
|
+
throw new Error('Expected to receive information about written file');
|
|
478
|
+
return mapWriteInfo(files[0]);
|
|
479
|
+
}
|
|
480
|
+
async function listSandboxFiles(connection, sandbox, path, depth) {
|
|
481
|
+
const response = await connectUnary(connection, sandbox, 'filesystem.Filesystem', 'ListDir', { path, depth });
|
|
482
|
+
const entries = Array.isArray(response.entries) ? response.entries : [];
|
|
483
|
+
return entries.map(mapFileInfo).filter((entry) => entry.type !== undefined);
|
|
484
|
+
}
|
|
485
|
+
async function createSandboxFolder(connection, sandbox, path) {
|
|
486
|
+
const response = await connectUnary(connection, sandbox, 'filesystem.Filesystem', 'MakeDir', { path });
|
|
487
|
+
return Object.keys(response).length >= 0;
|
|
488
|
+
}
|
|
489
|
+
async function deleteSandboxFile(connection, sandbox, path) {
|
|
490
|
+
await connectUnary(connection, sandbox, 'filesystem.Filesystem', 'Remove', { path });
|
|
491
|
+
}
|
|
492
|
+
async function getSandboxFileInfo(connection, sandbox, path) {
|
|
493
|
+
const response = await connectUnary(connection, sandbox, 'filesystem.Filesystem', 'Stat', { path });
|
|
494
|
+
return mapFileInfo(response.entry);
|
|
495
|
+
}
|
|
496
|
+
async function moveSandboxFile(connection, sandbox, source, destination) {
|
|
497
|
+
const response = await connectUnary(connection, sandbox, 'filesystem.Filesystem', 'Move', {
|
|
498
|
+
source,
|
|
499
|
+
destination,
|
|
500
|
+
});
|
|
501
|
+
return mapFileInfo(response.entry);
|
|
502
|
+
}
|
|
503
|
+
function decodeBase64Text(value) {
|
|
504
|
+
if (typeof value !== 'string')
|
|
505
|
+
return '';
|
|
506
|
+
return Buffer.from(value, 'base64').toString('utf8');
|
|
507
|
+
}
|
|
508
|
+
function mapCommandEvent(message, result) {
|
|
509
|
+
const event = asRecord(message.event);
|
|
510
|
+
if (!event)
|
|
511
|
+
return;
|
|
512
|
+
const data = asRecord(event.data);
|
|
513
|
+
if (data) {
|
|
514
|
+
result.stdout += decodeBase64Text(data.stdout);
|
|
515
|
+
result.stderr += decodeBase64Text(data.stderr);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
const end = asRecord(event.end);
|
|
519
|
+
if (end) {
|
|
520
|
+
result.exitCode = asNumber(end.exitCode) ?? result.exitCode;
|
|
521
|
+
result.error = asString(end.error);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
async function runSandboxCommand(connection, sandbox, command, options = {}) {
|
|
525
|
+
const process = {
|
|
526
|
+
cmd: '/bin/bash',
|
|
527
|
+
args: ['-l', '-c', command],
|
|
528
|
+
envs: options.envs ?? {},
|
|
529
|
+
};
|
|
530
|
+
if (options.cwd)
|
|
531
|
+
process.cwd = options.cwd;
|
|
532
|
+
const messages = await connectStream(connection, sandbox, 'process.Process', 'Start', {
|
|
533
|
+
process,
|
|
534
|
+
stdin: false,
|
|
535
|
+
});
|
|
536
|
+
const result = {
|
|
537
|
+
exitCode: 0,
|
|
538
|
+
stdout: '',
|
|
539
|
+
stderr: '',
|
|
540
|
+
};
|
|
541
|
+
for (const message of messages) {
|
|
542
|
+
mapCommandEvent(message, result);
|
|
543
|
+
}
|
|
544
|
+
return result;
|
|
545
|
+
}
|
|
546
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../nodes/E2B/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg role="img" viewBox="84 80 232 240" xmlns="http://www.w3.org/2000/svg"><title>E2B</title><path fill-rule="evenodd" clip-rule="evenodd" d="M276.212 241.998C274.672 241.998 273.71 243.665 274.48 244.998L290.585 272.894C291.476 274.437 290.056 276.287 288.335 275.826L239.491 262.737C237.357 262.165 235.163 263.432 234.592 265.566L221.504 314.411C221.042 316.132 218.731 316.436 217.84 314.893L201.732 286.992C200.962 285.659 199.037 285.659 198.268 286.992L182.16 314.893C181.269 316.436 178.957 316.132 178.496 314.411L165.407 265.566C164.836 263.432 162.642 262.165 160.508 262.737L111.664 275.826C109.943 276.287 108.523 274.437 109.414 272.894L125.519 244.998C126.289 243.665 125.327 241.998 123.787 241.998L91.5789 241.998C89.7971 241.998 88.9048 239.844 90.1648 238.584L125.922 202.827C127.484 201.265 127.484 198.733 125.922 197.171L90.1648 161.413C88.9048 160.153 89.7972 157.999 91.579 157.999L123.784 157.999C125.323 157.999 126.286 156.333 125.516 154.999L109.414 127.11C108.523 125.567 109.943 123.717 111.664 124.178L160.508 137.267C162.642 137.838 164.836 136.572 165.407 134.438L178.496 85.5929C178.957 83.8718 181.269 83.5675 182.16 85.1106L198.267 113.011C199.037 114.345 200.962 114.345 201.732 113.011L217.84 85.1106C218.73 83.5675 221.042 83.8718 221.503 85.5929L234.592 134.438C235.163 136.572 237.357 137.838 239.491 137.267L288.335 124.178C290.056 123.717 291.476 125.567 290.585 127.11L274.483 154.999C273.713 156.333 274.676 157.999 276.215 157.999L308.421 157.999C310.203 157.999 311.095 160.153 309.835 161.413L274.078 197.171C272.516 198.733 272.516 201.265 274.078 202.827L309.835 238.584C311.095 239.844 310.203 241.998 308.421 241.998L276.212 241.998ZM263.919 165.331C265.366 163.884 263.963 161.455 261.987 161.985L218.491 173.64C216.357 174.211 214.164 172.945 213.592 170.811L201.931 127.293C201.402 125.317 198.597 125.317 198.068 127.293L186.407 170.811C185.835 172.945 183.642 174.211 181.508 173.64L138.014 161.985C136.037 161.455 134.635 163.884 136.082 165.331L167.922 197.171C169.484 198.733 169.484 201.266 167.922 202.828L136.074 234.675C134.627 236.122 136.03 238.55 138.006 238.021L181.508 226.364C183.642 225.792 185.835 227.059 186.407 229.192L198.068 272.711C198.597 274.687 201.402 274.687 201.931 272.711L213.592 229.192C214.164 227.059 216.357 225.792 218.491 226.364L261.994 238.021C263.971 238.551 265.373 236.122 263.926 234.675L232.079 202.828C230.516 201.266 230.516 198.733 232.079 197.171L263.919 165.331Z" fill="white"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg role="img" viewBox="84 80 232 240" xmlns="http://www.w3.org/2000/svg"><title>E2B</title><path fill-rule="evenodd" clip-rule="evenodd" d="M276.212 241.998C274.672 241.998 273.71 243.665 274.48 244.998L290.585 272.894C291.476 274.437 290.056 276.287 288.335 275.826L239.491 262.737C237.357 262.165 235.163 263.432 234.592 265.566L221.504 314.411C221.042 316.132 218.731 316.436 217.84 314.893L201.732 286.992C200.962 285.659 199.037 285.659 198.268 286.992L182.16 314.893C181.269 316.436 178.957 316.132 178.496 314.411L165.407 265.566C164.836 263.432 162.642 262.165 160.508 262.737L111.664 275.826C109.943 276.287 108.523 274.437 109.414 272.894L125.519 244.998C126.289 243.665 125.327 241.998 123.787 241.998L91.5789 241.998C89.7971 241.998 88.9048 239.844 90.1648 238.584L125.922 202.827C127.484 201.265 127.484 198.733 125.922 197.171L90.1648 161.413C88.9048 160.153 89.7972 157.999 91.579 157.999L123.784 157.999C125.323 157.999 126.286 156.333 125.516 154.999L109.414 127.11C108.523 125.567 109.943 123.717 111.664 124.178L160.508 137.267C162.642 137.838 164.836 136.572 165.407 134.438L178.496 85.5929C178.957 83.8718 181.269 83.5675 182.16 85.1106L198.267 113.011C199.037 114.345 200.962 114.345 201.732 113.011L217.84 85.1106C218.73 83.5675 221.042 83.8718 221.503 85.5929L234.592 134.438C235.163 136.572 237.357 137.838 239.491 137.267L288.335 124.178C290.056 123.717 291.476 125.567 290.585 127.11L274.483 154.999C273.713 156.333 274.676 157.999 276.215 157.999L308.421 157.999C310.203 157.999 311.095 160.153 309.835 161.413L274.078 197.171C272.516 198.733 272.516 201.265 274.078 202.827L309.835 238.584C311.095 239.844 310.203 241.998 308.421 241.998L276.212 241.998ZM263.919 165.331C265.366 163.884 263.963 161.455 261.987 161.985L218.491 173.64C216.357 174.211 214.164 172.945 213.592 170.811L201.931 127.293C201.402 125.317 198.597 125.317 198.068 127.293L186.407 170.811C185.835 172.945 183.642 174.211 181.508 173.64L138.014 161.985C136.037 161.455 134.635 163.884 136.082 165.331L167.922 197.171C169.484 198.733 169.484 201.266 167.922 202.828L136.074 234.675C134.627 236.122 136.03 238.55 138.006 238.021L181.508 226.364C183.642 225.792 185.835 227.059 186.407 229.192L198.068 272.711C198.597 274.687 201.402 274.687 201.931 272.711L213.592 229.192C214.164 227.059 216.357 225.792 218.491 226.364L261.994 238.021C263.971 238.551 265.373 236.122 263.926 234.675L232.079 202.828C230.516 201.266 230.516 198.733 232.079 197.171L263.919 165.331Z" fill="black"/></svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
import type { CommandResult, ConnectedSandbox, FileInfo, SandboxCreateOptions, SandboxInfo, SnapshotInfo, VolumeInfo, WriteInfo } from './client';
|
|
3
|
+
export declare function asNonEmptyString(value: unknown): string | undefined;
|
|
4
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
5
|
+
export declare function getCollectionParameter(executeFunctions: IExecuteFunctions, name: string, itemIndex: number): Record<string, unknown>;
|
|
6
|
+
export declare function getRecordString(record: Record<string, unknown>, key: string): string | undefined;
|
|
7
|
+
export declare function getRecordBoolean(record: Record<string, unknown>, key: string): boolean | undefined;
|
|
8
|
+
export declare function getRecordNumber(record: Record<string, unknown>, key: string): number | undefined;
|
|
9
|
+
export declare function splitCommaSeparated(value: string | undefined): string[] | undefined;
|
|
10
|
+
export declare function quoteShellArg(value: string): string;
|
|
11
|
+
export declare function parseStringMapParameter(executeFunctions: IExecuteFunctions, value: unknown, displayName: string, itemIndex: number): Record<string, string> | undefined;
|
|
12
|
+
export declare function getTimeoutMs(executeFunctions: IExecuteFunctions, itemIndex: number): number;
|
|
13
|
+
export declare function getLimit(executeFunctions: IExecuteFunctions, itemIndex: number): number;
|
|
14
|
+
export declare function getPort(executeFunctions: IExecuteFunctions, itemIndex: number): number;
|
|
15
|
+
export declare function getRequiredStringParameter(executeFunctions: IExecuteFunctions, name: string, displayName: string, itemIndex: number): string;
|
|
16
|
+
export declare function getSandboxCreateOptions(executeFunctions: IExecuteFunctions, itemIndex: number): SandboxCreateOptions;
|
|
17
|
+
export declare function toSandboxInfoData(info: SandboxInfo, sandboxDomain?: string): IDataObject;
|
|
18
|
+
export declare function toSnapshotInfoData(info: SnapshotInfo): IDataObject;
|
|
19
|
+
export declare function toFileInfoData(info: FileInfo | WriteInfo): IDataObject;
|
|
20
|
+
export declare function toVolumeInfoData(info: VolumeInfo): IDataObject;
|
|
21
|
+
export declare function toCommandResultData(result: CommandResult, sandbox: ConnectedSandbox, command: string, startedAt: number, createdSandbox: boolean, killedAfterRun: boolean): IDataObject;
|
|
22
|
+
export declare function toOperationCommandResultData(result: CommandResult, sandboxId: string, operation: string, startedAt: number, extra?: IDataObject): IDataObject;
|