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
@@ -0,0 +1,32 @@
1
+ export const SCHEMA: 'gateflow-plan/v2'
2
+ export const SCHEMA_V1: 'gateflow-plan/v1'
3
+ export const SAFE_KEY: RegExp
4
+ export const SKILL_NAME: RegExp
5
+ export const TASK_STATUSES: readonly ['pending', 'running', 'blocked', 'completed', 'failed', 'cancelled']
6
+ export const FAILURE_CATEGORIES: readonly ['execution_error', 'acceptance_failed', 'review_rejected', 'input_missing']
7
+ export const DEFINITION_CONTRACT: 'gateflow-plan/definition@1'
8
+ export class PlanError extends Error { code: string; constructor(message: string, code?: string) }
9
+ export interface PlanTask {
10
+ no: number; planKey: string; rev: number; title: string; objective: string; acceptance: string[]; dependsOn: string[]
11
+ step?: string; scope?: Record<string, unknown>; parameters?: unknown[]; expectedArtifacts?: string[]; allowedChanges?: string[]
12
+ tools?: string[]; toolsOptional?: string[]; skills?: string[]; status: typeof TASK_STATUSES[number]; adoptedRev?: number
13
+ blockedReason?: string; cancelReason?: string; result?: Record<string, unknown>; previousResult?: Record<string, unknown>
14
+ }
15
+ export interface PlanLane { name: string; state: 'enabled' | 'disabled'; reason?: string; skill?: string; steps?: { id: string; name: string }[] }
16
+ export interface Plan {
17
+ schema: typeof SCHEMA; taskId: string; title: string; flow?: string; revision: number; progressSeq: number; updatedAt: string
18
+ lanes: Record<string, PlanLane>; goal: string; notes: Record<string, string>; tasks: Record<string, PlanTask[]>; history: Record<string, unknown>[]
19
+ }
20
+ export type DeepReadonly<T> = T extends object ? { readonly [P in keyof T]: DeepReadonly<T[P]> } : T
21
+ export interface DefinitionSelection { roots: string[]; mode: 'upstream' | 'full' }
22
+ export interface DefinitionSnapshot {
23
+ contract: typeof DEFINITION_CONTRACT; schema: typeof SCHEMA; taskId: string; flow?: string; roots: string[]
24
+ lanes: Record<string, { state: 'enabled' | 'disabled'; skill?: string; steps: string[] }>
25
+ tasks: (Pick<PlanTask, 'planKey' | 'rev' | 'objective' | 'acceptance' | 'dependsOn' | 'step' | 'scope' | 'parameters' | 'expectedArtifacts' | 'allowedChanges'> & { lane: string })[]
26
+ }
27
+ export function parsePlan(text: string): Plan
28
+ export function detectSchema(text: string): string | null
29
+ export function projectDefinitions(text: string, selection: DefinitionSelection): Readonly<{ snapshot: DeepReadonly<DefinitionSnapshot>; bytes: string }>
30
+ export function skillNames(value: unknown, where: string): string[]
31
+ export function toolRefs(value: unknown, where: string): string[]
32
+ export function validateEvmContracts(plan: { flow?: string; lanes: Record<string, { skill?: string }>; tasks: Record<string, { planKey: string; step?: string; scope?: Record<string, unknown> }[]> }, fail: (message: string) => never): void
@@ -0,0 +1,24 @@
1
+ {
2
+ "formatVersion": 1,
3
+ "name": "gateflow-plan-read-only",
4
+ "version": 1,
5
+ "schema": "gateflow-plan/v2",
6
+ "definitionContract": "gateflow-plan/definition@1",
7
+ "sourceCommit": "9b175e7906ca6735aeca92b50ce7cf716d980f17",
8
+ "sources": {
9
+ "builtin-skills/gateflow-plan/scripts/lib/evm-contract.mjs": "f7498feb2baeeed5022ab4e88e87c2567c786e7839249f5143fd565a5800bb13",
10
+ "builtin-skills/gateflow-plan/scripts/lib/handoff-v2.mjs": "185dc9fe11fd3d4bfb40a27175ddc27ed6f590d6427bf533d1f0d2aeda25d623",
11
+ "builtin-skills/gateflow-plan/scripts/lib/read-only.d.mts": "43cebba0e3d08ac5abb87cb34719e2d747aaa7cc8a6136eeccbc9f099758e490",
12
+ "builtin-skills/gateflow-plan/scripts/lib/read-only.mjs": "bb4b91d518fb9e12114ade0c251a3baba610516351a12fa5a9b501e93bb5f8ea",
13
+ "builtin-skills/gateflow-plan/scripts/lib/yaml-lite.mjs": "b53b8322b27bb73bbbf2a4254be4698ee43ec79c27828068954afd6d05902784",
14
+ "scripts/build-plan-codec.mjs": "d78243d5824bff60eb1a0d8cc5f86919bc9f585b9ece0824bf7e22c9653d874d"
15
+ },
16
+ "builder": {
17
+ "name": "esbuild",
18
+ "version": "0.21.5"
19
+ },
20
+ "artifacts": {
21
+ "index.cjs": "4c38b283bab25b7e906a961058bea87c7bcb0c103fefdace4cf46cb76c273adf",
22
+ "index.d.cts": "43cebba0e3d08ac5abb87cb34719e2d747aaa7cc8a6136eeccbc9f099758e490"
23
+ }
24
+ }
@@ -0,0 +1,174 @@
1
+ import type { WorkflowContext } from "./lib/context";
2
+ import type { WorkflowStep } from "./lib/parameters";
3
+ import type { WorkflowMode } from "./lib/simulation";
4
+ import { assertLocalForkRuntime, assertLocalForkSigner, impersonateLocalForkSigner } from "./lib/runtime";
5
+ import { ExternalExecutionRequired } from "./lib/external";
6
+ import { ExecutionSegmentDeferred } from "./lib/transactionPlanner";
7
+ import { runDeployStep } from "./steps/deploy";
8
+ import { runCallStep } from "./steps/call";
9
+ import { runUpgradeStep } from "./steps/upgrade";
10
+ import { runViewStep } from "./steps/view";
11
+ import { runCheckStep } from "./steps/check";
12
+
13
+ export interface WorkflowEngineOptions {
14
+ simulationCallers?: readonly { stepId: string; callerAddress: string }[];
15
+ runCustomStep?: (context: WorkflowContext, step: WorkflowStep) => Promise<void>;
16
+ }
17
+
18
+ export const validateWorkflowStepsForMode = (
19
+ mode: WorkflowMode,
20
+ steps: readonly WorkflowStep[],
21
+ ): void => {
22
+ if (!["simulate", "verify", "execute"].includes(mode)) throw new Error(`Unsupported workflow mode: ${mode}`);
23
+ if (mode === "verify") {
24
+ const unsupported = steps.find((step) => step.kind !== "view" && step.kind !== "check");
25
+ if (unsupported) throw new Error(`verify mode only supports view and check steps; ${unsupported.id} is ${unsupported.kind}`);
26
+ }
27
+ };
28
+
29
+ const dispatchStep = async (context: WorkflowContext, step: WorkflowStep, options: WorkflowEngineOptions): Promise<void> => {
30
+ switch (step.kind) {
31
+ case "deploy":
32
+ await runDeployStep(context, step);
33
+ return;
34
+ case "call":
35
+ await runCallStep(context, step);
36
+ return;
37
+ case "upgrade":
38
+ await runUpgradeStep(context, step);
39
+ return;
40
+ case "view":
41
+ await runViewStep(context, step);
42
+ return;
43
+ case "check":
44
+ await runCheckStep(context, step);
45
+ return;
46
+ case "custom":
47
+ if (!options.runCustomStep) throw new Error("Custom steps require an explicit legacy or planning adapter");
48
+ await options.runCustomStep(context, step);
49
+ return;
50
+ default:
51
+ throw new Error(`Unsupported step kind: ${step.kind}`);
52
+ }
53
+ };
54
+
55
+ export const runWorkflowSteps = async (
56
+ context: WorkflowContext,
57
+ steps: readonly WorkflowStep[],
58
+ options: WorkflowEngineOptions = {},
59
+ ): Promise<{ executionSegmentDeferred: boolean }> => {
60
+ // Validate the entire selection before a read, custom adapter, or signer runs.
61
+ validateWorkflowStepsForMode(context.mode, steps);
62
+ if (
63
+ context.mode === "verify"
64
+ && context.signer
65
+ && (!context.signer.provider || context.signer.provider !== context.runtime.hre.ethers.provider)
66
+ ) {
67
+ throw new Error("Verify signer must be connected to the explicit runtime provider");
68
+ }
69
+ if (context.mode === "simulate") {
70
+ assertLocalForkRuntime(context.runtime);
71
+ if (context.signer) assertLocalForkSigner(context.runtime, context.signer);
72
+ } else if (options.simulationCallers?.length) {
73
+ throw new Error("Simulation callers are only available in simulate mode");
74
+ }
75
+ const reporter = context.reporter;
76
+ let executionSegmentDeferred = false;
77
+ stepLoop: for (const step of steps) {
78
+ if (
79
+ context.mode === "execute"
80
+ && context.externalCalls.length > 0
81
+ && (step.kind === "view" || step.kind === "check" || step.kind === "custom")
82
+ ) {
83
+ reporter.event("step.deferred_until_external_execution", {
84
+ stepId: step.id,
85
+ kind: step.kind,
86
+ });
87
+ break;
88
+ }
89
+ const configuredCaller = options.simulationCallers?.find(
90
+ (entry) => entry.stepId === step.id,
91
+ );
92
+ const stepContext: WorkflowContext = configuredCaller
93
+ ? {
94
+ ...context,
95
+ signer: await impersonateLocalForkSigner(context.runtime, configuredCaller.callerAddress),
96
+ signerAddress: configuredCaller.callerAddress,
97
+ configuredSimulationCaller: true,
98
+ }
99
+ : context;
100
+ if (configuredCaller) {
101
+ reporter.setSimulationCallerAddress?.(configuredCaller.callerAddress);
102
+ }
103
+ try {
104
+ reporter.event("step.started", { stepId: step.id, kind: step.kind });
105
+ try {
106
+ await dispatchStep(stepContext, step, options);
107
+ } catch (error) {
108
+ if (context.mode === "execute" && error instanceof ExecutionSegmentDeferred) {
109
+ executionSegmentDeferred = true;
110
+ reporter.event("execution.segment.deferred", {
111
+ transactionId: error.transactionId,
112
+ });
113
+ break stepLoop;
114
+ }
115
+ if (
116
+ context.mode === "execute"
117
+ && error instanceof ExternalExecutionRequired
118
+ ) {
119
+ if (!context.executionPlanner) {
120
+ throw new Error(
121
+ "External execution requires a locked mixed-authority plan; run final simulation and execute mode",
122
+ );
123
+ }
124
+ for (const call of error.calls) {
125
+ let planned;
126
+ try {
127
+ planned = context.executionPlanner.add({
128
+ stepId: call.stepId,
129
+ executor: call.executor,
130
+ to: call.to,
131
+ value: call.value,
132
+ data: call.data,
133
+ operation: call.operation,
134
+ });
135
+ } catch (planError) {
136
+ if (planError instanceof ExecutionSegmentDeferred) {
137
+ executionSegmentDeferred = true;
138
+ reporter.event("execution.segment.deferred", {
139
+ transactionId: planError.transactionId,
140
+ });
141
+ break;
142
+ }
143
+ throw planError;
144
+ }
145
+ if (planned.route !== "external") {
146
+ throw new Error(
147
+ `Step ${call.stepId} requested external execution for an operator route`,
148
+ );
149
+ }
150
+ if (planned.executionAction !== "replay") {
151
+ context.externalCalls.push({
152
+ ...call,
153
+ transactionId: planned.transactionId,
154
+ stepId: planned.stepId,
155
+ executor: planned.executor,
156
+ to: planned.to,
157
+ value: planned.value,
158
+ data: planned.data,
159
+ operation: planned.operation,
160
+ });
161
+ }
162
+ }
163
+ if (executionSegmentDeferred) break stepLoop;
164
+ continue;
165
+ }
166
+ throw error;
167
+ }
168
+ reporter.event("step.completed", { stepId: step.id, kind: step.kind });
169
+ } finally {
170
+ if (configuredCaller) reporter.clearSimulationCallerAddress?.();
171
+ }
172
+ }
173
+ return { executionSegmentDeferred };
174
+ };
@@ -1,6 +1,6 @@
1
1
  import type { BaseContract } from "ethers";
