rightsize 0.1.2 → 0.3.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 (131) hide show
  1. package/README.md +36 -4
  2. package/dist/backend-docker/backend.d.ts +76 -1
  3. package/dist/backend-docker/backend.d.ts.map +1 -1
  4. package/dist/backend-docker/backend.js +156 -13
  5. package/dist/backend-docker/backend.js.map +1 -1
  6. package/dist/backend-docker/cli.d.ts +25 -0
  7. package/dist/backend-docker/cli.d.ts.map +1 -0
  8. package/dist/backend-docker/cli.js +64 -0
  9. package/dist/backend-docker/cli.js.map +1 -0
  10. package/dist/backend-docker/labels.d.ts +27 -5
  11. package/dist/backend-docker/labels.d.ts.map +1 -1
  12. package/dist/backend-docker/labels.js +33 -5
  13. package/dist/backend-docker/labels.js.map +1 -1
  14. package/dist/backend-msb/backend.d.ts +89 -6
  15. package/dist/backend-msb/backend.d.ts.map +1 -1
  16. package/dist/backend-msb/backend.js +179 -14
  17. package/dist/backend-msb/backend.js.map +1 -1
  18. package/dist/backend-msb/commands.d.ts +10 -0
  19. package/dist/backend-msb/commands.d.ts.map +1 -1
  20. package/dist/backend-msb/commands.js +29 -1
  21. package/dist/backend-msb/commands.js.map +1 -1
  22. package/dist/backend-msb/provider.d.ts.map +1 -1
  23. package/dist/backend-msb/provider.js +7 -11
  24. package/dist/backend-msb/provider.js.map +1 -1
  25. package/dist/backend-msb/provisioner.d.ts.map +1 -1
  26. package/dist/backend-msb/provisioner.js +1 -20
  27. package/dist/backend-msb/provisioner.js.map +1 -1
  28. package/dist/backend-msb/snapshot-not-found.d.ts +25 -0
  29. package/dist/backend-msb/snapshot-not-found.d.ts.map +1 -0
  30. package/dist/backend-msb/snapshot-not-found.js +27 -0
  31. package/dist/backend-msb/snapshot-not-found.js.map +1 -0
  32. package/dist/core/backend.d.ts +124 -0
  33. package/dist/core/backend.d.ts.map +1 -1
  34. package/dist/core/backends.d.ts +16 -2
  35. package/dist/core/backends.d.ts.map +1 -1
  36. package/dist/core/backends.js +39 -5
  37. package/dist/core/backends.js.map +1 -1
  38. package/dist/core/cache-dir.d.ts +17 -0
  39. package/dist/core/cache-dir.d.ts.map +1 -0
  40. package/dist/core/cache-dir.js +29 -0
  41. package/dist/core/cache-dir.js.map +1 -0
  42. package/dist/core/checkpoint/api.d.ts +80 -0
  43. package/dist/core/checkpoint/api.d.ts.map +1 -0
  44. package/dist/core/checkpoint/api.js +138 -0
  45. package/dist/core/checkpoint/api.js.map +1 -0
  46. package/dist/core/checkpoint/name.d.ts +12 -0
  47. package/dist/core/checkpoint/name.d.ts.map +1 -0
  48. package/dist/core/checkpoint/name.js +17 -0
  49. package/dist/core/checkpoint/name.js.map +1 -0
  50. package/dist/core/checkpoint/ref.d.ts +12 -0
  51. package/dist/core/checkpoint/ref.d.ts.map +1 -0
  52. package/dist/core/checkpoint/ref.js +16 -0
  53. package/dist/core/checkpoint/ref.js.map +1 -0
  54. package/dist/core/checkpoint/registry.d.ts +107 -0
  55. package/dist/core/checkpoint/registry.d.ts.map +1 -0
  56. package/dist/core/checkpoint/registry.js +180 -0
  57. package/dist/core/checkpoint/registry.js.map +1 -0
  58. package/dist/core/cleanup.d.ts +19 -4
  59. package/dist/core/cleanup.d.ts.map +1 -1
  60. package/dist/core/cleanup.js +14 -27
  61. package/dist/core/cleanup.js.map +1 -1
  62. package/dist/core/diagnostics.d.ts +33 -0
  63. package/dist/core/diagnostics.d.ts.map +1 -0
  64. package/dist/core/diagnostics.js +76 -0
  65. package/dist/core/diagnostics.js.map +1 -0
  66. package/dist/core/errors.d.ts +97 -0
  67. package/dist/core/errors.d.ts.map +1 -1
  68. package/dist/core/errors.js +129 -0
  69. package/dist/core/errors.js.map +1 -1
  70. package/dist/core/generic-container.d.ts +176 -1
  71. package/dist/core/generic-container.d.ts.map +1 -1
  72. package/dist/core/generic-container.js +566 -3
  73. package/dist/core/generic-container.js.map +1 -1
  74. package/dist/core/model.d.ts +39 -0
  75. package/dist/core/model.d.ts.map +1 -1
  76. package/dist/core/network.d.ts.map +1 -1
  77. package/dist/core/network.js +2 -0
  78. package/dist/core/network.js.map +1 -1
  79. package/dist/core/reaper/env.d.ts +14 -0
  80. package/dist/core/reaper/env.d.ts.map +1 -0
  81. package/dist/core/reaper/env.js +22 -0
  82. package/dist/core/reaper/env.js.map +1 -0
  83. package/dist/core/reaper/init.d.ts +39 -0
  84. package/dist/core/reaper/init.d.ts.map +1 -0
  85. package/dist/core/reaper/init.js +140 -0
  86. package/dist/core/reaper/init.js.map +1 -0
  87. package/dist/core/reaper/ledger.d.ts +32 -0
  88. package/dist/core/reaper/ledger.d.ts.map +1 -0
  89. package/dist/core/reaper/ledger.js +160 -0
  90. package/dist/core/reaper/ledger.js.map +1 -0
  91. package/dist/core/reaper/process-liveness.d.ts +39 -0
  92. package/dist/core/reaper/process-liveness.d.ts.map +1 -0
  93. package/dist/core/reaper/process-liveness.js +117 -0
  94. package/dist/core/reaper/process-liveness.js.map +1 -0
  95. package/dist/core/reaper/run-record.d.ts +48 -0
  96. package/dist/core/reaper/run-record.d.ts.map +1 -0
  97. package/dist/core/reaper/run-record.js +58 -0
  98. package/dist/core/reaper/run-record.js.map +1 -0
  99. package/dist/core/reaper/sweep.d.ts +23 -0
  100. package/dist/core/reaper/sweep.d.ts.map +1 -0
  101. package/dist/core/reaper/sweep.js +76 -0
  102. package/dist/core/reaper/sweep.js.map +1 -0
  103. package/dist/core/reaper/watchdog.d.ts +100 -0
  104. package/dist/core/reaper/watchdog.d.ts.map +1 -0
  105. package/dist/core/reaper/watchdog.js +412 -0
  106. package/dist/core/reaper/watchdog.js.map +1 -0
  107. package/dist/core/reuse/env.d.ts +12 -0
  108. package/dist/core/reuse/env.d.ts.map +1 -0
  109. package/dist/core/reuse/env.js +15 -0
  110. package/dist/core/reuse/env.js.map +1 -0
  111. package/dist/core/reuse/hash.d.ts +34 -0
  112. package/dist/core/reuse/hash.d.ts.map +1 -0
  113. package/dist/core/reuse/hash.js +52 -0
  114. package/dist/core/reuse/hash.js.map +1 -0
  115. package/dist/core/reuse/registry.d.ts +50 -0
  116. package/dist/core/reuse/registry.d.ts.map +1 -0
  117. package/dist/core/reuse/registry.js +75 -0
  118. package/dist/core/reuse/registry.js.map +1 -0
  119. package/dist/index.d.ts +8 -4
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +5 -2
  122. package/dist/index.js.map +1 -1
  123. package/dist/modules/keycloak.js +1 -1
  124. package/dist/modules/mysql.d.ts.map +1 -1
  125. package/dist/modules/mysql.js +4 -3
  126. package/dist/modules/mysql.js.map +1 -1
  127. package/package.json +1 -1
  128. package/dist/backend-msb/reaper.d.ts +0 -10
  129. package/dist/backend-msb/reaper.d.ts.map +0 -1
  130. package/dist/backend-msb/reaper.js +0 -73
  131. package/dist/backend-msb/reaper.js.map +0 -1
