@namzu/sandbox 6.1.0 → 7.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/CHANGELOG.md +62 -0
- package/README.md +29 -1
- package/dist/backends/aci-standby-pool/index.d.ts.map +1 -1
- package/dist/backends/aci-standby-pool/index.js +163 -111
- package/dist/backends/aci-standby-pool/index.js.map +1 -1
- package/dist/backends/docker/index.d.ts.map +1 -1
- package/dist/backends/docker/index.js +212 -149
- package/dist/backends/docker/index.js.map +1 -1
- package/dist/backends/firecracker/index.d.ts.map +1 -1
- package/dist/backends/firecracker/index.js +154 -71
- package/dist/backends/firecracker/index.js.map +1 -1
- package/dist/backends/firecracker/protocol.d.ts +19 -27
- package/dist/backends/firecracker/protocol.d.ts.map +1 -1
- package/dist/backends/firecracker/protocol.js +57 -32
- package/dist/backends/firecracker/protocol.js.map +1 -1
- package/dist/backends/firecracker/transport.d.ts +26 -7
- package/dist/backends/firecracker/transport.d.ts.map +1 -1
- package/dist/backends/firecracker/transport.js +235 -72
- package/dist/backends/firecracker/transport.js.map +1 -1
- package/dist/backends/http-worker-client.d.ts +17 -0
- package/dist/backends/http-worker-client.d.ts.map +1 -0
- package/dist/backends/http-worker-client.js +173 -0
- package/dist/backends/http-worker-client.js.map +1 -0
- package/dist/backends/readiness.d.ts +43 -0
- package/dist/backends/readiness.d.ts.map +1 -0
- package/dist/backends/readiness.js +150 -0
- package/dist/backends/readiness.js.map +1 -0
- package/dist/backends/remote-execution-controller.d.ts +76 -0
- package/dist/backends/remote-execution-controller.d.ts.map +1 -0
- package/dist/backends/remote-execution-controller.js +294 -0
- package/dist/backends/remote-execution-controller.js.map +1 -0
- package/dist/egress/proxy.d.ts.map +1 -1
- package/dist/egress/proxy.js +20 -3
- package/dist/egress/proxy.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/backends/aci-standby-pool/index.ts +199 -117
- package/src/backends/docker/index.ts +235 -175
- package/src/backends/firecracker/index.ts +163 -63
- package/src/backends/firecracker/protocol.ts +67 -33
- package/src/backends/firecracker/transport.ts +301 -77
- package/src/backends/http-worker-client.ts +230 -0
- package/src/backends/readiness.ts +173 -0
- package/src/backends/remote-execution-controller.ts +462 -0
- package/src/egress/proxy.ts +18 -3
- package/src/index.ts +27 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/firecracker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/firecracker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAeH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAG7F,OAAO,KAAK,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,gBAAgB,CAAA;AAkBvB;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;AAE7D,MAAM,WAAW,gCAAgC;IAChD,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAA;IAC5C,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAA;IACzC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAA;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAA;IAClC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;CAC9C;AAOD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gCAAgC,GAAG,cAAc,CAiBhG;AA6aD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CA2BxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAClC,kBAAkB,CAyBpB"}
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
* long-running sandbox survives token rotation.
|
|
45
45
|
*/
|
|
46
46
|
import https from 'node:https';
|
|
47
|
+
import { OperationDeadline, resolveReadinessOptions, runFailureCleanup } from '../readiness.js';
|
|
48
|
+
import { RemoteCancellationUnknownError } from '../remote-execution-controller.js';
|
|
47
49
|
import { VsockAgentTransport } from './transport.js';
|
|
48
50
|
/**
|
|
49
51
|
* Trim trailing slashes without a regex.
|
|
@@ -62,22 +64,29 @@ function stripTrailingSlashes(value) {
|
|
|
62
64
|
const DEFAULT_AGENT_VSOCK_PORT = 1024;
|
|
63
65
|
const DEFAULT_READY_TIMEOUT_MS = 60_000;
|
|
64
66
|
const DEFAULT_READY_POLL_MS = 250;
|
|
67
|
+
const RETIREMENT_TIMEOUT_MS = 5_000;
|
|
65
68
|
/**
|
|
66
69
|
* Build a {@link SandboxBackend} backed by the owned Firecracker
|
|
67
70
|
* platform. Construction is synchronous; the orchestrator POST happens
|
|
68
71
|
* on the first `create()`.
|
|
69
72
|
*/
|
|
70
73
|
export function buildFirecrackerBackend(config) {
|
|
74
|
+
const readiness = resolveReadinessOptions('firecracker', config.readyTimeoutMs, config.readyPollIntervalMs, {
|
|
75
|
+
timeoutMs: DEFAULT_READY_TIMEOUT_MS,
|
|
76
|
+
pollIntervalMs: DEFAULT_READY_POLL_MS,
|
|
77
|
+
});
|
|
71
78
|
return {
|
|
72
79
|
tier: 'microvm',
|
|
73
80
|
name: 'firecracker',
|
|
74
81
|
async create(options) {
|
|
75
|
-
return await spawnFirecrackerSandbox(config, options);
|
|
82
|
+
return await spawnFirecrackerSandbox(config, options, readiness);
|
|
76
83
|
},
|
|
77
84
|
};
|
|
78
85
|
}
|
|
79
|
-
async function orchestratorCall(endpoint, pathSuffix, method, getToken, body, mtls) {
|
|
86
|
+
async function orchestratorCall(endpoint, pathSuffix, method, getToken, body, mtls, signal, acceptedStatuses = []) {
|
|
87
|
+
signal?.throwIfAborted();
|
|
80
88
|
const token = await getToken();
|
|
89
|
+
signal?.throwIfAborted();
|
|
81
90
|
const url = `${stripTrailingSlashes(endpoint)}${pathSuffix}`;
|
|
82
91
|
const payload = body !== undefined ? JSON.stringify(body) : undefined;
|
|
83
92
|
const headers = {
|
|
@@ -93,27 +102,39 @@ async function orchestratorCall(endpoint, pathSuffix, method, getToken, body, mt
|
|
|
93
102
|
// than fetch+undici-dispatcher because the package declares no undici
|
|
94
103
|
// dependency — node:https is always importable and needs nothing added.
|
|
95
104
|
res = mtls
|
|
96
|
-
? await httpsOrchestratorRequest(url, method, headers, payload, mtls)
|
|
97
|
-
: await fetchOrchestratorRequest(url, method, headers, payload);
|
|
105
|
+
? await httpsOrchestratorRequest(url, method, headers, payload, mtls, signal)
|
|
106
|
+
: await fetchOrchestratorRequest(url, method, headers, payload, signal);
|
|
98
107
|
}
|
|
99
108
|
catch (err) {
|
|
100
109
|
const cause = err instanceof Error ? err.cause : undefined;
|
|
101
110
|
throw new Error(`firecracker orchestrator ${method} ${url} failed: ${err instanceof Error ? err.message : String(err)}${cause ? ` — cause: ${cause instanceof Error ? cause.message : String(cause)}` : ''}`, { cause: err });
|
|
102
111
|
}
|
|
103
112
|
if (res.status < 200 || res.status >= 300) {
|
|
104
|
-
|
|
113
|
+
if (acceptedStatuses.includes(res.status)) {
|
|
114
|
+
await res.text();
|
|
115
|
+
signal?.throwIfAborted();
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
const text = await res.text();
|
|
119
|
+
signal?.throwIfAborted();
|
|
120
|
+
throw new Error(`firecracker orchestrator ${method} ${url} → ${res.status}: ${text}`);
|
|
105
121
|
}
|
|
106
122
|
if (res.status === 204)
|
|
107
123
|
return undefined;
|
|
108
|
-
if (res.contentType.includes('application/json'))
|
|
109
|
-
|
|
124
|
+
if (res.contentType.includes('application/json')) {
|
|
125
|
+
const text = await res.text();
|
|
126
|
+
signal?.throwIfAborted();
|
|
127
|
+
return JSON.parse(text);
|
|
128
|
+
}
|
|
110
129
|
return undefined;
|
|
111
130
|
}
|
|
112
131
|
/** The plain-`fetch` control-plane path — the single-host DEFAULT, unchanged. */
|
|
113
|
-
async function fetchOrchestratorRequest(url, method, headers, payload) {
|
|
132
|
+
async function fetchOrchestratorRequest(url, method, headers, payload, signal) {
|
|
114
133
|
const init = { method, headers };
|
|
115
134
|
if (payload !== undefined)
|
|
116
135
|
init.body = payload;
|
|
136
|
+
if (signal !== undefined)
|
|
137
|
+
init.signal = signal;
|
|
117
138
|
const res = await fetch(url, init);
|
|
118
139
|
return {
|
|
119
140
|
status: res.status,
|
|
@@ -127,7 +148,7 @@ async function fetchOrchestratorRequest(url, method, headers, payload) {
|
|
|
127
148
|
* CA (`rejectUnauthorized: true`). Used only when `controlPlaneMtls` is present;
|
|
128
149
|
* the plain-`fetch` path above stays the default for single-host.
|
|
129
150
|
*/
|
|
130
|
-
function httpsOrchestratorRequest(url, method, headers, payload, mtls) {
|
|
151
|
+
function httpsOrchestratorRequest(url, method, headers, payload, mtls, signal) {
|
|
131
152
|
const target = new URL(url);
|
|
132
153
|
return new Promise((resolve, reject) => {
|
|
133
154
|
const req = https.request({
|
|
@@ -143,6 +164,7 @@ function httpsOrchestratorRequest(url, method, headers, payload, mtls) {
|
|
|
143
164
|
rejectUnauthorized: true,
|
|
144
165
|
minVersion: 'TLSv1.3',
|
|
145
166
|
...(mtls.servername !== undefined ? { servername: mtls.servername } : {}),
|
|
167
|
+
...(signal !== undefined ? { signal } : {}),
|
|
146
168
|
}, (res) => {
|
|
147
169
|
const chunks = [];
|
|
148
170
|
res.on('data', (chunk) => chunks.push(chunk));
|
|
@@ -165,9 +187,11 @@ function httpsOrchestratorRequest(url, method, headers, payload, mtls) {
|
|
|
165
187
|
// ---------------------------------------------------------------------------
|
|
166
188
|
// create()
|
|
167
189
|
// ---------------------------------------------------------------------------
|
|
168
|
-
async function spawnFirecrackerSandbox(config, options) {
|
|
190
|
+
async function spawnFirecrackerSandbox(config, options, readiness) {
|
|
191
|
+
options.signal?.throwIfAborted();
|
|
169
192
|
const endpoint = config.orchestratorEndpoint;
|
|
170
193
|
const egressAllowlist = await resolveEgressAllowlist(options);
|
|
194
|
+
options.signal?.throwIfAborted();
|
|
171
195
|
const createBody = {
|
|
172
196
|
...(config.template !== undefined ? { template: config.template } : {}),
|
|
173
197
|
...(config.agentSnapshot !== undefined ? { agentSnapshot: config.agentSnapshot } : {}),
|
|
@@ -181,10 +205,13 @@ async function spawnFirecrackerSandbox(config, options) {
|
|
|
181
205
|
};
|
|
182
206
|
let created;
|
|
183
207
|
try {
|
|
184
|
-
created = await orchestratorCall(endpoint, '/sandboxes', 'POST', config.getToken, createBody, config.controlPlaneMtls);
|
|
208
|
+
created = await orchestratorCall(endpoint, '/sandboxes', 'POST', config.getToken, createBody, config.controlPlaneMtls, options.signal);
|
|
185
209
|
}
|
|
186
210
|
catch (err) {
|
|
187
|
-
|
|
211
|
+
const interrupted = options.signal?.aborted;
|
|
212
|
+
throw new Error(`firecracker: failed to create microVM sandbox — ${err instanceof Error ? err.message : String(err)}${interrupted
|
|
213
|
+
? '; allocation outcome is unresolved because the orchestrator did not return a sandboxId — the deployment fleet reaper must reconcile it'
|
|
214
|
+
: ''}`, { cause: err });
|
|
188
215
|
}
|
|
189
216
|
if (!created || !created.sandboxId || !created.agent) {
|
|
190
217
|
throw new Error('firecracker: orchestrator create returned no sandboxId / agent handle');
|
|
@@ -206,100 +233,156 @@ async function spawnFirecrackerSandbox(config, options) {
|
|
|
206
233
|
// shipped by the control plane.
|
|
207
234
|
const handle = normalizeHandle(created.agent, config.agentVsockPort ?? DEFAULT_AGENT_VSOCK_PORT, config.mtls);
|
|
208
235
|
const transport = new VsockAgentTransport(handle, config.transport ?? {});
|
|
209
|
-
const destroy = async () => {
|
|
210
|
-
await orchestratorCall(endpoint, `/sandboxes/${encodeURIComponent(id)}:delete`, 'DELETE', config.getToken, undefined, config.controlPlaneMtls);
|
|
236
|
+
const destroy = async (signal, acceptedStatuses = []) => {
|
|
237
|
+
await orchestratorCall(endpoint, `/sandboxes/${encodeURIComponent(id)}:delete`, 'DELETE', config.getToken, undefined, config.controlPlaneMtls, signal, acceptedStatuses);
|
|
211
238
|
};
|
|
212
239
|
try {
|
|
240
|
+
options.signal?.throwIfAborted();
|
|
213
241
|
// Readiness fence: the orchestrator's resume returns BEFORE the
|
|
214
242
|
// guest agent has reseeded entropy and re-listened on vsock. Stop
|
|
215
243
|
// the clock on the agent's healthz, exactly as the HTTP backends
|
|
216
244
|
// wait on `/healthz` — never on the orchestrator's 2xx, which
|
|
217
245
|
// fires before the guest runs (§5 clock semantics).
|
|
218
|
-
await transport.waitForReady(
|
|
246
|
+
await transport.waitForReady(readiness.timeoutMs, readiness.pollIntervalMs, options.signal);
|
|
219
247
|
}
|
|
220
248
|
catch (err) {
|
|
221
249
|
// Best-effort orchestrator teardown so a readiness failure does not
|
|
222
|
-
// orphan a microVM/netns/UFFD handler
|
|
223
|
-
//
|
|
250
|
+
// orphan a microVM/netns/UFFD handler. The fleet reaper backstops a
|
|
251
|
+
// failed delete; this call gets a separate short grace so cleanup
|
|
252
|
+
// cannot turn the captured readiness error back into an unbounded
|
|
253
|
+
// create operation.
|
|
254
|
+
await runFailureCleanup(async (signal) => destroy(signal));
|
|
255
|
+
throw err;
|
|
256
|
+
}
|
|
257
|
+
let activeExecutions = 0;
|
|
258
|
+
let lifecycle = 'active';
|
|
259
|
+
let retirementPromise;
|
|
260
|
+
let teardownPromise;
|
|
261
|
+
let teardownComplete = false;
|
|
262
|
+
const assertActive = () => {
|
|
263
|
+
if (lifecycle !== 'active') {
|
|
264
|
+
throw new Error(`Sandbox ${id} is ${lifecycle}; no new guest operation can be admitted`);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
const teardownSandbox = (signal) => {
|
|
268
|
+
lifecycle = 'retiring';
|
|
269
|
+
if (teardownComplete)
|
|
270
|
+
return Promise.resolve();
|
|
271
|
+
if (teardownPromise)
|
|
272
|
+
return teardownPromise;
|
|
273
|
+
const attempt = destroy(signal, [404, 410]);
|
|
274
|
+
const shared = attempt.then(() => {
|
|
275
|
+
teardownComplete = true;
|
|
276
|
+
lifecycle = 'destroyed';
|
|
277
|
+
}, (error) => {
|
|
278
|
+
if (teardownPromise === shared)
|
|
279
|
+
teardownPromise = undefined;
|
|
280
|
+
throw error;
|
|
281
|
+
});
|
|
282
|
+
teardownPromise = shared;
|
|
283
|
+
return shared;
|
|
284
|
+
};
|
|
285
|
+
const retire = () => {
|
|
286
|
+
lifecycle = 'retiring';
|
|
287
|
+
if (retirementPromise)
|
|
288
|
+
return retirementPromise;
|
|
289
|
+
const deadline = new OperationDeadline(RETIREMENT_TIMEOUT_MS, `firecracker sandbox ${id} retirement`);
|
|
290
|
+
retirementPromise = deadline
|
|
291
|
+
.run(async (signal) => {
|
|
292
|
+
const joinedExistingAttempt = teardownPromise !== undefined;
|
|
293
|
+
try {
|
|
294
|
+
await teardownSandbox(signal);
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (!joinedExistingAttempt || signal.aborted)
|
|
298
|
+
throw error;
|
|
299
|
+
await teardownSandbox(signal);
|
|
300
|
+
}
|
|
301
|
+
})
|
|
302
|
+
.then(() => {
|
|
303
|
+
return { accepted: true };
|
|
304
|
+
})
|
|
305
|
+
.catch((error) => {
|
|
306
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
307
|
+
return { accepted: false, error: normalized };
|
|
308
|
+
});
|
|
309
|
+
return retirementPromise;
|
|
310
|
+
};
|
|
311
|
+
const classifyExecutionFailure = async (error) => {
|
|
312
|
+
if (error instanceof RemoteCancellationUnknownError) {
|
|
313
|
+
error.retirement = await retire();
|
|
314
|
+
}
|
|
315
|
+
throw error;
|
|
316
|
+
};
|
|
317
|
+
const runExecution = async (operation) => {
|
|
318
|
+
assertActive();
|
|
319
|
+
activeExecutions += 1;
|
|
224
320
|
try {
|
|
225
|
-
await
|
|
321
|
+
return await operation();
|
|
226
322
|
}
|
|
227
|
-
catch {
|
|
228
|
-
|
|
323
|
+
catch (error) {
|
|
324
|
+
return await classifyExecutionFailure(error);
|
|
229
325
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
326
|
+
finally {
|
|
327
|
+
activeExecutions = Math.max(0, activeExecutions - 1);
|
|
328
|
+
}
|
|
329
|
+
};
|
|
233
330
|
return {
|
|
234
331
|
id,
|
|
235
332
|
get status() {
|
|
236
|
-
|
|
333
|
+
if (lifecycle !== 'active')
|
|
334
|
+
return 'destroyed';
|
|
335
|
+
return activeExecutions > 0 ? 'busy' : 'ready';
|
|
237
336
|
},
|
|
238
337
|
rootDir,
|
|
239
338
|
environment: detectEnvironment(),
|
|
240
339
|
async exec(command, argv, opts) {
|
|
241
|
-
|
|
242
|
-
// worth writing down because the obvious "fix" is worse than the
|
|
243
|
-
// gap. There is no cancel op on this wire — the guest agent takes
|
|
244
|
-
// an execute frame and answers when the command is done. Aborting
|
|
245
|
-
// the socket here would abandon the WAIT while the process keeps
|
|
246
|
-
// running inside the microVM, which is verbatim the failure
|
|
247
|
-
// `SandboxExecOptions.signal` exists to prevent, except it would
|
|
248
|
-
// then look honoured. Honouring it means a cancel op in the guest
|
|
249
|
-
// protocol; until then, ignoring it is the truthful behaviour the
|
|
250
|
-
// option's own contract allows.
|
|
251
|
-
status = 'busy';
|
|
252
|
-
try {
|
|
253
|
-
return await transport.execute({
|
|
254
|
-
command,
|
|
255
|
-
args: argv ?? [],
|
|
256
|
-
...(opts?.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
257
|
-
...(opts?.env !== undefined ? { env: opts.env } : {}),
|
|
258
|
-
...(opts?.timeout !== undefined ? { timeoutMs: opts.timeout } : {}),
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
finally {
|
|
262
|
-
status = 'ready';
|
|
263
|
-
}
|
|
340
|
+
return await runExecution(async () => await transport.exec(command, argv, opts));
|
|
264
341
|
},
|
|
265
342
|
async writeFile(path, content) {
|
|
343
|
+
assertActive();
|
|
266
344
|
const buf = Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf8');
|
|
267
345
|
await transport.writeFile(path, buf);
|
|
268
346
|
},
|
|
269
347
|
async readFile(path) {
|
|
348
|
+
assertActive();
|
|
270
349
|
return await transport.readFile(path);
|
|
271
350
|
},
|
|
272
351
|
async listFiles(rootPath) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
352
|
+
return await runExecution(async () => {
|
|
353
|
+
// Same wire as docker/aci: `find -printf '%p\t%s\n'`, parse
|
|
354
|
+
// line-by-line, map a non-zero exit (missing root) to "empty".
|
|
355
|
+
const result = await transport.exec('find', [rootPath, '-type', 'f', '-printf', '%p\t%s\n']);
|
|
356
|
+
if (result.exitCode !== 0)
|
|
357
|
+
return [];
|
|
358
|
+
const entries = [];
|
|
359
|
+
for (const rawLine of result.stdout.split('\n')) {
|
|
360
|
+
if (!rawLine)
|
|
361
|
+
continue;
|
|
362
|
+
const tab = rawLine.indexOf('\t');
|
|
363
|
+
if (tab < 0)
|
|
364
|
+
continue;
|
|
365
|
+
const filePath = rawLine.slice(0, tab);
|
|
366
|
+
const size = Number.parseInt(rawLine.slice(tab + 1), 10);
|
|
367
|
+
if (!filePath || !Number.isFinite(size))
|
|
368
|
+
continue;
|
|
369
|
+
entries.push({ path: filePath, size });
|
|
370
|
+
}
|
|
371
|
+
return entries;
|
|
278
372
|
});
|
|
279
|
-
if (result.exitCode !== 0)
|
|
280
|
-
return [];
|
|
281
|
-
const entries = [];
|
|
282
|
-
for (const rawLine of result.stdout.split('\n')) {
|
|
283
|
-
if (!rawLine)
|
|
284
|
-
continue;
|
|
285
|
-
const tab = rawLine.indexOf('\t');
|
|
286
|
-
if (tab < 0)
|
|
287
|
-
continue;
|
|
288
|
-
const filePath = rawLine.slice(0, tab);
|
|
289
|
-
const size = Number.parseInt(rawLine.slice(tab + 1), 10);
|
|
290
|
-
if (!filePath || !Number.isFinite(size))
|
|
291
|
-
continue;
|
|
292
|
-
entries.push({ path: filePath, size });
|
|
293
|
-
}
|
|
294
|
-
return entries;
|
|
295
373
|
},
|
|
296
|
-
async destroy() {
|
|
297
|
-
|
|
374
|
+
async destroy(options) {
|
|
375
|
+
if (retirementPromise) {
|
|
376
|
+
const observation = await retirementPromise;
|
|
377
|
+
if (observation.accepted)
|
|
378
|
+
return;
|
|
379
|
+
retirementPromise = undefined;
|
|
380
|
+
}
|
|
298
381
|
// Let the orchestrator DELETE failure propagate — the
|
|
299
382
|
// Vandal-side lifecycle wraps this with logging, and a
|
|
300
383
|
// swallowed error here means orphaned microVMs (and their
|
|
301
384
|
// netns / UFFD handlers) pile up with no observability handle.
|
|
302
|
-
await
|
|
385
|
+
await teardownSandbox(options?.signal);
|
|
303
386
|
},
|
|
304
387
|
};
|
|
305
388
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/firecracker/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/firecracker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The execution-data codec shared by both transports.
|
|
3
3
|
*
|
|
4
4
|
* The docker (`backends/docker/`) and ACI (`backends/aci-standby-pool/`)
|
|
5
5
|
* backends speak this contract over **HTTP**: a streaming NDJSON
|
|
@@ -9,22 +9,12 @@
|
|
|
9
9
|
* shapes** — only the transport changes from HTTP-over-TCP to
|
|
10
10
|
* framed-over-vsock (see `transport.ts`).
|
|
11
11
|
*
|
|
12
|
-
* This module
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* copies (they predate this module and stay UNTOUCHED per the P0
|
|
17
|
-
* scope); this module mirrors those shapes verbatim and is the
|
|
18
|
-
* canonical definition the vsock path consumes.
|
|
19
|
-
*
|
|
20
|
-
* Why mirror rather than refactor docker/aci onto it: the P0 scope is
|
|
21
|
-
* "do NOT touch docker or aci". Centralising the shapes here, with the
|
|
22
|
-
* inline docker copy pinned by `backends/docker/__tests__` and this
|
|
23
|
-
* module pinned by `backends/firecracker/__tests__`, keeps both honest
|
|
24
|
-
* without editing the frozen HTTP path. A later cleanup pass can fold
|
|
25
|
-
* docker/aci onto this module once it is no longer release-frozen.
|
|
12
|
+
* This module remains the pure codec consumed by the framed guest transport.
|
|
13
|
+
* The two HTTP backends share one strict HTTP client, and both transports put
|
|
14
|
+
* the same reserve-before-admission + idempotent-cancel state machine around
|
|
15
|
+
* these data events. HTTP uses endpoints; the framed guest uses dedicated ops.
|
|
26
16
|
*/
|
|
27
|
-
import type { SandboxExecResult } from '@namzu/sdk';
|
|
17
|
+
import type { SandboxExecOptions, SandboxExecResult } from '@namzu/sdk';
|
|
28
18
|
/**
|
|
29
19
|
* `/execute` request body. Identical field set to the HTTP worker's
|
|
30
20
|
* `handleExecute` body (`command`, `args`, `cwd`, `env`, `stdin`,
|
|
@@ -32,6 +22,7 @@ import type { SandboxExecResult } from '@namzu/sdk';
|
|
|
32
22
|
* `SandboxExecOptions.timeout`.
|
|
33
23
|
*/
|
|
34
24
|
export interface ExecRequest {
|
|
25
|
+
readonly executionId?: string;
|
|
35
26
|
readonly command: string;
|
|
36
27
|
readonly args?: readonly string[];
|
|
37
28
|
readonly cwd?: string;
|
|
@@ -58,7 +49,8 @@ export type ExecEvent = {
|
|
|
58
49
|
readonly type: 'result';
|
|
59
50
|
readonly exitCode: number;
|
|
60
51
|
readonly timedOut: boolean;
|
|
61
|
-
readonly durationMs
|
|
52
|
+
readonly durationMs: number;
|
|
53
|
+
readonly signal?: string;
|
|
62
54
|
readonly stdoutTruncated?: boolean;
|
|
63
55
|
readonly stderrTruncated?: boolean;
|
|
64
56
|
} | {
|
|
@@ -97,9 +89,8 @@ export interface ReadFileResponse {
|
|
|
97
89
|
* terminal `result`, and **throw** on an `error` event.
|
|
98
90
|
*
|
|
99
91
|
* Transport-agnostic: feed it whole parsed {@link ExecEvent}s (the
|
|
100
|
-
* transport owns
|
|
101
|
-
*
|
|
102
|
-
* this accumulator, matching the docker loop's `SyntaxError` swallow.
|
|
92
|
+
* transport owns framing → strict JSON validation → here). Malformed or
|
|
93
|
+
* trailing events are protocol failures rather than silently discarded data.
|
|
103
94
|
*/
|
|
104
95
|
export declare class ExecResultAccumulator {
|
|
105
96
|
private stdout;
|
|
@@ -107,9 +98,13 @@ export declare class ExecResultAccumulator {
|
|
|
107
98
|
private exitCode;
|
|
108
99
|
private timedOut;
|
|
109
100
|
private signal;
|
|
101
|
+
private durationMs;
|
|
102
|
+
private stdoutTruncated;
|
|
103
|
+
private stderrTruncated;
|
|
110
104
|
private settled;
|
|
111
105
|
private readonly start;
|
|
112
|
-
|
|
106
|
+
private readonly onOutput;
|
|
107
|
+
constructor(start?: number, onOutput?: SandboxExecOptions['onOutput']);
|
|
113
108
|
/**
|
|
114
109
|
* Apply one event. Returns `true` once a terminal `result` has been
|
|
115
110
|
* seen (so the transport can stop reading early if it wants).
|
|
@@ -118,15 +113,12 @@ export declare class ExecResultAccumulator {
|
|
|
118
113
|
*/
|
|
119
114
|
push(event: ExecEvent): boolean;
|
|
120
115
|
get done(): boolean;
|
|
121
|
-
/** Build the SDK-shaped result
|
|
116
|
+
/** Build the SDK-shaped result from the guest's terminal metadata. */
|
|
122
117
|
finish(): SandboxExecResult;
|
|
123
118
|
}
|
|
124
119
|
/**
|
|
125
|
-
* Parse a single NDJSON
|
|
126
|
-
*
|
|
127
|
-
* `SyntaxError` swallow). Non-`SyntaxError` problems are impossible
|
|
128
|
-
* here because we only `JSON.parse`; structural validation is by the
|
|
129
|
-
* `type` discriminator at the call site.
|
|
120
|
+
* Parse and structurally validate a single NDJSON event. Blank padding is
|
|
121
|
+
* ignored; malformed JSON and unknown/partial event shapes are refused.
|
|
130
122
|
*/
|
|
131
123
|
export declare function parseExecLine(line: string): ExecEvent | undefined;
|
|
132
124
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/backends/firecracker/protocol.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/backends/firecracker/protocol.ts"],"names":[],"mappings":"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"}
|