2
2
  import { getAddress, isAddress } from "ethers";
3
- import { TargetConfig, resolveAdmin } from "./config";
3
+ import { resolveAdmin } from "./config";
4
4
 
5
5
  export interface AuthorityDecision {
6
6
  mode: "execute" | "calldata";
@@ -61,7 +61,7 @@ interface ControlledMulticallAuthorityContract {
61
61
  export const decideControlledMulticallAuthority = async (
62
62
  contract: ControlledMulticallAuthorityContract,
63
63
  factory: string,
64
- target: TargetConfig,
64
+ target: { admin?: string },
65
65
  signerAddress: string,
66
66
  blockTag?: number,
67
67
  ): Promise<AuthorityDecision> => {
@@ -122,7 +122,7 @@ export const decideControlledMulticallAuthority = async (
122
122
 
123
123
  export const decideAuthority = async (
124
124
  contract: BaseContract,
125
- target: TargetConfig,
125
+ target: { admin?: string },
126
126
  signerAddress: string,
127
127
  blockTag?: number,
128
128
  ): Promise<AuthorityDecision> => {
@@ -1,6 +1,7 @@
1
+ import { resolveWorkflowValue } from './validation';
2
+ import { typedValue } from "./typedValue";
1
3
  import type { BaseContract } from "ethers";
2
4
  import { getAddress, isAddress } from "ethers";
3
- import { ethers } from "../../projectHardhat";
4
5
  import {
5
6
  assertSelectedSimulationSignerAuthorized,
6
7
  decideAuthority,
@@ -9,9 +10,9 @@ import { encodeCall } from "./calldata";
9
10
  import { findExecutionCandidateAddress } from "./contractInfoCandidates";
10
11
  import { getDeploymentAddress } from "./deployments";
11
12
  import { ExternalCall, ExternalExecutionRequired } from "./external";
12
- import { resolveValue, WorkflowStep } from "./parameters";
13
- import type { WorkflowContext } from "../run";
14
- import { impersonateWorkflowSimulationSigner } from "./signer";
13
+ import { WorkflowStep } from "./parameters";
14
+ import type { WorkflowContext } from "./context";
15
+ import { impersonateLocalForkSigner } from "./runtime";
15
16
 
16
17
  export interface ContractCall {
17
18
  method: string;
@@ -52,7 +53,7 @@ const findStateAddress = (
52
53
  ): string | undefined => {
53
54
  for (const pathExpression of [`${name}.address`, `${name}.proxyAddress`]) {
54
55
  try {
55
- const value = context.state.get(pathExpression);
56
+ const value = context.validation ? context.validation.resolve({ $ref: `state.${pathExpression}` }) : context.state.get(pathExpression);
56
57
  if (typeof value === "string" && value) {
57
58
  return value;
58
59
  }
@@ -85,14 +86,9 @@ export const resolveContract = async (
85
86
  deploymentName ||
86
87
  stringStepField(step, "saveAs") ||
87
88
  contractName;
88
- const address = String(
89
+ const rawAddress = (
89
90
  step.address
90
- ? resolveValue(step.address, {
91
- targetId: context.targetId,
92
- target: context.target,
93
- params: context.targetParams,
94
- state: context.state,
95
- })
91
+ ? resolveWorkflowValue(context, step.address)
96
92
  : findStateAddress(context, lookupName) ||
97
93
  findExecutionCandidateAddress({
98
94
  root: context.root,
@@ -101,9 +97,11 @@ export const resolveContract = async (
101
97
  network: context.targetId,
102
98
  name: lookupName,
103
99
  }) ||
104
- getDeploymentAddress(context.root, context.config, context.targetId, lookupName),
100
+ getDeploymentAddress(context.root, context.config, context.targetId, lookupName)
105
101
  );
106
- const contract = await ethers.getContractAt(abiName, address, context.signer);
102
+ context.validation?.address(rawAddress);
103
+ const address = String(rawAddress);
104
+ const contract = await context.runtime.hre.ethers.getContractAt(abiName, address, context.signer);
107
105
 
108
106
  return {
109
107
  contractName,
@@ -125,12 +123,7 @@ export const resolveCallArgs = (
125
123
  context: WorkflowContext,
126
124
  call: ContractCall,
127
125
  ): unknown[] => {
128
- const args = resolveValue(call.args || [], {
129
- targetId: context.targetId,
130
- target: context.target,
131
- params: context.targetParams,
132
- state: context.state,
133
- });
126
+ const args = resolveWorkflowValue(context, context.validation ? (call.args === undefined ? [] : call.args) : (call.args || []));
134
127
 
135
128
  if (!Array.isArray(args)) {
136
129
  throw new Error(`Call ${call.method} args must resolve to an array`);
@@ -186,7 +179,8 @@ export const runContractWriteCalls = async (
186
179
  ): Promise<void> => {
187
180
  const resolved = await resolveContract(context, step);
188
181
  const calls = resolveStepCalls(step);
189
- const callValues = calls.map((call) => normalizeCallValue(call.value));
182
+ const rawCallValues = calls.map((call) => resolveWorkflowValue(context, call.value === undefined ? 0 : call.value));
183
+ const callValues = rawCallValues.map(normalizeCallValue);
190
184
  if (!context.signerAddress) {
191
185
  throw new Error(`Call step ${step.id} requires a signer address`);
192
186
  }
@@ -215,7 +209,8 @@ export const runContractWriteCalls = async (
215
209
  const externalExecutor = authority.executor;
216
210
  const externalCalls: ExternalCall[] = calls.map((call, index) => {
217
211
  const args = resolveCallArgs(context, call);
218
- const stepId = calldataStepId(step, call, index, calls);
212
+ context.validation?.callInterface(resolved.contract.interface.fragments, call.method, args);
213
+ const stepId = context.transactionIdentity?.transactionStepId(step.id, "call", index) ?? calldataStepId(step, call, index, calls);
219
214
  return {
220
215
  transactionId: stepId,
221
216
  stepId,
@@ -234,10 +229,12 @@ export const runContractWriteCalls = async (
234
229
 
235
230
  for (const [index, call] of calls.entries()) {
236
231
  const args = resolveCallArgs(context, call);
232
+ await context.validation?.call(resolved.abiName, call.method, args, rawCallValues[index]);
233
+ context.validation?.callInterface(resolved.contract.interface.fragments, call.method, args);
237
234
  const value = callValues[index];
238
235
 
239
236
  if (context.executionPlanner) {
240
- const stepId = calldataStepId(step, call, index, calls);
237
+ const stepId = context.transactionIdentity?.transactionStepId(step.id, "call", index) ?? calldataStepId(step, call, index, calls);
241
238
  const executor = authority.mode === "execute"
242
239
  ? context.signerAddress
243
240
  : authority.executor;
@@ -290,10 +287,10 @@ export const runContractWriteCalls = async (
290
287
  }
291
288
 
292
289
  const selectedContract = planned.route === "external"
293
- ? await ethers.getContractAt(
290
+ ? await context.runtime.hre.ethers.getContractAt(
294
291
  resolved.abiName,
295
292
  resolved.address,
296
- await impersonateWorkflowSimulationSigner(planned.executor),
293
+ await impersonateLocalForkSigner(context.runtime, planned.executor),
297
294
  )
298
295
  : resolved.contract;
299
296
  const txArgs = value !== "0" ? [...args, { value }] : args;
@@ -301,6 +298,7 @@ export const runContractWriteCalls = async (
301
298
  hash: string;
302
299
  wait: () => Promise<unknown>;
303
300
  };
301
+ context.transactionObserver?.record({ transactionId: planned.transactionId, transactionHash: tx.hash });
304
302
  await tx.wait();
305
303
  if (context.mode === "execute" && planned.route === "operator") {
306
304
  context.operatorReceipts.push({
@@ -354,8 +352,10 @@ export const runContractViewCalls = async (
354
352
 
355
353
  for (const [index, call] of calls.entries()) {
356
354
  const args = resolveCallArgs(context, call);
357
- const value = await methodOf(resolved.contract, call.method)(...args);
358
- results[resultKey(call, index, calls)] = stringifyCallResult(value);
355
+ await context.validation?.call(resolved.abiName, call.method, args, call.value === undefined ? undefined : resolveWorkflowValue(context, call.value));
356
+ context.validation?.callInterface(resolved.contract.interface.fragments, call.method, args);
357
+ const value = await resolved.contract.getFunction(call.method).staticCall(...args);
358
+ results[resultKey(call, index, calls)] = context.validation ? context.validation.stringify(value) : stringifyCallResult(value);
359
359
  }
360
360
 
361
361
  context.reporter.result("view", {
@@ -377,16 +377,18 @@ export const runContractCheckCalls = async (
377
377
 
378
378
  for (const [index, call] of calls.entries()) {
379
379
  const args = resolveCallArgs(context, call);
380
- const actualValue = await methodOf(resolved.contract, call.method)(...args);
381
- const expectedValue = resolveValue(call.expect, {
382
- targetId: context.targetId,
383
- target: context.target,
384
- params: context.targetParams,
385
- state: context.state,
386
- });
387
- const actual = stringifyCallResult(actualValue);
388
- const expected = stringifyCallResult(expectedValue);
389
- const comparable = comparableCallResults(actual, expected);
380
+ await context.validation?.call(resolved.abiName, call.method, args, call.value === undefined ? undefined : resolveWorkflowValue(context, call.value));
381
+ context.validation?.callInterface(resolved.contract.interface.fragments, call.method, args);
382
+ let expectedValue: unknown;
383
+ if (context.validation) {
384
+ expectedValue = resolveWorkflowValue(context, call.expect);
385
+ context.validation.check(resolved.contract.interface.fragments, call.method, expectedValue);
386
+ }
387
+ const actualValue = await resolved.contract.getFunction(call.method).staticCall(...args);
388
+ if (!context.validation) expectedValue = resolveWorkflowValue(context, call.expect);
389
+ const comparable = context.validation
390
+ ? context.validation.compare(resolved.contract.interface.fragments, call.method, actualValue, expectedValue)
391
+ : comparableCallResults(stringifyCallResult(actualValue), stringifyCallResult(expectedValue));
390
392
 
391
393
  if (comparable.actual !== comparable.expected) {
392
394
  throw new Error(
@@ -394,6 +396,13 @@ export const runContractCheckCalls = async (
394
396
  );
395
397
  }
396
398
 
399
+ context.verification?.record({
400
+ stepId: step.id, callIndex: index, assertionId: `${step.id}:${index}`,
401
+ contract: resolved.contractName, abiName: resolved.abiName, abi: resolved.contract.interface.format(true),
402
+ address: resolved.address, method: call.method, args: typedValue(args),
403
+ definition: { method: call.method, args: typedValue(call.args ?? []), expect: typedValue(call.expect) },
404
+ actual: typedValue(actualValue), expected: typedValue(expectedValue),
405
+ });
397
406
  results[resultKey(call, index, calls)] = comparable;
398
407
  }
399
408
 
@@ -0,0 +1,45 @@
1
+ import { createHash } from 'node:crypto';
2
+
3
+ /** Only own enumerable data is semantic. Never invokes getters/toJSON or resolves prototypes. */
4
+ export function canonicalData(value: unknown, label = 'data'): unknown {
5
+ if (value === null || typeof value === 'string' || typeof value === 'boolean') return value;
6
+ if (typeof value === 'number' && Number.isSafeInteger(value)) return value;
7
+ if (!value || typeof value !== 'object') throw new Error(`${label} must contain canonical JSON data`);
8
+ if (Array.isArray(value)) {
9
+ if (Object.keys(value).length !== value.length) throw new Error(`${label} has sparse or extra array data`);
10
+ return Array.from({ length: value.length }, (_, i) => canonicalData(own(value, String(i), label), `${label}[${i}]`));
11
+ }
12
+ if (![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new Error(`${label} must contain own plain data`);
13
+ if (Object.getOwnPropertySymbols(value).length) throw new Error(`${label} contains symbol fields`);
14
+ const result: Record<string, unknown> = {};
15
+ for (const key of Object.getOwnPropertyNames(value).sort()) {
16
+ Object.defineProperty(result, key, { value: canonicalData(own(value, key, label), `${label}.${key}`), enumerable: true, writable: true, configurable: true });
17
+ }
18
+ return result;
19
+ }
20
+ function own(value: object, key: string, label: string): unknown {
21
+ const d = Object.getOwnPropertyDescriptor(value, key);
22
+ if (!d || !d.enumerable || !('value' in d)) throw new Error(`${label}.${key} must be own enumerable data`);
23
+ return d.value;
24
+ }
25
+ export function canonicalJson(value: unknown): string { return JSON.stringify(canonicalData(value)); }
26
+ export function semanticHash(value: unknown): string { return createHash('sha256').update(canonicalJson(value)).digest('hex'); }
27
+ export function deepFreeze<T>(value: T): T {
28
+ if (value && typeof value === 'object') { Object.values(value).forEach(deepFreeze); Object.freeze(value); }
29
+ return value;
30
+ }
31
+ export function exactObject(value: unknown, keys: readonly string[], label: string): Record<string, unknown> {
32
+ const data = canonicalData(value, label);
33
+ if (!data || typeof data !== 'object' || Array.isArray(data)) throw new Error(`${label} must be an object`);
34
+ const actual = Object.keys(data).sort(), wanted = [...keys].sort();
35
+ if (actual.length !== wanted.length || actual.some((k, i) => k !== wanted[i])) throw new Error(`${label} contains unsupported or missing fields`);
36
+ return data as Record<string, unknown>;
37
+ }
38
+ export function digest(value: unknown, label: string): string {
39
+ if (typeof value !== 'string' || !/^[a-f0-9]{64}$/.test(value)) throw new Error(`Invalid ${label} digest`);
40
+ return value;
41
+ }
42
+ export function nonempty(value: unknown, label: string): string {
43
+ if (typeof value !== 'string' || !value || value.trim() !== value) throw new Error(`Invalid ${label}`);
44
+ return value;
45
+ }
@@ -116,7 +116,7 @@ export const resolveTarget = (config: WorkflowConfig, networkName: string): Targ
116
116
  return target;
117
117
  };
118
118
 
119
- export const resolveAdmin = (target: TargetConfig, signerAddress: string): string => {
119
+ export const resolveAdmin = (target: { admin?: string }, signerAddress: string): string => {
120
120
  const admin = target.admin?.trim();
121
121
  if (!admin || admin.toLowerCase() === "deployer") {
122
122
  return getAddress(signerAddress);
@@ -0,0 +1,76 @@
1
+ import type { WorkflowValidationPort } from './validation';
2
+ import type { PendingUupsResolverPort } from "./pendingUupsBinding";
3
+ import type { PreparationSink, VerificationSink } from "./evidencePorts";
4
+ import type { TransactionPlannerPort } from "./transactionPlanner";
5
+ import type { Signer } from "ethers";
6
+ import type { TargetConfig } from "./config";
7
+ import type { ExistingDeploymentPolicies } from "./parameters";
8
+ import type { SimulationFork, WorkflowMode } from "./simulation";
9
+ import type { WorkflowState } from "./state";
10
+ import type { DeploymentRecorder } from "./deploymentRecords";
11
+ import type { ExternalCall } from "./external";
12
+ import type { WorkflowResultName } from "./resultPaths";
13
+
14
+ // Type-only: importing shared steps must never initialize a project Hardhat runtime.
15
+ export type WorkflowHre = typeof import("hardhat");
16
+
17
+ export interface LocalForkCapability {
18
+ provider: WorkflowHre["network"]["provider"];
19
+ impersonate(address: string): Promise<Signer>;
20
+ }
21
+
22
+ export interface WorkflowRuntime {
23
+ hre: WorkflowHre;
24
+ localFork?: LocalForkCapability;
25
+ }
26
+
27
+ export interface WorkflowReporterPort {
28
+ event(type: string, payload?: Record<string, unknown>): void;
29
+ result(name: WorkflowResultName, payload: Record<string, unknown>): void;
30
+ setSimulationCallerAddress?(address: string): void;
31
+ clearSimulationCallerAddress?(): void;
32
+ }
33
+
34
+ export interface ExecutionBindings {
35
+ readonly derivationSeed?: string;
36
+ recordOrAssertDerivedValue(key: string, value: string): void;
37
+ }
38
+
39
+ // Only the fields used by step algorithms; environment interpretation belongs
40
+ // to each launcher. A delivery target does not have to pass the legacy parser.
41
+ export type WorkflowTarget = Pick<TargetConfig,
42
+ "openzeppelin" | "finality" | "admin" | "create2" | "uups" | "multicall"
43
+ > & Record<string, unknown> & { id: string };
44
+ export type WorkflowConfiguration = Readonly<Record<string, unknown>>;
45
+
46
+ export interface WorkflowContext {
47
+ root: string;
48
+ taskId: string;
49
+ executionId: string;
50
+ taskDir: string;
51
+ targetId: string;
52
+ target: WorkflowTarget;
53
+ targetParams: Record<string, unknown>;
54
+ existingDeploymentPolicies: ExistingDeploymentPolicies;
55
+ releaseArtifactHash?: string;
56
+ config: WorkflowConfiguration;
57
+ runtime: WorkflowRuntime;
58
+ mode: WorkflowMode;
59
+ simulation: SimulationFork;
60
+ signer?: Signer;
61
+ signerAddress?: string;
62
+ configuredSimulationCaller?: boolean;
63
+ state: WorkflowState;
64
+ reporter: WorkflowReporterPort;
65
+ bindings?: ExecutionBindings;
66
+ preparations?: PreparationSink;
67
+ validation?: WorkflowValidationPort;
68
+ pendingUupsReuse?: PendingUupsResolverPort;
69
+ verification?: VerificationSink;
70
+ deploymentRecorder?: DeploymentRecorder;
71
+ executionPlanner?: TransactionPlannerPort;
72
+ externalCalls: ExternalCall[];
73
+ transactionIdentity?: { transactionStepId(stepId: string, role: "call", ordinal: number): string };
74
+ transactionObserver?: { record(observation: { transactionId: string; transactionHash: string }): void };
75
+ operatorReceipts: Array<{ transactionId: string; transactionHash: string }>;
76
+ }
@@ -0,0 +1,6 @@
1
+ /** ABI for querying deployed controlled Multicall authority; no project artifact required. */
2
+ export const CONTROLLED_MULTICALL_AUTHORITY_ABI = [
3
+ "function callers(address caller) view returns (bool)",
4
+ "function factoryCallers(address factory, address caller) view returns (bool)",
5
+ "function owner() view returns (address)",
6
+ ];
@@ -1,7 +1,8 @@
1
+ import { resolveWorkflowValue, type Create2FieldKind } from './validation';
1
2
  import type { Signer } from "ethers";
2
3
  import { getAddress, Interface, isAddress } from "ethers";
3
- import { resolveValue, WorkflowStep } from "./parameters";
4
- import type { WorkflowContext } from "../run";
4
+ import { WorkflowStep } from "./parameters";
5
+ import type { WorkflowContext } from "./context";
5
6
 
6
7
  const CONTROLLED_MULTICALL_INTERFACE = new Interface([
7
8
  "function aggregate3(tuple(address target,bool allowFailure,bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)",
@@ -163,13 +164,10 @@ export const sendPreparedControlledMulticallTransaction = async (
163
164
  const resolveObject = (
164
165
  context: WorkflowContext,
165
166
  value: unknown,
167
+ kind: Create2FieldKind,
166
168
  ): Record<string, unknown> => {
167
- const resolved = resolveValue(value || {}, {
168
- targetId: context.targetId,
169
- target: context.target,
170
- params: context.targetParams,
171
- state: context.state,
172
- });
169
+ const resolved = resolveWorkflowValue(context, value === undefined ? {} : value);
170
+ if (context.validation) return context.validation.create2Fields(resolved, kind);
173
171
  if (!resolved || typeof resolved !== "object" || Array.isArray(resolved)) return {};
174
172
  return resolved as Record<string, unknown>;
175
173
  };
@@ -205,10 +203,10 @@ export const resolveCreate2Options = (
205
203
  step: WorkflowStep,
206
204
  ): Create2Options | undefined => {
207
205
  const strategy = typeof step.strategy === "string" ? step.strategy : undefined;
208
- const stepCreate2 = resolveObject(context, step.create2);
209
- const targetCreate2 = resolveObject(context, context.target.create2);
210
- const targetUups = resolveObject(context, context.target.uups);
211
- const targetMulticall = resolveObject(context, context.target.multicall);
206
+ const stepCreate2 = resolveObject(context, step.create2, "step");
207
+ const targetCreate2 = resolveObject(context, context.target.create2, "target");
208
+ const targetUups = resolveObject(context, context.target.uups, "uups");
209
+ const targetMulticall = resolveObject(context, context.target.multicall, "multicall");
212
210
  if (strategy !== "create2" && Object.keys(stepCreate2).length === 0) return undefined;
213
211
 
214
212
  const rawScheme = stringField(targetCreate2, "scheme") || "evm";