@hotcell/daemon 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 (142) hide show
  1. package/dist/agent-check.d.ts +1 -0
  2. package/dist/agent-check.js +105 -0
  3. package/dist/agent-check.js.map +1 -0
  4. package/dist/api/server.d.ts +64 -0
  5. package/dist/api/server.js +1368 -0
  6. package/dist/api/server.js.map +1 -0
  7. package/dist/api/ws.d.ts +14 -0
  8. package/dist/api/ws.js +214 -0
  9. package/dist/api/ws.js.map +1 -0
  10. package/dist/applevz-check.d.ts +1 -0
  11. package/dist/applevz-check.js +280 -0
  12. package/dist/applevz-check.js.map +1 -0
  13. package/dist/backups.d.ts +29 -0
  14. package/dist/backups.js +76 -0
  15. package/dist/backups.js.map +1 -0
  16. package/dist/capacity.d.ts +63 -0
  17. package/dist/capacity.js +95 -0
  18. package/dist/capacity.js.map +1 -0
  19. package/dist/config.d.ts +241 -0
  20. package/dist/config.js +152 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/cost.d.ts +9 -0
  23. package/dist/cost.js +19 -0
  24. package/dist/cost.js.map +1 -0
  25. package/dist/density-bench.d.ts +1 -0
  26. package/dist/density-bench.js +97 -0
  27. package/dist/density-bench.js.map +1 -0
  28. package/dist/driver/agent-driver.d.ts +67 -0
  29. package/dist/driver/agent-driver.js +197 -0
  30. package/dist/driver/agent-driver.js.map +1 -0
  31. package/dist/driver/agent.d.ts +94 -0
  32. package/dist/driver/agent.js +319 -0
  33. package/dist/driver/agent.js.map +1 -0
  34. package/dist/driver/applevz.d.ts +95 -0
  35. package/dist/driver/applevz.js +527 -0
  36. package/dist/driver/applevz.js.map +1 -0
  37. package/dist/driver/container.d.ts +99 -0
  38. package/dist/driver/container.js +733 -0
  39. package/dist/driver/container.js.map +1 -0
  40. package/dist/driver/fc-api.d.ts +85 -0
  41. package/dist/driver/fc-api.js +173 -0
  42. package/dist/driver/fc-api.js.map +1 -0
  43. package/dist/driver/firecracker.d.ts +126 -0
  44. package/dist/driver/firecracker.js +560 -0
  45. package/dist/driver/firecracker.js.map +1 -0
  46. package/dist/driver/index.d.ts +17 -0
  47. package/dist/driver/index.js +61 -0
  48. package/dist/driver/index.js.map +1 -0
  49. package/dist/driver/router.d.ts +82 -0
  50. package/dist/driver/router.js +159 -0
  51. package/dist/driver/router.js.map +1 -0
  52. package/dist/driver/types.d.ts +234 -0
  53. package/dist/driver/types.js +2 -0
  54. package/dist/driver/types.js.map +1 -0
  55. package/dist/driver/unsupported.d.ts +50 -0
  56. package/dist/driver/unsupported.js +81 -0
  57. package/dist/driver/unsupported.js.map +1 -0
  58. package/dist/driver/vz-image.d.ts +35 -0
  59. package/dist/driver/vz-image.js +75 -0
  60. package/dist/driver/vz-image.js.map +1 -0
  61. package/dist/e2e-harness.d.ts +1 -0
  62. package/dist/e2e-harness.js +99 -0
  63. package/dist/e2e-harness.js.map +1 -0
  64. package/dist/egress-check.d.ts +8 -0
  65. package/dist/egress-check.js +317 -0
  66. package/dist/egress-check.js.map +1 -0
  67. package/dist/fc-check.d.ts +1 -0
  68. package/dist/fc-check.js +113 -0
  69. package/dist/fc-check.js.map +1 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +114 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/kernels.d.ts +22 -0
  74. package/dist/kernels.js +134 -0
  75. package/dist/kernels.js.map +1 -0
  76. package/dist/lifecycle.d.ts +49 -0
  77. package/dist/lifecycle.js +111 -0
  78. package/dist/lifecycle.js.map +1 -0
  79. package/dist/logger.d.ts +16 -0
  80. package/dist/logger.js +67 -0
  81. package/dist/logger.js.map +1 -0
  82. package/dist/metrics.d.ts +46 -0
  83. package/dist/metrics.js +92 -0
  84. package/dist/metrics.js.map +1 -0
  85. package/dist/net/firewall.d.ts +4 -0
  86. package/dist/net/firewall.js +80 -0
  87. package/dist/net/firewall.js.map +1 -0
  88. package/dist/pricing.d.ts +36 -0
  89. package/dist/pricing.js +81 -0
  90. package/dist/pricing.js.map +1 -0
  91. package/dist/proxy/allowlist-default.d.ts +23 -0
  92. package/dist/proxy/allowlist-default.js +53 -0
  93. package/dist/proxy/allowlist-default.js.map +1 -0
  94. package/dist/proxy/allowlist.d.ts +43 -0
  95. package/dist/proxy/allowlist.js +87 -0
  96. package/dist/proxy/allowlist.js.map +1 -0
  97. package/dist/proxy/egress.d.ts +49 -0
  98. package/dist/proxy/egress.js +599 -0
  99. package/dist/proxy/egress.js.map +1 -0
  100. package/dist/proxy/ratelimit.d.ts +49 -0
  101. package/dist/proxy/ratelimit.js +74 -0
  102. package/dist/proxy/ratelimit.js.map +1 -0
  103. package/dist/proxy/server.d.ts +26 -0
  104. package/dist/proxy/server.js +202 -0
  105. package/dist/proxy/server.js.map +1 -0
  106. package/dist/router-check.d.ts +1 -0
  107. package/dist/router-check.js +97 -0
  108. package/dist/router-check.js.map +1 -0
  109. package/dist/smoke-fc.d.ts +1 -0
  110. package/dist/smoke-fc.js +183 -0
  111. package/dist/smoke-fc.js.map +1 -0
  112. package/dist/smoke-microvm.d.ts +1 -0
  113. package/dist/smoke-microvm.js +187 -0
  114. package/dist/smoke-microvm.js.map +1 -0
  115. package/dist/smoke-remote.d.ts +20 -0
  116. package/dist/smoke-remote.js +155 -0
  117. package/dist/smoke-remote.js.map +1 -0
  118. package/dist/smoke-vz.d.ts +1 -0
  119. package/dist/smoke-vz.js +161 -0
  120. package/dist/smoke-vz.js.map +1 -0
  121. package/dist/smoke.d.ts +7 -0
  122. package/dist/smoke.js +962 -0
  123. package/dist/smoke.js.map +1 -0
  124. package/dist/store.d.ts +124 -0
  125. package/dist/store.js +578 -0
  126. package/dist/store.js.map +1 -0
  127. package/dist/tracing.d.ts +45 -0
  128. package/dist/tracing.js +144 -0
  129. package/dist/tracing.js.map +1 -0
  130. package/dist/types.d.ts +274 -0
  131. package/dist/types.js +3 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/util.d.ts +27 -0
  134. package/dist/util.js +63 -0
  135. package/dist/util.js.map +1 -0
  136. package/dist/warmpool-check.d.ts +1 -0
  137. package/dist/warmpool-check.js +83 -0
  138. package/dist/warmpool-check.js.map +1 -0
  139. package/dist/web/dashboard.d.ts +1 -0
  140. package/dist/web/dashboard.js +456 -0
  141. package/dist/web/dashboard.js.map +1 -0
  142. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/driver/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { type Socket } from "node:net";
