@cartesi/cli 2.0.0-alpha.2 → 2.0.0-alpha.21

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 (169) hide show
  1. package/dist/base.d.ts +28 -0
  2. package/dist/base.d.ts.map +1 -0
  3. package/dist/base.js +109 -0
  4. package/dist/builder/directory.d.ts +2 -2
  5. package/dist/builder/directory.d.ts.map +1 -1
  6. package/dist/builder/directory.js +5 -3
  7. package/dist/builder/docker.d.ts +2 -2
  8. package/dist/builder/docker.d.ts.map +1 -1
  9. package/dist/builder/docker.js +39 -37
  10. package/dist/builder/empty.d.ts +1 -1
  11. package/dist/builder/empty.d.ts.map +1 -1
  12. package/dist/builder/empty.js +1 -1
  13. package/dist/builder/none.d.ts +1 -1
  14. package/dist/builder/none.d.ts.map +1 -1
  15. package/dist/builder/none.js +1 -1
  16. package/dist/builder/tar.d.ts +1 -1
  17. package/dist/builder/tar.d.ts.map +1 -1
  18. package/dist/builder/tar.js +1 -1
  19. package/dist/commands/address-book.d.ts +5 -8
  20. package/dist/commands/address-book.d.ts.map +1 -1
  21. package/dist/commands/address-book.js +18 -14
  22. package/dist/commands/build.d.ts +7 -11
  23. package/dist/commands/build.d.ts.map +1 -1
  24. package/dist/commands/build.js +82 -58
  25. package/dist/commands/clean.d.ts +2 -7
  26. package/dist/commands/clean.d.ts.map +1 -1
  27. package/dist/commands/clean.js +9 -10
  28. package/dist/commands/create.d.ts +6 -15
  29. package/dist/commands/create.d.ts.map +1 -1
  30. package/dist/commands/create.js +25 -54
  31. package/dist/commands/deploy/build.d.ts +2 -14
  32. package/dist/commands/deploy/build.d.ts.map +1 -1
  33. package/dist/commands/deploy/build.js +8 -61
  34. package/dist/commands/deploy.d.ts +3 -0
  35. package/dist/commands/deploy.d.ts.map +1 -0
  36. package/dist/commands/deploy.js +12 -0
  37. package/dist/commands/deposit/erc1155.d.ts +18 -0
  38. package/dist/commands/deposit/erc1155.d.ts.map +1 -0
  39. package/dist/commands/deposit/erc1155.js +254 -0
  40. package/dist/commands/deposit/erc20.d.ts +10 -0
  41. package/dist/commands/deposit/erc20.d.ts.map +1 -0
  42. package/dist/commands/deposit/erc20.js +125 -0
  43. package/dist/commands/deposit/erc721.d.ts +10 -0
  44. package/dist/commands/deposit/erc721.d.ts.map +1 -0
  45. package/dist/commands/deposit/erc721.js +143 -0
  46. package/dist/commands/deposit/ether.d.ts +10 -0
  47. package/dist/commands/deposit/ether.d.ts.map +1 -0
  48. package/dist/commands/deposit/ether.js +65 -0
  49. package/dist/commands/deposit.d.ts +9 -0
  50. package/dist/commands/deposit.d.ts.map +1 -0
  51. package/dist/commands/deposit.js +37 -0
  52. package/dist/commands/doctor.d.ts +2 -12
  53. package/dist/commands/doctor.d.ts.map +1 -1
  54. package/dist/commands/doctor.js +90 -91
  55. package/dist/commands/hash.d.ts +4 -9
  56. package/dist/commands/hash.d.ts.map +1 -1
  57. package/dist/commands/hash.js +14 -14
  58. package/dist/commands/logs.d.ts +9 -0
  59. package/dist/commands/logs.d.ts.map +1 -0
  60. package/dist/commands/logs.js +34 -0
  61. package/dist/commands/run.d.ts +14 -20
  62. package/dist/commands/run.d.ts.map +1 -1
  63. package/dist/commands/run.js +193 -182
  64. package/dist/commands/send.d.ts +10 -0
  65. package/dist/commands/send.d.ts.map +1 -0
  66. package/dist/commands/send.js +130 -0
  67. package/dist/commands/shell.d.ts +6 -14
  68. package/dist/commands/shell.d.ts.map +1 -1
  69. package/dist/commands/shell.js +34 -51
  70. package/dist/commands/status.d.ts +6 -0
  71. package/dist/commands/status.d.ts.map +1 -0
  72. package/dist/commands/status.js +50 -0
  73. package/dist/compose/default.env +36 -0
  74. package/dist/compose/docker-compose-anvil.yaml +39 -0
  75. package/dist/compose/docker-compose-bundler.yaml +71 -0
  76. package/dist/{node → compose}/docker-compose-database.yaml +4 -2
  77. package/dist/compose/docker-compose-explorer.yaml +96 -0
  78. package/dist/compose/docker-compose-node-cpus.yaml +6 -0
  79. package/dist/compose/docker-compose-node-memory.yaml +6 -0
  80. package/dist/compose/docker-compose-node.yaml +50 -0
  81. package/dist/compose/docker-compose-passkey-server.yaml +37 -0
  82. package/dist/compose/docker-compose-paymaster.yaml +40 -0
  83. package/dist/compose/docker-compose-proxy.yaml +24 -0
  84. package/dist/config.d.ts +30 -9
  85. package/dist/config.d.ts.map +1 -1
  86. package/dist/config.js +93 -53
  87. package/dist/contracts.d.ts +1695 -1636
  88. package/dist/contracts.d.ts.map +1 -1
  89. package/dist/contracts.js +632 -592
  90. package/dist/exec/cartesi-machine.d.ts +2 -2
  91. package/dist/exec/cartesi-machine.d.ts.map +1 -1
  92. package/dist/exec/cartesi-machine.js +3 -5
  93. package/dist/exec/genext2fs.d.ts +6 -3
  94. package/dist/exec/genext2fs.d.ts.map +1 -1
  95. package/dist/exec/genext2fs.js +5 -5
  96. package/dist/exec/index.d.ts +0 -1
  97. package/dist/exec/index.d.ts.map +1 -1
  98. package/dist/exec/index.js +0 -1
  99. package/dist/exec/mksquashfs.d.ts +2 -2
  100. package/dist/exec/mksquashfs.d.ts.map +1 -1
  101. package/dist/exec/mksquashfs.js +4 -2
  102. package/dist/exec/rollups.d.ts +105 -0
  103. package/dist/exec/rollups.d.ts.map +1 -0
  104. package/dist/exec/rollups.js +375 -0
  105. package/dist/exec/util.d.ts +1 -16
  106. package/dist/exec/util.d.ts.map +1 -1
  107. package/dist/exec/util.js +3 -50
  108. package/dist/index.d.ts +2 -1
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +57 -1
  111. package/dist/machine.d.ts +8 -2
  112. package/dist/machine.d.ts.map +1 -1
  113. package/dist/machine.js +26 -16
  114. package/dist/prompts.d.ts +13 -2
  115. package/dist/prompts.d.ts.map +1 -1
  116. package/dist/prompts.js +60 -26
  117. package/dist/template.d.ts +3 -0
  118. package/dist/template.d.ts.map +1 -0
  119. package/dist/template.js +16 -0
  120. package/dist/wallet.d.ts +9222 -21
  121. package/dist/wallet.d.ts.map +1 -1
  122. package/dist/wallet.js +35 -198
  123. package/package.json +39 -57
  124. package/bin/dev.cmd +0 -3
  125. package/bin/dev.js +0 -25
  126. package/bin/run.cmd +0 -3
  127. package/bin/run.js +0 -8
  128. package/dist/baseCommand.d.ts +0 -22
  129. package/dist/baseCommand.d.ts.map +0 -1
  130. package/dist/baseCommand.js +0 -92
  131. package/dist/commands/deploy/index.d.ts +0 -12
  132. package/dist/commands/deploy/index.d.ts.map +0 -1
  133. package/dist/commands/deploy/index.js +0 -78
  134. package/dist/commands/send/erc20.d.ts +0 -14
  135. package/dist/commands/send/erc20.d.ts.map +0 -1
  136. package/dist/commands/send/erc20.js +0 -70
  137. package/dist/commands/send/erc721.d.ts +0 -14
  138. package/dist/commands/send/erc721.d.ts.map +0 -1
  139. package/dist/commands/send/erc721.js +0 -73
  140. package/dist/commands/send/ether.d.ts +0 -13
  141. package/dist/commands/send/ether.d.ts.map +0 -1
  142. package/dist/commands/send/ether.js +0 -32
  143. package/dist/commands/send/generic.d.ts +0 -15
  144. package/dist/commands/send/generic.d.ts.map +0 -1
  145. package/dist/commands/send/generic.js +0 -119
  146. package/dist/commands/send/index.d.ts +0 -28
  147. package/dist/commands/send/index.d.ts.map +0 -1
  148. package/dist/commands/send/index.js +0 -102
  149. package/dist/exec/crane.d.ts +0 -15
  150. package/dist/exec/crane.d.ts.map +0 -1
  151. package/dist/exec/crane.js +0 -17
  152. package/dist/flags.d.ts +0 -17
  153. package/dist/flags.d.ts.map +0 -1
  154. package/dist/flags.js +0 -28
  155. package/dist/node/DockerfileDeploy.txt +0 -4
  156. package/dist/node/default.env +0 -27
  157. package/dist/node/docker-compose-anvil.yaml +0 -50
  158. package/dist/node/docker-compose-bundler.yaml +0 -57
  159. package/dist/node/docker-compose-envfile.yaml +0 -4
  160. package/dist/node/docker-compose-explorer.yaml +0 -88
  161. package/dist/node/docker-compose-host.yaml +0 -30
  162. package/dist/node/docker-compose-paymaster.yaml +0 -33
  163. package/dist/node/docker-compose-prompt.yaml +0 -17
  164. package/dist/node/docker-compose-proxy.yaml +0 -48
  165. package/dist/node/docker-compose-snapshot-volume.yaml +0 -8
  166. package/dist/node/docker-compose-validator-cpus.yaml +0 -6
  167. package/dist/node/docker-compose-validator-memory.yaml +0 -6
  168. package/dist/node/docker-compose-validator.yaml +0 -59
  169. package/oclif.manifest.json +0 -876
