@namzu/sandbox 1.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 (69) hide show
  1. package/CHANGELOG.md +474 -0
  2. package/LICENSE.md +110 -0
  3. package/README.md +148 -0
  4. package/dist/backends/aci-standby-pool/index.d.ts +104 -0
  5. package/dist/backends/aci-standby-pool/index.d.ts.map +1 -0
  6. package/dist/backends/aci-standby-pool/index.js +425 -0
  7. package/dist/backends/aci-standby-pool/index.js.map +1 -0
  8. package/dist/backends/docker/__tests__/leaf-permissions.smoke.test.d.ts +40 -0
  9. package/dist/backends/docker/__tests__/leaf-permissions.smoke.test.d.ts.map +1 -0
  10. package/dist/backends/docker/__tests__/leaf-permissions.smoke.test.js +157 -0
  11. package/dist/backends/docker/__tests__/leaf-permissions.smoke.test.js.map +1 -0
  12. package/dist/backends/docker/index.d.ts +118 -0
  13. package/dist/backends/docker/index.d.ts.map +1 -0
  14. package/dist/backends/docker/index.js +645 -0
  15. package/dist/backends/docker/index.js.map +1 -0
  16. package/dist/backends/firecracker/__tests__/backend.test.d.ts +13 -0
  17. package/dist/backends/firecracker/__tests__/backend.test.d.ts.map +1 -0
  18. package/dist/backends/firecracker/__tests__/backend.test.js +353 -0
  19. package/dist/backends/firecracker/__tests__/backend.test.js.map +1 -0
  20. package/dist/backends/firecracker/__tests__/control-plane-mtls.test.d.ts +19 -0
  21. package/dist/backends/firecracker/__tests__/control-plane-mtls.test.d.ts.map +1 -0
  22. package/dist/backends/firecracker/__tests__/control-plane-mtls.test.js +201 -0
  23. package/dist/backends/firecracker/__tests__/control-plane-mtls.test.js.map +1 -0
  24. package/dist/backends/firecracker/__tests__/fixtures/mtls-pki.d.ts +39 -0
  25. package/dist/backends/firecracker/__tests__/fixtures/mtls-pki.d.ts.map +1 -0
  26. package/dist/backends/firecracker/__tests__/fixtures/mtls-pki.js +149 -0
  27. package/dist/backends/firecracker/__tests__/fixtures/mtls-pki.js.map +1 -0
  28. package/dist/backends/firecracker/__tests__/protocol.test.d.ts +6 -0
  29. package/dist/backends/firecracker/__tests__/protocol.test.d.ts.map +1 -0
  30. package/dist/backends/firecracker/__tests__/protocol.test.js +77 -0
  31. package/dist/backends/firecracker/__tests__/protocol.test.js.map +1 -0
  32. package/dist/backends/firecracker/__tests__/transport.test.d.ts +20 -0
  33. package/dist/backends/firecracker/__tests__/transport.test.d.ts.map +1 -0
  34. package/dist/backends/firecracker/__tests__/transport.test.js +449 -0
  35. package/dist/backends/firecracker/__tests__/transport.test.js.map +1 -0
  36. package/dist/backends/firecracker/index.d.ts +124 -0
  37. package/dist/backends/firecracker/index.d.ts.map +1 -0
  38. package/dist/backends/firecracker/index.js +334 -0
  39. package/dist/backends/firecracker/index.js.map +1 -0
  40. package/dist/backends/firecracker/protocol.d.ts +132 -0
  41. package/dist/backends/firecracker/protocol.d.ts.map +1 -0
  42. package/dist/backends/firecracker/protocol.js +112 -0
  43. package/dist/backends/firecracker/protocol.js.map +1 -0
  44. package/dist/backends/firecracker/transport.d.ts +251 -0
  45. package/dist/backends/firecracker/transport.d.ts.map +1 -0
  46. package/dist/backends/firecracker/transport.js +524 -0
  47. package/dist/backends/firecracker/transport.js.map +1 -0
  48. package/dist/index.d.ts +611 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +376 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/index.test.d.ts +28 -0
  53. package/dist/index.test.d.ts.map +1 -0
  54. package/dist/index.test.js +670 -0
  55. package/dist/index.test.js.map +1 -0
  56. package/package.json +54 -0
  57. package/src/backends/aci-standby-pool/index.ts +602 -0
  58. package/src/backends/docker/__tests__/leaf-permissions.smoke.test.ts +169 -0
  59. package/src/backends/docker/index.ts +826 -0
  60. package/src/backends/firecracker/__tests__/backend.test.ts +418 -0
  61. package/src/backends/firecracker/__tests__/control-plane-mtls.test.ts +253 -0
  62. package/src/backends/firecracker/__tests__/fixtures/mtls-pki.ts +166 -0
  63. package/src/backends/firecracker/__tests__/protocol.test.ts +90 -0
  64. package/src/backends/firecracker/__tests__/transport.test.ts +526 -0
  65. package/src/backends/firecracker/index.ts +528 -0
  66. package/src/backends/firecracker/protocol.ts +191 -0
  67. package/src/backends/firecracker/transport.ts +667 -0
  68. package/src/index.test.ts +731 -0
  69. package/src/index.ts +930 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/docker/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Firecracker `SandboxBackend` end-to-end over the loopback agent.
