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,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 0age
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ # Bundled CREATE2 miner
2
+
3
+ `smartflow_miner` accepts a single JSON request on stdin and emits a single final JSON response. These macOS arm64 and x64 executables are copied byte-for-byte from SmartFlowAI `resources/create2`, whose last resource commit was `a31308bdbe81c02181ff4bcd2b992681c184d40f`. The original application resources are unchanged.
4
+
5
+ `manifest.json` records sizes, SHA-256 digests and provenance. The runtime also embeds the trusted digests and checks executable permissions before invoking a bundled binary. Editing the manifest cannot authorize a replacement binary.
6
+
7
+ The local create2Crunch source reference is `38b2dcd55c45cc79947fb9bf5f363222adf24ab0`. It describes the JSON protocol, but is **not a proven build revision** for these existing executable artifacts. The exact build revision is unknown. The upstream MIT license is retained in `LICENSE`.
8
+
9
+ No downloads, postinstall hooks, or application resource lookups are used. Other hosts require a compatible user-supplied build via `GATE_TOOL_CREATE2_MINER_BIN` or `binaryPath`. See [the API and CLI documentation](../../docs/create2-miner.md).
@@ -0,0 +1,27 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "source": {
4
+ "repository": "SmartFlowAI",
5
+ "resourceCommit": "a31308bdbe81c02181ff4bcd2b992681c184d40f",
6
+ "resourceDirectory": "resources/create2"
7
+ },
8
+ "rustReference": {
9
+ "repository": "create2Crunch",
10
+ "revision": "38b2dcd55c45cc79947fb9bf5f363222adf24ab0",
11
+ "provenBuildRevision": false
12
+ },
13
+ "binaryBuildRevision": null,
14
+ "provenanceNote": "Copied byte-for-byte from the existing SmartFlowAI resources. The Rust checkout is a protocol/source reference, not a proven revision used to build these binaries.",
15
+ "binaries": {
16
+ "darwin-arm64": {
17
+ "path": "darwin-arm64/smartflow_miner",
18
+ "sha256": "9611c1ca900c24f9b14924a144b7a3ab431111b855e676f2e145e7ab8c05f954",
19
+ "bytes": 1297616
20
+ },
21
+ "darwin-x64": {
22
+ "path": "darwin-x64/smartflow_miner",
23
+ "sha256": "a38279143658a8849db484e248c62af6ae2db78de4251021f195efd9bf987d82",
24
+ "bytes": 1306112
25
+ }
26
+ }
27
+ }
@@ -53,6 +53,7 @@ export function withTemplateArtifactPaths(config: HardhatUserConfig, argv: strin
53
53
  export function registerWorkflowDependencyCompiler(subtask: typeof import("hardhat/config").subtask, taskName: string): void {
54
54
  subtask(taskName).setAction(async (args, _hre, runSuper) => {
55
55
  const sourceNames: string[] = await runSuper(args);
56
- return [...new Set([...sourceNames, "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"])];
56
+ return [...new Set([...sourceNames, "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
57
+ ...((_hre.network.config as {zksync?:boolean}).zksync === true ? [] : ["@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"])])];
57
58
  });
58
59
  }
@@ -3,20 +3,14 @@ import path from "path";
3
3
  import YAML from "yaml";
4
4
  import { parseForkSnapshotJson } from "../workflow/lib/forkSnapshot";
5
5
 
6
- export type DeploymentEnvironment = "local" | "development" | "production";
6
+ import { validateManifestPolicy, type ManifestEnvironment } from "../delivery/policy";
7
+ export type DeploymentEnvironment = ManifestEnvironment;
7
8
 
8
9
  export interface OpenZeppelinTargetConfig {
9
10
  environment: DeploymentEnvironment;
10
11
  openzeppelin?: { manifestDir?: unknown };
11
12
  }
12
13
 
13
- const TARGET_ENVIRONMENTS = new Set<DeploymentEnvironment>([
14
- "local",
15
- "development",
16
- "production",
17
- ]);
18
- const SAFE_MANIFEST_DIR = /^\.openzeppelin(?:\.[a-z0-9][a-z0-9-]*)?$/;
19
-
20
14
  const assertConfinedManifestDirectory = (root: string, manifestDir: string): void => {
21
15
  const rootPath = fs.realpathSync(root);
22
16
  const candidatePath = path.resolve(root, manifestDir);
@@ -37,19 +31,7 @@ export function resolveOpenZeppelinManifestDir(
37
31
  network: string,
38
32
  target: OpenZeppelinTargetConfig,
39
33
  ): string {
40
- if (!TARGET_ENVIRONMENTS.has(target?.environment)) {
41
- throw new Error(`Network ${network} must declare a valid deployment environment`);
42
- }
43
- const manifestDir = target.openzeppelin?.manifestDir;
44
- if (typeof manifestDir !== "string" || !SAFE_MANIFEST_DIR.test(manifestDir)) {
45
- throw new Error(`Network ${network} must declare one safe OpenZeppelin manifest directory segment`);
46
- }
47
- if (target.environment === "production" && manifestDir !== ".openzeppelin") {
48
- throw new Error(`Production network ${network} must use exactly .openzeppelin`);
49
- }
50
- if (target.environment !== "production" && manifestDir === ".openzeppelin") {
51
- throw new Error(`Non-production network ${network} must not use .openzeppelin`);
52
- }
34
+ const manifestDir = validateManifestPolicy(target?.environment, target.openzeppelin?.manifestDir);
53
35
  assertConfinedManifestDirectory(root, manifestDir);
54
36
  return manifestDir;
55
37
  }
@@ -0,0 +1,225 @@
1
+ import {
2
+ Interface,
3
+ ParamType,
4
+ Result,
5
+ isAddress,
6
+ getAddress,
7
+ type InterfaceAbi,
8
+ } from "ethers";
9
+ import { strictData, copyOwnData } from "./data";
10
+ import { DEFERRED } from "./references";
11
+ /** Explicit runtime return boundary. Only bigint and ethers Result extend own JSON data. */
12
+ export function normalizeRuntimeValue(value: unknown): unknown {
13
+ if (typeof value === "bigint") return value.toString(10);
14
+ if (value instanceof Result)
15
+ return value.toArray(true).map(normalizeRuntimeValue);
16
+ if (Array.isArray(value)) {
17
+ if (Object.getPrototypeOf(value) !== Array.prototype)
18
+ throw new Error("Invalid runtime array prototype");
19
+ // Check shape/descriptors before reading; bigint is deliberately normalized afterwards.
20
+ const descriptors = Object.getOwnPropertyDescriptors(value);
21
+ if (
22
+ Object.getOwnPropertySymbols(value).length ||
23
+ Object.keys(descriptors).length !== value.length + 1
24
+ )
25
+ throw new Error("Invalid runtime array");
26
+ return Array.from({ length: value.length }, (_, i) => {
27
+ const d = descriptors[String(i)];
28
+ if (!d || !d.enumerable || !("value" in d))
29
+ throw new Error("Invalid runtime array");
30
+ return normalizeRuntimeValue(d.value);
31
+ });
32
+ }
33
+ return strictData(value);
34
+ }
35
+ export function validateAbiValue(
36
+ type: ParamType,
37
+ value: unknown,
38
+ label = "ABI value",
39
+ allowDeferred = false,
40
+ ): void {
41
+ value = copyOwnData(value, label, allowDeferred ? DEFERRED : undefined);
42
+ if (value === DEFERRED && allowDeferred) return;
43
+ const fail = () => {
44
+ throw new Error(`${label} must match ABI ${type.format("sighash")}`);
45
+ };
46
+ if (type.baseType === "array") {
47
+ if (
48
+ !Array.isArray(value) ||
49
+ (type.arrayLength !== -1 && value.length !== type.arrayLength)
50
+ )
51
+ return fail();
52
+ value.forEach((v, i) =>
53
+ validateAbiValue(type.arrayChildren!, v, `${label}[${i}]`, allowDeferred),
54
+ );
55
+ return;
56
+ }
57
+ if (type.baseType === "tuple") {
58
+ const components = type.components!;
59
+ if (Array.isArray(value)) {
60
+ if (value.length !== components.length) return fail();
61
+ components.forEach((c, i) =>
62
+ validateAbiValue(c, value[i], `${label}[${i}]`, allowDeferred),
63
+ );
64
+ return;
65
+ }
66
+ if (!value || typeof value !== "object") return fail();
67
+ const names = components.map((c) => c.name);
68
+ if (
69
+ names.some((n) => !n) ||
70
+ new Set(names).size !== names.length ||
71
+ Object.keys(value).sort().join("\0") !== names.slice().sort().join("\0")
72
+ )
73
+ return fail();
74
+ components.forEach((c) =>
75
+ validateAbiValue(
76
+ c,
77
+ (value as Record<string, unknown>)[c.name],
78
+ `${label}.${c.name}`,
79
+ allowDeferred,
80
+ ),
81
+ );
82
+ return;
83
+ }
84
+ if (type.type === "bool") {
85
+ if (typeof value !== "boolean") fail();
86
+ return;
87
+ }
88
+ const integer = /^(u?int)([0-9]+)$/.exec(type.type);
89
+ if (integer) {
90
+ if (
91
+ !(typeof value === "number" && Number.isSafeInteger(value)) &&
92
+ !(typeof value === "string" && /^(0|-?[1-9][0-9]*)$/.test(value))
93
+ )
94
+ return fail();
95
+ const bits = BigInt(integer[2]),
96
+ signed = integer[1] === "int",
97
+ n = BigInt(value as string | number);
98
+ if (
99
+ n < (signed ? -(1n << (bits - 1n)) : 0n) ||
100
+ n > (signed ? (1n << (bits - 1n)) - 1n : (1n << bits) - 1n)
101
+ )
102
+ fail();
103
+ return;
104
+ }
105
+ if (type.type === "address") {
106
+ if (typeof value !== "string" || !isAddress(value)) fail();
107
+ return;
108
+ }
109
+ if (type.type === "string") {
110
+ if (typeof value !== "string") fail();
111
+ return;
112
+ }
113
+ const bytes = /^bytes([0-9]*)$/.exec(type.type);
114
+ if (bytes) {
115
+ if (
116
+ typeof value !== "string" ||
117
+ !/^0x(?:[a-fA-F0-9]{2})*$/.test(value) ||
118
+ (bytes[1] && value.length !== 2 + 2 * Number(bytes[1]))
119
+ )
120
+ fail();
121
+ return;
122
+ }
123
+ throw new Error(`Unsupported ABI type ${type.type}`);
124
+ }
125
+ function boundary(value: unknown, allowDeferred: boolean): unknown {
126
+ return copyOwnData(value, "ABI input", allowDeferred ? DEFERRED : undefined);
127
+ }
128
+ export function validateAbiArguments(
129
+ abi: InterfaceAbi,
130
+ method: string | null,
131
+ args: unknown,
132
+ options: { allowDeferred?: boolean } = {},
133
+ ): void {
134
+ const allow = options.allowDeferred === true;
135
+ const input = boundary(args, allow),
136
+ iface = new Interface(abi);
137
+ const fragment = method === null ? iface.deploy : iface.getFunction(method);
138
+ if (!fragment) throw new Error(`Unknown ABI method ${method}`);
139
+ if (input === DEFERRED)
140
+ throw new Error(
141
+ "Future state requires explicit ABI argument count and shape",
142
+ );
143
+ if (!Array.isArray(input) || input.length !== fragment.inputs.length)
144
+ throw new Error(
145
+ `ABI argument count mismatch for ${method ?? "constructor"}`,
146
+ );
147
+ fragment.inputs.forEach((type, i) =>
148
+ validateAbiValue(
149
+ type,
150
+ input[i],
151
+ `${method ?? "constructor"} args[${i}]`,
152
+ allow,
153
+ ),
154
+ );
155
+ }
156
+ export function validateTransactionValue(
157
+ value: unknown,
158
+ allowDeferred = false,
159
+ ): void {
160
+ validateAbiValue(
161
+ ParamType.from("uint256"),
162
+ value,
163
+ "transaction value",
164
+ allowDeferred,
165
+ );
166
+ }
167
+
168
+ export function validateAbiResult(
169
+ abi: InterfaceAbi,
170
+ method: string,
171
+ raw: unknown,
172
+ allowDeferred = false,
173
+ ): void {
174
+ const value = boundary(raw, allowDeferred),
175
+ fragment = new Interface(abi).getFunction(method);
176
+ if (!fragment) throw new Error("Unknown ABI method");
177
+ if (fragment.outputs.length === 1)
178
+ validateAbiValue(
179
+ fragment.outputs[0],
180
+ value,
181
+ "expected result",
182
+ allowDeferred,
183
+ );
184
+ else {
185
+ if (!Array.isArray(value) || value.length !== fragment.outputs.length)
186
+ throw new Error("ABI result count mismatch");
187
+ fragment.outputs.forEach((p, i) =>
188
+ validateAbiValue(p, value[i], `expected result[${i}]`, allowDeferred),
189
+ );
190
+ }
191
+ }
192
+ function comparable(type: ParamType, value: any): unknown {
193
+ if (type.baseType === "array")
194
+ return value.map((v: unknown) => comparable(type.arrayChildren!, v));
195
+ if (type.baseType === "tuple")
196
+ return type.components!.map((p, i) =>
197
+ comparable(p, Array.isArray(value) ? value[i] : value[p.name]),
198
+ );
199
+ if (/^(u?int)[0-9]+$/.test(type.type)) return BigInt(value).toString();
200
+ if (type.type === "address") return getAddress(value).toLowerCase();
201
+ if (type.type.startsWith("bytes")) return value.toLowerCase();
202
+ return value;
203
+ }
204
+ export function stringifyRuntimeValue(value: unknown): string {
205
+ const data = normalizeRuntimeValue(value);
206
+ return typeof data === "string" ? data : JSON.stringify(data);
207
+ }
208
+ export function compareAbiResults(
209
+ abi: InterfaceAbi,
210
+ method: string,
211
+ actual: unknown,
212
+ expected: unknown,
213
+ ): { actual: string; expected: string } {
214
+ const normalized = normalizeRuntimeValue(actual);
215
+ validateAbiResult(abi, method, normalized);
216
+ validateAbiResult(abi, method, expected);
217
+ const outputs = new Interface(abi).getFunction(method)!.outputs;
218
+ const encode = (v: any) =>
219
+ stringifyRuntimeValue(
220
+ outputs.length === 1
221
+ ? comparable(outputs[0], v)
222
+ : outputs.map((p, i) => comparable(p, v[i])),
223
+ );
224
+ return { actual: encode(normalized), expected: encode(expected) };
225
+ }
@@ -0,0 +1,31 @@
1
+ /** Private fixed-worker bootstrap. Never accepts caller config overrides. */
2
+ import path from 'node:path';
3
+ import type { HardhatConfig } from 'hardhat/types';
4
+ let fork:Readonly<{network:string;chainId:number;url:string;blockNumber:number}>|undefined;
5
+ const policies=new WeakMap<object,HardhatConfig['networks']['hardhat']>();
6
+ export function establishOwnedFork(input:NonNullable<typeof fork>):void {
7
+ if(fork||require.main?.filename!==path.join(__dirname,'aggregate-worker.js')||!process.send||!process.connected)
8
+ throw new Error('Owned worker fork bootstrap required');
9
+ const url=new URL(input.url);
10
+ if(url.protocol!=='http:'||url.hostname!=='127.0.0.1'||!/^\/[a-f0-9-]{36}$/.test(url.pathname)||url.username||url.password||url.search||url.hash)
11
+ throw new Error('Owned source proxy required');
12
+ fork=Object.freeze({...input});
13
+ }
14
+ export function registerOwnedFork(extendConfig:typeof import('hardhat/config').extendConfig):void {
15
+ if(!fork)return;
16
+ extendConfig(config=>{
17
+ if(config.networks[fork!.network]?.chainId!==fork!.chainId)throw new Error('Owned fork target chain mismatch');
18
+ policies.set(config,config.networks.hardhat);
19
+ // Only the explicitly selected simulation operator is impersonated later. Avoid
20
+ // hydrating Hardhat's unrelated default wallets from the historical source RPC.
21
+ config.networks.hardhat={...config.networks.hardhat,chainId:fork!.chainId,accounts:[],
22
+ forking:{enabled:true,url:fork!.url,blockNumber:fork!.blockNumber,httpHeaders:{}}};
23
+ });
24
+ }
25
+ export function originalRunnerPolicy(config:HardhatConfig):HardhatConfig['networks']['hardhat'] {
26
+ return policies.get(config)??config.networks.hardhat;
27
+ }
28
+
29
+ export function assertOwnedTargetWorker():void {
30
+ if(!fork||require.main?.filename!==path.join(__dirname,'aggregate-worker.js')||!process.send||!process.connected)throw new Error('Owned target worker required');
31
+ }
@@ -0,0 +1,88 @@
1
+ /** Finite private protocol. A nonce correlates an actual child; it is not process attestation. */
2
+ import {productionChildEnvironment} from './production-environment';
3
+ import {fork,type ChildProcess} from 'node:child_process';
4
+ import {randomUUID} from 'node:crypto';
5
+ import path from 'node:path';
6
+ import {strictData} from './data';
7
+ import {exactObject} from '../workflow/lib/canonicalData';
8
+ import {workerFailures} from './aggregate-diagnostics';
9
+ export class OwnedWorkerFailure extends Error {}
10
+ export type Command='stage'|'check'|'bind'|'close'|'abort';
11
+ export interface WorkerMessage {version:1;session:string;epoch:string;target:string;id:number;command:Command;data:unknown}
12
+ export function parseWorkerMessage(raw:unknown):WorkerMessage {
13
+ const x=exactObject(strictData(raw),['version','session','epoch','target','id','command','data'],'worker message');
14
+ if(x.version!==1||typeof x.session!=='string'||typeof x.epoch!=='string'||typeof x.target!=='string'||!Number.isSafeInteger(x.id)||Number(x.id)<1||!['stage','check','bind','close','abort'].includes(String(x.command)))throw new OwnedWorkerFailure('Invalid worker protocol');
15
+ return x as unknown as WorkerMessage;
16
+ }
17
+ export class OwnedWorker {
18
+ readonly #child:ChildProcess;
19
+ readonly epoch=randomUUID();
20
+ #id=0;#state:'new'|'staging'|'staged'|'checked'|'bound'|'closing'|'closed'|'failed'='new';
21
+ #pending?:{message:WorkerMessage;resolve:(v:any)=>void;reject:(e:Error)=>void;timer:NodeJS.Timeout};
22
+ #failure?:Error;
23
+ readonly #exit:Promise<void>;
24
+ #exited=false;
25
+ constructor(readonly root:string,readonly session:string,readonly target:string,readonly role:'source'|'target',readonly failAggregate:(error:Error)=>void){
26
+ const env=productionChildEnvironment(process.env);
27
+ for(const key of ['GATE_DELIVERY_CONTEXT','GATE_WORKFLOW_TARGET','MANIFEST_DEFAULT_DIR','HARDHAT_NETWORK','GATE_FORK_PROXY_HANDSHAKE','GATE_WORKFLOW_SIMULATION_FORK','GATE_WORKFLOW_SIMULATION_SOURCE_RPC'])delete env[key];
28
+ Object.assign(env,{HARDHAT_CONFIG:path.join(root,'hardhat.config.ts'),HARDHAT_TSCONFIG:path.join(root,'tsconfig.json'),HARDHAT_DISABLE_TELEMETRY_PROMPT:'true'});
29
+ this.#child=fork(path.join(__dirname,'aggregate-worker.js'),[],{cwd:root,env,execArgv:[],stdio:['ignore','ignore','ignore','ipc'],serialization:'json'});
30
+ this.#child.on('message',raw=>{
31
+ try{
32
+ const reply=parseWorkerMessage(raw),pending=this.#pending;
33
+ if(!pending||reply.session!==session||reply.target!==target||reply.epoch!==this.epoch||reply.id!==pending.message.id||reply.command!==pending.message.command)throw new OwnedWorkerFailure('Unexpected worker protocol reply');
34
+ const value=exactObject(reply.data,['ok','value'],'worker reply');
35
+ if(value.ok!==true){
36
+ const hasReason=Object.hasOwn(value.value as object,'reason');
37
+ const details=exactObject(value.value,['phase',...(hasReason?['reason']:[])],'worker failure');
38
+ const phases=['protocol','project-loader','source-open','source-configuration','fork-setup','fork-verify','fork-signer','target-configuration','compile','planning','existing-code-artifacts','staged-reread','barrier','source-recheck','source-seal','plan-recheck','compiler-recheck','configuration-seal','binding'];
39
+ if(!phases.includes(String(details.phase)))throw new Error('Invalid worker failure');
40
+ if(hasReason&&(typeof details.reason!=='string'||!Object.hasOwn(workerFailures,details.reason)))throw new Error('Invalid worker failure reason');
41
+ this.fail(new OwnedWorkerFailure('Owned worker failed during '+details.phase+' ('+role+')'+(hasReason?': '+workerFailures[details.reason as string]:'')));return;
42
+ }
43
+ clearTimeout(pending.timer);this.#pending=undefined;pending.resolve(value.value);
44
+ }catch{this.fail(new OwnedWorkerFailure('Owned worker failed or sent an invalid reply'));}
45
+ });
46
+ this.#child.on('error',()=>this.fail(new OwnedWorkerFailure('Owned worker process failed')));
47
+ this.#child.on('disconnect',()=>{if(!['closing','closed','failed'].includes(this.#state))this.fail(new OwnedWorkerFailure('Unexpected worker disconnect'));});
48
+ this.#exit=new Promise(resolve=>this.#child.once('exit',(code,signal)=>{
49
+ this.#exited=true;
50
+ if(this.#state!=='closing'||code!==0||signal!==null)this.fail(new OwnedWorkerFailure('Unexpected worker exit'));
51
+ else this.#state='closed';
52
+ resolve();
53
+ }));
54
+ }
55
+ get pid():number|undefined{return this.#child.pid;}
56
+ assertLive():void {if(this.#failure||this.#exited||!this.#child.connected)throw this.#failure??new OwnedWorkerFailure('Worker is not live');}
57
+ private fail(error:Error):void {
58
+ if(this.#failure)return;this.#failure=error;this.#state='failed';
59
+ if(this.#pending){clearTimeout(this.#pending.timer);this.#pending.reject(error);this.#pending=undefined;}
60
+ this.failAggregate(error);
61
+ }
62
+ async request(command:Command,data:unknown=null):Promise<any>{
63
+ this.assertLive();
64
+ const allowed=command==='stage'?this.#state==='new':command==='check'?this.#state==='staged':command==='bind'?this.role==='target'&&this.#state==='checked':command==='close'?(this.role==='source'?this.#state==='checked':this.#state==='bound'):false;
65
+ if(!allowed||this.#pending){const error=new OwnedWorkerFailure('Worker protocol order violation');this.fail(error);throw error;}
66
+ const next=command==='stage'?'staged':command==='check'?'checked':command==='bind'?'bound':'closed';
67
+ this.#state=command==='stage'?'staging':command==='close'?'closing':this.#state;
68
+ const message:WorkerMessage={version:1,session:this.session,epoch:this.epoch,target:this.target,id:++this.#id,command,data:strictData(data)};
69
+ const result=await new Promise<any>((resolve,reject)=>{
70
+ const timer=setTimeout(()=>this.fail(new OwnedWorkerFailure('Owned worker request timed out')),180000);
71
+ this.#pending={message,resolve,reject,timer};
72
+ this.#child.send(message,error=>{if(error)this.fail(new OwnedWorkerFailure('Owned worker channel failed'));});
73
+ });
74
+ if(command==='close'){
75
+ await this.reap(false);if(this.#failure)throw this.#failure;
76
+ }else{this.assertLive();this.#state=next as 'staged'|'checked'|'bound'|'closed';}
77
+ return result;
78
+ }
79
+ async reap(abort=true):Promise<void>{
80
+ if(this.#exited)return;
81
+ if(abort){this.#state='failed';if(this.#pending){clearTimeout(this.#pending.timer);this.#pending.reject(new OwnedWorkerFailure('Aggregate aborted'));this.#pending=undefined;}this.#child.kill('SIGTERM');}
82
+ let timer:NodeJS.Timeout|undefined;
83
+ try{await Promise.race([this.#exit,new Promise<never>((_,reject)=>{timer=setTimeout(()=>reject(new OwnedWorkerFailure('Worker did not exit')),5000);})]);}
84
+ catch{this.#child.kill('SIGKILL');await Promise.race([this.#exit,new Promise<never>((_,reject)=>{timer=setTimeout(()=>reject(new OwnedWorkerFailure('Worker could not be reaped')),5000);})]);}
85
+ finally{if(timer)clearTimeout(timer);}
86
+ if(!this.#exited)throw new OwnedWorkerFailure('Worker exit unproven');
87
+ }
88
+ }
@@ -0,0 +1,63 @@
1
+ /** Finite diagnostics only: provider errors can contain RPC credentials and payloads. */
2
+ export const sourceRpcFailures = {
3
+ 'source-history-unavailable': 'Source RPC cannot read historical state at the pinned block; configure an RPC with historical-state access without changing the pinned block.',
4
+ 'source-access-denied': 'Source RPC denied access; check the configured RPC access without exposing credentials.',
5
+ 'source-rate-limited': 'Source RPC rate limit exceeded; use an RPC with sufficient read capacity for the pinned fork.',
6
+ 'source-transport-failed': 'Source RPC transport failed; check connectivity and the RPC response timeout for the pinned fork.',
7
+ 'source-request-failed': 'Source RPC request failed.',
8
+ } as const;
9
+ export type SourceRpcFailure = keyof typeof sourceRpcFailures;
10
+
11
+ const invariantMessages = [
12
+ 'Source read failed',
13
+ 'Planning source/input/runtime identity drift',
14
+ 'Planning pinned fork/source identity mismatch',
15
+ 'Captured fork interval drift',
16
+ 'Captured fork interval closed or bound',
17
+ 'Fork audit provider mutation/identity violation',
18
+ 'Fork audit baseline/provider identity changed',
19
+ 'Pending or unobservable fork transactions',
20
+ 'Fork audit changed while enumerating',
21
+ 'Audit transaction lookup mismatch',
22
+ 'Custom input closure drift at collection completion',
23
+ 'Compiler contribution drift',
24
+ 'Compiler effective config drift',
25
+ 'Compiler package payload drift',
26
+ 'Compiler package resolution drift',
27
+ 'Compiler npm lock drift',
28
+ 'Delivery configuration/runtime drift or mismatch',
29
+ 'Source provider changed',
30
+ 'Source pinned block drift',
31
+ ] as const;
32
+ export const workerFailures: Readonly<Record<string, string>> = Object.freeze({
33
+ ...sourceRpcFailures,
34
+ ...Object.fromEntries(invariantMessages.map((message, index) => ['invariant-'+index,message])),
35
+ 'compiler-input-drift': 'Compiler input bytes changed during qualification.',
36
+ });
37
+
38
+ /** Only exact reviewed messages or a fixed category may cross the worker channel. */
39
+ export function workerFailureReason(error: unknown): string | undefined {
40
+ const source = workerSourceFailure(error);
41
+ if (source) return source;
42
+ const message = error instanceof Error ? error.message : '';
43
+ const index = invariantMessages.findIndex(known => known === message);
44
+ if (index >= 0) return 'invariant-'+index;
45
+ if (message.startsWith('Compiler input drift: ')) return 'compiler-input-drift';
46
+ return undefined;
47
+ }
48
+
49
+ export function sourceRpcFailure(error: unknown): SourceRpcFailure {
50
+ const known = workerSourceFailure(error);
51
+ if (known) return known;
52
+ const message = error instanceof Error ? error.message : '';
53
+ if (/archive|historical\s+state|missing trie node|state.*(?:unavailable|not available)/i.test(message)) return 'source-history-unavailable';
54
+ if (/too many requests|rate.?limit/i.test(message) || (error as {code?:unknown} | null)?.code === -32005) return 'source-rate-limited';
55
+ if (/\b(?:401|403)\b|unauthorized|forbidden|authentication|invalid api key/i.test(message)) return 'source-access-denied';
56
+ if (/socket|ECONNRESET|ECONNREFUSED|UND_ERR_|timed? ?out|timeout|fetch failed/i.test(message)) return 'source-transport-failed';
57
+ return 'source-request-failed';
58
+ }
59
+
60
+ export function workerSourceFailure(error: unknown): SourceRpcFailure | undefined {
61
+ const message = error instanceof Error ? error.message : '';
62
+ return (Object.keys(sourceRpcFailures) as SourceRpcFailure[]).find(reason => message.includes(sourceRpcFailures[reason]));
63
+ }
@@ -0,0 +1,39 @@
1
+ /** Actual multi-root codec projections; selected task order belongs to the canonical codec. */
2
+ import {readDeliverySource,readOwnedDeliverySource} from './source';
3
+ import type {DeliveryRequest} from './protocol';
4
+ import {canonicalJson,deepFreeze,semanticHash} from '../workflow/lib/canonicalData';
5
+ export function openAggregateSources(input:{workspaceRoot:string;projectRoot:string;requests:readonly DeliveryRequest[]}) {
6
+ const read=()=>{
7
+ const sources=input.requests.map(request=>readOwnedDeliverySource({workspaceRoot:input.workspaceRoot,projectRoot:input.projectRoot,request}));
8
+ const groups=new Map<string,typeof sources>();
9
+ for(const source of sources){const key=source.request.sourceRef.path+'\0'+source.request.sourceRef.taskId;const group=groups.get(key)??[];group.push(source);groups.set(key,group);}
10
+ const definitions=[];const tasks=new Map<string,unknown>(),lanes=new Map<string,unknown>();
11
+ let identity:string|undefined;
12
+ for(const group of groups.values()){
13
+ const first=group[0];
14
+ const projection=readDeliverySource({workspaceRoot:input.workspaceRoot,projectRoot:input.projectRoot,request:first.request,
15
+ sourceRoots:group.map(source=>source.invocation.task.planKey)});
16
+ if(group.some(source=>source.observation.sha256!==projection.observation.sha256))throw new Error('Handoff changed during multi-root source capture');
17
+ const definition=projection.sourceDefinition;
18
+ const currentIdentity=canonicalJson([definition.contract,definition.schema,definition.taskId,definition.flow??null]);
19
+ if(identity!==undefined&&identity!==currentIdentity)throw new Error('Conflicting aggregate handoff identity');
20
+ identity=currentIdentity;
21
+ for(const [key,lane] of Object.entries(definition.lanes)){
22
+ if(lanes.has(key)&&canonicalJson(lanes.get(key))!==canonicalJson(lane))throw new Error('Conflicting aggregate lane definition');
23
+ lanes.set(key,lane);
24
+ }
25
+ // Detect conflicting duplicates across documents without sorting/reconstructing any codec task list.
26
+ for(const task of projection.sourceDefinition.tasks){const key=first.request.sourceRef.taskId+'\0'+task.planKey;
27
+ if(tasks.has(key)&&canonicalJson(tasks.get(key))!==canonicalJson(task))throw new Error('Conflicting aggregate source definition');tasks.set(key,task);
28
+ }
29
+ definitions.push({path:first.request.sourceRef.path,definition:projection.sourceDefinition});
30
+ }
31
+ return {sources,definitions:deepFreeze(definitions)};
32
+ };
33
+ const initial=read();
34
+ return Object.freeze({...initial,sourceDefinitionHash:semanticHash(initial.definitions),assertUnchanged(){
35
+ const current=read();
36
+ if(canonicalJson(current.definitions)!==canonicalJson(initial.definitions))throw new Error('Aggregate source definition drift');
37
+ for(let i=0;i<current.sources.length;i++)if(canonicalJson(current.sources[i].invocation.task.scope)!==canonicalJson(initial.sources[i].invocation.task.scope))throw new Error('Aggregate invocation drift');
38
+ }});
39
+ }
@@ -0,0 +1,57 @@
1
+ /** Package-owned EVM source read capability, using the workflow's reviewed allowlist. */
2
+ import http from 'node:http';
3
+ import {randomUUID} from 'node:crypto';
4
+ import {isAllowedSourceRpcMethod} from '../workflow/lib/sourceRpcPolicy';
5
+ import type {DeliveryRequest} from './protocol';
6
+ import type {HardhatRuntimeEnvironment} from 'hardhat/types';
7
+ import {sourceRpcFailure,sourceRpcFailures} from './aggregate-diagnostics';
8
+ export interface SourceHandshake {
9
+ version:1;session:string;epoch:string;target:string;proxyUrl:string;
10
+ snapshot:{version:1;sourceNetwork:string;chainId:number;blockNumber:number;blockHash:string;runner:{kind:'hardhat';version:'2.26.3'}};
11
+ }
12
+ export async function openOwnedSource(hre:HardhatRuntimeEnvironment,request:DeliveryRequest,session:string,epoch:string):Promise<{
13
+ handshake:SourceHandshake;check():Promise<void>;close():Promise<void>;
14
+ }> {
15
+ if(hre.network.name!==request.network)throw new Error('Source HRE network mismatch');
16
+ const provider=hre.network.provider;
17
+ const rpc=async(method:string,params:unknown[]=[])=>{
18
+ try{return await provider.request({method,params});}
19
+ catch(cause){throw new Error(sourceRpcFailures[sourceRpcFailure(cause)]);}
20
+ };
21
+ const chainId=Number(BigInt(await rpc('eth_chainId') as string));
22
+ if(!Number.isSafeInteger(chainId)||chainId!==hre.network.config.chainId)throw new Error('Source chain identity mismatch');
23
+ const tag=request.fork?'0x'+request.fork.blockNumber.toString(16):'latest';
24
+ const block=await rpc('eth_getBlockByNumber',[tag,false]) as any;
25
+ if(!block||!/^0x[a-fA-F0-9]{64}$/.test(block.hash)||!/^0x[\da-f]+$/i.test(block.number))throw new Error('Source pinned block unavailable');
26
+ const blockNumber=Number(BigInt(block.number)),blockHash=block.hash.toLowerCase();
27
+ if(request.fork&&(request.fork.blockNumber!==blockNumber||request.fork.blockHash.toLowerCase()!==blockHash))throw new Error('Source pinned block mismatch');
28
+ const token=randomUUID(),endpoint='/'+token;
29
+ const reply=(res:http.ServerResponse,status:number,value:unknown)=>{const body=JSON.stringify(value);res.writeHead(status,{'content-type':'application/json','content-length':Buffer.byteLength(body)});res.end(body);};
30
+ const forward=async(raw:any)=>{
31
+ const error=(code:number,message:string)=>({jsonrpc:'2.0',id:raw?.id??null,error:{code,message}});
32
+ if(!raw||typeof raw!=='object'||Array.isArray(raw)||raw.jsonrpc!=='2.0'||typeof raw.method!=='string'||(raw.params!==undefined&&!Array.isArray(raw.params)))return error(-32600,'Invalid JSON-RPC request');
33
+ if(!isAllowedSourceRpcMethod(raw.method))return error(-32601,'Source RPC method is not allowed');
34
+ try{return {jsonrpc:'2.0',id:raw.id??null,result:await rpc(raw.method,raw.params??[])};}catch(cause){return error(-32000,sourceRpcFailures[sourceRpcFailure(cause)]);}
35
+ };
36
+ const server=http.createServer(async(req,res)=>{
37
+ if(req.method!=='POST'||req.url!==endpoint){reply(res,404,{error:'Unknown JSON-RPC endpoint'});return;}
38
+ try{
39
+ const chunks:Buffer[]=[];let size=0;
40
+ for await(const chunk of req){size+=chunk.length;if(size>10*1024*1024)throw new Error();chunks.push(Buffer.from(chunk));}
41
+ const raw=JSON.parse(Buffer.concat(chunks).toString('utf8'));
42
+ reply(res,200,Array.isArray(raw)?await Promise.all(raw.map(forward)):await forward(raw));
43
+ }catch{reply(res,400,{error:'Invalid JSON-RPC payload'});}
44
+ });
45
+ await new Promise<void>((resolve,reject)=>{server.once('error',reject);server.listen(0,'127.0.0.1',resolve);});
46
+ const address=server.address();if(!address||typeof address==='string')throw new Error('Source proxy did not bind');
47
+ return {
48
+ handshake:{version:1,session,epoch,target:request.network,proxyUrl:`http://127.0.0.1:${address.port}${endpoint}`,
49
+ snapshot:{version:1,sourceNetwork:request.network,chainId,blockNumber,blockHash,runner:{kind:'hardhat',version:'2.26.3'}}},
50
+ async check(){
51
+ if(hre.network.provider!==provider||hre.network.name!==request.network)throw new Error('Source provider changed');
52
+ const [chain,current]=await Promise.all([rpc('eth_chainId'),rpc('eth_getBlockByNumber',['0x'+blockNumber.toString(16),false])]) as any[];
53
+ if(Number(BigInt(chain))!==chainId||current?.hash?.toLowerCase()!==blockHash||Number(BigInt(current.number))!==blockNumber)throw new Error('Source pinned block drift');
54
+ },
55
+ close:()=>new Promise<void>((resolve,reject)=>{server.close(error=>error?reject(error):resolve());server.closeAllConnections();}),
56
+ };
57
+ }