gate-evm-tools 1.0.27 → 1.0.31

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 (641) hide show
  1. package/README.md +16 -1
  2. package/bin/cli.js +3 -0
  3. package/bin/delivery.cjs +51 -0
  4. package/bin/manifest-bootstrap.js +4 -15
  5. package/bin/workflow.cjs +1 -1
  6. package/dist/commands/plan/file-store.d.ts.map +1 -0
  7. package/dist/commands/plan/generate-deployment.d.ts +48 -0
  8. package/dist/commands/plan/generate-deployment.d.ts.map +1 -0
  9. package/dist/commands/plan/generate-deployment.js +211 -0
  10. package/dist/commands/plan/generate-deployment.js.map +1 -0
  11. package/dist/commands/plan/helpers.d.ts.map +1 -0
  12. package/dist/commands/plan/index.d.ts +3 -0
  13. package/dist/commands/plan/index.d.ts.map +1 -0
  14. package/dist/commands/plan/index.js +88 -0
  15. package/dist/commands/plan/index.js.map +1 -0
  16. package/dist/commands/sync.js +1 -1
  17. package/dist/commands/sync.js.map +1 -1
  18. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  19. package/dist/core/BytecodeChecker.js +27 -8
  20. package/dist/core/BytecodeChecker.js.map +1 -1
  21. package/dist/core/preparation/artifacts.d.ts +2 -0
  22. package/dist/core/preparation/artifacts.d.ts.map +1 -1
  23. package/dist/core/preparation/artifacts.js +9 -3
  24. package/dist/core/preparation/artifacts.js.map +1 -1
  25. package/dist/core/preparation/evm.d.ts +38 -2
  26. package/dist/core/preparation/evm.d.ts.map +1 -1
  27. package/dist/core/preparation/evm.js +104 -32
  28. package/dist/core/preparation/evm.js.map +1 -1
  29. package/dist/core/preparation/evmManifestSync.d.ts +63 -0
  30. package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
  31. package/dist/core/preparation/evmManifestSync.js +146 -0
  32. package/dist/core/preparation/evmManifestSync.js.map +1 -0
  33. package/dist/core/preparation/index.d.ts +40 -2
  34. package/dist/core/preparation/index.d.ts.map +1 -1
  35. package/dist/core/preparation/index.js +3 -3
  36. package/dist/core/preparation/index.js.map +1 -1
  37. package/dist/core/preparation/manifest.d.ts +15 -3
  38. package/dist/core/preparation/manifest.d.ts.map +1 -1
  39. package/dist/core/preparation/manifest.js +21 -26
  40. package/dist/core/preparation/manifest.js.map +1 -1
  41. package/dist/core/preparation/normalize.d.ts.map +1 -1
  42. package/dist/core/preparation/normalize.js +14 -9
  43. package/dist/core/preparation/normalize.js.map +1 -1
  44. package/dist/core/preparation/types.d.ts +7 -2
  45. package/dist/core/preparation/types.d.ts.map +1 -1
  46. package/dist/custody/hardhat-runtime.d.ts.map +1 -1
  47. package/dist/custody/hardhat-runtime.js +2 -0
  48. package/dist/custody/hardhat-runtime.js.map +1 -1
  49. package/dist/custody/hardhat.d.ts +1 -0
  50. package/dist/custody/hardhat.d.ts.map +1 -1
  51. package/dist/custody/hardhat.js +1 -0
  52. package/dist/custody/hardhat.js.map +1 -1
  53. package/dist/custody/index.d.ts +1 -0
  54. package/dist/custody/index.d.ts.map +1 -1
  55. package/dist/custody/index.js +1 -0
  56. package/dist/custody/index.js.map +1 -1
  57. package/dist/custody/provider-wait.d.ts +13 -0
  58. package/dist/custody/provider-wait.d.ts.map +1 -0
  59. package/dist/custody/provider-wait.js +78 -0
  60. package/dist/custody/provider-wait.js.map +1 -0
  61. package/dist/delivery/policy.d.ts +6 -0
  62. package/dist/delivery/policy.d.ts.map +1 -0
  63. package/dist/delivery/policy.js +24 -0
  64. package/dist/delivery/policy.js.map +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/sync/index.d.ts +15 -0
  69. package/dist/sync/index.d.ts.map +1 -1
  70. package/dist/sync/index.js +8 -0
  71. package/dist/sync/index.js.map +1 -1
  72. package/dist/workflow/index.d.ts +6 -1
  73. package/dist/workflow/index.d.ts.map +1 -1
  74. package/dist/workflow/index.js +4 -0
  75. package/dist/workflow/index.js.map +1 -1
  76. package/dist-cjs/core/BytecodeChecker.js +526 -0
  77. package/dist-cjs/core/BytecodeChecker.js.map +1 -0
  78. package/dist-cjs/core/legacyProxyArtifact.js +42 -0
  79. package/dist-cjs/core/legacyProxyArtifact.js.map +1 -0
  80. package/dist-cjs/core/preparation/artifacts.js +11 -4
  81. package/dist-cjs/core/preparation/artifacts.js.map +1 -1
  82. package/dist-cjs/core/preparation/evm.js +105 -32
  83. package/dist-cjs/core/preparation/evm.js.map +1 -1
  84. package/dist-cjs/core/preparation/evmManifestSync.js +155 -0
  85. package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -0
  86. package/dist-cjs/core/preparation/index.js +3 -3
  87. package/dist-cjs/core/preparation/index.js.map +1 -1
  88. package/dist-cjs/core/preparation/manifest.js +23 -28
  89. package/dist-cjs/core/preparation/manifest.js.map +1 -1
  90. package/dist-cjs/core/preparation/normalize.js +14 -9
  91. package/dist-cjs/core/preparation/normalize.js.map +1 -1
  92. package/dist-cjs/custody/hardhat-runtime.js +2 -0
  93. package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
  94. package/dist-cjs/custody/hardhat.js +3 -1
  95. package/dist-cjs/custody/hardhat.js.map +1 -1
  96. package/dist-cjs/custody/index.js +3 -1
  97. package/dist-cjs/custody/index.js.map +1 -1
  98. package/dist-cjs/custody/provider-wait.js +81 -0
  99. package/dist-cjs/custody/provider-wait.js.map +1 -0
  100. package/dist-cjs/delivery/policy.js +29 -0
  101. package/dist-cjs/delivery/policy.js.map +1 -0
  102. package/dist-cjs/sync/index.js +8 -0
  103. package/dist-cjs/sync/index.js.map +1 -1
  104. package/dist-cjs/workflow/index.js +12 -1
  105. package/dist-cjs/workflow/index.js.map +1 -1
  106. package/dist-runtime/config/hardhatAdapters.d.ts +2 -0
  107. package/dist-runtime/config/hardhatAdapters.js +8 -0
  108. package/dist-runtime/config/hardhatAdapters.js.map +1 -1
  109. package/dist-runtime/config/networks.d.ts +25 -1
  110. package/dist-runtime/config/networks.js +8 -2
  111. package/dist-runtime/config/networks.js.map +1 -1
  112. package/dist-runtime/config/openzeppelin.d.ts +2 -1
  113. package/dist-runtime/config/openzeppelin.js +2 -19
  114. package/dist-runtime/config/openzeppelin.js.map +1 -1
  115. package/dist-runtime/delivery/abi.d.ts +14 -0
  116. package/dist-runtime/delivery/abi.js +161 -0
  117. package/dist-runtime/delivery/abi.js.map +1 -0
  118. package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
  119. package/dist-runtime/delivery/aggregate-bootstrap.js +40 -0
  120. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
  121. package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
  122. package/dist-runtime/delivery/aggregate-channel.js +155 -0
  123. package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
  124. package/dist-runtime/delivery/aggregate-inputs.d.ts +168 -0
  125. package/dist-runtime/delivery/aggregate-inputs.js +57 -0
  126. package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
  127. package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
  128. package/dist-runtime/delivery/aggregate-source.js +79 -0
  129. package/dist-runtime/delivery/aggregate-source.js.map +1 -0
  130. package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
  131. package/dist-runtime/delivery/aggregate-worker.js +191 -0
  132. package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
  133. package/dist-runtime/delivery/aggregate.d.ts +51 -0
  134. package/dist-runtime/delivery/aggregate.js +190 -0
  135. package/dist-runtime/delivery/aggregate.js.map +1 -0
  136. package/dist-runtime/delivery/bindings.d.ts +21 -0
  137. package/dist-runtime/delivery/bindings.js +53 -0
  138. package/dist-runtime/delivery/bindings.js.map +1 -0
  139. package/dist-runtime/delivery/check-code.d.ts +19 -0
  140. package/dist-runtime/delivery/check-code.js +63 -0
  141. package/dist-runtime/delivery/check-code.js.map +1 -0
  142. package/dist-runtime/delivery/closure-format.d.ts +77 -0
  143. package/dist-runtime/delivery/closure-format.js +225 -0
  144. package/dist-runtime/delivery/closure-format.js.map +1 -0
  145. package/dist-runtime/delivery/codec-pin.d.ts +2 -0
  146. package/dist-runtime/delivery/codec-pin.js +7 -0
  147. package/dist-runtime/delivery/codec-pin.js.map +1 -0
  148. package/dist-runtime/delivery/codec.d.ts +19 -0
  149. package/dist-runtime/delivery/codec.js +73 -0
  150. package/dist-runtime/delivery/codec.js.map +1 -0
  151. package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
  152. package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
  153. package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
  154. package/dist-runtime/delivery/compiler-files.d.ts +40 -0
  155. package/dist-runtime/delivery/compiler-files.js +220 -0
  156. package/dist-runtime/delivery/compiler-files.js.map +1 -0
  157. package/dist-runtime/delivery/compiler-io.d.ts +2 -0
  158. package/dist-runtime/delivery/compiler-io.js +13 -0
  159. package/dist-runtime/delivery/compiler-io.js.map +1 -0
  160. package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
  161. package/dist-runtime/delivery/compiler-pins.js +147 -0
  162. package/dist-runtime/delivery/compiler-pins.js.map +1 -0
  163. package/dist-runtime/delivery/compiler.d.ts +188 -0
  164. package/dist-runtime/delivery/compiler.js +850 -0
  165. package/dist-runtime/delivery/compiler.js.map +1 -0
  166. package/dist-runtime/delivery/config.d.ts +48 -0
  167. package/dist-runtime/delivery/config.js +99 -0
  168. package/dist-runtime/delivery/config.js.map +1 -0
  169. package/dist-runtime/delivery/configuration-definition.d.ts +22 -0
  170. package/dist-runtime/delivery/configuration-definition.js +316 -0
  171. package/dist-runtime/delivery/configuration-definition.js.map +1 -0
  172. package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
  173. package/dist-runtime/delivery/configuration-hre.js +198 -0
  174. package/dist-runtime/delivery/configuration-hre.js.map +1 -0
  175. package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
  176. package/dist-runtime/delivery/configuration-runtime.js +248 -0
  177. package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
  178. package/dist-runtime/delivery/configuration.d.ts +35 -0
  179. package/dist-runtime/delivery/configuration.js +83 -0
  180. package/dist-runtime/delivery/configuration.js.map +1 -0
  181. package/dist-runtime/delivery/create2.d.ts +3 -0
  182. package/dist-runtime/delivery/create2.js +48 -0
  183. package/dist-runtime/delivery/create2.js.map +1 -0
  184. package/dist-runtime/delivery/custom-closure.d.ts +27 -0
  185. package/dist-runtime/delivery/custom-closure.js +818 -0
  186. package/dist-runtime/delivery/custom-closure.js.map +1 -0
  187. package/dist-runtime/delivery/custom-format.d.ts +35 -0
  188. package/dist-runtime/delivery/custom-format.js +383 -0
  189. package/dist-runtime/delivery/custom-format.js.map +1 -0
  190. package/dist-runtime/delivery/custom.d.ts +32 -0
  191. package/dist-runtime/delivery/custom.js +158 -0
  192. package/dist-runtime/delivery/custom.js.map +1 -0
  193. package/dist-runtime/delivery/data.d.ts +7 -0
  194. package/dist-runtime/delivery/data.js +86 -0
  195. package/dist-runtime/delivery/data.js.map +1 -0
  196. package/dist-runtime/delivery/development.d.ts +91 -0
  197. package/dist-runtime/delivery/development.js +395 -0
  198. package/dist-runtime/delivery/development.js.map +1 -0
  199. package/dist-runtime/delivery/engine.d.ts +9 -0
  200. package/dist-runtime/delivery/engine.js +23 -0
  201. package/dist-runtime/delivery/engine.js.map +1 -0
  202. package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
  203. package/dist-runtime/delivery/eoa-observation.js +145 -0
  204. package/dist-runtime/delivery/eoa-observation.js.map +1 -0
  205. package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
  206. package/dist-runtime/delivery/eoa-signed.js +74 -0
  207. package/dist-runtime/delivery/eoa-signed.js.map +1 -0
  208. package/dist-runtime/delivery/eoa.d.ts +81 -0
  209. package/dist-runtime/delivery/eoa.js +274 -0
  210. package/dist-runtime/delivery/eoa.js.map +1 -0
  211. package/dist-runtime/delivery/execution-db.d.ts +20 -0
  212. package/dist-runtime/delivery/execution-db.js +153 -0
  213. package/dist-runtime/delivery/execution-db.js.map +1 -0
  214. package/dist-runtime/delivery/execution-files.d.ts +9 -0
  215. package/dist-runtime/delivery/execution-files.js +138 -0
  216. package/dist-runtime/delivery/execution-files.js.map +1 -0
  217. package/dist-runtime/delivery/execution-model.d.ts +56 -0
  218. package/dist-runtime/delivery/execution-model.js +66 -0
  219. package/dist-runtime/delivery/execution-model.js.map +1 -0
  220. package/dist-runtime/delivery/execution-store.d.ts +48 -0
  221. package/dist-runtime/delivery/execution-store.js +361 -0
  222. package/dist-runtime/delivery/execution-store.js.map +1 -0
  223. package/dist-runtime/delivery/existing-code.d.ts +37 -0
  224. package/dist-runtime/delivery/existing-code.js +75 -0
  225. package/dist-runtime/delivery/existing-code.js.map +1 -0
  226. package/dist-runtime/delivery/export.d.ts +51 -0
  227. package/dist-runtime/delivery/export.js +69 -0
  228. package/dist-runtime/delivery/export.js.map +1 -0
  229. package/dist-runtime/delivery/forkAudit.d.ts +119 -0
  230. package/dist-runtime/delivery/forkAudit.js +473 -0
  231. package/dist-runtime/delivery/forkAudit.js.map +1 -0
  232. package/dist-runtime/delivery/hardhat.d.ts +3 -0
  233. package/dist-runtime/delivery/hardhat.js +45 -0
  234. package/dist-runtime/delivery/hardhat.js.map +1 -0
  235. package/dist-runtime/delivery/history-registration.d.ts +2 -0
  236. package/dist-runtime/delivery/history-registration.js +17 -0
  237. package/dist-runtime/delivery/history-registration.js.map +1 -0
  238. package/dist-runtime/delivery/identities.d.ts +22 -0
  239. package/dist-runtime/delivery/identities.js +97 -0
  240. package/dist-runtime/delivery/identities.js.map +1 -0
  241. package/dist-runtime/delivery/input-files.d.ts +5 -0
  242. package/dist-runtime/delivery/input-files.js +70 -0
  243. package/dist-runtime/delivery/input-files.js.map +1 -0
  244. package/dist-runtime/delivery/inputs.d.ts +62 -0
  245. package/dist-runtime/delivery/inputs.js +187 -0
  246. package/dist-runtime/delivery/inputs.js.map +1 -0
  247. package/dist-runtime/delivery/journal.d.ts +35 -0
  248. package/dist-runtime/delivery/journal.js +270 -0
  249. package/dist-runtime/delivery/journal.js.map +1 -0
  250. package/dist-runtime/delivery/manifest.d.ts +14 -0
  251. package/dist-runtime/delivery/manifest.js +68 -0
  252. package/dist-runtime/delivery/manifest.js.map +1 -0
  253. package/dist-runtime/delivery/materialization.d.ts +20 -0
  254. package/dist-runtime/delivery/materialization.js +138 -0
  255. package/dist-runtime/delivery/materialization.js.map +1 -0
  256. package/dist-runtime/delivery/observations.d.ts +31 -0
  257. package/dist-runtime/delivery/observations.js +38 -0
  258. package/dist-runtime/delivery/observations.js.map +1 -0
  259. package/dist-runtime/delivery/parameters.d.ts +53 -0
  260. package/dist-runtime/delivery/parameters.js +257 -0
  261. package/dist-runtime/delivery/parameters.js.map +1 -0
  262. package/dist-runtime/delivery/pending.d.ts +70 -0
  263. package/dist-runtime/delivery/pending.js +99 -0
  264. package/dist-runtime/delivery/pending.js.map +1 -0
  265. package/dist-runtime/delivery/plan.d.ts +50 -0
  266. package/dist-runtime/delivery/plan.js +209 -0
  267. package/dist-runtime/delivery/plan.js.map +1 -0
  268. package/dist-runtime/delivery/planning.d.ts +81 -0
  269. package/dist-runtime/delivery/planning.js +302 -0
  270. package/dist-runtime/delivery/planning.js.map +1 -0
  271. package/dist-runtime/delivery/policy.d.ts +4 -0
  272. package/dist-runtime/delivery/policy.js +9 -0
  273. package/dist-runtime/delivery/policy.js.map +1 -0
  274. package/dist-runtime/delivery/preparation.d.ts +6 -0
  275. package/dist-runtime/delivery/preparation.js +158 -0
  276. package/dist-runtime/delivery/preparation.js.map +1 -0
  277. package/dist-runtime/delivery/production-environment.d.ts +2 -0
  278. package/dist-runtime/delivery/production-environment.js +12 -0
  279. package/dist-runtime/delivery/production-environment.js.map +1 -0
  280. package/dist-runtime/delivery/production-finalization.d.ts +86 -0
  281. package/dist-runtime/delivery/production-finalization.js +278 -0
  282. package/dist-runtime/delivery/production-finalization.js.map +1 -0
  283. package/dist-runtime/delivery/production.d.ts +461 -0
  284. package/dist-runtime/delivery/production.js +396 -0
  285. package/dist-runtime/delivery/production.js.map +1 -0
  286. package/dist-runtime/delivery/project-files.d.ts +8 -0
  287. package/dist-runtime/delivery/project-files.js +82 -0
  288. package/dist-runtime/delivery/project-files.js.map +1 -0
  289. package/dist-runtime/delivery/project.d.ts +15 -0
  290. package/dist-runtime/delivery/project.js +157 -0
  291. package/dist-runtime/delivery/project.js.map +1 -0
  292. package/dist-runtime/delivery/protocol.d.ts +49 -0
  293. package/dist-runtime/delivery/protocol.js +112 -0
  294. package/dist-runtime/delivery/protocol.js.map +1 -0
  295. package/dist-runtime/delivery/references.d.ts +19 -0
  296. package/dist-runtime/delivery/references.js +84 -0
  297. package/dist-runtime/delivery/references.js.map +1 -0
  298. package/dist-runtime/delivery/release-graph.d.ts +93 -0
  299. package/dist-runtime/delivery/release-graph.js +106 -0
  300. package/dist-runtime/delivery/release-graph.js.map +1 -0
  301. package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
  302. package/dist-runtime/delivery/release-history-capture.js +76 -0
  303. package/dist-runtime/delivery/release-history-capture.js.map +1 -0
  304. package/dist-runtime/delivery/release-history.d.ts +43 -0
  305. package/dist-runtime/delivery/release-history.js +246 -0
  306. package/dist-runtime/delivery/release-history.js.map +1 -0
  307. package/dist-runtime/delivery/release.d.ts +172 -0
  308. package/dist-runtime/delivery/release.js +209 -0
  309. package/dist-runtime/delivery/release.js.map +1 -0
  310. package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
  311. package/dist-runtime/delivery/safe-manifest.js +13 -0
  312. package/dist-runtime/delivery/safe-manifest.js.map +1 -0
  313. package/dist-runtime/delivery/safe-observation.d.ts +30 -0
  314. package/dist-runtime/delivery/safe-observation.js +487 -0
  315. package/dist-runtime/delivery/safe-observation.js.map +1 -0
  316. package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
  317. package/dist-runtime/delivery/safe-prepare.js +81 -0
  318. package/dist-runtime/delivery/safe-prepare.js.map +1 -0
  319. package/dist-runtime/delivery/safe.d.ts +91 -0
  320. package/dist-runtime/delivery/safe.js +243 -0
  321. package/dist-runtime/delivery/safe.js.map +1 -0
  322. package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
  323. package/dist-runtime/delivery/same-fork-baseline.js +20 -0
  324. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
  325. package/dist-runtime/delivery/setup.d.ts +31 -0
  326. package/dist-runtime/delivery/setup.js +215 -0
  327. package/dist-runtime/delivery/setup.js.map +1 -0
  328. package/dist-runtime/delivery/source.d.ts +41 -0
  329. package/dist-runtime/delivery/source.js +137 -0
  330. package/dist-runtime/delivery/source.js.map +1 -0
  331. package/dist-runtime/delivery/target-fields.d.ts +2 -0
  332. package/dist-runtime/delivery/target-fields.js +11 -0
  333. package/dist-runtime/delivery/target-fields.js.map +1 -0
  334. package/dist-runtime/delivery/validation.d.ts +9 -0
  335. package/dist-runtime/delivery/validation.js +150 -0
  336. package/dist-runtime/delivery/validation.js.map +1 -0
  337. package/dist-runtime/delivery/verification.d.ts +16 -0
  338. package/dist-runtime/delivery/verification.js +65 -0
  339. package/dist-runtime/delivery/verification.js.map +1 -0
  340. package/dist-runtime/migrate.js +1 -0
  341. package/dist-runtime/migrate.js.map +1 -1
  342. package/dist-runtime/miner/binary.d.ts +2 -0
  343. package/dist-runtime/miner/binary.js +54 -0
  344. package/dist-runtime/miner/binary.js.map +1 -0
  345. package/dist-runtime/miner/cli.d.ts +1 -0
  346. package/dist-runtime/miner/cli.js +131 -0
  347. package/dist-runtime/miner/cli.js.map +1 -0
  348. package/dist-runtime/miner/index.d.ts +5 -0
  349. package/dist-runtime/miner/index.js +13 -0
  350. package/dist-runtime/miner/index.js.map +1 -0
  351. package/dist-runtime/miner/request.d.ts +7 -0
  352. package/dist-runtime/miner/request.js +73 -0
  353. package/dist-runtime/miner/request.js.map +1 -0
  354. package/dist-runtime/miner/runner.d.ts +2 -0
  355. package/dist-runtime/miner/runner.js +131 -0
  356. package/dist-runtime/miner/runner.js.map +1 -0
  357. package/dist-runtime/miner/types.d.ts +89 -0
  358. package/dist-runtime/miner/types.js +3 -0
  359. package/dist-runtime/miner/types.js.map +1 -0
  360. package/dist-runtime/miner/verify.d.ts +2 -0
  361. package/dist-runtime/miner/verify.js +75 -0
  362. package/dist-runtime/miner/verify.js.map +1 -0
  363. package/dist-runtime/runtime-identity.json +2 -2
  364. package/dist-runtime/vendor/plan-codec/index.cjs +820 -0
  365. package/dist-runtime/vendor/plan-codec/index.d.cts +32 -0
  366. package/dist-runtime/vendor/plan-codec/provenance.json +24 -0
  367. package/dist-runtime/workflow/engine.d.ts +14 -0
  368. package/dist-runtime/workflow/engine.js +160 -0
  369. package/dist-runtime/workflow/engine.js.map +1 -0
  370. package/dist-runtime/workflow/lib/authority.d.ts +6 -3
  371. package/dist-runtime/workflow/lib/authority.js.map +1 -1
  372. package/dist-runtime/workflow/lib/calls.d.ts +1 -1
  373. package/dist-runtime/workflow/lib/calls.js +43 -34
  374. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  375. package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
  376. package/dist-runtime/workflow/lib/canonicalData.js +68 -0
  377. package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
  378. package/dist-runtime/workflow/lib/config.d.ts +3 -1
  379. package/dist-runtime/workflow/lib/config.js.map +1 -1
  380. package/dist-runtime/workflow/lib/context.d.ts +76 -0
  381. package/dist-runtime/workflow/lib/context.js +3 -0
  382. package/dist-runtime/workflow/lib/context.js.map +1 -0
  383. package/dist-runtime/workflow/lib/controlledMulticallAbi.d.ts +2 -0
  384. package/dist-runtime/workflow/lib/controlledMulticallAbi.js +10 -0
  385. package/dist-runtime/workflow/lib/controlledMulticallAbi.js.map +1 -0
  386. package/dist-runtime/workflow/lib/create2.d.ts +1 -1
  387. package/dist-runtime/workflow/lib/create2.js +9 -12
  388. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  389. package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
  390. package/dist-runtime/workflow/lib/deployments.js +5 -13
  391. package/dist-runtime/workflow/lib/deployments.js.map +1 -1
  392. package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
  393. package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
  394. package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
  395. package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
  396. package/dist-runtime/workflow/lib/executionPlan.js +15 -210
  397. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
  398. package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
  399. package/dist-runtime/workflow/lib/gateTool.js +20 -10
  400. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  401. package/dist-runtime/workflow/lib/gateToolSync.d.ts +1 -1
  402. package/dist-runtime/workflow/lib/gateToolSync.js +3 -2
  403. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  404. package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
  405. package/dist-runtime/workflow/lib/operationNames.js +34 -0
  406. package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
  407. package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
  408. package/dist-runtime/workflow/lib/parameters.js +9 -24
  409. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  410. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
  411. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
  412. package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
  413. package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
  414. package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
  415. package/dist-runtime/workflow/lib/plan.d.ts +55 -0
  416. package/dist-runtime/workflow/lib/plan.js +324 -0
  417. package/dist-runtime/workflow/lib/plan.js.map +1 -0
  418. package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
  419. package/dist-runtime/workflow/lib/planCli.js +279 -0
  420. package/dist-runtime/workflow/lib/planCli.js.map +1 -0
  421. package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
  422. package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
  423. package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
  424. package/dist-runtime/workflow/lib/proxy.d.ts +3 -2
  425. package/dist-runtime/workflow/lib/proxy.js +3 -4
  426. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  427. package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
  428. package/dist-runtime/workflow/lib/runtime.js +48 -0
  429. package/dist-runtime/workflow/lib/runtime.js.map +1 -0
  430. package/dist-runtime/workflow/lib/signer.d.ts +3 -2
  431. package/dist-runtime/workflow/lib/signer.js +18 -18
  432. package/dist-runtime/workflow/lib/signer.js.map +1 -1
  433. package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
  434. package/dist-runtime/workflow/lib/simulation.js +39 -31
  435. package/dist-runtime/workflow/lib/simulation.js.map +1 -1
  436. package/dist-runtime/workflow/lib/state.js +3 -3
  437. package/dist-runtime/workflow/lib/state.js.map +1 -1
  438. package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
  439. package/dist-runtime/workflow/lib/staticValidation.js +54 -10
  440. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
  441. package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
  442. package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
  443. package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
  444. package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
  445. package/dist-runtime/workflow/lib/typedValue.js +76 -0
  446. package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
  447. package/dist-runtime/workflow/lib/validation.d.ts +23 -0
  448. package/dist-runtime/workflow/lib/validation.js +15 -0
  449. package/dist-runtime/workflow/lib/validation.js.map +1 -0
  450. package/dist-runtime/workflow/planAdd.d.ts +1 -0
  451. package/dist-runtime/workflow/planAdd.js +11 -0
  452. package/dist-runtime/workflow/planAdd.js.map +1 -0
  453. package/dist-runtime/workflow/planRead.d.ts +1 -0
  454. package/dist-runtime/workflow/planRead.js +11 -0
  455. package/dist-runtime/workflow/planRead.js.map +1 -0
  456. package/dist-runtime/workflow/planStatus.d.ts +1 -0
  457. package/dist-runtime/workflow/planStatus.js +11 -0
  458. package/dist-runtime/workflow/planStatus.js.map +1 -0
  459. package/dist-runtime/workflow/planWrite.d.ts +1 -0
  460. package/dist-runtime/workflow/planWrite.js +11 -0
  461. package/dist-runtime/workflow/planWrite.js.map +1 -0
  462. package/dist-runtime/workflow/run.d.ts +1 -40
  463. package/dist-runtime/workflow/run.js +68 -136
  464. package/dist-runtime/workflow/run.js.map +1 -1
  465. package/dist-runtime/workflow/staticValidate.js +8 -3
  466. package/dist-runtime/workflow/staticValidate.js.map +1 -1
  467. package/dist-runtime/workflow/steps/call.d.ts +1 -1
  468. package/dist-runtime/workflow/steps/check.d.ts +1 -1
  469. package/dist-runtime/workflow/steps/custom.d.ts +1 -1
  470. package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
  471. package/dist-runtime/workflow/steps/deploy.js +58 -55
  472. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  473. package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
  474. package/dist-runtime/workflow/steps/upgrade.js +63 -41
  475. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  476. package/dist-runtime/workflow/steps/view.d.ts +1 -1
  477. package/docs/compiler-qualification.md +32 -0
  478. package/docs/configuration-runtime-observation.md +29 -0
  479. package/docs/create2-miner.md +100 -0
  480. package/docs/delivery-aggregate.md +27 -0
  481. package/docs/delivery-custom-input-closure.md +51 -0
  482. package/docs/delivery-development.md +32 -0
  483. package/docs/delivery-eoa.md +46 -0
  484. package/docs/delivery-evm-manifest.md +20 -0
  485. package/docs/delivery-execution-store.md +33 -0
  486. package/docs/delivery-inputs.md +46 -0
  487. package/docs/delivery-parameters.md +65 -0
  488. package/docs/delivery-planning.md +140 -0
  489. package/docs/delivery-release.md +65 -0
  490. package/docs/delivery-safe.md +72 -0
  491. package/docs/delivery-setup.md +146 -0
  492. package/docs/delivery-source.md +67 -0
  493. package/docs/direct-package-acceptance.md +20 -0
  494. package/docs/external-infrastructure-acceptance.md +33 -0
  495. package/docs/network-runtime-acceptance.md +18 -0
  496. package/docs/plans/2026-09-09-workflow-extraction.md +16 -0
  497. package/docs/superpowers/plans/2026-07-22-manifest-bootstrap-transaction.md +50 -0
  498. package/docs/superpowers/plans/2026-07-22-manifest-review-remediation.md +49 -0
  499. package/docs/superpowers/plans/2026-08-17-custody-hardhat-signers.md +227 -0
  500. package/docs/superpowers/plans/2026-09-09-remove-template-infrastructure-contracts.md +11 -0
  501. package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
  502. package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
  503. package/docs/workflow-reference.md +1181 -0
  504. package/docs/workflow-runtime-acceptance.md +17 -0
  505. package/docs/workflow-runtime.md +56 -0
  506. package/package.json +134 -9
  507. package/resources/create2/LICENSE +21 -0
  508. package/resources/create2/README.md +9 -0
  509. package/resources/create2/darwin-arm64/smartflow_miner +0 -0
  510. package/resources/create2/darwin-x64/smartflow_miner +0 -0
  511. package/resources/create2/manifest.json +27 -0
  512. package/runtime/config/hardhatAdapters.ts +8 -0
  513. package/runtime/config/networks.ts +20 -11
  514. package/runtime/config/openzeppelin.ts +3 -21
  515. package/runtime/delivery/abi.ts +225 -0
  516. package/runtime/delivery/aggregate-bootstrap.ts +29 -0
  517. package/runtime/delivery/aggregate-channel.ts +85 -0
  518. package/runtime/delivery/aggregate-inputs.ts +39 -0
  519. package/runtime/delivery/aggregate-source.ts +53 -0
  520. package/runtime/delivery/aggregate-worker.ts +133 -0
  521. package/runtime/delivery/aggregate.ts +139 -0
  522. package/runtime/delivery/bindings.ts +37 -0
  523. package/runtime/delivery/check-code.ts +38 -0
  524. package/runtime/delivery/closure-format.ts +350 -0
  525. package/runtime/delivery/codec-pin.ts +3 -0
  526. package/runtime/delivery/codec.ts +50 -0
  527. package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
  528. package/runtime/delivery/compiler-files.ts +179 -0
  529. package/runtime/delivery/compiler-io.ts +10 -0
  530. package/runtime/delivery/compiler-pins.ts +143 -0
  531. package/runtime/delivery/compiler.ts +700 -0
  532. package/runtime/delivery/config.ts +93 -0
  533. package/runtime/delivery/configuration-definition.ts +133 -0
  534. package/runtime/delivery/configuration-hre.ts +130 -0
  535. package/runtime/delivery/configuration-runtime.ts +163 -0
  536. package/runtime/delivery/configuration.ts +64 -0
  537. package/runtime/delivery/create2.ts +57 -0
  538. package/runtime/delivery/custom-closure.ts +993 -0
  539. package/runtime/delivery/custom-format.ts +464 -0
  540. package/runtime/delivery/custom.ts +219 -0
  541. package/runtime/delivery/data.ts +94 -0
  542. package/runtime/delivery/development.ts +262 -0
  543. package/runtime/delivery/engine.ts +29 -0
  544. package/runtime/delivery/eoa-observation.ts +106 -0
  545. package/runtime/delivery/eoa-signed.ts +55 -0
  546. package/runtime/delivery/eoa.ts +288 -0
  547. package/runtime/delivery/execution-db.ts +131 -0
  548. package/runtime/delivery/execution-files.ts +135 -0
  549. package/runtime/delivery/execution-model.ts +102 -0
  550. package/runtime/delivery/execution-store.ts +411 -0
  551. package/runtime/delivery/existing-code.ts +44 -0
  552. package/runtime/delivery/export.ts +99 -0
  553. package/runtime/delivery/forkAudit.ts +620 -0
  554. package/runtime/delivery/hardhat.ts +38 -0
  555. package/runtime/delivery/history-registration.ts +10 -0
  556. package/runtime/delivery/identities.ts +132 -0
  557. package/runtime/delivery/input-files.ts +46 -0
  558. package/runtime/delivery/inputs.ts +197 -0
  559. package/runtime/delivery/journal.ts +201 -0
  560. package/runtime/delivery/manifest.ts +54 -0
  561. package/runtime/delivery/materialization.ts +53 -0
  562. package/runtime/delivery/observations.ts +60 -0
  563. package/runtime/delivery/parameters.ts +349 -0
  564. package/runtime/delivery/pending.ts +98 -0
  565. package/runtime/delivery/plan.ts +337 -0
  566. package/runtime/delivery/planning.ts +397 -0
  567. package/runtime/delivery/policy.ts +9 -0
  568. package/runtime/delivery/preparation.ts +224 -0
  569. package/runtime/delivery/production-environment.ts +6 -0
  570. package/runtime/delivery/production-finalization.ts +172 -0
  571. package/runtime/delivery/production.ts +375 -0
  572. package/runtime/delivery/project-files.ts +58 -0
  573. package/runtime/delivery/project.ts +117 -0
  574. package/runtime/delivery/protocol.ts +94 -0
  575. package/runtime/delivery/references.ts +106 -0
  576. package/runtime/delivery/release-graph.ts +49 -0
  577. package/runtime/delivery/release-history-capture.ts +32 -0
  578. package/runtime/delivery/release-history.ts +120 -0
  579. package/runtime/delivery/release.ts +128 -0
  580. package/runtime/delivery/safe-manifest.ts +11 -0
  581. package/runtime/delivery/safe-observation.ts +626 -0
  582. package/runtime/delivery/safe-prepare.ts +101 -0
  583. package/runtime/delivery/safe.ts +344 -0
  584. package/runtime/delivery/same-fork-baseline.ts +16 -0
  585. package/runtime/delivery/setup.ts +172 -0
  586. package/runtime/delivery/source.ts +130 -0
  587. package/runtime/delivery/target-fields.ts +7 -0
  588. package/runtime/delivery/validation.ts +247 -0
  589. package/runtime/delivery/verification.ts +47 -0
  590. package/runtime/migrate.ts +1 -0
  591. package/runtime/miner/binary.ts +41 -0
  592. package/runtime/miner/cli.ts +87 -0
  593. package/runtime/miner/index.ts +5 -0
  594. package/runtime/miner/request.ts +54 -0
  595. package/runtime/miner/runner.ts +90 -0
  596. package/runtime/miner/types.ts +71 -0
  597. package/runtime/miner/verify.ts +61 -0
  598. package/runtime/vendor/plan-codec/index.cjs +820 -0
  599. package/runtime/vendor/plan-codec/index.d.cts +32 -0
  600. package/runtime/vendor/plan-codec/provenance.json +24 -0
  601. package/runtime/workflow/engine.ts +174 -0
  602. package/runtime/workflow/lib/authority.ts +3 -3
  603. package/runtime/workflow/lib/calls.ts +46 -37
  604. package/runtime/workflow/lib/canonicalData.ts +45 -0
  605. package/runtime/workflow/lib/config.ts +1 -1
  606. package/runtime/workflow/lib/context.ts +76 -0
  607. package/runtime/workflow/lib/controlledMulticallAbi.ts +6 -0
  608. package/runtime/workflow/lib/create2.ts +10 -12
  609. package/runtime/workflow/lib/deployments.ts +6 -14
  610. package/runtime/workflow/lib/evidencePorts.ts +20 -0
  611. package/runtime/workflow/lib/executionPlan.ts +17 -268
  612. package/runtime/workflow/lib/gateTool.ts +20 -8
  613. package/runtime/workflow/lib/gateToolSync.ts +3 -3
  614. package/runtime/workflow/lib/operationNames.ts +32 -0
  615. package/runtime/workflow/lib/parameters.ts +7 -23
  616. package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
  617. package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
  618. package/runtime/workflow/lib/plan.ts +334 -0
  619. package/runtime/workflow/lib/planCli.ts +279 -0
  620. package/runtime/workflow/lib/preparationEvidence.ts +14 -0
  621. package/runtime/workflow/lib/proxy.ts +5 -3
  622. package/runtime/workflow/lib/runtime.ts +46 -0
  623. package/runtime/workflow/lib/signer.ts +8 -5
  624. package/runtime/workflow/lib/simulation.ts +41 -17
  625. package/runtime/workflow/lib/state.ts +3 -3
  626. package/runtime/workflow/lib/staticValidation.ts +92 -11
  627. package/runtime/workflow/lib/transactionPlanner.ts +314 -0
  628. package/runtime/workflow/lib/typedValue.ts +46 -0
  629. package/runtime/workflow/lib/validation.ts +50 -0
  630. package/runtime/workflow/planAdd.ts +8 -0
  631. package/runtime/workflow/planRead.ts +8 -0
  632. package/runtime/workflow/planStatus.ts +8 -0
  633. package/runtime/workflow/planWrite.ts +8 -0
  634. package/runtime/workflow/run.ts +41 -174
  635. package/runtime/workflow/staticValidate.ts +8 -3
  636. package/runtime/workflow/steps/call.ts +1 -1
  637. package/runtime/workflow/steps/check.ts +1 -1
  638. package/runtime/workflow/steps/custom.ts +1 -1
  639. package/runtime/workflow/steps/deploy.ts +59 -59
  640. package/runtime/workflow/steps/upgrade.ts +71 -47
  641. package/runtime/workflow/steps/view.ts +1 -1