@@ -2,7 +2,7 @@ import { Network } from "./network.js";
2
2
  import type { NetworkMember } from "./network.js";
3
3
  import type { WaitStrategy } from "./wait.js";
4
4
  import type { SandboxBackend, FollowHandle } from "./backend.js";
5
- import type { ContainerSpec, ExecResult } from "./model.js";
5
+ import type { ContainerSpec, ExecResult, Checkpoint } from "./model.js";
6
6
  import type { MountableFile } from "./mountable-file.js";
7
7
  /**
8
8
  * The builder, launcher, and lifecycle guard for a single container — the
@@ -33,14 +33,36 @@ export declare class GenericContainer implements AsyncDisposable, NetworkMember
33
33
  private waitStrategy;
34
34
  private memoryLimitMb;
35
35
  private backendOverride;
36
+ private reuseRequested;
37
+ private requireIsolationRequested;
38
+ private checkpointRef;
39
+ private checkpointSourceBackend;
36
40
  private handle;
37
41
  private backend;
38
42
  private mappedPorts;
39
43
  private running;
44
+ private installedNetworkLinks;
40
45
  /** Builds against `image` (e.g. `"redis:8.6-alpine"`); no I/O happens until `start()`. */
41
46
  constructor(image: string);
42
47
  /** Convenience: `new GenericContainer(image).start()`. */
