@cartesi/cli 2.0.0-alpha.5 → 2.0.0-alpha.7

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 (123) hide show
  1. package/dist/base.d.ts +10 -6
  2. package/dist/base.d.ts.map +1 -1
  3. package/dist/base.js +41 -15
  4. package/dist/builder/directory.d.ts.map +1 -1
  5. package/dist/builder/docker.d.ts.map +1 -1
  6. package/dist/builder/empty.d.ts.map +1 -1
  7. package/dist/builder/none.d.ts.map +1 -1
  8. package/dist/builder/tar.d.ts.map +1 -1
  9. package/dist/commands/address-book.d.ts +3 -1
  10. package/dist/commands/address-book.d.ts.map +1 -1
  11. package/dist/commands/address-book.js +3 -3
  12. package/dist/commands/build.d.ts +4 -1
  13. package/dist/commands/build.d.ts.map +1 -1
  14. package/dist/commands/build.js +3 -3
  15. package/dist/commands/clean.d.ts +1 -1
  16. package/dist/commands/clean.d.ts.map +1 -1
  17. package/dist/commands/clean.js +3 -3
  18. package/dist/commands/create.d.ts +4 -1
  19. package/dist/commands/create.d.ts.map +1 -1
  20. package/dist/commands/create.js +3 -4
  21. package/dist/commands/deploy/build.d.ts +1 -1
  22. package/dist/commands/deploy/build.d.ts.map +1 -1
  23. package/dist/commands/deploy/build.js +7 -54
  24. package/dist/commands/deploy.d.ts +1 -1
  25. package/dist/commands/deploy.d.ts.map +1 -1
  26. package/dist/commands/deploy.js +9 -73
  27. package/dist/commands/doctor.d.ts +1 -1
  28. package/dist/commands/doctor.d.ts.map +1 -1
  29. package/dist/commands/doctor.js +23 -11
  30. package/dist/commands/hash.d.ts +3 -1
  31. package/dist/commands/hash.d.ts.map +1 -1
  32. package/dist/commands/hash.js +3 -3
  33. package/dist/commands/rollups/deploy.d.ts +16 -0
  34. package/dist/commands/rollups/deploy.d.ts.map +1 -0
  35. package/dist/commands/rollups/deploy.js +225 -0
  36. package/dist/commands/rollups/logs.d.ts +11 -0
  37. package/dist/commands/rollups/logs.d.ts.map +1 -0
  38. package/dist/commands/rollups/logs.js +32 -0
  39. package/dist/commands/rollups/start.d.ts +14 -0
  40. package/dist/commands/rollups/start.d.ts.map +1 -0
  41. package/dist/commands/rollups/start.js +209 -0
  42. package/dist/commands/rollups/status.d.ts +7 -0
  43. package/dist/commands/rollups/status.d.ts.map +1 -0
  44. package/dist/commands/rollups/status.js +46 -0
  45. package/dist/commands/rollups/stop.d.ts +5 -0
  46. package/dist/commands/rollups/stop.d.ts.map +1 -0
  47. package/dist/commands/rollups/stop.js +26 -0
  48. package/dist/commands/rollups.d.ts +6 -0
  49. package/dist/commands/rollups.d.ts.map +1 -0
  50. package/dist/commands/rollups.js +19 -0
  51. package/dist/commands/run.d.ts +1 -1
  52. package/dist/commands/run.d.ts.map +1 -1
  53. package/dist/commands/run.js +7 -155
  54. package/dist/commands/send/erc20.d.ts +10 -1
  55. package/dist/commands/send/erc20.d.ts.map +1 -1
  56. package/dist/commands/send/erc20.js +10 -8
  57. package/dist/commands/send/erc721.d.ts +10 -1
  58. package/dist/commands/send/erc721.d.ts.map +1 -1
  59. package/dist/commands/send/erc721.js +10 -8
  60. package/dist/commands/send/ether.d.ts +10 -1
  61. package/dist/commands/send/ether.d.ts.map +1 -1
  62. package/dist/commands/send/ether.js +10 -8
  63. package/dist/commands/send/generic.d.ts +11 -1
  64. package/dist/commands/send/generic.d.ts.map +1 -1
  65. package/dist/commands/send/generic.js +10 -9
  66. package/dist/commands/send.d.ts +4 -4
  67. package/dist/commands/send.d.ts.map +1 -1
  68. package/dist/commands/send.js +19 -19
  69. package/dist/commands/shell.d.ts +5 -1
  70. package/dist/commands/shell.d.ts.map +1 -1
  71. package/dist/commands/shell.js +3 -3
  72. package/dist/compose/rollups/default.env +35 -0
  73. package/dist/compose/rollups/docker-compose-anvil.yaml +15 -0
  74. package/dist/{node → compose/rollups}/docker-compose-bundler.yaml +12 -26
  75. package/dist/{node → compose/rollups}/docker-compose-database.yaml +4 -2
  76. package/dist/compose/rollups/docker-compose-espresso.yaml +94 -0
  77. package/dist/{node → compose/rollups}/docker-compose-explorer.yaml +18 -37
  78. package/dist/compose/rollups/docker-compose-graphql.yaml +49 -0
  79. package/dist/compose/rollups/docker-compose-node-cpus.yaml +7 -0
  80. package/dist/compose/rollups/docker-compose-node-memory.yaml +6 -0
  81. package/dist/compose/rollups/docker-compose-node.yaml +36 -0
  82. package/dist/compose/rollups/docker-compose-paymaster.yaml +18 -0
  83. package/dist/compose/rollups/docker-compose-proxy.yaml +24 -0
  84. package/dist/compose/rollups/proxy/bundler.yaml +17 -0
  85. package/dist/compose/rollups/proxy/espresso.yaml +17 -0
  86. package/dist/compose/rollups/proxy/explorer-api.yaml +17 -0
  87. package/dist/compose/rollups/proxy/explorer.yaml +10 -0
  88. package/dist/compose/rollups/proxy/graphql.yaml +10 -0
  89. package/dist/compose/rollups/proxy/paymaster.yaml +17 -0
  90. package/dist/compose/rollups/proxy/rollups-node.yaml +17 -0
  91. package/dist/config.d.ts +1 -1
  92. package/dist/config.d.ts.map +1 -1
  93. package/dist/config.js +1 -1
  94. package/dist/contracts.d.ts.map +1 -1
  95. package/dist/exec/cartesi-machine.d.ts.map +1 -1
  96. package/dist/exec/crane.d.ts +1 -1
  97. package/dist/exec/crane.d.ts.map +1 -1
  98. package/dist/exec/genext2fs.d.ts.map +1 -1
  99. package/dist/exec/mksquashfs.d.ts.map +1 -1
  100. package/dist/exec/rollups.d.ts +17 -0
  101. package/dist/exec/rollups.d.ts.map +1 -0
  102. package/dist/exec/rollups.js +40 -0
  103. package/dist/exec/util.d.ts +1 -1
  104. package/dist/exec/util.d.ts.map +1 -1
  105. package/dist/index.js +23 -21
  106. package/dist/machine.d.ts.map +1 -1
  107. package/dist/prompts.d.ts.map +1 -1
  108. package/dist/wallet.d.ts.map +1 -1
  109. package/dist/wallet.js +29 -6
  110. package/package.json +24 -22
  111. package/dist/node/DockerfileDeploy.txt +0 -4
  112. package/dist/node/default.env +0 -27
  113. package/dist/node/docker-compose-anvil.yaml +0 -50
  114. package/dist/node/docker-compose-envfile.yaml +0 -4
  115. package/dist/node/docker-compose-espresso.yaml +0 -127
  116. package/dist/node/docker-compose-host.yaml +0 -30
  117. package/dist/node/docker-compose-paymaster.yaml +0 -33
  118. package/dist/node/docker-compose-prompt.yaml +0 -17
  119. package/dist/node/docker-compose-proxy.yaml +0 -48
  120. package/dist/node/docker-compose-snapshot-volume.yaml +0 -8
  121. package/dist/node/docker-compose-validator-cpus.yaml +0 -6
  122. package/dist/node/docker-compose-validator-memory.yaml +0 -6
  123. package/dist/node/docker-compose-validator.yaml +0 -59
