@multiplayer-app/sandbox 6.0.0-sandbox-docker-image.0 → 7.0.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 (53) hide show
  1. package/README.md +63 -6
  2. package/dist/cli.js +1056 -152
  3. package/dist/cli.js.map +4 -4
  4. package/dist/config.d.ts +5 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/executor/detect.d.ts.map +1 -1
  7. package/dist/executor/docker-executor.d.ts +16 -2
  8. package/dist/executor/docker-executor.d.ts.map +1 -1
  9. package/dist/executor/docker-sandbox-executor.d.ts +13 -1
  10. package/dist/executor/docker-sandbox-executor.d.ts.map +1 -1
  11. package/dist/executor/env-encoding.d.ts +9 -0
  12. package/dist/executor/env-encoding.d.ts.map +1 -0
  13. package/dist/executor/fargate-executor.d.ts +13 -1
  14. package/dist/executor/fargate-executor.d.ts.map +1 -1
  15. package/dist/executor/firecracker-executor.d.ts +7 -1
  16. package/dist/executor/firecracker-executor.d.ts.map +1 -1
  17. package/dist/executor/index.d.ts +2 -1
  18. package/dist/executor/index.d.ts.map +1 -1
  19. package/dist/executor/lambda-microvm-executor.d.ts +9 -0
  20. package/dist/executor/lambda-microvm-executor.d.ts.map +1 -1
  21. package/dist/executor/mock-executor.d.ts +4 -1
  22. package/dist/executor/mock-executor.d.ts.map +1 -1
  23. package/dist/executor/qemu-executor.d.ts +7 -1
  24. package/dist/executor/qemu-executor.d.ts.map +1 -1
  25. package/dist/executor/remote-executor.d.ts +10 -1
  26. package/dist/executor/remote-executor.d.ts.map +1 -1
  27. package/dist/executor/types.d.ts +12 -1
  28. package/dist/executor/types.d.ts.map +1 -1
  29. package/dist/health-server.d.ts +10 -0
  30. package/dist/health-server.d.ts.map +1 -0
  31. package/dist/images.d.ts +2 -0
  32. package/dist/images.d.ts.map +1 -1
  33. package/dist/index.d.ts +3 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +991 -150
  36. package/dist/index.js.map +4 -4
  37. package/dist/prepare-images.d.ts +14 -0
  38. package/dist/prepare-images.d.ts.map +1 -0
  39. package/dist/services/serial-relay.d.ts.map +1 -1
  40. package/dist/services/vnc-relay.d.ts.map +1 -1
  41. package/dist/socket-client.d.ts.map +1 -1
  42. package/dist/vendor/builder-types/access.d.ts +1 -1
  43. package/dist/vendor/builder-types/deployment.d.ts +58 -0
  44. package/dist/vendor/builder-types/deployment.d.ts.map +1 -0
  45. package/dist/vendor/builder-types/events.d.ts +6 -1
  46. package/dist/vendor/builder-types/events.d.ts.map +1 -1
  47. package/dist/vendor/builder-types/index.d.ts +1 -0
  48. package/dist/vendor/builder-types/index.d.ts.map +1 -1
  49. package/dist/vendor/builder-types/release.d.ts +7 -3
  50. package/dist/vendor/builder-types/release.d.ts.map +1 -1
  51. package/dist/vendor/builder-types/vm.d.ts +28 -1
  52. package/dist/vendor/builder-types/vm.d.ts.map +1 -1
  53. package/package.json +6 -1