43
48
  static start(image: string): Promise<GenericContainer>;
49
+ /**
50
+ * Builds a normal, ephemeral `GenericContainer` from a `Checkpoint`
51
+ * (`checkpoint()`'s return value): image is `cp.ref`, and
52
+ * env/command/exposed ports/memory limit default to `cp.spec` — chain
53
+ * further builder calls (a different `waitingFor`, `withBackend`, …)
54
+ * before `start()`, the same as any other container. Never carries over
55
+ * `cp.spec`'s network/aliases/mounts — the captured state already has the
56
+ * filesystem baked in, and (as with `withReuse()`'s own network
57
+ * restriction) network topology is never part of what a checkpoint
58
+ * captures. `start()` throws `CheckpointBackendMismatchError` before any
59
+ * backend call if the active backend isn't the one that created `cp`, and
60
+ * `ReuseFromCheckpointError` if this container is also marked
61
+ * `withReuse()` — reuse's identity hash never covers a checkpoint ref.
62
+ * Once started, a restored container is ordinary in every other respect:
63
+ * fresh host ports, normal reaping-ledger tracking, normal stop.
64
+ */
65
+ static fromCheckpoint(cp: Checkpoint): GenericContainer;
44
66
  /** Sets an environment variable visible to the workload. Last-write-wins if called again with the same key; insertion order is otherwise preserved. */
45
67
  withEnv(key: string, value: string): this;
46
68
  /** Publishes these guest ports to pre-allocated host ports (see `FreePorts`); read back with `getMappedPort`. */
@@ -59,6 +81,26 @@ export declare class GenericContainer implements AsyncDisposable, NetworkMember
59
81
  withMemoryLimit(megabytes: number): this;
60
82
  /** Test/advanced seam: pin the backend instead of resolving `Backends.active()`. */
61
83
  withBackend(backend: SandboxBackend): this;