package/dist/index.js CHANGED
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "@commander-js/extra-typings";
3
3
  import { createRequire } from "node:module";
4
- import { registerAddressBookCommand } from "./commands/address-book.js";
5
- import { registerBuildCommand } from "./commands/build.js";
6
- import { registerCleanCommand } from "./commands/clean.js";
7
- import { registerCreateCommand } from "./commands/create.js";
8
- import { registerDeployCommand } from "./commands/deploy.js";
9
- import { registerDoctorCommand } from "./commands/doctor.js";
10
- import { registerHashCommand } from "./commands/hash.js";
11
- import { registerRunCommand } from "./commands/run.js";
12
- import { registerSendCommand } from "./commands/send.js";
13
- import { registerShellCommand } from "./commands/shell.js";
4
+ import { createAddressBookCommand } from "./commands/address-book.js";
5
+ import { createBuildCommand } from "./commands/build.js";
6
+ import { createCleanCommand } from "./commands/clean.js";
7
+ import { createCreateCommand } from "./commands/create.js";
8
+ import { createDeployCommand } from "./commands/deploy.js";
9
+ import { createDoctorCommand } from "./commands/doctor.js";
10
+ import { createHashCommand } from "./commands/hash.js";
11
+ import { createRollupsCommand } from "./commands/rollups.js";
12
+ import { createRunCommand } from "./commands/run.js";
13
+ import { createSendCommand } from "./commands/send.js";
14
+ import { createShellCommand } from "./commands/shell.js";
14
15
  // Use `createRequire` to import JSON in ESM
