kurtosis-sdk 0.49.5

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 (69) hide show
  1. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_pb.d.ts +110 -0
  2. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_pb.js +581 -0
  3. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_web_pb.d.ts +236 -0
  4. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_web_pb.js +1174 -0
  5. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_pb.d.ts +918 -0
  6. package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_pb.js +7616 -0
  7. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_pb.d.ts +30 -0
  8. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_pb.js +70 -0
  9. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_web_pb.d.ts +44 -0
  10. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_web_pb.js +198 -0
  11. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_pb.d.ts +41 -0
  12. package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_pb.js +324 -0
  13. package/build/core/lib/constructor_calls.d.ts +33 -0
  14. package/build/core/lib/constructor_calls.js +328 -0
  15. package/build/core/lib/enclaves/enclave_context.d.ts +39 -0
  16. package/build/core/lib/enclaves/enclave_context.js +501 -0
  17. package/build/core/lib/enclaves/generic_api_container_client.d.ts +23 -0
  18. package/build/core/lib/enclaves/generic_api_container_client.js +6 -0
  19. package/build/core/lib/enclaves/generic_path_joiner.d.ts +3 -0
  20. package/build/core/lib/enclaves/generic_path_joiner.js +6 -0
  21. package/build/core/lib/enclaves/generic_tgz_archiver.d.ts +4 -0
  22. package/build/core/lib/enclaves/generic_tgz_archiver.js +2 -0
  23. package/build/core/lib/enclaves/grpc_node_api_container_client.d.ts +29 -0
  24. package/build/core/lib/enclaves/grpc_node_api_container_client.js +415 -0
  25. package/build/core/lib/enclaves/grpc_web_api_container_client.d.ts +28 -0
  26. package/build/core/lib/enclaves/grpc_web_api_container_client.js +415 -0
  27. package/build/core/lib/enclaves/node_tgz_archiver.d.ts +6 -0
  28. package/build/core/lib/enclaves/node_tgz_archiver.js +94 -0
  29. package/build/core/lib/enclaves/partition_connection.d.ts +20 -0
  30. package/build/core/lib/enclaves/partition_connection.js +62 -0
  31. package/build/core/lib/enclaves/template_and_data.d.ts +5 -0
  32. package/build/core/lib/enclaves/template_and_data.js +11 -0
  33. package/build/core/lib/enclaves/web_tgz_archiver.d.ts +5 -0
  34. package/build/core/lib/enclaves/web_tgz_archiver.js +26 -0
  35. package/build/core/lib/modules/module_context.d.ts +9 -0
  36. package/build/core/lib/modules/module_context.js +34 -0
  37. package/build/core/lib/services/container_config.d.ts +39 -0
  38. package/build/core/lib/services/container_config.js +85 -0
  39. package/build/core/lib/services/port_spec.d.ts +11 -0
  40. package/build/core/lib/services/port_spec.js +16 -0
  41. package/build/core/lib/services/service.d.ts +1 -0
  42. package/build/core/lib/services/service.js +6 -0
  43. package/build/core/lib/services/service_context.d.ts +19 -0
  44. package/build/core/lib/services/service_context.js +58 -0
  45. package/build/core/module_launch_api/args_io.d.ts +4 -0
  46. package/build/core/module_launch_api/args_io.js +60 -0
  47. package/build/core/module_launch_api/module_container_args.d.ts +8 -0
  48. package/build/core/module_launch_api/module_container_args.js +24 -0
  49. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_pb.d.ts +50 -0
  50. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_pb.js +186 -0
  51. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_web_pb.d.ts +92 -0
  52. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_web_pb.js +442 -0
  53. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_pb.d.ts +267 -0
  54. package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_pb.js +2141 -0
  55. package/build/engine/lib/constructor_calls.d.ts +5 -0
  56. package/build/engine/lib/constructor_calls.js +34 -0
  57. package/build/engine/lib/kurtosis_context/generic_engine_client.d.ts +10 -0
  58. package/build/engine/lib/kurtosis_context/generic_engine_client.js +2 -0
  59. package/build/engine/lib/kurtosis_context/grpc_node_engine_client.d.ts +14 -0
  60. package/build/engine/lib/kurtosis_context/grpc_node_engine_client.js +165 -0
  61. package/build/engine/lib/kurtosis_context/grpc_web_engine_client.d.ts +14 -0
  62. package/build/engine/lib/kurtosis_context/grpc_web_engine_client.js +165 -0
  63. package/build/engine/lib/kurtosis_context/kurtosis_context.d.ts +19 -0
  64. package/build/engine/lib/kurtosis_context/kurtosis_context.js +236 -0
  65. package/build/index.d.ts +19 -0
  66. package/build/index.js +55 -0
  67. package/build/kurtosis_version/kurtosis_version.d.ts +1 -0
  68. package/build/kurtosis_version/kurtosis_version.js +8 -0
  69. package/package.json +59 -0
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ModuleContext = void 0;
13
+ const neverthrow_1 = require("neverthrow");
14
+ const constructor_calls_1 = require("../constructor_calls");
15
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
16
+ class ModuleContext {
17
+ constructor(client, moduleId) {
18
+ this.moduleId = moduleId;
19
+ this.client = client;
20
+ }
21
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
22
+ execute(serializedParams) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const executeModuleArgs = (0, constructor_calls_1.newExecuteModuleArgs)(this.moduleId, serializedParams);
25
+ const executeResponseResult = yield this.client.executeModule(executeModuleArgs);
26
+ if (executeResponseResult.isErr()) {
27
+ return (0, neverthrow_1.err)(executeResponseResult.error);
28
+ }
29
+ const executeResponse = executeResponseResult.value;
30
+ return (0, neverthrow_1.ok)(executeResponse.getSerializedResult());
31
+ });
32
+ }
33
+ }
34
+ exports.ModuleContext = ModuleContext;
@@ -0,0 +1,39 @@
1
+ import { PortSpec } from "./port_spec";
2
+ export declare type FilesArtifactUUID = string;
3
+ export declare class ContainerConfig {
4
+ readonly image: string;
5
+ readonly usedPorts: Map<string, PortSpec>;
6
+ readonly publicPorts: Map<string, PortSpec>;
7
+ readonly filesArtifactMountpoints: Map<FilesArtifactUUID, string>;
8
+ readonly entrypointOverrideArgs: string[];
9
+ readonly cmdOverrideArgs: string[];
10
+ readonly environmentVariableOverrides: Map<string, string>;
11
+ readonly cpuAllocationMillicpus: number;
12
+ readonly memoryAllocationMegabytes: number;
13
+ readonly privateIPAddrPlaceholder: string;
14
+ constructor(image: string, usedPorts: Map<string, PortSpec>, publicPorts: Map<string, PortSpec>, //TODO this is a huge hack to temporarily enable static ports for NEAR until we have a more productized solution
15
+ filesArtifactMountpoints: Map<FilesArtifactUUID, string>, entrypointOverrideArgs: string[], cmdOverrideArgs: string[], environmentVariableOverrides: Map<string, string>, cpuAllocationMillicpus: number, memoryAllocationMegabytes: number, privateIPAddrPlaceholder: string);
16
+ }
17
+ export declare class ContainerConfigBuilder {
18
+ private readonly image;
19
+ private usedPorts;
20
+ private publicPorts;
21
+ private filesArtifactMountpoints;
22
+ private entrypointOverrideArgs;
23
+ private cmdOverrideArgs;
24
+ private environmentVariableOverrides;
25
+ private cpuAllocationMillicpus;
26
+ private memoryAllocationMegabytes;
27
+ private privateIPAddrPlaceholder;
28
+ constructor(image: string);
29
+ withUsedPorts(usedPorts: Map<string, PortSpec>): ContainerConfigBuilder;
30
+ withFiles(filesArtifactMountpoints: Map<FilesArtifactUUID, string>): ContainerConfigBuilder;
31
+ withEntrypointOverride(args: string[]): ContainerConfigBuilder;
32
+ withCmdOverride(args: string[]): ContainerConfigBuilder;
33
+ withEnvironmentVariableOverrides(envVars: Map<string, string>): ContainerConfigBuilder;
34
+ withPublicPorts(publicPorts: Map<string, PortSpec>): ContainerConfigBuilder;
35
+ withCpuAllocationMillicpus(cpuAllocationMillicpus: number): ContainerConfigBuilder;
36
+ withMemoryAllocationMegabytes(memoryAllocationMegabytes: number): ContainerConfigBuilder;
37
+ withPrivateIPAddrPlaceholder(privateIPAddrPlaceholder: string): ContainerConfigBuilder;
38
+ build(): ContainerConfig;
39
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContainerConfigBuilder = exports.ContainerConfig = void 0;
4
+ const DEFAULT_PRIVATE_IP_ADDR_PLACEHOLDER = "KURTOSIS_PRIVATE_IP_ADDR_PLACEHOLDER";
5
+ // ====================================================================================================
6
+ // Config Object
7
+ // ====================================================================================================
8
+ // TODO defensive copy when we're giving back complex objects?????
9
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
10
+ class ContainerConfig {
11
+ constructor(image, usedPorts, publicPorts, //TODO this is a huge hack to temporarily enable static ports for NEAR until we have a more productized solution
12
+ filesArtifactMountpoints, entrypointOverrideArgs, cmdOverrideArgs, environmentVariableOverrides, cpuAllocationMillicpus, memoryAllocationMegabytes, privateIPAddrPlaceholder) {
13
+ this.image = image;
14
+ this.usedPorts = usedPorts;
15
+ this.publicPorts = publicPorts;
16
+ this.filesArtifactMountpoints = filesArtifactMountpoints;
17
+ this.entrypointOverrideArgs = entrypointOverrideArgs;
18
+ this.cmdOverrideArgs = cmdOverrideArgs;
19
+ this.environmentVariableOverrides = environmentVariableOverrides;
20
+ this.cpuAllocationMillicpus = cpuAllocationMillicpus;
21
+ this.memoryAllocationMegabytes = memoryAllocationMegabytes;
22
+ this.privateIPAddrPlaceholder = privateIPAddrPlaceholder;
23
+ }
24
+ }
25
+ exports.ContainerConfig = ContainerConfig;
26
+ // ====================================================================================================
27
+ // Builder
28
+ // ====================================================================================================
29
+ // TODO Defensive copies on all these With... functions???
30
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
31
+ class ContainerConfigBuilder {
32
+ constructor(image) {
33
+ this.image = image;
34
+ this.usedPorts = new Map();
35
+ this.filesArtifactMountpoints = new Map();
36
+ this.entrypointOverrideArgs = [];
37
+ this.cmdOverrideArgs = [];
38
+ this.environmentVariableOverrides = new Map();
39
+ this.publicPorts = new Map(); //TODO this is a huge hack to temporarily enable static ports for NEAR until we have a more productized solution
40
+ this.cpuAllocationMillicpus = 0;
41
+ this.memoryAllocationMegabytes = 0;
42
+ this.privateIPAddrPlaceholder = DEFAULT_PRIVATE_IP_ADDR_PLACEHOLDER;
43
+ }
44
+ withUsedPorts(usedPorts) {
45
+ this.usedPorts = usedPorts;
46
+ return this;
47
+ }
48
+ withFiles(filesArtifactMountpoints) {
49
+ this.filesArtifactMountpoints = filesArtifactMountpoints;
50
+ return this;
51
+ }
52
+ withEntrypointOverride(args) {
53
+ this.entrypointOverrideArgs = args;
54
+ return this;
55
+ }
56
+ withCmdOverride(args) {
57
+ this.cmdOverrideArgs = args;
58
+ return this;
59
+ }
60
+ withEnvironmentVariableOverrides(envVars) {
61
+ this.environmentVariableOverrides = envVars;
62
+ return this;
63
+ }
64
+ //TODO this is a huge hack to temporarily enable static ports for NEAR until we have a more productized solution
65
+ withPublicPorts(publicPorts) {
66
+ this.publicPorts = publicPorts;
67
+ return this;
68
+ }
69
+ withCpuAllocationMillicpus(cpuAllocationMillicpus) {
70
+ this.cpuAllocationMillicpus = cpuAllocationMillicpus;
71
+ return this;
72
+ }
73
+ withMemoryAllocationMegabytes(memoryAllocationMegabytes) {
74
+ this.memoryAllocationMegabytes = memoryAllocationMegabytes;
75
+ return this;
76
+ }
77
+ withPrivateIPAddrPlaceholder(privateIPAddrPlaceholder) {
78
+ this.privateIPAddrPlaceholder = privateIPAddrPlaceholder;
79
+ return this;
80
+ }
81
+ build() {
82
+ return new ContainerConfig(this.image, this.usedPorts, this.publicPorts, this.filesArtifactMountpoints, this.entrypointOverrideArgs, this.cmdOverrideArgs, this.environmentVariableOverrides, this.cpuAllocationMillicpus, this.memoryAllocationMegabytes, this.privateIPAddrPlaceholder);
83
+ }
84
+ }
85
+ exports.ContainerConfigBuilder = ContainerConfigBuilder;
@@ -0,0 +1,11 @@
1
+ import { Port } from "../../kurtosis_core_rpc_api_bindings/api_container_service_pb";
2
+ export declare type PortProtocol = Port.Protocol;
3
+ export declare namespace PortProtocol {
4
+ const TCP = Port.Protocol.TCP;
5
+ const UDP = Port.Protocol.UDP;
6
+ }
7
+ export declare class PortSpec {
8
+ readonly number: number;
9
+ readonly protocol: PortProtocol;
10
+ constructor(number: number, protocol: PortProtocol);
11
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortSpec = exports.PortProtocol = void 0;
4
+ const api_container_service_pb_1 = require("../../kurtosis_core_rpc_api_bindings/api_container_service_pb");
5
+ var PortProtocol;
6
+ (function (PortProtocol) {
7
+ PortProtocol.TCP = api_container_service_pb_1.Port.Protocol.TCP;
8
+ PortProtocol.UDP = api_container_service_pb_1.Port.Protocol.UDP;
9
+ })(PortProtocol = exports.PortProtocol || (exports.PortProtocol = {}));
10
+ class PortSpec {
11
+ constructor(number, protocol) {
12
+ this.number = number;
13
+ this.protocol = protocol;
14
+ }
15
+ }
16
+ exports.PortSpec = PortSpec;
@@ -0,0 +1 @@
1
+ export declare type ServiceID = string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2020 - present Kurtosis Technologies LLC.
4
+ * All Rights Reserved.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ import { Result } from 'neverthrow';
2
+ import type { PortSpec } from './port_spec';
3
+ import type { ServiceID } from './service';
4
+ import { GenericApiContainerClient } from '../enclaves/generic_api_container_client';
5
+ export declare class ServiceContext {
6
+ private readonly client;
7
+ private readonly serviceId;
8
+ private readonly privateIpAddress;
9
+ private readonly privatePorts;
10
+ private readonly publicIpAddress;
11
+ private readonly publicPorts;
12
+ constructor(client: GenericApiContainerClient, serviceId: ServiceID, privateIpAddress: string, privatePorts: Map<string, PortSpec>, publicIpAddress: string, publicPorts: Map<string, PortSpec>);
13
+ getServiceID(): ServiceID;
14
+ getPrivateIPAddress(): string;
15
+ getPrivatePorts(): Map<string, PortSpec>;
16
+ getMaybePublicIPAddress(): string;
17
+ getPublicPorts(): Map<string, PortSpec>;
18
+ execCommand(command: string[]): Promise<Result<[number, string], Error>>;
19
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ServiceContext = void 0;
13
+ const neverthrow_1 = require("neverthrow");
14
+ const constructor_calls_1 = require("../constructor_calls");
15
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
16
+ class ServiceContext {
17
+ constructor(client, serviceId, privateIpAddress, privatePorts, publicIpAddress, publicPorts) {
18
+ this.client = client;
19
+ this.serviceId = serviceId;
20
+ this.privateIpAddress = privateIpAddress;
21
+ this.privatePorts = privatePorts;
22
+ this.publicIpAddress = publicIpAddress;
23
+ this.publicPorts = publicPorts;
24
+ }
25
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
26
+ getServiceID() {
27
+ return this.serviceId;
28
+ }
29
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
30
+ getPrivateIPAddress() {
31
+ return this.privateIpAddress;
32
+ }
33
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
34
+ getPrivatePorts() {
35
+ return this.privatePorts;
36
+ }
37
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
38
+ getMaybePublicIPAddress() {
39
+ return this.publicIpAddress;
40
+ }
41
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
42
+ getPublicPorts() {
43
+ return this.publicPorts;
44
+ }
45
+ // Docs available at https://docs.kurtosistech.com/kurtosis-core/lib-documentation
46
+ execCommand(command) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const execCommandArgs = (0, constructor_calls_1.newExecCommandArgs)(this.serviceId, command);
49
+ const execCommandResponseResult = yield this.client.execCommand(execCommandArgs);
50
+ if (execCommandResponseResult.isErr()) {
51
+ return (0, neverthrow_1.err)(execCommandResponseResult.error);
52
+ }
53
+ const execCommandResponse = execCommandResponseResult.value;
54
+ return (0, neverthrow_1.ok)([execCommandResponse.getExitCode(), execCommandResponse.getLogOutput()]);
55
+ });
56
+ }
57
+ }
58
+ exports.ServiceContext = ServiceContext;
@@ -0,0 +1,4 @@
1
+ import { Result } from "neverthrow";
2
+ import { ModuleContainerArgs } from "./module_container_args";
3
+ export declare function getEnvFromArgs(args: ModuleContainerArgs): Result<Map<string, string>, Error>;
4
+ export declare function getArgsFromEnv(): Result<ModuleContainerArgs, Error>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getArgsFromEnv = exports.getEnvFromArgs = void 0;
4
+ const loglevel_1 = require("loglevel");
5
+ const neverthrow_1 = require("neverthrow");
6
+ // All module containers accept exactly one environment variable, which contains the serialized params that
7
+ // dictate how the module container ought to behave
8
+ const SERIALIZED_ARGS_ENV_VAR = "SERIALIZED_ARGS";
9
+ const JAVASCRIPT_STRING_VAR_TYPE = "string";
10
+ const safeJsonParse = neverthrow_1.Result.fromThrowable(JSON.parse, (value) => {
11
+ if (value instanceof Error) {
12
+ return value;
13
+ }
14
+ return new Error("Received an unknown exception value that wasn't an error: " + value);
15
+ });
16
+ // Intended to be used when starting the container - gets the environment variables that the container should be started with
17
+ function getEnvFromArgs(args) {
18
+ let argsStr;
19
+ try {
20
+ argsStr = JSON.stringify(args);
21
+ }
22
+ catch (jsonErr) {
23
+ // Sadly, we have to do this because there's no great way to enforce the caught thing being an error
24
+ // See: https://stackoverflow.com/questions/30469261/checking-for-typeof-error-in-js
25
+ if (jsonErr && jsonErr.stack && jsonErr.message) {
26
+ return (0, neverthrow_1.err)(jsonErr);
27
+ }
28
+ return (0, neverthrow_1.err)(new Error("Stringify-ing ModuleContainerArgs object threw an exception, but " +
29
+ "it's not an Error so we can't report any more information than this"));
30
+ }
31
+ const result = new Map();
32
+ result.set(SERIALIZED_ARGS_ENV_VAR, argsStr);
33
+ return (0, neverthrow_1.ok)(result);
34
+ }
35
+ exports.getEnvFromArgs = getEnvFromArgs;
36
+ function getArgsFromEnv() {
37
+ const serializedParamsStr = process.env[SERIALIZED_ARGS_ENV_VAR];
38
+ if (serializedParamsStr === undefined) {
39
+ return (0, neverthrow_1.err)(new Error(`No serialized args variable '${SERIALIZED_ARGS_ENV_VAR}' defined`));
40
+ }
41
+ if (serializedParamsStr === "") {
42
+ return (0, neverthrow_1.err)(new Error(`Found serialized args environment variable '${SERIALIZED_ARGS_ENV_VAR}', but the value was empty`));
43
+ }
44
+ const deserializationResult = safeJsonParse(serializedParamsStr);
45
+ if (deserializationResult.isErr()) {
46
+ // TODO Replace with a stacktrace.Propagate equivalent
47
+ loglevel_1.default.error(`An error occurred deserializing the args JSON '${serializedParamsStr}'`);
48
+ return (0, neverthrow_1.err)(deserializationResult.error);
49
+ }
50
+ const args = deserializationResult.value;
51
+ // Generic validation based on field type
52
+ for (let [key, value] of Object.entries(args)) {
53
+ // Ensure no empty strings
54
+ if (typeof value === JAVASCRIPT_STRING_VAR_TYPE && value.trim() === "") {
55
+ return (0, neverthrow_1.err)(new Error(`JSON field '${key}' is whitespace or empty string`));
56
+ }
57
+ }
58
+ return (0, neverthrow_1.ok)(args);
59
+ }
60
+ exports.getArgsFromEnv = getArgsFromEnv;
@@ -0,0 +1,8 @@
1
+ export declare class ModuleContainerArgs {
2
+ readonly enclaveId: string;
3
+ readonly listenPortNum: number;
4
+ readonly apiContainerSocket: string;
5
+ readonly serializedCustomParams: string;
6
+ readonly enclaveDataDirMountpoint: string;
7
+ constructor(enclaveId: string, listenPortNum: number, apiContainerSocket: string, serializedCustomParams: string, enclaveDataDirMountpoint: string);
8
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleContainerArgs = void 0;
4
+ class ModuleContainerArgs {
5
+ constructor(
6
+ // The ID of the enclave that the module will run inside
7
+ enclaveId,
8
+ // The port number that the module should listen on
9
+ listenPortNum,
10
+ // IP:port of the Kurtosis API container
11
+ apiContainerSocket,
12
+ // Arbitrary serialized data that the module can consume at startup to modify its behaviour
13
+ // Analogous to the "constructor"
14
+ serializedCustomParams,
15
+ // The location on the module container where the enclave data directory has been mounted during launch
16
+ enclaveDataDirMountpoint) {
17
+ this.enclaveId = enclaveId;
18
+ this.listenPortNum = listenPortNum;
19
+ this.apiContainerSocket = apiContainerSocket;
20
+ this.serializedCustomParams = serializedCustomParams;
21
+ this.enclaveDataDirMountpoint = enclaveDataDirMountpoint;
22
+ }
23
+ }
24
+ exports.ModuleContainerArgs = ModuleContainerArgs;
@@ -0,0 +1,50 @@
1
+ // GENERATED CODE -- DO NOT EDIT!
2
+
3
+ // package: engine_api
4
+ // file: engine_service.proto
5
+
6
+ import * as engine_service_pb from "./engine_service_pb";
7
+ import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
8
+ import * as grpc from "@grpc/grpc-js";
9
+
10
+ interface IEngineServiceService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
11
+ getEngineInfo: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, engine_service_pb.GetEngineInfoResponse>;
12
+ createEnclave: grpc.MethodDefinition<engine_service_pb.CreateEnclaveArgs, engine_service_pb.CreateEnclaveResponse>;
13
+ getEnclaves: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, engine_service_pb.GetEnclavesResponse>;
14
+ stopEnclave: grpc.MethodDefinition<engine_service_pb.StopEnclaveArgs, google_protobuf_empty_pb.Empty>;
15
+ destroyEnclave: grpc.MethodDefinition<engine_service_pb.DestroyEnclaveArgs, google_protobuf_empty_pb.Empty>;
16
+ clean: grpc.MethodDefinition<engine_service_pb.CleanArgs, engine_service_pb.CleanResponse>;
17
+ }
18
+
19
+ export const EngineServiceService: IEngineServiceService;
20
+
21
+ export interface IEngineServiceServer extends grpc.UntypedServiceImplementation {
22
+ getEngineInfo: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, engine_service_pb.GetEngineInfoResponse>;
23
+ createEnclave: grpc.handleUnaryCall<engine_service_pb.CreateEnclaveArgs, engine_service_pb.CreateEnclaveResponse>;
24
+ getEnclaves: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, engine_service_pb.GetEnclavesResponse>;
25
+ stopEnclave: grpc.handleUnaryCall<engine_service_pb.StopEnclaveArgs, google_protobuf_empty_pb.Empty>;
26
+ destroyEnclave: grpc.handleUnaryCall<engine_service_pb.DestroyEnclaveArgs, google_protobuf_empty_pb.Empty>;
27
+ clean: grpc.handleUnaryCall<engine_service_pb.CleanArgs, engine_service_pb.CleanResponse>;
28
+ }
29
+
30
+ export class EngineServiceClient extends grpc.Client {
31
+ constructor(address: string, credentials: grpc.ChannelCredentials, options?: object);
32
+ getEngineInfo(argument: google_protobuf_empty_pb.Empty, callback: grpc.requestCallback<engine_service_pb.GetEngineInfoResponse>): grpc.ClientUnaryCall;
33
+ getEngineInfo(argument: google_protobuf_empty_pb.Empty, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.GetEngineInfoResponse>): grpc.ClientUnaryCall;
34
+ getEngineInfo(argument: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.GetEngineInfoResponse>): grpc.ClientUnaryCall;
35
+ createEnclave(argument: engine_service_pb.CreateEnclaveArgs, callback: grpc.requestCallback<engine_service_pb.CreateEnclaveResponse>): grpc.ClientUnaryCall;
36
+ createEnclave(argument: engine_service_pb.CreateEnclaveArgs, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.CreateEnclaveResponse>): grpc.ClientUnaryCall;
37
+ createEnclave(argument: engine_service_pb.CreateEnclaveArgs, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.CreateEnclaveResponse>): grpc.ClientUnaryCall;
38
+ getEnclaves(argument: google_protobuf_empty_pb.Empty, callback: grpc.requestCallback<engine_service_pb.GetEnclavesResponse>): grpc.ClientUnaryCall;
39
+ getEnclaves(argument: google_protobuf_empty_pb.Empty, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.GetEnclavesResponse>): grpc.ClientUnaryCall;
40
+ getEnclaves(argument: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.GetEnclavesResponse>): grpc.ClientUnaryCall;
41
+ stopEnclave(argument: engine_service_pb.StopEnclaveArgs, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
42
+ stopEnclave(argument: engine_service_pb.StopEnclaveArgs, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
43
+ stopEnclave(argument: engine_service_pb.StopEnclaveArgs, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
44
+ destroyEnclave(argument: engine_service_pb.DestroyEnclaveArgs, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
45
+ destroyEnclave(argument: engine_service_pb.DestroyEnclaveArgs, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
46
+ destroyEnclave(argument: engine_service_pb.DestroyEnclaveArgs, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
47
+ clean(argument: engine_service_pb.CleanArgs, callback: grpc.requestCallback<engine_service_pb.CleanResponse>): grpc.ClientUnaryCall;
48
+ clean(argument: engine_service_pb.CleanArgs, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.CleanResponse>): grpc.ClientUnaryCall;
49
+ clean(argument: engine_service_pb.CleanArgs, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<engine_service_pb.CleanResponse>): grpc.ClientUnaryCall;
50
+ }
@@ -0,0 +1,186 @@
1
+ // GENERATED CODE -- DO NOT EDIT!
2
+
3
+ 'use strict';
4
+ var grpc = require('@grpc/grpc-js');
5
+ var engine_service_pb = require('./engine_service_pb.js');
6
+ var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
7
+
8
+ function serialize_engine_api_CleanArgs(arg) {
9
+ if (!(arg instanceof engine_service_pb.CleanArgs)) {
10
+ throw new Error('Expected argument of type engine_api.CleanArgs');
11
+ }
12
+ return Buffer.from(arg.serializeBinary());
13
+ }
14
+
15
+ function deserialize_engine_api_CleanArgs(buffer_arg) {
16
+ return engine_service_pb.CleanArgs.deserializeBinary(new Uint8Array(buffer_arg));
17
+ }
18
+
19
+ function serialize_engine_api_CleanResponse(arg) {
20
+ if (!(arg instanceof engine_service_pb.CleanResponse)) {
21
+ throw new Error('Expected argument of type engine_api.CleanResponse');
22
+ }
23
+ return Buffer.from(arg.serializeBinary());
24
+ }
25
+
26
+ function deserialize_engine_api_CleanResponse(buffer_arg) {
27
+ return engine_service_pb.CleanResponse.deserializeBinary(new Uint8Array(buffer_arg));
28
+ }
29
+
30
+ function serialize_engine_api_CreateEnclaveArgs(arg) {
31
+ if (!(arg instanceof engine_service_pb.CreateEnclaveArgs)) {
32
+ throw new Error('Expected argument of type engine_api.CreateEnclaveArgs');
33
+ }
34
+ return Buffer.from(arg.serializeBinary());
35
+ }
36
+
37
+ function deserialize_engine_api_CreateEnclaveArgs(buffer_arg) {
38
+ return engine_service_pb.CreateEnclaveArgs.deserializeBinary(new Uint8Array(buffer_arg));
39
+ }
40
+
41
+ function serialize_engine_api_CreateEnclaveResponse(arg) {
42
+ if (!(arg instanceof engine_service_pb.CreateEnclaveResponse)) {
43
+ throw new Error('Expected argument of type engine_api.CreateEnclaveResponse');
44
+ }
45
+ return Buffer.from(arg.serializeBinary());
46
+ }
47
+
48
+ function deserialize_engine_api_CreateEnclaveResponse(buffer_arg) {
49
+ return engine_service_pb.CreateEnclaveResponse.deserializeBinary(new Uint8Array(buffer_arg));
50
+ }
51
+
52
+ function serialize_engine_api_DestroyEnclaveArgs(arg) {
53
+ if (!(arg instanceof engine_service_pb.DestroyEnclaveArgs)) {
54
+ throw new Error('Expected argument of type engine_api.DestroyEnclaveArgs');
55
+ }
56
+ return Buffer.from(arg.serializeBinary());
57
+ }
58
+
59
+ function deserialize_engine_api_DestroyEnclaveArgs(buffer_arg) {
60
+ return engine_service_pb.DestroyEnclaveArgs.deserializeBinary(new Uint8Array(buffer_arg));
61
+ }
62
+
63
+ function serialize_engine_api_GetEnclavesResponse(arg) {
64
+ if (!(arg instanceof engine_service_pb.GetEnclavesResponse)) {
65
+ throw new Error('Expected argument of type engine_api.GetEnclavesResponse');
66
+ }
67
+ return Buffer.from(arg.serializeBinary());
68
+ }
69
+
70
+ function deserialize_engine_api_GetEnclavesResponse(buffer_arg) {
71
+ return engine_service_pb.GetEnclavesResponse.deserializeBinary(new Uint8Array(buffer_arg));
72
+ }
73
+
74
+ function serialize_engine_api_GetEngineInfoResponse(arg) {
75
+ if (!(arg instanceof engine_service_pb.GetEngineInfoResponse)) {
76
+ throw new Error('Expected argument of type engine_api.GetEngineInfoResponse');
77
+ }
78
+ return Buffer.from(arg.serializeBinary());
79
+ }
80
+
81
+ function deserialize_engine_api_GetEngineInfoResponse(buffer_arg) {
82
+ return engine_service_pb.GetEngineInfoResponse.deserializeBinary(new Uint8Array(buffer_arg));
83
+ }
84
+
85
+ function serialize_engine_api_StopEnclaveArgs(arg) {
86
+ if (!(arg instanceof engine_service_pb.StopEnclaveArgs)) {
87
+ throw new Error('Expected argument of type engine_api.StopEnclaveArgs');
88
+ }
89
+ return Buffer.from(arg.serializeBinary());
90
+ }
91
+
92
+ function deserialize_engine_api_StopEnclaveArgs(buffer_arg) {
93
+ return engine_service_pb.StopEnclaveArgs.deserializeBinary(new Uint8Array(buffer_arg));
94
+ }
95
+
96
+ function serialize_google_protobuf_Empty(arg) {
97
+ if (!(arg instanceof google_protobuf_empty_pb.Empty)) {
98
+ throw new Error('Expected argument of type google.protobuf.Empty');
99
+ }
100
+ return Buffer.from(arg.serializeBinary());
101
+ }
102
+
103
+ function deserialize_google_protobuf_Empty(buffer_arg) {
104
+ return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));
105
+ }
106
+
107
+
108
+ var EngineServiceService = exports.EngineServiceService = {
109
+ // Endpoint for getting information about the engine, which is also what we use to verify that the engine has become available
110
+ getEngineInfo: {
111
+ path: '/engine_api.EngineService/GetEngineInfo',
112
+ requestStream: false,
113
+ responseStream: false,
114
+ requestType: google_protobuf_empty_pb.Empty,
115
+ responseType: engine_service_pb.GetEngineInfoResponse,
116
+ requestSerialize: serialize_google_protobuf_Empty,
117
+ requestDeserialize: deserialize_google_protobuf_Empty,
118
+ responseSerialize: serialize_engine_api_GetEngineInfoResponse,
119
+ responseDeserialize: deserialize_engine_api_GetEngineInfoResponse,
120
+ },
121
+ // ==============================================================================================
122
+ // Enclave Management
123
+ // ==============================================================================================
124
+ // Creates a new Kurtosis Enclave
125
+ createEnclave: {
126
+ path: '/engine_api.EngineService/CreateEnclave',
127
+ requestStream: false,
128
+ responseStream: false,
129
+ requestType: engine_service_pb.CreateEnclaveArgs,
130
+ responseType: engine_service_pb.CreateEnclaveResponse,
131
+ requestSerialize: serialize_engine_api_CreateEnclaveArgs,
132
+ requestDeserialize: deserialize_engine_api_CreateEnclaveArgs,
133
+ responseSerialize: serialize_engine_api_CreateEnclaveResponse,
134
+ responseDeserialize: deserialize_engine_api_CreateEnclaveResponse,
135
+ },
136
+ // Returns information about the existing enclaves
137
+ getEnclaves: {
138
+ path: '/engine_api.EngineService/GetEnclaves',
139
+ requestStream: false,
140
+ responseStream: false,
141
+ requestType: google_protobuf_empty_pb.Empty,
142
+ responseType: engine_service_pb.GetEnclavesResponse,
143
+ requestSerialize: serialize_google_protobuf_Empty,
144
+ requestDeserialize: deserialize_google_protobuf_Empty,
145
+ responseSerialize: serialize_engine_api_GetEnclavesResponse,
146
+ responseDeserialize: deserialize_engine_api_GetEnclavesResponse,
147
+ },
148
+ // Stops all containers in an enclave
149
+ stopEnclave: {
150
+ path: '/engine_api.EngineService/StopEnclave',
151
+ requestStream: false,
152
+ responseStream: false,
153
+ requestType: engine_service_pb.StopEnclaveArgs,
154
+ responseType: google_protobuf_empty_pb.Empty,
155
+ requestSerialize: serialize_engine_api_StopEnclaveArgs,
156
+ requestDeserialize: deserialize_engine_api_StopEnclaveArgs,
157
+ responseSerialize: serialize_google_protobuf_Empty,
158
+ responseDeserialize: deserialize_google_protobuf_Empty,
159
+ },
160
+ // Destroys an enclave, removing all artifacts associated with it
161
+ destroyEnclave: {
162
+ path: '/engine_api.EngineService/DestroyEnclave',
163
+ requestStream: false,
164
+ responseStream: false,
165
+ requestType: engine_service_pb.DestroyEnclaveArgs,
166
+ responseType: google_protobuf_empty_pb.Empty,
167
+ requestSerialize: serialize_engine_api_DestroyEnclaveArgs,
168
+ requestDeserialize: deserialize_engine_api_DestroyEnclaveArgs,
169
+ responseSerialize: serialize_google_protobuf_Empty,
170
+ responseDeserialize: deserialize_google_protobuf_Empty,
171
+ },
172
+ // Gets rid of old enclaves
173
+ clean: {
174
+ path: '/engine_api.EngineService/Clean',
175
+ requestStream: false,
176
+ responseStream: false,
177
+ requestType: engine_service_pb.CleanArgs,
178
+ responseType: engine_service_pb.CleanResponse,
179
+ requestSerialize: serialize_engine_api_CleanArgs,
180
+ requestDeserialize: deserialize_engine_api_CleanArgs,
181
+ responseSerialize: serialize_engine_api_CleanResponse,
182
+ responseDeserialize: deserialize_engine_api_CleanResponse,
183
+ },
184
+ };
185
+
186
+ exports.EngineServiceClient = grpc.makeGenericClientConstructor(EngineServiceService);