gate-evm-tools 1.0.28 → 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 (618) 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/openzeppelin.d.ts +2 -1
  107. package/dist-runtime/config/openzeppelin.js +2 -19
  108. package/dist-runtime/config/openzeppelin.js.map +1 -1
  109. package/dist-runtime/delivery/abi.d.ts +14 -0
  110. package/dist-runtime/delivery/abi.js +161 -0
  111. package/dist-runtime/delivery/abi.js.map +1 -0
  112. package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
  113. package/dist-runtime/delivery/aggregate-bootstrap.js +40 -0
  114. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
  115. package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
  116. package/dist-runtime/delivery/aggregate-channel.js +155 -0
  117. package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
  118. package/dist-runtime/delivery/aggregate-inputs.d.ts +168 -0
  119. package/dist-runtime/delivery/aggregate-inputs.js +57 -0
  120. package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
  121. package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
  122. package/dist-runtime/delivery/aggregate-source.js +79 -0
  123. package/dist-runtime/delivery/aggregate-source.js.map +1 -0
  124. package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
  125. package/dist-runtime/delivery/aggregate-worker.js +191 -0
  126. package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
  127. package/dist-runtime/delivery/aggregate.d.ts +51 -0
  128. package/dist-runtime/delivery/aggregate.js +190 -0
  129. package/dist-runtime/delivery/aggregate.js.map +1 -0
  130. package/dist-runtime/delivery/bindings.d.ts +21 -0
  131. package/dist-runtime/delivery/bindings.js +53 -0
  132. package/dist-runtime/delivery/bindings.js.map +1 -0
  133. package/dist-runtime/delivery/check-code.d.ts +19 -0
  134. package/dist-runtime/delivery/check-code.js +63 -0
  135. package/dist-runtime/delivery/check-code.js.map +1 -0
  136. package/dist-runtime/delivery/closure-format.d.ts +77 -0
  137. package/dist-runtime/delivery/closure-format.js +225 -0
  138. package/dist-runtime/delivery/closure-format.js.map +1 -0
  139. package/dist-runtime/delivery/codec-pin.d.ts +2 -0
  140. package/dist-runtime/delivery/codec-pin.js +7 -0
  141. package/dist-runtime/delivery/codec-pin.js.map +1 -0
  142. package/dist-runtime/delivery/codec.d.ts +19 -0
  143. package/dist-runtime/delivery/codec.js +73 -0
  144. package/dist-runtime/delivery/codec.js.map +1 -0
  145. package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
  146. package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
  147. package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
  148. package/dist-runtime/delivery/compiler-files.d.ts +40 -0
  149. package/dist-runtime/delivery/compiler-files.js +220 -0
  150. package/dist-runtime/delivery/compiler-files.js.map +1 -0
  151. package/dist-runtime/delivery/compiler-io.d.ts +2 -0
  152. package/dist-runtime/delivery/compiler-io.js +13 -0
  153. package/dist-runtime/delivery/compiler-io.js.map +1 -0
  154. package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
  155. package/dist-runtime/delivery/compiler-pins.js +147 -0
  156. package/dist-runtime/delivery/compiler-pins.js.map +1 -0
  157. package/dist-runtime/delivery/compiler.d.ts +188 -0
  158. package/dist-runtime/delivery/compiler.js +850 -0
  159. package/dist-runtime/delivery/compiler.js.map +1 -0
  160. package/dist-runtime/delivery/config.d.ts +48 -0
  161. package/dist-runtime/delivery/config.js +99 -0
  162. package/dist-runtime/delivery/config.js.map +1 -0
  163. package/dist-runtime/delivery/configuration-definition.d.ts +22 -0
  164. package/dist-runtime/delivery/configuration-definition.js +316 -0
  165. package/dist-runtime/delivery/configuration-definition.js.map +1 -0
  166. package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
  167. package/dist-runtime/delivery/configuration-hre.js +198 -0
  168. package/dist-runtime/delivery/configuration-hre.js.map +1 -0
  169. package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
  170. package/dist-runtime/delivery/configuration-runtime.js +248 -0
  171. package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
  172. package/dist-runtime/delivery/configuration.d.ts +35 -0
  173. package/dist-runtime/delivery/configuration.js +83 -0
  174. package/dist-runtime/delivery/configuration.js.map +1 -0
  175. package/dist-runtime/delivery/create2.d.ts +3 -0
  176. package/dist-runtime/delivery/create2.js +48 -0
  177. package/dist-runtime/delivery/create2.js.map +1 -0
  178. package/dist-runtime/delivery/custom-closure.d.ts +27 -0
  179. package/dist-runtime/delivery/custom-closure.js +818 -0
  180. package/dist-runtime/delivery/custom-closure.js.map +1 -0
  181. package/dist-runtime/delivery/custom-format.d.ts +35 -0
  182. package/dist-runtime/delivery/custom-format.js +383 -0
  183. package/dist-runtime/delivery/custom-format.js.map +1 -0
  184. package/dist-runtime/delivery/custom.d.ts +32 -0
  185. package/dist-runtime/delivery/custom.js +158 -0
  186. package/dist-runtime/delivery/custom.js.map +1 -0
  187. package/dist-runtime/delivery/data.d.ts +7 -0
  188. package/dist-runtime/delivery/data.js +86 -0
  189. package/dist-runtime/delivery/data.js.map +1 -0
  190. package/dist-runtime/delivery/development.d.ts +91 -0
  191. package/dist-runtime/delivery/development.js +395 -0
  192. package/dist-runtime/delivery/development.js.map +1 -0
  193. package/dist-runtime/delivery/engine.d.ts +9 -0
  194. package/dist-runtime/delivery/engine.js +23 -0
  195. package/dist-runtime/delivery/engine.js.map +1 -0
  196. package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
  197. package/dist-runtime/delivery/eoa-observation.js +145 -0
  198. package/dist-runtime/delivery/eoa-observation.js.map +1 -0
  199. package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
  200. package/dist-runtime/delivery/eoa-signed.js +74 -0
  201. package/dist-runtime/delivery/eoa-signed.js.map +1 -0
  202. package/dist-runtime/delivery/eoa.d.ts +81 -0
  203. package/dist-runtime/delivery/eoa.js +274 -0
  204. package/dist-runtime/delivery/eoa.js.map +1 -0
  205. package/dist-runtime/delivery/execution-db.d.ts +20 -0
  206. package/dist-runtime/delivery/execution-db.js +153 -0
  207. package/dist-runtime/delivery/execution-db.js.map +1 -0
  208. package/dist-runtime/delivery/execution-files.d.ts +9 -0
  209. package/dist-runtime/delivery/execution-files.js +138 -0
  210. package/dist-runtime/delivery/execution-files.js.map +1 -0
  211. package/dist-runtime/delivery/execution-model.d.ts +56 -0
  212. package/dist-runtime/delivery/execution-model.js +66 -0
  213. package/dist-runtime/delivery/execution-model.js.map +1 -0
  214. package/dist-runtime/delivery/execution-store.d.ts +48 -0
  215. package/dist-runtime/delivery/execution-store.js +361 -0
  216. package/dist-runtime/delivery/execution-store.js.map +1 -0
  217. package/dist-runtime/delivery/existing-code.d.ts +37 -0
  218. package/dist-runtime/delivery/existing-code.js +75 -0
  219. package/dist-runtime/delivery/existing-code.js.map +1 -0
  220. package/dist-runtime/delivery/export.d.ts +51 -0
  221. package/dist-runtime/delivery/export.js +69 -0
  222. package/dist-runtime/delivery/export.js.map +1 -0
  223. package/dist-runtime/delivery/forkAudit.d.ts +119 -0
  224. package/dist-runtime/delivery/forkAudit.js +473 -0
  225. package/dist-runtime/delivery/forkAudit.js.map +1 -0
  226. package/dist-runtime/delivery/hardhat.d.ts +3 -0
  227. package/dist-runtime/delivery/hardhat.js +45 -0
  228. package/dist-runtime/delivery/hardhat.js.map +1 -0
  229. package/dist-runtime/delivery/history-registration.d.ts +2 -0
  230. package/dist-runtime/delivery/history-registration.js +17 -0
  231. package/dist-runtime/delivery/history-registration.js.map +1 -0
  232. package/dist-runtime/delivery/identities.d.ts +22 -0
  233. package/dist-runtime/delivery/identities.js +97 -0
  234. package/dist-runtime/delivery/identities.js.map +1 -0
  235. package/dist-runtime/delivery/input-files.d.ts +5 -0
  236. package/dist-runtime/delivery/input-files.js +70 -0
  237. package/dist-runtime/delivery/input-files.js.map +1 -0
  238. package/dist-runtime/delivery/inputs.d.ts +62 -0
  239. package/dist-runtime/delivery/inputs.js +187 -0
  240. package/dist-runtime/delivery/inputs.js.map +1 -0
  241. package/dist-runtime/delivery/journal.d.ts +35 -0
  242. package/dist-runtime/delivery/journal.js +270 -0
  243. package/dist-runtime/delivery/journal.js.map +1 -0
  244. package/dist-runtime/delivery/manifest.d.ts +14 -0
  245. package/dist-runtime/delivery/manifest.js +68 -0
  246. package/dist-runtime/delivery/manifest.js.map +1 -0
  247. package/dist-runtime/delivery/materialization.d.ts +20 -0
  248. package/dist-runtime/delivery/materialization.js +138 -0
  249. package/dist-runtime/delivery/materialization.js.map +1 -0
  250. package/dist-runtime/delivery/observations.d.ts +31 -0
  251. package/dist-runtime/delivery/observations.js +38 -0
  252. package/dist-runtime/delivery/observations.js.map +1 -0
  253. package/dist-runtime/delivery/parameters.d.ts +53 -0
  254. package/dist-runtime/delivery/parameters.js +257 -0
  255. package/dist-runtime/delivery/parameters.js.map +1 -0
  256. package/dist-runtime/delivery/pending.d.ts +70 -0
  257. package/dist-runtime/delivery/pending.js +99 -0
  258. package/dist-runtime/delivery/pending.js.map +1 -0
  259. package/dist-runtime/delivery/plan.d.ts +50 -0
  260. package/dist-runtime/delivery/plan.js +209 -0
  261. package/dist-runtime/delivery/plan.js.map +1 -0
  262. package/dist-runtime/delivery/planning.d.ts +81 -0
  263. package/dist-runtime/delivery/planning.js +302 -0
  264. package/dist-runtime/delivery/planning.js.map +1 -0
  265. package/dist-runtime/delivery/policy.d.ts +4 -0
  266. package/dist-runtime/delivery/policy.js +9 -0
  267. package/dist-runtime/delivery/policy.js.map +1 -0
  268. package/dist-runtime/delivery/preparation.d.ts +6 -0
  269. package/dist-runtime/delivery/preparation.js +158 -0
  270. package/dist-runtime/delivery/preparation.js.map +1 -0
  271. package/dist-runtime/delivery/production-environment.d.ts +2 -0
  272. package/dist-runtime/delivery/production-environment.js +12 -0
  273. package/dist-runtime/delivery/production-environment.js.map +1 -0
  274. package/dist-runtime/delivery/production-finalization.d.ts +86 -0
  275. package/dist-runtime/delivery/production-finalization.js +278 -0
  276. package/dist-runtime/delivery/production-finalization.js.map +1 -0
  277. package/dist-runtime/delivery/production.d.ts +461 -0
  278. package/dist-runtime/delivery/production.js +396 -0
  279. package/dist-runtime/delivery/production.js.map +1 -0
  280. package/dist-runtime/delivery/project-files.d.ts +8 -0
  281. package/dist-runtime/delivery/project-files.js +82 -0
  282. package/dist-runtime/delivery/project-files.js.map +1 -0
  283. package/dist-runtime/delivery/project.d.ts +15 -0
  284. package/dist-runtime/delivery/project.js +157 -0
  285. package/dist-runtime/delivery/project.js.map +1 -0
  286. package/dist-runtime/delivery/protocol.d.ts +49 -0
  287. package/dist-runtime/delivery/protocol.js +112 -0
  288. package/dist-runtime/delivery/protocol.js.map +1 -0
  289. package/dist-runtime/delivery/references.d.ts +19 -0
  290. package/dist-runtime/delivery/references.js +84 -0
  291. package/dist-runtime/delivery/references.js.map +1 -0
  292. package/dist-runtime/delivery/release-graph.d.ts +93 -0
  293. package/dist-runtime/delivery/release-graph.js +106 -0
  294. package/dist-runtime/delivery/release-graph.js.map +1 -0
  295. package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
  296. package/dist-runtime/delivery/release-history-capture.js +76 -0
  297. package/dist-runtime/delivery/release-history-capture.js.map +1 -0
  298. package/dist-runtime/delivery/release-history.d.ts +43 -0
  299. package/dist-runtime/delivery/release-history.js +246 -0
  300. package/dist-runtime/delivery/release-history.js.map +1 -0
  301. package/dist-runtime/delivery/release.d.ts +172 -0
  302. package/dist-runtime/delivery/release.js +209 -0
  303. package/dist-runtime/delivery/release.js.map +1 -0
  304. package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
  305. package/dist-runtime/delivery/safe-manifest.js +13 -0
  306. package/dist-runtime/delivery/safe-manifest.js.map +1 -0
  307. package/dist-runtime/delivery/safe-observation.d.ts +30 -0
  308. package/dist-runtime/delivery/safe-observation.js +487 -0
  309. package/dist-runtime/delivery/safe-observation.js.map +1 -0
  310. package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
  311. package/dist-runtime/delivery/safe-prepare.js +81 -0
  312. package/dist-runtime/delivery/safe-prepare.js.map +1 -0
  313. package/dist-runtime/delivery/safe.d.ts +91 -0
  314. package/dist-runtime/delivery/safe.js +243 -0
  315. package/dist-runtime/delivery/safe.js.map +1 -0
  316. package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
  317. package/dist-runtime/delivery/same-fork-baseline.js +20 -0
  318. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
  319. package/dist-runtime/delivery/setup.d.ts +31 -0
  320. package/dist-runtime/delivery/setup.js +215 -0
  321. package/dist-runtime/delivery/setup.js.map +1 -0
  322. package/dist-runtime/delivery/source.d.ts +41 -0
  323. package/dist-runtime/delivery/source.js +137 -0
  324. package/dist-runtime/delivery/source.js.map +1 -0
  325. package/dist-runtime/delivery/target-fields.d.ts +2 -0
  326. package/dist-runtime/delivery/target-fields.js +11 -0
  327. package/dist-runtime/delivery/target-fields.js.map +1 -0
  328. package/dist-runtime/delivery/validation.d.ts +9 -0
  329. package/dist-runtime/delivery/validation.js +150 -0
  330. package/dist-runtime/delivery/validation.js.map +1 -0
  331. package/dist-runtime/delivery/verification.d.ts +16 -0
  332. package/dist-runtime/delivery/verification.js +65 -0
  333. package/dist-runtime/delivery/verification.js.map +1 -0
  334. package/dist-runtime/migrate.js +1 -0
  335. package/dist-runtime/migrate.js.map +1 -1
  336. package/dist-runtime/miner/binary.d.ts +2 -0
  337. package/dist-runtime/miner/binary.js +54 -0
  338. package/dist-runtime/miner/binary.js.map +1 -0
  339. package/dist-runtime/miner/cli.d.ts +1 -0
  340. package/dist-runtime/miner/cli.js +131 -0
  341. package/dist-runtime/miner/cli.js.map +1 -0
  342. package/dist-runtime/miner/index.d.ts +5 -0
  343. package/dist-runtime/miner/index.js +13 -0
  344. package/dist-runtime/miner/index.js.map +1 -0
  345. package/dist-runtime/miner/request.d.ts +7 -0
  346. package/dist-runtime/miner/request.js +73 -0
  347. package/dist-runtime/miner/request.js.map +1 -0
  348. package/dist-runtime/miner/runner.d.ts +2 -0
  349. package/dist-runtime/miner/runner.js +131 -0
  350. package/dist-runtime/miner/runner.js.map +1 -0
  351. package/dist-runtime/miner/types.d.ts +89 -0
  352. package/dist-runtime/miner/types.js +3 -0
  353. package/dist-runtime/miner/types.js.map +1 -0
  354. package/dist-runtime/miner/verify.d.ts +2 -0
  355. package/dist-runtime/miner/verify.js +75 -0
  356. package/dist-runtime/miner/verify.js.map +1 -0
  357. package/dist-runtime/runtime-identity.json +2 -2
  358. package/dist-runtime/vendor/plan-codec/index.cjs +820 -0
  359. package/dist-runtime/vendor/plan-codec/index.d.cts +32 -0
  360. package/dist-runtime/vendor/plan-codec/provenance.json +24 -0
  361. package/dist-runtime/workflow/engine.d.ts +14 -0
  362. package/dist-runtime/workflow/engine.js +160 -0
  363. package/dist-runtime/workflow/engine.js.map +1 -0
  364. package/dist-runtime/workflow/lib/authority.d.ts +6 -3
  365. package/dist-runtime/workflow/lib/authority.js.map +1 -1
  366. package/dist-runtime/workflow/lib/calls.d.ts +1 -1
  367. package/dist-runtime/workflow/lib/calls.js +43 -34
  368. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  369. package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
  370. package/dist-runtime/workflow/lib/canonicalData.js +68 -0
  371. package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
  372. package/dist-runtime/workflow/lib/config.d.ts +3 -1
  373. package/dist-runtime/workflow/lib/config.js.map +1 -1
  374. package/dist-runtime/workflow/lib/context.d.ts +76 -0
  375. package/dist-runtime/workflow/lib/context.js +3 -0
  376. package/dist-runtime/workflow/lib/context.js.map +1 -0
  377. package/dist-runtime/workflow/lib/create2.d.ts +1 -1
  378. package/dist-runtime/workflow/lib/create2.js +9 -12
  379. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  380. package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
  381. package/dist-runtime/workflow/lib/deployments.js +5 -13
  382. package/dist-runtime/workflow/lib/deployments.js.map +1 -1
  383. package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
  384. package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
  385. package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
  386. package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
  387. package/dist-runtime/workflow/lib/executionPlan.js +15 -210
  388. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
  389. package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
  390. package/dist-runtime/workflow/lib/gateTool.js +20 -10
  391. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  392. package/dist-runtime/workflow/lib/gateToolSync.d.ts +1 -1
  393. package/dist-runtime/workflow/lib/gateToolSync.js +3 -2
  394. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  395. package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
  396. package/dist-runtime/workflow/lib/operationNames.js +34 -0
  397. package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
  398. package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
  399. package/dist-runtime/workflow/lib/parameters.js +6 -22
  400. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  401. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
  402. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
  403. package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
  404. package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
  405. package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
  406. package/dist-runtime/workflow/lib/plan.d.ts +55 -0
  407. package/dist-runtime/workflow/lib/plan.js +324 -0
  408. package/dist-runtime/workflow/lib/plan.js.map +1 -0
  409. package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
  410. package/dist-runtime/workflow/lib/planCli.js +279 -0
  411. package/dist-runtime/workflow/lib/planCli.js.map +1 -0
  412. package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
  413. package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
  414. package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
  415. package/dist-runtime/workflow/lib/proxy.d.ts +3 -2
  416. package/dist-runtime/workflow/lib/proxy.js +3 -4
  417. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  418. package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
  419. package/dist-runtime/workflow/lib/runtime.js +48 -0
  420. package/dist-runtime/workflow/lib/runtime.js.map +1 -0
  421. package/dist-runtime/workflow/lib/signer.d.ts +3 -2
  422. package/dist-runtime/workflow/lib/signer.js +18 -18
  423. package/dist-runtime/workflow/lib/signer.js.map +1 -1
  424. package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
  425. package/dist-runtime/workflow/lib/simulation.js +39 -31
  426. package/dist-runtime/workflow/lib/simulation.js.map +1 -1
  427. package/dist-runtime/workflow/lib/state.js +3 -3
  428. package/dist-runtime/workflow/lib/state.js.map +1 -1
  429. package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
  430. package/dist-runtime/workflow/lib/staticValidation.js +54 -10
  431. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
  432. package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
  433. package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
  434. package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
  435. package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
  436. package/dist-runtime/workflow/lib/typedValue.js +76 -0
  437. package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
  438. package/dist-runtime/workflow/lib/validation.d.ts +23 -0
  439. package/dist-runtime/workflow/lib/validation.js +15 -0
  440. package/dist-runtime/workflow/lib/validation.js.map +1 -0
  441. package/dist-runtime/workflow/planAdd.d.ts +1 -0
  442. package/dist-runtime/workflow/planAdd.js +11 -0
  443. package/dist-runtime/workflow/planAdd.js.map +1 -0
  444. package/dist-runtime/workflow/planRead.d.ts +1 -0
  445. package/dist-runtime/workflow/planRead.js +11 -0
  446. package/dist-runtime/workflow/planRead.js.map +1 -0
  447. package/dist-runtime/workflow/planStatus.d.ts +1 -0
  448. package/dist-runtime/workflow/planStatus.js +11 -0
  449. package/dist-runtime/workflow/planStatus.js.map +1 -0
  450. package/dist-runtime/workflow/planWrite.d.ts +1 -0
  451. package/dist-runtime/workflow/planWrite.js +11 -0
  452. package/dist-runtime/workflow/planWrite.js.map +1 -0
  453. package/dist-runtime/workflow/run.d.ts +1 -40
  454. package/dist-runtime/workflow/run.js +68 -136
  455. package/dist-runtime/workflow/run.js.map +1 -1
  456. package/dist-runtime/workflow/staticValidate.js +8 -3
  457. package/dist-runtime/workflow/staticValidate.js.map +1 -1
  458. package/dist-runtime/workflow/steps/call.d.ts +1 -1
  459. package/dist-runtime/workflow/steps/check.d.ts +1 -1
  460. package/dist-runtime/workflow/steps/custom.d.ts +1 -1
  461. package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
  462. package/dist-runtime/workflow/steps/deploy.js +57 -55
  463. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  464. package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
  465. package/dist-runtime/workflow/steps/upgrade.js +62 -41
  466. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  467. package/dist-runtime/workflow/steps/view.d.ts +1 -1
  468. package/docs/compiler-qualification.md +32 -0
  469. package/docs/configuration-runtime-observation.md +29 -0
  470. package/docs/create2-miner.md +100 -0
  471. package/docs/delivery-aggregate.md +27 -0
  472. package/docs/delivery-custom-input-closure.md +51 -0
  473. package/docs/delivery-development.md +32 -0
  474. package/docs/delivery-eoa.md +46 -0
  475. package/docs/delivery-evm-manifest.md +20 -0
  476. package/docs/delivery-execution-store.md +33 -0
  477. package/docs/delivery-inputs.md +46 -0
  478. package/docs/delivery-parameters.md +65 -0
  479. package/docs/delivery-planning.md +140 -0
  480. package/docs/delivery-release.md +65 -0
  481. package/docs/delivery-safe.md +72 -0
  482. package/docs/delivery-setup.md +146 -0
  483. package/docs/delivery-source.md +67 -0
  484. package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
  485. package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
  486. package/package.json +133 -9
  487. package/resources/create2/LICENSE +21 -0
  488. package/resources/create2/README.md +9 -0
  489. package/resources/create2/darwin-arm64/smartflow_miner +0 -0
  490. package/resources/create2/darwin-x64/smartflow_miner +0 -0
  491. package/resources/create2/manifest.json +27 -0
  492. package/runtime/config/openzeppelin.ts +3 -21
  493. package/runtime/delivery/abi.ts +225 -0
  494. package/runtime/delivery/aggregate-bootstrap.ts +29 -0
  495. package/runtime/delivery/aggregate-channel.ts +85 -0
  496. package/runtime/delivery/aggregate-inputs.ts +39 -0
  497. package/runtime/delivery/aggregate-source.ts +53 -0
  498. package/runtime/delivery/aggregate-worker.ts +133 -0
  499. package/runtime/delivery/aggregate.ts +139 -0
  500. package/runtime/delivery/bindings.ts +37 -0
  501. package/runtime/delivery/check-code.ts +38 -0
  502. package/runtime/delivery/closure-format.ts +350 -0
  503. package/runtime/delivery/codec-pin.ts +3 -0
  504. package/runtime/delivery/codec.ts +50 -0
  505. package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
  506. package/runtime/delivery/compiler-files.ts +179 -0
  507. package/runtime/delivery/compiler-io.ts +10 -0
  508. package/runtime/delivery/compiler-pins.ts +143 -0
  509. package/runtime/delivery/compiler.ts +700 -0
  510. package/runtime/delivery/config.ts +93 -0
  511. package/runtime/delivery/configuration-definition.ts +133 -0
  512. package/runtime/delivery/configuration-hre.ts +130 -0
  513. package/runtime/delivery/configuration-runtime.ts +163 -0
  514. package/runtime/delivery/configuration.ts +64 -0
  515. package/runtime/delivery/create2.ts +57 -0
  516. package/runtime/delivery/custom-closure.ts +993 -0
  517. package/runtime/delivery/custom-format.ts +464 -0
  518. package/runtime/delivery/custom.ts +219 -0
  519. package/runtime/delivery/data.ts +94 -0
  520. package/runtime/delivery/development.ts +262 -0
  521. package/runtime/delivery/engine.ts +29 -0
  522. package/runtime/delivery/eoa-observation.ts +106 -0
  523. package/runtime/delivery/eoa-signed.ts +55 -0
  524. package/runtime/delivery/eoa.ts +288 -0
  525. package/runtime/delivery/execution-db.ts +131 -0
  526. package/runtime/delivery/execution-files.ts +135 -0
  527. package/runtime/delivery/execution-model.ts +102 -0
  528. package/runtime/delivery/execution-store.ts +411 -0
  529. package/runtime/delivery/existing-code.ts +44 -0
  530. package/runtime/delivery/export.ts +99 -0
  531. package/runtime/delivery/forkAudit.ts +620 -0
  532. package/runtime/delivery/hardhat.ts +38 -0
  533. package/runtime/delivery/history-registration.ts +10 -0
  534. package/runtime/delivery/identities.ts +132 -0
  535. package/runtime/delivery/input-files.ts +46 -0
  536. package/runtime/delivery/inputs.ts +197 -0
  537. package/runtime/delivery/journal.ts +201 -0
  538. package/runtime/delivery/manifest.ts +54 -0
  539. package/runtime/delivery/materialization.ts +53 -0
  540. package/runtime/delivery/observations.ts +60 -0
  541. package/runtime/delivery/parameters.ts +349 -0
  542. package/runtime/delivery/pending.ts +98 -0
  543. package/runtime/delivery/plan.ts +337 -0
  544. package/runtime/delivery/planning.ts +397 -0
  545. package/runtime/delivery/policy.ts +9 -0
  546. package/runtime/delivery/preparation.ts +224 -0
  547. package/runtime/delivery/production-environment.ts +6 -0
  548. package/runtime/delivery/production-finalization.ts +172 -0
  549. package/runtime/delivery/production.ts +375 -0
  550. package/runtime/delivery/project-files.ts +58 -0
  551. package/runtime/delivery/project.ts +117 -0
  552. package/runtime/delivery/protocol.ts +94 -0
  553. package/runtime/delivery/references.ts +106 -0
  554. package/runtime/delivery/release-graph.ts +49 -0
  555. package/runtime/delivery/release-history-capture.ts +32 -0
  556. package/runtime/delivery/release-history.ts +120 -0
  557. package/runtime/delivery/release.ts +128 -0
  558. package/runtime/delivery/safe-manifest.ts +11 -0
  559. package/runtime/delivery/safe-observation.ts +626 -0
  560. package/runtime/delivery/safe-prepare.ts +101 -0
  561. package/runtime/delivery/safe.ts +344 -0
  562. package/runtime/delivery/same-fork-baseline.ts +16 -0
  563. package/runtime/delivery/setup.ts +172 -0
  564. package/runtime/delivery/source.ts +130 -0
  565. package/runtime/delivery/target-fields.ts +7 -0
  566. package/runtime/delivery/validation.ts +247 -0
  567. package/runtime/delivery/verification.ts +47 -0
  568. package/runtime/migrate.ts +1 -0
  569. package/runtime/miner/binary.ts +41 -0
  570. package/runtime/miner/cli.ts +87 -0
  571. package/runtime/miner/index.ts +5 -0
  572. package/runtime/miner/request.ts +54 -0
  573. package/runtime/miner/runner.ts +90 -0
  574. package/runtime/miner/types.ts +71 -0
  575. package/runtime/miner/verify.ts +61 -0
  576. package/runtime/vendor/plan-codec/index.cjs +820 -0
  577. package/runtime/vendor/plan-codec/index.d.cts +32 -0
  578. package/runtime/vendor/plan-codec/provenance.json +24 -0
  579. package/runtime/workflow/engine.ts +174 -0
  580. package/runtime/workflow/lib/authority.ts +3 -3
  581. package/runtime/workflow/lib/calls.ts +46 -37
  582. package/runtime/workflow/lib/canonicalData.ts +45 -0
  583. package/runtime/workflow/lib/config.ts +1 -1
  584. package/runtime/workflow/lib/context.ts +76 -0
  585. package/runtime/workflow/lib/create2.ts +10 -12
  586. package/runtime/workflow/lib/deployments.ts +6 -14
  587. package/runtime/workflow/lib/evidencePorts.ts +20 -0
  588. package/runtime/workflow/lib/executionPlan.ts +17 -268
  589. package/runtime/workflow/lib/gateTool.ts +20 -8
  590. package/runtime/workflow/lib/gateToolSync.ts +3 -3
  591. package/runtime/workflow/lib/operationNames.ts +32 -0
  592. package/runtime/workflow/lib/parameters.ts +4 -21
  593. package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
  594. package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
  595. package/runtime/workflow/lib/plan.ts +334 -0
  596. package/runtime/workflow/lib/planCli.ts +279 -0
  597. package/runtime/workflow/lib/preparationEvidence.ts +14 -0
  598. package/runtime/workflow/lib/proxy.ts +5 -3
  599. package/runtime/workflow/lib/runtime.ts +46 -0
  600. package/runtime/workflow/lib/signer.ts +8 -5
  601. package/runtime/workflow/lib/simulation.ts +41 -17
  602. package/runtime/workflow/lib/state.ts +3 -3
  603. package/runtime/workflow/lib/staticValidation.ts +92 -11
  604. package/runtime/workflow/lib/transactionPlanner.ts +314 -0
  605. package/runtime/workflow/lib/typedValue.ts +46 -0
  606. package/runtime/workflow/lib/validation.ts +50 -0
  607. package/runtime/workflow/planAdd.ts +8 -0
  608. package/runtime/workflow/planRead.ts +8 -0
  609. package/runtime/workflow/planStatus.ts +8 -0
  610. package/runtime/workflow/planWrite.ts +8 -0
  611. package/runtime/workflow/run.ts +41 -174
  612. package/runtime/workflow/staticValidate.ts +8 -3
  613. package/runtime/workflow/steps/call.ts +1 -1
  614. package/runtime/workflow/steps/check.ts +1 -1
  615. package/runtime/workflow/steps/custom.ts +1 -1
  616. package/runtime/workflow/steps/deploy.ts +57 -58
  617. package/runtime/workflow/steps/upgrade.ts +69 -46
  618. package/runtime/workflow/steps/view.ts +1 -1
