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
@@ -2,16 +2,48 @@ import { spawnSync } from "child_process";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
4
  import YAML from "yaml";
5
+ import { isSafeNetworkAlias } from "../../delivery/policy";
5
6
 
6
7
  export interface StaticValidationCommandResult {
7
8
  status: number;
8
9
  error?: string;
9
10
  }
10
11
 
12
+ export type StaticValidationScheme = "evm" | "zksync-eravm";
13
+
14
+ export interface StaticValidationCompileTarget {
15
+ scheme: StaticValidationScheme;
16
+ network: string;
17
+ }
18
+
19
+ export interface StaticValidationCheckEvidence {
20
+ label: string;
21
+ command: string;
22
+ status: "passed" | "failed";
23
+ exitCode: number;
24
+ scheme?: StaticValidationScheme;
25
+ network?: string;
26
+ error?: string;
27
+ }
28
+
29
+ export interface StaticValidationEvidence {
30
+ schemaVersion: 1;
31
+ status: "passed" | "failed";
32
+ deploymentId: string;
33
+ completedAt: string;
34
+ checks: StaticValidationCheckEvidence[];
35
+ compileTargets: StaticValidationCompileTarget[];
36
+ compiledSchemes: StaticValidationScheme[];
37
+ blockingReasons: string[];
38
+ }
39
+
11
40
  export interface StaticValidationOptions {
41
+ /** Omit to retain the legacy dual-scheme requirement. */
42
+ requiredSchemes?: StaticValidationScheme[];
12
43
  root: string;
13
44
  deploymentId: string;
14
45
  network?: string;
46
+ compileTargets?: StaticValidationCompileTarget[];
15
47
  testCommand?: { command: string; args: string[] };
16
48
  runCommand?: (
17
49
  command: string,
@@ -24,6 +56,7 @@ export interface StaticValidationOptions {
24
56
  export interface StaticValidationResult {
25
57
  status: "passed" | "failed";
26
58
  reportPath: string;
59
+ evidencePath: string;
27
60
  }
28
61
 
29
62
  const SAFE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
@@ -86,42 +119,86 @@ export const runStaticValidation = async (
86
119
  options: StaticValidationOptions,
87
120
  ): Promise<StaticValidationResult> => {
88
121
  if (!SAFE_ID.test(options.deploymentId)) throw new Error("deploymentId is invalid");
89
- if (options.network !== undefined && !SAFE_ID.test(options.network)) {
122
+ if (options.network !== undefined && !isSafeNetworkAlias(options.network)) {
90
123
  throw new Error("network is invalid");
91
124
  }
125
+ const compileTargets = options.compileTargets || (options.network
126
+ ? [{ scheme: "evm" as const, network: options.network }]
127
+ : []);
128
+ const requiredSchemes = options.requiredSchemes ?? ["evm", "zksync-eravm"];
129
+ const invalidTargets = (
130
+ requiredSchemes.length === 0
131
+ || new Set(requiredSchemes).size !== requiredSchemes.length
132
+ || requiredSchemes.some(scheme => !["evm", "zksync-eravm"].includes(scheme))
133
+ || compileTargets.length !== requiredSchemes.length
134
+ || new Set(compileTargets.map(target => target.scheme)).size !== requiredSchemes.length
135
+ || requiredSchemes.some(scheme => !compileTargets.some(target => target.scheme === scheme))
136
+ || compileTargets.some(target => !isSafeNetworkAlias(target.network))
137
+ );
92
138
  const taskDir = path.join(options.root, "scripts", "tasks", options.deploymentId);
93
139
  if (!fs.existsSync(taskDir) || !fs.statSync(taskDir).isDirectory()) {
94
140
  throw new Error(`Deployment task does not exist: ${options.deploymentId}`);
95
141
  }
96
142
  const runCommand = options.runCommand || defaultRunCommand;
97
- const compileArgs = options.network
98
- ? ["run", "compile", "--", "--network", options.network]
99
- : ["run", "compile"];
100
143
  const commands = [
101
- { label: ["npm", ...compileArgs].join(" "), command: "npm", args: compileArgs },
102
- { label: "npx tsc --noEmit", command: "npx", args: ["tsc", "--noEmit"] },
144
+ ...compileTargets.map((target) => ({
145
+ label: `npm run compile -- --network ${target.network}`,
146
+ command: "npm",
147
+ args: ["run", "compile", "--", "--network", target.network],
148
+ scheme: target.scheme,
149
+ network: target.network,
150
+ })),
151
+ { label: "npx tsc --noEmit", command: "npx", args: ["tsc", "--noEmit"], scheme: undefined, network: undefined },
103
152
  {
104
153
  label: (options.testCommand
105
154
  ? [options.testCommand.command, ...options.testCommand.args]
106
155
  : ["npm", "test"]).join(" "),
107
156
  command: options.testCommand?.command || "npm",
108
157
  args: options.testCommand?.args || ["test"],
158
+ scheme: undefined,
159
+ network: undefined,
109
160
  },
110
161
  ];
111
- const evidence: Array<{ label: string; result: StaticValidationCommandResult }> = [];
112
- for (const command of commands) {
162
+ const evidence: Array<{ label: string; result: StaticValidationCommandResult; scheme?: StaticValidationScheme; network?: string }> = [];
163
+ for (const command of invalidTargets ? [] : commands) {
113
164
  let result: StaticValidationCommandResult;
114
165
  try {
115
166
  result = await runCommand(command.command, command.args, { cwd: options.root });
116
167
  } catch (error) {
117
168
  result = { status: 1, error: error instanceof Error ? error.message : String(error) };
118
169
  }
119
- evidence.push({ label: command.label, result });
170
+ evidence.push({ label: command.label, result, scheme: command.scheme, network: command.network });
120
171
  }
121
172
  evidence.push({ label: "YAML/JSON parse", result: parseTaskDocuments(taskDir) });
122
- const status = evidence.every((entry) => entry.result.status === 0) ? "passed" : "failed";
173
+ const status = !invalidTargets && evidence.every((entry) => entry.result.status === 0) ? "passed" : "failed";
123
174
  const completedAt = (options.now || (() => new Date().toISOString()))();
124
175
  const reportPath = `scripts/tasks/${options.deploymentId}/docs/static-validation.md`;
176
+ const evidencePath = `scripts/tasks/${options.deploymentId}/docs/static-validation.json`;
177
+ const checks: StaticValidationCheckEvidence[] = evidence.map((entry) => ({
178
+ label: entry.label,
179
+ command: entry.label,
180
+ status: entry.result.status === 0 ? "passed" : "failed",
181
+ exitCode: entry.result.status,
182
+ ...(entry.scheme ? { scheme: entry.scheme } : {}),
183
+ ...(entry.network ? { network: entry.network } : {}),
184
+ ...(entry.result.error ? { error: entry.result.error } : {}),
185
+ }));
186
+ const structuredEvidence: StaticValidationEvidence = {
187
+ schemaVersion: 1,
188
+ status,
189
+ deploymentId: options.deploymentId,
190
+ completedAt,
191
+ checks,
192
+ compileTargets,
193
+ compiledSchemes: compileTargets
194
+ .filter((target) => checks.some((check) => check.scheme === target.scheme && check.status === "passed"))
195
+ .map((target) => target.scheme),
196
+ blockingReasons: [
197
+ ...(invalidTargets ? [options.requiredSchemes ? `compileTargets must include exactly one target for each required scheme: ${requiredSchemes.join(", ")}` : "compileTargets must include exactly one evm and one zksync-eravm target"] : []),
198
+ ...checks.filter((check) => check.status !== "passed")
199
+ .map((check) => check.scheme ? `${check.scheme} (${check.network}) compile failed` : `${check.label} failed`),
200
+ ],
201
+ };
125
202
  const lines = [
126
203
  "# Static Validation",
127
204
  "",
@@ -138,5 +215,9 @@ export const runStaticValidation = async (
138
215
  ]),
139
216
  ];
140
217
  writeTextAtomic(path.join(options.root, ...reportPath.split("/")), lines.join("\n"));
141
- return { status, reportPath };
218
+ writeTextAtomic(
219
+ path.join(options.root, ...evidencePath.split("/")),
220
+ `${JSON.stringify(structuredEvidence, null, 2)}\n`,
221
+ );
222
+ return { status, reportPath, evidencePath };
142
223
  };
@@ -0,0 +1,314 @@
1
+ import crypto from "crypto";
2
+
3
+ export type ExecutionRoute = "operator" | "external";
4
+
5
+ export interface ReleaseExecutionTransaction {
6
+ transactionId: string;
7
+ stepId: string;
8
+ transactionIndex: number;
9
+ route: ExecutionRoute;
10
+ executor: string;
11
+ to: string;
12
+ value: string;
13
+ data: string;
14
+ operation: 0 | 1;
15
+ scheme?: "zksync-eravm";
16
+ factoryDeps?: string[];
17
+ }
18
+
19
+ export interface ReleaseExecutionTransactionInput {
20
+ stepId: string;
21
+ executor: string;
22
+ to: string;
23
+ value: string;
24
+ data: string;
25
+ operation: 0 | 1;
26
+ scheme?: "zksync-eravm";
27
+ factoryDeps?: string[];
28
+ }
29
+
30
+ export interface CompletedExecutionTransaction {
31
+ transactionId: string;
32
+ transactionHash: string;
33
+ }
34
+
35
+ export interface PlannedExecutionTransaction extends ReleaseExecutionTransaction {
36
+ executionAction: "execute" | "package" | "replay";
37
+ transactionHash?: string;
38
+ }
39
+
40
+ export class ExecutionSegmentDeferred extends Error {
41
+ constructor(readonly transactionId: string) {
42
+ super(`Execution is waiting for the preceding external segment before ${transactionId}`);
43
+ this.name = "ExecutionSegmentDeferred";
44
+ }
45
+ }
46
+
47
+ const SAFE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
48
+ const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
49
+ const DATA = /^0x(?:[0-9a-fA-F]{2})*$/;
50
+ const HASH = /^[0-9a-f]{64}$/;
51
+
52
+ const safeId = (value: unknown, label: string): string => {
53
+ if (typeof value !== "string" || !SAFE_ID.test(value)) {
54
+ throw new Error(`${label} must match ${SAFE_ID}`);
55
+ }
56
+ return value;
57
+ };
58
+
59
+ const address = (value: unknown, label: string): string => {
60
+ if (typeof value !== "string" || !ADDRESS.test(value)) {
61
+ throw new Error(`${label} must be an EVM address`);
62
+ }
63
+ if (value.toLowerCase() === "0x0000000000000000000000000000000000000000") {
64
+ throw new Error(`${label} must be non-zero`);
65
+ }
66
+ return value.toLowerCase();
67
+ };
68
+
69
+ const value = (raw: unknown, label: string): string => {
70
+ if (typeof raw !== "string" || !/^(?:0[xX][0-9a-fA-F]+|[0-9]+)$/.test(raw)) {
71
+ throw new Error(`${label} must be a nonnegative integer string`);
72
+ }
73
+ return BigInt(raw).toString(10);
74
+ };
75
+
76
+ const data = (raw: unknown, label: string): string => {
77
+ if (typeof raw !== "string" || !DATA.test(raw)) {
78
+ throw new Error(`${label} must be canonical byte calldata`);
79
+ }
80
+ return raw.toLowerCase();
81
+ };
82
+
83
+ const factoryDeps = (raw: unknown, label: string): string[] => {
84
+ if (!Array.isArray(raw)) throw new Error(`${label} must be an array`);
85
+ const seen = new Set<string>();
86
+ const normalized: string[] = [];
87
+ for (const [index, dependency] of raw.entries()) {
88
+ if (typeof dependency !== "string" || !/^0x(?:[0-9a-fA-F]{2})+$/.test(dependency)) {
89
+ throw new Error(`${label}[${index}] must be non-empty byte-aligned bytecode`);
90
+ }
91
+ const value = dependency.toLowerCase();
92
+ const hash = crypto
93
+ .createHash("sha256")
94
+ .update(Buffer.from(value.slice(2), "hex"))
95
+ .digest("hex");
96
+ if (seen.has(hash)) continue;
97
+ seen.add(hash);
98
+ normalized.push(value);
99
+ }
100
+ return normalized;
101
+ };
102
+
103
+ const exactKeys = (value: Record<string, unknown>, expected: string[], label: string): void => {
104
+ const actual = Object.keys(value).sort();
105
+ const wanted = [...expected].sort();
106
+ if (actual.length !== wanted.length || actual.some((key, index) => key !== wanted[index])) {
107
+ throw new Error(`${label} contains unsupported or missing fields`);
108
+ }
109
+ };
110
+
111
+ const record = (raw: unknown, label: string): Record<string, unknown> => {
112
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
113
+ throw new Error(`${label} must be an object`);
114
+ }
115
+ return raw as Record<string, unknown>;
116
+ };
117
+
118
+ export const normalizeTransaction = (
119
+ raw: unknown,
120
+ index: number,
121
+ strict: boolean,
122
+ ): ReleaseExecutionTransaction => {
123
+ const input = record(raw, `transactions[${index}]`);
124
+ const isZkSync = input.scheme === "zksync-eravm";
125
+ if (input.scheme !== undefined && !isZkSync) {
126
+ throw new Error(`transactions[${index}].scheme must be zksync-eravm when present`);
127
+ }
128
+ if (isZkSync && input.factoryDeps === undefined) {
129
+ throw new Error(`transactions[${index}].factoryDeps is required for zkSync`);
130
+ }
131
+ if (!isZkSync && input.factoryDeps !== undefined) {
132
+ throw new Error(`transactions[${index}].factoryDeps is only supported for zkSync`);
133
+ }
134
+ if (strict) {
135
+ exactKeys(input, [
136
+ "transactionId",
137
+ "stepId",
138
+ "transactionIndex",
139
+ "route",
140
+ "executor",
141
+ "to",
142
+ "value",
143
+ "data",
144
+ "operation",
145
+ ...(isZkSync ? ["scheme", "factoryDeps"] : []),
146
+ ], `transactions[${index}]`);
147
+ }
148
+ if (input.transactionIndex !== index) {
149
+ throw new Error(`transactions[${index}].transactionIndex must equal ${index}`);
150
+ }
151
+ if (input.route !== "operator" && input.route !== "external") {
152
+ throw new Error(`transactions[${index}].route is invalid`);
153
+ }
154
+ if (input.operation !== 0 && input.operation !== 1) {
155
+ throw new Error(`transactions[${index}].operation must be 0 or 1`);
156
+ }
157
+ return {
158
+ transactionId: safeId(input.transactionId, `transactions[${index}].transactionId`),
159
+ stepId: safeId(input.stepId, `transactions[${index}].stepId`),
160
+ transactionIndex: index,
161
+ route: input.route,
162
+ executor: address(input.executor, `transactions[${index}].executor`),
163
+ to: address(input.to, `transactions[${index}].to`),
164
+ value: value(input.value, `transactions[${index}].value`),
165
+ data: data(input.data, `transactions[${index}].data`),
166
+ operation: input.operation,
167
+ ...(isZkSync ? {
168
+ scheme: "zksync-eravm" as const,
169
+ factoryDeps: factoryDeps(input.factoryDeps, `transactions[${index}].factoryDeps`),
170
+ } : {}),
171
+ };
172
+ };
173
+
174
+ export const normalizeTransactions = (
175
+ raw: unknown, operator: string,
176
+ ): ReleaseExecutionTransaction[] => {
177
+ if (!Array.isArray(raw)) throw new Error("transactions must be an array");
178
+ const transactions = raw.map((tx, index) => normalizeTransaction(tx, index, true));
179
+ const ids = new Set<string>();
180
+ for (const tx of transactions) {
181
+ if (ids.has(tx.transactionId)) throw new Error("duplicate transactionId");
182
+ ids.add(tx.transactionId);
183
+ if (tx.transactionId !== `tx-${String(tx.transactionIndex + 1).padStart(4, "0")}-${tx.stepId}`) throw new Error("transactionId must match its ordered index and step");
184
+ if ((tx.executor === operator.toLowerCase()) !== (tx.route === "operator")) throw new Error("transaction route does not match operator");
185
+ }
186
+ return transactions;
187
+ };
188
+
189
+ export interface TransactionPlannerPort {
190
+ add(input: ReleaseExecutionTransactionInput): PlannedExecutionTransaction;
191
+ }
192
+
193
+ export class TransactionPlanner {
194
+ private readonly operator: string;
195
+ private readonly allowExternal: boolean;
196
+ private readonly expected?: { transactions: ReleaseExecutionTransaction[] };
197
+ private readonly transactions: ReleaseExecutionTransaction[] = [];
198
+ private readonly segmentedExecution: boolean;
199
+ private readonly completedTransactions: CompletedExecutionTransaction[];
200
+ private readonly segmentEnd: number;
201
+
202
+ constructor(input: {
203
+ operator: string;
204
+ allowExternal?: boolean;
205
+ expectedTransactions?: readonly ReleaseExecutionTransaction[];
206
+ segmentedExecution?: boolean;
207
+ replayCompletedPrefix?: boolean;
208
+ completedTransactions?: CompletedExecutionTransaction[];
209
+ }) {
210
+ this.operator = address(input.operator, "planner operator");
211
+ this.allowExternal = input.allowExternal !== false;
212
+ if (input.expectedTransactions) {
213
+ this.expected = { transactions: normalizeTransactions(input.expectedTransactions, this.operator) };
214
+ }
215
+ this.segmentedExecution = input.segmentedExecution === true;
216
+ this.completedTransactions = input.completedTransactions ?? [];
217
+ if (this.segmentedExecution && !this.expected) {
218
+ throw new Error("segmented execution requires a locked execution plan");
219
+ }
220
+ if (input.replayCompletedPrefix && this.completedTransactions.length > 0 && !this.expected) throw new Error("completed replay requires expected transactions");
221
+ if (!this.segmentedExecution && !input.replayCompletedPrefix && this.completedTransactions.length > 0) {
222
+ throw new Error("completed transactions require segmented execution");
223
+ }
224
+ if (this.expected) {
225
+ if (this.completedTransactions.length > this.expected.transactions.length) {
226
+ throw new Error("completed transactions exceed the execution plan");
227
+ }
228
+ for (const [index, completed] of this.completedTransactions.entries()) {
229
+ if (
230
+ completed.transactionId !== this.expected.transactions[index]?.transactionId
231
+ || typeof completed.transactionHash !== "string"
232
+ || !/^0x[0-9a-fA-F]{64}$/.test(completed.transactionHash)
233
+ ) {
234
+ throw new Error("completed transactions must form a contiguous plan prefix");
235
+ }
236
+ }
237
+ }
238
+ const expectedTransactions = this.expected?.transactions ?? [];
239
+ let segmentEnd = this.completedTransactions.length;
240
+ if (this.segmentedExecution && segmentEnd < expectedTransactions.length) {
241
+ if (expectedTransactions[segmentEnd].route === "operator") {
242
+ while (
243
+ segmentEnd < expectedTransactions.length
244
+ && expectedTransactions[segmentEnd].route === "operator"
245
+ ) segmentEnd += 1;
246
+ }
247
+ while (
248
+ segmentEnd < expectedTransactions.length
249
+ && expectedTransactions[segmentEnd].route === "external"
250
+ ) segmentEnd += 1;
251
+ } else if (!this.segmentedExecution) {
252
+ segmentEnd = Number.MAX_SAFE_INTEGER;
253
+ }
254
+ this.segmentEnd = segmentEnd;
255
+ }
256
+
257
+ add(input: ReleaseExecutionTransactionInput): PlannedExecutionTransaction {
258
+ const index = this.transactions.length;
259
+ const stepId = safeId(input.stepId, "planned transaction stepId");
260
+ const executor = address(input.executor, "planned transaction executor");
261
+ const transaction = normalizeTransaction({
262
+ transactionId: `tx-${String(index + 1).padStart(4, "0")}-${stepId}`,
263
+ stepId,
264
+ transactionIndex: index,
265
+ route: executor === this.operator ? "operator" : "external",
266
+ executor,
267
+ to: input.to,
268
+ value: input.value,
269
+ data: input.data,
270
+ operation: input.operation,
271
+ ...(input.scheme === undefined ? {} : { scheme: input.scheme }),
272
+ ...(input.factoryDeps === undefined ? {} : { factoryDeps: input.factoryDeps }),
273
+ }, index, false);
274
+ if (!this.allowExternal && transaction.route === "external") {
275
+ throw new Error("development execution plans cannot contain external transactions");
276
+ }
277
+ const expected = this.expected?.transactions[index];
278
+ if (this.expected && (!expected || JSON.stringify(expected) !== JSON.stringify(transaction))) {
279
+ throw new Error(
280
+ `transaction ${transaction.transactionId} does not match locked execution plan`,
281
+ );
282
+ }
283
+ if (this.segmentedExecution && index >= this.segmentEnd) {
284
+ throw new ExecutionSegmentDeferred(transaction.transactionId);
285
+ }
286
+ this.transactions.push(transaction);
287
+ const completed = this.completedTransactions[index];
288
+ if (completed) {
289
+ return {
290
+ ...transaction,
291
+ executionAction: "replay",
292
+ transactionHash: completed.transactionHash.toLowerCase(),
293
+ };
294
+ }
295
+ return {
296
+ ...transaction,
297
+ executionAction: transaction.route === "external" ? "package" : "execute",
298
+ };
299
+ }
300
+
301
+ complete(options: { allowPartial?: boolean } = {}): ReleaseExecutionTransaction[] {
302
+ if (
303
+ this.expected
304
+ && this.transactions.length !== this.expected.transactions.length
305
+ && options.allowPartial !== true
306
+ ) {
307
+ throw new Error("execution did not consume every locked transaction");
308
+ }
309
+ if (options.allowPartial === true && !this.segmentedExecution) {
310
+ throw new Error("partial execution plan completion requires segmented execution");
311
+ }
312
+ return normalizeTransactions(this.transactions, this.operator);
313
+ }
314
+ }
@@ -0,0 +1,46 @@
1
+ import type { TypedValue } from './evidencePorts';
2
+ import { canonicalData, deepFreeze, exactObject } from './canonicalData';
3
+ export function typedValue(value: unknown): TypedValue {
4
+ if (value === null) return { type: 'null', value: null };
5
+ if (typeof value === 'bigint') return { type: 'bigint', value: value.toString() };
6
+ if (typeof value === 'string' || typeof value === 'boolean') return { type: typeof value, value } as TypedValue;
7
+ if (typeof value === 'number' && Number.isSafeInteger(value)) return { type: 'number', value: value.toString() };
8
+ if (Array.isArray(value)) {
9
+ if (Object.keys(value).length !== value.length || Object.getOwnPropertySymbols(value).length) throw new Error('typed arrays require own indexed data');
10
+ return { type: 'array', value: Array.from({ length: value.length }, (_, index) => {
11
+ const d = Object.getOwnPropertyDescriptor(value, String(index));
12
+ if (!d || !d.enumerable || !('value' in d)) throw new Error('typed arrays require own indexed data');
13
+ return typedValue(d.value);
14
+ }) };
15
+ }
16
+ if (value && typeof value === 'object' && [Object.prototype, null].includes(Object.getPrototypeOf(value))) {
17
+ const result: Record<string, TypedValue> = Object.create(null);
18
+ if (Object.getOwnPropertySymbols(value).length) throw new Error("typed objects require own string data");
19
+ for (const key of Object.getOwnPropertyNames(value)) {
20
+ const d = Object.getOwnPropertyDescriptor(value, key)!;
21
+ if (!d.enumerable || !('value' in d)) throw new Error('typed values require own data');
22
+ result[key] = typedValue(d.value);
23
+ }
24
+ return { type: 'object', value: result };
25
+ }
26
+ throw new Error('Unsupported typed verification value');
27
+ }
28
+ export function parseTypedValue(raw: unknown): TypedValue {
29
+ const v = exactObject(raw, ['type', 'value'], 'typed value');
30
+ switch (v.type) {
31
+ case 'null': if (v.value !== null) throw new Error('Invalid typed null'); break;
32
+ case 'string': if (typeof v.value !== 'string') throw new Error('Invalid typed string'); break;
33
+ case 'boolean': if (typeof v.value !== 'boolean') throw new Error('Invalid typed boolean'); break;
34
+ case 'number': case 'bigint':
35
+ if (typeof v.value !== 'string' || !/^(0|-?[1-9][0-9]*)$/.test(v.value)) throw new Error('Invalid typed integer');
36
+ if (v.type === 'number' && (BigInt(v.value) > BigInt(Number.MAX_SAFE_INTEGER) || BigInt(v.value) < BigInt(Number.MIN_SAFE_INTEGER))) throw new Error('Unsafe typed number');
37
+ break;
38
+ case 'array': if (!Array.isArray(v.value)) throw new Error('Invalid typed array'); v.value.forEach(parseTypedValue); break;
39
+ case 'object': {
40
+ if (!v.value || typeof v.value !== 'object' || Array.isArray(v.value)) throw new Error('Invalid typed object');
41
+ Object.values(v.value).forEach(parseTypedValue); break;
42
+ }
43
+ default: throw new Error('Unknown typed value');
44
+ }
45
+ return deepFreeze(canonicalData(v) as TypedValue);
46
+ }
@@ -0,0 +1,50 @@
1
+ import type { InterfaceAbi } from "ethers";
2
+ import type { WorkflowContext } from "./context";
3
+ import { resolveValue } from "./parameters";
4
+ import type {
5
+ GateToolPreparationValidation,
6
+ GateToolPreparationRequestV1,
7
+ GateToolPreparationPlanV1,
8
+ } from "gate-evm-tools/workflow";
9
+ export type Create2FieldKind = "step" | "target" | "uups" | "multicall";
10
+ /** Neutral optional port: legacy launchers do not import delivery policy. */
11
+ export interface WorkflowValidationPort {
12
+ /** Owned compiler contribution plus actual local deployment and pinned source absence. */
13
+ sameForkUpgrade?(proxy: string): Promise<void>;
14
+ resolve(value: unknown): unknown;
15
+ create2Fields(value: unknown, kind: Create2FieldKind): Record<string, unknown>;
16
+ address(value: unknown): void;
17
+ call(
18
+ abiName: string,
19
+ method: string,
20
+ args: unknown,
21
+ value?: unknown,
22
+ ): Promise<void>;
23
+ callInterface(abi: InterfaceAbi, method: string, args: unknown): void;
24
+ check(abi: InterfaceAbi, method: string, expected: unknown): void;
25
+ compare(
26
+ abi: InterfaceAbi,
27
+ method: string,
28
+ actual: unknown,
29
+ expected: unknown,
30
+ ): { actual: string; expected: string };
31
+ stringify(value: unknown): string;
32
+ preparation: GateToolPreparationValidation;
33
+ preparationPlan(
34
+ request: GateToolPreparationRequestV1,
35
+ plan: GateToolPreparationPlanV1,
36
+ ): Promise<void>;
37
+ }
38
+ export function resolveWorkflowValue(
39
+ context: WorkflowContext,
40
+ value: unknown,
41
+ ): unknown {
42
+ return context.validation
43
+ ? context.validation.resolve(value)
44
+ : resolveValue(value, {
45
+ targetId: context.targetId,
46
+ target: context.target,
47
+ params: context.targetParams,
48
+ state: context.state,
49
+ });
50
+ }
@@ -0,0 +1,8 @@
1
+ import { runPlanAddCli } from "./lib/planCli";
2
+
3
+ try {
4
+ console.log(JSON.stringify(runPlanAddCli(process.argv.slice(2))));
5
+ } catch (error) {
6
+ console.error(error instanceof Error ? error.message : String(error));
7
+ process.exitCode = 1;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { runPlanReadCli } from "./lib/planCli";
2
+
3
+ try {
4
+ console.log(JSON.stringify(runPlanReadCli(process.argv.slice(2))));
5
+ } catch (error) {
6
+ console.error(error instanceof Error ? error.message : String(error));
7
+ process.exitCode = 1;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { runPlanStatusCli } from "./lib/planCli";
2
+
3
+ try {
4
+ console.log(JSON.stringify(runPlanStatusCli(process.argv.slice(2))));
5
+ } catch (error) {
6
+ console.error(error instanceof Error ? error.message : String(error));
7
+ process.exitCode = 1;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { runPlanWriteCli } from "./lib/planCli";
2
+
3
+ try {
4
+ console.log(JSON.stringify(runPlanWriteCli(process.argv.slice(2))));
5
+ } catch (error) {
6
+ console.error(error instanceof Error ? error.message : String(error));
7
+ process.exitCode = 1;
8
+ }