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,455 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { loadConfig, readJsonFile, writeJsonFile } from "./config";
4
+ import {
5
+ promoteContractInfoCandidates,
6
+ validateContractInfoCandidate,
7
+ type ContractInfoCandidate,
8
+ type ContractInfoCandidateReplacement,
9
+ } from "./contractInfoCandidates";
10
+ import { loadContractInfo, validateContractInfo } from "./deployments";
11
+ import { loadDeploymentInfo, updateDeploymentInfoFromRecords } from "./deploymentInfo";
12
+ import { deploymentRecordPath, type DeploymentExecutionRecord } from "./deploymentRecords";
13
+ import { loadReleaseExecutionPlan } from "./executionPlan";
14
+ import { loadOperatorExecutionResult } from "./operatorExecution";
15
+ import { readParameterLockExecution } from "./lock";
16
+ import { hashValue } from "./release";
17
+
18
+ export interface RegistryCommitSelection {
19
+ network: string;
20
+ executionId: string;
21
+ }
22
+
23
+ export interface RegistryCommitReport {
24
+ version: 1;
25
+ status: "committed";
26
+ taskId: string;
27
+ commitId: string;
28
+ selections: RegistryCommitSelection[];
29
+ beforeHash: string;
30
+ afterHash: string;
31
+ changedEntries: Array<{
32
+ network: string;
33
+ instanceId: string;
34
+ previousKey?: string;
35
+ previousAddress?: string;
36
+ candidateKey: string;
37
+ candidateAddress: string;
38
+ }>;
39
+ candidatePaths: string[];
40
+ sourceRecordPaths: string[];
41
+ backupPath?: string;
42
+ deploymentInfoPath: string;
43
+ deploymentInfoHash: string;
44
+ completedAt: string;
45
+ }
46
+
47
+ const SAFE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
48
+
49
+ const safeId = (value: string, label: string): string => {
50
+ if (!SAFE_ID.test(value)) throw new Error(`${label} is invalid`);
51
+ return value;
52
+ };
53
+
54
+ const projectRelative = (root: string, filePath: string): string => {
55
+ const relative = path.relative(path.resolve(root), path.resolve(filePath));
56
+ if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) {
57
+ throw new Error("Registry evidence path escapes the project root");
58
+ }
59
+ return relative.split(path.sep).join("/");
60
+ };
61
+
62
+ const writeExclusiveJson = (filePath: string, value: unknown): void => {
63
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
64
+ try {
65
+ fs.writeFileSync(filePath, JSON.stringify(value, null, 2) + "\n", {
66
+ flag: "wx",
67
+ mode: 0o600,
68
+ });
69
+ } catch (error) {
70
+ if (
71
+ error
72
+ && typeof error === "object"
73
+ && "code" in error
74
+ && String((error as { code?: unknown }).code) === "EEXIST"
75
+ ) {
76
+ throw new Error(`Registry evidence already exists: ${filePath}`);
77
+ }
78
+ throw error;
79
+ }
80
+ };
81
+
82
+ const loadContractInfoBackup = (filePath: string) => (
83
+ validateContractInfo(readJsonFile<unknown>(filePath))
84
+ );
85
+
86
+ const candidatePath = (root: string, executionId: string): string => path.join(
87
+ root,
88
+ `contractInfo.pending.${safeId(executionId, "selection executionId")}.json`,
89
+ );
90
+
91
+ const verificationPath = (
92
+ taskDir: string,
93
+ selection: RegistryCommitSelection,
94
+ ): string => path.join(
95
+ taskDir,
96
+ "results",
97
+ selection.network,
98
+ selection.executionId,
99
+ "verify",
100
+ "verification.json",
101
+ );
102
+
103
+ const assertBusinessVerification = (
104
+ taskDir: string,
105
+ taskId: string,
106
+ selection: RegistryCommitSelection,
107
+ ): void => {
108
+ let verification: Record<string, unknown>;
109
+ try {
110
+ verification = readJsonFile<Record<string, unknown>>(
111
+ verificationPath(taskDir, selection),
112
+ );
113
+ } catch {
114
+ throw new Error(`Business verification is missing for ${selection.network}`);
115
+ }
116
+ if (
117
+ verification.taskId !== taskId
118
+ || verification.target !== selection.network
119
+ || verification.executionId !== selection.executionId
120
+ || verification.mode !== "verify"
121
+ || !Array.isArray(verification.steps)
122
+ || verification.steps.length === 0
123
+ ) {
124
+ throw new Error(`Business verification is missing for ${selection.network}`);
125
+ }
126
+ for (const [index, rawStep] of verification.steps.entries()) {
127
+ if (!rawStep || typeof rawStep !== "object" || Array.isArray(rawStep)) {
128
+ throw new Error(`Business verification step ${index} is invalid`);
129
+ }
130
+ const step = rawStep as Record<string, unknown>;
131
+ if (!step.results || typeof step.results !== "object" || Array.isArray(step.results)) {
132
+ throw new Error(`Business verification step ${index} has no results`);
133
+ }
134
+ for (const result of Object.values(step.results as Record<string, unknown>)) {
135
+ if (!result || typeof result !== "object" || Array.isArray(result)) {
136
+ throw new Error(`Business verification step ${index} result is invalid`);
137
+ }
138
+ const comparison = result as Record<string, unknown>;
139
+ if (String(comparison.actual) !== String(comparison.expected)) {
140
+ throw new Error(`Business verification step ${index} did not match expected state`);
141
+ }
142
+ }
143
+ }
144
+ const status = readJsonFile<Record<string, unknown>>(path.join(taskDir, "status.json"));
145
+ const networkStatus = status.networks && typeof status.networks === "object"
146
+ ? (status.networks as Record<string, Record<string, unknown>>)[selection.network]
147
+ : undefined;
148
+ if (
149
+ networkStatus?.lastExecutionId !== selection.executionId
150
+ || networkStatus.lastExecutionMode !== "verify"
151
+ || networkStatus.verifyStatus !== "verified"
152
+ ) {
153
+ throw new Error(`Verify status is stale for ${selection.network}`);
154
+ }
155
+ };
156
+
157
+ const readRecord = (
158
+ taskDir: string,
159
+ taskId: string,
160
+ selection: RegistryCommitSelection,
161
+ ): { record: DeploymentExecutionRecord; filePath: string } => {
162
+ const filePath = deploymentRecordPath(taskDir, selection.network, selection.executionId);
163
+ const record = readJsonFile<DeploymentExecutionRecord>(filePath);
164
+ if (
165
+ record.taskId !== taskId
166
+ || record.network !== selection.network
167
+ || record.executionId !== selection.executionId
168
+ ) {
169
+ throw new Error(`Deployment record identity mismatch for ${selection.network}`);
170
+ }
171
+ if (record.status !== "waiting_code_check" && record.status !== "applied") {
172
+ throw new Error(
173
+ `Deployment record ${selection.network} is ${record.status}, expected waiting_code_check`,
174
+ );
175
+ }
176
+ return { record, filePath };
177
+ };
178
+
179
+ const readCandidate = (
180
+ root: string,
181
+ taskId: string,
182
+ selection: RegistryCommitSelection,
183
+ allowPromoted: boolean,
184
+ ): { candidate: ContractInfoCandidate; filePath: string } | undefined => {
185
+ const filePath = candidatePath(root, selection.executionId);
186
+ if (!fs.existsSync(filePath)) return undefined;
187
+ const candidate = validateContractInfoCandidate(readJsonFile<unknown>(filePath));
188
+ if (
189
+ candidate.deploymentId !== taskId
190
+ || candidate.executionId !== selection.executionId
191
+ || candidate.network !== selection.network
192
+ ) {
193
+ throw new Error(`ContractInfo candidate identity mismatch for ${selection.network}`);
194
+ }
195
+ if (candidate.status === "promoted" && !allowPromoted) {
196
+ throw new Error(`ContractInfo candidate was already committed for ${selection.network}`);
197
+ }
198
+ return { candidate, filePath };
199
+ };
200
+
201
+ const reconciliationPath = (
202
+ taskDir: string,
203
+ selection: RegistryCommitSelection,
204
+ ): string => path.join(
205
+ taskDir,
206
+ "results",
207
+ selection.network,
208
+ selection.executionId,
209
+ "external-reconciliation.json",
210
+ );
211
+
212
+ const assertExecutionEvidence = (input: {
213
+ root: string;
214
+ taskDir: string;
215
+ taskId: string;
216
+ selection: RegistryCommitSelection;
217
+ }): void => {
218
+ const plan = loadReleaseExecutionPlan({
219
+ root: input.root,
220
+ taskDir: input.taskDir,
221
+ target: input.selection.network,
222
+ executionId: input.selection.executionId,
223
+ });
224
+ if (plan.taskId !== input.taskId) throw new Error("Execution plan taskId mismatch");
225
+ const operatorExecutionPath = path.join(
226
+ input.taskDir,
227
+ "results",
228
+ plan.target,
229
+ plan.executionId,
230
+ "operator-execution.json",
231
+ );
232
+ if (
233
+ plan.transactions.some((transaction) => transaction.route === "operator")
234
+ || fs.existsSync(operatorExecutionPath)
235
+ ) {
236
+ loadOperatorExecutionResult({ taskDir: input.taskDir, plan });
237
+ }
238
+ if (plan.releaseKind === "development") {
239
+ if (plan.transactions.some((transaction) => transaction.route !== "operator")) {
240
+ throw new Error("Development registry commit cannot contain external transactions");
241
+ }
242
+ return;
243
+ }
244
+ const lock = readParameterLockExecution(input.taskDir, input.selection.executionId);
245
+ if (lock.finalSimulation.status !== "succeeded") {
246
+ throw new Error(`Final simulation is incomplete for ${input.selection.network}`);
247
+ }
248
+ if (lock.finalSimulation.executionPlanHash !== plan.planHash) {
249
+ throw new Error(`Final simulation execution plan is stale for ${input.selection.network}`);
250
+ }
251
+ const report = readJsonFile<Record<string, unknown>>(
252
+ reconciliationPath(input.taskDir, input.selection),
253
+ );
254
+ if (
255
+ report.version !== 1
256
+ || report.taskId !== input.taskId
257
+ || report.target !== input.selection.network
258
+ || report.executionId !== input.selection.executionId
259
+ || report.executionPlanHash !== plan.planHash
260
+ || (report.status !== "not_required" && report.status !== "reconciled")
261
+ || !Array.isArray(report.matches)
262
+ || report.matches.length !== plan.transactions.length
263
+ || report.matches.some((match) => (
264
+ !match
265
+ || typeof match !== "object"
266
+ || (match as Record<string, unknown>).finalized !== true
267
+ || (match as Record<string, unknown>).receiptStatus !== 1
268
+ ))
269
+ ) {
270
+ throw new Error(`Admin external reconciliation is incomplete for ${input.selection.network}`);
271
+ }
272
+ };
273
+
274
+ const updateCommittedStatus = (
275
+ taskDir: string,
276
+ selections: RegistryCommitSelection[],
277
+ ): void => {
278
+ const filePath = path.join(taskDir, "status.json");
279
+ const current = readJsonFile<Record<string, unknown>>(filePath);
280
+ const currentNetworks = current.networks && typeof current.networks === "object"
281
+ ? current.networks as Record<string, Record<string, unknown>>
282
+ : {};
283
+ const networks = { ...currentNetworks };
284
+ const now = new Date().toISOString();
285
+ for (const selection of selections) {
286
+ networks[selection.network] = {
287
+ ...(networks[selection.network] || {}),
288
+ deployStatus: "deployed_pending_code_audit",
289
+ registryExecutionId: selection.executionId,
290
+ updatedAt: now,
291
+ };
292
+ }
293
+ writeJsonFile(filePath, {
294
+ ...current,
295
+ status: "deployed_pending_code_audit",
296
+ networks,
297
+ updatedAt: now,
298
+ });
299
+ };
300
+
301
+ const markDeploymentRecordsCommitted = (
302
+ root: string,
303
+ recordPaths: string[],
304
+ ): void => {
305
+ const now = new Date().toISOString();
306
+ for (const recordPath of recordPaths) {
307
+ const filePath = path.join(root, ...recordPath.split("/"));
308
+ const record = readJsonFile<DeploymentExecutionRecord>(filePath);
309
+ const changes = record.changes.map((change) => (
310
+ change.status === "waiting_code_check"
311
+ ? { ...change, status: "applied" as const }
312
+ : change
313
+ ));
314
+ if (changes.some((change) => change.status !== "applied")) {
315
+ throw new Error(`Deployment record is not ready to commit: ${recordPath}`);
316
+ }
317
+ writeJsonFile(filePath, {
318
+ ...record,
319
+ status: "applied",
320
+ changes,
321
+ updatedAt: now,
322
+ } satisfies DeploymentExecutionRecord);
323
+ }
324
+ };
325
+
326
+ const validateSelections = (
327
+ selections: RegistryCommitSelection[],
328
+ ): RegistryCommitSelection[] => {
329
+ if (selections.length === 0) throw new Error("Registry commit requires at least one selection");
330
+ const normalized = selections.map((selection) => ({
331
+ network: safeId(selection.network, "selection network"),
332
+ executionId: safeId(selection.executionId, "selection executionId"),
333
+ })).sort((left, right) => left.network.localeCompare(right.network));
334
+ if (new Set(normalized.map((selection) => selection.network)).size !== normalized.length) {
335
+ throw new Error("Registry commit selections contain a duplicate network");
336
+ }
337
+ return normalized;
338
+ };
339
+
340
+ const loadExistingReport = (
341
+ filePath: string,
342
+ taskId: string,
343
+ commitId: string,
344
+ selections: RegistryCommitSelection[],
345
+ ): RegistryCommitReport | undefined => {
346
+ if (!fs.existsSync(filePath)) return undefined;
347
+ const report = readJsonFile<RegistryCommitReport>(filePath);
348
+ if (
349
+ report.version !== 1
350
+ || report.status !== "committed"
351
+ || report.taskId !== taskId
352
+ || report.commitId !== commitId
353
+ || JSON.stringify(report.selections) !== JSON.stringify(selections)
354
+ ) {
355
+ throw new Error("Registry commitId already exists with different content");
356
+ }
357
+ return report;
358
+ };
359
+
360
+ export const commitVerifiedContractInfo = (input: {
361
+ root: string;
362
+ taskId: string;
363
+ selections: RegistryCommitSelection[];
364
+ commitId: string;
365
+ }): RegistryCommitReport => {
366
+ const taskId = safeId(input.taskId, "registry taskId");
367
+ const commitId = safeId(input.commitId, "registry commitId");
368
+ const selections = validateSelections(input.selections);
369
+ const taskDir = path.join(input.root, "scripts", "tasks", taskId);
370
+ const registryDir = path.join(taskDir, "results", "registry");
371
+ const reportFile = path.join(registryDir, `${commitId}.json`);
372
+ const backupFile = path.join(registryDir, `${commitId}.contractInfo.before.json`);
373
+ const recoveringCommit = fs.existsSync(backupFile);
374
+ const existingReport = loadExistingReport(
375
+ reportFile,
376
+ taskId,
377
+ commitId,
378
+ selections,
379
+ );
380
+ if (existingReport) {
381
+ const config = loadConfig(input.root);
382
+ if (hashValue(loadContractInfo(input.root, config)) !== existingReport.afterHash) {
383
+ throw new Error("Committed contractInfo hash no longer matches the registry report");
384
+ }
385
+ if (hashValue(loadDeploymentInfo(input.root)) !== existingReport.deploymentInfoHash) {
386
+ throw new Error("Committed deploymentInfo hash no longer matches the registry report");
387
+ }
388
+ return existingReport;
389
+ }
390
+
391
+ const records: string[] = [];
392
+ const candidates: Array<{ candidate: ContractInfoCandidate; filePath: string }> = [];
393
+ for (const selection of selections) {
394
+ assertExecutionEvidence({ root: input.root, taskDir, taskId, selection });
395
+ assertBusinessVerification(taskDir, taskId, selection);
396
+ const record = readRecord(taskDir, taskId, selection);
397
+ records.push(projectRelative(input.root, record.filePath));
398
+ const candidate = readCandidate(input.root, taskId, selection, recoveringCommit);
399
+ if (candidate) candidates.push(candidate);
400
+ }
401
+
402
+ const config = loadConfig(input.root);
403
+ const current = loadContractInfo(input.root, config);
404
+ const before = recoveringCommit
405
+ ? loadContractInfoBackup(backupFile)
406
+ : current;
407
+ const beforeHash = hashValue(before);
408
+ let afterHash = beforeHash;
409
+ let changedEntries: ContractInfoCandidateReplacement[] = [];
410
+ let deploymentInfoHash = hashValue(loadDeploymentInfo(input.root));
411
+ let backupPath: string | undefined;
412
+ if (candidates.length > 0) {
413
+ if (!recoveringCommit) {
414
+ writeExclusiveJson(backupFile, before);
415
+ }
416
+ backupPath = projectRelative(input.root, backupFile);
417
+ const promoted = promoteContractInfoCandidates({
418
+ root: input.root,
419
+ config,
420
+ candidatePaths: candidates.map((candidate) => projectRelative(input.root, candidate.filePath)),
421
+ });
422
+ afterHash = promoted.afterHash;
423
+ changedEntries = promoted.changedEntries;
424
+ }
425
+ const deploymentInfo = updateDeploymentInfoFromRecords({
426
+ root: input.root,
427
+ records: records.map((recordPath) => ({ recordPath })),
428
+ expectedContractInfo: loadContractInfo(input.root, config),
429
+ });
430
+ deploymentInfoHash = hashValue(deploymentInfo);
431
+ markDeploymentRecordsCommitted(input.root, records);
432
+ updateCommittedStatus(taskDir, selections);
433
+ const report: RegistryCommitReport = {
434
+ version: 1,
435
+ status: "committed",
436
+ taskId,
437
+ commitId,
438
+ selections,
439
+ beforeHash,
440
+ afterHash,
441
+ changedEntries: [...changedEntries].sort((left, right) => (
442
+ `${left.network}.${left.instanceId}`.localeCompare(`${right.network}.${right.instanceId}`)
443
+ )),
444
+ candidatePaths: candidates
445
+ .map((candidate) => projectRelative(input.root, candidate.filePath))
446
+ .sort(),
447
+ sourceRecordPaths: [...records].sort(),
448
+ backupPath,
449
+ deploymentInfoPath: "deploymentInfo.json",
450
+ deploymentInfoHash,
451
+ completedAt: new Date().toISOString(),
452
+ };
453
+ writeExclusiveJson(reportFile, report);
454
+ return report;
455
+ };