gate-evm-tools 1.0.25 → 1.0.27

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 (352) hide show
  1. package/README.md +33 -11
  2. package/bin/workflow.cjs +19 -0
  3. package/dist/commands/check.d.ts.map +1 -1
  4. package/dist/commands/check.js +21 -57
  5. package/dist/commands/check.js.map +1 -1
  6. package/dist/commands/checkBatch.d.ts +4 -0
  7. package/dist/commands/checkBatch.d.ts.map +1 -0
  8. package/dist/commands/checkBatch.js +57 -0
  9. package/dist/commands/checkBatch.js.map +1 -0
  10. package/dist/commands/checkOptions.d.ts +3 -0
  11. package/dist/commands/checkOptions.d.ts.map +1 -1
  12. package/dist/commands/checkOptions.js +10 -1
  13. package/dist/commands/checkOptions.js.map +1 -1
  14. package/dist/commands/prepare.d.ts +1 -2
  15. package/dist/commands/prepare.d.ts.map +1 -1
  16. package/dist/commands/prepare.js +2 -17
  17. package/dist/commands/prepare.js.map +1 -1
  18. package/dist/commands/sync.d.ts.map +1 -1
  19. package/dist/commands/sync.js +2 -17
  20. package/dist/commands/sync.js.map +1 -1
  21. package/dist/commands/validate.d.ts.map +1 -1
  22. package/dist/commands/validate.js +2 -17
  23. package/dist/commands/validate.js.map +1 -1
  24. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  25. package/dist/core/BytecodeChecker.js +16 -1
  26. package/dist/core/BytecodeChecker.js.map +1 -1
  27. package/dist/core/legacyProxyArtifact.d.ts +6 -0
  28. package/dist/core/legacyProxyArtifact.d.ts.map +1 -0
  29. package/dist/core/legacyProxyArtifact.js +36 -0
  30. package/dist/core/legacyProxyArtifact.js.map +1 -0
  31. package/dist/index.js +3 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/types.d.ts +2 -2
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/utils/hardhat.d.ts +4 -0
  36. package/dist/utils/hardhat.d.ts.map +1 -0
  37. package/dist/utils/hardhat.js +9 -0
  38. package/dist/utils/hardhat.js.map +1 -0
  39. package/dist-runtime/config/hardhatAdapters.d.ts +5 -0
  40. package/dist-runtime/config/hardhatAdapters.js +53 -0
  41. package/dist-runtime/config/hardhatAdapters.js.map +1 -0
  42. package/dist-runtime/config/networks.d.ts +8 -0
  43. package/dist-runtime/config/networks.js +269 -0
  44. package/dist-runtime/config/networks.js.map +1 -0
  45. package/dist-runtime/config/openzeppelin.d.ts +28 -0
  46. package/dist-runtime/config/openzeppelin.js +144 -0
  47. package/dist-runtime/config/openzeppelin.js.map +1 -0
  48. package/dist-runtime/config/rpc.d.ts +7 -0
  49. package/dist-runtime/config/rpc.js +19 -0
  50. package/dist-runtime/config/rpc.js.map +1 -0
  51. package/dist-runtime/config/zksyncSolcPath.d.ts +1 -0
  52. package/dist-runtime/config/zksyncSolcPath.js +61 -0
  53. package/dist-runtime/config/zksyncSolcPath.js.map +1 -0
  54. package/dist-runtime/migrate.d.ts +13 -0
  55. package/dist-runtime/migrate.js +208 -0
  56. package/dist-runtime/migrate.js.map +1 -0
  57. package/dist-runtime/package.json +1 -0
  58. package/dist-runtime/projectHardhat.d.ts +4 -0
  59. package/dist-runtime/projectHardhat.js +16 -0
  60. package/dist-runtime/projectHardhat.js.map +1 -0
  61. package/dist-runtime/runtime-identity.json +4 -0
  62. package/dist-runtime/template-migration.json +293 -0
  63. package/dist-runtime/workflow/checkCode.d.ts +1 -0
  64. package/dist-runtime/workflow/checkCode.js +16 -0
  65. package/dist-runtime/workflow/checkCode.js.map +1 -0
  66. package/dist-runtime/workflow/checkCodeFinalize.d.ts +1 -0
  67. package/dist-runtime/workflow/checkCodeFinalize.js +11 -0
  68. package/dist-runtime/workflow/checkCodeFinalize.js.map +1 -0
  69. package/dist-runtime/workflow/checkCodePlan.d.ts +1 -0
  70. package/dist-runtime/workflow/checkCodePlan.js +11 -0
  71. package/dist-runtime/workflow/checkCodePlan.js.map +1 -0
  72. package/dist-runtime/workflow/cli.d.ts +1 -0
  73. package/dist-runtime/workflow/cli.js +302 -0
  74. package/dist-runtime/workflow/cli.js.map +1 -0
  75. package/dist-runtime/workflow/commitContractInfo.d.ts +1 -0
  76. package/dist-runtime/workflow/commitContractInfo.js +64 -0
  77. package/dist-runtime/workflow/commitContractInfo.js.map +1 -0
  78. package/dist-runtime/workflow/create2Hashes.d.ts +1 -0
  79. package/dist-runtime/workflow/create2Hashes.js +76 -0
  80. package/dist-runtime/workflow/create2Hashes.js.map +1 -0
  81. package/dist-runtime/workflow/forkSourceProxy.d.ts +1 -0
  82. package/dist-runtime/workflow/forkSourceProxy.js +151 -0
  83. package/dist-runtime/workflow/forkSourceProxy.js.map +1 -0
  84. package/dist-runtime/workflow/importState.d.ts +1 -0
  85. package/dist-runtime/workflow/importState.js +193 -0
  86. package/dist-runtime/workflow/importState.js.map +1 -0
  87. package/dist-runtime/workflow/lib/authority.d.ts +28 -0
  88. package/dist-runtime/workflow/lib/authority.js +122 -0
  89. package/dist-runtime/workflow/lib/authority.js.map +1 -0
  90. package/dist-runtime/workflow/lib/calldata.d.ts +2 -0
  91. package/dist-runtime/workflow/lib/calldata.js +8 -0
  92. package/dist-runtime/workflow/lib/calldata.js.map +1 -0
  93. package/dist-runtime/workflow/lib/calls.d.ts +23 -0
  94. package/dist-runtime/workflow/lib/calls.js +316 -0
  95. package/dist-runtime/workflow/lib/calls.js.map +1 -0
  96. package/dist-runtime/workflow/lib/checkCode/args.d.ts +2 -0
  97. package/dist-runtime/workflow/lib/checkCode/args.js +68 -0
  98. package/dist-runtime/workflow/lib/checkCode/args.js.map +1 -0
  99. package/dist-runtime/workflow/lib/checkCode/command.d.ts +5 -0
  100. package/dist-runtime/workflow/lib/checkCode/command.js +35 -0
  101. package/dist-runtime/workflow/lib/checkCode/command.js.map +1 -0
  102. package/dist-runtime/workflow/lib/checkCode/dependencies.d.ts +6 -0
  103. package/dist-runtime/workflow/lib/checkCode/dependencies.js +125 -0
  104. package/dist-runtime/workflow/lib/checkCode/dependencies.js.map +1 -0
  105. package/dist-runtime/workflow/lib/checkCode/finalize.d.ts +17 -0
  106. package/dist-runtime/workflow/lib/checkCode/finalize.js +174 -0
  107. package/dist-runtime/workflow/lib/checkCode/finalize.js.map +1 -0
  108. package/dist-runtime/workflow/lib/checkCode/index.d.ts +3 -0
  109. package/dist-runtime/workflow/lib/checkCode/index.js +20 -0
  110. package/dist-runtime/workflow/lib/checkCode/index.js.map +1 -0
  111. package/dist-runtime/workflow/lib/checkCode/plan.d.ts +22 -0
  112. package/dist-runtime/workflow/lib/checkCode/plan.js +145 -0
  113. package/dist-runtime/workflow/lib/checkCode/plan.js.map +1 -0
  114. package/dist-runtime/workflow/lib/checkCodeReport.d.ts +25 -0
  115. package/dist-runtime/workflow/lib/checkCodeReport.js +102 -0
  116. package/dist-runtime/workflow/lib/checkCodeReport.js.map +1 -0
  117. package/dist-runtime/workflow/lib/checkCodeRunner.d.ts +87 -0
  118. package/dist-runtime/workflow/lib/checkCodeRunner.js +964 -0
  119. package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -0
  120. package/dist-runtime/workflow/lib/cliTool.d.ts +10 -0
  121. package/dist-runtime/workflow/lib/cliTool.js +25 -0
  122. package/dist-runtime/workflow/lib/cliTool.js.map +1 -0
  123. package/dist-runtime/workflow/lib/config.d.ts +33 -0
  124. package/dist-runtime/workflow/lib/config.js +100 -0
  125. package/dist-runtime/workflow/lib/config.js.map +1 -0
  126. package/dist-runtime/workflow/lib/contractInfoCandidates.d.ts +82 -0
  127. package/dist-runtime/workflow/lib/contractInfoCandidates.js +441 -0
  128. package/dist-runtime/workflow/lib/contractInfoCandidates.js.map +1 -0
  129. package/dist-runtime/workflow/lib/create2.d.ts +49 -0
  130. package/dist-runtime/workflow/lib/create2.js +194 -0
  131. package/dist-runtime/workflow/lib/create2.js.map +1 -0
  132. package/dist-runtime/workflow/lib/create2Hashes.d.ts +22 -0
  133. package/dist-runtime/workflow/lib/create2Hashes.js +57 -0
  134. package/dist-runtime/workflow/lib/create2Hashes.js.map +1 -0
  135. package/dist-runtime/workflow/lib/deploymentInfo.d.ts +40 -0
  136. package/dist-runtime/workflow/lib/deploymentInfo.js +240 -0
  137. package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -0
  138. package/dist-runtime/workflow/lib/deploymentRecords.d.ts +137 -0
  139. package/dist-runtime/workflow/lib/deploymentRecords.js +374 -0
  140. package/dist-runtime/workflow/lib/deploymentRecords.js.map +1 -0
  141. package/dist-runtime/workflow/lib/deployments.d.ts +21 -0
  142. package/dist-runtime/workflow/lib/deployments.js +240 -0
  143. package/dist-runtime/workflow/lib/deployments.js.map +1 -0
  144. package/dist-runtime/workflow/lib/erc1967.d.ts +5 -0
  145. package/dist-runtime/workflow/lib/erc1967.js +29 -0
  146. package/dist-runtime/workflow/lib/erc1967.js.map +1 -0
  147. package/dist-runtime/workflow/lib/errors.d.ts +6 -0
  148. package/dist-runtime/workflow/lib/errors.js +77 -0
  149. package/dist-runtime/workflow/lib/errors.js.map +1 -0
  150. package/dist-runtime/workflow/lib/executionId.d.ts +7 -0
  151. package/dist-runtime/workflow/lib/executionId.js +26 -0
  152. package/dist-runtime/workflow/lib/executionId.js.map +1 -0
  153. package/dist-runtime/workflow/lib/executionPlan.d.ts +85 -0
  154. package/dist-runtime/workflow/lib/executionPlan.js +450 -0
  155. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -0
  156. package/dist-runtime/workflow/lib/executionProgress.d.ts +5 -0
  157. package/dist-runtime/workflow/lib/executionProgress.js +100 -0
  158. package/dist-runtime/workflow/lib/executionProgress.js.map +1 -0
  159. package/dist-runtime/workflow/lib/external.d.ts +62 -0
  160. package/dist-runtime/workflow/lib/external.js +282 -0
  161. package/dist-runtime/workflow/lib/external.js.map +1 -0
  162. package/dist-runtime/workflow/lib/externalExecutionScanner.d.ts +64 -0
  163. package/dist-runtime/workflow/lib/externalExecutionScanner.js +638 -0
  164. package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -0
  165. package/dist-runtime/workflow/lib/forkSnapshot.d.ts +34 -0
  166. package/dist-runtime/workflow/lib/forkSnapshot.js +167 -0
  167. package/dist-runtime/workflow/lib/forkSnapshot.js.map +1 -0
  168. package/dist-runtime/workflow/lib/gateTool.d.ts +16 -0
  169. package/dist-runtime/workflow/lib/gateTool.js +177 -0
  170. package/dist-runtime/workflow/lib/gateTool.js.map +1 -0
  171. package/dist-runtime/workflow/lib/gateToolSync.d.ts +22 -0
  172. package/dist-runtime/workflow/lib/gateToolSync.js +253 -0
  173. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -0
  174. package/dist-runtime/workflow/lib/lock.d.ts +52 -0
  175. package/dist-runtime/workflow/lib/lock.js +269 -0
  176. package/dist-runtime/workflow/lib/lock.js.map +1 -0
  177. package/dist-runtime/workflow/lib/migrationState.d.ts +103 -0
  178. package/dist-runtime/workflow/lib/migrationState.js +920 -0
  179. package/dist-runtime/workflow/lib/migrationState.js.map +1 -0
  180. package/dist-runtime/workflow/lib/operatorExecution.d.ts +28 -0
  181. package/dist-runtime/workflow/lib/operatorExecution.js +134 -0
  182. package/dist-runtime/workflow/lib/operatorExecution.js.map +1 -0
  183. package/dist-runtime/workflow/lib/parameters.d.ts +58 -0
  184. package/dist-runtime/workflow/lib/parameters.js +322 -0
  185. package/dist-runtime/workflow/lib/parameters.js.map +1 -0
  186. package/dist-runtime/workflow/lib/pendingDeploymentReuse.d.ts +29 -0
  187. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +277 -0
  188. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -0
  189. package/dist-runtime/workflow/lib/proxy.d.ts +18 -0
  190. package/dist-runtime/workflow/lib/proxy.js +19 -0
  191. package/dist-runtime/workflow/lib/proxy.js.map +1 -0
  192. package/dist-runtime/workflow/lib/registryCommit.d.ts +33 -0
  193. package/dist-runtime/workflow/lib/registryCommit.js +319 -0
  194. package/dist-runtime/workflow/lib/registryCommit.js.map +1 -0
  195. package/dist-runtime/workflow/lib/release.d.ts +57 -0
  196. package/dist-runtime/workflow/lib/release.js +256 -0
  197. package/dist-runtime/workflow/lib/release.js.map +1 -0
  198. package/dist-runtime/workflow/lib/releaseFinalize.d.ts +14 -0
  199. package/dist-runtime/workflow/lib/releaseFinalize.js +571 -0
  200. package/dist-runtime/workflow/lib/releaseFinalize.js.map +1 -0
  201. package/dist-runtime/workflow/lib/releaseParameters.d.ts +43 -0
  202. package/dist-runtime/workflow/lib/releaseParameters.js +184 -0
  203. package/dist-runtime/workflow/lib/releaseParameters.js.map +1 -0
  204. package/dist-runtime/workflow/lib/reporter.d.ts +39 -0
  205. package/dist-runtime/workflow/lib/reporter.js +452 -0
  206. package/dist-runtime/workflow/lib/reporter.js.map +1 -0
  207. package/dist-runtime/workflow/lib/resultPaths.d.ts +17 -0
  208. package/dist-runtime/workflow/lib/resultPaths.js +29 -0
  209. package/dist-runtime/workflow/lib/resultPaths.js.map +1 -0
  210. package/dist-runtime/workflow/lib/runtimeVersion.d.ts +10 -0
  211. package/dist-runtime/workflow/lib/runtimeVersion.js +46 -0
  212. package/dist-runtime/workflow/lib/runtimeVersion.js.map +1 -0
  213. package/dist-runtime/workflow/lib/signer.d.ts +10 -0
  214. package/dist-runtime/workflow/lib/signer.js +105 -0
  215. package/dist-runtime/workflow/lib/signer.js.map +1 -0
  216. package/dist-runtime/workflow/lib/signerIdentity.d.ts +1 -0
  217. package/dist-runtime/workflow/lib/signerIdentity.js +23 -0
  218. package/dist-runtime/workflow/lib/signerIdentity.js.map +1 -0
  219. package/dist-runtime/workflow/lib/simulation.d.ts +35 -0
  220. package/dist-runtime/workflow/lib/simulation.js +282 -0
  221. package/dist-runtime/workflow/lib/simulation.js.map +1 -0
  222. package/dist-runtime/workflow/lib/simulationCallers.d.ts +44 -0
  223. package/dist-runtime/workflow/lib/simulationCallers.js +260 -0
  224. package/dist-runtime/workflow/lib/simulationCallers.js.map +1 -0
  225. package/dist-runtime/workflow/lib/sourceRpcPolicy.d.ts +1 -0
  226. package/dist-runtime/workflow/lib/sourceRpcPolicy.js +43 -0
  227. package/dist-runtime/workflow/lib/sourceRpcPolicy.js.map +1 -0
  228. package/dist-runtime/workflow/lib/state.d.ts +6 -0
  229. package/dist-runtime/workflow/lib/state.js +25 -0
  230. package/dist-runtime/workflow/lib/state.js.map +1 -0
  231. package/dist-runtime/workflow/lib/staticValidation.d.ts +22 -0
  232. package/dist-runtime/workflow/lib/staticValidation.js +124 -0
  233. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -0
  234. package/dist-runtime/workflow/lib/zksyncForkCapability.d.ts +27 -0
  235. package/dist-runtime/workflow/lib/zksyncForkCapability.js +52 -0
  236. package/dist-runtime/workflow/lib/zksyncForkCapability.js.map +1 -0
  237. package/dist-runtime/workflow/lib/zksyncForkRunner.d.ts +57 -0
  238. package/dist-runtime/workflow/lib/zksyncForkRunner.js +344 -0
  239. package/dist-runtime/workflow/lib/zksyncForkRunner.js.map +1 -0
  240. package/dist-runtime/workflow/reconcileExternal.d.ts +1 -0
  241. package/dist-runtime/workflow/reconcileExternal.js +87 -0
  242. package/dist-runtime/workflow/reconcileExternal.js.map +1 -0
  243. package/dist-runtime/workflow/reconcileExternalRun.d.ts +1 -0
  244. package/dist-runtime/workflow/reconcileExternalRun.js +77 -0
  245. package/dist-runtime/workflow/reconcileExternalRun.js.map +1 -0
  246. package/dist-runtime/workflow/releaseFinalize.d.ts +1 -0
  247. package/dist-runtime/workflow/releaseFinalize.js +11 -0
  248. package/dist-runtime/workflow/releaseFinalize.js.map +1 -0
  249. package/dist-runtime/workflow/run.d.ts +40 -0
  250. package/dist-runtime/workflow/run.js +858 -0
  251. package/dist-runtime/workflow/run.js.map +1 -0
  252. package/dist-runtime/workflow/staticValidate.d.ts +1 -0
  253. package/dist-runtime/workflow/staticValidate.js +26 -0
  254. package/dist-runtime/workflow/staticValidate.js.map +1 -0
  255. package/dist-runtime/workflow/steps/call.d.ts +3 -0
  256. package/dist-runtime/workflow/steps/call.js +9 -0
  257. package/dist-runtime/workflow/steps/call.js.map +1 -0
  258. package/dist-runtime/workflow/steps/check.d.ts +3 -0
  259. package/dist-runtime/workflow/steps/check.js +9 -0
  260. package/dist-runtime/workflow/steps/check.js.map +1 -0
  261. package/dist-runtime/workflow/steps/custom.d.ts +3 -0
  262. package/dist-runtime/workflow/steps/custom.js +33 -0
  263. package/dist-runtime/workflow/steps/custom.js.map +1 -0
  264. package/dist-runtime/workflow/steps/deploy.d.ts +3 -0
  265. package/dist-runtime/workflow/steps/deploy.js +595 -0
  266. package/dist-runtime/workflow/steps/deploy.js.map +1 -0
  267. package/dist-runtime/workflow/steps/upgrade.d.ts +3 -0
  268. package/dist-runtime/workflow/steps/upgrade.js +465 -0
  269. package/dist-runtime/workflow/steps/upgrade.js.map +1 -0
  270. package/dist-runtime/workflow/steps/view.d.ts +3 -0
  271. package/dist-runtime/workflow/steps/view.js +9 -0
  272. package/dist-runtime/workflow/steps/view.js.map +1 -0
  273. package/package.json +26 -5
  274. package/runtime/config/hardhatAdapters.ts +50 -0
  275. package/runtime/config/networks.ts +296 -0
  276. package/runtime/config/openzeppelin.ts +173 -0
  277. package/runtime/config/rpc.ts +27 -0
  278. package/runtime/config/zksyncSolcPath.ts +59 -0
  279. package/runtime/hardhat-types.d.ts +2 -0
  280. package/runtime/migrate.ts +154 -0
  281. package/runtime/projectHardhat.ts +10 -0
  282. package/runtime/template-migration.json +293 -0
  283. package/runtime/workflow/checkCode.ts +13 -0
  284. package/runtime/workflow/checkCodeFinalize.ts +8 -0
  285. package/runtime/workflow/checkCodePlan.ts +8 -0
  286. package/runtime/workflow/cli.ts +356 -0
  287. package/runtime/workflow/commitContractInfo.ts +63 -0
  288. package/runtime/workflow/create2Hashes.ts +79 -0
  289. package/runtime/workflow/forkSourceProxy.ts +193 -0
  290. package/runtime/workflow/importState.ts +190 -0
  291. package/runtime/workflow/lib/authority.ts +170 -0
  292. package/runtime/workflow/lib/calldata.ts +9 -0
  293. package/runtime/workflow/lib/calls.ts +407 -0
  294. package/runtime/workflow/lib/checkCode/args.ts +76 -0
  295. package/runtime/workflow/lib/checkCode/command.ts +36 -0
  296. package/runtime/workflow/lib/checkCode/dependencies.ts +112 -0
  297. package/runtime/workflow/lib/checkCode/finalize.ts +198 -0
  298. package/runtime/workflow/lib/checkCode/index.ts +18 -0
  299. package/runtime/workflow/lib/checkCode/plan.ts +163 -0
  300. package/runtime/workflow/lib/checkCodeReport.ts +133 -0
  301. package/runtime/workflow/lib/checkCodeRunner.ts +1225 -0
  302. package/runtime/workflow/lib/cliTool.ts +31 -0
  303. package/runtime/workflow/lib/config.ts +130 -0
  304. package/runtime/workflow/lib/contractInfoCandidates.ts +690 -0
  305. package/runtime/workflow/lib/create2.ts +278 -0
  306. package/runtime/workflow/lib/create2Hashes.ts +83 -0
  307. package/runtime/workflow/lib/deploymentInfo.ts +286 -0
  308. package/runtime/workflow/lib/deploymentRecords.ts +576 -0
  309. package/runtime/workflow/lib/deployments.ts +276 -0
  310. package/runtime/workflow/lib/erc1967.ts +57 -0
  311. package/runtime/workflow/lib/errors.ts +95 -0
  312. package/runtime/workflow/lib/executionId.ts +35 -0
  313. package/runtime/workflow/lib/executionPlan.ts +550 -0
  314. package/runtime/workflow/lib/executionProgress.ts +127 -0
  315. package/runtime/workflow/lib/external.ts +372 -0
  316. package/runtime/workflow/lib/externalExecutionScanner.ts +892 -0
  317. package/runtime/workflow/lib/forkSnapshot.ts +231 -0
  318. package/runtime/workflow/lib/gateTool.ts +261 -0
  319. package/runtime/workflow/lib/gateToolSync.ts +398 -0
  320. package/runtime/workflow/lib/lock.ts +388 -0
  321. package/runtime/workflow/lib/migrationState.ts +1246 -0
  322. package/runtime/workflow/lib/operatorExecution.ts +174 -0
  323. package/runtime/workflow/lib/parameters.ts +437 -0
  324. package/runtime/workflow/lib/pendingDeploymentReuse.ts +428 -0
  325. package/runtime/workflow/lib/proxy.ts +45 -0
  326. package/runtime/workflow/lib/registryCommit.ts +455 -0
  327. package/runtime/workflow/lib/release.ts +329 -0
  328. package/runtime/workflow/lib/releaseFinalize.ts +711 -0
  329. package/runtime/workflow/lib/releaseParameters.ts +248 -0
  330. package/runtime/workflow/lib/reporter.ts +502 -0
  331. package/runtime/workflow/lib/resultPaths.ts +49 -0
  332. package/runtime/workflow/lib/runtimeVersion.ts +28 -0
  333. package/runtime/workflow/lib/signer.ts +124 -0
  334. package/runtime/workflow/lib/signerIdentity.ts +22 -0
  335. package/runtime/workflow/lib/simulation.ts +415 -0
  336. package/runtime/workflow/lib/simulationCallers.ts +335 -0
  337. package/runtime/workflow/lib/sourceRpcPolicy.ts +41 -0
  338. package/runtime/workflow/lib/state.ts +25 -0
  339. package/runtime/workflow/lib/staticValidation.ts +142 -0
  340. package/runtime/workflow/lib/zksyncForkCapability.ts +80 -0
  341. package/runtime/workflow/lib/zksyncForkRunner.ts +505 -0
  342. package/runtime/workflow/reconcileExternal.ts +86 -0
  343. package/runtime/workflow/reconcileExternalRun.ts +88 -0
  344. package/runtime/workflow/releaseFinalize.ts +8 -0
  345. package/runtime/workflow/run.ts +1072 -0
  346. package/runtime/workflow/staticValidate.ts +23 -0
  347. package/runtime/workflow/steps/call.ts +10 -0
  348. package/runtime/workflow/steps/check.ts +10 -0
  349. package/runtime/workflow/steps/custom.ts +43 -0
  350. package/runtime/workflow/steps/deploy.ts +771 -0
  351. package/runtime/workflow/steps/upgrade.ts +598 -0
  352. package/runtime/workflow/steps/view.ts +10 -0