@@ -0,0 +1,620 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import {
3
+ canonicalData,
4
+ canonicalJson,
5
+ deepFreeze,
6
+ digest,
7
+ exactObject,
8
+ semanticHash,
9
+ } from "../workflow/lib/canonicalData";
10
+ import type {
11
+ CompletedExecutionTransaction,
12
+ ReleaseExecutionTransaction,
13
+ } from "../workflow/lib/transactionPlanner";
14
+ export interface CapturedForkInterval {
15
+ readonly snapshot: Omit<ForkAuditEvidence,"planHash"|"evidenceHash">;
16
+ assertUnchanged(): Promise<void>;
17
+ bind(planHash:string): ForkAuditEvidence;
18
+ }
19
+ export interface AuditProvider {
20
+ request(input: { method: string; params?: any }): Promise<any>;
21
+ send?(method: string, params?: any): Promise<any>;
22
+ }
23
+ interface BlockIdentity {
24
+ number: number;
25
+ hash: string;
26
+ parentHash: string;
27
+ }
28
+ interface TransactionEvidence {
29
+ hash: string;
30
+ from: string;
31
+ to: string;
32
+ value: string;
33
+ data: string;
34
+ blockNumber: number;
35
+ blockHash: string;
36
+ transactionIndex: number;
37
+ receipt: {
38
+ hash: string;
39
+ from: string;
40
+ to: string;
41
+ blockNumber: number;
42
+ blockHash: string;
43
+ transactionIndex: number;
44
+ status: 1;
45
+ };
46
+ }
47
+ export interface ForkAuditEvidence {
48
+ version: 1;
49
+ planHash: string;
50
+ chainId: string;
51
+ provider: { kind: "hardhat"; instanceId: string };
52
+ sourceSnapshot: { blockNumber: number; blockHash: string };
53
+ baseline: BlockIdentity;
54
+ end: BlockIdentity;
55
+ blocks: (BlockIdentity & { transactionHashes: string[] })[];
56
+ transactions: TransactionEvidence[];
57
+ submissions: CompletedExecutionTransaction[];
58
+ completedTransactions: CompletedExecutionTransaction[];
59
+ setup: { method: string; address: string; value?: string }[];
60
+ evidenceHash: string;
61
+ }
62
+ const hash = (v: unknown): string => {
63
+ if (typeof v !== "string" || !/^0x[\da-fA-F]{64}$/.test(v))
64
+ throw new Error("Invalid audit hash");
65
+ return v.toLowerCase();
66
+ };
67
+ const address = (v: unknown): string => {
68
+ if (typeof v !== "string" || !/^0x[\da-fA-F]{40}$/.test(v))
69
+ throw new Error("Invalid audit address");
70
+ return v.toLowerCase();
71
+ };
72
+ const quantity = (v: unknown): string => {
73
+ if (typeof v !== "string" || !/^(0x[\da-fA-F]+|\d+)$/.test(v))
74
+ throw new Error("Invalid audit quantity");
75
+ return BigInt(v).toString();
76
+ };
77
+ const number = (v: unknown): number => {
78
+ const n = typeof v === "number" ? v : Number(quantity(v));
79
+ if (!Number.isSafeInteger(n) || n < 0)
80
+ throw new Error("Invalid audit number");
81
+ return n;
82
+ };
83
+ const block = (v: any): BlockIdentity => {
84
+ if (!v) throw new Error("Missing audit block");
85
+ return {
86
+ number: number(v.number),
87
+ hash: hash(v.hash),
88
+ parentHash: hash(v.parentHash),
89
+ };
90
+ };
91
+ const data = (v: unknown): string => {
92
+ if (typeof v !== "string" || !/^0x(?:[\da-fA-F]{2})*$/.test(v))
93
+ throw new Error("Invalid audit calldata");
94
+ return v.toLowerCase();
95
+ };
96
+ function txEvidence(tx: any, receipt: any): TransactionEvidence {
97
+ if (!tx || !receipt)
98
+ throw new Error("Missing/pending audit transaction or receipt");
99
+ if (quantity(receipt.status) !== "1")
100
+ throw new Error("Audit receipt must succeed");
101
+ return {
102
+ hash: hash(tx.hash),
103
+ from: address(tx.from),
104
+ to: address(tx.to),
105
+ value: quantity(tx.value),
106
+ data: data(tx.input),
107
+ blockNumber: number(tx.blockNumber),
108
+ blockHash: hash(tx.blockHash),
109
+ transactionIndex: number(tx.transactionIndex),
110
+ receipt: {
111
+ hash: hash(receipt.transactionHash),
112
+ from: address(receipt.from),
113
+ to: address(receipt.to),
114
+ blockNumber: number(receipt.blockNumber),
115
+ blockHash: hash(receipt.blockHash),
116
+ transactionIndex: number(receipt.transactionIndex),
117
+ status: 1,
118
+ },
119
+ };
120
+ }
121
+ interface AuditExpectation {
122
+ completedTransactions?: readonly CompletedExecutionTransaction[];
123
+ transactions: readonly ReleaseExecutionTransaction[];
124
+ planHash: string;
125
+ chainId: string;
126
+ sourceSnapshot: { blockNumber: number; blockHash: string };
127
+ }
128
+ /** Pure verification of captured local evidence. Never evaluates scripts or reads source business state. */
129
+ export function verifyCapturedForkAudit(
130
+ raw: unknown,
131
+ expected: AuditExpectation,
132
+ ): ForkAuditEvidence {
133
+ const v = exactObject(
134
+ raw,
135
+ [
136
+ "version",
137
+ "planHash",
138
+ "chainId",
139
+ "provider",
140
+ "sourceSnapshot",
141
+ "baseline",
142
+ "end",
143
+ "blocks",
144
+ "transactions",
145
+ "submissions",
146
+ "completedTransactions",
147
+ "setup",
148
+ "evidenceHash",
149
+ ],
150
+ "fork audit",
151
+ );
152
+ const { evidenceHash, ...body } = v;
153
+ if (
154
+ v.version !== 1 ||
155
+ digest(evidenceHash, "fork audit") !== semanticHash(body) ||
156
+ v.planHash !== expected.planHash ||
157
+ v.chainId !== expected.chainId ||
158
+ canonicalJson(v.sourceSnapshot) !== canonicalJson(expected.sourceSnapshot)
159
+ )
160
+ throw new Error("Fork audit identity mismatch");
161
+ const provider = exactObject(
162
+ v.provider,
163
+ ["kind", "instanceId"],
164
+ "audit provider",
165
+ );
166
+ if (provider.kind !== "hardhat")
167
+ throw new Error("Unsupported audit provider");
168
+ hash(provider.instanceId);
169
+ const source = exactObject(
170
+ v.sourceSnapshot,
171
+ ["blockNumber", "blockHash"],
172
+ "source snapshot",
173
+ );
174
+ number(source.blockNumber);
175
+ hash(source.blockHash);
176
+ const baseline = block(v.baseline),
177
+ end = block(v.end);
178
+ exactObject(v.baseline, ["number", "hash", "parentHash"], "baseline");
179
+ exactObject(v.end, ["number", "hash", "parentHash"], "end");
180
+ if (
181
+ baseline.number < Number(source.blockNumber) ||
182
+ end.number < baseline.number
183
+ )
184
+ throw new Error("Invalid audit interval");
185
+ for (const key of [
186
+ "blocks",
187
+ "transactions",
188
+ "submissions",
189
+ "completedTransactions",
190
+ "setup",
191
+ ])
192
+ if (!Array.isArray(v[key])) throw new Error(`Invalid audit ${key}`);
193
+ const e = v as unknown as ForkAuditEvidence;
194
+ let parent = baseline;
195
+ const hashes: string[] = [];
196
+ for (const raw of e.blocks) {
197
+ const b = exactObject(
198
+ raw,
199
+ ["number", "hash", "parentHash", "transactionHashes"],
200
+ "audit block",
201
+ );
202
+ const current = block(b);
203
+ if (
204
+ current.number !== parent.number + 1 ||
205
+ current.parentHash !== parent.hash ||
206
+ !Array.isArray(b.transactionHashes)
207
+ )
208
+ throw new Error("Audit block ancestry mismatch");
209
+ hashes.push(...b.transactionHashes.map(hash));
210
+ parent = current;
211
+ }
212
+ if (
213
+ canonicalJson(parent) !== canonicalJson(end) ||
214
+ new Set(hashes).size !== hashes.length ||
215
+ canonicalJson(hashes) !== canonicalJson(e.transactions.map((t) => t.hash))
216
+ )
217
+ throw new Error("Audit interval transaction coverage mismatch");
218
+ const completed = e.completedTransactions;
219
+ if (
220
+ canonicalJson(completed) !==
221
+ canonicalJson(expected.completedTransactions ?? [])
222
+ )
223
+ throw new Error(
224
+ "Fork audit completed prefix differs from caller-validated prefix",
225
+ );
226
+ if (completed.length > expected.transactions.length)
227
+ throw new Error("Invalid completed audit prefix");
228
+ const completedHashes = new Set<string>();
229
+ completed.forEach((c, i) => {
230
+ exactObject(
231
+ c,
232
+ ["transactionId", "transactionHash"],
233
+ "completed transaction",
234
+ );
235
+ if (
236
+ c.transactionId !== expected.transactions[i].transactionId ||
237
+ completedHashes.has(hash(c.transactionHash))
238
+ )
239
+ throw new Error("Invalid completed audit prefix");
240
+ completedHashes.add(hash(c.transactionHash));
241
+ });
242
+ const suffix = expected.transactions.slice(completed.length);
243
+ if (
244
+ suffix.length !== e.transactions.length ||
245
+ e.submissions.length !== suffix.length
246
+ )
247
+ throw new Error("Missing or extra/unplanned fork transaction");
248
+ const seen = new Set<string>();
249
+ for (const [i, tx] of e.transactions.entries()) {
250
+ exactObject(
251
+ tx,
252
+ [
253
+ "hash",
254
+ "from",
255
+ "to",
256
+ "value",
257
+ "data",
258
+ "blockNumber",
259
+ "blockHash",
260
+ "transactionIndex",
261
+ "receipt",
262
+ ],
263
+ "audit transaction",
264
+ );
265
+ const receipt = exactObject(
266
+ tx.receipt,
267
+ [
268
+ "hash",
269
+ "from",
270
+ "to",
271
+ "blockNumber",
272
+ "blockHash",
273
+ "transactionIndex",
274
+ "status",
275
+ ],
276
+ "audit receipt",
277
+ );
278
+ const canonical = txEvidence(
279
+ { ...tx, input: tx.data },
280
+ {
281
+ ...receipt,
282
+ transactionHash: receipt.hash,
283
+ status: String(receipt.status),
284
+ },
285
+ );
286
+ if (canonicalJson(canonical) !== canonicalJson(tx))
287
+ throw new Error("Noncanonical audit transaction");
288
+ const b = e.blocks.find((b) => b.number === tx.blockNumber),
289
+ p = suffix[i],
290
+ s = e.submissions[i];
291
+ exactObject(s, ["transactionId", "transactionHash"], "submission");
292
+ if (
293
+ !b ||
294
+ b.hash !== tx.blockHash ||
295
+ b.transactionHashes[tx.transactionIndex] !== tx.hash ||
296
+ seen.has(tx.hash) ||
297
+ completedHashes.has(tx.hash) ||
298
+ s.transactionId !== p.transactionId ||
299
+ hash(s.transactionHash) !== tx.hash ||
300
+ p.operation !== 0 ||
301
+ p.executor !== tx.from ||
302
+ p.to !== tx.to ||
303
+ p.value !== tx.value ||
304
+ p.data !== tx.data
305
+ )
306
+ throw new Error("Fork transaction envelope/order/identity mismatch");
307
+ seen.add(tx.hash);
308
+ if (
309
+ receipt.status !== 1 ||
310
+ receipt.hash !== tx.hash ||
311
+ receipt.from !== tx.from ||
312
+ receipt.to !== tx.to ||
313
+ receipt.blockNumber !== tx.blockNumber ||
314
+ receipt.blockHash !== tx.blockHash ||
315
+ receipt.transactionIndex !== tx.transactionIndex
316
+ )
317
+ throw new Error("Fork receipt identity mismatch");
318
+ }
319
+ for (const setup of e.setup) {
320
+ exactObject(
321
+ setup,
322
+ [
323
+ "method",
324
+ "address",
325
+ ...(setup.method === "hardhat_setBalance" ? ["value"] : []),
326
+ ],
327
+ "trusted setup",
328
+ );
329
+ address(setup.address);
330
+ if (
331
+ !["hardhat_setBalance", "hardhat_impersonateAccount"].includes(
332
+ setup.method,
333
+ )
334
+ )
335
+ throw new Error("Invalid trusted setup");
336
+ if (setup.value !== undefined) quantity(setup.value);
337
+ }
338
+ return deepFreeze(canonicalData(e) as ForkAuditEvidence);
339
+ }
340
+ /** Guard covers this explicit provider's public request/send boundary. No same-UID isolation claim. */
341
+ export class LocalForkAudit {
342
+ private readonly scope = new AsyncLocalStorage<{
343
+ address: string;
344
+ active: boolean;
345
+ }>();
346
+ private readonly submissions: CompletedExecutionTransaction[] = [];
347
+ private readonly setupObservations: ForkAuditEvidence["setup"] = [];
348
+ private violation = false;
349
+ private closed = false;
350
+ private readonly originalRequest: AuditProvider["request"];
351
+ private readonly originalSend?: AuditProvider["send"];
352
+ private readonly guardedRequest: AuditProvider["request"];
353
+ private readonly guardedSend: AuditProvider["send"];
354
+ private constructor(
355
+ private readonly input: {
356
+ provider: AuditProvider;
357
+ chainId: string;
358
+ sourceSnapshot: { blockNumber: number; blockHash: string };
359
+ },
360
+ private readonly baseline: BlockIdentity,
361
+ private readonly instanceId: string,
362
+ ) {
363
+ const provider = input.provider;
364
+ this.originalRequest = provider.request;
365
+ this.originalSend = provider.send;
366
+ this.guardedRequest = async (args) => {
367
+ this.guard(args.method, args.params ?? []);
368
+ return this.originalRequest.call(provider, args);
369
+ };
370
+ this.guardedSend = async (method, params = []) =>
371
+ this.guardedRequest({ method, params });
372
+ try {
373
+ provider.request = this.guardedRequest;
374
+ if (provider.send) provider.send = this.guardedSend;
375
+ } catch (error) {
376
+ if (provider.request === this.guardedRequest)
377
+ provider.request = this.originalRequest;
378
+ if (provider.send === this.guardedSend) provider.send = this.originalSend;
379
+ throw error;
380
+ }
381
+ }
382
+ static async start(input: {
383
+ provider: AuditProvider;
384
+ chainId: string;
385
+ sourceSnapshot: { blockNumber: number; blockHash: string };
386
+ }): Promise<LocalForkAudit> {
387
+ const rpc = (method: string, params: unknown[] = []) =>
388
+ input.provider.request({ method, params });
389
+ const [chainId, metadata, latest] = await Promise.all([
390
+ rpc("eth_chainId"),
391
+ rpc("hardhat_metadata"),
392
+ rpc("eth_getBlockByNumber", ["latest", false]),
393
+ ]);
394
+ if (
395
+ quantity(chainId) !== input.chainId ||
396
+ String(metadata.chainId) !== input.chainId
397
+ )
398
+ throw new Error("Fork provider chain identity mismatch");
399
+ const baseline = block(latest);
400
+ if (baseline.number < input.sourceSnapshot.blockNumber)
401
+ throw new Error("Fork baseline precedes source snapshot");
402
+ const audit = new LocalForkAudit(
403
+ input,
404
+ baseline,
405
+ hash(metadata.instanceId),
406
+ );
407
+ try {
408
+ await audit.assertSettled();
409
+ if ((await audit.rpc("hardhat_getAutomine")) !== true)
410
+ throw new Error(
411
+ "Fork audit requires automine; manual mining is unsupported",
412
+ );
413
+ return audit;
414
+ } catch (error) {
415
+ audit.close();
416
+ throw error;
417
+ }
418
+ }
419
+ private captured = false;
420
+ private guard(method: string, params: any): void {
421
+ if (this.captured && (/^(eth_send|personal_|wallet_|hardhat_|anvil_|evm_)/.test(method)) && !["hardhat_metadata", "hardhat_getAutomine"].includes(method)) {
422
+ this.violation = true; throw new Error("Fork business ports closed");
423
+ }
424
+ const local = /^(hardhat_|anvil_|evm_)/.test(method);
425
+ const reads = new Set([
426
+ "hardhat_metadata",
427
+ "hardhat_getAutomine",
428
+ "evm_mine",
429
+ "hardhat_mine",
430
+ ]);
431
+ if (!local || reads.has(method)) return;
432
+ const scope = this.scope.getStore();
433
+ if (
434
+ scope?.active &&
435
+ ["hardhat_impersonateAccount", "hardhat_setBalance"].includes(method) &&
436
+ Array.isArray(params) &&
437
+ address(params[0]) === scope.address &&
438
+ params.length === (method === "hardhat_setBalance" ? 2 : 1)
439
+ ) {
440
+ this.setupObservations.push({
441
+ method,
442
+ address: scope.address,
443
+ ...(method === "hardhat_setBalance"
444
+ ? { value: quantity(params[1]) }
445
+ : {}),
446
+ });
447
+ return;
448
+ }
449
+ this.violation = true;
450
+ throw new Error(`Forbidden fork mutation after baseline: ${method}`);
451
+ }
452
+ async setup<T>(executor: string, action: () => Promise<T>): Promise<T> {
453
+ if (this.closed || this.captured) throw new Error("Fork audit closed");
454
+ const scope = { address: address(executor), active: true };
455
+ return this.scope.run(scope, async () => {
456
+ try {
457
+ return await action();
458
+ } finally {
459
+ scope.active = false;
460
+ }
461
+ });
462
+ }
463
+ record(observation: CompletedExecutionTransaction): void {
464
+ if (this.closed || this.captured) throw new Error("Fork audit closed");
465
+ if (
466
+ this.submissions.some(
467
+ (s) =>
468
+ s.transactionId === observation.transactionId ||
469
+ s.transactionHash === hash(observation.transactionHash),
470
+ )
471
+ ) {
472
+ this.violation = true;
473
+ throw new Error("Duplicate fork submission");
474
+ }
475
+ this.submissions.push({
476
+ transactionId: observation.transactionId,
477
+ transactionHash: hash(observation.transactionHash),
478
+ });
479
+ }
480
+ private rpc(method: string, params: unknown[] = []): Promise<any> {
481
+ return this.input.provider.request({ method, params });
482
+ }
483
+ private async assertSettled(): Promise<void> {
484
+ const [pending, block] = await Promise.all([
485
+ this.rpc("eth_pendingTransactions"),
486
+ this.rpc("eth_getBlockByNumber", ["pending", true]),
487
+ ]);
488
+ if (
489
+ !Array.isArray(pending) ||
490
+ pending.length ||
491
+ !block ||
492
+ !Array.isArray(block.transactions) ||
493
+ block.transactions.length
494
+ )
495
+ throw new Error("Pending or unobservable fork transactions");
496
+ }
497
+ async finish(input: { transactions: readonly ReleaseExecutionTransaction[]; completedTransactions: CompletedExecutionTransaction[]; planHash: string }): Promise<ForkAuditEvidence> {
498
+ return (await this.capture(input)).bind(input.planHash);
499
+ }
500
+ /** Owner-held interval. No final plan identity exists until its one-shot pure binding. */
501
+ async capture(input: { transactions: readonly ReleaseExecutionTransaction[]; completedTransactions: CompletedExecutionTransaction[] }): Promise<CapturedForkInterval> {
502
+ if (this.captured || this.closed) throw new Error('Fork capture closed');
503
+ this.captured = true;
504
+ const frozen = deepFreeze(canonicalData(input)) as unknown as typeof input;
505
+ const placeholder = '0'.repeat(64);
506
+ const original = await this.readInterval({...frozen, planHash:placeholder});
507
+ const {planHash:_,evidenceHash:__,...snapshot}=original;
508
+ let state:'open'|'bound'|'failed'='open';
509
+ const assertOpen=()=>{if(state!=='open'||this.closed)throw new Error('Captured fork interval closed or bound');};
510
+ return Object.freeze({
511
+ snapshot:deepFreeze(snapshot),
512
+ assertUnchanged: async () => {
513
+ assertOpen();
514
+ try { if(canonicalJson(await this.readInterval({...frozen,planHash:placeholder}))!==canonicalJson(original))throw new Error('Captured fork interval drift'); }
515
+ catch(error){state='failed';throw error;}
516
+ },
517
+ bind: (planHash:string) => {
518
+ assertOpen(); state='failed';
519
+ if(this.violation||this.input.provider.request!==this.guardedRequest||(this.originalSend&&this.input.provider.send!==this.guardedSend))throw new Error('Fork audit provider mutation/identity violation');
520
+ const {evidenceHash:_,...body}=original;
521
+ const bound={...body,planHash};
522
+ const result=verifyCapturedForkAudit({...bound,evidenceHash:semanticHash(bound)}, {...frozen,planHash,chainId:this.input.chainId,sourceSnapshot:this.input.sourceSnapshot});
523
+ state='bound';return result;
524
+ },
525
+ });
526
+ }
527
+ private async readInterval(input: {
528
+ transactions: readonly ReleaseExecutionTransaction[];
529
+ completedTransactions: CompletedExecutionTransaction[];
530
+ planHash: string;
531
+ }): Promise<ForkAuditEvidence> {
532
+ if (
533
+ this.closed ||
534
+ this.violation ||
535
+ this.input.provider.request !== this.guardedRequest ||
536
+ (this.originalSend && this.input.provider.send !== this.guardedSend)
537
+ )
538
+ throw new Error("Fork audit provider mutation/identity violation");
539
+ await this.assertSettled();
540
+ const [chainId, metadata, start, last] = await Promise.all([
541
+ this.rpc("eth_chainId"),
542
+ this.rpc("hardhat_metadata"),
543
+ this.rpc("eth_getBlockByNumber", [
544
+ "0x" + this.baseline.number.toString(16),
545
+ false,
546
+ ]),
547
+ this.rpc("eth_getBlockByNumber", ["latest", false]),
548
+ ]);
549
+ if (
550
+ quantity(chainId) !== this.input.chainId ||
551
+ hash(metadata.instanceId) !== this.instanceId ||
552
+ canonicalJson(block(start)) !== canonicalJson(this.baseline)
553
+ )
554
+ throw new Error("Fork audit baseline/provider identity changed");
555
+ const end = block(last),
556
+ blocks: ForkAuditEvidence["blocks"] = [],
557
+ transactions: TransactionEvidence[] = [];
558
+ for (let n = this.baseline.number + 1; n <= end.number; n++) {
559
+ const raw = await this.rpc("eth_getBlockByNumber", [
560
+ "0x" + n.toString(16),
561
+ true,
562
+ ]);
563
+ const b = block(raw);
564
+ if (!Array.isArray(raw.transactions))
565
+ throw new Error("Missing full audit block");
566
+ blocks.push({
567
+ ...b,
568
+ transactionHashes: raw.transactions.map((tx: any) => hash(tx.hash)),
569
+ });
570
+ for (const tx of raw.transactions) {
571
+ const [receipt, lookup] = await Promise.all([
572
+ this.rpc("eth_getTransactionReceipt", [tx.hash]),
573
+ this.rpc("eth_getTransactionByHash", [tx.hash]),
574
+ ]);
575
+ const evidence = txEvidence(tx, receipt);
576
+ if (
577
+ canonicalJson(evidence) !== canonicalJson(txEvidence(lookup, receipt))
578
+ )
579
+ throw new Error("Audit transaction lookup mismatch");
580
+ transactions.push(evidence);
581
+ }
582
+ }
583
+ await this.assertSettled();
584
+ if (
585
+ canonicalJson(
586
+ block(await this.rpc("eth_getBlockByNumber", ["latest", false])),
587
+ ) !== canonicalJson(end)
588
+ )
589
+ throw new Error("Fork audit changed while enumerating");
590
+ const body = {
591
+ version: 1 as const,
592
+ planHash: input.planHash,
593
+ chainId: this.input.chainId,
594
+ provider: { kind: "hardhat" as const, instanceId: this.instanceId },
595
+ sourceSnapshot: this.input.sourceSnapshot,
596
+ baseline: this.baseline,
597
+ end,
598
+ blocks,
599
+ transactions,
600
+ submissions: this.submissions,
601
+ completedTransactions: input.completedTransactions,
602
+ setup: this.setupObservations,
603
+ };
604
+ return verifyCapturedForkAudit(
605
+ { ...body, evidenceHash: semanticHash(body) },
606
+ {
607
+ ...input,
608
+ chainId: this.input.chainId,
609
+ sourceSnapshot: this.input.sourceSnapshot,
610
+ },
611
+ );
612
+ }
613
+ close(): void {
614
+ if (this.closed) return;
615
+ this.closed = true;
616
+ this.input.provider.request = this.originalRequest;
617
+ if (this.originalSend) this.input.provider.send = this.originalSend;
618
+ this.scope.disable();
619
+ }
620
+ }
@@ -0,0 +1,38 @@
1
+ import { configureDeliveryEnvironment, resolveDeliveryRuntimeNetwork } from './manifest';
2
+ import { parseDeliveryRequest } from './protocol';
3
+ import path from 'node:path';
4
+ import { registerConfigurationEnvironment } from './configuration-hre';
5
+ import { registerOwnedFork } from './aggregate-bootstrap';
6
+ // Retain the dependency's type augmentations in our emitted declaration without an eager runtime import.
7
+ export type { HardhatUpgrades } from '@openzeppelin/hardhat-upgrades';
8
+
9
+ // Deliberately use require after the pure bootstrap: upgrades-core captures its directory at import.
10
+ const root = process.cwd();
11
+ const request = process.env.GATE_DELIVERY_CONTEXT === undefined ? undefined
12
+ : parseDeliveryRequest(JSON.parse(process.env.GATE_DELIVERY_CONTEXT));
13
+ const runner = request ? resolveDeliveryRuntimeNetwork({ root, request }) : undefined;
14
+ configureDeliveryEnvironment({ root });
15
+ if (process.env.GATE_DELIVERY_CONTEXT !== undefined
16
+ && Object.keys(require.cache).some(file => /[/\\]@openzeppelin[/\\]upgrades-core[/\\]/.test(file))) {
17
+ throw new Error('OpenZeppelin was already loaded before delivery bootstrap; use a fresh process with delivery-hardhat first');
18
+ }
19
+ const { subtask, extendEnvironment, extendConfig } = require('hardhat/config') as typeof import('hardhat/config');
20
+ registerOwnedFork(extendConfig);
21
+ registerConfigurationEnvironment(extendEnvironment);
22
+ // Register before ethers/OZ environment extenders. HRE selects its network after config
23
+ // extenders run, so a static default or CLI inspection alone cannot establish this binding.
24
+ if (runner !== undefined) extendEnvironment(hre => {
25
+ if (hre.network.name !== runner) throw new Error(`Actual HRE network conflict: expected ${runner}, received ${hre.network.name}`);
26
+ if (path.resolve(hre.config.paths.root) !== path.resolve(root)
27
+ || path.resolve(hre.config.paths.configFile) !== path.join(root, 'hardhat.config.ts')) throw new Error('Actual HRE project/config conflict with delivery context');
28
+ });
29
+ require('@nomicfoundation/hardhat-ethers');
30
+ require('@openzeppelin/hardhat-upgrades');
31
+ const { TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES } = require('hardhat/builtin-tasks/task-names') as typeof import('hardhat/builtin-tasks/task-names');
32
+ const { registerWorkflowDependencyCompiler } = require('../config/hardhatAdapters') as typeof import('../config/hardhatAdapters');
33
+ registerWorkflowDependencyCompiler(subtask, TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES);
34
+ const compiler = require('./compiler') as typeof import('./compiler');
35
+ const { HardhatContext } = require('hardhat/internal/context') as typeof import('hardhat/internal/context');
36
+ compiler.registerDeliveryCompiler(subtask, HardhatContext.getHardhatContext().tasksDSL.getTaskDefinitions() as any, extendEnvironment);
37
+ export const qualifyDeliveryCompiler = compiler.qualifyDeliveryCompiler;
38
+ export const parseCompilerEvidence = compiler.parseCompilerEvidence;
@@ -0,0 +1,10 @@
1
+ /** Only selected production networks may change an accepted development registration. */
2
+ import {canonicalJson} from '../workflow/lib/canonicalData';
3
+ import {validateContractInfo} from '../workflow/lib/deployments';
4
+ import {validateDeploymentInfo} from '../workflow/lib/deploymentInfo';
5
+ export const historicalRegistrationFile=(file:string)=>file==='contractInfo.json'||file==='deploymentInfo.json';
6
+ export function validateHistoricalRegistration(file:string,baseline:string,current:string,productionTargets:readonly string[]){
7
+ const keep=(rows:Record<string,unknown>)=>Object.fromEntries(Object.entries(rows).filter(([name])=>!productionTargets.includes(name)));
8
+ const project=(text:string)=>{const value=JSON.parse(text);return file==='contractInfo.json'?keep(validateContractInfo(value)):{...validateDeploymentInfo(value),networks:keep(validateDeploymentInfo(value).networks)};};
9
+ if(!historicalRegistrationFile(file)||canonicalJson(project(baseline))!==canonicalJson(project(current)))throw Error(`Historical development registration changed: ${file}`);
10
+ }