2
+ /**
3
+ * Firecracker control plane — the host-agnostic pieces of the `firecracker`
4
+ * driver that compile and unit-test anywhere (no `/dev/kvm`): the VM
5
+ * configuration the daemon PUTs over Firecracker's HTTP-API-over-unix-socket,
6
+ * and the virtio-vsock UDS handshake the daemon uses to reach the in-guest agent.
7
+ *
8
+ * Only the *live boot* (spawning `firecracker`, the real vsock round-trip) needs
9
+ * a KVM host; everything here is pure logic + thin I/O, exercised by `check:fc`.
10
+ */
11
+ /** A single Firecracker API call (a PUT/PATCH of a JSON body to the API socket). */
12
+ export interface FcApiCall {
13
+ method: "PUT" | "PATCH";
14
+ path: string;
15
+ body: Record<string, unknown>;
16
+ }
17
+ /** Inputs for a microVM's boot configuration. */
18
+ export interface FcVmSpec {
19
+ kernelPath: string;
20
+ /** Read-only base rootfs (becomes /dev/vda). */
21
+ rootfsPath: string;
22
+ /** Read-write per-sandbox workspace disk (becomes /dev/vdb). */
23
+ workspacePath: string;
24
+ vcpus: number;
25
+ memMib: number;
26
+ /** Host unix-socket path Firecracker exposes for guest vsock. */
27
+ vsockUds: string;
28
+ /** Guest context id (host is 2; guests use 3+). */
29
+ guestCid?: number;
30
+ /** Override the kernel command line (mainly for tests). */
31
+ bootArgs?: string;
32
+ }
33
+ /** Default kernel cmdline: serial console, no PCI, our agent as init, ro root. */
34
+ export declare const FC_DEFAULT_BOOT_ARGS = "console=ttyS0 reboot=k panic=1 pci=off init=/init root=/dev/vda ro";
35
+ /**
36
+ * Build the ordered list of API calls that fully configure a microVM, ready to
37
+ * `InstanceStart`. Pure — the driver applies these in order over the API socket.
38
+ * The drive order matters: the root device is /dev/vda, the workspace /dev/vdb
39
+ * (matching the shared guest init, which mounts /dev/vdb at /workspace).
40
+ */
41
+ export declare function buildFcApiCalls(spec: FcVmSpec): FcApiCall[];
42
+ /** The action that boots a configured VM. */
43
+ export declare const FC_START_ACTION: FcApiCall;
44
+ /** The call that pauses a running VM's vCPUs (required before /snapshot/create). */
45
+ export declare const FC_PAUSE_VM: FcApiCall;
46
+ /** Build the call that writes a Full snapshot (device state + guest RAM) to disk. */
47
+ export declare function buildSnapshotCreateCall(vmstatePath: string, memPath: string): FcApiCall;
48
+ /**
49
+ * Build the call that restores a **fresh, unconfigured** VMM process from a
50
+ * snapshot and resumes it immediately. The snapshot pins the original host paths
51
+ * (kernel/rootfs/workspace drives, vsock UDS), so those files must still exist at
52
+ * the same locations; Firecracker re-binds the vsock UDS listener itself on load.
53
+ */
54
+ export declare function buildSnapshotLoadCall(vmstatePath: string, memPath: string): FcApiCall;
55
+ /**
56
+ * Parse Firecracker's vsock host→guest handshake reply. After the host connects
57
+ * to the vsock UDS and writes `CONNECT <port>\n`, Firecracker replies with a line
58
+ * `OK <hostPort>\n` on success, or `OK`-less text on failure. Returns the rest of
59
+ * the buffer after the newline (which may already hold agent bytes) when the line
60
+ * is present, or null if no complete line has arrived yet. Pure — unit-tested.
61
+ */
62
+ export declare function parseVsockHandshake(buf: Buffer): {
63
+ ok: boolean;
64
+ line: string;
65
+ leftover: Buffer;
66
+ } | null;
67
+ /** Thin client for Firecracker's HTTP API over its unix socket. */
68
+ export declare class FcApi {
69
+ private readonly socketPath;
70
+ constructor(socketPath: string);
71
+ /** Apply one API call; resolves on 2xx, rejects with the body otherwise. */
72
+ call(c: FcApiCall): Promise<void>;
73
+ /** Apply a sequence of calls in order. */
74
+ applyAll(calls: FcApiCall[]): Promise<void>;
75
+ }
76
+ /**
77
+ * Connect to a guest vsock port through Firecracker's UDS multiplexer: open the
78
+ * UDS, write `CONNECT <port>\n`, await the `OK <port>` line, and hand back the
79
+ * live socket plus any bytes that arrived after the handshake (often the agent's
80
+ * Hello). The caller wires the socket into an `AgentConn`.
81
+ */
82
+ export declare function fcVsockConnect(udsPath: string, port: number, timeoutMs?: number): Promise<{
83
+ socket: Socket;
84
+ leftover: Buffer;
85
+ }>;
@@ -0,0 +1,173 @@
1
+ import { request } from "node:http";
2
+ import { connect } from "node:net";
3
+ /** Default kernel cmdline: serial console, no PCI, our agent as init, ro root. */
4
+ export const FC_DEFAULT_BOOT_ARGS = "console=ttyS0 reboot=k panic=1 pci=off init=/init root=/dev/vda ro";
5
+ /**
6
+ * Build the ordered list of API calls that fully configure a microVM, ready to
7
+ * `InstanceStart`. Pure — the driver applies these in order over the API socket.
8
+ * The drive order matters: the root device is /dev/vda, the workspace /dev/vdb
9
+ * (matching the shared guest init, which mounts /dev/vdb at /workspace).
10
+ */
11
+ export function buildFcApiCalls(spec) {
12
+ return [
13
+ {
14
+ method: "PUT",
15
+ path: "/boot-source",
16
+ body: { kernel_image_path: spec.kernelPath, boot_args: spec.bootArgs ?? FC_DEFAULT_BOOT_ARGS },
17
+ },
18
+ {
19
+ method: "PUT",
20
+ path: "/machine-config",
21
+ body: { vcpu_count: spec.vcpus, mem_size_mib: spec.memMib, smt: false },
22
+ },
23
+ {
24
+ method: "PUT",
25
+ path: "/drives/rootfs",
26
+ body: {
27
+ drive_id: "rootfs",
28
+ path_on_host: spec.rootfsPath,
29
+ is_root_device: true,
30
+ is_read_only: true,
31
+ },
32
+ },
33
+ {
34
+ method: "PUT",
35
+ path: "/drives/workspace",
36
+ body: {
37
+ drive_id: "workspace",
38
+ path_on_host: spec.workspacePath,
39
+ is_root_device: false,
40
+ is_read_only: false,
41
+ },
42
+ },
43
+ {
44
+ method: "PUT",
45
+ path: "/vsock",
46
+ body: { guest_cid: spec.guestCid ?? 3, uds_path: spec.vsockUds },
47
+ },
48
+ ];
49
+ }
50
+ /** The action that boots a configured VM. */
51
+ export const FC_START_ACTION = {
52
+ method: "PUT",
53
+ path: "/actions",
54
+ body: { action_type: "InstanceStart" },
55
+ };
56
+ /** The call that pauses a running VM's vCPUs (required before /snapshot/create). */
57
+ export const FC_PAUSE_VM = {
58
+ method: "PATCH",
59
+ path: "/vm",
60
+ body: { state: "Paused" },
61
+ };
62
+ /** Build the call that writes a Full snapshot (device state + guest RAM) to disk. */
63
+ export function buildSnapshotCreateCall(vmstatePath, memPath) {
64
+ return {
65
+ method: "PUT",
66
+ path: "/snapshot/create",
67
+ body: { snapshot_type: "Full", snapshot_path: vmstatePath, mem_file_path: memPath },
68
+ };
69
+ }
70
+ /**
71
+ * Build the call that restores a **fresh, unconfigured** VMM process from a
72
+ * snapshot and resumes it immediately. The snapshot pins the original host paths
73
+ * (kernel/rootfs/workspace drives, vsock UDS), so those files must still exist at
74
+ * the same locations; Firecracker re-binds the vsock UDS listener itself on load.
75
+ */
76
+ export function buildSnapshotLoadCall(vmstatePath, memPath) {
77
+ return {
78
+ method: "PUT",
79
+ path: "/snapshot/load",
80
+ body: {
81
+ snapshot_path: vmstatePath,
82
+ mem_backend: { backend_type: "File", backend_path: memPath },
83
+ resume_vm: true,
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Parse Firecracker's vsock host→guest handshake reply. After the host connects
89
+ * to the vsock UDS and writes `CONNECT <port>\n`, Firecracker replies with a line
90
+ * `OK <hostPort>\n` on success, or `OK`-less text on failure. Returns the rest of
91
+ * the buffer after the newline (which may already hold agent bytes) when the line
92
+ * is present, or null if no complete line has arrived yet. Pure — unit-tested.
93
+ */
94
+ export function parseVsockHandshake(buf) {
95
+ const nl = buf.indexOf(0x0a);
96
+ if (nl === -1)
97
+ return null; // wait for a complete line
98
+ const line = buf.subarray(0, nl).toString("utf8").trim();
99
+ return { ok: /^OK\s+\d+/.test(line), line, leftover: buf.subarray(nl + 1) };
100
+ }
101
+ /** Thin client for Firecracker's HTTP API over its unix socket. */
102
+ export class FcApi {
103
+ socketPath;
104
+ constructor(socketPath) {
105
+ this.socketPath = socketPath;
106
+ }
107
+ /** Apply one API call; resolves on 2xx, rejects with the body otherwise. */
108
+ call(c) {
109
+ const data = Buffer.from(JSON.stringify(c.body));
110
+ return new Promise((resolve, reject) => {
111
+ const req = request({
112
+ socketPath: this.socketPath,
113
+ method: c.method,
114
+ path: c.path,
115
+ headers: { "content-type": "application/json", "content-length": data.length },
116
+ }, (res) => {
117
+ let body = "";
118
+ res.on("data", (d) => (body += d));
119
+ res.on("end", () => {
120
+ const code = res.statusCode ?? 0;
121
+ if (code >= 200 && code < 300)
122
+ resolve();
123
+ else
124
+ reject(new Error(`firecracker ${c.path} -> ${code}: ${body}`));
125
+ });
126
+ });
127
+ req.on("error", reject);
128
+ req.end(data);
129
+ });
130
+ }
131
+ /** Apply a sequence of calls in order. */
132
+ async applyAll(calls) {
133
+ for (const c of calls)
134
+ await this.call(c);
135
+ }
136
+ }
137
+ /**
138
+ * Connect to a guest vsock port through Firecracker's UDS multiplexer: open the
139
+ * UDS, write `CONNECT <port>\n`, await the `OK <port>` line, and hand back the
140
+ * live socket plus any bytes that arrived after the handshake (often the agent's
141
+ * Hello). The caller wires the socket into an `AgentConn`.
142
+ */
143
+ export function fcVsockConnect(udsPath, port, timeoutMs = 15000) {
144
+ return new Promise((resolve, reject) => {
145
+ const socket = connect(udsPath);
146
+ let buf = Buffer.alloc(0);
147
+ const timer = setTimeout(() => {
148
+ socket.destroy();
149
+ reject(new Error(`firecracker vsock connect to :${port} timed out`));
150
+ }, timeoutMs);
151
+ const onData = (d) => {
152
+ buf = Buffer.concat([buf, d]);
153
+ const parsed = parseVsockHandshake(buf);
154
+ if (!parsed)
155
+ return; // wait for the full line
156
+ socket.off("data", onData);
157
+ clearTimeout(timer);
158
+ if (!parsed.ok) {
159
+ socket.destroy();
160
+ reject(new Error(`firecracker vsock handshake failed: "${parsed.line}"`));
161
+ return;
162
+ }
163
+ resolve({ socket, leftover: parsed.leftover });
164
+ };
165
+ socket.on("connect", () => socket.write(`CONNECT ${port}\n`));
166
+ socket.on("data", onData);
167
+ socket.on("error", (e) => {
168
+ clearTimeout(timer);
169
+ reject(e);
170
+ });
171
+ });
172
+ }
173
+ //# sourceMappingURL=fc-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fc-api.js","sourceRoot":"","sources":["../../src/driver/fc-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import { AgentConn } from "./agent.js";
2
+ import { AgentDriver } from "./agent-driver.js";
3
+ import type { CreateOptions, HostInfo } from "./types.js";
4
+ /** Config the driver factory hands the Firecracker driver (subset of daemon config). */
5
+ export interface FcConfig {
6
+ /** Path to the `firecracker` binary. */
7
+ fcBin: string;
8
+ /** Guest Linux kernel (uncompressed vmlinux, per-arch). */
9
+ kernel: string;
10
+ /** Prebuilt base rootfs (ext4 with the agent as PID 1) for the sentinel images. */
11
+ rootfs: string;
12
+ /** Per-sandbox VM state dir (disks, sockets). */
13
+ stateDir: string;
14
+ /** Initial sparse size of a new workspace disk, in GiB. */
15
+ diskGb: number;
16
+ /** Cache dir for OCI→ext4 converted rootfs images + the blank workspace template. */
17
+ imageCacheDir: string;
18
+ /** Target platform for OCI→ext4 conversion (default matches the host arch). */
19
+ platform?: string;
20
+ /** Warm-pool size: keep N pre-booted spare microVMs for instant adoption (0 = off). */
21
+ warmPool?: number;
22
+ /** Image the warm pool pre-boots (a plain create of this image adopts a spare). */
23
+ poolImage?: string;
24
+ /**
25
+ * Egress gateway port for the guest relay (0/unset = no relay). The guest gets
26
+ * a loopback listener on this port whose connections tunnel over vsock to the
27
+ * host and on to `egressHost:egressPort` — the NIC-less guest's only way out.
28
+ */
29
+ egressPort?: number;
30
+ /** Host the egress gateway listens on (default 127.0.0.1). */
31
+ egressHost?: string;
32
+ }
33
+ /**
34
+ * Firecracker microVM driver (Linux, KVM). Each sandbox is a Firecracker microVM:
35
+ * the driver spawns `firecracker`, configures it over its HTTP-API-over-unix-socket
36
+ * (boot source / machine-config / drives / vsock), boots it, and reaches the
37
+ * in-guest `sbx-agent` over virtio-vsock — the **same agent and wire protocol the
38
+ * Apple VZ driver uses**, so the entire agent-served surface (exec/files/processes/
39
+ * ports/terminal/stats/backup) is inherited from {@link AgentDriver} unchanged.
40
+ *
41
+ * **Host requirement:** `/dev/kvm` + the `firecracker` binary. All the code here is
42
+ * host-agnostic and compiles/unit-tests anywhere (see `check:fc`); only the live
43
+ * boot needs a KVM (or nested-virt) Linux host, gated behind `smoke:fc`.
44
+ */
45
+ export declare class FirecrackerDriver extends AgentDriver {
46
+ private readonly cfg;
47
+ readonly name = "firecracker";
48
+ private vms;
49
+ private images;
50
+ private pool;
51
+ private poolTarget;
52
+ private poolSeq;
53
+ private filling;
54
+ private readonly poolImage;
55
+ private readonly poolDir;
56
+ constructor(cfg: FcConfig);
57
+ create(opts: CreateOptions): Promise<void>;
58
+ start(opts: CreateOptions): Promise<void>;
59
+ /** Bring a sandbox live: adopt a warm-pool spare when eligible (instant), else
60
+ * resume its snapshot, else cold-boot. Then apply the sandbox env. */
61
+ private launch;
62
+ /**
63
+ * Cold-boot a microVM in `stateDir` and wait for its in-guest agent, returning
64
+ * the live FcVm. Shared by the launch path and the warm-pool filler. Does not
65
+ * touch `this.vms` or apply sandbox env — the caller owns those.
66
+ */
67
+ private bootMicroVm;
68
+ /** Spares currently ready for adoption (used by checks). */
69
+ poolSize(): number;
70
+ /**
71
+ * Adopt a pre-booted spare for `opts` when eligible — a plain create of the
72
+ * pool image with default limits and no prior state. Adoption moves nothing:
73
+ * the canonical state dir becomes a **symlink** to the spare's slot dir, so
74
+ * every path the daemon joins under it resolves correctly while the absolute
75
+ * slot paths Firecracker recorded at boot (drives, vsock UDS) stay real — which
76
+ * keeps a later `snapshot()`/restore of the adopted VM loadable (`/snapshot/load`
77
+ * re-opens the boot-time paths embedded in the vmstate).
78
+ */
79
+ private tryAdopt;
80
+ /** Top the pool up to its target in the background (one filler at a time). */
81
+ private fillPool;
82
+ private doFill;
83
+ /** Tear down all spare microVMs (e.g. on daemon shutdown). Idempotent. */
84
+ drainPool(): Promise<void>;
85
+ /** Spawn a fresh VMM process for `stateDir` and wait for its API socket. */
86
+ private spawnVmm;
87
+ /**
88
+ * Host side of the guest egress relay. When the guest dials vsock port P,
89
+ * firecracker connects to the unix socket `<vsockUds>_P` — so we listen there
90
+ * and splice every such connection to the egress gateway. Set up per-VMM
91
+ * (boot, snapshot-load, and pool spares alike) before the guest can dial;
92
+ * torn down automatically with the VMM process.
93
+ */
94
+ private startEgressRelay;
95
+ /**
96
+ * Run a VMM bring-up step, retrying once on a fresh process. Rationale: a VMM
97
+ * spawned immediately after the previous one's SIGKILL can die silently before
98
+ * serving its API (a transient KVM/VMM teardown race seen on nested-virt
99
+ * hosts, ~ECONNRESET mid-configure); a single respawn reliably clears it.
100
+ */
101
+ private withOneRetry;
102
+ /** Poll the guest vsock until the agent answers its Hello, or time out. */
103
+ private waitForAgent;
104
+ /** Boot a fresh VMM and load the saved snapshot into it (no kernel boot). The
105
+ * snapshot pins the vsock UDS path; firecracker re-binds it on load (stale
106
+ * socket files are cleared by `spawnVmm`). */
107
+ private resumeFromSnapshot;
108
+ /** A live VM can always be snapshot-paused (KVM snapshots have no OS gate). */
109
+ canSnapshot(id: string): boolean;
110
+ /**
111
+ * Fast-pause (B7): pause the vCPUs, write a Full Firecracker snapshot (device
112
+ * state + guest RAM) into the sandbox's state dir, and tear the VMM down. The
113
+ * next `start` resumes from it **without a kernel boot** — background
114
+ * processes/servers come back live. Same contract as the VZ driver's
115
+ * `snapshot()`: the guest fs is synced first, so if the later restore has to
116
+ * fall back to a cold boot the workspace is still intact.
117
+ */
118
+ snapshot(id: string): Promise<void>;
119
+ stop(id: string): Promise<void>;
120
+ destroy(id: string): Promise<void>;
121
+ /** Open a fresh AgentConn to the guest over Firecracker's vsock UDS (CONNECT
122
+ * handshake → the live socket carries the agent wire protocol). */
123
+ protected openConn(id: string): Promise<AgentConn>;
124
+ ping(): Promise<void>;
125
+ hostInfo(): Promise<HostInfo>;
126
+ }