@@ -0,0 +1,14 @@
1
+ import type { WorkerConfig } from './config';
2
+ export declare function artifactImageLocation(env?: NodeJS.ProcessEnv): string | undefined;
3
+ /**
4
+ * Materialize remotely published images before engine detection.
5
+ *
6
+ * S3_BUCKET_ARTIFACTS is the artifact bucket name. The worker derives the
7
+ * environment/version and runner prefix; pullImages appends
8
+ * <arch>/<stack>/<file>.
9
+ * Registry-backed Docker images are pulled whenever the configured prefix is
10
+ * a qualified repository (contains a slash), while local development prefixes
11
+ * continue to require locally built images.
12
+ */
13
+ export declare function prepareWorkerImages(config: WorkerConfig, env?: NodeJS.ProcessEnv): Promise<void>;
14
+ //# sourceMappingURL=prepare-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-images.d.ts","sourceRoot":"","sources":["../src/prepare-images.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAU9F;AAyBD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -1 +1 @@
1
- {"version":3,"file":"serial-relay.d.ts","sourceRoot":"","sources":["../../src/services/serial-relay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,oEAAoE;AACpE,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,YAAY,CAAmD;gBAGpD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM;IAGjC,OAAO,IAAI,IAAI;IAmBf,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,WAAW;IAMnB,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"serial-relay.d.ts","sourceRoot":"","sources":["../../src/services/serial-relay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,oEAAoE;AACpE,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,YAAY,CAAmD;gBAGpD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM;IAGjC,OAAO,IAAI,IAAI;IAmBf,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,WAAW;IAUnB,OAAO,IAAI,IAAI;CAQhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"vnc-relay.d.ts","sourceRoot":"","sources":["../../src/services/vnc-relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAe9C,sFAAsF;AACtF,qBAAa,QAAQ;IAOjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,IAAI,CAAsD;IAClE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,UAAU,CAAiD;gBAGhD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;IAGjC,KAAK,IAAI,IAAI;IAwDb,OAAO,IAAI,IAAI;CAQhB"}
1
+ {"version":3,"file":"vnc-relay.d.ts","sourceRoot":"","sources":["../../src/services/vnc-relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAqB9C,sFAAsF;AACtF,qBAAa,QAAQ;IAOjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,IAAI,CAAsD;IAClE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,UAAU,CAAiD;gBAGhD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;IAGjC,KAAK,IAAI,IAAI;IA2Eb,OAAO,IAAI,IAAI;CAUhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../src/socket-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAYlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,MAAM,YAAY,CAAA;AAkF7D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAuD5F"}
1
+ {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../src/socket-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAYlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,MAAM,YAAY,CAAA;AAsH7D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA6F5F"}
@@ -17,7 +17,7 @@ export interface GatewayAccessUpdateRequest {
17
17
  * check resolve the *same* session by ID, so a mismatched prefix means each service reads a
18
18
  * different Redis key and the shared session silently stops working. The shared session
19
19
  * relies on the cookie reaching both services' hosts, which requires them to live under a
20
- * common registrable parent domain (AUTH_COOKIE_DOMAIN) — e.g. app.<domain> and
20
+ * common registrable parent domain (COOKIE_DOMAIN) — e.g. app.<domain> and
21
21
  * <id>.vm.<domain> sharing Domain=.<domain>. Browsers do NOT share cookies across
22
22
  * *.localhost, so local dev uses *.lvh.me (public DNS → 127.0.0.1) instead.
23
23
  */
@@ -0,0 +1,58 @@
1
+ import type { GatewayAccessConfig } from './access';
2
+ import type { VmCreateRequest, VmRecord, VmRunMode, VmState } from './vm';
3
+ /**
4
+ * A published app: a stable identity (`slug`) that owns a persistent gateway domain
5
+ * (`<slug>.apps.<domain>`) across redeploys. Everything else is exactly what a plain
6
+ * VmRecord already tracks (stack, resources, env, state, ...) — a deployment is just a
7
+ * VM instance with a slug and a place in that slug's history.
8
+ */
9
+ export interface DeploymentRecord extends VmRecord {
10
+ /**
11
+ * Stable, user-chosen identity shared by every instance created for the same app — this
12
+ * (not vmId) is what the gateway resolves to a domain and what redeploys keep. Exactly one
13
+ * record per slug has `active: true` at a time; older ones are kept as read-only history.
14
+ */
15
+ slug: string;
16
+ /** True for the instance currently owning `slug`'s domain/routing; false once superseded by a redeploy. */
17
+ active: boolean;
18
+ }
19
+ export interface DeploymentCreateRequest extends VmCreateRequest {
20
+ /** Stable identity for this app — DNS-label-safe, becomes `<slug>.apps.<domain>`. Immutable across redeploys. */
21
+ slug: string;
22
+ }
23
+ /** Keyed by slug (not vmId) — the gateway only ever needs "the active instance for this slug." */
24
+ export declare const DEPLOYMENT_REDIS_KEY_PREFIX = "deployment:";
25
+ /**
26
+ * Idle-liveness marker: the gateway SETEX's `<prefix><slug>` on every proxied request to a
27
+ * running 'service' deployment (TTL = DEPLOYMENT_IDLE_TIMEOUT_SECONDS); deployment-reaper.service.ts
28
+ * stops the instance once the key expires. Never touched for 'job' deployments — see
29
+ * deployment.service.ts's class doc comment.
30
+ */
31
+ export declare const DEPLOYMENT_ACTIVE_KEY_PREFIX = "deployment:active:";
32
+ export interface DeploymentRegistryEntry {
33
+ vmId: string;
34
+ workerId: string;
35
+ state: VmState;
36
+ /**
37
+ * Lets the gateway tell 'job' and 'service' deployments apart without a Mongo round trip:
38
+ * a 'job' always runs fresh (CGI-style) and never proxies a live request, while a 'service'
39
+ * only cold-starts on a state miss and otherwise gets the ordinary PROXY_HTTP treatment.
40
+ * See routes/proxy/proxy.ts.
41
+ */
42
+ runMode: VmRunMode;
43
+ access?: GatewayAccessConfig;
44
+ }
45
+ /**
46
+ * The gateway's own view of the HTTP request that triggered a cold start — only meaningful
47
+ * for `runMode: 'job'` deployments, where every hit runs the entrypoint fresh (CGI-style)
48
+ * and the request is what the script gets to react to. Ignored for 'service' deployments,
49
+ * which get the ordinary PROXY_HTTP treatment once running.
50
+ */
51
+ export interface DeploymentInvocationRequest {
52
+ method: string;
53
+ path: string;
54
+ headers: Record<string, string>;
55
+ /** Raw body, base64-encoded (may be binary) — empty/absent for bodyless requests. */
56
+ body?: string;
57
+ }
58
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,2GAA2G;IAC3G,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,iHAAiH;IACjH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,kGAAkG;AAClG,eAAO,MAAM,2BAA2B,gBAAgB,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,uBAAuB,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAA;CACd"}
@@ -1,7 +1,9 @@
1
- import type { VmAction } from './vm';
1
+ import type { VmAction, VmRunResult } from './vm';
2
2
  /** Events exchanged on the worker socket (sandbox side listens, worker side emits — and vice versa). */
3
3
  export declare const WorkerEvent: {
4
4
  readonly HEARTBEAT: "worker:heartbeat";
5
+ readonly VM_RUN_EXITED: "vm:run-exited";
6
+ readonly ASSIGNED_ID: "worker:assigned-id";
5
7
  readonly REATTACH: "worker:reattach";
6
8
  readonly VM_CREATE: "vm:create";
7
9
  readonly VM_PAUSE: "vm:pause";
@@ -77,4 +79,7 @@ export interface TerminalInputPayload {
77
79
  vmId: string;
78
80
  data: string;
79
81
  }
82
+ export interface VmRunExitedPayload extends VmRunResult {
83
+ vmId: string;
84
+ }
80
85
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAIpC,wGAAwG;AACxG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CAkCd,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAA;AAE5E,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKrD,CAAA;AAID,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;;;;CAaf,CAAA;AAIV,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAIjD,wGAAwG;AACxG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;CA0Cd,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAA;AAE5E,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKrD,CAAA;AAID,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;;;;CAaf,CAAA;AAIV,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,MAAM,CAAA;CACb"}
@@ -5,6 +5,7 @@ export type HealthStatus = {
5
5
  };
6
6
  export * from './worker';
7
7
  export * from './vm';
8
+ export * from './deployment';
8
9
  export * from './access';
9
10
  export * from './events';
10
11
  export * from './release';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,cAAc,UAAU,CAAA;AACxB,cAAc,MAAM,CAAA;AACpB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,cAAc,UAAU,CAAA;AACxB,cAAc,MAAM,CAAA;AACpB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -7,13 +7,14 @@ import type { GatewayAccessConfig } from './access';
7
7
  */
8
8
  export interface ReleaseRecord {
9
9
  releaseId: string;
10
+ tenantId: string;
10
11
  name: string;
11
12
  stack: VmStack;
12
13
  /** Object key of the artifact zip inside the releases bucket. */
13
14
  artifactKey: string;
14
15
  /**
15
16
  * True once the artifact has been extracted into individual objects under
16
- * releaseSitePrefix(releaseId) — only meaningful for stack "static", where the
17
+ * releasePrefix(tenantId, releaseId) — only meaningful for stack "static", where the
17
18
  * gateway serves those objects directly, with no VM involved.
18
19
  */
19
20
  published: boolean;
@@ -23,6 +24,8 @@ export interface ReleaseRecord {
23
24
  createdAt: string;
24
25
  updatedAt: string;
25
26
  }
27
+ /** S3 object key for a release archive. S3 keys intentionally do not start with "/". */
28
+ export declare function releaseArtifactKey(tenantId: string, releaseId: string): string;
26
29
  export interface ReleaseCreateRequest {
27
30
  name: string;
28
31
  stack: VmStack;
@@ -37,11 +40,12 @@ export interface ReleaseCreateResponse {
37
40
  /** Presigned PUT URL to upload the artifact zip; present when artifactKey was not supplied. */
38
41
  uploadUrl?: string;
39
42
  }
40
- /** S3 key prefix (no trailing slash) under which a static release's extracted files live. */
41
- export declare function releaseSitePrefix(releaseId: string): string;
43
+ /** S3 key prefix (no trailing slash) shared by a release archive and its extracted files. */
44
+ export declare function releasePrefix(tenantId: string, releaseId: string): string;
42
45
  export declare const RELEASE_REDIS_KEY_PREFIX = "release:";
43
46
  /** Mirrored into Redis on publish so the gateway can serve static releases without touching Mongo. */
44
47
  export interface ReleaseRegistryEntry {
48
+ tenantId: string;
45
49
  stack: VmStack;
46
50
  published: boolean;
47
51
  access?: GatewayAccessConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,aAAa,CAAA;IACtB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,eAAO,MAAM,wBAAwB,aAAa,CAAA;AAElD,sGAAsG;AACtG,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B"}
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,aAAa,CAAA;IACtB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,eAAO,MAAM,wBAAwB,aAAa,CAAA;AAElD,sGAAsG;AACtG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B"}
@@ -3,7 +3,14 @@ export declare const VM_STACKS: readonly ["generic", "node", "python", "static"]
3
3
  export type VmStack = (typeof VM_STACKS)[number];
4
4
  export declare const VM_ENGINES: readonly ["mock", "qemu", "firecracker", "docker", "docker-sandbox", "remote", "lambda-microvm", "fargate"];
5
5
  export type VmEngine = (typeof VM_ENGINES)[number];
6
- export type VmState = 'creating' | 'running' | 'pausing' | 'paused' | 'resuming' | 'stopping' | 'stopped' | 'restoring' | 'destroying' | 'error';
6
+ /** 'service': a persistent process the gateway proxies to. 'job': runs its entrypoint once and exits. */
7
+ export declare const VM_RUN_MODES: readonly ["service", "job"];
8
+ export type VmRunMode = (typeof VM_RUN_MODES)[number];
9
+ export type VmState = 'creating' | 'running' | 'pausing' | 'paused' | 'resuming' | 'stopping' | 'stopped' | 'restoring' | 'destroying' | 'error'
10
+ /** Job VM whose entrypoint exited with code 0. See VmRecord.result. */
11
+ | 'completed'
12
+ /** User-initiated teardown that keeps the record around (e.g. as deployment history) instead of deleting it. */
13
+ | 'destroyed';
7
14
  export declare const VM_ACTIONS: readonly ["pause", "resume", "stop", "restore"];
8
15
  export type VmAction = (typeof VM_ACTIONS)[number];
9
16
  export interface VmResources {
@@ -24,6 +31,12 @@ export interface VmRecord {
24
31
  access?: GatewayAccessConfig;
25
32
  resources: VmResources;
26
33
  state: VmState;
34
+ /** 'service' (default) for a persistent proxied process, 'job' for a run-once script. */
35
+ runMode: VmRunMode;
36
+ /** Custom environment variables for the guest entrypoint. */
37
+ env?: Record<string, string>;
38
+ /** Set once a 'job' VM's entrypoint exits (state becomes 'completed' or 'error'). */
39
+ result?: VmRunResult;
27
40
  /**
28
41
  * Opaque, engine-specific data an executor needs to reattach to this VM after a worker
29
42
  * restart (e.g. a QEMU QMP socket path, a Fargate task ARN). Sandbox stores it as-is and
@@ -41,6 +54,10 @@ export interface VmCreateRequest {
41
54
  engine?: VmEngine;
42
55
  /** Release to deploy into the VM: the guest pulls the artifact (presigned URL), unzips, and starts it. */
43
56
  releaseId?: string;
57
+ /** 'service' (default) keeps the entrypoint running and proxied; 'job' runs it once and exits. */
58
+ runMode?: VmRunMode;
59
+ /** Custom environment variables for the guest entrypoint. */
60
+ env?: Record<string, string>;
44
61
  resources?: Partial<VmResources>;
45
62
  }
46
63
  export interface VmExecRequest {
@@ -61,6 +78,16 @@ export interface VmExecResult {
61
78
  /** True when the command was killed by the timeout. */
62
79
  timedOut: boolean;
63
80
  }
81
+ /** Outcome of a 'job' VM's entrypoint running to completion. */
82
+ export interface VmRunResult {
83
+ exitCode: number;
84
+ stdout: string;
85
+ stderr: string;
86
+ /** True when stdout/stderr were cut at the executor's output cap. */
87
+ truncated: boolean;
88
+ durationMs: number;
89
+ finishedAt: string;
90
+ }
64
91
  export interface VmFileWrite {
65
92
  /** Path relative to the VM workspace root (no leading slash, no traversal). */
66
93
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../src/vm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,eAAO,MAAM,SAAS,kDAAmD,CAAA;AACzE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhD,eAAO,MAAM,UAAU,6GAA8G,CAAA;AACrI,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,OAAO,GACf,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,GACV,UAAU,GACV,SAAS,GACT,WAAW,GACX,YAAY,GACZ,OAAO,CAAA;AAEX,eAAO,MAAM,UAAU,iDAAkD,CAAA;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,wFAAwF;IACxF,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,WAAW,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,oFAAoF;IACpF,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAA;IAClB,uDAAuD;IACvD,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa;IAC5D,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,mBAAmB,QAAQ,CAAA;AAExC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B"}
1
+ {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../src/vm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplayer-app/sandbox",
3
- "version": "6.0.0-sandbox-docker-image.0",
3
+ "version": "7.0.0",
4
4
  "description": "Sandbox worker library and CLI (Docker, QEMU, Firecracker, AWS Lambda MicroVM, Fargate)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,18 +35,23 @@
35
35
  "devDependencies": {
36
36
  "@types/node": "^25.8.0",
37
37
  "esbuild": "^0.25.12",
38
+ "nodemon": "3.1.14",
38
39
  "typescript": "^6.0.3",
39
40
  "@multiplayer-app/builder-types": "0.0.1",
40
41
  "@multiplayer-app/logger": "0.0.1"
41
42
  },
42
43
  "scripts": {
43
44
  "build": "tsc --build --force && node scripts/bundle.mjs",
45
+ "dev": "nodemon --watch src --watch scripts/bundle.mjs --watch package.json --ext ts,mjs,json --exec \"pnpm run build && pnpm run worker:start\"",
44
46
  "clean": "rm -rf ./dist tsconfig.tsbuildinfo",
45
47
  "typecheck": "tsc --noEmit",
46
48
  "lint": "eslint src/**/*.ts --config ../../eslint.config.js",
47
49
  "images:build": "bash scripts/build-base-images.sh",
50
+ "images:publish:local": "bash scripts/publish-base-images-local.sh",
51
+ "images:upload:local": "SKIP_BUILD=1 bash scripts/publish-base-images-local.sh",
48
52
  "docker:build": "docker build -f Dockerfile -t multiplayer-sandbox-worker:local ../..",
49
53
  "start": "node dist/cli.js",
54
+ "worker:start": "node dist/cli.js start",
50
55
  "test": "tsc --build --force && node --test 'dist/**/*.test.js'",
51
56
  "postversion": "git commit -m \"sandbox v$npm_package_version\" -- package.json && git tag \"sandbox-v$npm_package_version\" && git push && git push --tags"
52
57
  }