@@ -1,7 +1,7 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
3
  import { isAddress } from "ethers";
4
- import type { WorkflowConfig } from "./config";
4
+ import type { WorkflowConfiguration } from "./context";
5
5
  import { readJsonFile, writeJsonFile } from "./config";
6
6
 
7
7
  export type ContractInfo = Record<string, Record<string, string>>;
@@ -177,16 +177,8 @@ export const actualContractName = (contractName: string): string => {
177
177
  return actual;
178
178
  };
179
179
 
180
- export const deploymentInstanceId = (instanceId: string): string => {
181
- const normalizedInstanceId = instanceId.trim();
182
- if (!normalizedInstanceId) {
183
- throw new Error("Deployment saveAs must not be empty");
184
- }
185
- if (normalizedInstanceId.includes(":")) {
186
- throw new Error(`Deployment saveAs "${normalizedInstanceId}" must not contain ":"`);
187
- }
188
- return normalizedInstanceId;
189
- };
180
+ export { deploymentInstanceId } from "./operationNames";
181
+ import { deploymentInstanceId } from "./operationNames";
190
182
 
191
183
  export const contractInfoKey = (instanceId: string, contractName: string): string => {
192
184
  const normalizedInstanceId = deploymentInstanceId(instanceId);
@@ -196,7 +188,7 @@ export const contractInfoKey = (instanceId: string, contractName: string): strin
196
188
  : `${normalizedInstanceId}:${actual}`;
197
189
  };
