gate-evm-tools 1.0.28 → 1.2.0

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 (742) hide show
  1. package/README.md +47 -18
  2. package/bin/cli.js +6 -0
  3. package/bin/delivery.cjs +52 -0
  4. package/bin/manifest-bootstrap.js +4 -15
  5. package/dist/commands/check.d.ts.map +1 -1
  6. package/dist/commands/check.js +26 -2
  7. package/dist/commands/check.js.map +1 -1
  8. package/dist/commands/plan/file-store.d.ts.map +1 -0
  9. package/dist/commands/plan/generate-deployment.d.ts +48 -0
  10. package/dist/commands/plan/generate-deployment.d.ts.map +1 -0
  11. package/dist/commands/plan/generate-deployment.js +211 -0
  12. package/dist/commands/plan/generate-deployment.js.map +1 -0
  13. package/dist/commands/plan/helpers.d.ts.map +1 -0
  14. package/dist/commands/plan/index.d.ts +3 -0
  15. package/dist/commands/plan/index.d.ts.map +1 -0
  16. package/dist/commands/plan/index.js +88 -0
  17. package/dist/commands/plan/index.js.map +1 -0
  18. package/dist/commands/sync.js +1 -1
  19. package/dist/commands/sync.js.map +1 -1
  20. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  21. package/dist/core/BytecodeChecker.js +27 -8
  22. package/dist/core/BytecodeChecker.js.map +1 -1
  23. package/dist/core/preparation/artifacts.d.ts +2 -0
  24. package/dist/core/preparation/artifacts.d.ts.map +1 -1
  25. package/dist/core/preparation/artifacts.js +9 -3
  26. package/dist/core/preparation/artifacts.js.map +1 -1
  27. package/dist/core/preparation/batch.d.ts +26 -0
  28. package/dist/core/preparation/batch.d.ts.map +1 -0
  29. package/dist/core/preparation/batch.js +72 -0
  30. package/dist/core/preparation/batch.js.map +1 -0
  31. package/dist/core/preparation/evm.d.ts +61 -6
  32. package/dist/core/preparation/evm.d.ts.map +1 -1
  33. package/dist/core/preparation/evm.js +122 -34
  34. package/dist/core/preparation/evm.js.map +1 -1
  35. package/dist/core/preparation/evmManifestSync.d.ts +68 -0
  36. package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
  37. package/dist/core/preparation/evmManifestSync.js +154 -0
  38. package/dist/core/preparation/evmManifestSync.js.map +1 -0
  39. package/dist/core/preparation/index.d.ts +40 -2
  40. package/dist/core/preparation/index.d.ts.map +1 -1
  41. package/dist/core/preparation/index.js +3 -3
  42. package/dist/core/preparation/index.js.map +1 -1
  43. package/dist/core/preparation/manifest.d.ts +17 -3
  44. package/dist/core/preparation/manifest.d.ts.map +1 -1
  45. package/dist/core/preparation/manifest.js +23 -28
  46. package/dist/core/preparation/manifest.js.map +1 -1
  47. package/dist/core/preparation/normalize.d.ts.map +1 -1
  48. package/dist/core/preparation/normalize.js +67 -20
  49. package/dist/core/preparation/normalize.js.map +1 -1
  50. package/dist/core/preparation/transparent.d.ts +23 -0
  51. package/dist/core/preparation/transparent.d.ts.map +1 -0
  52. package/dist/core/preparation/transparent.js +103 -0
  53. package/dist/core/preparation/transparent.js.map +1 -0
  54. package/dist/core/preparation/types.d.ts +54 -7
  55. package/dist/core/preparation/types.d.ts.map +1 -1
  56. package/dist/core/preparation/zksync.d.ts.map +1 -1
  57. package/dist/core/preparation/zksync.js +2 -0
  58. package/dist/core/preparation/zksync.js.map +1 -1
  59. package/dist/custody/credential.d.ts.map +1 -1
  60. package/dist/custody/credential.js +1 -6
  61. package/dist/custody/credential.js.map +1 -1
  62. package/dist/custody/hardhat-runtime.d.ts.map +1 -1
  63. package/dist/custody/hardhat-runtime.js +2 -0
  64. package/dist/custody/hardhat-runtime.js.map +1 -1
  65. package/dist/custody/hardhat.d.ts +1 -0
  66. package/dist/custody/hardhat.d.ts.map +1 -1
  67. package/dist/custody/hardhat.js +1 -0
  68. package/dist/custody/hardhat.js.map +1 -1
  69. package/dist/custody/index.d.ts +1 -0
  70. package/dist/custody/index.d.ts.map +1 -1
  71. package/dist/custody/index.js +1 -0
  72. package/dist/custody/index.js.map +1 -1
  73. package/dist/custody/provider-wait.d.ts +13 -0
  74. package/dist/custody/provider-wait.d.ts.map +1 -0
  75. package/dist/custody/provider-wait.js +78 -0
  76. package/dist/custody/provider-wait.js.map +1 -0
  77. package/dist/delivery/policy.d.ts +6 -0
  78. package/dist/delivery/policy.d.ts.map +1 -0
  79. package/dist/delivery/policy.js +24 -0
  80. package/dist/delivery/policy.js.map +1 -0
  81. package/dist/deployment-evm/index.d.ts +4 -0
  82. package/dist/deployment-evm/index.d.ts.map +1 -0
  83. package/dist/deployment-evm/index.js +3 -0
  84. package/dist/deployment-evm/index.js.map +1 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +9 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/sync/index.d.ts +15 -0
  89. package/dist/sync/index.d.ts.map +1 -1
  90. package/dist/sync/index.js +13 -0
  91. package/dist/sync/index.js.map +1 -1
  92. package/dist/types.d.ts +3 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/workflow/index.d.ts +10 -2
  95. package/dist/workflow/index.d.ts.map +1 -1
  96. package/dist/workflow/index.js +6 -0
  97. package/dist/workflow/index.js.map +1 -1
  98. package/dist-cjs/core/BytecodeChecker.js +526 -0
  99. package/dist-cjs/core/BytecodeChecker.js.map +1 -0
  100. package/dist-cjs/core/legacyProxyArtifact.js +42 -0
  101. package/dist-cjs/core/legacyProxyArtifact.js.map +1 -0
  102. package/dist-cjs/core/preparation/artifacts.js +11 -4
  103. package/dist-cjs/core/preparation/artifacts.js.map +1 -1
  104. package/dist-cjs/core/preparation/batch.js +76 -0
  105. package/dist-cjs/core/preparation/batch.js.map +1 -0
  106. package/dist-cjs/core/preparation/evm.js +128 -37
  107. package/dist-cjs/core/preparation/evm.js.map +1 -1
  108. package/dist-cjs/core/preparation/evmManifestSync.js +163 -0
  109. package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -0
  110. package/dist-cjs/core/preparation/index.js +3 -3
  111. package/dist-cjs/core/preparation/index.js.map +1 -1
  112. package/dist-cjs/core/preparation/manifest.js +25 -30
  113. package/dist-cjs/core/preparation/manifest.js.map +1 -1
  114. package/dist-cjs/core/preparation/normalize.js +67 -20
  115. package/dist-cjs/core/preparation/normalize.js.map +1 -1
  116. package/dist-cjs/core/preparation/transparent.js +110 -0
  117. package/dist-cjs/core/preparation/transparent.js.map +1 -0
  118. package/dist-cjs/core/preparation/zksync.js +2 -0
  119. package/dist-cjs/core/preparation/zksync.js.map +1 -1
  120. package/dist-cjs/custody/credential.js +1 -6
  121. package/dist-cjs/custody/credential.js.map +1 -1
  122. package/dist-cjs/custody/hardhat-runtime.js +2 -0
  123. package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
  124. package/dist-cjs/custody/hardhat.js +3 -1
  125. package/dist-cjs/custody/hardhat.js.map +1 -1
  126. package/dist-cjs/custody/index.js +3 -1
  127. package/dist-cjs/custody/index.js.map +1 -1
  128. package/dist-cjs/custody/provider-wait.js +81 -0
  129. package/dist-cjs/custody/provider-wait.js.map +1 -0
  130. package/dist-cjs/delivery/policy.js +29 -0
  131. package/dist-cjs/delivery/policy.js.map +1 -0
  132. package/dist-cjs/deployment-evm/index.js +10 -0
  133. package/dist-cjs/deployment-evm/index.js.map +1 -0
  134. package/dist-cjs/sync/index.js +13 -0
  135. package/dist-cjs/sync/index.js.map +1 -1
  136. package/dist-cjs/workflow/index.js +22 -1
  137. package/dist-cjs/workflow/index.js.map +1 -1
  138. package/dist-runtime/config/hardhatAdapters.js +2 -1
  139. package/dist-runtime/config/hardhatAdapters.js.map +1 -1
  140. package/dist-runtime/config/openzeppelin.d.ts +2 -1
  141. package/dist-runtime/config/openzeppelin.js +2 -19
  142. package/dist-runtime/config/openzeppelin.js.map +1 -1
  143. package/dist-runtime/delivery/abi.d.ts +14 -0
  144. package/dist-runtime/delivery/abi.js +161 -0
  145. package/dist-runtime/delivery/abi.js.map +1 -0
  146. package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
  147. package/dist-runtime/delivery/aggregate-bootstrap.js +42 -0
  148. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
  149. package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
  150. package/dist-runtime/delivery/aggregate-channel.js +159 -0
  151. package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
  152. package/dist-runtime/delivery/aggregate-diagnostics.d.ts +14 -0
  153. package/dist-runtime/delivery/aggregate-diagnostics.js +73 -0
  154. package/dist-runtime/delivery/aggregate-diagnostics.js.map +1 -0
  155. package/dist-runtime/delivery/aggregate-inputs.d.ts +172 -0
  156. package/dist-runtime/delivery/aggregate-inputs.js +57 -0
  157. package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
  158. package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
  159. package/dist-runtime/delivery/aggregate-source.js +87 -0
  160. package/dist-runtime/delivery/aggregate-source.js.map +1 -0
  161. package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
  162. package/dist-runtime/delivery/aggregate-worker.js +199 -0
  163. package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
  164. package/dist-runtime/delivery/aggregate.d.ts +51 -0
  165. package/dist-runtime/delivery/aggregate.js +190 -0
  166. package/dist-runtime/delivery/aggregate.js.map +1 -0
  167. package/dist-runtime/delivery/bindings.d.ts +21 -0
  168. package/dist-runtime/delivery/bindings.js +53 -0
  169. package/dist-runtime/delivery/bindings.js.map +1 -0
  170. package/dist-runtime/delivery/business-extension.d.ts +10 -0
  171. package/dist-runtime/delivery/business-extension.js +38 -0
  172. package/dist-runtime/delivery/business-extension.js.map +1 -0
  173. package/dist-runtime/delivery/calldata-archive.d.ts +18 -0
  174. package/dist-runtime/delivery/calldata-archive.js +31 -0
  175. package/dist-runtime/delivery/calldata-archive.js.map +1 -0
  176. package/dist-runtime/delivery/calldata-details.d.ts +47 -0
  177. package/dist-runtime/delivery/calldata-details.js +94 -0
  178. package/dist-runtime/delivery/calldata-details.js.map +1 -0
  179. package/dist-runtime/delivery/calldata-format.d.ts +4 -0
  180. package/dist-runtime/delivery/calldata-format.js +17 -0
  181. package/dist-runtime/delivery/calldata-format.js.map +1 -0
  182. package/dist-runtime/delivery/calldata-preparations.d.ts +13 -0
  183. package/dist-runtime/delivery/calldata-preparations.js +85 -0
  184. package/dist-runtime/delivery/calldata-preparations.js.map +1 -0
  185. package/dist-runtime/delivery/calldata-review.d.ts +44 -0
  186. package/dist-runtime/delivery/calldata-review.js +131 -0
  187. package/dist-runtime/delivery/calldata-review.js.map +1 -0
  188. package/dist-runtime/delivery/check-code.d.ts +19 -0
  189. package/dist-runtime/delivery/check-code.js +63 -0
  190. package/dist-runtime/delivery/check-code.js.map +1 -0
  191. package/dist-runtime/delivery/closure-format.d.ts +77 -0
  192. package/dist-runtime/delivery/closure-format.js +225 -0
  193. package/dist-runtime/delivery/closure-format.js.map +1 -0
  194. package/dist-runtime/delivery/codec-pin.d.ts +2 -0
  195. package/dist-runtime/delivery/codec-pin.js +7 -0
  196. package/dist-runtime/delivery/codec-pin.js.map +1 -0
  197. package/dist-runtime/delivery/codec.d.ts +19 -0
  198. package/dist-runtime/delivery/codec.js +73 -0
  199. package/dist-runtime/delivery/codec.js.map +1 -0
  200. package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
  201. package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
  202. package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
  203. package/dist-runtime/delivery/compiler-files.d.ts +40 -0
  204. package/dist-runtime/delivery/compiler-files.js +222 -0
  205. package/dist-runtime/delivery/compiler-files.js.map +1 -0
  206. package/dist-runtime/delivery/compiler-io.d.ts +2 -0
  207. package/dist-runtime/delivery/compiler-io.js +13 -0
  208. package/dist-runtime/delivery/compiler-io.js.map +1 -0
  209. package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
  210. package/dist-runtime/delivery/compiler-pins.js +147 -0
  211. package/dist-runtime/delivery/compiler-pins.js.map +1 -0
  212. package/dist-runtime/delivery/compiler.d.ts +188 -0
  213. package/dist-runtime/delivery/compiler.js +851 -0
  214. package/dist-runtime/delivery/compiler.js.map +1 -0
  215. package/dist-runtime/delivery/config.d.ts +48 -0
  216. package/dist-runtime/delivery/config.js +124 -0
  217. package/dist-runtime/delivery/config.js.map +1 -0
  218. package/dist-runtime/delivery/configuration-definition.d.ts +31 -0
  219. package/dist-runtime/delivery/configuration-definition.js +343 -0
  220. package/dist-runtime/delivery/configuration-definition.js.map +1 -0
  221. package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
  222. package/dist-runtime/delivery/configuration-hre.js +198 -0
  223. package/dist-runtime/delivery/configuration-hre.js.map +1 -0
  224. package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
  225. package/dist-runtime/delivery/configuration-runtime.js +248 -0
  226. package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
  227. package/dist-runtime/delivery/configuration.d.ts +35 -0
  228. package/dist-runtime/delivery/configuration.js +86 -0
  229. package/dist-runtime/delivery/configuration.js.map +1 -0
  230. package/dist-runtime/delivery/contract-source.d.ts +14 -0
  231. package/dist-runtime/delivery/contract-source.js +138 -0
  232. package/dist-runtime/delivery/contract-source.js.map +1 -0
  233. package/dist-runtime/delivery/create2.d.ts +3 -0
  234. package/dist-runtime/delivery/create2.js +48 -0
  235. package/dist-runtime/delivery/create2.js.map +1 -0
  236. package/dist-runtime/delivery/custom-closure.d.ts +27 -0
  237. package/dist-runtime/delivery/custom-closure.js +818 -0
  238. package/dist-runtime/delivery/custom-closure.js.map +1 -0
  239. package/dist-runtime/delivery/custom-format.d.ts +35 -0
  240. package/dist-runtime/delivery/custom-format.js +410 -0
  241. package/dist-runtime/delivery/custom-format.js.map +1 -0
  242. package/dist-runtime/delivery/custom.d.ts +32 -0
  243. package/dist-runtime/delivery/custom.js +158 -0
  244. package/dist-runtime/delivery/custom.js.map +1 -0
  245. package/dist-runtime/delivery/data.d.ts +7 -0
  246. package/dist-runtime/delivery/data.js +86 -0
  247. package/dist-runtime/delivery/data.js.map +1 -0
  248. package/dist-runtime/delivery/development.d.ts +92 -0
  249. package/dist-runtime/delivery/development.js +406 -0
  250. package/dist-runtime/delivery/development.js.map +1 -0
  251. package/dist-runtime/delivery/engine.d.ts +9 -0
  252. package/dist-runtime/delivery/engine.js +23 -0
  253. package/dist-runtime/delivery/engine.js.map +1 -0
  254. package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
  255. package/dist-runtime/delivery/eoa-observation.js +145 -0
  256. package/dist-runtime/delivery/eoa-observation.js.map +1 -0
  257. package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
  258. package/dist-runtime/delivery/eoa-signed.js +74 -0
  259. package/dist-runtime/delivery/eoa-signed.js.map +1 -0
  260. package/dist-runtime/delivery/eoa.d.ts +82 -0
  261. package/dist-runtime/delivery/eoa.js +274 -0
  262. package/dist-runtime/delivery/eoa.js.map +1 -0
  263. package/dist-runtime/delivery/execution-db.d.ts +20 -0
  264. package/dist-runtime/delivery/execution-db.js +153 -0
  265. package/dist-runtime/delivery/execution-db.js.map +1 -0
  266. package/dist-runtime/delivery/execution-files.d.ts +9 -0
  267. package/dist-runtime/delivery/execution-files.js +138 -0
  268. package/dist-runtime/delivery/execution-files.js.map +1 -0
  269. package/dist-runtime/delivery/execution-identity.d.ts +15 -0
  270. package/dist-runtime/delivery/execution-identity.js +33 -0
  271. package/dist-runtime/delivery/execution-identity.js.map +1 -0
  272. package/dist-runtime/delivery/execution-model.d.ts +56 -0
  273. package/dist-runtime/delivery/execution-model.js +66 -0
  274. package/dist-runtime/delivery/execution-model.js.map +1 -0
  275. package/dist-runtime/delivery/execution-store.d.ts +48 -0
  276. package/dist-runtime/delivery/execution-store.js +361 -0
  277. package/dist-runtime/delivery/execution-store.js.map +1 -0
  278. package/dist-runtime/delivery/existing-code.d.ts +37 -0
  279. package/dist-runtime/delivery/existing-code.js +83 -0
  280. package/dist-runtime/delivery/existing-code.js.map +1 -0
  281. package/dist-runtime/delivery/export.d.ts +51 -0
  282. package/dist-runtime/delivery/export.js +69 -0
  283. package/dist-runtime/delivery/export.js.map +1 -0
  284. package/dist-runtime/delivery/forkAudit.d.ts +119 -0
  285. package/dist-runtime/delivery/forkAudit.js +473 -0
  286. package/dist-runtime/delivery/forkAudit.js.map +1 -0
  287. package/dist-runtime/delivery/hardhat.d.ts +3 -0
  288. package/dist-runtime/delivery/hardhat.js +45 -0
  289. package/dist-runtime/delivery/hardhat.js.map +1 -0
  290. package/dist-runtime/delivery/history-registration.d.ts +2 -0
  291. package/dist-runtime/delivery/history-registration.js +17 -0
  292. package/dist-runtime/delivery/history-registration.js.map +1 -0
  293. package/dist-runtime/delivery/identities.d.ts +22 -0
  294. package/dist-runtime/delivery/identities.js +97 -0
  295. package/dist-runtime/delivery/identities.js.map +1 -0
  296. package/dist-runtime/delivery/input-files.d.ts +5 -0
  297. package/dist-runtime/delivery/input-files.js +70 -0
  298. package/dist-runtime/delivery/input-files.js.map +1 -0
  299. package/dist-runtime/delivery/inputs.d.ts +62 -0
  300. package/dist-runtime/delivery/inputs.js +194 -0
  301. package/dist-runtime/delivery/inputs.js.map +1 -0
  302. package/dist-runtime/delivery/journal.d.ts +35 -0
  303. package/dist-runtime/delivery/journal.js +278 -0
  304. package/dist-runtime/delivery/journal.js.map +1 -0
  305. package/dist-runtime/delivery/manifest.d.ts +14 -0
  306. package/dist-runtime/delivery/manifest.js +68 -0
  307. package/dist-runtime/delivery/manifest.js.map +1 -0
  308. package/dist-runtime/delivery/materialization.d.ts +20 -0
  309. package/dist-runtime/delivery/materialization.js +138 -0
  310. package/dist-runtime/delivery/materialization.js.map +1 -0
  311. package/dist-runtime/delivery/observations.d.ts +31 -0
  312. package/dist-runtime/delivery/observations.js +38 -0
  313. package/dist-runtime/delivery/observations.js.map +1 -0
  314. package/dist-runtime/delivery/parameter-defaults.d.ts +10 -0
  315. package/dist-runtime/delivery/parameter-defaults.js +86 -0
  316. package/dist-runtime/delivery/parameter-defaults.js.map +1 -0
  317. package/dist-runtime/delivery/parameters.d.ts +55 -0
  318. package/dist-runtime/delivery/parameters.js +279 -0
  319. package/dist-runtime/delivery/parameters.js.map +1 -0
  320. package/dist-runtime/delivery/pending.d.ts +70 -0
  321. package/dist-runtime/delivery/pending.js +99 -0
  322. package/dist-runtime/delivery/pending.js.map +1 -0
  323. package/dist-runtime/delivery/plan.d.ts +50 -0
  324. package/dist-runtime/delivery/plan.js +209 -0
  325. package/dist-runtime/delivery/plan.js.map +1 -0
  326. package/dist-runtime/delivery/planning.d.ts +84 -0
  327. package/dist-runtime/delivery/planning.js +318 -0
  328. package/dist-runtime/delivery/planning.js.map +1 -0
  329. package/dist-runtime/delivery/policy.d.ts +4 -0
  330. package/dist-runtime/delivery/policy.js +9 -0
  331. package/dist-runtime/delivery/policy.js.map +1 -0
  332. package/dist-runtime/delivery/preparation.d.ts +6 -0
  333. package/dist-runtime/delivery/preparation.js +178 -0
  334. package/dist-runtime/delivery/preparation.js.map +1 -0
  335. package/dist-runtime/delivery/production-environment.d.ts +2 -0
  336. package/dist-runtime/delivery/production-environment.js +13 -0
  337. package/dist-runtime/delivery/production-environment.js.map +1 -0
  338. package/dist-runtime/delivery/production-finalization.d.ts +86 -0
  339. package/dist-runtime/delivery/production-finalization.js +292 -0
  340. package/dist-runtime/delivery/production-finalization.js.map +1 -0
  341. package/dist-runtime/delivery/production-intent.d.ts +2 -0
  342. package/dist-runtime/delivery/production-intent.js +16 -0
  343. package/dist-runtime/delivery/production-intent.js.map +1 -0
  344. package/dist-runtime/delivery/production.d.ts +582 -0
  345. package/dist-runtime/delivery/production.js +445 -0
  346. package/dist-runtime/delivery/production.js.map +1 -0
  347. package/dist-runtime/delivery/project-files.d.ts +8 -0
  348. package/dist-runtime/delivery/project-files.js +87 -0
  349. package/dist-runtime/delivery/project-files.js.map +1 -0
  350. package/dist-runtime/delivery/project-rpc.d.ts +19 -0
  351. package/dist-runtime/delivery/project-rpc.js +138 -0
  352. package/dist-runtime/delivery/project-rpc.js.map +1 -0
  353. package/dist-runtime/delivery/project.d.ts +17 -0
  354. package/dist-runtime/delivery/project.js +170 -0
  355. package/dist-runtime/delivery/project.js.map +1 -0
  356. package/dist-runtime/delivery/protocol.d.ts +49 -0
  357. package/dist-runtime/delivery/protocol.js +112 -0
  358. package/dist-runtime/delivery/protocol.js.map +1 -0
  359. package/dist-runtime/delivery/public-calldata.d.ts +25 -0
  360. package/dist-runtime/delivery/public-calldata.js +97 -0
  361. package/dist-runtime/delivery/public-calldata.js.map +1 -0
  362. package/dist-runtime/delivery/references.d.ts +19 -0
  363. package/dist-runtime/delivery/references.js +84 -0
  364. package/dist-runtime/delivery/references.js.map +1 -0
  365. package/dist-runtime/delivery/release-graph.d.ts +97 -0
  366. package/dist-runtime/delivery/release-graph.js +139 -0
  367. package/dist-runtime/delivery/release-graph.js.map +1 -0
  368. package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
  369. package/dist-runtime/delivery/release-history-capture.js +76 -0
  370. package/dist-runtime/delivery/release-history-capture.js.map +1 -0
  371. package/dist-runtime/delivery/release-history.d.ts +43 -0
  372. package/dist-runtime/delivery/release-history.js +322 -0
  373. package/dist-runtime/delivery/release-history.js.map +1 -0
  374. package/dist-runtime/delivery/release-inputs.d.ts +33 -0
  375. package/dist-runtime/delivery/release-inputs.js +129 -0
  376. package/dist-runtime/delivery/release-inputs.js.map +1 -0
  377. package/dist-runtime/delivery/release.d.ts +196 -0
  378. package/dist-runtime/delivery/release.js +261 -0
  379. package/dist-runtime/delivery/release.js.map +1 -0
  380. package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
  381. package/dist-runtime/delivery/safe-manifest.js +13 -0
  382. package/dist-runtime/delivery/safe-manifest.js.map +1 -0
  383. package/dist-runtime/delivery/safe-observation.d.ts +30 -0
  384. package/dist-runtime/delivery/safe-observation.js +487 -0
  385. package/dist-runtime/delivery/safe-observation.js.map +1 -0
  386. package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
  387. package/dist-runtime/delivery/safe-prepare.js +81 -0
  388. package/dist-runtime/delivery/safe-prepare.js.map +1 -0
  389. package/dist-runtime/delivery/safe.d.ts +92 -0
  390. package/dist-runtime/delivery/safe.js +254 -0
  391. package/dist-runtime/delivery/safe.js.map +1 -0
  392. package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
  393. package/dist-runtime/delivery/same-fork-baseline.js +21 -0
  394. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
  395. package/dist-runtime/delivery/setup.d.ts +31 -0
  396. package/dist-runtime/delivery/setup.js +230 -0
  397. package/dist-runtime/delivery/setup.js.map +1 -0
  398. package/dist-runtime/delivery/source.d.ts +42 -0
  399. package/dist-runtime/delivery/source.js +139 -0
  400. package/dist-runtime/delivery/source.js.map +1 -0
  401. package/dist-runtime/delivery/target-fields.d.ts +2 -0
  402. package/dist-runtime/delivery/target-fields.js +11 -0
  403. package/dist-runtime/delivery/target-fields.js.map +1 -0
  404. package/dist-runtime/delivery/task-identity.d.ts +23 -0
  405. package/dist-runtime/delivery/task-identity.js +109 -0
  406. package/dist-runtime/delivery/task-identity.js.map +1 -0
  407. package/dist-runtime/delivery/toolchain.d.ts +3 -0
  408. package/dist-runtime/delivery/toolchain.js +52 -0
  409. package/dist-runtime/delivery/toolchain.js.map +1 -0
  410. package/dist-runtime/delivery/validation.d.ts +9 -0
  411. package/dist-runtime/delivery/validation.js +155 -0
  412. package/dist-runtime/delivery/validation.js.map +1 -0
  413. package/dist-runtime/delivery/verification.d.ts +16 -0
  414. package/dist-runtime/delivery/verification.js +65 -0
  415. package/dist-runtime/delivery/verification.js.map +1 -0
  416. package/dist-runtime/migrate.js +1 -0
  417. package/dist-runtime/migrate.js.map +1 -1
  418. package/dist-runtime/miner/binary.d.ts +2 -0
  419. package/dist-runtime/miner/binary.js +54 -0
  420. package/dist-runtime/miner/binary.js.map +1 -0
  421. package/dist-runtime/miner/cli.d.ts +1 -0
  422. package/dist-runtime/miner/cli.js +131 -0
  423. package/dist-runtime/miner/cli.js.map +1 -0
  424. package/dist-runtime/miner/index.d.ts +5 -0
  425. package/dist-runtime/miner/index.js +13 -0
  426. package/dist-runtime/miner/index.js.map +1 -0
  427. package/dist-runtime/miner/request.d.ts +7 -0
  428. package/dist-runtime/miner/request.js +73 -0
  429. package/dist-runtime/miner/request.js.map +1 -0
  430. package/dist-runtime/miner/runner.d.ts +2 -0
  431. package/dist-runtime/miner/runner.js +131 -0
  432. package/dist-runtime/miner/runner.js.map +1 -0
  433. package/dist-runtime/miner/types.d.ts +89 -0
  434. package/dist-runtime/miner/types.js +3 -0
  435. package/dist-runtime/miner/types.js.map +1 -0
  436. package/dist-runtime/miner/verify.d.ts +2 -0
  437. package/dist-runtime/miner/verify.js +75 -0
  438. package/dist-runtime/miner/verify.js.map +1 -0
  439. package/dist-runtime/runtime-identity.json +2 -2
  440. package/dist-runtime/vendor/plan-codec/index.cjs +897 -0
  441. package/dist-runtime/vendor/plan-codec/index.d.cts +38 -0
  442. package/dist-runtime/vendor/plan-codec/provenance.json +25 -0
  443. package/dist-runtime/workflow/engine.d.ts +14 -0
  444. package/dist-runtime/workflow/engine.js +160 -0
  445. package/dist-runtime/workflow/engine.js.map +1 -0
  446. package/dist-runtime/workflow/lib/authority.d.ts +6 -3
  447. package/dist-runtime/workflow/lib/authority.js.map +1 -1
  448. package/dist-runtime/workflow/lib/calls.d.ts +1 -1
  449. package/dist-runtime/workflow/lib/calls.js +44 -34
  450. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  451. package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
  452. package/dist-runtime/workflow/lib/canonicalData.js +68 -0
  453. package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
  454. package/dist-runtime/workflow/lib/checkCodeRunner.js +7 -4
  455. package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -1
  456. package/dist-runtime/workflow/lib/config.d.ts +3 -1
  457. package/dist-runtime/workflow/lib/config.js.map +1 -1
  458. package/dist-runtime/workflow/lib/context.d.ts +77 -0
  459. package/dist-runtime/workflow/lib/context.js +3 -0
  460. package/dist-runtime/workflow/lib/context.js.map +1 -0
  461. package/dist-runtime/workflow/lib/create2.d.ts +5 -27
  462. package/dist-runtime/workflow/lib/create2.js +11 -79
  463. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  464. package/dist-runtime/workflow/lib/deploymentInfo.d.ts +2 -0
  465. package/dist-runtime/workflow/lib/deploymentInfo.js +6 -0
  466. package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -1
  467. package/dist-runtime/workflow/lib/deploymentRecords.d.ts +2 -0
  468. package/dist-runtime/workflow/lib/deploymentRecords.js +1 -1
  469. package/dist-runtime/workflow/lib/deploymentRecords.js.map +1 -1
  470. package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
  471. package/dist-runtime/workflow/lib/deployments.js +5 -13
  472. package/dist-runtime/workflow/lib/deployments.js.map +1 -1
  473. package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
  474. package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
  475. package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
  476. package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
  477. package/dist-runtime/workflow/lib/executionPlan.js +15 -210
  478. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
  479. package/dist-runtime/workflow/lib/externalExecutionScanner.js +2 -1
  480. package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -1
  481. package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
  482. package/dist-runtime/workflow/lib/gateTool.js +22 -12
  483. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  484. package/dist-runtime/workflow/lib/gateToolSync.d.ts +4 -1
  485. package/dist-runtime/workflow/lib/gateToolSync.js +8 -2
  486. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  487. package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
  488. package/dist-runtime/workflow/lib/operationNames.js +34 -0
  489. package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
  490. package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
  491. package/dist-runtime/workflow/lib/parameters.js +11 -22
  492. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  493. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
  494. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
  495. package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
  496. package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
  497. package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
  498. package/dist-runtime/workflow/lib/plan.d.ts +55 -0
  499. package/dist-runtime/workflow/lib/plan.js +324 -0
  500. package/dist-runtime/workflow/lib/plan.js.map +1 -0
  501. package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
  502. package/dist-runtime/workflow/lib/planCli.js +279 -0
  503. package/dist-runtime/workflow/lib/planCli.js.map +1 -0
  504. package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
  505. package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
  506. package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
  507. package/dist-runtime/workflow/lib/proxy.d.ts +4 -2
  508. package/dist-runtime/workflow/lib/proxy.js +3 -4
  509. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  510. package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
  511. package/dist-runtime/workflow/lib/runtime.js +48 -0
  512. package/dist-runtime/workflow/lib/runtime.js.map +1 -0
  513. package/dist-runtime/workflow/lib/signer.d.ts +3 -2
  514. package/dist-runtime/workflow/lib/signer.js +18 -18
  515. package/dist-runtime/workflow/lib/signer.js.map +1 -1
  516. package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
  517. package/dist-runtime/workflow/lib/simulation.js +39 -31
  518. package/dist-runtime/workflow/lib/simulation.js.map +1 -1
  519. package/dist-runtime/workflow/lib/state.js +3 -3
  520. package/dist-runtime/workflow/lib/state.js.map +1 -1
  521. package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
  522. package/dist-runtime/workflow/lib/staticValidation.js +54 -10
  523. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
  524. package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
  525. package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
  526. package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
  527. package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
  528. package/dist-runtime/workflow/lib/typedValue.js +76 -0
  529. package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
  530. package/dist-runtime/workflow/lib/validation.d.ts +23 -0
  531. package/dist-runtime/workflow/lib/validation.js +15 -0
  532. package/dist-runtime/workflow/lib/validation.js.map +1 -0
  533. package/dist-runtime/workflow/planAdd.d.ts +1 -0
  534. package/dist-runtime/workflow/planAdd.js +11 -0
  535. package/dist-runtime/workflow/planAdd.js.map +1 -0
  536. package/dist-runtime/workflow/planRead.d.ts +1 -0
  537. package/dist-runtime/workflow/planRead.js +11 -0
  538. package/dist-runtime/workflow/planRead.js.map +1 -0
  539. package/dist-runtime/workflow/planStatus.d.ts +1 -0
  540. package/dist-runtime/workflow/planStatus.js +11 -0
  541. package/dist-runtime/workflow/planStatus.js.map +1 -0
  542. package/dist-runtime/workflow/planWrite.d.ts +1 -0
  543. package/dist-runtime/workflow/planWrite.js +11 -0
  544. package/dist-runtime/workflow/planWrite.js.map +1 -0
  545. package/dist-runtime/workflow/run.d.ts +1 -40
  546. package/dist-runtime/workflow/run.js +69 -139
  547. package/dist-runtime/workflow/run.js.map +1 -1
  548. package/dist-runtime/workflow/staticValidate.js +8 -3
  549. package/dist-runtime/workflow/staticValidate.js.map +1 -1
  550. package/dist-runtime/workflow/steps/call.d.ts +1 -1
  551. package/dist-runtime/workflow/steps/check.d.ts +1 -1
  552. package/dist-runtime/workflow/steps/custom.d.ts +1 -1
  553. package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
  554. package/dist-runtime/workflow/steps/deploy.js +110 -55
  555. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  556. package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
  557. package/dist-runtime/workflow/steps/upgrade.js +84 -49
  558. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  559. package/dist-runtime/workflow/steps/view.d.ts +1 -1
  560. package/docs/compiler-qualification.md +38 -0
  561. package/docs/configuration-runtime-observation.md +29 -0
  562. package/docs/create2-miner.md +100 -0
  563. package/docs/delivery-aggregate.md +29 -0
  564. package/docs/delivery-calldata.md +27 -0
  565. package/docs/delivery-custom-input-closure.md +51 -0
  566. package/docs/delivery-development.md +38 -0
  567. package/docs/delivery-eoa.md +46 -0
  568. package/docs/delivery-evm-manifest.md +20 -0
  569. package/docs/delivery-execution-store.md +33 -0
  570. package/docs/delivery-inputs.md +95 -0
  571. package/docs/delivery-parameters.md +65 -0
  572. package/docs/delivery-planning.md +140 -0
  573. package/docs/delivery-release.md +119 -0
  574. package/docs/delivery-safe.md +75 -0
  575. package/docs/delivery-setup.md +198 -0
  576. package/docs/delivery-source.md +67 -0
  577. package/docs/direct-package-acceptance.md +2 -0
  578. package/docs/openzeppelin-acceptance.md +86 -0
  579. package/docs/openzeppelin-baseline.json +27 -0
  580. package/docs/openzeppelin-integration.md +115 -0
  581. package/docs/plans/2026-10-28-openzeppelin-toolkit-consolidation.md +396 -0
  582. package/docs/plans/2026-11-02-transparent-proxy-delivery.md +78 -0
  583. package/docs/superpowers/plans/2026-08-17-custody-hardhat-signers.md +1 -1
  584. package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
  585. package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
  586. package/docs/workflow-reference.md +12 -4
  587. package/docs/workflow-runtime.md +6 -0
  588. package/package.json +148 -10
  589. package/resources/create2/LICENSE +21 -0
  590. package/resources/create2/README.md +9 -0
  591. package/resources/create2/darwin-arm64/smartflow_miner +0 -0
  592. package/resources/create2/darwin-x64/smartflow_miner +0 -0
  593. package/resources/create2/manifest.json +27 -0
  594. package/runtime/config/hardhatAdapters.ts +2 -1
  595. package/runtime/config/openzeppelin.ts +3 -21
  596. package/runtime/delivery/abi.ts +225 -0
  597. package/runtime/delivery/aggregate-bootstrap.ts +31 -0
  598. package/runtime/delivery/aggregate-channel.ts +88 -0
  599. package/runtime/delivery/aggregate-diagnostics.ts +63 -0
  600. package/runtime/delivery/aggregate-inputs.ts +39 -0
  601. package/runtime/delivery/aggregate-source.ts +57 -0
  602. package/runtime/delivery/aggregate-worker.ts +143 -0
  603. package/runtime/delivery/aggregate.ts +139 -0
  604. package/runtime/delivery/bindings.ts +37 -0
  605. package/runtime/delivery/business-extension.ts +33 -0
  606. package/runtime/delivery/calldata-archive.ts +25 -0
  607. package/runtime/delivery/calldata-details.ts +90 -0
  608. package/runtime/delivery/calldata-format.ts +14 -0
  609. package/runtime/delivery/calldata-preparations.ts +76 -0
  610. package/runtime/delivery/calldata-review.ts +126 -0
  611. package/runtime/delivery/check-code.ts +38 -0
  612. package/runtime/delivery/closure-format.ts +350 -0
  613. package/runtime/delivery/codec-pin.ts +3 -0
  614. package/runtime/delivery/codec.ts +50 -0
  615. package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
  616. package/runtime/delivery/compiler-files.ts +181 -0
  617. package/runtime/delivery/compiler-io.ts +10 -0
  618. package/runtime/delivery/compiler-pins.ts +143 -0
  619. package/runtime/delivery/compiler.ts +701 -0
  620. package/runtime/delivery/config.ts +116 -0
  621. package/runtime/delivery/configuration-definition.ts +160 -0
  622. package/runtime/delivery/configuration-hre.ts +130 -0
  623. package/runtime/delivery/configuration-runtime.ts +163 -0
  624. package/runtime/delivery/configuration.ts +67 -0
  625. package/runtime/delivery/contract-source.ts +112 -0
  626. package/runtime/delivery/create2.ts +57 -0
  627. package/runtime/delivery/custom-closure.ts +993 -0
  628. package/runtime/delivery/custom-format.ts +479 -0
  629. package/runtime/delivery/custom.ts +219 -0
  630. package/runtime/delivery/data.ts +94 -0
  631. package/runtime/delivery/development.ts +264 -0
  632. package/runtime/delivery/engine.ts +29 -0
  633. package/runtime/delivery/eoa-observation.ts +106 -0
  634. package/runtime/delivery/eoa-signed.ts +55 -0
  635. package/runtime/delivery/eoa.ts +288 -0
  636. package/runtime/delivery/execution-db.ts +131 -0
  637. package/runtime/delivery/execution-files.ts +135 -0
  638. package/runtime/delivery/execution-identity.ts +32 -0
  639. package/runtime/delivery/execution-model.ts +102 -0
  640. package/runtime/delivery/execution-store.ts +411 -0
  641. package/runtime/delivery/existing-code.ts +45 -0
  642. package/runtime/delivery/export.ts +99 -0
  643. package/runtime/delivery/forkAudit.ts +620 -0
  644. package/runtime/delivery/hardhat.ts +38 -0
  645. package/runtime/delivery/history-registration.ts +10 -0
  646. package/runtime/delivery/identities.ts +132 -0
  647. package/runtime/delivery/input-files.ts +46 -0
  648. package/runtime/delivery/inputs.ts +204 -0
  649. package/runtime/delivery/journal.ts +205 -0
  650. package/runtime/delivery/manifest.ts +54 -0
  651. package/runtime/delivery/materialization.ts +53 -0
  652. package/runtime/delivery/observations.ts +60 -0
  653. package/runtime/delivery/parameter-defaults.ts +75 -0
  654. package/runtime/delivery/parameters.ts +367 -0
  655. package/runtime/delivery/pending.ts +98 -0
  656. package/runtime/delivery/plan.ts +337 -0
  657. package/runtime/delivery/planning.ts +411 -0
  658. package/runtime/delivery/policy.ts +9 -0
  659. package/runtime/delivery/preparation.ts +240 -0
  660. package/runtime/delivery/production-environment.ts +7 -0
  661. package/runtime/delivery/production-finalization.ts +181 -0
  662. package/runtime/delivery/production-intent.ts +14 -0
  663. package/runtime/delivery/production.ts +415 -0
  664. package/runtime/delivery/project-files.ts +63 -0
  665. package/runtime/delivery/project-rpc.ts +116 -0
  666. package/runtime/delivery/project.ts +129 -0
  667. package/runtime/delivery/protocol.ts +94 -0
  668. package/runtime/delivery/public-calldata.ts +74 -0
  669. package/runtime/delivery/references.ts +106 -0
  670. package/runtime/delivery/release-graph.ts +79 -0
  671. package/runtime/delivery/release-history-capture.ts +32 -0
  672. package/runtime/delivery/release-history.ts +178 -0
  673. package/runtime/delivery/release-inputs.ts +107 -0
  674. package/runtime/delivery/release.ts +166 -0
  675. package/runtime/delivery/safe-manifest.ts +11 -0
  676. package/runtime/delivery/safe-observation.ts +626 -0
  677. package/runtime/delivery/safe-prepare.ts +101 -0
  678. package/runtime/delivery/safe.ts +355 -0
  679. package/runtime/delivery/same-fork-baseline.ts +17 -0
  680. package/runtime/delivery/setup.ts +184 -0
  681. package/runtime/delivery/source.ts +130 -0
  682. package/runtime/delivery/target-fields.ts +7 -0
  683. package/runtime/delivery/task-identity.ts +85 -0
  684. package/runtime/delivery/toolchain.ts +48 -0
  685. package/runtime/delivery/validation.ts +252 -0
  686. package/runtime/delivery/verification.ts +47 -0
  687. package/runtime/migrate.ts +1 -0
  688. package/runtime/miner/binary.ts +41 -0
  689. package/runtime/miner/cli.ts +87 -0
  690. package/runtime/miner/index.ts +5 -0
  691. package/runtime/miner/request.ts +54 -0
  692. package/runtime/miner/runner.ts +90 -0
  693. package/runtime/miner/types.ts +71 -0
  694. package/runtime/miner/verify.ts +61 -0
  695. package/runtime/vendor/plan-codec/index.cjs +897 -0
  696. package/runtime/vendor/plan-codec/index.d.cts +38 -0
  697. package/runtime/vendor/plan-codec/provenance.json +25 -0
  698. package/runtime/workflow/engine.ts +174 -0
  699. package/runtime/workflow/lib/authority.ts +3 -3
  700. package/runtime/workflow/lib/calls.ts +47 -37
  701. package/runtime/workflow/lib/canonicalData.ts +45 -0
  702. package/runtime/workflow/lib/checkCodeRunner.ts +7 -3
  703. package/runtime/workflow/lib/config.ts +1 -1
  704. package/runtime/workflow/lib/context.ts +77 -0
  705. package/runtime/workflow/lib/create2.ts +18 -121
  706. package/runtime/workflow/lib/deploymentInfo.ts +8 -0
  707. package/runtime/workflow/lib/deploymentRecords.ts +3 -1
  708. package/runtime/workflow/lib/deployments.ts +6 -14
  709. package/runtime/workflow/lib/evidencePorts.ts +20 -0
  710. package/runtime/workflow/lib/executionPlan.ts +17 -268
  711. package/runtime/workflow/lib/externalExecutionScanner.ts +2 -1
  712. package/runtime/workflow/lib/gateTool.ts +22 -10
  713. package/runtime/workflow/lib/gateToolSync.ts +11 -3
  714. package/runtime/workflow/lib/operationNames.ts +32 -0
  715. package/runtime/workflow/lib/parameters.ts +8 -21
  716. package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
  717. package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
  718. package/runtime/workflow/lib/plan.ts +334 -0
  719. package/runtime/workflow/lib/planCli.ts +279 -0
  720. package/runtime/workflow/lib/preparationEvidence.ts +14 -0
  721. package/runtime/workflow/lib/proxy.ts +6 -3
  722. package/runtime/workflow/lib/runtime.ts +46 -0
  723. package/runtime/workflow/lib/signer.ts +8 -5
  724. package/runtime/workflow/lib/simulation.ts +41 -17
  725. package/runtime/workflow/lib/state.ts +3 -3
  726. package/runtime/workflow/lib/staticValidation.ts +92 -11
  727. package/runtime/workflow/lib/transactionPlanner.ts +314 -0
  728. package/runtime/workflow/lib/typedValue.ts +46 -0
  729. package/runtime/workflow/lib/validation.ts +50 -0
  730. package/runtime/workflow/planAdd.ts +8 -0
  731. package/runtime/workflow/planRead.ts +8 -0
  732. package/runtime/workflow/planStatus.ts +8 -0
  733. package/runtime/workflow/planWrite.ts +8 -0
  734. package/runtime/workflow/run.ts +42 -176
  735. package/runtime/workflow/staticValidate.ts +8 -3
  736. package/runtime/workflow/steps/call.ts +1 -1
  737. package/runtime/workflow/steps/check.ts +1 -1
  738. package/runtime/workflow/steps/custom.ts +1 -1
  739. package/runtime/workflow/steps/deploy.ts +99 -58
  740. package/runtime/workflow/steps/upgrade.ts +88 -57
  741. package/runtime/workflow/steps/view.ts +1 -1
  742. package/bin/workflow.cjs +0 -19
