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.
- package/README.md +36 -4
- package/dist/backend-docker/backend.d.ts +76 -1
- package/dist/backend-docker/backend.d.ts.map +1 -1
- package/dist/backend-docker/backend.js +156 -13
- package/dist/backend-docker/backend.js.map +1 -1
- package/dist/backend-docker/cli.d.ts +25 -0
- package/dist/backend-docker/cli.d.ts.map +1 -0
- package/dist/backend-docker/cli.js +64 -0
- package/dist/backend-docker/cli.js.map +1 -0
- package/dist/backend-docker/labels.d.ts +27 -5
- package/dist/backend-docker/labels.d.ts.map +1 -1
- package/dist/backend-docker/labels.js +33 -5
- package/dist/backend-docker/labels.js.map +1 -1
- package/dist/backend-msb/backend.d.ts +89 -6
- package/dist/backend-msb/backend.d.ts.map +1 -1
- package/dist/backend-msb/backend.js +179 -14
- package/dist/backend-msb/backend.js.map +1 -1
- package/dist/backend-msb/commands.d.ts +10 -0
- package/dist/backend-msb/commands.d.ts.map +1 -1
- package/dist/backend-msb/commands.js +29 -1
- package/dist/backend-msb/commands.js.map +1 -1
- package/dist/backend-msb/provider.d.ts.map +1 -1
- package/dist/backend-msb/provider.js +7 -11
- package/dist/backend-msb/provider.js.map +1 -1
- package/dist/backend-msb/provisioner.d.ts.map +1 -1
- package/dist/backend-msb/provisioner.js +1 -20
- package/dist/backend-msb/provisioner.js.map +1 -1
- package/dist/backend-msb/snapshot-not-found.d.ts +25 -0
- package/dist/backend-msb/snapshot-not-found.d.ts.map +1 -0
- package/dist/backend-msb/snapshot-not-found.js +27 -0
- package/dist/backend-msb/snapshot-not-found.js.map +1 -0
- package/dist/core/backend.d.ts +124 -0
- package/dist/core/backend.d.ts.map +1 -1
- package/dist/core/backends.d.ts +16 -2
- package/dist/core/backends.d.ts.map +1 -1
- package/dist/core/backends.js +39 -5
- package/dist/core/backends.js.map +1 -1
- package/dist/core/cache-dir.d.ts +17 -0
- package/dist/core/cache-dir.d.ts.map +1 -0
- package/dist/core/cache-dir.js +29 -0
- package/dist/core/cache-dir.js.map +1 -0
- package/dist/core/checkpoint/api.d.ts +80 -0
- package/dist/core/checkpoint/api.d.ts.map +1 -0
- package/dist/core/checkpoint/api.js +138 -0
- package/dist/core/checkpoint/api.js.map +1 -0
- package/dist/core/checkpoint/name.d.ts +12 -0
- package/dist/core/checkpoint/name.d.ts.map +1 -0
- package/dist/core/checkpoint/name.js +17 -0
- package/dist/core/checkpoint/name.js.map +1 -0
- package/dist/core/checkpoint/ref.d.ts +12 -0
- package/dist/core/checkpoint/ref.d.ts.map +1 -0
- package/dist/core/checkpoint/ref.js +16 -0
- package/dist/core/checkpoint/ref.js.map +1 -0
- package/dist/core/checkpoint/registry.d.ts +107 -0
- package/dist/core/checkpoint/registry.d.ts.map +1 -0
- package/dist/core/checkpoint/registry.js +180 -0
- package/dist/core/checkpoint/registry.js.map +1 -0
- package/dist/core/cleanup.d.ts +19 -4
- package/dist/core/cleanup.d.ts.map +1 -1
- package/dist/core/cleanup.js +14 -27
- package/dist/core/cleanup.js.map +1 -1
- package/dist/core/diagnostics.d.ts +33 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +76 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/errors.d.ts +97 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +129 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/generic-container.d.ts +176 -1
- package/dist/core/generic-container.d.ts.map +1 -1
- package/dist/core/generic-container.js +566 -3
- package/dist/core/generic-container.js.map +1 -1
- package/dist/core/model.d.ts +39 -0
- package/dist/core/model.d.ts.map +1 -1
- package/dist/core/network.d.ts.map +1 -1
- package/dist/core/network.js +2 -0
- package/dist/core/network.js.map +1 -1
- package/dist/core/reaper/env.d.ts +14 -0
- package/dist/core/reaper/env.d.ts.map +1 -0
- package/dist/core/reaper/env.js +22 -0
- package/dist/core/reaper/env.js.map +1 -0
- package/dist/core/reaper/init.d.ts +39 -0
- package/dist/core/reaper/init.d.ts.map +1 -0
- package/dist/core/reaper/init.js +140 -0
- package/dist/core/reaper/init.js.map +1 -0
- package/dist/core/reaper/ledger.d.ts +32 -0
- package/dist/core/reaper/ledger.d.ts.map +1 -0
- package/dist/core/reaper/ledger.js +160 -0
- package/dist/core/reaper/ledger.js.map +1 -0
- package/dist/core/reaper/process-liveness.d.ts +39 -0
- package/dist/core/reaper/process-liveness.d.ts.map +1 -0
- package/dist/core/reaper/process-liveness.js +117 -0
- package/dist/core/reaper/process-liveness.js.map +1 -0
- package/dist/core/reaper/run-record.d.ts +48 -0
- package/dist/core/reaper/run-record.d.ts.map +1 -0
- package/dist/core/reaper/run-record.js +58 -0
- package/dist/core/reaper/run-record.js.map +1 -0
- package/dist/core/reaper/sweep.d.ts +23 -0
- package/dist/core/reaper/sweep.d.ts.map +1 -0
- package/dist/core/reaper/sweep.js +76 -0
- package/dist/core/reaper/sweep.js.map +1 -0
- package/dist/core/reaper/watchdog.d.ts +100 -0
- package/dist/core/reaper/watchdog.d.ts.map +1 -0
- package/dist/core/reaper/watchdog.js +412 -0
- package/dist/core/reaper/watchdog.js.map +1 -0
- package/dist/core/reuse/env.d.ts +12 -0
- package/dist/core/reuse/env.d.ts.map +1 -0
- package/dist/core/reuse/env.js +15 -0
- package/dist/core/reuse/env.js.map +1 -0
- package/dist/core/reuse/hash.d.ts +34 -0
- package/dist/core/reuse/hash.d.ts.map +1 -0
- package/dist/core/reuse/hash.js +52 -0
- package/dist/core/reuse/hash.js.map +1 -0
- package/dist/core/reuse/registry.d.ts +50 -0
- package/dist/core/reuse/registry.d.ts.map +1 -0
- package/dist/core/reuse/registry.js +75 -0
- package/dist/core/reuse/registry.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/keycloak.js +1 -1
- package/dist/modules/mysql.d.ts.map +1 -1
- package/dist/modules/mysql.js +4 -3
- package/dist/modules/mysql.js.map +1 -1
- package/package.json +1 -1
- package/dist/backend-msb/reaper.d.ts +0 -10
- package/dist/backend-msb/reaper.d.ts.map +0 -1
- package/dist/backend-msb/reaper.js +0 -73
- 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":"
|
|
1
|
+
{"version":3,"file":"generic-container.d.ts","sourceRoot":"","sources":["../../src/core/generic-container.ts"],"names":[],"mappings":"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"}
|