84
+ /**
85
+ * Marks this container for reuse: survive process exit and be ADOPTED —
86
+ * not re-created — by the next equivalent container's `start()`, in this
87
+ * process or a later one. Double opt-in: this API marker alone does
88
+ * nothing unless `RIGHTSIZE_REUSE` is also `"true"` or `"1"` at `start()`
89
+ * time. Marked-but-not-enabled starts as an ordinary ephemeral container
90
+ * (Testcontainers semantics), with a one-time stderr note. See the
91
+ * [reuse guide](/guide/reuse) for identity rules, the network
92
+ * restriction, and manual cleanup.
93
+ */
94
+ withReuse(): this;
95
+ /**
96
+ * Demands hardware-virtualized isolation: `start()` throws
97
+ * `IsolationRequiredError` before any create/network work if the active
98
+ * backend's `capabilities.hardwareIsolated` is `false` (the docker
99
+ * fallback, which shares the host kernel), instead of silently degrading.
100
+ * Use for tests that run untrusted code. See the
101
+ * [isolation guide](/guide/isolation).
102
+ */
103
+ withRequireIsolation(): this;
62
104
  /** Module hook: override to adjust the spec once mapped host ports are known (e.g. advertised listeners). */
63
105
  protected customizeSpec(spec: ContainerSpec, _mapped: (guest: number) => number): ContainerSpec;
64
106
  /** Module hook: runs after the container is ready (e.g. `rs.initiate` for a Mongo replica set). */
@@ -84,6 +126,10 @@ export declare class GenericContainer implements AsyncDisposable, NetworkMember
84
126
  protected currentBackend(): SandboxBackend;
85
127
  private resolveBackend;
86
128
  private buildSpec;
129
+ /** The reuse-active counterpart of `buildSpec`: always `keepAlive: true`, named `rz-reuse-<hash12>` rather than the run-scoped `rz-<runId>-<seq>`, and never joined to a `Network` (rejected earlier in `start()`). */
130
+ private buildReuseSpec;
131
+ /** This container's reuse identity hash — the reuse-relevant subset of its builder state, hashed per `reuseHash`'s canonical form. Reads every `withCopyFileToContainer` source file's CURRENT content, so a mutated source file between two `start()` calls changes identity. */
132
+ private computeReuseHash;
87
133
  private allocatePorts;
88
134
  private releasePorts;
89
135
  /**
@@ -101,6 +147,59 @@ export declare class GenericContainer implements AsyncDisposable, NetworkMember
101
147
  * allocate-then-bind race to an unrelated process.
102
148
  */
103
149
  start(): Promise<this>;