3
+ *
4
+ * Stubs the orchestrator control plane (`fetch` for `/sandboxes` create
5
+ * + `:delete`) and points the returned vsock handle at a unix-socket
6
+ * loopback running the REAL `agent/agent.cjs`. Proves the full
7
+ * {@link Sandbox} handle the SDK consumes — `exec` / `writeFile` /
8
+ * `readFile` / `listFiles` / `destroy` / `status` — speaks the NDJSON
9
+ * wire over the vsock transport, and that the readiness fence waits on
10
+ * the agent's healthz (not the orchestrator 2xx).
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=backend.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.test.d.ts","sourceRoot":"","sources":["../../../../src/backends/firecracker/__tests__/backend.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Firecracker `SandboxBackend` end-to-end over the loopback agent.
3
+ *
4
+ * Stubs the orchestrator control plane (`fetch` for `/sandboxes` create
5
+ * + `:delete`) and points the returned vsock handle at a unix-socket
6
+ * loopback running the REAL `agent/agent.cjs`. Proves the full
7
+ * {@link Sandbox} handle the SDK consumes — `exec` / `writeFile` /
8
+ * `readFile` / `listFiles` / `destroy` / `status` — speaks the NDJSON
9
+ * wire over the vsock transport, and that the readiness fence waits on
10
+ * the agent's healthz (not the orchestrator 2xx).
11
+ */
12
+ import { chmodSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
13
+ import { createRequire } from 'node:module';
14
+ import { createServer } from 'node:net';
15
+ import { tmpdir } from 'node:os';
16
+ import { join } from 'node:path';
17
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
18
+ import { buildFirecrackerBackend, normalizeHandle } from '../index.js';
19
+ import { CA_CRT, CLIENT_CRT, CLIENT_KEY, startMtlsRelay, } from './fixtures/mtls-pki.js';
20
+ const require_ = createRequire(import.meta.url);
21
+ let workDir;
22
+ let sockPath;
23
+ let server;
24
+ let relay;
25
+ let agent;
26
+ const realFetch = globalThis.fetch;
27
+ let realPath;
28
+ beforeEach(() => {
29
+ workDir = mkdtempSync(join(tmpdir(), 'fc-backend-test-'));
30
+ sockPath = join(workDir, 'agent.sock');
31
+ realPath = process.env.PATH;
32
+ process.env.NAMZU_SANDBOX_WORKSPACE = workDir;
33
+ delete require_.cache[require_.resolve('../../../../agent/agent.cjs')];
34
+ agent = require_('../../../../agent/agent.cjs');
35
+ });
36
+ afterEach(async () => {
37
+ globalThis.fetch = realFetch;
38
+ process.env.PATH = realPath;
39
+ if (relay) {
40
+ await new Promise((r) => relay?.server.close(() => r()));
41
+ relay = undefined;
42
+ }
43
+ if (server) {
44
+ await new Promise((r) => server?.close(() => r()));
45
+ server = undefined;
46
+ }
47
+ rmSync(workDir, { recursive: true, force: true });
48
+ });
49
+ function startAgent() {
50
+ return new Promise((resolve, reject) => {
51
+ const s = createServer(agent.handleConnection);
52
+ s.on('error', reject);
53
+ s.listen(sockPath, () => resolve(s));
54
+ });
55
+ }
56
+ /**
57
+ * Stub the orchestrator: `POST /sandboxes` returns a handle pointing at
58
+ * the loopback unix socket; `:delete` returns 204. Records calls so the
59
+ * test can assert the create body + destroy round-trip.
60
+ */
61
+ function stubOrchestrator(handle) {
62
+ const calls = [];
63
+ globalThis.fetch = vi.fn(async (input, init) => {
64
+ const url = String(input);
65
+ const method = init?.method ?? 'GET';
66
+ const body = init?.body ? JSON.parse(String(init.body)) : undefined;
67
+ calls.push({ url, method, body });
68
+ if (method === 'POST' && url.endsWith('/sandboxes')) {
69
+ return new Response(JSON.stringify({ sandboxId: 'sbx_fc_test', agent: handle, rootDir: workDir }), { status: 200, headers: { 'content-type': 'application/json' } });
70
+ }
71
+ if (method === 'DELETE' && url.includes(':delete')) {
72
+ return new Response(null, { status: 204 });
73
+ }
74
+ return new Response('unexpected', { status: 500 });
75
+ });
76
+ return { calls };
77
+ }
78
+ describe('buildFirecrackerBackend (loopback agent)', () => {
79
+ it('creates a Sandbox handle and round-trips exec/write/read/listFiles/destroy', async () => {
80
+ server = await startAgent();
81
+ const { calls } = stubOrchestrator({ kind: 'unix', path: sockPath });
82
+ const backend = buildFirecrackerBackend({
83
+ orchestratorEndpoint: 'https://orchestrator.test/',
84
+ getToken: async () => 'token-123',
85
+ template: 'golden-rev-7',
86
+ readyTimeoutMs: 5_000,
87
+ readyPollIntervalMs: 50,
88
+ });
89
+ const sandbox = await backend.create({
90
+ workingDirectory: workDir,
91
+ memoryLimitMb: 512,
92
+ maxProcesses: 64,
93
+ timeoutMs: 60_000,
94
+ egress: { kind: 'static', allowedHosts: ['api.example.com'] },
95
+ });
96
+ // Handle shape.
97
+ expect(sandbox.id).toBe('sbx_fc_test');
98
+ expect(sandbox.rootDir).toBe(workDir);
99
+ expect(sandbox.environment).toBe('linux-namespace');
100
+ expect(sandbox.status).toBe('ready');
101
+ // Create body forwarded the resolved knobs + egress allowlist.
102
+ const createCall = calls.find((c) => c.method === 'POST');
103
+ expect(createCall?.body).toMatchObject({
104
+ template: 'golden-rev-7',
105
+ memoryLimitMb: 512,
106
+ maxProcesses: 64,
107
+ timeoutMs: 60_000,
108
+ egressAllowlist: ['api.example.com'],
109
+ });
110
+ // exec over the wire.
111
+ const r = await sandbox.exec('/bin/sh', ['-c', 'echo hello-fc']);
112
+ expect(r.stdout).toContain('hello-fc');
113
+ expect(r.exitCode).toBe(0);
114
+ // writeFile + readFile round-trip.
115
+ await sandbox.writeFile('out/result.txt', 'persisted');
116
+ const read = await sandbox.readFile('out/result.txt');
117
+ expect(read.toString('utf8')).toBe('persisted');
118
+ // listFiles uses the same `find -printf '%p\t%s\n'` wire as
119
+ // docker/aci. On a GNU-find host (the Ubuntu golden rootfs) it
120
+ // enumerates the file we wrote; on a BSD-find host (macOS CI
121
+ // runners) `-printf` is unsupported, find exits non-zero, and the
122
+ // contract maps that to an empty listing — exactly as docker/aci
123
+ // do. Assert the call path returns the SDK shape either way, and
124
+ // the file when GNU find is present.
125
+ const files = await sandbox.listFiles(workDir);
126
+ expect(Array.isArray(files)).toBe(true);
127
+ if (files.length > 0) {
128
+ expect(files.some((f) => f.path.endsWith('out/result.txt'))).toBe(true);
129
+ expect(files.every((f) => Number.isFinite(f.size))).toBe(true);
130
+ }
131
+ // destroy calls the orchestrator :delete and flips status.
132
+ await sandbox.destroy();
133
+ expect(sandbox.status).toBe('destroyed');
134
+ expect(calls.some((c) => c.method === 'DELETE' && c.url.includes(':delete'))).toBe(true);
135
+ });
136
+ it('tears down the microVM when the readiness fence times out (no orphan)', async () => {
137
+ // No agent listening → healthz never succeeds → readiness fence
138
+ // times out → backend must DELETE to avoid orphaning the microVM.
139
+ const { calls } = stubOrchestrator({ kind: 'unix', path: sockPath });
140
+ const backend = buildFirecrackerBackend({
141
+ orchestratorEndpoint: 'https://orchestrator.test/',
142
+ getToken: async () => 'tok',
143
+ readyTimeoutMs: 300,
144
+ readyPollIntervalMs: 50,
145
+ transport: { connectRetryBudgetMs: 100, connectTimeoutMs: 80, connectRetryIntervalMs: 30 },
146
+ });
147
+ await expect(backend.create({ workingDirectory: workDir })).rejects.toThrow(/did not become ready/);
148
+ expect(calls.some((c) => c.method === 'DELETE')).toBe(true);
149
+ });
150
+ it('parses listFiles output into {path,size} entries (GNU-find-shaped wire)', async () => {
151
+ // Make `find` deterministic across host platforms: shim a `find`
152
+ // on PATH that emits the GNU `-printf '%p\t%s\n'` wire the Ubuntu
153
+ // golden rootfs produces, so the backend's tab-split parser is
154
+ // proven without depending on the host having GNU findutils.
155
+ const binDir = mkdtempSync(join(tmpdir(), 'fc-bin-'));
156
+ const findShim = join(binDir, 'find');
157
+ writeFileSync(findShim, [
158
+ '#!/bin/sh',
159
+ `printf '%s\\t%s\\n' '${workDir}/out/result.txt' 9`,
160
+ `printf '%s\\t%s\\n' '${workDir}/out/other.bin' 42`,
161
+ ].join('\n'), { mode: 0o755 });
162
+ chmodSync(findShim, 0o755);
163
+ process.env.PATH = `${binDir}:${process.env.PATH}`;
164
+ server = await startAgent();
165
+ stubOrchestrator({ kind: 'unix', path: sockPath });
166
+ const backend = buildFirecrackerBackend({
167
+ orchestratorEndpoint: 'https://orchestrator.test/',
168
+ getToken: async () => 'tok',
169
+ readyTimeoutMs: 3_000,
170
+ readyPollIntervalMs: 50,
171
+ });
172
+ const sandbox = await backend.create({ workingDirectory: workDir });
173
+ const files = await sandbox.listFiles(workDir);
174
+ expect(files).toEqual([
175
+ { path: `${workDir}/out/result.txt`, size: 9 },
176
+ { path: `${workDir}/out/other.bin`, size: 42 },
177
+ ]);
178
+ await sandbox.destroy();
179
+ rmSync(binDir, { recursive: true, force: true });
180
+ });
181
+ it('fills the contract vsock port when the orchestrator omits it', async () => {
182
+ // A vsock handle whose port is 0 should be normalized to the
183
+ // configured agentVsockPort. We can't bind a real AF_VSOCK here, so
184
+ // assert the normalization path via a unix handle is unaffected and
185
+ // that a portless vsock handle does not crash create's pre-dial.
186
+ // (Full vsock dial is the live increment.)
187
+ server = await startAgent();
188
+ stubOrchestrator({ kind: 'unix', path: sockPath });
189
+ const backend = buildFirecrackerBackend({
190
+ orchestratorEndpoint: 'https://orchestrator.test/',
191
+ getToken: async () => 'tok',
192
+ agentVsockPort: 1024,
193
+ readyTimeoutMs: 3_000,
194
+ readyPollIntervalMs: 50,
195
+ });
196
+ const sandbox = await backend.create({ workingDirectory: workDir });
197
+ expect(sandbox.status).toBe('ready');
198
+ await sandbox.destroy();
199
+ });
200
+ it('carries agentSnapshot in the create body when the backend config sets it', async () => {
201
+ // OPEN-2 — the per-agent snapshot ref is a first-class, provider-agnostic
202
+ // field on the create contract (sibling to `template`). When set it must
203
+ // reach the orchestrator POST body verbatim.
204
+ server = await startAgent();
205
+ const { calls } = stubOrchestrator({ kind: 'unix', path: sockPath });
206
+ const backend = buildFirecrackerBackend({
207
+ orchestratorEndpoint: 'https://orchestrator.test/',
208
+ getToken: async () => 'tok',
209
+ template: 'golden-rev-7',
210
+ agentSnapshot: { orgId: 'org1', agentId: 'agent9', version: '3' },
211
+ readyTimeoutMs: 3_000,
212
+ readyPollIntervalMs: 50,
213
+ });
214
+ const sandbox = await backend.create({ workingDirectory: workDir });
215
+ const createCall = calls.find((c) => c.method === 'POST');
216
+ expect(createCall?.body).toMatchObject({
217
+ template: 'golden-rev-7',
218
+ agentSnapshot: { orgId: 'org1', agentId: 'agent9', version: '3' },
219
+ });
220
+ await sandbox.destroy();
221
+ });
222
+ it('OMITS agentSnapshot from the create body when absent (byte-identical generic path)', async () => {
223
+ // DORMANT contract: absent ⇒ the POST body must NOT carry an
224
+ // `agentSnapshot` key at all (a JSON `undefined` would not serialise, but
225
+ // the conditional spread must drop the key entirely so the body is
226
+ // byte-identical to the pre-field generic create).
227
+ server = await startAgent();
228
+ const { calls } = stubOrchestrator({ kind: 'unix', path: sockPath });
229
+ const backend = buildFirecrackerBackend({
230
+ orchestratorEndpoint: 'https://orchestrator.test/',
231
+ getToken: async () => 'tok',
232
+ template: 'golden-rev-7',
233
+ readyTimeoutMs: 3_000,
234
+ readyPollIntervalMs: 50,
235
+ });
236
+ const sandbox = await backend.create({ workingDirectory: workDir });
237
+ const createCall = calls.find((c) => c.method === 'POST');
238
+ expect(createCall?.body).toEqual({ template: 'golden-rev-7' });
239
+ expect(Object.prototype.hasOwnProperty.call(createCall?.body ?? {}, 'agentSnapshot')).toBe(false);
240
+ await sandbox.destroy();
241
+ });
242
+ });
243
+ // ---------------------------------------------------------------------------
244
+ // Cert-injection seam (ses_051 P4 Track C) — the orchestrator returns a WIRE
245
+ // `mtls` handle (host/port/sandboxId, NO certs); the consumer injects the
246
+ // client CA/cert/key via `config.mtls`, which `normalizeHandle` MERGES onto
247
+ // the handle before the transport dials the relay. Certs NEVER transit the
248
+ // control plane.
249
+ // ---------------------------------------------------------------------------
250
+ describe('normalizeHandle (mtls cert injection)', () => {
251
+ const WIRE_MTLS = {
252
+ kind: 'mtls',
253
+ host: '10.60.1.7',
254
+ port: 8443,
255
+ sandboxId: 'sb-net',
256
+ };
257
+ it('merges the injected cert material onto a wire mtls handle', () => {
258
+ const handle = normalizeHandle(WIRE_MTLS, 1024, {
259
+ ca: CA_CRT,
260
+ cert: CLIENT_CRT,
261
+ key: CLIENT_KEY,
262
+ servername: 'sandbox.fc.internal',
263
+ });
264
+ expect(handle).toEqual({
265
+ kind: 'mtls',
266
+ host: '10.60.1.7',
267
+ port: 8443,
268
+ sandboxId: 'sb-net',
269
+ tls: {
270
+ ca: CA_CRT,
271
+ cert: CLIENT_CRT,
272
+ key: CLIENT_KEY,
273
+ servername: 'sandbox.fc.internal',
274
+ },
275
+ });
276
+ });
277
+ it('throws when an mtls handle arrives with NO injected cert material', () => {
278
+ // A network-mode backend that cannot present a client cert would be
279
+ // rejected by the relay — fail loud at handle-normalization instead.
280
+ expect(() => normalizeHandle(WIRE_MTLS, 1024, undefined)).toThrow(/no client cert material was injected/);
281
+ });
282
+ it('leaves vsock + unix handles untouched (cert material is ignored)', () => {
283
+ expect(normalizeHandle({ kind: 'unix', path: '/tmp/a.sock' }, 1024, undefined)).toEqual({
284
+ kind: 'unix',
285
+ path: '/tmp/a.sock',
286
+ });
287
+ // A vsock handle with a 0 port still normalizes to the contract port.
288
+ expect(normalizeHandle({ kind: 'vsock', udsPath: '/v.sock', port: 0 }, 1024, {
289
+ ca: CA_CRT,
290
+ cert: CLIENT_CRT,
291
+ key: CLIENT_KEY,
292
+ })).toEqual({ kind: 'vsock', udsPath: '/v.sock', port: 1024 });
293
+ });
294
+ });
295
+ describe('buildFirecrackerBackend (network mode over a loopback mTLS relay)', () => {
296
+ it('injects the client cert + round-trips exec/file-IO through the relay', async () => {
297
+ // The agent on a unix socket; a loopback mTLS relay in front of it.
298
+ server = await startAgent();
299
+ relay = await startMtlsRelay(sockPath);
300
+ // The orchestrator returns a WIRE mtls handle (NO cert material) whose
301
+ // host:port point at the relay; the relay resolves the sandboxId.
302
+ const { calls } = stubOrchestrator({
303
+ kind: 'mtls',
304
+ host: '127.0.0.1',
305
+ port: relay.port,
306
+ sandboxId: 'sb-net',
307
+ });
308
+ const backend = buildFirecrackerBackend({
309
+ orchestratorEndpoint: 'https://orchestrator.test/',
310
+ getToken: async () => 'tok',
311
+ readyTimeoutMs: 5_000,
312
+ readyPollIntervalMs: 50,
313
+ // The CONSUMER-injected client material — never returned by the
314
+ // orchestrator. Merged onto the handle's `tls` block.
315
+ mtls: {
316
+ ca: CA_CRT,
317
+ cert: CLIENT_CRT,
318
+ key: CLIENT_KEY,
319
+ servername: 'sandbox.fc.internal',
320
+ },
321
+ });
322
+ const sandbox = await backend.create({ workingDirectory: workDir });
323
+ expect(sandbox.status).toBe('ready');
324
+ // The dialer wrote the `SANDBOX <id>` routing preamble (the relay's key).
325
+ expect(await relay.preamble()).toBe('sb-net');
326
+ // Full exec + file-IO round-trip over the mTLS tunnel.
327
+ const r = await sandbox.exec('/bin/sh', ['-c', 'echo hello-mtls']);
328
+ expect(r.stdout).toContain('hello-mtls');
329
+ await sandbox.writeFile('out/r.txt', 'via-relay');
330
+ expect((await sandbox.readFile('out/r.txt')).toString('utf8')).toBe('via-relay');
331
+ await sandbox.destroy();
332
+ expect(calls.some((c) => c.method === 'DELETE')).toBe(true);
333
+ });
334
+ it('rejects a create when the orchestrator returns mtls but no cert material is injected', async () => {
335
+ server = await startAgent();
336
+ relay = await startMtlsRelay(sockPath);
337
+ stubOrchestrator({
338
+ kind: 'mtls',
339
+ host: '127.0.0.1',
340
+ port: relay.port,
341
+ sandboxId: 'sb-net',
342
+ });
343
+ const backend = buildFirecrackerBackend({
344
+ orchestratorEndpoint: 'https://orchestrator.test/',
345
+ getToken: async () => 'tok',
346
+ readyTimeoutMs: 2_000,
347
+ readyPollIntervalMs: 50,
348
+ // No `mtls` material → normalizeHandle must throw at create time.
349
+ });
350
+ await expect(backend.create({ workingDirectory: workDir })).rejects.toThrow(/no client cert material was injected/);
351
+ });
352
+ });
353
+ //# sourceMappingURL=backend.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.test.js","sourceRoot":"","sources":["../../../../src/backends/firecracker/__tests__/backend.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Control-plane mTLS dial for the Firecracker backend (additive
3
+ * `config.controlPlaneMtls`).
4
+ *
5
+ * A loopback `https.createServer` with `requestCert + rejectUnauthorized`
6
+ * (pinned to the test CA) stands in for the orchestrator over the public hop.
7
+ * It serves the real `POST /sandboxes` + `:delete` routes; the create response
8
+ * points the agent handle at a unix-socket loopback running the REAL
9
+ * `agent/agent.cjs`, so the FULL create flow (control-plane POST over mTLS →
10
+ * vsock readiness fence → exec) runs end to end.
11
+ *
12
+ * Proves:
13
+ * - with `controlPlaneMtls` injected, the create POST succeeds over mTLS and
14
+ * the sandbox round-trips an exec.
15
+ * - WITHOUT the client cert (no `controlPlaneMtls`, so the backend uses plain
16
+ * `fetch` against the https listener), create is rejected at the TLS layer.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=control-plane-mtls.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-plane-mtls.test.d.ts","sourceRoot":"","sources":["../../../../src/backends/firecracker/__tests__/control-plane-mtls.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}