15
16
  const require = createRequire(import.meta.url);
16
17
  const pkg = require("../package.json");
@@ -26,17 +27,18 @@ const splash = String.raw ` .
26
27
  const program = new Command()
27
28
  .name("cartesi")
28
29
  .version(pkg.version)
29
- .addHelpText("before", splash);
30
- registerAddressBookCommand(program);
31
- registerBuildCommand(program);
32
- registerCleanCommand(program);
33
- registerCreateCommand(program);
34
- registerDeployCommand(program);
35
- registerDoctorCommand(program);
36
- registerHashCommand(program);
37
- registerRunCommand(program);
38
- registerSendCommand(program);
39
- registerShellCommand(program);
30
+ .addHelpText("before", splash)
31
+ .addCommand(createAddressBookCommand())
32
+ .addCommand(createBuildCommand())
33
+ .addCommand(createCleanCommand())
34
+ .addCommand(createCreateCommand())
35
+ .addCommand(createDeployCommand(), { hidden: true })
36
+ .addCommand(createDoctorCommand())
37
+ .addCommand(createHashCommand())
38
+ .addCommand(createRollupsCommand())
39
+ .addCommand(createRunCommand(), { hidden: true })
40
+ .addCommand(createSendCommand())
41
+ .addCommand(createShellCommand());
40
42
  // Global error handling
41
43
  process.on("uncaughtException", (err) => {
42
44
  if (process.env.NODE_ENV === "development") {
@@ -1 +1 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7D,eAAO,MAAM,WAAW,WACZ,MAAM,QACR,SAAS,GAAG,SAAS,eACd,MAAM;;;GAwFtB,CAAC"}
1
+ {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7D,eAAO,MAAM,WAAW,GACpB,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,SAAS,EAC3B,aAAa,MAAM;;;GAwFtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACH,OAAO,EACP,GAAG,EASN,MAAM,MAAM,CAAC;AAEd,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,YAAY,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACtE,eAAO,MAAM,YAAY,WACb,mBAAmB,KAC5B,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAC9D,eAAO,MAAM,QAAQ,WAAkB,eAAe,KAAG,OAAO,CAAC,GAAG,CAMnE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,WACZ,kBAAkB,KAC3B,OAAO,CAAC,MAAM,CAUhB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,WACX,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,GAAG,CA8Cb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,WACf,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,KAAK,MAAM,EAAE,CA+DvB,CAAC;AAGF,MAAM,MAAM,MAAM,CAAC,SAAS,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG;IAChE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,UACxB,gBAAgB,CAAC,SAAS,CAAC,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,YACzD,OAAO,GAAG,SAAS,KAC9B,OAAO,CAAC,SAAS,CAsBnB,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACH,OAAO,EACP,GAAG,EASN,MAAM,MAAM,CAAC;AAEd,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,YAAY,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACtE,eAAO,MAAM,YAAY,GACrB,QAAQ,mBAAmB,KAC5B,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAC9D,eAAO,MAAM,QAAQ,GAAU,QAAQ,eAAe,KAAG,OAAO,CAAC,GAAG,CAMnE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,GACpB,QAAQ,kBAAkB,KAC3B,OAAO,CAAC,MAAM,CAUhB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACnB,QAAQ,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,GAAG,CA8Cb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACvB,QAAQ,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,KAAK,MAAM,EAAE,CA+DvB,CAAC;AAGF,MAAM,MAAM,MAAM,CAAC,SAAS,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG;IAChE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,EAChC,QAAQ,gBAAgB,CAAC,SAAS,CAAC,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,EACnE,UAAU,OAAO,GAAG,SAAS,KAC9B,OAAO,CAAC,SAAS,CAsBnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,OAAO,EACP,KAAK,EACL,GAAG,EAEH,YAAY,EAEZ,YAAY,EAKf,MAAM,MAAM,CAAC;AAiBd,MAAM,MAAM,sBAAsB,GAAG;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,sBAAsB,KAAG,KAAK,EAoBvE,CAAC;AAEF,eAAO,MAAM,uBAAuB,gEAC6B,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAepD,MAAM,WAAW,qBAAqB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC5B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AAkLtB,QAAA,MAAM,aAAa,YACN,qBAAqB,KAC/B,OAAO,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;CAC9B,CAuBA,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,OAAO,EACP,KAAK,EACL,GAAG,EAEH,YAAY,EAEZ,YAAY,EAKf,MAAM,MAAM,CAAC;AAiBd,MAAM,MAAM,sBAAsB,GAAG;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,sBAAsB,KAAG,KAAK,EAoBvE,CAAC;AAEF,eAAO,MAAM,uBAAuB,gEAC6B,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAiCpD,MAAM,WAAW,qBAAqB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC5B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AA0LtB,QAAA,MAAM,aAAa,GACf,SAAS,qBAAqB,KAC/B,OAAO,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;CAC9B,CAuBA,CAAC;AAEF,eAAe,aAAa,CAAC"}
package/dist/wallet.js CHANGED
@@ -2,7 +2,7 @@ import input from "@inquirer/input";
2
2
  import chalk from "chalk";
3
3
  import { formatUnits, http, createPublicClient as viemCreatePublicClient, createWalletClient as viemCreateWalletClient, } from "viem";
4
4
  import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts";
5
- import { arbitrum, arbitrumSepolia, base, baseSepolia, foundry, mainnet, optimism, optimismSepolia, sepolia, } from "viem/chains";
5
+ import { anvil, arbitrum, arbitrumSepolia, base, baseSepolia, mainnet, optimism, optimismSepolia, sepolia, } from "viem/chains";
6
6
  import { hexInput, selectAuto } from "./prompts.js";
7
7
  export const supportedChains = (options) => {
8
8
  options = options || {
@@ -14,7 +14,7 @@ export const supportedChains = (options) => {
14
14
  options.includeMainnets = options.includeMainnets ?? true; // default is true if not specified
15
15
  const chains = [];
16
16
  if (options.includeDevnet) {
17
- chains.push(foundry);
17
+ chains.push(anvil);
18
18
  }
19
19
  if (options.includeTestnets) {
20
20
  chains.push(arbitrumSepolia, baseSepolia, optimismSepolia, sepolia);
@@ -26,7 +26,7 @@ export const supportedChains = (options) => {
26
26
  };
27
27
  export const DEFAULT_DEVNET_MNEMONIC = "test test test test test test test test test test test junk";
28
28
  const walletChoices = (chain) => {
29
- const dev = chain.id === foundry.id;
29
+ const dev = chain.id === anvil.id;
30
30
  return [
31
31
  {
32
32
  name: `Mnemonic${dev ? "" : chalk.red(" (UNSAFE)")}`,
@@ -38,8 +38,26 @@ const walletChoices = (chain) => {
38
38
  },
39
39
  ];
40
40
  };
41
+ /**
42
+ * Test if the default RPC URL for a chain is working
43
+ * @param chain chain to test
44
+ * @returns true if the default RPC URL is valid, false otherwise
45
+ */
46
+ const testDefaultPublicClient = async (chain) => {
47
+ try {
48
+ const publicClient = viemCreatePublicClient({
49
+ transport: http(chain.rpcUrls.default.http[0]),
50
+ chain,
51
+ });
52
+ const chainId = await publicClient.getChainId();
53
+ return chainId === chain.id;
54
+ }
55
+ catch (e) {
56
+ return false;
57
+ }
58
+ };
41
59
  const selectChain = async (options) => {
42
- // if development mode, include foundry as an option
60
+ // if development mode, include anvil as an option
43
61
  const chains = supportedChains({ includeDevnet: true });
44
62
  if (options.chain) {
45
63
  const chain = options.chain;
@@ -68,9 +86,14 @@ const selectTransport = async (options, chain) => {
68
86
  return http(options.rpcUrl);
69
87
  }
70
88
  else {
89
+ const defaultUrl = chain.rpcUrls.default.http[0];
90
+ // if the chain is anvil and the default URL is valid, use it without asking the user
91
+ if (chain.id === anvil.id && (await testDefaultPublicClient(chain))) {
92
+ return http(defaultUrl);
93
+ }
71
94
  const url = await input({
72
95
  message: "RPC URL",
73
- default: chain.rpcUrls.default.http[0],
96
+ default: defaultUrl,
74
97
  });
75
98
  return http(url);
76
99
  }
@@ -142,7 +165,7 @@ const createWalletClient = async (options, chain, publicClient, publicTransport)
142
165
  // use the publicClient transport
143
166
  const mnemonic = await input({
144
167
  message: "Mnemonic",
145
- default: chain.id === 31337 ? DEFAULT_DEVNET_MNEMONIC : undefined,
168
+ default: chain.id === anvil.id ? DEFAULT_DEVNET_MNEMONIC : undefined,
146
169
  });
147
170
  // select account from mnemonic
148
171
  if (options.mnemonicIndex) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cartesi/cli",
3
- "version": "2.0.0-alpha.5",
3
+ "version": "2.0.0-alpha.7",
4
4
  "description": "Cartesi CLI",
5
5
  "author": "Danilo Tuler <tuler@pobox.com>",
6
6
  "bin": {
@@ -18,49 +18,51 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "@commander-js/extra-typings": "^13.1.0",
21
- "@inquirer/confirm": "^5.0.0",
22
- "@inquirer/core": "^10.0.0",
23
- "@inquirer/input": "^4.0.0",
24
- "@inquirer/select": "^4.0.0",
25
- "@inquirer/type": "^3.0.0",
21
+ "@inquirer/confirm": "^5.1.6",
22
+ "@inquirer/core": "^10.1.7",
23
+ "@inquirer/input": "^4.1.6",
24
+ "@inquirer/select": "^4.0.9",
25
+ "@inquirer/type": "^3.0.4",
26
26
  "bytes": "^3.1.2",
27
- "chalk": "^5.3.0",
27
+ "chalk": "^5.4.1",
28
28
  "cli-table3": "^0.6.5",
29
29
  "commander": "^13.1.0",
30
- "execa": "^9.4.1",
31
- "fs-extra": "^11.2.0",
32
- "giget": "^1.2.3",
33
- "lookpath": "^1.2.2",
30
+ "execa": "^9.5.2",
31
+ "fs-extra": "^11.3.0",
32
+ "giget": "^2.0.0",
33
+ "listr2": "^8.2.5",
34
+ "lookpath": "^1.2.3",
34
35
  "open": "^10.1.0",
35
- "ora": "^8.1.0",
36
+ "ora": "^8.2.0",
37
+ "p-retry": "^6.2.1",
36
38
  "progress-stream": "^2.0.0",
37
- "semver": "^7.6.3",
38
- "smol-toml": "^1.3.0",
39
+ "semver": "^7.7.1",
40
+ "smol-toml": "^1.3.1",
39
41
  "tmp": "^0.2.3",
40
- "viem": "^2.21.27"
42
+ "viem": "^2.23.6"
41
43
  },
42
44
  "devDependencies": {
45
+ "@cartesi/devnet": "2.0.0-alpha.3",
43
46
  "@sunodo/wagmi-plugin-hardhat-deploy": "^0.3.0",
44
- "@types/bytes": "^3.1.4",
47
+ "@types/bytes": "^3.1.5",
45
48
  "@types/fs-extra": "^11.0.4",
46
49
  "@types/inquirer": "^9.0.7",
47
- "@types/node": "^22.7.6",
48
- "@types/node-fetch": "^2.6.11",
50
+ "@types/node": "^22.13.9",
51
+ "@types/node-fetch": "^2.6.12",
49
52
  "@types/progress-stream": "^2.0.5",
50
53
  "@types/prompts": "^2.4.9",
51
54
  "@types/semver": "^7.5.8",
52
55
  "@types/tmp": "^0.2.6",
53
56
  "@vitest/coverage-istanbul": "^2.1.3",
54
- "@wagmi/cli": "^2.1.16",
57
+ "@wagmi/cli": "^2.2.0",
55
58
  "copyfiles": "^2.4.1",
56
59
  "eslint": "^8.57.0",
57
60
  "npm-run-all": "^4.1.5",
58
61
  "rimraf": "^6.0.1",
59
62
  "ts-node": "^10.9.2",
60
- "tslib": "^2.8.0",
61
- "typescript": "^5.6.3",
63
+ "tslib": "^2.8.1",
64
+ "typescript": "^5.8.2",
62
65
  "vitest": "^2.1.3",
63
- "@cartesi/devnet": "2.0.0-alpha.3",
64
66
  "@cartesi/eslint-config": "0.0.0",
65
67
  "tsconfig": "0.0.0"
66
68
  },
@@ -1,4 +0,0 @@
1
- FROM cartesi/rollups-node:1.5.1
2
- ENV CARTESI_SNAPSHOT_DIR=/usr/share/rollups-node/snapshot
3
- ENV CARTESI_HTTP_ADDRESS=0.0.0.0
4
- COPY --chown=cartesi:cartesi . ${CARTESI_SNAPSHOT_DIR}
@@ -1,27 +0,0 @@
1
- # cartesi/rollups-node
2
- CARTESI_LOG_LEVEL="${CARTESI_LOG_LEVEL:-error}"
3
- CARTESI_HTTP_ADDRESS="${CARTESI_HTTP_ADDRESS:-0.0.0.0}"
4
- CARTESI_HTTP_PORT="${CARTESI_HTTP_PORT:-10000}"
5
- CARTESI_FEATURE_HOST_MODE="${CARTESI_FEATURE_HOST_MODE:-false}"
6
- CARTESI_FEATURE_READER_MODE_ENABLED="${CARTESI_FEATURE_READER_MODE_ENABLED:-false}"
7
- CARTESI_FEATURE_DISABLE_CLAIMER="${CARTESI_FEATURE_DISABLE_CLAIMER:-false}"
8
- CARTESI_FEATURE_DISABLE_MACHINE_HASH_CHECK="${CARTESI_FEATURE_DISABLE_MACHINE_HASH_CHECK:-true}"
9
- CARTESI_EPOCH_LENGTH="${CARTESI_EPOCH_LENGTH:-720}"
10
- CARTESI_BLOCKCHAIN_ID="${CARTESI_BLOCKCHAIN_ID:-31337}"
11
- CARTESI_BLOCKCHAIN_HTTP_ENDPOINT="${CARTESI_BLOCKCHAIN_HTTP_ENDPOINT:-http://anvil:8545}"
12
- CARTESI_BLOCKCHAIN_WS_ENDPOINT="${CARTESI_BLOCKCHAIN_WS_ENDPOINT:-ws://anvil:8545}"
13
- CARTESI_BLOCKCHAIN_IS_LEGACY="${CARTESI_BLOCKCHAIN_IS_LEGACY:-false}"
14
- CARTESI_BLOCKCHAIN_FINALITY_OFFSET="${CARTESI_BLOCKCHAIN_FINALITY_OFFSET:-0}"
15
- CARTESI_BLOCKCHAIN_BLOCK_TIMEOUT="${CARTESI_BLOCKCHAIN_BLOCK_TIMEOUT:-60}"
16
- CARTESI_CONTRACTS_APPLICATION_ADDRESS="${CARTESI_CONTRACTS_APPLICATION_ADDRESS:-0xab7528bb862fb57e8a2bcd567a2e929a0be56a5e}"
17
- CARTESI_CONTRACTS_INPUT_BOX_DEPLOYMENT_BLOCK_NUMBER="${CARTESI_CONTRACTS_INPUT_BOX_DEPLOYMENT_BLOCK_NUMBER:-22}"
18
- CARTESI_CONTRACTS_HISTORY_ADDRESS="${CARTESI_CONTRACTS_HISTORY_ADDRESS:-0x325272217ae6815b494bf38ced004c5eb8a7cda7}"
19
- CARTESI_CONTRACTS_AUTHORITY_ADDRESS="${CARTESI_CONTRACTS_AUTHORITY_ADDRESS:-0x58c93f83fb3304730c95aad2e360cdb88b782010}"
20
- CARTESI_CONTRACTS_INPUT_BOX_ADDRESS="${CARTESI_CONTRACTS_INPUT_BOX_ADDRESS:-0x59b22D57D4f067708AB0c00552767405926dc768}"
21
- CARTESI_SNAPSHOT_DIR="${CARTESI_SNAPSHOT_DIR:-/usr/share/cartesi/snapshot}"
22
- CARTESI_AUTH_MNEMONIC="${CARTESI_AUTH_MNEMONIC:-test test test test test test test test test test test junk}"
23
- CARTESI_POSTGRES_ENDPOINT="${CARTESI_POSTGRES_ENDPOINT:-postgres://postgres:password@database:5432/postgres}"
24
- CARTESI_EXPERIMENTAL_SERVER_MANAGER_BYPASS_LOG="${CARTESI_EXPERIMENTAL_SERVER_MANAGER_BYPASS_LOG:-false}"
25
-
26
- # server-manager
27
- SM_DEADLINE_MACHINE="${SM_DEADLINE_MACHINE:-30000}"
@@ -1,50 +0,0 @@
1
- services:
2
- anvil:
3
- image: cartesi/sdk:0.12.0-alpha.3
4
- command:
5
- [
6
- "devnet",
7
- "--block-time",
8
- "${BLOCK_TIME:-5}",
9
- "${ANVIL_VERBOSITY:---silent}",
10
- ]
11
- healthcheck:
12
- test: ["CMD", "eth_isready"]
13
- interval: 10s
14
- timeout: 1s
15
- retries: 5
16
- environment:
17
- ANVIL_IP_ADDR: 0.0.0.0
18
- ports:
19
- - 8545:8545
20
-
21
- dapp_deployer:
22
- image: cartesi/sdk:0.12.0-alpha.3
23
- restart: on-failure
24
- depends_on:
25
- anvil:
26
- condition: service_started
27
- command:
28
- [
29
- "cast",
30
- "send",
31
- "--rpc-url",
32
- "http://anvil:8545",
33
- "--private-key",
34
- "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
35
- "0x4C11C7F82D6D56a726f9B53dd99af031AFd86BB6",
36
- "deployContracts(address,address,bytes32,bytes32)",
37
- "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
38
- "720",
39
- "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
40
- "0x0000000000000000000000000000000000000000000000000000000000000000",
41
- "0x0000000000000000000000000000000000000000000000000000000000000000",
42
- ]
43
-
44
- prompt:
45
- image: debian:bookworm-slim
46
- environment:
47
- PROMPT_TXT_01_ANVIL: "Anvil running at http://localhost:8545"
48
-
49
- volumes:
50
- blockchain-data: {}
@@ -1,4 +0,0 @@
1
- services:
2
- validator:
3
- env_file:
4
- - ./.cartesi.env
@@ -1,127 +0,0 @@
1
- services:
2
- espresso_database_creator:
3
- image: postgres:16-alpine
4
- command: ["createdb", "sequencer"]
5
- depends_on:
6
- database:
7
- condition: service_healthy
8
- environment:
9
- PGHOST: ${PGHOST:-database}
10
- PGPORT: ${PGPORT:-5432}
11
- PGUSER: ${PGUSER:-postgres}
12
- PGPASSWORD: ${PGPASSWORD:-password}
13
- PGDATABASE: ${PGDATABASE:-postgres}
14
-
15
- validator:
16
- environment:
17
- CARTESI_FEATURE_INPUT_READER_ENABLED: false
18
- espresso:
19
- image: cartesi/sdk:0.12.0-alpha.3
20
- command: ["/usr/local/bin/espresso-dev-node"]
21
- deploy:
22
- resources:
23
- limits:
24
- cpus: "4"
25
- memory: "1G"
26
- ports:
27
- - 8770:8770
28
- - 8771:8771
29
- - 8772:8772
30
- - 20000:20000
31
- depends_on:
32
- espresso_database_creator:
33
- condition: service_completed_successfully
34
- database:
35
- condition: service_healthy
36
- environment:
37
- ESPRESSO_SEQUENCER_L1_PROVIDER: ${CARTESI_BLOCKCHAIN_HTTP_ENDPOINT:-http://anvil:8545}
38
- ESPRESSO_SEQUENCER_API_PORT: 8770
39
- ESPRESSO_BUILDER_PORT: 8771
40
- ESPRESSO_PROVER_PORT: 8772
41
- ESPRESSO_DEV_NODE_PORT: 20000
42
- ESPRESSO_SEQUENCER_POSTGRES_HOST: database
43
- ESPRESSO_SEQUENCER_POSTGRES_PORT: 5432
44
- ESPRESSO_SEQUENCER_POSTGRES_USER: postgres
45
- ESPRESSO_SEQUENCER_POSTGRES_PASSWORD: password
46
- ESPRESSO_SEQUENCER_POSTGRES_DATABASE: sequencer
47
- ESPRESSO_SEQUENCER_ETH_MNEMONIC: ${CARTESI_AUTH_MNEMONIC:-test test test test test test test test test test test junk}
48
-
49
- prompt:
50
- image: debian:bookworm-slim
51
- environment:
52
- PROMPT_TXT_07_ESPRESSO: "Espresso running at http://localhost:${CARTESI_LISTEN_PORT}/espresso/"
53
-
54
- traefik-config-generator:
55
- environment:
56
- TRAEFIK_CONFIG_ESPRESSO_DEV: |
57
- http:
58
- routers:
59
- espresso-dev:
60
- rule: "PathPrefix(`/espresso/dev`)"
61
- middlewares:
62
- - "remove-espresso-dev-prefix"
63
- service: espresso-dev
64
- middlewares:
65
- remove-espresso-dev-prefix:
66
- replacePathRegex:
67
- regex: "^/espresso/dev/(.*)"
68
- replacement: "/$1"
69
- services:
70
- espresso-dev:
71
- loadBalancer:
72
- servers:
73
- - url: "http://espresso:20000"
74
- TRAEFIK_CONFIG_ESPRESSO_SEQUENCER: |
75
- http:
76
- routers:
77
- espresso-sequencer:
78
- rule: "PathPrefix(`/espresso/sequencer`)"
79
- middlewares:
80
- - "remove-espresso-sequencer-prefix"
81
- service: espresso-sequencer
82
- middlewares:
83
- remove-espresso-sequencer-prefix:
84
- replacePathRegex:
85
- regex: "^/espresso/sequencer/(.*)"
86
- replacement: "/$1"
87
- services:
88
- espresso-sequencer:
89
- loadBalancer:
90
- servers:
91
- - url: "http://espresso:8770"
92
- TRAEFIK_CONFIG_ESPRESSO_BUILDER: |
93
- http:
94
- routers:
95
- espresso-builder:
96
- rule: "PathPrefix(`/espresso/builder`)"
97
- middlewares:
98
- - "remove-espresso-builder-prefix"
99
- service: espresso-builder
100
- middlewares:
101
- remove-espresso-builder-prefix:
102
- replacePathRegex:
103
- regex: "^/espresso/builder/(.*)"
104
- replacement: "/$1"
105
- services:
106
- espresso-builder:
107
- loadBalancer:
108
- servers:
109
- - url: "http://espresso:8771"
110
- TRAEFIK_CONFIG_ESPRESSO_PROVER: |
111
- http:
112
- routers:
113
- espresso-prover:
114
- rule: "PathPrefix(`/espresso/prover`)"
115
- middlewares:
116
- - "remove-espresso-prover-prefix"
117
- service: espresso-prover
118
- middlewares:
119
- remove-espresso-prover-prefix:
120
- replacePathRegex:
121
- regex: "^/espresso/prover/(.*)"
122
- replacement: "/$1"
123
- services:
124
- espresso-prover:
125
- loadBalancer:
126
- servers:
127
- - url: "http://espresso:8772"
@@ -1,30 +0,0 @@
1
- services:
2
- validator:
3
- environment:
4
- CARTESI_FEATURE_HOST_MODE: true
5
- command: ["cartesi-rollups-node"]
6
-
7
- traefik-config-generator:
8
- environment:
9
- TRAEFIK_CONFIG_HOST_RUNNER: |
10
- http:
11
- routers:
12
- host-runner:
13
- rule: "PathPrefix(`/host-runner`)"
14
- middlewares:
15
- - "replace-host-runner-prefix"
16
- service: host-runner
17
- middlewares:
18
- replace-host-runner-prefix:
19
- replacePathRegex:
20
- regex: "^/host-runner/(.*)"
21
- replacement: "/rollup/$1"
22
- services:
23
- host-runner:
24
- loadBalancer:
25
- servers:
26
- - url: "http://validator:10000"
27
-
28
- prompt:
29
- environment:
30
- PROMPT_TXT_05_HOST_RUNNER: "Host Runner running at http://localhost:${CARTESI_LISTEN_PORT}/host-runner"
@@ -1,33 +0,0 @@
1
- services:
2
- mock-verifying-paymaster:
3
- image: cartesi/sdk:0.12.0-alpha.3
4
- command: "mock-verifying-paymaster"
5
- environment:
6
- - ALTO_RPC=http://alto:4337
7
- - ANVIL_RPC=http://anvil:8545
8
-
9
- prompt:
10
- image: debian:bookworm-slim
11
- environment:
12
- PROMPT_TXT_07_PAYMASTER: "Paymaster running at http://localhost:${CARTESI_LISTEN_PORT}/paymaster/"
13
-
14
- traefik-config-generator:
15
- environment:
16
- TRAEFIK_CONFIG_PAYMASTER: |
17
- http:
18
- routers:
19
- paymaster:
20
- rule: "PathPrefix(`/paymaster`)"
21
- middlewares:
22
- - "remove-paymaster-prefix"
23
- service: paymaster
24
- middlewares:
25
- remove-paymaster-prefix:
26
- replacePathRegex:
27
- regex: "^/paymaster/(.*)"
28
- replacement: "/$1"
29
- services:
30
- paymaster:
31
- loadBalancer:
32
- servers:
33
- - url: "http://mock-verifying-paymaster:3000"
@@ -1,17 +0,0 @@
1
- services:
2
- prompt:
3
- image: debian:bookworm-slim
4
- environment:
5
- PROMPT_TXT_10_EXIT: "Press Ctrl+C to stop the node"
6
- command:
7
- - /bin/bash
8
- - -c
9
- - |
10
- for txt_file in $${!PROMPT_TXT_*}
11
- do
12
- declare -n txt_content=$$txt_file
13
- _txt_file=$${txt_file:11}
14
- echo "$$txt_content"
15
- done
16
- trap exit INT TERM; sleep infinity & wait
17
- working_dir: /prompt
@@ -1,48 +0,0 @@
1
- services:
2
- traefik-config-generator:
3
- image: debian:bookworm-slim
4
- command:
5
- - /bin/bash
6
- - -c
7
- - |
8
- for cfg_file in $${!TRAEFIK_CONFIG_*}
9
- do
10
- declare -n cfg_content=$$cfg_file
11
- _cfg_file=$${cfg_file:15}
12
- echo "$$cfg_content" > /etc/traefik/conf.d/$${_cfg_file,,}.yaml
13
- done
14
- volumes:
15
- - traefik-conf:/etc/traefik/conf.d
16
-
17
- proxy:
18
- image: traefik:v2.10
19
- depends_on:
20
- traefik-config-generator:
21
- condition: service_completed_successfully
22
- healthcheck:
23
- test: ["CMD", "traefik", "healthcheck", "--ping"]
24
- interval: 5s
25
- timeout: 1s
26
- retries: 5
27
- command:
28
- [
29
- "--ping=true",
30
- "--entryPoints.web.address=:8088",
31
- "--entryPoints.traefik.address=:8080",
32
- "--metrics.prometheus=true",
33
- "--metrics.prometheus.addServicesLabels=true",
34
- "--providers.file.directory=/etc/traefik/conf.d",
35
- "--providers.file.watch=true",
36
- ]
37
- ports:
38
- - ${CARTESI_LISTEN_PORT:-8080}:8088
39
- volumes:
40
- - traefik-conf:/etc/traefik/conf.d
41
-
42
- prompt:
43
- depends_on:
44
- proxy:
45
- condition: service_healthy
46
-
47
- volumes:
48
- traefik-conf: {}
@@ -1,8 +0,0 @@
1
- services:
2
- dapp_deployer:
3
- volumes:
4
- - ./.cartesi/image:/usr/share/cartesi/snapshot:ro
5
-
6
- validator:
7
- volumes:
8
- - ./.cartesi/image:/tmp/snapshot:ro
@@ -1,6 +0,0 @@
1
- services:
2
- validator:
3
- deploy:
4
- resources:
5
- limits:
6
- cpus: "${CARTESI_VALIDATOR_CPUS}"
@@ -1,6 +0,0 @@
1
- services:
2
- validator:
3
- deploy:
4
- resources:
5
- limits:
6
- memory: "${CARTESI_VALIDATOR_MEMORY}M"