150
+ /**
151
+ * The reuse-active start path — an entirely separate flow from the
152
+ * ephemeral one above, never joining `MAX_START_ATTEMPTS`'s port-conflict
153
+ * retry loop, the ledger, or the sync-cleanup registry (all deliberate:
154
+ * see `withReuse()`'s own doc and the reaping addendum). Computes this
155
+ * container's identity hash, then adopts an existing sandbox or creates a
156
+ * fresh one under the deterministic `rz-reuse-<hash12>` name.
157
+ */
158
+ private startReuse;
159
+ /**
160
+ * Reads the registry once and either adopts (registry hit, running,
161
+ * wait ok) or falls through to a fresh create — see the reuse spec's own
162
+ * "Start flow when reuse is active" for the full state table this
163
+ * implements. `isRetry` caps the name-collision recursion at one retry
164
+ * (`adoptOrCreate` re-enters itself exactly once, from the create/start
165
+ * failure branch below): "another process won the race" is expected to
166
+ * resolve within one retry (by then its own registry write has very
167
+ * likely landed); anything still colliding after that is a genuine
168
+ * failure, not a race, and propagates.
169
+ */
170
+ private adoptOrCreate;
171
+ /**
172
+ * Registry hit → verify: confirm the name is actually running (backend
173
+ * query, never trusted from the file alone), then re-run this
174
+ * container's OWN wait strategy against the recorded ports — a running
175
+ * sandbox that never became ready for THIS workload is exactly as
176
+ * unadoptable as one that isn't running at all. `undefined` means adopt
177
+ * failed for any reason (not running, or the wait failed); the caller's
178
+ * best-effort cleanup already ran by the time this returns.
179
+ */
180
+ private tryAdopt;
181
+ /** Best-effort: remove whatever's running under `name` (by name — this call never held a handle for it) and delete the registry file. Never throws. */
182
+ private cleanupStaleReuse;
183
+ /**
184
+ * The crash-mid-boot-orphan guard for the "no registry entry at all"
185
+ * fresh-create path: confirms with the backend whether `name` is actually
186
+ * running BEFORE this container's own create() attempt, and only then
187
+ * best-effort-removes it — never a blind `removeByName` the way
188
+ * `cleanupStaleReuse` above does for the corrupt/failed-verification
189
+ * cases, where a registry entry (however stale) already proved something
190
+ * about this identity once existed. Here nothing has ever proved that, so
191
+ * the common empty-cache case (nothing running) pays no removal call at
192
+ * all, and a concurrent creator that's already past ITS OWN create()-and-
193
+ * register cycle by the time this runs is instead caught by the
194
+ * name-collision-retry-into-adopt path below (a registry entry appearing
195
+ * for it means that process won the race — adopt, don't remove). The spec
196
+ * handed to `findRunning` here is a throwaway: any exposed ports serve
197
+ * only to satisfy `ContainerSpec`'s shape, since every backend's
198
+ * `findRunning` matches on `spec.name` alone.
199
+ */
200
+ private removeOrphanedRunningReuse;
201
+ /** The `WaitTarget` for a specific (backend, handle, ports) triple, independent of this instance's own `this.handle`/`this.backend`/`this.mappedPorts` — needed because reuse's adopt-verification wait runs BEFORE those fields are ever assigned. */
202
+ private waitTargetFor;
104
203
  /**
105
204
  * Stops and removes the backend-native resource, releases its host ports,
106
205
  * and clears the port map. Idempotent — stopping a container that never
@@ -129,6 +228,82 @@ export declare class GenericContainer implements AsyncDisposable, NetworkMember
129
228
  /** Alias for `getMappedPort`, satisfying the `NetworkMember`/`WaitTarget` shape (which name this method `mappedPort`). */
130
229
  mappedPort(guestPort: number): number;
131
230
  private requireHandle;
