@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
package/dist/config.d.ts CHANGED
@@ -70,11 +70,15 @@ export interface FargateWorkerConfig {
70
70
  startTimeoutMs: number;
71
71
  }
72
72
  export interface WorkerConfig {
73
+ /** Credential/pool identity. Multiple instances may intentionally share it. */
73
74
  workerId: string;
74
- token: string;
75
+ token?: string;
75
76
  sandboxUrl: string;
76
77
  workerSocketPath: string;
77
78
  maxVms: number;
79
+ healthHost: string;
80
+ healthPort: number;
81
+ healthPathPrefix: string;
78
82
  region?: string;
79
83
  remote: RemoteWorkerConfig;
80
84
  firecracker: FirecrackerWorkerConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/executor/detect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAK7C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAyID,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAWhE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAAC,aAAa,EAAE,QAAQ,CAAA;CAAE,CAcpG"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/executor/detect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAc7C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkMD,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAWhE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG;IACnD,OAAO,EAAE,QAAQ,EAAE,CAAA;IACnB,aAAa,EAAE,QAAQ,CAAA;CACxB,CAcA"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmWriteFilesResult } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmRunResult, VmWriteFilesResult } from '../vendor/builder-types/index';
2
2
  import type { DockerWorkerConfig } from '../config';
3
3
  import type { Executor, VmHandle, VmSpec } from './types';
4
4
  /**
@@ -18,13 +18,25 @@ export declare class DockerExecutor implements Executor {
18
18
  private readonly vms;
19
19
  private readonly usedPorts;
20
20
  private readonly bin;
21
+ /** Job VMs that exited before onExit() was called to claim the result (create() → onExit() isn't atomic). */
22
+ private readonly pendingResults;
23
+ private readonly exitHandlers;
21
24
  constructor(config: DockerWorkerConfig);
22
25
  private allocatePort;
23
26
  private resolveImage;
24
27
  private imageExists;
25
28
  create(spec: VmSpec): Promise<VmHandle>;
26
- /** Frees the allocated port once the container exits on its own (crash, OOM kill, `docker stop` from outside us). */
29
+ /**
30
+ * For 'service' VMs: frees the allocated port once the container exits on its own (crash,
31
+ * OOM kill, `docker stop` from outside us) — same as before.
32
+ * For 'job' VMs: captures the exit code + logs, tears the container down, and reports the
33
+ * result to whoever calls onExit() (immediately if they already have, otherwise once they do).
34
+ */
27
35
  private watchExit;
36
+ private deliverJobResult;
37
+ /** `docker logs` mirrors the container's stdout/stderr onto its own, so the CLI's streams stay separate. */
38
+ private captureLogs;
39
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
28
40
  pause(vmId: string): Promise<VmHandle>;
29
41
  resume(vmId: string): Promise<VmHandle>;
30
42
  stop(vmId: string): Promise<VmHandle>;