@@ -0,0 +1,372 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import type { ReleaseExecutionPlan } from "./executionPlan";
4
+
5
+ export interface ExternalCall {
6
+ transactionId: string;
7
+ stepId: string;
8
+ to: string;
9
+ value: string;
10
+ data: string;
11
+ operation: 0 | 1;
12
+ scheme?: "zksync-eravm";
13
+ factoryDeps?: string[];
14
+ method: string;
15
+ args: unknown[];
16
+ executor: string;
17
+ reason: string;
18
+ }
19
+
20
+ export interface ExternalExecutionGroup {
21
+ groupId: string;
22
+ executor: string;
23
+ transactionIds: string[];
24
+ calls: ExternalCall[];
25
+ }
26
+
27
+ export interface ExternalExecutionSegment {
28
+ segmentId: string;
29
+ transactionStartIndex: number;
30
+ transactionIds: string[];
31
+ handoffBlock: number;
32
+ groups: ExternalExecutionGroup[];
33
+ createdAt: string;
34
+ }
35
+
36
+ export interface ExternalExecutionPackage {
37
+ version: 1;
38
+ taskId: string;
39
+ target: string;
40
+ executionId: string;
41
+ operator: string;
42
+ executionPlanHash: string;
43
+ segments: ExternalExecutionSegment[];
44
+ createdAt: string;
45
+ updatedAt: string;
46
+ }
47
+
48
+ export class ExternalExecutionRequired extends Error {
49
+ constructor(
50
+ readonly stepId: string,
51
+ readonly calls: ExternalCall[],
52
+ ) {
53
+ super(`External execution required for step ${stepId}`);
54
+ this.name = "ExternalExecutionRequired";
55
+ }
56
+ }
57
+
58
+ const safeId = (value: string, label: string): string => {
59
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/.test(value)) {
60
+ throw new Error(`${label} is invalid`);
61
+ }
62
+ return value;
63
+ };
64
+
65
+ const normalizeAddress = (value: string, label: string): string => {
66
+ if (!/^0x[0-9a-fA-F]{40}$/.test(value)) throw new Error(`${label} is invalid`);
67
+ return value.toLowerCase();
68
+ };
69
+
70
+ const normalizeValue = (value: string, label: string): string => {
71
+ if (!/^(?:0[xX][0-9a-fA-F]+|[0-9]+)$/.test(value)) {
72
+ throw new Error(`${label} is invalid`);
73
+ }
74
+ return BigInt(value).toString(10);
75
+ };
76
+
77
+ const normalizeData = (value: string, label: string): string => {
78
+ if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(value)) throw new Error(`${label} is invalid`);
79
+ return value.toLowerCase();
80
+ };
81
+
82
+ const normalizeFactoryDeps = (value: unknown, label: string): string[] => {
83
+ if (!Array.isArray(value)) throw new Error(`${label} must be an array`);
84
+ const output: string[] = [];
85
+ const seen = new Set<string>();
86
+ for (const [index, dependency] of value.entries()) {
87
+ if (typeof dependency !== "string" || !/^0x(?:[0-9a-fA-F]{2})+$/.test(dependency)) {
88
+ throw new Error(`${label}[${index}] is invalid`);
89
+ }
90
+ const normalized = dependency.toLowerCase();
91
+ if (seen.has(normalized)) continue;
92
+ seen.add(normalized);
93
+ output.push(normalized);
94
+ }
95
+ return output;
96
+ };
97
+
98
+ const canonicalCall = (call: ExternalCall, index: number): ExternalCall => {
99
+ if (call.operation !== 0 && call.operation !== 1) {
100
+ throw new Error(`external call ${index} operation is invalid`);
101
+ }
102
+ if (call.scheme !== undefined && call.scheme !== "zksync-eravm") {
103
+ throw new Error(`external call ${index} scheme is invalid`);
104
+ }
105
+ if (call.scheme === "zksync-eravm" && call.factoryDeps === undefined) {
106
+ throw new Error(`external call ${index} factoryDeps is required for zkSync`);
107
+ }
108
+ if (call.scheme === undefined && call.factoryDeps !== undefined) {
109
+ throw new Error(`external call ${index} factoryDeps is only supported for zkSync`);
110
+ }
111
+ return {
112
+ transactionId: safeId(call.transactionId, `external call ${index} transactionId`),
113
+ stepId: safeId(call.stepId, `external call ${index} stepId`),
114
+ to: normalizeAddress(call.to, `external call ${index} to`),
115
+ value: normalizeValue(call.value, `external call ${index} value`),
116
+ data: normalizeData(call.data, `external call ${index} data`),
117
+ operation: call.operation,
118
+ ...(call.scheme === "zksync-eravm"
119
+ ? {
120
+ scheme: "zksync-eravm" as const,
121
+ factoryDeps: normalizeFactoryDeps(
122
+ call.factoryDeps,
123
+ `external call ${index} factoryDeps`,
124
+ ),
125
+ }
126
+ : {}),
127
+ method: String(call.method),
128
+ args: call.args,
129
+ executor: normalizeAddress(call.executor, `external call ${index} executor`),
130
+ reason: String(call.reason),
131
+ };
132
+ };
133
+
134
+ const groupAdjacentCalls = (calls: ExternalCall[]): ExternalExecutionGroup[] => {
135
+ const groups: ExternalExecutionGroup[] = [];
136
+ for (const call of calls) {
137
+ const previous = groups.at(-1);
138
+ if (previous && previous.executor === call.executor) {
139
+ previous.transactionIds.push(call.transactionId);
140
+ previous.calls.push(call);
141
+ continue;
142
+ }
143
+ groups.push({
144
+ groupId: `group-${String(groups.length + 1).padStart(4, "0")}`,
145
+ executor: call.executor,
146
+ transactionIds: [call.transactionId],
147
+ calls: [call],
148
+ });
149
+ }
150
+ return groups;
151
+ };
152
+
153
+ const packagePath = (taskDir: string, target: string, executionId: string): string => {
154
+ safeId(target, "external package target");
155
+ safeId(executionId, "external package executionId");
156
+ const resolvedTask = path.resolve(taskDir);
157
+ const filePath = path.join(
158
+ resolvedTask,
159
+ "calldata",
160
+ target,
161
+ executionId,
162
+ "external-execution.json",
163
+ );
164
+ const relative = path.relative(resolvedTask, filePath);
165
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
166
+ throw new Error("external package path escapes the task directory");
167
+ }
168
+ return filePath;
169
+ };
170
+
171
+ const writeAtomic = (filePath: string, value: unknown): void => {
172
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
173
+ const serialized = JSON.stringify(value, null, 2) + "\n";
174
+ const temporary = `${filePath}.${process.pid}.${Date.now()}.tmp`;
175
+ try {
176
+ fs.writeFileSync(temporary, serialized, { flag: "wx", mode: 0o600 });
177
+ fs.renameSync(temporary, filePath);
178
+ } catch (error) {
179
+ if (fs.existsSync(temporary)) fs.unlinkSync(temporary);
180
+ throw error;
181
+ }
182
+ };
183
+
184
+ const externalSegments = (
185
+ plan: ReleaseExecutionPlan,
186
+ ): Array<{ index: number; transactions: ReleaseExecutionPlan["transactions"] }> => {
187
+ const segments: Array<{ index: number; transactions: ReleaseExecutionPlan["transactions"] }> = [];
188
+ for (const transaction of plan.transactions) {
189
+ if (transaction.route !== "external") continue;
190
+ const previous = segments.at(-1);
191
+ if (
192
+ previous
193
+ && previous.transactions.at(-1)!.transactionIndex + 1 === transaction.transactionIndex
194
+ ) {
195
+ previous.transactions.push(transaction);
196
+ continue;
197
+ }
198
+ segments.push({ index: segments.length, transactions: [transaction] });
199
+ }
200
+ return segments;
201
+ };
202
+
203
+ const canonicalSegmentCalls = (
204
+ plan: ReleaseExecutionPlan,
205
+ rawCalls: ExternalCall[],
206
+ ): { segmentIndex: number; transactions: ReleaseExecutionPlan["transactions"]; calls: ExternalCall[] } => {
207
+ if (rawCalls.length === 0) {
208
+ throw new Error("external package calls must cover one consecutive external segment");
209
+ }
210
+ const calls = rawCalls.map(canonicalCall);
211
+ const segments = externalSegments(plan);
212
+ const segmentIndex = segments.findIndex((segment) => (
213
+ segment.transactions.length === calls.length
214
+ && segment.transactions.every((transaction, index) => (
215
+ transaction.transactionId === calls[index].transactionId
216
+ ))
217
+ ));
218
+ if (segmentIndex < 0) {
219
+ throw new Error("external package calls must cover one consecutive external segment");
220
+ }
221
+ const transactions = segments[segmentIndex].transactions;
222
+ for (const [index, transaction] of transactions.entries()) {
223
+ const call = calls[index];
224
+ if (
225
+ call.stepId !== transaction.stepId
226
+ || call.executor !== transaction.executor.toLowerCase()
227
+ || call.to !== transaction.to.toLowerCase()
228
+ || call.value !== BigInt(transaction.value).toString(10)
229
+ || call.data !== transaction.data.toLowerCase()
230
+ || call.operation !== transaction.operation
231
+ || call.scheme !== transaction.scheme
232
+ || JSON.stringify(call.factoryDeps) !== JSON.stringify(transaction.factoryDeps)
233
+ ) {
234
+ throw new Error(
235
+ `external plan transaction ${transaction.transactionId} must match its segment call`,
236
+ );
237
+ }
238
+ }
239
+ return { segmentIndex, transactions, calls };
240
+ };
241
+
242
+ const assertExternalTransportSupported = (plan: ReleaseExecutionPlan): void => {
243
+ if (
244
+ plan.transactions.some(
245
+ (transaction) => transaction.route === "external" && transaction.scheme === "zksync-eravm",
246
+ )
247
+ ) {
248
+ throw new Error(
249
+ "zkSync external Admin execution is not supported until an exact EIP-712 factoryDeps transport is implemented",
250
+ );
251
+ }
252
+ };
253
+
254
+ const parseExistingPackage = (
255
+ filePath: string,
256
+ plan: ReleaseExecutionPlan,
257
+ ): ExternalExecutionPackage | undefined => {
258
+ if (!fs.existsSync(filePath)) return undefined;
259
+ let parsed: unknown;
260
+ try {
261
+ parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
262
+ } catch (error) {
263
+ throw new Error(
264
+ `external execution package is invalid: ${error instanceof Error ? error.message : String(error)}`,
265
+ );
266
+ }
267
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
268
+ throw new Error("external execution package must be an object");
269
+ }
270
+ const value = parsed as Record<string, unknown>;
271
+ if (
272
+ value.version !== 1
273
+ || value.taskId !== plan.taskId
274
+ || value.target !== plan.target
275
+ || value.executionId !== plan.executionId
276
+ || value.operator !== plan.operator
277
+ || value.executionPlanHash !== plan.planHash
278
+ || !Array.isArray(value.segments)
279
+ || typeof value.createdAt !== "string"
280
+ || typeof value.updatedAt !== "string"
281
+ ) {
282
+ throw new Error("external execution package does not match the execution plan");
283
+ }
284
+ const segments = externalSegments(plan);
285
+ for (const [index, rawSegment] of value.segments.entries()) {
286
+ if (!rawSegment || typeof rawSegment !== "object" || Array.isArray(rawSegment)) {
287
+ throw new Error(`external execution segment ${index} is invalid`);
288
+ }
289
+ const segment = rawSegment as ExternalExecutionSegment;
290
+ const expected = segments[index]?.transactions;
291
+ const calls = Array.isArray(segment.groups)
292
+ ? segment.groups.flatMap((group) => group.calls)
293
+ : [];
294
+ if (
295
+ !expected
296
+ || segment.segmentId !== `segment-${String(index + 1).padStart(4, "0")}`
297
+ || segment.transactionStartIndex !== expected[0].transactionIndex
298
+ || !Array.isArray(segment.transactionIds)
299
+ || JSON.stringify(segment.transactionIds) !== JSON.stringify(
300
+ expected.map((transaction) => transaction.transactionId),
301
+ )
302
+ || !Number.isSafeInteger(segment.handoffBlock)
303
+ || segment.handoffBlock < 0
304
+ || calls.length !== expected.length
305
+ ) {
306
+ throw new Error(`external execution segment ${index} does not match the execution plan`);
307
+ }
308
+ canonicalSegmentCalls(plan, calls);
309
+ }
310
+ return value as unknown as ExternalExecutionPackage;
311
+ };
312
+
313
+ export const loadExternalExecutionPackage = (input: {
314
+ taskDir: string;
315
+ plan: ReleaseExecutionPlan;
316
+ }): { filePath: string; package: ExternalExecutionPackage } | undefined => {
317
+ assertExternalTransportSupported(input.plan);
318
+ const filePath = packagePath(input.taskDir, input.plan.target, input.plan.executionId);
319
+ const existing = parseExistingPackage(filePath, input.plan);
320
+ return existing ? { filePath, package: existing } : undefined;
321
+ };
322
+
323
+ export const writeExternalExecutionPackage = (input: {
324
+ taskDir: string;
325
+ plan: ReleaseExecutionPlan;
326
+ handoffBlock: number;
327
+ calls: ExternalCall[];
328
+ now?: () => string;
329
+ }): { filePath: string; package: ExternalExecutionPackage } => {
330
+ assertExternalTransportSupported(input.plan);
331
+ if (!Number.isSafeInteger(input.handoffBlock) || input.handoffBlock < 0) {
332
+ throw new Error("external package handoffBlock must be a nonnegative safe integer");
333
+ }
334
+ if (!input.plan.transactions.some((transaction) => transaction.route === "external")) {
335
+ throw new Error("external execution package requires external plan transactions");
336
+ }
337
+ const { segmentIndex, transactions, calls } = canonicalSegmentCalls(input.plan, input.calls);
338
+ const target = safeId(input.plan.target, "external package target");
339
+ const executionId = safeId(input.plan.executionId, "external package executionId");
340
+ const filePath = packagePath(input.taskDir, target, executionId);
341
+ const existing = parseExistingPackage(filePath, input.plan);
342
+ if (existing?.segments[segmentIndex]) {
343
+ return { filePath, package: existing };
344
+ }
345
+ if ((existing?.segments.length ?? 0) !== segmentIndex) {
346
+ throw new Error("external execution segments must be appended in plan order");
347
+ }
348
+ const now = (input.now || (() => new Date().toISOString()))();
349
+ const segment: ExternalExecutionSegment = {
350
+ segmentId: `segment-${String(segmentIndex + 1).padStart(4, "0")}`,
351
+ transactionStartIndex: transactions[0].transactionIndex,
352
+ transactionIds: transactions.map((transaction) => transaction.transactionId),
353
+ handoffBlock: input.handoffBlock,
354
+ groups: groupAdjacentCalls(calls),
355
+ createdAt: now,
356
+ };
357
+ const output: ExternalExecutionPackage = existing
358
+ ? { ...existing, segments: [...existing.segments, segment], updatedAt: now }
359
+ : {
360
+ version: 1,
361
+ taskId: safeId(input.plan.taskId, "external package taskId"),
362
+ target,
363
+ executionId,
364
+ operator: normalizeAddress(input.plan.operator, "external package operator"),
365
+ executionPlanHash: input.plan.planHash,
366
+ segments: [segment],
367
+ createdAt: now,
368
+ updatedAt: now,
369
+ };
370
+ writeAtomic(filePath, output);
371
+ return { filePath, package: output };
372
+ };