198
190
 
199
- export const loadContractInfo = (root: string, _config: WorkflowConfig): ContractInfo => {
191
+ export const loadContractInfo = (root: string, _config: WorkflowConfiguration): ContractInfo => {
200
192
  const filePath = contractInfoPath(root);
201
193
  if (!fs.existsSync(filePath)) return {};
202
194
  return validateContractInfo(readJsonFile<unknown>(filePath));
@@ -255,7 +247,7 @@ export const resolveDeployment = (
255
247
 
256
248
  export const findDeploymentAddress = (
257
249
  root: string,
258
- config: WorkflowConfig,
250
+ config: WorkflowConfiguration,
259
251
  targetId: string,
260
252
  name: string,
261
253
  ): string | undefined => {
@@ -264,7 +256,7 @@ export const findDeploymentAddress = (
264
256
 
265
257
  export const getDeploymentAddress = (
266
258
  root: string,
267
- config: WorkflowConfig,
259
+ config: WorkflowConfiguration,
268
260
  targetId: string,
269
261
  name: string,
270
262
  ): string => {
@@ -0,0 +1,20 @@
1
+ import type { GateToolPreparationRequestV1 } from 'gate-evm-tools/workflow';
2
+ import type { DeploymentChange } from './deploymentRecords';
3
+ import type { PreparedGateToolWorkflow } from './gateTool';
4
+ export interface PreparationMapping { transactionId: string; gateToolTransactionIds: string[]; kind: 'multicall' | 'direct' }
5
+ export interface PreparationInput { stepId: string; change: DeploymentChange; prepared: PreparedGateToolWorkflow; derivedKeys: string[] }
6
+ export interface PreparationSink {
7
+ expected(stepId: string, request: GateToolPreparationRequestV1): PreparedGateToolWorkflow | undefined;
8
+ prepare(input: PreparationInput): void;
9
+ bind(stepId: string, mapping: PreparationMapping): void;
10
+ /** No same-fork upgrade until a complete validated OZ baseline is available. */
11
+ assertUpgradeBaseline(proxy: string): boolean | void;
12
+ }
13
+ export type TypedValue = { type: 'null'; value: null } | { type: 'string' | 'bigint' | 'number' | 'boolean'; value: string | boolean } | { type: 'array'; value: TypedValue[] } | { type: 'object'; value: Record<string, TypedValue> };
14
+ export interface VerificationObservation {
15
+ stepId: string; callIndex: number; assertionId: string; contract: string; abiName: string;
16
+ abi: string[]; address: string; method: string; args: TypedValue;
17
+ definition: { method: string; args: TypedValue; expect: TypedValue };
18
+ actual: TypedValue; expected: TypedValue;
19
+ }
20
+ export interface VerificationSink { record(input: VerificationObservation): void }
@@ -1,24 +1,12 @@
1
+ import { TransactionPlanner, normalizeTransaction } from "./transactionPlanner";
2
+ import type { ReleaseExecutionTransaction, ReleaseExecutionTransactionInput, PlannedExecutionTransaction, CompletedExecutionTransaction } from "./transactionPlanner";
3
+ export { ExecutionSegmentDeferred } from "./transactionPlanner";
4
+ export type { ExecutionRoute, ReleaseExecutionTransaction, ReleaseExecutionTransactionInput, PlannedExecutionTransaction, CompletedExecutionTransaction } from "./transactionPlanner";
1
5
  import crypto from "crypto";
2
6
  import fs from "fs";
3
7
  import path from "path";
4
8
 
5
9
  export type ReleaseKind = "development" | "admin_release";
6
- export type ExecutionRoute = "operator" | "external";
7
-
8
- export interface ReleaseExecutionTransaction {
9
- transactionId: string;
10
- stepId: string;
11
- transactionIndex: number;
12
- route: ExecutionRoute;
13
- executor: string;
14
- to: string;
15
- value: string;
16
- data: string;
17
- operation: 0 | 1;
18
- scheme?: "zksync-eravm";
19
- factoryDeps?: string[];
20
- }
21
-
22
10
  export interface ReleaseExecutionPlan {
23
11
  version: 1;
24
12
  taskId: string;
@@ -33,34 +21,6 @@ export interface ReleaseExecutionPlan {
33
21
 
34
22
  type PlanBody = Omit<ReleaseExecutionPlan, "planHash" | "createdAt">;
35
23
 
36
- export interface ReleaseExecutionTransactionInput {
37
- stepId: string;
38
- executor: string;
39
- to: string;
40
- value: string;
41
- data: string;
42
- operation: 0 | 1;
43
- scheme?: "zksync-eravm";
44
- factoryDeps?: string[];
45
- }
46
-
47
- export interface CompletedExecutionTransaction {
48
- transactionId: string;
49
- transactionHash: string;
50
- }
51
-
52
- export interface PlannedExecutionTransaction extends ReleaseExecutionTransaction {
53
- executionAction: "execute" | "package" | "replay";
54
- transactionHash?: string;
55
- }
56
-
57
- export class ExecutionSegmentDeferred extends Error {
58
- constructor(readonly transactionId: string) {
59
- super(`Execution is waiting for the preceding external segment before ${transactionId}`);
60
- this.name = "ExecutionSegmentDeferred";
61
- }
62
- }
63
-
64
24
  const SAFE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
65
25
  const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
66
26
  const DATA = /^0x(?:[0-9a-fA-F]{2})*$/;
@@ -83,40 +43,6 @@ const address = (value: unknown, label: string): string => {
83
43
  return value.toLowerCase();
84
44
  };
85
45
 
86
- const value = (raw: unknown, label: string): string => {
87
- if (typeof raw !== "string" || !/^(?:0[xX][0-9a-fA-F]+|[0-9]+)$/.test(raw)) {
88
- throw new Error(`${label} must be a nonnegative integer string`);
89
- }
90
- return BigInt(raw).toString(10);
91
- };
92
-
93
- const data = (raw: unknown, label: string): string => {
94
- if (typeof raw !== "string" || !DATA.test(raw)) {
95
- throw new Error(`${label} must be canonical byte calldata`);
96
- }
97
- return raw.toLowerCase();
98
- };
99
-
100
- const factoryDeps = (raw: unknown, label: string): string[] => {
101
- if (!Array.isArray(raw)) throw new Error(`${label} must be an array`);
102
- const seen = new Set<string>();
103
- const normalized: string[] = [];
104
- for (const [index, dependency] of raw.entries()) {
105
- if (typeof dependency !== "string" || !/^0x(?:[0-9a-fA-F]{2})+$/.test(dependency)) {
106
- throw new Error(`${label}[${index}] must be non-empty byte-aligned bytecode`);
107
- }
108
- const value = dependency.toLowerCase();
109
- const hash = crypto
110
- .createHash("sha256")
111
- .update(Buffer.from(value.slice(2), "hex"))
112
- .digest("hex");
113
- if (seen.has(hash)) continue;
114
- seen.add(hash);
115
- normalized.push(value);
116
- }
117
- return normalized;
118
- };
119
-
120
46
  const exactKeys = (value: Record<string, unknown>, expected: string[], label: string): void => {
121
47
  const actual = Object.keys(value).sort();
122
48
  const wanted = [...expected].sort();
@@ -132,62 +58,6 @@ const record = (raw: unknown, label: string): Record<string, unknown> => {
132
58
  return raw as Record<string, unknown>;
133
59
  };
134
60
 
135
- const normalizeTransaction = (
136
- raw: unknown,
137
- index: number,
138
- strict: boolean,
139
- ): ReleaseExecutionTransaction => {
140
- const input = record(raw, `transactions[${index}]`);
141
- const isZkSync = input.scheme === "zksync-eravm";
142
- if (input.scheme !== undefined && !isZkSync) {
143
- throw new Error(`transactions[${index}].scheme must be zksync-eravm when present`);
144
- }
145
- if (isZkSync && input.factoryDeps === undefined) {
146
- throw new Error(`transactions[${index}].factoryDeps is required for zkSync`);
147
- }
148
- if (!isZkSync && input.factoryDeps !== undefined) {
149
- throw new Error(`transactions[${index}].factoryDeps is only supported for zkSync`);
150
- }
151
- if (strict) {
152
- exactKeys(input, [
153
- "transactionId",
154
- "stepId",
155
- "transactionIndex",
156
- "route",
157
- "executor",
158
- "to",
159
- "value",
160
- "data",
161
- "operation",
162
- ...(isZkSync ? ["scheme", "factoryDeps"] : []),
163
- ], `transactions[${index}]`);
164
- }
165
- if (input.transactionIndex !== index) {
166
- throw new Error(`transactions[${index}].transactionIndex must equal ${index}`);
167
- }
168
- if (input.route !== "operator" && input.route !== "external") {
169
- throw new Error(`transactions[${index}].route is invalid`);
170
- }
171
- if (input.operation !== 0 && input.operation !== 1) {
172
- throw new Error(`transactions[${index}].operation must be 0 or 1`);
173
- }
174
- return {
175
- transactionId: safeId(input.transactionId, `transactions[${index}].transactionId`),
176
- stepId: safeId(input.stepId, `transactions[${index}].stepId`),
177
- transactionIndex: index,
178
- route: input.route,
179
- executor: address(input.executor, `transactions[${index}].executor`),
180
- to: address(input.to, `transactions[${index}].to`),
181
- value: value(input.value, `transactions[${index}].value`),
182
- data: data(input.data, `transactions[${index}].data`),
183
- operation: input.operation,
184
- ...(isZkSync ? {
185
- scheme: "zksync-eravm" as const,
186
- factoryDeps: factoryDeps(input.factoryDeps, `transactions[${index}].factoryDeps`),
187
- } : {}),
188
- };
189
- };
190
-
191
61
  const normalizeBody = (raw: unknown, strict: boolean): PlanBody => {
192
62
  const input = record(raw, "execution plan");
193
63
  if (strict) {
@@ -306,148 +176,27 @@ const writeExclusive = (filePath: string, value: unknown): void => {
306
176
 
307
177
  export class ReleaseExecutionPlanner {
308
178
  private readonly body: Omit<PlanBody, "transactions">;
309
- private readonly expected?: PlanBody;
310
- private readonly transactions: ReleaseExecutionTransaction[] = [];
311
- private readonly segmentedExecution: boolean;
312
- private readonly completedTransactions: CompletedExecutionTransaction[];
313
- private readonly segmentEnd: number;
314
-
179
+ private readonly kernel: TransactionPlanner;
315
180
  constructor(input: {
316
- taskId: string;
317
- target: string;
318
- executionId: string;
319
- releaseKind: ReleaseKind;
320
- operator: string;
321
- expectedPlan?: ReleaseExecutionPlan;
322
- segmentedExecution?: boolean;
181
+ taskId: string; target: string; executionId: string; releaseKind: ReleaseKind;
182
+ operator: string; expectedPlan?: ReleaseExecutionPlan; segmentedExecution?: boolean;
323
183
  completedTransactions?: CompletedExecutionTransaction[];
324
184
  }) {
325
- const body = normalizeBody({
326
- version: 1,
327
- taskId: input.taskId,
328
- target: input.target,
329
- executionId: input.executionId,
330
- releaseKind: input.releaseKind,
331
- operator: input.operator,
332
- transactions: [],
333
- }, false);
334
- this.body = {
335
- version: 1,
336
- taskId: body.taskId,
337
- target: body.target,
338
- executionId: body.executionId,
339
- releaseKind: body.releaseKind,
340
- operator: body.operator,
341
- };
342
- if (input.expectedPlan) {
343
- const expected = normalizeBody(input.expectedPlan, false);
185
+ const { transactions: _, ...body } = normalizeBody({ version: 1, ...input, transactions: [] }, false);
186
+ this.body = body;
187
+ const expected = input.expectedPlan ? normalizeBody(input.expectedPlan, false) : undefined;
188
+ if (expected) {
344
189
  for (const key of ["taskId", "target", "executionId", "releaseKind", "operator"] as const) {
345
- if (expected[key] !== this.body[key]) {
346
- throw new Error(`locked execution plan ${key} does not match the runtime`);
347
- }
190
+ if (expected[key] !== body[key]) throw new Error(`locked execution plan ${key} does not match the runtime`);
348
191
  }
349
- this.expected = expected;
350
192
  }
351
- this.segmentedExecution = input.segmentedExecution === true;
352
- this.completedTransactions = input.completedTransactions ?? [];
353
- if (this.segmentedExecution && !this.expected) {
354
- throw new Error("segmented execution requires a locked execution plan");
355
- }
356
- if (!this.segmentedExecution && this.completedTransactions.length > 0) {
357
- throw new Error("completed transactions require segmented execution");
358
- }
359
- if (this.expected) {
360
- if (this.completedTransactions.length > this.expected.transactions.length) {
361
- throw new Error("completed transactions exceed the execution plan");
362
- }
363
- for (const [index, completed] of this.completedTransactions.entries()) {
364
- if (
365
- completed.transactionId !== this.expected.transactions[index]?.transactionId
366
- || typeof completed.transactionHash !== "string"
367
- || !/^0x[0-9a-fA-F]{64}$/.test(completed.transactionHash)
368
- ) {
369
- throw new Error("completed transactions must form a contiguous plan prefix");
370
- }
371
- }
372
- }
373
- const expectedTransactions = this.expected?.transactions ?? [];
374
- let segmentEnd = this.completedTransactions.length;
375
- if (this.segmentedExecution && segmentEnd < expectedTransactions.length) {
376
- if (expectedTransactions[segmentEnd].route === "operator") {
377
- while (
378
- segmentEnd < expectedTransactions.length
379
- && expectedTransactions[segmentEnd].route === "operator"
380
- ) segmentEnd += 1;
381
- }
382
- while (
383
- segmentEnd < expectedTransactions.length
384
- && expectedTransactions[segmentEnd].route === "external"
385
- ) segmentEnd += 1;
386
- } else if (!this.segmentedExecution) {
387
- segmentEnd = Number.MAX_SAFE_INTEGER;
388
- }
389
- this.segmentEnd = segmentEnd;
193
+ this.kernel = new TransactionPlanner({ operator: body.operator, allowExternal: body.releaseKind !== "development",
194
+ expectedTransactions: expected?.transactions, segmentedExecution: input.segmentedExecution,
195
+ completedTransactions: input.completedTransactions });
390
196
  }
391
-
392
- add(input: ReleaseExecutionTransactionInput): PlannedExecutionTransaction {
393
- const index = this.transactions.length;
394
- const stepId = safeId(input.stepId, "planned transaction stepId");
395
- const executor = address(input.executor, "planned transaction executor");
396
- const transaction = normalizeTransaction({
397
- transactionId: `tx-${String(index + 1).padStart(4, "0")}-${stepId}`,
398
- stepId,
399
- transactionIndex: index,
400
- route: executor === this.body.operator ? "operator" : "external",
401
- executor,
402
- to: input.to,
403
- value: input.value,
404
- data: input.data,
405
- operation: input.operation,
406
- ...(input.scheme === undefined ? {} : { scheme: input.scheme }),
407
- ...(input.factoryDeps === undefined ? {} : { factoryDeps: input.factoryDeps }),
408
- }, index, false);
409
- if (this.body.releaseKind === "development" && transaction.route === "external") {
410
- throw new Error("development execution plans cannot contain external transactions");
411
- }
412
- const expected = this.expected?.transactions[index];
413
- if (this.expected && (!expected || JSON.stringify(expected) !== JSON.stringify(transaction))) {
414
- throw new Error(
415
- `transaction ${transaction.transactionId} does not match locked execution plan`,
416
- );
417
- }
418
- if (this.segmentedExecution && index >= this.segmentEnd) {
419
- throw new ExecutionSegmentDeferred(transaction.transactionId);
420
- }
421
- this.transactions.push(transaction);
422
- const completed = this.completedTransactions[index];
423
- if (completed) {
424
- return {
425
- ...transaction,
426
- executionAction: "replay",
427
- transactionHash: completed.transactionHash.toLowerCase(),
428
- };
429
- }
430
- return {
431
- ...transaction,
432
- executionAction: transaction.route === "external" ? "package" : "execute",
433
- };
434
- }
435
-
197
+ add(input: ReleaseExecutionTransactionInput): PlannedExecutionTransaction { return this.kernel.add(input); }
436
198
  complete(options: { allowPartial?: boolean } = {}): PlanBody {
437
- if (
438
- this.expected
439
- && this.transactions.length !== this.expected.transactions.length
440
- && options.allowPartial !== true
441
- ) {
442
- throw new Error("execution did not consume every locked transaction");
443
- }
444
- if (options.allowPartial === true && !this.segmentedExecution) {
445
- throw new Error("partial execution plan completion requires segmented execution");
446
- }
447
- return normalizeBody({
448
- ...this.body,
449
- transactions: this.transactions,
450
- }, false);
199
+ return normalizeBody({ ...this.body, transactions: this.kernel.complete(options) }, false);
451
200
  }
452
201
  }
453
202
 
@@ -1,6 +1,6 @@
1
+ import type { WorkflowValidationPort } from './validation';
1
2
  import fs from "fs";
2
3
  import path from "path";
3
- import hardhat from "../../projectHardhat";
4
4
  import {
5
5
  canonicalPreparationJson,
6
6
  hashPreparationRequest,
@@ -21,8 +21,10 @@ export interface PrepareGateToolWorkflowOptions {
21
21
  evidenceDir: string;
22
22
  evidenceName: string;
23
23
  request: GateToolPreparationRequestV1;
24
- hre?: GateToolPreparationHre;
24
+ hre: GateToolPreparationHre;
25
25
  readBlockTag?: number;
26
+ expected?: PreparedGateToolWorkflow;
27
+ validation?: WorkflowValidationPort;
26
28
  }
27
29
 
28
30
  export interface PreparedGateToolWorkflow {
@@ -149,7 +151,7 @@ const readRegularJson = (
149
151
  }
150
152
  };
151
153
 
152
- const expectedTransactionPurposes = (
154
+ export const expectedTransactionPurposes = (
153
155
  plan: GateToolPreparationPlanV1,
154
156
  ): GateToolTransactionPurpose[] => {
155
157
  const requiredRoles = new Set(
@@ -185,8 +187,9 @@ const assertPlanMatchesRequest = async (
185
187
  hre: GateToolPreparationHre,
186
188
  request: GateToolPreparationRequestV1,
187
189
  rawPlan: unknown,
190
+ validation?: WorkflowValidationPort,
188
191
  ): Promise<GateToolPreparationPlanV1> => {
189
- const plan = normalizePreparationPlan(rawPlan);
192
+ const plan = normalizePreparationPlan(validation ? validation.preparation.data(rawPlan) : rawPlan);
190
193
  const provider = (hre as GateToolPreparationHre & {
191
194
  ethers?: { provider?: { getNetwork(): Promise<{ chainId: bigint | number | string }> } };
192
195
  }).ethers?.provider;
@@ -214,20 +217,28 @@ const assertPlanMatchesRequest = async (
214
217
  ) {
215
218
  throw new Error("GateTool plan transaction order does not match its deployment evidence");
216
219
  }
220
+ await validation?.preparationPlan(request, plan);
217
221
  return plan;
218
222
  };
219
223
 
220
224
  export const prepareGateToolWorkflow = async (
221
225
  options: PrepareGateToolWorkflowOptions,
222
226
  ): Promise<PreparedGateToolWorkflow> => {
227
+ if (!options.hre) throw new Error("GateTool requires an explicit Hardhat runtime");
223
228
  if (!SAFE_FILE_ID.test(options.evidenceName)) {
224
229
  throw new Error(`GateTool evidenceName must match ${SAFE_FILE_ID}`);
225
230
  }
226
- const request = normalizePreparationRequest(options.request);
231
+ const request = normalizePreparationRequest(options.validation ? options.validation.preparation.data(options.request) : options.request);
227
232
  const runtime = pinGateToolReadBlockTag(
228
- options.hre ?? hardhat as unknown as GateToolPreparationHre,
233
+ options.hre,
229
234
  options.readBlockTag,
230
235
  );
236
+ if (options.expected) {
237
+ const expectedRequest = normalizePreparationRequest(options.validation ? options.validation.preparation.data(options.expected.request) : options.expected.request);
238
+ if (canonicalPreparationJson(expectedRequest) !== canonicalPreparationJson(request)) throw new Error("Expected GateTool request differs from replay");
239
+ const plan = await assertPlanMatchesRequest(runtime, request, options.expected.plan, options.validation);
240
+ return { ...options.expected, request, plan };
241
+ }
231
242
  const evidenceDir = confinedPath(options.root, options.evidenceDir, "GateTool evidence directory");
232
243
  const requestPath = path.join(evidenceDir, `${options.evidenceName}-request.json`);
233
244
  const planPath = path.join(evidenceDir, `${options.evidenceName}-plan.json`);
@@ -248,13 +259,14 @@ export const prepareGateToolWorkflow = async (
248
259
  runtime,
249
260
  request,
250
261
  readRegularJson(planPath, options.root, "GateTool plan evidence"),
262
+ options.validation,
251
263
  );
252
264
  return { request, requestPath, plan, planPath };
253
265
  }
254
266
 
267
+ const prepared = await prepareWorkflow(runtime, request, options.validation?.preparation);
268
+ const plan = await assertPlanMatchesRequest(runtime, request, prepared, options.validation);
255
269
  writeCanonicalJsonAtomic(requestPath, request, options.root);
256
- const prepared = await prepareWorkflow(runtime, request);
257
- const plan = await assertPlanMatchesRequest(runtime, request, prepared);
258
270
  writePreparationPlanAtomic(planPath, plan, options.root);
259
271
 
260
272
  return { request, requestPath, plan, planPath };
@@ -1,7 +1,6 @@
1
1
  import crypto from "crypto";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
- import hardhat from "../../projectHardhat";
5
4
  import { syncWithHre } from "gate-evm-tools/sync";
6
5
  import { writeJsonFile } from "./config";
7
6
 
@@ -25,7 +24,7 @@ export interface SyncGateToolUupsOptions {
25
24
  contract: string;
26
25
  constructorArgs: unknown[];
27
26
  transactionHash: string;
28
- hre?: GateToolSyncHre;
27
+ hre: GateToolSyncHre;
29
28
  }
30
29
 
31
30
  const SAFE_FILE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
@@ -254,6 +253,7 @@ const buildSyncEvidence = (
254
253
  export const syncGateToolUups = async (
255
254
  options: SyncGateToolUupsOptions,
256
255
  ): Promise<GateToolSyncEvidence> => {
256
+ if (!options.hre) throw new Error("GateTool requires an explicit Hardhat runtime");
257
257
  if (!SAFE_FILE_ID.test(options.evidenceName)) {
258
258
  throw new Error(`GateTool sync evidenceName must match ${SAFE_FILE_ID}`);
259
259
  }
@@ -340,7 +340,7 @@ export const syncGateToolUups = async (
340
340
  ...(options.scheme === "evm"
341
341
  ? { skipTxHash: true }
342
342
  : { transactionHash: options.transactionHash }),
343
- }, options.hre ?? hardhat, options.root), "GateTool sync result");
343
+ }, options.hre, options.root), "GateTool sync result");
344
344
  const returnedProxy = typeof rawResult.proxyAddress === "string"
345
345
  ? rawResult.proxyAddress
346
346
  : stringField(rawResult, "proxy");
@@ -0,0 +1,32 @@
1
+ import type { WorkflowStep } from "./parameters";
2
+ export const validateDeploySaveAs = (steps: WorkflowStep[]): void => {
3
+ const seen = new Set<string>();
4
+
5
+ for (const step of steps) {
6
+ if (step.kind !== "deploy") continue;
7
+
8
+ const saveAs = typeof step.saveAs === "string" ? step.saveAs.trim() : "";
9
+ if (!saveAs) {
10
+ throw new Error(`Deploy step ${step.id} requires saveAs`);
11
+ }
12
+ if (saveAs.includes(":")) {
13
+ throw new Error(`Deploy step ${step.id} saveAs "${saveAs}" must not contain ":"`);
14
+ }
15
+ if (seen.has(saveAs)) {
16
+ throw new Error(`Duplicate deploy saveAs "${saveAs}"`);
17
+ }
18
+ seen.add(saveAs);
19
+ }
20
+ };
21
+
22
+ export const deploymentInstanceId = (instanceId: string): string => {
23
+ const normalizedInstanceId = instanceId.trim();
24
+ if (!normalizedInstanceId) {
25
+ throw new Error("Deployment saveAs must not be empty");
26
+ }
27
+ if (normalizedInstanceId.includes(":")) {
28
+ throw new Error(`Deployment saveAs "${normalizedInstanceId}" must not contain ":"`);
29
+ }
30
+ return normalizedInstanceId;
31
+ };
32
+
@@ -77,25 +77,8 @@ export const validateWorkflowStepIds = (steps: WorkflowStep[]): void => {
77
77
  }
78
78
  };
79
79
 
80
- export const validateDeploySaveAs = (steps: WorkflowStep[]): void => {
81
- const seen = new Set<string>();
82
-
83
- for (const step of steps) {
84
- if (step.kind !== "deploy") continue;
85
-
86
- const saveAs = typeof step.saveAs === "string" ? step.saveAs.trim() : "";
87
- if (!saveAs) {
88
- throw new Error(`Deploy step ${step.id} requires saveAs`);
89
- }
90
- if (saveAs.includes(":")) {
91
- throw new Error(`Deploy step ${step.id} saveAs "${saveAs}" must not contain ":"`);
92
- }
93
- if (seen.has(saveAs)) {
94
- throw new Error(`Duplicate deploy saveAs "${saveAs}"`);
95
- }
96
- seen.add(saveAs);
97
- }
98
- };
80
+ export { validateDeploySaveAs } from "./operationNames";
81
+ import { validateDeploySaveAs } from "./operationNames";
99
82
 
100
83
  export const validateWorkflowStepKinds = (steps: WorkflowStep[]): void => {
101
84
  for (const step of steps) {
@@ -266,9 +249,10 @@ export const validateDeployCreate2Strategy = (steps: WorkflowStep[]): void => {
266
249
  if (step.upgradeableStrategy !== "uups-placeholder-proxy") {
267
250
  throw new Error(`Deploy step ${step.id} requires upgradeableStrategy: uups-placeholder-proxy`);
268
251
  }
269
- if (String(step.contract) !== "contracts/workflow/UUPSPlaceholder.sol:UUPSPlaceholder") {
252
+ if (String(step.contract) !== "contracts/workflow/UUPSPlaceholder.sol:UUPSPlaceholder"
253
+ && step.contract !== asObject(step.firstUpgrade).contract) {
270
254
  throw new Error(
271
- `Deploy step ${step.id} must create UUPS proxies with contracts/workflow/UUPSPlaceholder.sol:UUPSPlaceholder`,
255
+ `Deploy step ${step.id} must use the same business implementation in contract and firstUpgrade.contract`,
272
256
  );
273
257
  }
274
258
  if (!asObject(step.firstUpgrade).contract) {
@@ -385,7 +369,7 @@ const readPath = (source: Record<string, unknown>, pathExpression: string): unkn
385
369
  let current: unknown = source;
386
370
 
387
371
  for (const part of parts) {
388
- if (typeof current !== "object" || current === null || !(part in current)) {
372
+ if (typeof current !== "object" || current === null || !Object.hasOwn(current, part)) {
389
373
  throw new Error(`Reference not found: ${pathExpression}`);
390
374
  }
391
375
  current = (current as Record<string, unknown>)[part];
@@ -411,7 +395,7 @@ export const resolveValue = (value: unknown, context: ResolveContext): unknown =
411
395
 
412
396
  if (typeof value === "object" && value !== null) {
413
397
  const objectValue = value as Record<string, unknown>;
414
- if (typeof objectValue.$ref === "string") {
398
+ if (Object.hasOwn(objectValue, "$ref") && typeof objectValue.$ref === "string") {
415
399
  const ref = objectValue.$ref;
416
400
  if (ref.startsWith("state.")) {
417
401
  return context.state.get(ref.slice("state.".length));