@@ -0,0 +1,126 @@
1
+ /** Pure ABI review. Expected arguments come from planning, never from decoding submitted bytes. */
2
+ import { AbiCoder, Interface, ParamType, type InterfaceAbi } from 'ethers';
3
+ import { canonicalJson, deepFreeze } from '../workflow/lib/canonicalData';
4
+ import type { ReleaseExecutionTransaction } from '../workflow/lib/transactionPlanner';
5
+ import { strictData } from './data';
6
+
7
+ export interface CalldataPayload {
8
+ argumentPath: number[];
9
+ invocation: CalldataInvocation;
10
+ }
11
+ export interface CalldataInvocation {
12
+ kind: 'function' | 'constructor';
13
+ abi: unknown[];
14
+ method: string;
15
+ selector: string | null;
16
+ bytecode: string | null;
17
+ expectedArguments: unknown[];
18
+ decodedArguments: unknown[];
19
+ data: string;
20
+ payloads: CalldataPayload[];
21
+ check: 'matches-frozen-intent';
22
+ }
23
+ export interface CalldataTransactionReview {
24
+ transactionId: string;
25
+ to: string;
26
+ value: string;
27
+ operation: 0 | 1;
28
+ invocation: CalldataInvocation;
29
+ }
30
+ export interface CalldataReviewSink {
31
+ record(transaction: ReleaseExecutionTransaction, input: { abi: InterfaceAbi; method: string; args: readonly unknown[] }): void;
32
+ }
33
+ function bytes(value: unknown): string {
34
+ if (typeof value !== 'string' || !/^0x(?:[a-fA-F0-9]{2})*$/.test(value)) throw Error('Invalid ABI review bytes');
35
+ return value.toLowerCase();
36
+ }
37
+ /** Decimal strings retain uint256 precision; positional tuples are unambiguous even with duplicate names. */
38
+ function argument(type: ParamType, value: any): unknown {
39
+ if (type.baseType === 'array') {
40
+ if (!Array.isArray(value) || (type.arrayLength !== -1 && value.length !== type.arrayLength)) throw Error('Invalid ABI review array');
41
+ return Array.from(value, v => argument(type.arrayChildren!, v));
42
+ }
43
+ if (type.baseType === 'tuple') {
44
+ if (!value || typeof value !== 'object') throw Error('Invalid ABI review tuple');
45
+ return type.components!.map((p, i) => argument(p, Array.isArray(value) ? value[i] : value[p.name]));
46
+ }
47
+ if (/^u?int\d*$/.test(type.type)) {
48
+ if (typeof value === 'number' && !Number.isSafeInteger(value)) throw Error('Unsafe ABI review integer');
49
+ if (!['bigint', 'number', 'string'].includes(typeof value) || (typeof value === 'string' && !value.trim())) throw Error('Invalid ABI review integer');
50
+ return BigInt(value).toString();
51
+ }
52
+ if (type.type === 'address') return String(value).toLowerCase();
53
+ if (/^bytes\d*$/.test(type.type)) return bytes(value);
54
+ if ((type.type === 'bool' && typeof value !== 'boolean') || (type.type === 'string' && typeof value !== 'string')) throw Error('Invalid ABI review scalar');
55
+ return value;
56
+ }
57
+ function argumentsOf(types: readonly ParamType[], args: readonly unknown[]): unknown[] {
58
+ if (!Array.isArray(args) || types.length !== args.length) throw Error('ABI review argument count mismatch');
59
+ return types.map((p, i) => argument(p, args[i]));
60
+ }
61
+ export function createCalldataInvocation(input: {
62
+ abi: InterfaceAbi; method: string | null; args: readonly unknown[]; data: string;
63
+ bytecode?: string; payloads?: CalldataPayload[];
64
+ }): CalldataInvocation {
65
+ const iface = new Interface(input.abi), fragment = input.method === null ? iface.deploy : iface.getFunction(input.method);
66
+ if (!fragment) throw Error('ABI review method missing');
67
+ const expectedArguments = argumentsOf(fragment.inputs, input.args), data = bytes(input.data);
68
+ const bytecode = input.method === null ? bytes(input.bytecode) : null;
69
+ if (input.method !== null && input.bytecode !== undefined) throw Error('Function review cannot contain constructor bytecode');
70
+ const encoded = input.method === null ? bytecode + iface.encodeDeploy(expectedArguments).slice(2) : iface.encodeFunctionData(input.method, expectedArguments).toLowerCase();
71
+ if (encoded !== data) throw Error('Calldata differs from expected ABI encoding');
72
+ const decoded = input.method === null
73
+ ? AbiCoder.defaultAbiCoder().decode(fragment.inputs, '0x' + data.slice(bytecode!.length))
74
+ : iface.decodeFunctionData(input.method, data);
75
+ const decodedArguments = argumentsOf(fragment.inputs, Array.from(decoded));
76
+ if (canonicalJson(expectedArguments) !== canonicalJson(decodedArguments)) throw Error('Decoded calldata differs from frozen intent');
77
+ const payloads = (input.payloads ?? []).map(p => {
78
+ if (!Array.isArray(p.argumentPath) || !p.argumentPath.length || p.argumentPath.some(i => !Number.isSafeInteger(i) || i < 0)) throw Error('Invalid nested calldata argument path');
79
+ let value: any = expectedArguments;
80
+ for (const index of p.argumentPath) {
81
+ if (!Array.isArray(value) || index >= value.length) throw Error('Nested calldata argument path missing');
82
+ value = value[index];
83
+ }
84
+ const invocation = parseCalldataInvocation(p.invocation);
85
+ if (value !== invocation.data) throw Error('Nested calldata differs from enclosing payload');
86
+ return { argumentPath: p.argumentPath, invocation };
87
+ });
88
+ if (new Set(payloads.map(p => canonicalJson(p.argumentPath))).size !== payloads.length) throw Error('Duplicate nested calldata payload');
89
+ const method = input.method === null ? 'constructor' : fragment.format('sighash');
90
+ const required: number[][] = [];
91
+ if (method === 'deploy(bytes32,bytes,bytes,uint256,uint256)') {
92
+ required.push([1]);
93
+ if (expectedArguments[2] !== '0x') required.push([2]);
94
+ if (payloads.find(p => canonicalJson(p.argumentPath) === '[1]')?.invocation.kind !== 'constructor') throw Error('CREATE2 constructor ABI review required');
95
+ } else if (method === 'upgradeToAndCall(address,bytes)' && expectedArguments[1] !== '0x') required.push([1]);
96
+ else if (method === 'upgradeAndCall(address,address,bytes)' && expectedArguments[2] !== '0x') required.push([2]);
97
+ else if (['aggregate3((address,bool,bytes)[])', 'aggregate3Value((address,bool,uint256,bytes)[])'].includes(method)) {
98
+ const index = method.startsWith('aggregate3Value') ? 3 : 2;
99
+ (expectedArguments[0] as unknown[]).forEach((_, i) => required.push([0, i, index]));
100
+ }
101
+ for (const path of required) if (!payloads.some(p => canonicalJson(p.argumentPath) === canonicalJson(path))) throw Error('Nested calldata ABI review required');
102
+ return deepFreeze({ kind: input.method === null ? 'constructor' : 'function', abi: [JSON.parse(fragment.format('json'))],
103
+ method, selector: input.method === null ? null : iface.getFunction(input.method)!.selector,
104
+ bytecode, expectedArguments, decodedArguments, data, payloads, check: 'matches-frozen-intent' });
105
+ }
106
+ export function parseCalldataInvocation(raw: unknown): CalldataInvocation {
107
+ const v = strictData(raw) as CalldataInvocation;
108
+ if (!v || !['function', 'constructor'].includes(v.kind) || !Array.isArray(v.payloads)) throw Error('Invalid calldata invocation');
109
+ const parsed = createCalldataInvocation({ abi: v.abi as InterfaceAbi, method: v.kind === 'constructor' ? null : v.method,
110
+ args: v.expectedArguments, data: v.data, ...(v.kind === 'constructor' ? { bytecode: v.bytecode! } : {}), payloads: v.payloads });
111
+ if (canonicalJson(parsed) !== canonicalJson(v)) throw Error('Noncanonical or modified ABI review');
112
+ return parsed;
113
+ }
114
+ export function reviewTransaction(tx: ReleaseExecutionTransaction, invocation: CalldataInvocation): CalldataTransactionReview {
115
+ const parsed = parseCalldataInvocation(invocation);
116
+ if (parsed.kind !== 'function' || parsed.data !== tx.data) throw Error('ABI review transaction calldata mismatch');
117
+ return deepFreeze({ transactionId: tx.transactionId, to: tx.to, value: tx.value, operation: tx.operation, invocation: parsed });
118
+ }
119
+ export function parseCalldataReviews(raw: unknown, transactions: readonly ReleaseExecutionTransaction[]): CalldataTransactionReview[] {
120
+ if (!Array.isArray(raw) || raw.length !== transactions.length) throw Error('Complete calldata ABI review required');
121
+ return deepFreeze(raw.map((value, index) => {
122
+ const v = strictData(value) as CalldataTransactionReview, expected = reviewTransaction(transactions[index], v.invocation);
123
+ if (canonicalJson(v) !== canonicalJson(expected)) throw Error('ABI review transaction binding mismatch');
124
+ return expected;
125
+ }));
126
+ }
@@ -0,0 +1,38 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import {spawn} from 'node:child_process';
4
+ import {randomUUID} from 'node:crypto';
5
+ import {canonicalData,canonicalJson} from '../workflow/lib/canonicalData';
6
+ import {byteHash,developmentPath,atomicDevelopmentWrite} from './materialization';
7
+ export interface ExpectedDevelopmentCode {key:string;contract:string;address:string}
8
+ /** The checker incrementally merges output. A fresh private output file is mandatory. */
9
+ export function validateDevelopmentCheckReport(raw:unknown,target:string,expected:readonly ExpectedDevelopmentCode[]):unknown {
10
+ const value=canonicalData(raw) as any;
11
+ if(!expected.length||new Set(expected.map(e=>e.key)).size!==expected.length)throw Error('Empty expected CheckCode set or key collision');
12
+ if(!value||Array.isArray(value)||canonicalJson(Object.keys(value))!==canonicalJson([target]))throw Error('CheckCode target mismatch');
13
+ const entries=value[target];if(!entries||Array.isArray(entries)||canonicalJson(Object.keys(entries).sort())!==canonicalJson(expected.map(e=>e.key).sort()))throw Error('CheckCode missing/extra entries');
14
+ for(const e of expected){const row=entries[e.key];if(!row||row.contract!==e.contract||row.scheme!=='evm'||typeof row.address!=='string'||row.address.toLowerCase()!==e.address.toLowerCase()||row.matches!==true||row.error!==null||typeof row.reason!=='string'||!Number.isSafeInteger(row.onChainBytecodeLength)||row.onChainBytecodeLength<=0||!Number.isSafeInteger(row.localBytecodeLength)||row.localBytecodeLength<=0)throw Error(`CheckCode identity/match failure: ${e.key}`);}
15
+ return value;
16
+ }
17
+ function command(root:string,cmd:string,args:string[],env:NodeJS.ProcessEnv,log:string):Promise<void> {
18
+ return new Promise((resolve,reject)=>{const output=fs.createWriteStream(log,{flags:'wx',mode:0o600});const child=spawn(cmd,args,{cwd:root,env,stdio:['ignore','pipe','pipe']});child.stdout.pipe(output,{end:false});child.stderr.pipe(output,{end:false});child.on('error',error=>{output.end();reject(error);});child.on('close',code=>{output.end(()=>code===0?resolve():reject(Error(`CheckCode command failed (${code}): ${cmd}; see ${log}`)));});});
19
+ }
20
+ export async function runDevelopmentCheckCode(input:{root:string;target:string;executionId:string;planHash:string;manifestDir:string;registry:string;metadata:string;effective:Record<string,Record<string,string>>;expected:ExpectedDevelopmentCode[];assertArtifacts:()=>Promise<unknown>}):Promise<unknown> {
21
+ const relative=`.gate-delivery/check-code/${input.executionId}/${randomUUID()}`,directory=developmentPath(input.root,relative);fs.mkdirSync(directory,{recursive:true,mode:0o700});
22
+ const effective=canonicalJson(input.effective)+'\n';atomicDevelopmentWrite(input.root,`${relative}/effective.json`,effective);
23
+ const raw=path.join(directory,`${input.target}.raw.json`),env:NodeJS.ProcessEnv={...process.env,HARDHAT_NETWORK:input.target,GATE_WORKFLOW_TARGET:input.target,MANIFEST_DEFAULT_DIR:input.manifestDir};
24
+ // Configuration's runtime loader selects the actual named target, never a fork.
25
+ delete env.GATE_DELIVERY_CONTEXT;
26
+ const snapshot=async()=>{
27
+ if(fs.readFileSync(path.join(input.root,'contractInfo.json'),'utf8')!==input.registry||fs.readFileSync(path.join(input.root,'deploymentInfo.json'),'utf8')!==input.metadata)throw Error('Registry/metadata changed during CheckCode');
28
+ return await input.assertArtifacts();
29
+ };
30
+ await snapshot();await command(input.root,'npm',['run','compile','--','--network',input.target],env,path.join(directory,'compile.log'));await snapshot();
31
+ if(fs.existsSync(raw))throw Error('CheckCode raw output must be fresh');
32
+ await command(input.root,process.execPath,[path.join(input.root,'node_modules/gate-evm-tools/bin/cli.js'),'check','--scheme','evm','--network',input.target,'--config',path.join(directory,'effective.json'),'--output',raw],env,path.join(directory,'check.log'));
33
+ const artifacts=await snapshot();
34
+ if(!fs.existsSync(raw))throw Error('CheckCode completed without raw output');
35
+ const stat=fs.lstatSync(raw);if(!stat.isFile()||stat.isSymbolicLink()||stat.nlink!==1)throw Error('Invalid CheckCode raw output');
36
+ const bytes=fs.readFileSync(raw);validateDevelopmentCheckReport(JSON.parse(bytes.toString('utf8')),input.target,input.expected);
37
+ return {version:1,executionId:input.executionId,planHash:input.planHash,target:input.target,rawFile:`${relative}/${input.target}.raw.json`,rawHash:byteHash(bytes),registryHash:byteHash(input.registry),metadataHash:byteHash(input.metadata),effectiveHash:byteHash(effective),artifacts};
38
+ }
@@ -0,0 +1,350 @@
1
+ /** Pure parser for the collector's existing sealed closure format. Numeric compiler enums are pinned to TypeScript 5.9.3. */
2
+ import { createHash } from 'node:crypto';
3
+ import { strictData } from './data';
4
+ import { portablePath } from './protocol';
5
+ import { canonicalJson, deepFreeze, digest, exactObject, semanticHash } from '../workflow/lib/canonicalData';
6
+ const policy = 'gate-custom-cjs@1' as const;
7
+ const hash = (bytes: Buffer | string) => createHash('sha256').update(bytes).digest('hex');
8
+ export interface ClosureFile {
9
+ path: string;
10
+ kind: "module" | "json" | "data" | "config" | "metadata";
11
+ digest: string;
12
+ emittedDigest: string | null;
13
+ }
14
+ export interface ClosureEdge {
15
+ importer: string;
16
+ specifier: string;
17
+ target: string;
18
+ kind: "runtime" | "config";
19
+ }
20
+ export interface ClosurePackage {
21
+ lockLocation: string;
22
+ name: string;
23
+ version: string;
24
+ integrity: string;
25
+ source: { kind: "registry" | "tarball"; identity: string };
26
+ metadataDigest: string;
27
+ resolution: Record<string, unknown>;
28
+ payload: { path: string; digest: string }[];
29
+ payloadDigest: string;
30
+ }
31
+ export interface HostAdapter {
32
+ kind: "isolated-cjs" | "hardhat-2.26.3-ts-node-10.9.2";
33
+ preload: { path: string; digest: string } | null;
34
+ packages: { name: string; version: string; metadataDigest: string }[];
35
+ }
36
+ export interface CustomInputClosure {
37
+ version: 1;
38
+ policy: typeof policy;
39
+ roots: string[];
40
+ files: ClosureFile[];
41
+ edges: ClosureEdge[];
42
+ packages: ClosurePackage[];
43
+ compiler: {
44
+ version: string;
45
+ options: Record<string, unknown>;
46
+ config: string | null;
47
+ };
48
+ hostAdapter: HostAdapter;
49
+ resolver: {
50
+ policy: "node-default-cjs";
51
+ version: string;
52
+ flags: string[];
53
+ environment: "empty";
54
+ };
55
+ closureHash: string;
56
+ }
57
+ export const closureRuntimeOptions = {
58
+ target: 9,
59
+ module: 1,
60
+ esModuleInterop: true,
61
+ resolveJsonModule: true,
62
+ isolatedModules: true,
63
+ sourceMap: false,
64
+ inlineSourceMap: false,
65
+ importHelpers: false,
66
+ removeComments: false,
67
+ newLine: 1,
68
+ };
69
+ export function parseCustomInputClosure(raw: unknown): CustomInputClosure {
70
+ const e = exactObject(
71
+ strictData(raw),
72
+ [
73
+ "version",
74
+ "policy",
75
+ "roots",
76
+ "files",
77
+ "edges",
78
+ "packages",
79
+ "compiler",
80
+ "hostAdapter",
81
+ "resolver",
82
+ "closureHash",
83
+ ],
84
+ "custom input closure"
85
+ );
86
+ const { closureHash, ...body } = e;
87
+ if (
88
+ e.version !== 1 ||
89
+ e.policy !== policy ||
90
+ digest(closureHash, "closure") !== semanticHash(body)
91
+ )
92
+ throw new Error("Custom closure identity mismatch");
93
+ if (
94
+ !Array.isArray(e.roots) ||
95
+ !e.roots.length ||
96
+ !Array.isArray(e.files) ||
97
+ !Array.isArray(e.edges) ||
98
+ !Array.isArray(e.packages)
99
+ )
100
+ throw new Error("Missing custom closure entries");
101
+ const kinds = new Map<string, ClosureFile["kind"]>();
102
+ for (const raw of e.files) {
103
+ const f = exactObject(
104
+ raw,
105
+ ["path", "kind", "digest", "emittedDigest"],
106
+ "closure file"
107
+ );
108
+ portablePath(f.path, "closure file");
109
+ digest(f.digest, "file");
110
+ if (
111
+ kinds.has(f.path as string) ||
112
+ typeof f.kind !== "string" ||
113
+ !["module", "json", "data", "config", "metadata"].includes(f.kind)
114
+ )
115
+ throw new Error("Invalid closure file");
116
+ kinds.set(f.path as string, f.kind as ClosureFile["kind"]);
117
+ if (f.kind === "module") digest(f.emittedDigest, "emitted module");
118
+ else if (f.emittedDigest !== null)
119
+ throw new Error("Invalid nonmodule emission");
120
+ }
121
+ if (
122
+ new Set(e.roots).size !== e.roots.length ||
123
+ e.roots.some((r) => typeof r !== "string" || kinds.get(r) !== "module")
124
+ )
125
+ throw new Error("Missing closure root");
126
+ // Config JSON can also be imported at runtime, which promotes its file kind to json.
127
+ const configFile = (name: string) =>
128
+ name.endsWith(".json") &&
129
+ ["config", "json"].includes(kinds.get(name) ?? "");
130
+ const edgeKeys = new Set<string>();
131
+ for (const raw of e.edges) {
132
+ const edge = exactObject(
133
+ raw,
134
+ ["importer", "specifier", "target", "kind"],
135
+ "closure edge"
136
+ );
137
+ if (
138
+ typeof edge.importer !== "string" ||
139
+ typeof edge.target !== "string" ||
140
+ typeof edge.specifier !== "string" ||
141
+ !edge.specifier ||
142
+ (edge.kind !== "runtime" && edge.kind !== "config")
143
+ )
144
+ throw new Error("Invalid closure edge");
145
+ const key = canonicalJson([edge.importer, edge.specifier, edge.kind]);
146
+ if (edgeKeys.has(key)) throw new Error("Duplicate closure edge");
147
+ edgeKeys.add(key);
148
+ if (
149
+ edge.kind === "runtime"
150
+ ? kinds.get(edge.importer) !== "module" ||
151
+ !["module", "json"].includes(kinds.get(edge.target) ?? "")
152
+ : !configFile(edge.importer) || !configFile(edge.target)
153
+ )
154
+ throw new Error("Invalid closure edge file relationship");
155
+ }
156
+ const files = e.files as ClosureFile[];
157
+ const packages = new Map<string, ClosurePackage>();
158
+ for (const raw of e.packages) {
159
+ const p = exactObject(
160
+ raw,
161
+ [
162
+ "lockLocation",
163
+ "name",
164
+ "version",
165
+ "integrity",
166
+ "source",
167
+ "metadataDigest",
168
+ "resolution",
169
+ "payload",
170
+ "payloadDigest",
171
+ ],
172
+ "closure package"
173
+ );
174
+ portablePath(p.lockLocation, "lock location");
175
+ digest(p.metadataDigest, "metadata");
176
+ digest(p.payloadDigest, "payload");
177
+ const s = exactObject(p.source, ["kind", "identity"], "package source");
178
+ if (s.kind !== "registry" && s.kind !== "tarball")
179
+ throw new Error("Invalid package source");
180
+ digest(s.identity, "source");
181
+ if (
182
+ typeof p.name !== "string" ||
183
+ typeof p.version !== "string" ||
184
+ typeof p.integrity !== "string" ||
185
+ !/^sha(?:256|384|512)-[A-Za-z0-9+/]+={0,2}$/.test(p.integrity) ||
186
+ Buffer.from(p.integrity.split("-")[1], "base64").length !==
187
+ Number(p.integrity.slice(3).split("-")[0]) / 8 ||
188
+ !/^\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?$/.test(p.version) ||
189
+ !Array.isArray(p.payload) ||
190
+ semanticHash(p.payload) !== p.payloadDigest
191
+ )
192
+ throw new Error("Invalid package closure");
193
+ if (
194
+ !p.resolution ||
195
+ typeof p.resolution !== "object" ||
196
+ Array.isArray(p.resolution) ||
197
+ Object.keys(p.resolution).some(
198
+ (k) => !["type", "main", "exports", "imports"].includes(k)
199
+ )
200
+ )
201
+ throw new Error("Invalid package resolution metadata");
202
+ if (s.kind === "tarball" && s.identity !== hash(p.integrity))
203
+ throw new Error("Invalid tarball content identity");
204
+ const payloadNames = new Set<string>();
205
+ for (const raw of p.payload) {
206
+ const f = exactObject(raw, ["path", "digest"], "payload file");
207
+ const name = portablePath(f.path, "payload path");
208
+ digest(f.digest, "payload file");
209
+ if (payloadNames.has(name)) throw new Error("Duplicate payload path");
210
+ payloadNames.add(name);
211
+ }
212
+ const location = p.lockLocation as string;
213
+ if (
214
+ packages.has(location) ||
215
+ location
216
+ .split("/node_modules/")
217
+ .at(-1)!
218
+ .replace(/^node_modules\//, "") !== p.name ||
219
+ !location.split("/").includes("node_modules")
220
+ )
221
+ throw new Error("Invalid package lock location");
222
+ if (
223
+ !files.some(
224
+ (file) =>
225
+ file.path === `${location}/package.json` &&
226
+ file.digest === p.metadataDigest
227
+ ) ||
228
+ !(p.payload as ClosurePackage["payload"]).some(
229
+ (file) =>
230
+ file.path === "package.json" && file.digest === p.metadataDigest
231
+ )
232
+ )
233
+ throw new Error("Package metadata missing from payload/closure");
234
+ packages.set(location, p as unknown as ClosurePackage);
235
+ }
236
+ for (const file of files) {
237
+ const parts = file.path.split("/"),
238
+ index = parts.lastIndexOf("node_modules");
239
+ if (index < 0) continue;
240
+ const location = parts
241
+ .slice(0, index + (parts[index + 1]?.startsWith("@") ? 3 : 2))
242
+ .join("/");
243
+ const identity = packages.get(location);
244
+ if (
245
+ !identity?.payload.some(
246
+ (entry) =>
247
+ entry.path === file.path.slice(location.length + 1) &&
248
+ entry.digest === file.digest
249
+ )
250
+ )
251
+ throw new Error("Package file missing from locked payload");
252
+ }
253
+ const compiler = exactObject(
254
+ e.compiler,
255
+ ["version", "options", "config"],
256
+ "closure compiler"
257
+ );
258
+ if (
259
+ compiler.version !== "5.9.3" ||
260
+ (compiler.config !== null &&
261
+ (typeof compiler.config !== "string" || !configFile(compiler.config)))
262
+ )
263
+ throw new Error("Unsupported closure compiler/adapter");
264
+ const options = exactObject(
265
+ compiler.options,
266
+ [
267
+ ...Object.keys(closureRuntimeOptions),
268
+ ...(compiler.options &&
269
+ typeof compiler.options === "object" &&
270
+ Object.hasOwn(compiler.options, "useDefineForClassFields")
271
+ ? ["useDefineForClassFields"]
272
+ : []),
273
+ ],
274
+ "effective compiler options"
275
+ );
276
+ for (const [key, value] of Object.entries(closureRuntimeOptions)) {
277
+ if (!["target", "esModuleInterop"].includes(key) && options[key] !== value)
278
+ throw new Error("Unsupported effective compiler option");
279
+ }
280
+ if (
281
+ typeof options.esModuleInterop !== "boolean" ||
282
+ typeof options.target !== "number" ||
283
+ ![0,1,2,3,4,5,6,7,8,9,10,11,99,100].includes(options.target) ||
284
+ [0,100].includes(options.target) ||
285
+ (Object.hasOwn(options, "useDefineForClassFields") &&
286
+ typeof options.useDefineForClassFields !== "boolean")
287
+ )
288
+ throw new Error("Invalid effective compiler options");
289
+ const adapter = exactObject(
290
+ e.hostAdapter,
291
+ ["kind", "preload", "packages"],
292
+ "host adapter"
293
+ );
294
+ if (
295
+ (adapter.kind !== "isolated-cjs" &&
296
+ adapter.kind !== "hardhat-2.26.3-ts-node-10.9.2") ||
297
+ !Array.isArray(adapter.packages)
298
+ )
299
+ throw new Error("Unsupported host adapter");
300
+ if (
301
+ adapter.kind === "isolated-cjs" &&
302
+ (adapter.preload !== null || adapter.packages.length)
303
+ )
304
+ throw new Error("Invalid isolated loader");
305
+ if (adapter.preload !== null) {
306
+ const p = exactObject(adapter.preload, ["path", "digest"], "preload");
307
+ portablePath(p.path, "preload");
308
+ digest(p.digest, "preload");
309
+ }
310
+ for (const raw of adapter.packages) {
311
+ const p = exactObject(
312
+ raw,
313
+ ["name", "version", "metadataDigest"],
314
+ "adapter package"
315
+ );
316
+ digest(p.metadataDigest, "adapter metadata");
317
+ }
318
+ if (adapter.kind === "hardhat-2.26.3-ts-node-10.9.2") {
319
+ if (
320
+ adapter.preload === null ||
321
+ (adapter.preload as { path: string }).path !==
322
+ "node_modules/ts-node/register/index.js" ||
323
+ canonicalJson(
324
+ (adapter.packages as HostAdapter["packages"]).map((p) => [
325
+ p.name,
326
+ p.version,
327
+ ])
328
+ ) !==
329
+ canonicalJson([
330
+ ["ts-node", "10.9.2"],
331
+ ["hardhat", "2.26.3"],
332
+ ])
333
+ )
334
+ throw new Error("Invalid pinned preload adapter");
335
+ }
336
+ const resolver = exactObject(
337
+ e.resolver,
338
+ ["policy", "version", "flags", "environment"],
339
+ "resolver"
340
+ );
341
+ if (
342
+ resolver.policy !== "node-default-cjs" ||
343
+ typeof resolver.version !== "string" ||
344
+ !/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(resolver.version) ||
345
+ resolver.environment !== "empty" ||
346
+ canonicalJson(resolver.flags) !== canonicalJson(["--preserve-symlinks"])
347
+ )
348
+ throw new Error("Unsupported resolver policy");
349
+ return deepFreeze(e as unknown as CustomInputClosure);
350
+ }
@@ -0,0 +1,3 @@
1
+ // Reviewed canonical codec; rebuilt from the recorded SmartFlow sources.
2
+ export const PLAN_CODEC_SOURCE_COMMIT = "ee0f90991ca1a94c3f58c8893df16d0c8c41b230";
3
+ export const PLAN_CODEC_PROVENANCE_SHA256 = "212e560b26b7560a73df1f20bd789fce1e5c3f409afba2d5a5c5c39cb2518ce7";
@@ -0,0 +1,50 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { createHash } from 'node:crypto';
4
+ import { PLAN_CODEC_PROVENANCE_SHA256, PLAN_CODEC_SOURCE_COMMIT } from './codec-pin';
5
+ import type * as Canonical from '../vendor/plan-codec/index.cjs';
6
+
7
+ const sha256 = (bytes: Buffer): string => createHash('sha256').update(bytes).digest('hex');
8
+ function regularBytes(directory: string, name: string): Buffer {
9
+ const file = path.join(directory, name);
10
+ const stat = fs.lstatSync(file);
11
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.nlink !== 1) throw new Error(`Unsafe codec artifact: ${name}`);
12
+ return fs.readFileSync(file);
13
+ }
14
+ /** The reviewed pin protects provenance as well as the bundle. No checkout or network is used. */
15
+ export function verifyPlanCodec(directory: string): void {
16
+ if (fs.lstatSync(directory).isSymbolicLink()) throw new Error('Unsafe codec directory');
17
+ const bytes = regularBytes(directory, 'provenance.json');
18
+ if (sha256(bytes) !== PLAN_CODEC_PROVENANCE_SHA256) throw new Error('Plan codec provenance digest mismatch');
19
+ const manifest = JSON.parse(bytes.toString('utf8'));
20
+ if (manifest.formatVersion !== 1 || manifest.name !== 'gateflow-plan-read-only' || manifest.version !== 1
21
+ || manifest.schema !== 'gateflow-plan/v2' || manifest.definitionContract !== 'gateflow-plan/definition@1'
22
+ || manifest.sourceCommit !== PLAN_CODEC_SOURCE_COMMIT) throw new Error('Unsupported plan codec provenance');
23
+ for (const name of ['index.cjs', 'index.d.cts']) {
24
+ if (sha256(regularBytes(directory, name)) !== manifest.artifacts[name]) throw new Error(`Plan codec artifact digest mismatch: ${name}`);
25
+ }
26
+ }
27
+ export function loadPlanCodec(): typeof Canonical {
28
+ const directory = path.join(__dirname, '..', 'vendor', 'plan-codec');
29
+ verifyPlanCodec(directory);
30
+ return require(path.join(directory, 'index.cjs')) as typeof Canonical;
31
+ }
32
+
33
+ export interface PlanCodecObservation {
34
+ schema: 'gateflow-plan/v2'; definitionContract: 'gateflow-plan/definition@1'; sourceCommit: string;
35
+ provenanceHash: string; bundleHash: string; declarationHash: string;
36
+ }
37
+ /** Own the actual loader seam, including a cached bundle's continued file/module association. */
38
+ export function openPlanCodecObservation(): {readonly snapshot: Readonly<PlanCodecObservation>; assertUnchanged():void; seal():Readonly<PlanCodecObservation>; close():void} {
39
+ const directory=path.join(__dirname,'..','vendor','plan-codec');
40
+ const loaded=loadPlanCodec(),entry=path.join(directory,'index.cjs');
41
+ const observe=():Readonly<PlanCodecObservation>=>{
42
+ verifyPlanCodec(directory);
43
+ if(require.cache[entry]?.exports!==loaded)throw new Error('Plan codec loaded module drift');
44
+ return Object.freeze({schema:'gateflow-plan/v2',definitionContract:'gateflow-plan/definition@1',sourceCommit:PLAN_CODEC_SOURCE_COMMIT,
45
+ provenanceHash:sha256(regularBytes(directory,'provenance.json')),bundleHash:sha256(regularBytes(directory,'index.cjs')),declarationHash:sha256(regularBytes(directory,'index.d.cts'))});
46
+ };
47
+ const snapshot=observe();let open=true;
48
+ const check=()=>{if(!open)throw new Error('Plan codec observation closed');if(JSON.stringify(observe())!==JSON.stringify(snapshot))throw new Error('Plan codec observation drift');};
49
+ return Object.freeze({snapshot,assertUnchanged(){try{check();}catch(error){open=false;throw error;}},seal(){try{check();return snapshot;}finally{open=false;}},close(){open=false;}});
50
+ }