@@ -0,0 +1,37 @@
1
+ configs:
2
+ passkey_server_proxy:
3
+ content: |
4
+ http:
5
+ routers:
6
+ passkey-server:
7
+ rule: "PathPrefix(`/passkey`)"
8
+ middlewares:
9
+ - "remove-passkey-server-prefix"
10
+ service: passkey-server
11
+ middlewares:
12
+ remove-passkey-server-prefix:
13
+ replacePathRegex:
14
+ regex: "^/passkey/(.*)"
15
+ replacement: "/$1"
16
+ services:
17
+ passkey-server:
18
+ loadBalancer:
19
+ servers:
20
+ - url: "http://passkey-server:3000"
21
+
22
+ services:
23
+ passkey-server:
24
+ image: ${CARTESI_SDK_IMAGE}
25
+ command: ["passkey-server"]
26
+ healthcheck:
27
+ test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/health"]
28
+ start_period: 10s
29
+ start_interval: 200ms
30
+ interval: 10s
31
+ timeout: 1s
32
+ retries: 5
33
+
34
+ proxy:
35
+ configs:
36
+ - source: passkey_server_proxy
37
+ target: /etc/traefik/conf.d/passkey-server.yaml
@@ -0,0 +1,40 @@
1
+ configs:
2
+ paymaster_proxy:
3
+ content: |
4
+ http:
5
+ routers:
6
+ paymaster:
7
+ rule: "PathPrefix(`/paymaster`)"
8
+ middlewares:
9
+ - "remove-paymaster-prefix"
10
+ service: paymaster
11
+ middlewares:
12
+ remove-paymaster-prefix:
13
+ replacePathRegex:
14
+ regex: "^/paymaster/(.*)"
15
+ replacement: "/$1"
16
+ services:
17
+ paymaster:
18
+ loadBalancer:
19
+ servers:
20
+ - url: "http://paymaster:3000"
21
+
22
+ services:
23
+ paymaster:
24
+ image: ${CARTESI_SDK_IMAGE}
25
+ command: "mock-verifying-paymaster"
26
+ environment:
27
+ - ALTO_RPC=http://bundler:4337
28
+ - ANVIL_RPC=http://anvil:8545
29
+ healthcheck:
30
+ test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/ping"]
31
+ start_period: 10s
32
+ start_interval: 200ms
33
+ interval: 10s
34
+ timeout: 1s
35
+ retries: 5
36
+
37
+ proxy:
38
+ configs:
39
+ - source: paymaster_proxy
40
+ target: /etc/traefik/conf.d/paymaster.yaml
@@ -0,0 +1,24 @@
1
+ services:
2
+ proxy:
3
+ image: traefik:v3.3.4
4
+ healthcheck:
5
+ test: ["CMD", "traefik", "healthcheck", "--ping"]
6
+ start_period: 10s
7
+ start_interval: 200ms
8
+ interval: 10s
9
+ timeout: 1s
10
+ retries: 5
11
+ command:
12
+ [
13
+ "--ping=true",
14
+ "--entryPoints.web.address=:8088",
15
+ "--entryPoints.traefik.address=:8080",
16
+ "--metrics.prometheus=true",
17
+ "--metrics.prometheus.addServicesLabels=true",
18
+ "--providers.file.directory=/etc/traefik/conf.d",
19
+ "--providers.file.watch=true",
20
+ "--log",
21
+ "--log.level=INFO",
22
+ ]
23
+ ports:
24
+ - ${CARTESI_LISTEN_PORT:-6751}:8088
package/dist/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { TomlPrimitive } from "smol-toml";
1
+ import { type TomlPrimitive } from "smol-toml";
2
2
  /**
3
3
  * Typed Errors
4
4
  */