231
+ /**
232
+ * Captures this running container's state and returns a `Checkpoint` — a
233
+ * FILESYSTEM capture, not a memory snapshot: `fromCheckpoint()` boots a
234
+ * container from the captured state with processes restarting from
235
+ * scratch, not resuming. Requires the active backend's
236
+ * `capabilities.checkpoint` (`true` on both real backends today: docker
237
+ * via image commit, microsandbox via disk snapshot) — checked BEFORE any
238
+ * backend call, so an unsupported backend never attempts one. Throws a
239
+ * state error (same shape as `exec`/`logs`) if this container isn't
240
+ * currently running.
241
+ *
242
+ * Passing `name` makes this checkpoint NAMED and durable: the ref becomes
243
+ * deterministic (`rz-ckpt-<name>` / `rightsize/checkpoint:<name>` instead
244
+ * of a random 12-hex suffix), and — only once the backend call below has
245
+ * actually succeeded — a registry entry is written under
246
+ * `<cacheDir>/checkpoints/<name>.json` that `Checkpoints.find`/`list`/
247
+ * `remove` can rediscover later, in this process or a different one. `name`
248
+ * must match `^[a-z0-9][a-z0-9-]{0,40}$`; an invalid name throws
249
+ * `InvalidCheckpointNameError` before any backend call. Checkpointing under
250
+ * a name that already has a registry entry REPLACES it: the ref is the
251
+ * same deterministic value either way, so this best-effort clears the old
252
+ * artifact under that ref before creating the new one, then overwrites the
253
+ * registry entry — the latest checkpoint under a name always wins.
254
+ * Omitting `name` keeps the original behavior byte-for-byte: a random ref,
255
+ * no registry entry, ephemeral.
256
+ *
257
+ * On a backend whose `capabilities.checkpointRestartsWorkload` is `true`
258
+ * (microsandbox: the stop/snapshot/reboot cycle boots a fresh microVM),
259
+ * this re-runs the container's own wait strategy before returning — a bare
260
+ * return right after the backend call would hand back a false-ready
261
+ * container. docker's commit-to-image never disturbs the running
262
+ * container, so no re-wait happens there.
263
+ *
264
+ * That same reboot also kills any network links this container had
265
+ * installed toward already-running siblings (msb emulates them with
266
+ * exec-tunnels, which the workload restart tears down along with
267
+ * everything else on the sandbox), so when links were installed in the
268
+ * first place, this re-runs `installNetworkLinks` with those same links
269
+ * BEFORE the wait-strategy re-run — the wait must gate a container that is
270
+ * fully re-linked, not just booted.
271
+ *
272
+ * Checkpoints are never auto-reaped (a committed image or a disk snapshot
273
+ * is not a container) — see the checkpoints guide for the manual cleanup
274
+ * one-liners and the `Checkpoints.remove` cleanup affordance.
275
+ */
276
+ checkpoint(name?: string): Promise<Checkpoint>;
277
+ /**
278
+ * Copies a host file or directory into this running container at
279
+ * `containerPath`, creating the destination's parent directory first
280
+ * (`exec: mkdir -p <parent>`) — callers never pre-create directories on
281
+ * either side. `containerPath` must be absolute (both backends' own copy
282
+ * tools require `NAME:/abs/path`); `hostPath` may be a file or a
283
+ * directory, `cp -r`-style: copying a directory to an absent destination
284
+ * produces that destination as a copy of the source's CONTENTS, not the
285
+ * source nested one level down. Requires a running container — throws the
286
+ * same state error `exec()`/`logs()` do, before any backend call. Works on
287
+ * a reuse container too, but the copy mutates shared state that is NOT
288
+ * part of the reuse identity hash — see the reuse guide's caveat.
289
+ */
290
+ copyFileToContainer(hostPath: string, containerPath: string): Promise<void>;
291
+ /**
292
+ * Convenience over `copyFileToContainer()`: writes `content` to a private
293
+ * (mode `0600`) temp file and copies THAT file in, removing the temp file
294
+ * afterward regardless of outcome. No streaming protocol — content is
295
+ * always fully materialized on host disk before the copy.
296
+ */
297
+ copyContentToContainer(content: string | Uint8Array, containerPath: string): Promise<void>;
298
+ /**
299
+ * Copies a file or directory OUT of this running container at
300
+ * `containerPath` to `hostPath`, creating the destination's host parent
301
+ * directory first via the standard library — the mirror image of
302
+ * `copyFileToContainer`'s guest-side `mkdir -p`. `containerPath` must be
303
+ * absolute; `cp -r`-style destination naming applies here too. Requires a
304
+ * running container, like `copyFileToContainer`.
305
+ */
306
+ copyFileFromContainer(containerPath: string, hostPath: string): Promise<void>;
132
307
  /** Runs a one-shot command inside the running container and waits for it to exit. Throws if the container is not running. */
133
308
  exec(...cmd: string[]): Promise<ExecResult>;
134
309
  /** Fetches the workload's logs so far (a bounded tail), as a single string. Throws if the container is not running. */
@@ -1 +1 @@
1
- {"version":3,"file":"generic-container.d.ts","sourceRoot":"","sources":["../../src/core/generic-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-container.d.ts","sourceRoot":"","sources":["../../src/core/generic-container.ts"],"names":[],"mappings":"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"}