@multiplayer-app/sandbox 7.0.0 → 7.0.2
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 +21 -11
- package/dist/cli.js +511 -111
- package/dist/cli.js.map +4 -4
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/console-relays.d.ts +4 -4
- package/dist/console-relays.d.ts.map +1 -1
- package/dist/executor/index.d.ts +12 -1
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/lambda-microvm-executor.d.ts +13 -3
- package/dist/executor/lambda-microvm-executor.d.ts.map +1 -1
- package/dist/executor/types.d.ts +16 -2
- package/dist/executor/types.d.ts.map +1 -1
- package/dist/images.d.ts.map +1 -1
- package/dist/index.js +416 -59
- package/dist/index.js.map +4 -4
- package/dist/services/serial-relay.d.ts +11 -0
- package/dist/services/serial-relay.d.ts.map +1 -1
- package/dist/socket-client.d.ts.map +1 -1
- package/dist/vendor/builder-types/events.d.ts +10 -0
- package/dist/vendor/builder-types/events.d.ts.map +1 -1
- package/dist/vendor/builder-types/index.d.ts +1 -0
- package/dist/vendor/builder-types/index.d.ts.map +1 -1
- package/dist/vendor/builder-types/release.d.ts +5 -5
- package/dist/vendor/builder-types/release.d.ts.map +1 -1
- package/dist/vendor/builder-types/vm-cost.d.ts +88 -0
- package/dist/vendor/builder-types/vm-cost.d.ts.map +1 -0
- package/dist/vendor/builder-types/vm.d.ts +5 -0
- package/dist/vendor/builder-types/vm.d.ts.map +1 -1
- package/dist/worker-identity.d.ts +11 -0
- package/dist/worker-identity.d.ts.map +1 -0
- package/package.json +6 -2
package/dist/config.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export interface LambdaMicrovmWorkerConfig {
|
|
|
33
33
|
maxIdleSeconds: number;
|
|
34
34
|
suspendedDurationSeconds: number;
|
|
35
35
|
maximumDurationInSeconds: number;
|
|
36
|
+
createTimeoutMs: number;
|
|
36
37
|
}
|
|
37
38
|
export interface DockerWorkerConfig {
|
|
38
39
|
bin: string;
|
|
@@ -72,6 +73,14 @@ export interface FargateWorkerConfig {
|
|
|
72
73
|
export interface WorkerConfig {
|
|
73
74
|
/** Credential/pool identity. Multiple instances may intentionally share it. */
|
|
74
75
|
workerId: string;
|
|
76
|
+
/**
|
|
77
|
+
* Local file this process persists its gateway-assigned runtime routing ID to (see
|
|
78
|
+
* WorkerEvent.ASSIGNED_ID) — reused on the next boot so REATTACH still finds this
|
|
79
|
+
* replica's VMs after a real process restart, not just a socket reconnect. Every
|
|
80
|
+
* replica needs its own path (a container's own filesystem already gives it one by
|
|
81
|
+
* default; co-located processes on the same host must set distinct WORKER_ID_FILE).
|
|
82
|
+
*/
|
|
83
|
+
workerIdFile: string;
|
|
75
84
|
token?: string;
|
|
76
85
|
sandboxUrl: string;
|
|
77
86
|
workerSocketPath: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAG3D,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,wBAAwB,EAAE,MAAM,CAAA;IAChC,wBAAwB,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/console-relays.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Socket } from 'socket.io-client';
|
|
2
2
|
import type { MultiEngineExecutor } from './executor';
|
|
3
3
|
/**
|
|
4
|
-
* Wires up VNC and
|
|
5
|
-
* serial TCP ports; Firecracker: serial via process stdio pipe
|
|
6
|
-
*
|
|
7
|
-
* connections from the internet. Wraps
|
|
4
|
+
* Wires up VNC and terminal relays for any executor that exposes console endpoints (QEMU: VNC +
|
|
5
|
+
* serial TCP ports; Firecracker: serial via process stdio pipe; Lambda MicroVM: authenticated
|
|
6
|
+
* shell WebSocket). All media flows through the sandbox socket to browsers — the worker never
|
|
7
|
+
* accepts inbound connections from the internet. Wraps create/reattach/destroy in place.
|
|
8
8
|
*/
|
|
9
9
|
export declare function attachConsoleRelays(executor: MultiEngineExecutor, sandboxSocket: Socket): void;
|
|
10
10
|
//# sourceMappingURL=console-relays.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-relays.d.ts","sourceRoot":"","sources":["../src/console-relays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAIrD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"console-relays.d.ts","sourceRoot":"","sources":["../src/console-relays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAIrD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAkD9F"}
|
package/dist/executor/index.d.ts
CHANGED
|
@@ -17,9 +17,11 @@ export declare function findNotAttachedVms(executor: Pick<Executor, 'get'>, reco
|
|
|
17
17
|
export declare class MultiEngineExecutor implements Executor {
|
|
18
18
|
private readonly executors;
|
|
19
19
|
readonly defaultEngine: VmEngine;
|
|
20
|
+
private readonly creations;
|
|
20
21
|
constructor(executors: Map<VmEngine, Executor>, defaultEngine: VmEngine);
|
|
21
22
|
get engines(): VmEngine[];
|
|
22
23
|
create(spec: VmSpec): Promise<VmHandle>;
|
|
24
|
+
private createOnce;
|
|
23
25
|
pause(vmId: string): Promise<VmHandle>;
|
|
24
26
|
resume(vmId: string): Promise<VmHandle>;
|
|
25
27
|
stop(vmId: string): Promise<VmHandle>;
|
|
@@ -32,6 +34,8 @@ export declare class MultiEngineExecutor implements Executor {
|
|
|
32
34
|
exec(vmId: string, request: VmExecRequest): Promise<VmExecResult>;
|
|
33
35
|
writeFiles(vmId: string, files: VmFileWrite[]): Promise<VmWriteFilesResult>;
|
|
34
36
|
onExit(vmId: string, handler: (result: VmRunResult) => void): void;
|
|
37
|
+
/** Fans out to every sub-executor that supports it (currently just lambda-microvm). */
|
|
38
|
+
reconcile(): Promise<string[]>;
|
|
35
39
|
/**
|
|
36
40
|
* Recover VMs sandbox says this workerId owns but that aren't currently tracked (a worker
|
|
37
41
|
* restart, most likely). Runs in parallel — probing many VMs serially would needlessly
|
|
@@ -40,7 +44,14 @@ export declare class MultiEngineExecutor implements Executor {
|
|
|
40
44
|
* never thrown — a VM that can't be reattached just stays unavailable until something
|
|
41
45
|
* touches it again (create/proxy/lifecycle), which already errors gracefully today.
|
|
42
46
|
*/
|
|
43
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Returns vmIds found genuinely gone (executor.reattach resolved undefined — the
|
|
49
|
+
* resource itself no longer exists, e.g. AWS already terminated it while this worker
|
|
50
|
+
* was down) as distinct from any other reattach failure (engine unavailable, no reattach
|
|
51
|
+
* support, a transient describe error, ...), which leave the VM merely unavailable
|
|
52
|
+
* rather than confirmed gone.
|
|
53
|
+
*/
|
|
54
|
+
reattachAll(records: VmRecord[]): Promise<string[]>;
|
|
44
55
|
private route;
|
|
45
56
|
}
|
|
46
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAUvC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAUvC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKvE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC/B,OAAO,EAAE,QAAQ,EAAE,GAClB,QAAQ,EAAE,CAEZ;AA0BD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,QAAQ,CAAC,aAAa,EAAE,QAAQ;IAJlC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;gBAG9C,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC1C,aAAa,EAAE,QAAQ;IAGlC,IAAI,OAAO,IAAI,QAAQ,EAAE,CAExB;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAgB/B,UAAU;IAiBlB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAGvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAGrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAGxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIhG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQvC,IAAI,IAAI,QAAQ,EAAE;IAIlB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOjD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMjE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMjF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAMlE,uFAAuF;IACjF,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASpC;;;;;;;OAOG;IACH;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkCzD,OAAO,CAAC,KAAK;CAMd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,CAUxE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmStack } from '../vendor/builder-types/index';
|
|
2
|
-
import type { Executor, VmHandle, VmSpec } from './types';
|
|
2
|
+
import type { Executor, SerialSource, VmHandle, VmSpec } from './types';
|
|
3
3
|
export interface LambdaMicrovmConfig {
|
|
4
4
|
region?: string;
|
|
5
5
|
/** Default MicroVM image ARN, used for any stack without a specific image. */
|
|
@@ -20,8 +20,8 @@ export interface LambdaMicrovmConfig {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Runs VMs as AWS Lambda MicroVMs (Firecracker snapshots managed by Lambda).
|
|
23
|
-
* No VNC framebuffer or serial console — HTTP(S)
|
|
24
|
-
*
|
|
23
|
+
* No VNC framebuffer or native serial console — HTTP(S) and an authenticated shell
|
|
24
|
+
* WebSocket reach the guest through its dedicated endpoint. Suspend/resume preserve full
|
|
25
25
|
* memory + disk state, so pause/resume here is a true checkpoint, unlike QEMU's.
|
|
26
26
|
*
|
|
27
27
|
* Intentionally has no onExit(): unlike Fargate (whose ECS task actually stops when the
|
|
@@ -46,6 +46,7 @@ export declare class LambdaMicrovmExecutor implements Executor {
|
|
|
46
46
|
destroy(vmId: string): Promise<void>;
|
|
47
47
|
get(vmId: string): VmHandle | undefined;
|
|
48
48
|
list(): VmHandle[];
|
|
49
|
+
getSerialSource(vmId: string): SerialSource | undefined;
|
|
49
50
|
proxyHttp(vmId: string, request: ProxyRequestDescriptor): Promise<ProxyResponseDescriptor>;
|
|
50
51
|
/**
|
|
51
52
|
* Recover a Lambda MicroVM after a worker restart. It's an independent AWS-managed
|
|
@@ -53,6 +54,15 @@ export declare class LambdaMicrovmExecutor implements Executor {
|
|
|
53
54
|
* terminated, rebuild the local handle (the auth token refetches lazily as usual).
|
|
54
55
|
*/
|
|
55
56
|
reattach(record: VmRecord): Promise<VmHandle | undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* AWS can suspend or terminate a MicroVM on its own (idle-suspend policy, the suspended-
|
|
59
|
+
* duration cap, the hard maximumDurationInSeconds lifetime) without this process ever
|
|
60
|
+
* issuing a command — nothing else here polls for that. Called periodically by the
|
|
61
|
+
* worker: re-describes every tracked VM, quietly reconciles running/suspended drift, and
|
|
62
|
+
* reports (then forgets) any that AWS has actually terminated so the control plane's
|
|
63
|
+
* record doesn't stay stuck saying "running" forever.
|
|
64
|
+
*/
|
|
65
|
+
reconcile(): Promise<string[]>;
|
|
56
66
|
private mustGet;
|
|
57
67
|
private setRunning;
|
|
58
68
|
private getAuthHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-microvm-executor.d.ts","sourceRoot":"","sources":["../../src/executor/lambda-microvm-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-microvm-executor.d.ts","sourceRoot":"","sources":["../../src/executor/lambda-microvm-executor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,OAAO,EACR,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AA+BD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,QAAQ;IAIxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;gBAE3B,MAAM,EAAE,mBAAmB;IAIlD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2EvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ7C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIlC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IA4BjD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAyChG;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IA2B/D;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoCpC,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,cAAc;YAqBd,YAAY;CAgB3B"}
|
package/dist/executor/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ChildProcess } from 'child_process';
|
|
2
2
|
import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmEngine, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmResources, VmRunMode, VmRunResult, VmStack, VmWriteFilesResult } from '../vendor/builder-types/index';
|
|
3
|
-
/** Where a VM
|
|
3
|
+
/** Where a VM terminal can be reached: serial TCP, hypervisor stdio, or a remote shell WebSocket. */
|
|
4
4
|
export type SerialSource = {
|
|
5
5
|
type: 'tcp';
|
|
6
6
|
host: string;
|
|
@@ -8,6 +8,11 @@ export type SerialSource = {
|
|
|
8
8
|
} | {
|
|
9
9
|
type: 'pipe';
|
|
10
10
|
process: ChildProcess;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'websocket';
|
|
13
|
+
url: string;
|
|
14
|
+
/** Mint fresh, short-lived credentials for each connection attempt. */
|
|
15
|
+
protocols: () => Promise<string[]>;
|
|
11
16
|
};
|
|
12
17
|
export interface VmSpec {
|
|
13
18
|
vmId: string;
|
|
@@ -57,7 +62,7 @@ export interface Executor {
|
|
|
57
62
|
get(vmId: string): VmHandle | undefined;
|
|
58
63
|
list(): VmHandle[];
|
|
59
64
|
proxyHttp(vmId: string, request: ProxyRequestDescriptor): Promise<ProxyResponseDescriptor>;
|
|
60
|
-
/**
|
|
65
|
+
/** Terminal source for executors without a local serialPort (Firecracker pipe, Lambda shell WebSocket). */
|
|
61
66
|
getSerialSource?(vmId: string): SerialSource | undefined;
|
|
62
67
|
/** Run a shell command inside the VM workspace. Optional: executors without guest exec reject the command. */
|
|
63
68
|
exec?(vmId: string, request: VmExecRequest): Promise<VmExecResult>;
|
|
@@ -78,5 +83,14 @@ export interface Executor {
|
|
|
78
83
|
* — the caller never sends a separate destroy command for a job VM.
|
|
79
84
|
*/
|
|
80
85
|
onExit?(vmId: string, handler: (result: VmRunResult) => void): void;
|
|
86
|
+
/**
|
|
87
|
+
* Detect VMs whose underlying resource changed state outside any command this executor
|
|
88
|
+
* issued — e.g. AWS's own idle-suspend/max-duration policies terminating a Lambda
|
|
89
|
+
* MicroVM. Called periodically by the worker; returns the vmIds found gone so the caller
|
|
90
|
+
* can report them upstream (the control plane otherwise has no way to learn about it —
|
|
91
|
+
* see WorkerEvent.VM_EXTERNALLY_TERMINATED). Optional: engines whose VMs only ever change
|
|
92
|
+
* state via an explicit call from this process (QEMU, Firecracker, Docker, ...) don't need it.
|
|
93
|
+
*/
|
|
94
|
+
reconcile?(): Promise<string[]>;
|
|
81
95
|
}
|
|
82
96
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,OAAO,EACP,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executor/types.ts"],"names":[],"mappings":"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"}
|
package/dist/images.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExE,uFAAuF;AACvF,eAAO,MAAM,WAAW,uCAAwC,CAAA;AAChE,oGAAoG;AACpG,eAAO,MAAM,sBAAsB,kCAAmD,CAAA;AAEtF,kFAAkF;AAClF,wBAAgB,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExE,uFAAuF;AACvF,eAAO,MAAM,WAAW,uCAAwC,CAAA;AAChE,oGAAoG;AACpG,eAAO,MAAM,sBAAsB,kCAAmD,CAAA;AAEtF,kFAAkF;AAClF,wBAAgB,QAAQ,IAAI,MAAM,CASjC;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAmB,GAAG,MAAM,CAElE;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMxD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAE5D;AAED,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAqED,6GAA6G;AAC7G,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB7F;AAED,4GAA4G;AAC5G,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+B5F"}
|