@@ -29,7 +29,9 @@ export declare class RequiredFieldError extends Error {
29
29
  export declare class InvalidStringArrayError extends Error {
30
30
  constructor();
31
31
  }
32
- export declare const DEFAULT_SDK = "cartesi/sdk:0.12.0-alpha.1";
32
+ export declare const DEFAULT_SDK_VERSION = "0.12.0-alpha.25";
33
+ export declare const DEFAULT_SDK_IMAGE = "cartesi/sdk";
34
+ export declare const PREFERRED_PORT = 6751;
33
35
  type DriveFormat = "ext2" | "sqfs";
34
36
  export type ImageInfo = {
35
37
  cmd: string[];
@@ -37,7 +39,7 @@ export type ImageInfo = {
37
39
  env: string[];
38
40
  workdir: string;
39
41
  };
40
- export type DriveResult = ImageInfo | undefined | void;
42
+ export type DriveResult = ImageInfo | undefined;
41
43
  export type DirectoryDriveConfig = {
42
44
  builder: "directory";
43
45
  extraSize: number;
@@ -46,6 +48,7 @@ export type DirectoryDriveConfig = {
46
48
  };
47
49
  export type DockerDriveConfig = {
48
50
  builder: "docker";
51
+ buildArgs: string[];
49
52
  context: string;
50
53
  dockerfile: string;
51
54
  extraSize: number;
@@ -79,13 +82,12 @@ export type MachineConfig = {
79
82
  assertRollingTemplate?: boolean;
80
83
  bootargs: string[];
81
84
  entrypoint?: string;
82
- finalHash: boolean;
83
- interactive?: boolean;
84
85
  maxMCycle?: bigint;
85
86
  noRollup?: boolean;
86
87
  ramLength: string;
87
- ramImage: string;
88
- store?: string;
88
+ ramImage?: string;
89
+ useDockerEnv: boolean;
90
+ useDockerWorkdir: boolean;
89
91
  user?: string;
90
92
  };
91
93
  export type Config = {
@@ -93,11 +95,30 @@ export type Config = {
93
95
  machine: MachineConfig;
94
96
  sdk: string;
95
97
  };
98
+ type TomlTable = {
99
+ [key: string]: TomlPrimitive;
100
+ };
96
101
  export declare const defaultRootDriveConfig: () => DriveConfig;
97
- export declare const defaultRamImage: () => string;
98
102
  export declare const defaultMachineConfig: () => MachineConfig;
99
103
  export declare const defaultConfig: () => Config;
100
104
  export declare const getDriveFormat: (filename: string) => DriveFormat;
101
- export declare const parse: (str: string) => Config;
105
+ export declare const parse: (str: string[]) => Config;
106
+ /**
107
+ * Recursively merges two TOML table objects
108
+ * Values from 'other' take precedence over 'base'
109
+ *
110
+ * @param base - The base TOML table
111
+ * @param other - The TOML table to merge into base (takes precedence)
112
+ * @returns A new merged TOML table
113
+ */
114
+ export declare function mergeTomlTables(base: TomlTable, other: TomlTable): TomlTable;
115
+ /**
116
+ * Merges two TOML values of any type
117
+ *
118
+ * @param base - The base TOML value
119
+ * @param other - The TOML value to merge into base (takes precedence)
120
+ * @returns The merged TOML value
121
+ */
122
+ export declare function mergeTomlValues(base: TomlPrimitive, other: TomlPrimitive): TomlPrimitive;
102
123
  export {};
103
124
  //# sourceMappingURL=config.d.ts.map
@@ -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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"}
package/dist/config.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import bytes from "bytes";
2
- import os from "os";
3
- import { extname } from "path";
2
+ import { extname } from "node:path";
4
3
  import { parse as parseToml } from "smol-toml";
5
4
  /**
6
5
  * Typed Errors
@@ -55,7 +54,7 @@ export class RequiredFieldError extends Error {
55
54
  }
56
55
  export class InvalidStringArrayError extends Error {
57
56
  constructor() {
58
- super(`Invalid string array`);
57
+ super("Invalid string array");
59
58
  this.name = "InvalidStringArrayError";
60
59
  }
61
60
  }
@@ -64,49 +63,39 @@ export class InvalidStringArrayError extends Error {
64
63
  */
65
64
  const DEFAULT_FORMAT = "ext2";
66
65
  const DEFAULT_RAM = "128Mi";
67
- const DEFAULT_RAM_IMAGE_DOCKER = "/usr/share/cartesi-machine/images/linux.bin";
68
- const DEFAULT_RAM_IMAGE_LINUX = "/usr/share/cartesi-machine/images/linux.bin";
69
- const DEFAULT_RAM_IMAGE_MAC = "/opt/homebrew/share/cartesi-machine/images/linux.bin";
70
- export const DEFAULT_SDK = "cartesi/sdk:0.12.0-alpha.1";
66
+ export const DEFAULT_SDK_VERSION = "0.12.0-alpha.25";
67
+ export const DEFAULT_SDK_IMAGE = "cartesi/sdk";
68
+ export const PREFERRED_PORT = 6751;
71
69
  export const defaultRootDriveConfig = () => ({
72
70
  builder: "docker",
71
+ buildArgs: [],
73
72
  context: ".",
74
73
  dockerfile: "Dockerfile", // file on current working directory
75
74
  extraSize: 0,
76
75
  format: DEFAULT_FORMAT,
77
76
  tags: [],
78
77
  });
79
- export const defaultRamImage = () => {
80
- switch (os.platform()) {
81
- case "darwin":
82
- return DEFAULT_RAM_IMAGE_MAC;
83
- default:
84
- return DEFAULT_RAM_IMAGE_LINUX;
85
- }
86
- };
87
78
  export const defaultMachineConfig = () => ({
88
79
  assertRollingTemplate: undefined,
89
80
  bootargs: [],
90
81
  entrypoint: undefined,
91
- finalHash: true,
92
- interactive: undefined,
93
82
  maxMCycle: undefined,
94
83
  noRollup: undefined,
95
84
  ramLength: DEFAULT_RAM,
96
- ramImage: defaultRamImage(),
97
- store: "image",
85
+ useDockerEnv: true,
86
+ useDockerWorkdir: true,
98
87
  user: undefined,
99
88
  });
100
89
  export const defaultConfig = () => ({
101
90
  drives: { root: defaultRootDriveConfig() },
102
91
  machine: defaultMachineConfig(),
103
- sdk: DEFAULT_SDK,
92
+ sdk: `${DEFAULT_SDK_IMAGE}:${DEFAULT_SDK_VERSION}`,
104
93
  });
105
94
  const parseBoolean = (value, defaultValue) => {
106
95
  if (value === undefined) {
107
96
  return defaultValue;
108
97
  }
109
- else if (typeof value === "boolean") {
98
+ if (typeof value === "boolean") {
110
99
  return value;
111
100
  }
112
101
  throw new InvalidBooleanValueError(value);
@@ -115,7 +104,7 @@ const parseOptionalBoolean = (value) => {
115
104
  if (value === undefined) {
116
105
  return undefined;
117
106
  }
118
- else if (typeof value === "boolean") {
107
+ if (typeof value === "boolean") {
119
108
  return value;
120
109
  }
121
110
  throw new InvalidBooleanValueError(value);
@@ -124,7 +113,7 @@ const parseString = (value, defaultValue) => {
124
113
  if (value === undefined) {
125
114
  return defaultValue;
126
115
  }
127
- else if (typeof value === "string") {
116
+ if (typeof value === "string") {
128
117
  return value;
129
118
  }
130
119
  throw new InvalidStringValueError(value);
@@ -133,10 +122,10 @@ const parseStringArray = (value) => {
133
122
  if (value === undefined) {
134
123
  return [];
135
124
  }
136
- else if (typeof value === "string") {
125
+ if (typeof value === "string") {
137
126
  return [value];
138
127
  }
139
- else if (typeof value === "object" && Array.isArray(value)) {
128
+ if (typeof value === "object" && Array.isArray(value)) {
140
129
  return value.map((v) => {
141
130
  if (typeof v === "string") {
142
131
  return v;
@@ -150,7 +139,7 @@ const parseRequiredString = (value, key) => {
150
139
  if (value === undefined) {
151
140
  throw new RequiredFieldError(key);
152
141
  }
153
- else if (typeof value === "string") {
142
+ if (typeof value === "string") {
154
143
  return value;
155
144
  }
156
145
  throw new InvalidStringValueError(value);
@@ -159,7 +148,7 @@ const parseOptionalString = (value) => {
159
148
  if (value === undefined) {
160
149
  return undefined;
161
150
  }
162
- else if (typeof value === "string") {
151
+ if (typeof value === "string") {
163
152
  return value;
164
153
  }
165
154
  throw new InvalidStringValueError(value);
@@ -168,10 +157,10 @@ const parseOptionalStringBoolean = (value) => {
168
157
  if (value === undefined) {
169
158
  return undefined;
170
159
  }
171
- else if (typeof value === "string") {
160
+ if (typeof value === "string") {
172
161
  return value;
173
162
  }
174
- else if (typeof value === "boolean") {
163
+ if (typeof value === "boolean") {
175
164
  return value;
176
165
  }
177
166
  throw new InvalidStringValueError(value);
@@ -180,10 +169,10 @@ const parseOptionalNumber = (value) => {
180
169
  if (value === undefined) {
181
170
  return undefined;
182
171
  }
183
- else if (typeof value === "bigint") {
172
+ if (typeof value === "bigint") {
184
173
  return value;
185
174
  }
186
- else if (typeof value === "number") {
175
+ if (typeof value === "number") {
187
176
  return BigInt(value);
188
177
  }
189
178
  throw new InvalidNumberValueError(value);
@@ -192,10 +181,10 @@ const parseBytes = (value, defaultValue) => {
192
181
  if (value === undefined) {
193
182
  return defaultValue;
194
183
  }
195
- else if (typeof value === "bigint") {
184
+ if (typeof value === "bigint") {
196
185
  return Number(value);
197
186
  }
198
- else if (typeof value === "number" || typeof value === "string") {
187
+ if (typeof value === "number" || typeof value === "string") {
199
188
  const output = bytes.parse(value);
200
189
  if (output !== null) {
201
190
  return output;
@@ -207,7 +196,7 @@ const parseBuilder = (value) => {
207
196
  if (value === undefined) {
208
197
  return "docker";
209
198
  }
210
- else if (typeof value === "string") {
199
+ if (typeof value === "string") {
211
200
  switch (value) {
212
201
  case "directory":
213
202
  return "directory";
@@ -227,7 +216,7 @@ const parseFormat = (value) => {
227
216
  if (value === undefined) {
228
217
  return DEFAULT_FORMAT;
229
218
  }
230
- else if (typeof value === "string") {
219
+ if (typeof value === "string") {
231
220
  switch (value) {
232
221
  case "ext2":
233
222
  return "ext2";
@@ -241,7 +230,7 @@ const parseEmptyFormat = (value) => {
241
230
  if (value === undefined) {
242
231
  return DEFAULT_FORMAT;
243
232
  }
244
- else if (typeof value === "string") {
233
+ if (typeof value === "string") {
245
234
  switch (value) {
246
235
  case "ext2":
247
236
  return "ext2";
@@ -261,15 +250,15 @@ const parseMachine = (value) => {
261
250
  }
262
251
  const toml = value;
263
252
  return {
264
- assertRollingTemplate: parseOptionalBoolean(toml["assert-rolling-template"]),
265
- bootargs: parseStringArray(toml.bootargs),
266
- finalHash: parseBoolean(toml["final-hash"], true),
267
- interactive: undefined,
268
- maxMCycle: parseOptionalNumber(toml["max-mcycle"]),
269
- noRollup: parseBoolean(toml["no-rollup"], false),
270
- ramLength: parseString(toml["ram-length"], DEFAULT_RAM),
271
- ramImage: parseString(toml["ram-image"], defaultRamImage()),
272
- store: "image",
253
+ assertRollingTemplate: parseOptionalBoolean(toml.assert_rolling_template),
254
+ bootargs: parseStringArray(toml.boot_args),
255
+ entrypoint: parseOptionalString(toml.entrypoint),
256
+ maxMCycle: parseOptionalNumber(toml.max_mcycle),
257
+ noRollup: parseBoolean(toml.no_rollup, false),
258
+ ramLength: parseString(toml.ram_length, DEFAULT_RAM),
259
+ ramImage: parseOptionalString(toml.ram_image),
260
+ useDockerEnv: parseBoolean(toml.use_docker_env, true),
261
+ useDockerWorkdir: parseBoolean(toml.use_docker_workdir, true),
273
262
  user: parseOptionalString(toml.user),
274
263
  };
275
264
  };
@@ -288,10 +277,10 @@ const parseDrive = (drive) => {
288
277
  const builder = parseBuilder(drive.builder);
289
278
  switch (builder) {
290
279
  case "directory": {
291
- const { extraSize, format, mount, directory, shared, user } = drive;
280
+ const { extra_size, format, mount, directory, shared, user } = drive;
292
281
  return {
293
282
  builder: "directory",
294
- extraSize: parseBytes(extraSize, 0),
283
+ extraSize: parseBytes(extra_size, 0),
295
284
  format: parseFormat(format),
296
285
  mount: parseOptionalStringBoolean(mount),
297
286
  directory: parseRequiredString(directory, "directory"),
@@ -300,13 +289,14 @@ const parseDrive = (drive) => {
300
289
  };
301
290
  }
302
291
  case "docker": {
303
- const { context, dockerfile, extraSize, format, image, mount, shared, tags, target, user, } = drive;
292
+ const { build_args, context, dockerfile, extra_size, format, image, mount, shared, tags, target, user, } = drive;
304
293
  return {
305
294
  builder: "docker",
295
+ buildArgs: parseStringArray(build_args),
306
296
  image: parseOptionalString(image),
307
297
  context: parseString(context, "."),
308
298
  dockerfile: parseString(dockerfile, "Dockerfile"),
309
- extraSize: parseBytes(extraSize, 0),
299
+ extraSize: parseBytes(extra_size, 0),
310
300
  format: parseFormat(format),
311
301
  mount: parseOptionalStringBoolean(mount),
312
302
  shared: parseOptionalBoolean(shared),
@@ -327,10 +317,10 @@ const parseDrive = (drive) => {
327
317
  };
328
318
  }
329
319
  case "tar": {
330
- const { extraSize, filename, format, mount, shared, user } = drive;
320
+ const { extra_size, filename, format, mount, shared, user } = drive;
331
321
  return {
332
322
  builder: "tar",
333
- extraSize: parseBytes(extraSize, 0),
323
+ extraSize: parseBytes(extra_size, 0),
334
324
  filename: parseRequiredString(filename, "filename"),
335
325
  format: parseFormat(format),
336
326
  mount: parseOptionalStringBoolean(mount),
@@ -368,11 +358,61 @@ const parseDrives = (config) => {
368
358
  return drives;
369
359
  };
370
360
  export const parse = (str) => {
371
- const toml = parseToml(str);
361
+ let toml = {};
362
+ for (const s of str) {
363
+ toml = mergeTomlTables(toml, parseToml(s));
364
+ }
372
365
  const config = {
373
366
  drives: parseDrives(toml.drives),
374
367
  machine: parseMachine(toml.machine),
375
- sdk: parseString(toml.sdk, DEFAULT_SDK),
368
+ sdk: parseString(toml.sdk, `${DEFAULT_SDK_IMAGE}:${DEFAULT_SDK_VERSION}`),
376
369
  };
377
370
  return config;
378
371
  };
372
+ /**
373
+ * Checks if a value is a plain object (TOML table)
374
+ */
375
+ function isTomlTable(value) {
376
+ return (typeof value === "object" &&
377
+ value !== null &&
378
+ !Array.isArray(value) &&
379
+ !("toISOString" in value)); // Check for TomlDate (has toISOString method)
380
+ }
381
+ /**
382
+ * Recursively merges two TOML table objects
383
+ * Values from 'other' take precedence over 'base'
384
+ *
385
+ * @param base - The base TOML table
386
+ * @param other - The TOML table to merge into base (takes precedence)
387
+ * @returns A new merged TOML table
388
+ */
389
+ export function mergeTomlTables(base, other) {
390
+ const result = { ...base };
391
+ for (const [key, otherValue] of Object.entries(other)) {
392
+ const baseValue = result[key];
393
+ // If both values are tables, merge them recursively
394
+ if (isTomlTable(baseValue) && isTomlTable(otherValue)) {
395
+ result[key] = mergeTomlTables(baseValue, otherValue);
396
+ }
397
+ else {
398
+ // For all other cases, other value takes precedence
399
+ result[key] = otherValue;
400
+ }
401
+ }
402
+ return result;
403
+ }
404
+ /**
405
+ * Merges two TOML values of any type
406
+ *
407
+ * @param base - The base TOML value
408
+ * @param other - The TOML value to merge into base (takes precedence)
409
+ * @returns The merged TOML value
410
+ */
411
+ export function mergeTomlValues(base, other) {
412
+ // If both are tables, merge recursively
413
+ if (isTomlTable(base) && isTomlTable(other)) {
414
+ return mergeTomlTables(base, other);
415
+ }
416
+ // For arrays, replaces entirely
417
+ return other;
418
+ }