@@ -37,6 +49,8 @@ export declare class DockerExecutor implements Executor {
37
49
  * Docker daemon owns, so just re-inspect it by ID and rebuild the local handle.
38
50
  */
39
51
  reattach(record: VmRecord): Promise<VmHandle | undefined>;
52
+ /** Same capture-and-report sequence as watchExit's job branch, for a container found already stopped. */
53
+ private finishExitedJob;
40
54
  proxyHttp(vmId: string, request: ProxyRequestDescriptor): Promise<ProxyResponseDescriptor>;
41
55
  exec(vmId: string, request: VmExecRequest): Promise<VmExecResult>;
42
56
  writeFiles(vmId: string, files: VmFileWrite[]): Promise<VmWriteFilesResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"docker-executor.d.ts","sourceRoot":"","sources":["../../src/executor/docker-executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AA0BzD;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAKjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEC,MAAM,EAAE,kBAAkB;IAIvD,OAAO,CAAC,YAAY;YAON,YAAY;YAcZ,WAAW;IASnB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6C7C,qHAAqH;IACrH,OAAO,CAAC,SAAS;IAWX,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAmCzD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2B1F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BjE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuBjF,oGAAoG;IACpG,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,YAAY;CAgB3B"}
1
+ {"version":3,"file":"docker-executor.d.ts","sourceRoot":"","sources":["../../src/executor/docker-executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EAER,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AA4BzD;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAQjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,6GAA6G;IAC7G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;gBAEnD,MAAM,EAAE,kBAAkB;IAIvD,OAAO,CAAC,YAAY;YAUN,YAAY;YAgBZ,WAAW;IASnB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+D7C;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,gBAAgB;IAWxB,4GAA4G;YAC9F,WAAW;IAsBzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAW5D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAkD/D,yGAAyG;YAC3F,eAAe;IA+BvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoC1F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCjE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiCjF,oGAAoG;IACpG,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,YAAY;CAoB3B"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmWriteFilesResult } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmRunResult, VmWriteFilesResult } from '../vendor/builder-types/index';
2
2
  import type { DockerSandboxWorkerConfig } from '../config';
3
3
  import type { Executor, VmHandle, VmSpec } from './types';
4
4
  /**
@@ -26,6 +26,8 @@ export declare class DockerSandboxExecutor implements Executor {
26
26
  private readonly usedPorts;
27
27
  private readonly loadedTemplates;
28
28
  private readonly bin;
29
+ private readonly pendingResults;
30
+ private readonly exitHandlers;
29
31
  constructor(config: DockerSandboxWorkerConfig);
30
32
  private allocatePort;
31
33
  private resolveAgentCommand;
@@ -34,6 +36,16 @@ export declare class DockerSandboxExecutor implements Executor {
34
36
  /** Bridges the local docker image into sbx's own image store once per process; returns its ref. */
35
37
  private ensureTemplateLoaded;
36
38
  create(spec: VmSpec): Promise<VmHandle>;
39
+ /**
40
+ * Job mode: unlike `launchAgent` (fire-and-forget `sbx exec -d`, used for persistent
41
+ * services), run the entrypoint in the *foreground* — the CLI call itself blocks until the
42
+ * command exits and hands back its exit code + captured stdout/stderr directly, so there's
43
+ * no separate wait/logs step needed the way DockerExecutor needs for a backgrounded container.
44
+ */
45
+ private runJob;
46
+ private finishJob;
47
+ private deliverJobResult;
48
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
37
49
  /**
38
50
  * `sbx create shell` doesn't run the image's own CMD — launch the guest agent explicitly.
39
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"docker-sandbox-executor.d.ts","sourceRoot":"","sources":["../../src/executor/docker-sandbox-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAiCzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,qBAAsB,YAAW,QAAQ;IAMxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEC,MAAM,EAAE,yBAAyB;IAI9D,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,mBAAmB;IAI3B,kGAAkG;IAClG,OAAO,CAAC,aAAa;IAKrB,mGAAmG;YACrF,oBAAoB;IAsB5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+C7C;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAQb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IASxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAwCzD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2B1F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BjE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+BjF,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,UAAU;YAWV,YAAY;CAQ3B"}
1
+ {"version":3,"file":"docker-sandbox-executor.d.ts","sourceRoot":"","sources":["../../src/executor/docker-sandbox-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EAER,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAmCzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,qBAAsB,YAAW,QAAQ;IAQxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;gBAEnD,MAAM,EAAE,yBAAyB;IAI9D,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,mBAAmB;IAQ3B,kGAAkG;IAClG,OAAO,CAAC,aAAa;IAKrB,mGAAmG;YACrF,oBAAoB;IAwB5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuE7C;;;;;OAKG;IACH,OAAO,CAAC,MAAM;YAsBA,SAAS;IAiBvB,OAAO,CAAC,gBAAgB;IAWxB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAWlE;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAcb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IASxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAyDzD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoC1F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCjE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgDjF,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,UAAU;YAcV,YAAY;CAS3B"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Encodes a custom env var map into the single kernel-cmdline param QEMU/Firecracker guests
3
+ * decode at boot (see the `ENV_B64=*` case in scripts/setup-vm-images.sh's init script).
4
+ * The cmdline is space-delimited with no quoting, so raw `KEY=value with spaces` pairs can't
5
+ * go directly on it (same reason APP_URL is base64-encoded as APP_URL_B64) — instead the
6
+ * whole map is newline-joined and base64'd into one opaque param.
7
+ */
8
+ export declare function encodeEnvB64(env: Record<string, string> | undefined): string | undefined;
9
+ //# sourceMappingURL=env-encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-encoding.d.ts","sourceRoot":"","sources":["../../src/executor/env-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxF"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmStack } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmRunResult, VmStack } from '../vendor/builder-types/index';
2
2
  import type { Executor, VmHandle, VmSpec } from './types';
3
3
  export interface FargateConfig {
4
4
  region?: string;
@@ -37,6 +37,8 @@ export declare class FargateExecutor implements Executor {
37
37
  private readonly client;
38
38
  private readonly vms;
39
39
  private readonly containerNames;
40
+ private readonly pendingResults;
41
+ private readonly exitHandlers;
40
42
  constructor(config: FargateConfig);
41
43
  /** First container of the task definition — the target for env overrides. Cached per definition. */
42
44
  private resolveContainerName;
@@ -57,6 +59,16 @@ export declare class FargateExecutor implements Executor {
57
59
  * rebuild the local handle.
58
60
  */
59
61
  reattach(record: VmRecord): Promise<VmHandle | undefined>;
62
+ /**
63
+ * No push notification exists for "task stopped" without EventBridge wiring (v1 doesn't set
64
+ * that up), so poll DescribeTasks. Exit code comes straight from the container's own
65
+ * `exitCode` field — no CloudWatch Logs integration yet, so stdout/stderr capture isn't
66
+ * implemented for this engine (the caller can still find full output in CloudWatch directly,
67
+ * via the task's own log configuration).
68
+ */
69
+ private watchJob;
70
+ private finishJob;
71
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
60
72
  private mustGet;
61
73
  }
62
74
  //# sourceMappingURL=fargate-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fargate-executor.d.ts","sourceRoot":"","sources":["../../src/executor/fargate-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAiBD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOnG;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAKlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;gBAE9B,MAAM,EAAE,aAAa;IAIlD,oGAAoG;YACtF,oBAAoB;YAWpB,cAAc;YA4Bd,eAAe;IAYvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwEvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IASrC,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;IAIZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiChG;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IA4B/D,OAAO,CAAC,OAAO;CAKhB"}
1
+ {"version":3,"file":"fargate-executor.d.ts","sourceRoot":"","sources":["../../src/executor/fargate-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EAER,WAAW,EACX,OAAO,EACR,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAIzD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAmBD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOjC;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAOlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;gBAEnD,MAAM,EAAE,aAAa;IAIlD,oGAAoG;YACtF,oBAAoB;YAWpB,cAAc;YAiCd,eAAe;IAgBvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkFvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAarC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoChG;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAmC/D;;;;;;OAMG;YACW,QAAQ;IA0CtB,OAAO,CAAC,SAAS;IAiBjB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAWlE,OAAO,CAAC,OAAO;CAKhB"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmRunResult } from '../vendor/builder-types/index';
2
2
  import type { Executor, SerialSource, VmHandle, VmSpec } from './types';
3
3
  export interface FirecrackerConfig {
4
4
  bin?: string;
@@ -13,6 +13,8 @@ export declare class FirecrackerExecutor implements Executor {
13
13
  private readonly config;
14
14
  private readonly vms;
15
15
  private readonly usedSubnets;
16
+ private readonly pendingResults;
17
+ private readonly exitHandlers;
16
18
  private tapCounter;
17
19
  private readonly bin;
18
20
  private readonly vmDataPath;
@@ -23,6 +25,10 @@ export declare class FirecrackerExecutor implements Executor {
23
25
  /** Explicit kernel/initrd override wins; otherwise the stack's base image, falling back to generic. */
24
26
  private resolveImages;
25
27
  create(spec: VmSpec): Promise<VmHandle>;
28
+ /** Scrapes JOB_EXIT_SENTINEL out of the buffered serial stdout and reports the result. */
29
+ private reportJobResult;
30
+ private deliverJobResult;
31
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
26
32
  pause(vmId: string): Promise<VmHandle>;
27
33
  resume(vmId: string): Promise<VmHandle>;
28
34
  stop(vmId: string): Promise<VmHandle>;
@@ -1 +1 @@
1
- {"version":3,"file":"firecracker-executor.d.ts","sourceRoot":"","sources":["../../src/executor/firecracker-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAE/G,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKvE,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0GAA0G;IAC1G,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAeD,qBAAa,mBAAoB,YAAW,QAAQ;IAQtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,YAAY,CAAQ;gBAEC,MAAM,EAAE,iBAAiB;IAKtD,OAAO,CAAC,cAAc;YAWR,gBAAgB;IAY9B,uGAAuG;IACvG,OAAO,CAAC,aAAa;IAaf,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqFvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IASvD,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAyCzD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAiClF,YAAY;IAM1B,OAAO,CAAC,UAAU;CAMnB"}
1
+ {"version":3,"file":"firecracker-executor.d.ts","sourceRoot":"","sources":["../../src/executor/firecracker-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EAER,WAAW,EACZ,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAUvE,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0GAA0G;IAC1G,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAmBD,qBAAa,mBAAoB,YAAW,QAAQ;IAUtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;IAChF,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,YAAY,CAAQ;gBAEC,MAAM,EAAE,iBAAiB;IAKtD,OAAO,CAAC,cAAc;YAWR,gBAAgB;IAc9B,uGAAuG;IACvG,OAAO,CAAC,aAAa;IAgBf,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwH7C,0FAA0F;IAC1F,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAWxB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAW5D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IASvD,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAyDzD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAoClF,YAAY;IAM1B,OAAO,CAAC,UAAU;CAMnB"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmEngine, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmWriteFilesResult } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmEngine, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmRunResult, VmWriteFilesResult } from '../vendor/builder-types/index';
2
2
  import type { Executor, SerialSource, VmHandle, VmSpec } from './types';
3
3
  import type { WorkerConfig } from '../config';
4
4
  export type { Executor, SerialSource, VmHandle, VmSpec } from './types';
@@ -31,6 +31,7 @@ export declare class MultiEngineExecutor implements Executor {
31
31
  getSerialSource(vmId: string): SerialSource | undefined;
32
32
  exec(vmId: string, request: VmExecRequest): Promise<VmExecResult>;
33
33
  writeFiles(vmId: string, files: VmFileWrite[]): Promise<VmWriteFilesResult>;
34
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
34
35
  /**
35
36
  * Recover VMs sandbox says this workerId owns but that aren't currently tracked (a worker
36
37
  * restart, most likely). Runs in parallel — probing many VMs serially would needlessly
@@ -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,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;AAEvE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAEnG;AA0BD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,QAAQ,CAAC,aAAa,EAAE,QAAQ;gBADf,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;IAU7C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAI1F,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQvC,IAAI,IAAI,QAAQ,EAAE;IAIlB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOvD,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;IAM3E;;;;;;;OAOG;IACG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrD,OAAO,CAAC,KAAK;CAMd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,CAUxE"}
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;AAEvE;;;;;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;IAEhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,QAAQ,CAAC,aAAa,EAAE,QAAQ;gBADf,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;IAY7C,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;IAI1F,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQvC,IAAI,IAAI,QAAQ,EAAE;IAIlB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOvD,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;IAO3E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAMlE;;;;;;;OAOG;IACG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD,OAAO,CAAC,KAAK;CAMd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,CAUxE"}
@@ -23,6 +23,15 @@ export interface LambdaMicrovmConfig {
23
23
  * No VNC framebuffer or serial console — HTTP(S) into the guest only, via the
24
24
  * MicroVM's dedicated endpoint with JWE auth. Suspend/resume preserve full
25
25
  * memory + disk state, so pause/resume here is a true checkpoint, unlike QEMU's.
26
+ *
27
+ * Intentionally has no onExit(): unlike Fargate (whose ECS task actually stops when the
28
+ * container's process exits) or QEMU/Firecracker (a guest poweroff kills the local hypervisor
29
+ * process we spawned), a MicroVM's AWS-managed lifecycle has no state that reflects "the
30
+ * guest's own entrypoint finished" — it only transitions via explicit suspend/resume/terminate
31
+ * calls or the idle/duration policies above. 'job' run mode isn't supported on this engine
32
+ * until the guest image itself can signal completion back out (e.g. call TerminateMicrovm on
33
+ * itself, or a callback through the existing HTTP proxy path) — MultiEngineExecutor.onExit()
34
+ * already surfaces a clear "does not support job run mode" error for this engine as-is.
26
35
  */
27
36
  export declare class LambdaMicrovmExecutor implements Executor {
28
37
  private readonly config;
@@ -1 +1 @@
1
- {"version":3,"file":"lambda-microvm-executor.d.ts","sourceRoot":"","sources":["../../src/executor/lambda-microvm-executor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEzD,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;AAYD;;;;;GAKG;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;IA4DvC,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;IAIZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAsChG;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAwB/D,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,cAAc;YAqBd,YAAY;CAc3B"}
1
+ {"version":3,"file":"lambda-microvm-executor.d.ts","sourceRoot":"","sources":["../../src/executor/lambda-microvm-executor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,OAAO,EACR,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEzD,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;AAYD;;;;;;;;;;;;;;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;IAoEvC,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;IAIZ,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,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;YAMJ,cAAc;YAqBd,YAAY;CAgB3B"}
@@ -1,8 +1,11 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmWriteFilesResult } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmExecRequest, VmExecResult, VmFileWrite, VmRunResult, VmWriteFilesResult } from '../vendor/builder-types/index';
2
2
  import type { Executor, VmHandle, VmSpec } from './types';
3
3
  export declare class MockExecutor implements Executor {
4
4
  private readonly vms;
5
+ private readonly exitHandlers;
5
6
  create(spec: VmSpec): Promise<VmHandle>;
7
+ /** No real process to watch — just synthesize a successful run shortly after create(). */
8
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
6
9
  pause(vmId: string): Promise<VmHandle>;
7
10
  resume(vmId: string): Promise<VmHandle>;
8
11
  stop(vmId: string): Promise<VmHandle>;
@@ -1 +1 @@
1
- {"version":3,"file":"mock-executor.d.ts","sourceRoot":"","sources":["../../src/executor/mock-executor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAiEzD,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IAE7C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiC1F,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmB3E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiCvE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;CAOnB"}
1
+ {"version":3,"file":"mock-executor.d.ts","sourceRoot":"","sources":["../../src/executor/mock-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,WAAW,EAEX,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AA8EzD,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;IAE1E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmB7C,0FAA0F;IAC1F,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAuB5D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoC1F,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqB3E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAmCvE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;CAOnB"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmRunResult } from '../vendor/builder-types/index';
2
2
  import type { Executor, VmHandle, VmSpec } from './types';
3
3
  export interface QemuConfig {
4
4
  bin?: string;
@@ -19,6 +19,8 @@ export interface QemuConfig {
19
19
  export declare class QemuExecutor implements Executor {
20
20
  private readonly config;
21
21
  private readonly vms;
22
+ private readonly pendingResults;
23
+ private readonly exitHandlers;
22
24
  private readonly usedHttpPorts;
23
25
  private readonly usedDisplays;
24
26
  private readonly usedSerialPorts;
@@ -38,6 +40,10 @@ export declare class QemuExecutor implements Executor {
38
40
  /** Explicit kernel/initrd override wins; otherwise the stack's base image, falling back to generic. */
39
41
  private resolveImages;
40
42
  create(spec: VmSpec): Promise<VmHandle>;
43
+ /** Scrapes JOB_EXIT_SENTINEL out of the buffered serial console and reports the result. */
44
+ private reportJobResult;
45
+ private deliverJobResult;
46
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
41
47
  pause(vmId: string): Promise<VmHandle>;
42
48
  resume(vmId: string): Promise<VmHandle>;
43
49
  stop(vmId: string): Promise<VmHandle>;
@@ -1 +1 @@
1
- {"version":3,"file":"qemu-executor.d.ts","sourceRoot":"","sources":["../../src/executor/qemu-executor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAE/G,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGzD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAcD,qBAAa,YAAa,YAAW,QAAQ;IAe/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEH,MAAM,EAAE,UAAU;IAY/C,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,kBAAkB;IAO1B,uGAAuG;IACvG,OAAO,CAAC,aAAa;IAaf,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6EvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAyC/D,OAAO,CAAC,MAAM;IAKR,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA4BhG,OAAO,CAAC,UAAU;YAOJ,GAAG;CAKlB"}
1
+ {"version":3,"file":"qemu-executor.d.ts","sourceRoot":"","sources":["../../src/executor/qemu-executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord } from '../vendor/builder-types/index';
1
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmRecord, VmRunResult } from '../vendor/builder-types/index';
2
2
  import type { Executor, VmHandle, VmSpec } from './types';
3
3
  export interface RemoteExecutorConfig {
4
4
  agentUrl: string;
@@ -8,8 +8,17 @@ export declare class RemoteExecutor implements Executor {
8
8
  private readonly base;
9
9
  private readonly headers;
10
10
  private readonly vms;
11
+ private readonly jobStartedAt;
11
12
  constructor(config: RemoteExecutorConfig);
12
13
  create(spec: VmSpec): Promise<VmHandle>;
14
+ /**
15
+ * The remote agent's own wire protocol (VmHandle) has no exit-code/output field — extending
16
+ * it is out of this repo's control, so this only detects completion (poll GET /vms/:vmId
17
+ * until running flips false) without a real exit code or captured output. Good enough to
18
+ * unblock the record from being stuck in 'running' forever; a real RemoteExecutor deployment
19
+ * wanting full job support needs its agent protocol extended first.
20
+ */
21
+ onExit(vmId: string, handler: (result: VmRunResult) => void): void;
13
22
  pause(vmId: string): Promise<VmHandle>;
14
23
  resume(vmId: string): Promise<VmHandle>;
15
24
  stop(vmId: string): Promise<VmHandle>;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-executor.d.ts","sourceRoot":"","sources":["../../src/executor/remote-executor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC/G,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAIhD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;gBAEtC,MAAM,EAAE,oBAAoB;IAQlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAU/D,OAAO,CAAC,YAAY;IAKd,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmBhG,OAAO,CAAC,OAAO;CAuChB"}
1
+ {"version":3,"file":"remote-executor.d.ts","sourceRoot":"","sources":["../../src/executor/remote-executor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,WAAW,EACZ,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAIhD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;gBAE7C,MAAM,EAAE,oBAAoB;IAQlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO7C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAyB5D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,QAAQ,EAAE;IAIlB;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAU/D,OAAO,CAAC,YAAY;IAKd,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmBhG,OAAO,CAAC,OAAO;CA2ChB"}
@@ -1,5 +1,5 @@
1
1
  import type { ChildProcess } from 'child_process';
2
- import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmEngine, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmResources, VmStack, VmWriteFilesResult } from '../vendor/builder-types/index';
2
+ import type { ProxyRequestDescriptor, ProxyResponseDescriptor, VmEngine, VmExecRequest, VmExecResult, VmFileWrite, VmRecord, VmResources, VmRunMode, VmRunResult, VmStack, VmWriteFilesResult } from '../vendor/builder-types/index';
3
3
  /** Where a VM's serial console can be reached: a TCP port (QEMU) or the hypervisor process stdio (Firecracker). */
4
4
  export type SerialSource = {
5
5
  type: 'tcp';
@@ -17,6 +17,10 @@ export interface VmSpec {
17
17
  engine?: VmEngine;
18
18
  /** Presigned URL of a release artifact zip; the guest pulls, unzips, and starts it at boot. */
19
19
  appUrl?: string;
20
+ /** 'service' (default) keeps the entrypoint running; 'job' runs it once and exits. */
21
+ runMode?: VmRunMode;
22
+ /** Custom environment variables for the guest entrypoint. */
23
+ env?: Record<string, string>;
20
24
  resources: VmResources;
21
25
  }
22
26
  export interface VmHandle {
@@ -67,5 +71,12 @@ export interface Executor {
67
71
  * Optional: engines with nothing durable to reattach to (Mock) omit it entirely.
68
72
  */
69
73
  reattach?(record: VmRecord): Promise<VmHandle | undefined>;
74
+ /**
75
+ * Register a one-shot callback for a 'job' VM's natural exit. Only called (once, right
76
+ * after `create()`) when `spec.runMode === 'job'`. The executor is responsible for both
77
+ * detecting the exit and tearing its own compute resource down *before* invoking `handler`
78
+ * — the caller never sends a separate destroy command for a job VM.
79
+ */
80
+ onExit?(vmId: string, handler: (result: VmRunResult) => void): void;
70
81
  }
71
82
  //# 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,OAAO,EACP,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,mHAAmH;AACnH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAA;AAEhH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,qEAAqE;IACrE,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,SAAS,EAAE,WAAW,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IACvC,IAAI,IAAI,QAAQ,EAAE,CAAA;IAClB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC1F,yHAAyH;IACzH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAA;IACxD,8GAA8G;IAC9G,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClE,2GAA2G;IAC3G,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC5E;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;CAC3D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executor/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Server } from 'http';
2
+ export interface SandboxHealthServerOptions {
3
+ host: string;
4
+ port: number;
5
+ pathPrefix: string;
6
+ isReady: () => boolean;
7
+ }
8
+ /** Local probe server under API_PREFIX: /healthz is liveness; /health is readiness. */
9
+ export declare function startSandboxHealthServer(options: SandboxHealthServerOptions): Promise<Server>;
10
+ //# sourceMappingURL=health-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-server.d.ts","sourceRoot":"","sources":["../src/health-server.ts"],"names":[],"mappings":"AAAA,OAAa,EAAwB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAA;AAEnF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,OAAO,CAAA;CACvB;AAED,uFAAuF;AACvF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
package/dist/images.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type VmStack } from './vendor/builder-types/index';
2
2
  /** Files that make up one stack's base image (built by scripts/setup-vm-images.sh). */
3
3
  export declare const IMAGE_FILES: readonly ["vmlinuz", "initramfs.img"];
4
+ /** Stacks included in the published base-image catalog; `generic` remains a local fallback only. */
5
+ export declare const PUBLISHED_IMAGE_STACKS: ("node" | "python" | "static")[];
4
6
  /** Normalize Node's process.arch to the uname-style names used in image paths. */
5
7
  export declare function hostArch(): string;
6
8
  /** Default local image directory — the same location scripts/setup-vm-images.sh writes to. */
@@ -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;AAEhE,kFAAkF;AAClF,wBAAgB,QAAQ,IAAI,MAAM,CAMjC;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAmB,GAAG,MAAM,CAElE;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI3H;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;AAyCD,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,CA6B5F"}
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,CAMjC;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAmB,GAAG,MAAM,CAElE;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI3H;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;AAyCD,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,CA6B5F"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,10 @@ export type { EngineProbe } from './executor/detect';
6
6
  export { probeEngines, detectEngines } from './executor/detect';
7
7
  export { connectToSandbox } from './socket-client';
8
8
  export { attachConsoleRelays } from './console-relays';
9
+ export { startSandboxHealthServer } from './health-server';
10
+ export type { SandboxHealthServerOptions } from './health-server';
9
11
  export { VncRelay } from './services/vnc-relay';
10
12
  export { SerialRelay } from './services/serial-relay';
11
- export { IMAGE_FILES, hostArch, defaultImagesDir, resolveStackImages, availableStacks, pullImages, pushImages, } from './images';
13
+ export { IMAGE_FILES, PUBLISHED_IMAGE_STACKS, hostArch, defaultImagesDir, resolveStackImages, availableStacks, pullImages, pushImages, } from './images';
12
14
  export type { ImageSourceOptions } from './images';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAElE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAElE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,YAAY,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA"}