gate-evm-tools 1.0.28 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/README.md +16 -1
  2. package/bin/cli.js +3 -0
  3. package/bin/delivery.cjs +51 -0
  4. package/bin/manifest-bootstrap.js +4 -15
  5. package/bin/workflow.cjs +1 -1
  6. package/dist/commands/plan/file-store.d.ts.map +1 -0
  7. package/dist/commands/plan/generate-deployment.d.ts +48 -0
  8. package/dist/commands/plan/generate-deployment.d.ts.map +1 -0
  9. package/dist/commands/plan/generate-deployment.js +211 -0
  10. package/dist/commands/plan/generate-deployment.js.map +1 -0
  11. package/dist/commands/plan/helpers.d.ts.map +1 -0
  12. package/dist/commands/plan/index.d.ts +3 -0
  13. package/dist/commands/plan/index.d.ts.map +1 -0
  14. package/dist/commands/plan/index.js +88 -0
  15. package/dist/commands/plan/index.js.map +1 -0
  16. package/dist/commands/sync.js +1 -1
  17. package/dist/commands/sync.js.map +1 -1
  18. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  19. package/dist/core/BytecodeChecker.js +27 -8
  20. package/dist/core/BytecodeChecker.js.map +1 -1
  21. package/dist/core/preparation/artifacts.d.ts +2 -0
  22. package/dist/core/preparation/artifacts.d.ts.map +1 -1
  23. package/dist/core/preparation/artifacts.js +9 -3
  24. package/dist/core/preparation/artifacts.js.map +1 -1
  25. package/dist/core/preparation/evm.d.ts +38 -2
  26. package/dist/core/preparation/evm.d.ts.map +1 -1
  27. package/dist/core/preparation/evm.js +104 -32
  28. package/dist/core/preparation/evm.js.map +1 -1
  29. package/dist/core/preparation/evmManifestSync.d.ts +63 -0
  30. package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
  31. package/dist/core/preparation/evmManifestSync.js +146 -0
  32. package/dist/core/preparation/evmManifestSync.js.map +1 -0
  33. package/dist/core/preparation/index.d.ts +40 -2
  34. package/dist/core/preparation/index.d.ts.map +1 -1
  35. package/dist/core/preparation/index.js +3 -3
  36. package/dist/core/preparation/index.js.map +1 -1
  37. package/dist/core/preparation/manifest.d.ts +15 -3
  38. package/dist/core/preparation/manifest.d.ts.map +1 -1
  39. package/dist/core/preparation/manifest.js +21 -26
  40. package/dist/core/preparation/manifest.js.map +1 -1
  41. package/dist/core/preparation/normalize.d.ts.map +1 -1
  42. package/dist/core/preparation/normalize.js +14 -9
  43. package/dist/core/preparation/normalize.js.map +1 -1
  44. package/dist/core/preparation/types.d.ts +7 -2
  45. package/dist/core/preparation/types.d.ts.map +1 -1
  46. package/dist/custody/hardhat-runtime.d.ts.map +1 -1
  47. package/dist/custody/hardhat-runtime.js +2 -0
  48. package/dist/custody/hardhat-runtime.js.map +1 -1
  49. package/dist/custody/hardhat.d.ts +1 -0
  50. package/dist/custody/hardhat.d.ts.map +1 -1
  51. package/dist/custody/hardhat.js +1 -0
  52. package/dist/custody/hardhat.js.map +1 -1
  53. package/dist/custody/index.d.ts +1 -0
  54. package/dist/custody/index.d.ts.map +1 -1
  55. package/dist/custody/index.js +1 -0
  56. package/dist/custody/index.js.map +1 -1
  57. package/dist/custody/provider-wait.d.ts +13 -0
  58. package/dist/custody/provider-wait.d.ts.map +1 -0
  59. package/dist/custody/provider-wait.js +78 -0
  60. package/dist/custody/provider-wait.js.map +1 -0
  61. package/dist/delivery/policy.d.ts +6 -0
  62. package/dist/delivery/policy.d.ts.map +1 -0
  63. package/dist/delivery/policy.js +24 -0
  64. package/dist/delivery/policy.js.map +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/sync/index.d.ts +15 -0
  69. package/dist/sync/index.d.ts.map +1 -1
  70. package/dist/sync/index.js +8 -0
  71. package/dist/sync/index.js.map +1 -1
  72. package/dist/workflow/index.d.ts +6 -1
  73. package/dist/workflow/index.d.ts.map +1 -1
  74. package/dist/workflow/index.js +4 -0
  75. package/dist/workflow/index.js.map +1 -1
  76. package/dist-cjs/core/BytecodeChecker.js +526 -0
  77. package/dist-cjs/core/BytecodeChecker.js.map +1 -0
  78. package/dist-cjs/core/legacyProxyArtifact.js +42 -0
  79. package/dist-cjs/core/legacyProxyArtifact.js.map +1 -0
  80. package/dist-cjs/core/preparation/artifacts.js +11 -4
  81. package/dist-cjs/core/preparation/artifacts.js.map +1 -1
  82. package/dist-cjs/core/preparation/evm.js +105 -32
  83. package/dist-cjs/core/preparation/evm.js.map +1 -1
  84. package/dist-cjs/core/preparation/evmManifestSync.js +155 -0
  85. package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -0
  86. package/dist-cjs/core/preparation/index.js +3 -3
  87. package/dist-cjs/core/preparation/index.js.map +1 -1
  88. package/dist-cjs/core/preparation/manifest.js +23 -28
  89. package/dist-cjs/core/preparation/manifest.js.map +1 -1
  90. package/dist-cjs/core/preparation/normalize.js +14 -9
  91. package/dist-cjs/core/preparation/normalize.js.map +1 -1
  92. package/dist-cjs/custody/hardhat-runtime.js +2 -0
  93. package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
  94. package/dist-cjs/custody/hardhat.js +3 -1
  95. package/dist-cjs/custody/hardhat.js.map +1 -1
  96. package/dist-cjs/custody/index.js +3 -1
  97. package/dist-cjs/custody/index.js.map +1 -1
  98. package/dist-cjs/custody/provider-wait.js +81 -0
  99. package/dist-cjs/custody/provider-wait.js.map +1 -0
  100. package/dist-cjs/delivery/policy.js +29 -0
  101. package/dist-cjs/delivery/policy.js.map +1 -0
  102. package/dist-cjs/sync/index.js +8 -0
  103. package/dist-cjs/sync/index.js.map +1 -1
  104. package/dist-cjs/workflow/index.js +12 -1
  105. package/dist-cjs/workflow/index.js.map +1 -1
  106. package/dist-runtime/config/openzeppelin.d.ts +2 -1
  107. package/dist-runtime/config/openzeppelin.js +2 -19
  108. package/dist-runtime/config/openzeppelin.js.map +1 -1
  109. package/dist-runtime/delivery/abi.d.ts +14 -0
  110. package/dist-runtime/delivery/abi.js +161 -0
  111. package/dist-runtime/delivery/abi.js.map +1 -0
  112. package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
  113. package/dist-runtime/delivery/aggregate-bootstrap.js +40 -0
  114. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
  115. package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
  116. package/dist-runtime/delivery/aggregate-channel.js +155 -0
  117. package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
  118. package/dist-runtime/delivery/aggregate-inputs.d.ts +168 -0
  119. package/dist-runtime/delivery/aggregate-inputs.js +57 -0
  120. package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
  121. package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
  122. package/dist-runtime/delivery/aggregate-source.js +79 -0
  123. package/dist-runtime/delivery/aggregate-source.js.map +1 -0
  124. package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
  125. package/dist-runtime/delivery/aggregate-worker.js +191 -0
  126. package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
  127. package/dist-runtime/delivery/aggregate.d.ts +51 -0
  128. package/dist-runtime/delivery/aggregate.js +190 -0
  129. package/dist-runtime/delivery/aggregate.js.map +1 -0
  130. package/dist-runtime/delivery/bindings.d.ts +21 -0
  131. package/dist-runtime/delivery/bindings.js +53 -0
  132. package/dist-runtime/delivery/bindings.js.map +1 -0
  133. package/dist-runtime/delivery/check-code.d.ts +19 -0
  134. package/dist-runtime/delivery/check-code.js +63 -0
  135. package/dist-runtime/delivery/check-code.js.map +1 -0
  136. package/dist-runtime/delivery/closure-format.d.ts +77 -0
  137. package/dist-runtime/delivery/closure-format.js +225 -0
  138. package/dist-runtime/delivery/closure-format.js.map +1 -0
  139. package/dist-runtime/delivery/codec-pin.d.ts +2 -0
  140. package/dist-runtime/delivery/codec-pin.js +7 -0
  141. package/dist-runtime/delivery/codec-pin.js.map +1 -0
  142. package/dist-runtime/delivery/codec.d.ts +19 -0
  143. package/dist-runtime/delivery/codec.js +73 -0
  144. package/dist-runtime/delivery/codec.js.map +1 -0
  145. package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
  146. package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
  147. package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
  148. package/dist-runtime/delivery/compiler-files.d.ts +40 -0
  149. package/dist-runtime/delivery/compiler-files.js +220 -0
  150. package/dist-runtime/delivery/compiler-files.js.map +1 -0
  151. package/dist-runtime/delivery/compiler-io.d.ts +2 -0
  152. package/dist-runtime/delivery/compiler-io.js +13 -0
  153. package/dist-runtime/delivery/compiler-io.js.map +1 -0
  154. package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
  155. package/dist-runtime/delivery/compiler-pins.js +147 -0
  156. package/dist-runtime/delivery/compiler-pins.js.map +1 -0
  157. package/dist-runtime/delivery/compiler.d.ts +188 -0
  158. package/dist-runtime/delivery/compiler.js +850 -0
  159. package/dist-runtime/delivery/compiler.js.map +1 -0
  160. package/dist-runtime/delivery/config.d.ts +48 -0
  161. package/dist-runtime/delivery/config.js +99 -0
  162. package/dist-runtime/delivery/config.js.map +1 -0
  163. package/dist-runtime/delivery/configuration-definition.d.ts +22 -0
  164. package/dist-runtime/delivery/configuration-definition.js +316 -0
  165. package/dist-runtime/delivery/configuration-definition.js.map +1 -0
  166. package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
  167. package/dist-runtime/delivery/configuration-hre.js +198 -0
  168. package/dist-runtime/delivery/configuration-hre.js.map +1 -0
  169. package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
  170. package/dist-runtime/delivery/configuration-runtime.js +248 -0
  171. package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
  172. package/dist-runtime/delivery/configuration.d.ts +35 -0
  173. package/dist-runtime/delivery/configuration.js +83 -0
  174. package/dist-runtime/delivery/configuration.js.map +1 -0
  175. package/dist-runtime/delivery/create2.d.ts +3 -0
  176. package/dist-runtime/delivery/create2.js +48 -0
  177. package/dist-runtime/delivery/create2.js.map +1 -0
  178. package/dist-runtime/delivery/custom-closure.d.ts +27 -0
  179. package/dist-runtime/delivery/custom-closure.js +818 -0
  180. package/dist-runtime/delivery/custom-closure.js.map +1 -0
  181. package/dist-runtime/delivery/custom-format.d.ts +35 -0
  182. package/dist-runtime/delivery/custom-format.js +383 -0
  183. package/dist-runtime/delivery/custom-format.js.map +1 -0
  184. package/dist-runtime/delivery/custom.d.ts +32 -0
  185. package/dist-runtime/delivery/custom.js +158 -0
  186. package/dist-runtime/delivery/custom.js.map +1 -0
  187. package/dist-runtime/delivery/data.d.ts +7 -0
  188. package/dist-runtime/delivery/data.js +86 -0
  189. package/dist-runtime/delivery/data.js.map +1 -0
  190. package/dist-runtime/delivery/development.d.ts +91 -0
  191. package/dist-runtime/delivery/development.js +395 -0
  192. package/dist-runtime/delivery/development.js.map +1 -0
  193. package/dist-runtime/delivery/engine.d.ts +9 -0
  194. package/dist-runtime/delivery/engine.js +23 -0
  195. package/dist-runtime/delivery/engine.js.map +1 -0
  196. package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
  197. package/dist-runtime/delivery/eoa-observation.js +145 -0
  198. package/dist-runtime/delivery/eoa-observation.js.map +1 -0
  199. package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
  200. package/dist-runtime/delivery/eoa-signed.js +74 -0
  201. package/dist-runtime/delivery/eoa-signed.js.map +1 -0
  202. package/dist-runtime/delivery/eoa.d.ts +81 -0
  203. package/dist-runtime/delivery/eoa.js +274 -0
  204. package/dist-runtime/delivery/eoa.js.map +1 -0
  205. package/dist-runtime/delivery/execution-db.d.ts +20 -0
  206. package/dist-runtime/delivery/execution-db.js +153 -0
  207. package/dist-runtime/delivery/execution-db.js.map +1 -0
  208. package/dist-runtime/delivery/execution-files.d.ts +9 -0
  209. package/dist-runtime/delivery/execution-files.js +138 -0
  210. package/dist-runtime/delivery/execution-files.js.map +1 -0
  211. package/dist-runtime/delivery/execution-model.d.ts +56 -0
  212. package/dist-runtime/delivery/execution-model.js +66 -0
  213. package/dist-runtime/delivery/execution-model.js.map +1 -0
  214. package/dist-runtime/delivery/execution-store.d.ts +48 -0
  215. package/dist-runtime/delivery/execution-store.js +361 -0
  216. package/dist-runtime/delivery/execution-store.js.map +1 -0
  217. package/dist-runtime/delivery/existing-code.d.ts +37 -0
  218. package/dist-runtime/delivery/existing-code.js +75 -0
  219. package/dist-runtime/delivery/existing-code.js.map +1 -0
  220. package/dist-runtime/delivery/export.d.ts +51 -0
  221. package/dist-runtime/delivery/export.js +69 -0
  222. package/dist-runtime/delivery/export.js.map +1 -0
  223. package/dist-runtime/delivery/forkAudit.d.ts +119 -0
  224. package/dist-runtime/delivery/forkAudit.js +473 -0
  225. package/dist-runtime/delivery/forkAudit.js.map +1 -0
  226. package/dist-runtime/delivery/hardhat.d.ts +3 -0
  227. package/dist-runtime/delivery/hardhat.js +45 -0
  228. package/dist-runtime/delivery/hardhat.js.map +1 -0
  229. package/dist-runtime/delivery/history-registration.d.ts +2 -0
  230. package/dist-runtime/delivery/history-registration.js +17 -0
  231. package/dist-runtime/delivery/history-registration.js.map +1 -0
  232. package/dist-runtime/delivery/identities.d.ts +22 -0
  233. package/dist-runtime/delivery/identities.js +97 -0
  234. package/dist-runtime/delivery/identities.js.map +1 -0
  235. package/dist-runtime/delivery/input-files.d.ts +5 -0
  236. package/dist-runtime/delivery/input-files.js +70 -0
  237. package/dist-runtime/delivery/input-files.js.map +1 -0
  238. package/dist-runtime/delivery/inputs.d.ts +62 -0
  239. package/dist-runtime/delivery/inputs.js +187 -0
  240. package/dist-runtime/delivery/inputs.js.map +1 -0
  241. package/dist-runtime/delivery/journal.d.ts +35 -0
  242. package/dist-runtime/delivery/journal.js +270 -0
  243. package/dist-runtime/delivery/journal.js.map +1 -0
  244. package/dist-runtime/delivery/manifest.d.ts +14 -0
  245. package/dist-runtime/delivery/manifest.js +68 -0
  246. package/dist-runtime/delivery/manifest.js.map +1 -0
  247. package/dist-runtime/delivery/materialization.d.ts +20 -0
  248. package/dist-runtime/delivery/materialization.js +138 -0
  249. package/dist-runtime/delivery/materialization.js.map +1 -0
  250. package/dist-runtime/delivery/observations.d.ts +31 -0
  251. package/dist-runtime/delivery/observations.js +38 -0
  252. package/dist-runtime/delivery/observations.js.map +1 -0
  253. package/dist-runtime/delivery/parameters.d.ts +53 -0
  254. package/dist-runtime/delivery/parameters.js +257 -0
  255. package/dist-runtime/delivery/parameters.js.map +1 -0
  256. package/dist-runtime/delivery/pending.d.ts +70 -0
  257. package/dist-runtime/delivery/pending.js +99 -0
  258. package/dist-runtime/delivery/pending.js.map +1 -0
  259. package/dist-runtime/delivery/plan.d.ts +50 -0
  260. package/dist-runtime/delivery/plan.js +209 -0
  261. package/dist-runtime/delivery/plan.js.map +1 -0
  262. package/dist-runtime/delivery/planning.d.ts +81 -0
  263. package/dist-runtime/delivery/planning.js +302 -0
  264. package/dist-runtime/delivery/planning.js.map +1 -0
  265. package/dist-runtime/delivery/policy.d.ts +4 -0
  266. package/dist-runtime/delivery/policy.js +9 -0
  267. package/dist-runtime/delivery/policy.js.map +1 -0
  268. package/dist-runtime/delivery/preparation.d.ts +6 -0
  269. package/dist-runtime/delivery/preparation.js +158 -0
  270. package/dist-runtime/delivery/preparation.js.map +1 -0
  271. package/dist-runtime/delivery/production-environment.d.ts +2 -0
  272. package/dist-runtime/delivery/production-environment.js +12 -0
  273. package/dist-runtime/delivery/production-environment.js.map +1 -0
  274. package/dist-runtime/delivery/production-finalization.d.ts +86 -0
  275. package/dist-runtime/delivery/production-finalization.js +278 -0
  276. package/dist-runtime/delivery/production-finalization.js.map +1 -0
  277. package/dist-runtime/delivery/production.d.ts +461 -0
  278. package/dist-runtime/delivery/production.js +396 -0
  279. package/dist-runtime/delivery/production.js.map +1 -0
  280. package/dist-runtime/delivery/project-files.d.ts +8 -0
  281. package/dist-runtime/delivery/project-files.js +82 -0
  282. package/dist-runtime/delivery/project-files.js.map +1 -0
  283. package/dist-runtime/delivery/project.d.ts +15 -0
  284. package/dist-runtime/delivery/project.js +157 -0
  285. package/dist-runtime/delivery/project.js.map +1 -0
  286. package/dist-runtime/delivery/protocol.d.ts +49 -0
  287. package/dist-runtime/delivery/protocol.js +112 -0
  288. package/dist-runtime/delivery/protocol.js.map +1 -0
  289. package/dist-runtime/delivery/references.d.ts +19 -0
  290. package/dist-runtime/delivery/references.js +84 -0
  291. package/dist-runtime/delivery/references.js.map +1 -0
  292. package/dist-runtime/delivery/release-graph.d.ts +93 -0
  293. package/dist-runtime/delivery/release-graph.js +106 -0
  294. package/dist-runtime/delivery/release-graph.js.map +1 -0
  295. package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
  296. package/dist-runtime/delivery/release-history-capture.js +76 -0
  297. package/dist-runtime/delivery/release-history-capture.js.map +1 -0
  298. package/dist-runtime/delivery/release-history.d.ts +43 -0
  299. package/dist-runtime/delivery/release-history.js +246 -0
  300. package/dist-runtime/delivery/release-history.js.map +1 -0
  301. package/dist-runtime/delivery/release.d.ts +172 -0
  302. package/dist-runtime/delivery/release.js +209 -0
  303. package/dist-runtime/delivery/release.js.map +1 -0
  304. package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
  305. package/dist-runtime/delivery/safe-manifest.js +13 -0
  306. package/dist-runtime/delivery/safe-manifest.js.map +1 -0
  307. package/dist-runtime/delivery/safe-observation.d.ts +30 -0
  308. package/dist-runtime/delivery/safe-observation.js +487 -0
  309. package/dist-runtime/delivery/safe-observation.js.map +1 -0
  310. package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
  311. package/dist-runtime/delivery/safe-prepare.js +81 -0
  312. package/dist-runtime/delivery/safe-prepare.js.map +1 -0
  313. package/dist-runtime/delivery/safe.d.ts +91 -0
  314. package/dist-runtime/delivery/safe.js +243 -0
  315. package/dist-runtime/delivery/safe.js.map +1 -0
  316. package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
  317. package/dist-runtime/delivery/same-fork-baseline.js +20 -0
  318. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
  319. package/dist-runtime/delivery/setup.d.ts +31 -0
  320. package/dist-runtime/delivery/setup.js +215 -0
  321. package/dist-runtime/delivery/setup.js.map +1 -0
  322. package/dist-runtime/delivery/source.d.ts +41 -0
  323. package/dist-runtime/delivery/source.js +137 -0
  324. package/dist-runtime/delivery/source.js.map +1 -0
  325. package/dist-runtime/delivery/target-fields.d.ts +2 -0
  326. package/dist-runtime/delivery/target-fields.js +11 -0
  327. package/dist-runtime/delivery/target-fields.js.map +1 -0
  328. package/dist-runtime/delivery/validation.d.ts +9 -0
  329. package/dist-runtime/delivery/validation.js +150 -0
  330. package/dist-runtime/delivery/validation.js.map +1 -0
  331. package/dist-runtime/delivery/verification.d.ts +16 -0
  332. package/dist-runtime/delivery/verification.js +65 -0
  333. package/dist-runtime/delivery/verification.js.map +1 -0
  334. package/dist-runtime/migrate.js +1 -0
  335. package/dist-runtime/migrate.js.map +1 -1
  336. package/dist-runtime/miner/binary.d.ts +2 -0
  337. package/dist-runtime/miner/binary.js +54 -0
  338. package/dist-runtime/miner/binary.js.map +1 -0
  339. package/dist-runtime/miner/cli.d.ts +1 -0
  340. package/dist-runtime/miner/cli.js +131 -0
  341. package/dist-runtime/miner/cli.js.map +1 -0
  342. package/dist-runtime/miner/index.d.ts +5 -0
  343. package/dist-runtime/miner/index.js +13 -0
  344. package/dist-runtime/miner/index.js.map +1 -0
  345. package/dist-runtime/miner/request.d.ts +7 -0
  346. package/dist-runtime/miner/request.js +73 -0
  347. package/dist-runtime/miner/request.js.map +1 -0
  348. package/dist-runtime/miner/runner.d.ts +2 -0
  349. package/dist-runtime/miner/runner.js +131 -0
  350. package/dist-runtime/miner/runner.js.map +1 -0
  351. package/dist-runtime/miner/types.d.ts +89 -0
  352. package/dist-runtime/miner/types.js +3 -0
  353. package/dist-runtime/miner/types.js.map +1 -0
  354. package/dist-runtime/miner/verify.d.ts +2 -0
  355. package/dist-runtime/miner/verify.js +75 -0
  356. package/dist-runtime/miner/verify.js.map +1 -0
  357. package/dist-runtime/runtime-identity.json +2 -2
  358. package/dist-runtime/vendor/plan-codec/index.cjs +820 -0
  359. package/dist-runtime/vendor/plan-codec/index.d.cts +32 -0
  360. package/dist-runtime/vendor/plan-codec/provenance.json +24 -0
  361. package/dist-runtime/workflow/engine.d.ts +14 -0
  362. package/dist-runtime/workflow/engine.js +160 -0
  363. package/dist-runtime/workflow/engine.js.map +1 -0
  364. package/dist-runtime/workflow/lib/authority.d.ts +6 -3
  365. package/dist-runtime/workflow/lib/authority.js.map +1 -1
  366. package/dist-runtime/workflow/lib/calls.d.ts +1 -1
  367. package/dist-runtime/workflow/lib/calls.js +43 -34
  368. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  369. package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
  370. package/dist-runtime/workflow/lib/canonicalData.js +68 -0
  371. package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
  372. package/dist-runtime/workflow/lib/config.d.ts +3 -1
  373. package/dist-runtime/workflow/lib/config.js.map +1 -1
  374. package/dist-runtime/workflow/lib/context.d.ts +76 -0
  375. package/dist-runtime/workflow/lib/context.js +3 -0
  376. package/dist-runtime/workflow/lib/context.js.map +1 -0
  377. package/dist-runtime/workflow/lib/create2.d.ts +1 -1
  378. package/dist-runtime/workflow/lib/create2.js +9 -12
  379. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  380. package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
  381. package/dist-runtime/workflow/lib/deployments.js +5 -13
  382. package/dist-runtime/workflow/lib/deployments.js.map +1 -1
  383. package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
  384. package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
  385. package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
  386. package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
  387. package/dist-runtime/workflow/lib/executionPlan.js +15 -210
  388. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
  389. package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
  390. package/dist-runtime/workflow/lib/gateTool.js +20 -10
  391. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  392. package/dist-runtime/workflow/lib/gateToolSync.d.ts +1 -1
  393. package/dist-runtime/workflow/lib/gateToolSync.js +3 -2
  394. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  395. package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
  396. package/dist-runtime/workflow/lib/operationNames.js +34 -0
  397. package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
  398. package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
  399. package/dist-runtime/workflow/lib/parameters.js +6 -22
  400. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  401. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
  402. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
  403. package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
  404. package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
  405. package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
  406. package/dist-runtime/workflow/lib/plan.d.ts +55 -0
  407. package/dist-runtime/workflow/lib/plan.js +324 -0
  408. package/dist-runtime/workflow/lib/plan.js.map +1 -0
  409. package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
  410. package/dist-runtime/workflow/lib/planCli.js +279 -0
  411. package/dist-runtime/workflow/lib/planCli.js.map +1 -0
  412. package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
  413. package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
  414. package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
  415. package/dist-runtime/workflow/lib/proxy.d.ts +3 -2
  416. package/dist-runtime/workflow/lib/proxy.js +3 -4
  417. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  418. package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
  419. package/dist-runtime/workflow/lib/runtime.js +48 -0
  420. package/dist-runtime/workflow/lib/runtime.js.map +1 -0
  421. package/dist-runtime/workflow/lib/signer.d.ts +3 -2
  422. package/dist-runtime/workflow/lib/signer.js +18 -18
  423. package/dist-runtime/workflow/lib/signer.js.map +1 -1
  424. package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
  425. package/dist-runtime/workflow/lib/simulation.js +39 -31
  426. package/dist-runtime/workflow/lib/simulation.js.map +1 -1
  427. package/dist-runtime/workflow/lib/state.js +3 -3
  428. package/dist-runtime/workflow/lib/state.js.map +1 -1
  429. package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
  430. package/dist-runtime/workflow/lib/staticValidation.js +54 -10
  431. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
  432. package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
  433. package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
  434. package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
  435. package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
  436. package/dist-runtime/workflow/lib/typedValue.js +76 -0
  437. package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
  438. package/dist-runtime/workflow/lib/validation.d.ts +23 -0
  439. package/dist-runtime/workflow/lib/validation.js +15 -0
  440. package/dist-runtime/workflow/lib/validation.js.map +1 -0
  441. package/dist-runtime/workflow/planAdd.d.ts +1 -0
  442. package/dist-runtime/workflow/planAdd.js +11 -0
  443. package/dist-runtime/workflow/planAdd.js.map +1 -0
  444. package/dist-runtime/workflow/planRead.d.ts +1 -0
  445. package/dist-runtime/workflow/planRead.js +11 -0
  446. package/dist-runtime/workflow/planRead.js.map +1 -0
  447. package/dist-runtime/workflow/planStatus.d.ts +1 -0
  448. package/dist-runtime/workflow/planStatus.js +11 -0
  449. package/dist-runtime/workflow/planStatus.js.map +1 -0
  450. package/dist-runtime/workflow/planWrite.d.ts +1 -0
  451. package/dist-runtime/workflow/planWrite.js +11 -0
  452. package/dist-runtime/workflow/planWrite.js.map +1 -0
  453. package/dist-runtime/workflow/run.d.ts +1 -40
  454. package/dist-runtime/workflow/run.js +68 -136
  455. package/dist-runtime/workflow/run.js.map +1 -1
  456. package/dist-runtime/workflow/staticValidate.js +8 -3
  457. package/dist-runtime/workflow/staticValidate.js.map +1 -1
  458. package/dist-runtime/workflow/steps/call.d.ts +1 -1
  459. package/dist-runtime/workflow/steps/check.d.ts +1 -1
  460. package/dist-runtime/workflow/steps/custom.d.ts +1 -1
  461. package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
  462. package/dist-runtime/workflow/steps/deploy.js +57 -55
  463. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  464. package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
  465. package/dist-runtime/workflow/steps/upgrade.js +62 -41
  466. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  467. package/dist-runtime/workflow/steps/view.d.ts +1 -1
  468. package/docs/compiler-qualification.md +32 -0
  469. package/docs/configuration-runtime-observation.md +29 -0
  470. package/docs/create2-miner.md +100 -0
  471. package/docs/delivery-aggregate.md +27 -0
  472. package/docs/delivery-custom-input-closure.md +51 -0
  473. package/docs/delivery-development.md +32 -0
  474. package/docs/delivery-eoa.md +46 -0
  475. package/docs/delivery-evm-manifest.md +20 -0
  476. package/docs/delivery-execution-store.md +33 -0
  477. package/docs/delivery-inputs.md +46 -0
  478. package/docs/delivery-parameters.md +65 -0
  479. package/docs/delivery-planning.md +140 -0
  480. package/docs/delivery-release.md +65 -0
  481. package/docs/delivery-safe.md +72 -0
  482. package/docs/delivery-setup.md +146 -0
  483. package/docs/delivery-source.md +67 -0
  484. package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
  485. package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
  486. package/package.json +133 -9
  487. package/resources/create2/LICENSE +21 -0
  488. package/resources/create2/README.md +9 -0
  489. package/resources/create2/darwin-arm64/smartflow_miner +0 -0
  490. package/resources/create2/darwin-x64/smartflow_miner +0 -0
  491. package/resources/create2/manifest.json +27 -0
  492. package/runtime/config/openzeppelin.ts +3 -21
  493. package/runtime/delivery/abi.ts +225 -0
  494. package/runtime/delivery/aggregate-bootstrap.ts +29 -0
  495. package/runtime/delivery/aggregate-channel.ts +85 -0
  496. package/runtime/delivery/aggregate-inputs.ts +39 -0
  497. package/runtime/delivery/aggregate-source.ts +53 -0
  498. package/runtime/delivery/aggregate-worker.ts +133 -0
  499. package/runtime/delivery/aggregate.ts +139 -0
  500. package/runtime/delivery/bindings.ts +37 -0
  501. package/runtime/delivery/check-code.ts +38 -0
  502. package/runtime/delivery/closure-format.ts +350 -0
  503. package/runtime/delivery/codec-pin.ts +3 -0
  504. package/runtime/delivery/codec.ts +50 -0
  505. package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
  506. package/runtime/delivery/compiler-files.ts +179 -0
  507. package/runtime/delivery/compiler-io.ts +10 -0
  508. package/runtime/delivery/compiler-pins.ts +143 -0
  509. package/runtime/delivery/compiler.ts +700 -0
  510. package/runtime/delivery/config.ts +93 -0
  511. package/runtime/delivery/configuration-definition.ts +133 -0
  512. package/runtime/delivery/configuration-hre.ts +130 -0
  513. package/runtime/delivery/configuration-runtime.ts +163 -0
  514. package/runtime/delivery/configuration.ts +64 -0
  515. package/runtime/delivery/create2.ts +57 -0
  516. package/runtime/delivery/custom-closure.ts +993 -0
  517. package/runtime/delivery/custom-format.ts +464 -0
  518. package/runtime/delivery/custom.ts +219 -0
  519. package/runtime/delivery/data.ts +94 -0
  520. package/runtime/delivery/development.ts +262 -0
  521. package/runtime/delivery/engine.ts +29 -0
  522. package/runtime/delivery/eoa-observation.ts +106 -0
  523. package/runtime/delivery/eoa-signed.ts +55 -0
  524. package/runtime/delivery/eoa.ts +288 -0
  525. package/runtime/delivery/execution-db.ts +131 -0
  526. package/runtime/delivery/execution-files.ts +135 -0
  527. package/runtime/delivery/execution-model.ts +102 -0
  528. package/runtime/delivery/execution-store.ts +411 -0
  529. package/runtime/delivery/existing-code.ts +44 -0
  530. package/runtime/delivery/export.ts +99 -0
  531. package/runtime/delivery/forkAudit.ts +620 -0
  532. package/runtime/delivery/hardhat.ts +38 -0
  533. package/runtime/delivery/history-registration.ts +10 -0
  534. package/runtime/delivery/identities.ts +132 -0
  535. package/runtime/delivery/input-files.ts +46 -0
  536. package/runtime/delivery/inputs.ts +197 -0
  537. package/runtime/delivery/journal.ts +201 -0
  538. package/runtime/delivery/manifest.ts +54 -0
  539. package/runtime/delivery/materialization.ts +53 -0
  540. package/runtime/delivery/observations.ts +60 -0
  541. package/runtime/delivery/parameters.ts +349 -0
  542. package/runtime/delivery/pending.ts +98 -0
  543. package/runtime/delivery/plan.ts +337 -0
  544. package/runtime/delivery/planning.ts +397 -0
  545. package/runtime/delivery/policy.ts +9 -0
  546. package/runtime/delivery/preparation.ts +224 -0
  547. package/runtime/delivery/production-environment.ts +6 -0
  548. package/runtime/delivery/production-finalization.ts +172 -0
  549. package/runtime/delivery/production.ts +375 -0
  550. package/runtime/delivery/project-files.ts +58 -0
  551. package/runtime/delivery/project.ts +117 -0
  552. package/runtime/delivery/protocol.ts +94 -0
  553. package/runtime/delivery/references.ts +106 -0
  554. package/runtime/delivery/release-graph.ts +49 -0
  555. package/runtime/delivery/release-history-capture.ts +32 -0
  556. package/runtime/delivery/release-history.ts +120 -0
  557. package/runtime/delivery/release.ts +128 -0
  558. package/runtime/delivery/safe-manifest.ts +11 -0
  559. package/runtime/delivery/safe-observation.ts +626 -0
  560. package/runtime/delivery/safe-prepare.ts +101 -0
  561. package/runtime/delivery/safe.ts +344 -0
  562. package/runtime/delivery/same-fork-baseline.ts +16 -0
  563. package/runtime/delivery/setup.ts +172 -0
  564. package/runtime/delivery/source.ts +130 -0
  565. package/runtime/delivery/target-fields.ts +7 -0
  566. package/runtime/delivery/validation.ts +247 -0
  567. package/runtime/delivery/verification.ts +47 -0
  568. package/runtime/migrate.ts +1 -0
  569. package/runtime/miner/binary.ts +41 -0
  570. package/runtime/miner/cli.ts +87 -0
  571. package/runtime/miner/index.ts +5 -0
  572. package/runtime/miner/request.ts +54 -0
  573. package/runtime/miner/runner.ts +90 -0
  574. package/runtime/miner/types.ts +71 -0
  575. package/runtime/miner/verify.ts +61 -0
  576. package/runtime/vendor/plan-codec/index.cjs +820 -0
  577. package/runtime/vendor/plan-codec/index.d.cts +32 -0
  578. package/runtime/vendor/plan-codec/provenance.json +24 -0
  579. package/runtime/workflow/engine.ts +174 -0
  580. package/runtime/workflow/lib/authority.ts +3 -3
  581. package/runtime/workflow/lib/calls.ts +46 -37
  582. package/runtime/workflow/lib/canonicalData.ts +45 -0
  583. package/runtime/workflow/lib/config.ts +1 -1
  584. package/runtime/workflow/lib/context.ts +76 -0
  585. package/runtime/workflow/lib/create2.ts +10 -12
  586. package/runtime/workflow/lib/deployments.ts +6 -14
  587. package/runtime/workflow/lib/evidencePorts.ts +20 -0
  588. package/runtime/workflow/lib/executionPlan.ts +17 -268
  589. package/runtime/workflow/lib/gateTool.ts +20 -8
  590. package/runtime/workflow/lib/gateToolSync.ts +3 -3
  591. package/runtime/workflow/lib/operationNames.ts +32 -0
  592. package/runtime/workflow/lib/parameters.ts +4 -21
  593. package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
  594. package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
  595. package/runtime/workflow/lib/plan.ts +334 -0
  596. package/runtime/workflow/lib/planCli.ts +279 -0
  597. package/runtime/workflow/lib/preparationEvidence.ts +14 -0
  598. package/runtime/workflow/lib/proxy.ts +5 -3
  599. package/runtime/workflow/lib/runtime.ts +46 -0
  600. package/runtime/workflow/lib/signer.ts +8 -5
  601. package/runtime/workflow/lib/simulation.ts +41 -17
  602. package/runtime/workflow/lib/state.ts +3 -3
  603. package/runtime/workflow/lib/staticValidation.ts +92 -11
  604. package/runtime/workflow/lib/transactionPlanner.ts +314 -0
  605. package/runtime/workflow/lib/typedValue.ts +46 -0
  606. package/runtime/workflow/lib/validation.ts +50 -0
  607. package/runtime/workflow/planAdd.ts +8 -0
  608. package/runtime/workflow/planRead.ts +8 -0
  609. package/runtime/workflow/planStatus.ts +8 -0
  610. package/runtime/workflow/planWrite.ts +8 -0
  611. package/runtime/workflow/run.ts +41 -174
  612. package/runtime/workflow/staticValidate.ts +8 -3
  613. package/runtime/workflow/steps/call.ts +1 -1
  614. package/runtime/workflow/steps/check.ts +1 -1
  615. package/runtime/workflow/steps/custom.ts +1 -1
  616. package/runtime/workflow/steps/deploy.ts +57 -58
  617. package/runtime/workflow/steps/upgrade.ts +69 -46
  618. package/runtime/workflow/steps/view.ts +1 -1
@@ -0,0 +1,464 @@
1
+ /** Pure structural parsers shared by planning and independent plan export. */
2
+ import path from 'node:path';
3
+ import { createHash } from 'node:crypto';
4
+ import { strictData } from './data';
5
+ import { portablePath } from './protocol';
6
+ import { PUBLIC_TARGET_FIELDS } from './target-fields';
7
+ import { parseBusinessReference } from './references';
8
+ import { parseCustomInputClosure, type CustomInputClosure } from './closure-format';
9
+ const { FunctionFragment }: Pick<typeof import('ethers'), 'FunctionFragment'> = require('ethers/abi');
10
+ const { isAddress }: Pick<typeof import('ethers'), 'isAddress'> = require('ethers/address');
11
+ import { deploymentInstanceId, validateDeploySaveAs } from '../workflow/lib/operationNames';
12
+ import { canonicalData, deepFreeze, exactObject, nonempty, semanticHash } from '../workflow/lib/canonicalData';
13
+ import type { WorkflowStep } from '../workflow/lib/parameters';
14
+ const bytesHash = (bytes: Buffer) => createHash('sha256').update(bytes).digest('hex');
15
+ const PUBLIC_TARGET = PUBLIC_TARGET_FIELDS;
16
+ function record(
17
+ raw: unknown,
18
+ allowed: string[],
19
+ required: string[],
20
+ label: string
21
+ ): Record<string, unknown> {
22
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
23
+ throw new Error(`${label} must be an object`);
24
+ const v = raw as Record<string, unknown>;
25
+ if (
26
+ Object.keys(v).some((k) => !allowed.includes(k)) ||
27
+ required.some((k) => !Object.hasOwn(v, k))
28
+ )
29
+ throw new Error(`${label} has unsupported or missing fields`);
30
+ return v;
31
+ }
32
+ function reference(value: unknown): boolean {
33
+ return parseBusinessReference(value) !== null;
34
+ }
35
+ function refs(value: unknown): void {
36
+ if (reference(value)) return;
37
+ if (value && typeof value === "object") Object.values(value).forEach(refs);
38
+ }
39
+ function string(v: unknown, label: string): void {
40
+ nonempty(v, label);
41
+ }
42
+ function array(v: unknown, label: string): void {
43
+ if (!Array.isArray(v) && !reference(v))
44
+ throw new Error(`${label} must be an array or reference`);
45
+ }
46
+ function quantity(v: unknown): void {
47
+ if (reference(v)) return;
48
+ if (
49
+ !(typeof v === "number" && Number.isSafeInteger(v) && v >= 0) &&
50
+ !(typeof v === "string" && /^(0x[\da-fA-F]+|\d+)$/.test(v))
51
+ )
52
+ throw new Error("Invalid nonnegative value");
53
+ if (BigInt(v as string | number) >= 2n ** 256n)
54
+ throw new Error("Value exceeds uint256");
55
+ }
56
+ function address(v: unknown, label: string): void {
57
+ if (
58
+ !reference(v) &&
59
+ (typeof v !== "string" || !isAddress(v) || /^0x0{40}$/i.test(v))
60
+ )
61
+ throw new Error(`Invalid ${label} address`);
62
+ }
63
+ function method(v: unknown): void {
64
+ string(v, "method");
65
+ if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(v as string)) return;
66
+ try {
67
+ if (FunctionFragment.from(v as string).format("sighash") !== v)
68
+ throw new Error();
69
+ } catch {
70
+ throw new Error("Invalid canonical method signature");
71
+ }
72
+ }
73
+ function upgradeCall(v: unknown): void {
74
+ const c = record(v, ["method", "fn", "args"], [], "upgrade call");
75
+ if (Object.hasOwn(c, "method") === Object.hasOwn(c, "fn"))
76
+ throw new Error("upgrade call requires one method");
77
+ method(c.method ?? c.fn);
78
+ if (c.args !== undefined) array(c.args, "upgrade args");
79
+ }
80
+ function proxyIdentifier(v: unknown): void {
81
+ if (reference(v)) return;
82
+ string(v, "proxy");
83
+ if (/^0x/i.test(v as string)) address(v, "proxy");
84
+ }
85
+ function proxy(v: unknown, deploying: boolean): void {
86
+ if (!deploying && (typeof v === "string" || reference(v))) {
87
+ proxyIdentifier(v);
88
+ return;
89
+ }
90
+ const p = record(
91
+ v,
92
+ [
93
+ "kind",
94
+ "initializer",
95
+ "unsafeAllow",
96
+ "constructorArgs",
97
+ ...(deploying ? [] : ["address", "name", "contract"]),
98
+ ],
99
+ [],
100
+ "proxy"
101
+ );
102
+ if (p.kind !== undefined && p.kind !== "uups")
103
+ throw new Error("Only UUPS proxy supported");
104
+ if (p.initializer !== undefined && p.initializer !== false)
105
+ string(p.initializer, "initializer");
106
+ if (p.constructorArgs !== undefined)
107
+ array(p.constructorArgs, "constructorArgs");
108
+ if (
109
+ p.unsafeAllow !== undefined &&
110
+ (!Array.isArray(p.unsafeAllow) ||
111
+ p.unsafeAllow.some((x) => typeof x !== "string" || !x))
112
+ )
113
+ throw new Error("Invalid unsafeAllow");
114
+ if (p.address !== undefined) address(p.address, "proxy");
115
+ for (const key of ["name", "contract"])
116
+ if (p[key] !== undefined) {
117
+ string(p[key], key);
118
+ proxyIdentifier(p[key]);
119
+ }
120
+ if (
121
+ !deploying &&
122
+ !["address", "name", "contract"].some((k) => p[k] !== undefined)
123
+ )
124
+ throw new Error("Upgrade proxy requires address/name/contract");
125
+ }
126
+ export function parseNativeOperation(raw: unknown): WorkflowStep {
127
+ const data = strictData(raw, "operation");
128
+ const base = record(
129
+ data,
130
+ [
131
+ "id",
132
+ "kind",
133
+ "contract",
134
+ "abi",
135
+ "address",
136
+ "deployment",
137
+ "saveAs",
138
+ "calls",
139
+ "strategy",
140
+ "args",
141
+ "create2",
142
+ "proxy",
143
+ "upgradeableStrategy",
144
+ "firstUpgrade",
145
+ "constructorArgs",
146
+ "call",
147
+ "proxyKind",
148
+ ],
149
+ ["id", "kind", "contract"],
150
+ "operation"
151
+ );
152
+ string(base.id, "operation id");
153
+ if ((base.id as string).length > 200)
154
+ throw new Error("operation id exceeds 200 characters");
155
+ string(base.contract, "contract");
156
+ const kind = base.kind;
157
+ if (!["deploy", "upgrade", "call", "view", "check"].includes(String(kind)))
158
+ throw new Error("Unknown or nested custom operation kind");
159
+ const keys = [
160
+ "id",
161
+ "kind",
162
+ "contract",
163
+ ...(kind === "deploy"
164
+ ? [
165
+ "saveAs",
166
+ "strategy",
167
+ "args",
168
+ "create2",
169
+ "proxy",
170
+ "upgradeableStrategy",
171
+ "firstUpgrade",
172
+ ]
173
+ : kind === "upgrade"
174
+ ? ["saveAs", "address", "proxy", "proxyKind", "constructorArgs", "call"]
175
+ : ["abi", "address", "deployment", "saveAs", "calls"]),
176
+ ];
177
+ record(base, keys, ["id", "kind", "contract"], "operation");
178
+ refs(base);
179
+ for (const key of ["abi", "deployment", "saveAs"])
180
+ if (base[key] !== undefined) string(base[key], key);
181
+ if (base.address !== undefined) address(base.address, "operation");
182
+ if (kind === "deploy") {
183
+ string(base.saveAs, "saveAs");
184
+ if ((base.saveAs as string).includes(":"))
185
+ throw new Error("Invalid saveAs");
186
+ if (base.strategy !== "create2")
187
+ throw new Error("Deploy requires CREATE2 strategy");
188
+ const c = record(
189
+ base.create2,
190
+ [
191
+ "salt",
192
+ "factory",
193
+ "create2ForwardValue",
194
+ "callForwardValue",
195
+ "expectedAddress",
196
+ "leadingZeroBytes",
197
+ ],
198
+ ["salt"],
199
+ "create2"
200
+ );
201
+ if (
202
+ !reference(c.salt) &&
203
+ (typeof c.salt !== "string" || !/^0x[\da-fA-F]{64}$/.test(c.salt))
204
+ )
205
+ throw new Error("Invalid CREATE2 bytes32 salt");
206
+ for (const key of ["factory", "expectedAddress"])
207
+ if (c[key] !== undefined) address(c[key], key);
208
+ for (const key of ["create2ForwardValue", "callForwardValue"])
209
+ if (c[key] !== undefined) {
210
+ quantity(c[key]);
211
+ }
212
+ if (
213
+ c.leadingZeroBytes !== undefined &&
214
+ !reference(c.leadingZeroBytes) &&
215
+ (!Number.isInteger(c.leadingZeroBytes) ||
216
+ Number(c.leadingZeroBytes) < 0 ||
217
+ Number(c.leadingZeroBytes) > 20)
218
+ )
219
+ throw new Error("Invalid leadingZeroBytes");
220
+ if (base.args !== undefined) array(base.args, "constructor args");
221
+ if (base.proxy !== undefined) {
222
+ proxy(base.proxy, true);
223
+ if (
224
+ (base.proxy as Record<string, unknown>).initializer !== false ||
225
+ base.upgradeableStrategy !== "uups-placeholder-proxy"
226
+ )
227
+ throw new Error(
228
+ "UUPS deployment requires placeholder strategy and initializer false"
229
+ );
230
+ const first = record(
231
+ base.firstUpgrade,
232
+ ["contract", "constructorArgs", "unsafeAllow", "call"],
233
+ ["contract"],
234
+ "firstUpgrade"
235
+ );
236
+ string(first.contract, "firstUpgrade contract");
237
+ if (
238
+ base.contract !== first.contract &&
239
+ ![
240
+ "ERC1967Proxy",
241
+ "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy",
242
+ ].includes(base.contract as string)
243
+ )
244
+ throw new Error("firstUpgrade contract mismatch");
245
+ if (first.constructorArgs !== undefined)
246
+ array(first.constructorArgs, "firstUpgrade constructorArgs");
247
+ if (
248
+ first.unsafeAllow !== undefined &&
249
+ (!Array.isArray(first.unsafeAllow) ||
250
+ first.unsafeAllow.some((x) => typeof x !== "string" || !x))
251
+ )
252
+ throw new Error("Invalid unsafeAllow");
253
+ if (first.call !== undefined) upgradeCall(first.call);
254
+ } else if (
255
+ base.firstUpgrade !== undefined ||
256
+ base.upgradeableStrategy !== undefined
257
+ )
258
+ throw new Error("firstUpgrade requires proxy");
259
+ } else if (kind === "upgrade") {
260
+ if (base.saveAs !== undefined) deploymentInstanceId(base.saveAs as string);
261
+ if (base.proxy !== undefined) proxy(base.proxy, false);
262
+ else if (base.address === undefined)
263
+ throw new Error("Upgrade requires proxy");
264
+ if (base.proxyKind !== undefined && base.proxyKind !== "uups")
265
+ throw new Error("Only UUPS upgrade supported");
266
+ if (base.constructorArgs !== undefined)
267
+ array(base.constructorArgs, "constructorArgs");
268
+ if (base.call !== undefined) upgradeCall(base.call);
269
+ } else {
270
+ if (!Array.isArray(base.calls) || !base.calls.length)
271
+ throw new Error("Operation requires nonempty calls");
272
+ for (const call of base.calls) {
273
+ const c = record(
274
+ call,
275
+ kind === "check"
276
+ ? ["method", "args", "expect"]
277
+ : kind === "call"
278
+ ? ["method", "args", "value"]
279
+ : ["method", "args"],
280
+ kind === "check" ? ["method", "expect"] : ["method"],
281
+ "call"
282
+ );
283
+ method(c.method);
284
+ if (c.args !== undefined) array(c.args, "call args");
285
+ if (c.value !== undefined) quantity(c.value);
286
+ }
287
+ }
288
+ return deepFreeze(base as WorkflowStep);
289
+ }
290
+ export function parseCustomOperations(raw: unknown): WorkflowStep[] {
291
+ raw = strictData(raw, "custom operations");
292
+ const v = exactObject(
293
+ raw,
294
+ ["version", "operations"],
295
+ "custom planning result"
296
+ );
297
+ if (v.version !== 1 || !Array.isArray(v.operations) || !v.operations.length)
298
+ throw new Error("Custom planning requires version 1 nonempty operations");
299
+ const operations = v.operations.map(parseNativeOperation);
300
+ if (new Set(operations.map((o) => o.id)).size !== operations.length)
301
+ throw new Error("Duplicate custom operation ID");
302
+ validateDeploySaveAs(operations);
303
+ return deepFreeze(operations);
304
+ }
305
+ export interface CustomObservation {
306
+ kind: "json" | "bytes" | "resolve";
307
+ key: string;
308
+ value: unknown;
309
+ digest: string;
310
+ bytesDigest: string | null;
311
+ inputPath: string | null;
312
+ }
313
+ export interface CustomEvidence {
314
+ version: 1;
315
+ sourceStepId: string;
316
+ module: { path: string; digest: string };
317
+ input: unknown;
318
+ declarations: {
319
+ files: string[];
320
+ params: string[];
321
+ state: string[];
322
+ target: string[];
323
+ };
324
+ operations: WorkflowStep[];
325
+ observations: CustomObservation[];
326
+ closure: CustomInputClosure;
327
+ evidenceHash: string;
328
+ }
329
+ export function parseDeclarations(raw: unknown): CustomEvidence["declarations"] {
330
+ const decl = exactObject(
331
+ raw,
332
+ ["files", "params", "state", "target"],
333
+ "custom declarations"
334
+ );
335
+ for (const [key, values] of Object.entries(decl)) {
336
+ if (
337
+ !Array.isArray(values) ||
338
+ values.some((v) => typeof v !== "string" || !v || v.trim() !== v) ||
339
+ new Set(values).size !== values.length
340
+ )
341
+ throw new Error(`Invalid ${key} declarations`);
342
+ }
343
+ const declarations = decl as unknown as CustomEvidence["declarations"];
344
+ if (declarations.target.some((k) => !PUBLIC_TARGET.has(k)))
345
+ throw new Error("Only public target fields may be declared");
346
+ return deepFreeze(declarations);
347
+ }
348
+ /** Structural preflight only; actual module/ABI/runtime validation remains owned by collectors. */
349
+ export function parseCustomStep(raw: unknown): WorkflowStep {
350
+ const s = strictData(raw) as WorkflowStep;
351
+ record(s, ['id', 'kind', 'script', 'input', 'reads'], ['id', 'kind', 'script', 'reads'], 'custom step');
352
+ if (s.kind !== 'custom') throw new Error('Expected custom step');
353
+ nonempty(s.id, 'source step');
354
+ if (s.id.length > 200) throw new Error('source step id exceeds 200 characters');
355
+ portablePath(s.script, 'custom script');
356
+ const declarations = parseDeclarations(s.reads);
357
+ for (const file of declarations.files) portablePath(file, 'custom input');
358
+ return deepFreeze({ ...s, reads: declarations });
359
+ }
360
+ export function parseCustomEvidence(raw: unknown): CustomEvidence {
361
+ raw = strictData(raw, "custom evidence");
362
+ const e = exactObject(
363
+ raw,
364
+ [
365
+ "version",
366
+ "sourceStepId",
367
+ "module",
368
+ "input",
369
+ "declarations",
370
+ "operations",
371
+ "observations",
372
+ "closure",
373
+ "evidenceHash",
374
+ ],
375
+ "custom evidence"
376
+ );
377
+ const { evidenceHash, ...body } = e;
378
+ if (e.version !== 1 || evidenceHash !== semanticHash(body))
379
+ throw new Error("Custom evidence identity mismatch");
380
+ parseCustomOperations({ version: 1, operations: e.operations });
381
+ nonempty(e.sourceStepId, "custom source step");
382
+ const declarations = parseDeclarations(e.declarations);
383
+ const module = exactObject(e.module, ["path", "digest"], "module identity");
384
+ const modulePath = nonempty(module.path, "module path");
385
+ if (
386
+ path.isAbsolute(modulePath) ||
387
+ modulePath
388
+ .split(/[\\/]/)
389
+ .some((part) => !part || part === "." || part === "..")
390
+ )
391
+ throw new Error("Invalid confined module path");
392
+ if (
393
+ typeof module.digest !== "string" ||
394
+ !/^[a-f0-9]{64}$/.test(module.digest)
395
+ )
396
+ throw new Error("Invalid module identity");
397
+ const closure = parseCustomInputClosure(e.closure);
398
+ if (
399
+ !closure.roots.includes(modulePath) ||
400
+ !closure.files.some(
401
+ (file) =>
402
+ file.path === modulePath &&
403
+ file.kind === "module" &&
404
+ file.digest === module.digest
405
+ )
406
+ )
407
+ throw new Error("Custom module missing from closure");
408
+ if (!Array.isArray(e.observations)) throw new Error("Invalid observations");
409
+ for (const raw of e.observations) {
410
+ const o = exactObject(
411
+ raw,
412
+ ["kind", "key", "value", "digest", "bytesDigest", "inputPath"],
413
+ "custom observation"
414
+ );
415
+ if (
416
+ !["json", "bytes", "resolve"].includes(String(o.kind)) ||
417
+ o.digest !== semanticHash(o.value)
418
+ )
419
+ throw new Error("Custom observation mismatch");
420
+ const key = nonempty(o.key, "observation key");
421
+ if (o.kind === "resolve") {
422
+ if (o.inputPath !== null)
423
+ throw new Error("Invalid resolved observation path");
424
+ const dot = key.indexOf("."),
425
+ scope = key.slice(0, dot),
426
+ field = key.slice(dot + 1);
427
+ const allowed =
428
+ scope === "param"
429
+ ? declarations.params
430
+ : scope === "state"
431
+ ? declarations.state
432
+ : scope === "target"
433
+ ? declarations.target
434
+ : [];
435
+ if (!allowed.includes(field))
436
+ throw new Error("Observation is outside declared scope");
437
+ } else {
438
+ if (
439
+ typeof o.inputPath !== "string" ||
440
+ !closure.files.some(
441
+ (file) => file.path === o.inputPath && file.digest === o.bytesDigest
442
+ )
443
+ )
444
+ throw new Error("Observed data missing from closure");
445
+ if (!declarations.files.includes(key))
446
+ throw new Error("Observation is outside declared file scope");
447
+ if (
448
+ o.kind === "bytes" &&
449
+ (typeof o.value !== "string" ||
450
+ !/^0x(?:[0-9a-f]{2})*$/.test(o.value) ||
451
+ bytesHash(Buffer.from(o.value.slice(2), "hex")) !== o.bytesDigest)
452
+ )
453
+ throw new Error("Invalid captured bytes observation");
454
+ }
455
+ if (
456
+ o.kind === "resolve"
457
+ ? o.bytesDigest !== null
458
+ : typeof o.bytesDigest !== "string" ||
459
+ !/^[a-f0-9]{64}$/.test(o.bytesDigest)
460
+ )
461
+ throw new Error("Invalid observed bytes digest");
462
+ }
463
+ return deepFreeze(canonicalData(e) as unknown as CustomEvidence);
464
+ }
@@ -0,0 +1,219 @@
1
+ import { parseCustomStep, parseCustomOperations, parseDeclarations, type CustomEvidence, type CustomObservation } from "./custom-format";
2
+ export { parseCustomEvidence, parseCustomStep, parseCustomOperations, parseNativeOperation, type CustomEvidence, type CustomObservation } from "./custom-format";
3
+ import { ownPath, strictData } from "./data";
4
+ import { parseInputDocument } from './input-files';
5
+ /** Bounded module/data/package closure; aggregate release freeze is a separate layer. */
6
+ import fs from "node:fs";
7
+ import { createHash } from "node:crypto";
8
+ import {
9
+ CustomModuleClosure,
10
+ customBusinessRoot,
11
+ type CustomInputClosure,
12
+ } from "./custom-closure";
13
+ import {
14
+ deepFreeze,
15
+ nonempty,
16
+ semanticHash,
17
+ } from "../workflow/lib/canonicalData";
18
+ import type { WorkflowStep } from "../workflow/lib/parameters";
19
+
20
+ /** Trusted collector session seam. Structurally compatible fake sessions cannot qualify collection. */
21
+ export interface CustomPlanningInputSession {
22
+ readonly version: 1;
23
+ evaluate(step: WorkflowStep): Promise<CustomEvidence>;
24
+ }
25
+ const bytesHash = (bytes: Buffer) =>
26
+ createHash("sha256").update(bytes).digest("hex");
27
+ function readPath(source: unknown, key: string): unknown {
28
+ return deepFreeze(
29
+ strictData(ownPath(source, key.split("."), "custom input"))
30
+ );
31
+ }
32
+ const sessionAuthority = new WeakMap<
33
+ object,
34
+ {
35
+ root: string;
36
+ businessRoot: string;
37
+ evaluate(step: WorkflowStep): Promise<CustomEvidence>;
38
+ seal(): CustomInputClosure;
39
+ closeReads(): void;
40
+ }
41
+ >();
42
+ export function ownedCustomSession(
43
+ session: CustomPlanningInputSession,
44
+ root: string,
45
+ businessRoot: string
46
+ ) {
47
+ const owned = sessionAuthority.get(session);
48
+ if (
49
+ !owned ||
50
+ owned.root !== fs.realpathSync(root) ||
51
+ owned.businessRoot !== customBusinessRoot(root, businessRoot)
52
+ )
53
+ throw new Error(
54
+ "Custom planning requires collector-owned session authority"
55
+ );
56
+ return owned;
57
+ }
58
+ interface CustomSessionInputs {
59
+ root: string;
60
+ businessRoot: string;
61
+ params: Record<string, unknown>;
62
+ state: Record<string, unknown> | (() => Record<string, unknown>);
63
+ target: Record<string, unknown>;
64
+ }
65
+ export class CustomPlanningSession implements CustomPlanningInputSession {
66
+ #closure: CustomModuleClosure;
67
+ #lifecycle = {closed:false};
68
+ readonly version = 1 as const;
69
+ constructor(input: CustomSessionInputs) {
70
+ const businessRoot = customBusinessRoot(input.root, input.businessRoot);
71
+ this.#input = { ...input, businessRoot };
72
+ this.#closure = new CustomModuleClosure(input.root);
73
+ sessionAuthority.set(
74
+ this,
75
+ Object.freeze({
76
+ root: fs.realpathSync(input.root),
77
+ businessRoot,
78
+ evaluate: (step: WorkflowStep) => this.#evaluate(step),
79
+ seal: () => this.#closure.seal(),
80
+ closeReads: () => {this.#lifecycle.closed=true;this.#closure.closeReads();},
81
+ })
82
+ );
83
+ }
84
+ readonly #input: CustomSessionInputs;
85
+ /** Target-specific ports share the same collector, captured bytes and session union. */
86
+ forTarget(input: Omit<CustomSessionInputs, "root">): CustomPlanningSession {
87
+ if(this.#lifecycle.closed)throw new Error("Custom input session is closed");
88
+ const session = new CustomPlanningSession({
89
+ ...input,
90
+ root: this.#input.root,
91
+ });
92
+ session.#closure = this.#closure;
93
+ session.#lifecycle=this.#lifecycle;
94
+ return session;
95
+ }
96
+ sealClosure(): CustomInputClosure {
97
+ return this.#closure.seal();
98
+ }
99
+ evaluate(step: WorkflowStep): Promise<CustomEvidence> {
100
+ return this.#evaluate(step);
101
+ }
102
+ async #evaluate(step: WorkflowStep): Promise<CustomEvidence> {
103
+ if(this.#lifecycle.closed)throw new Error("Custom input session is closed");
104
+ const s = parseCustomStep(step);
105
+ const declarations = parseDeclarations(s.reads);
106
+ const observations: CustomObservation[] = [];
107
+ const observe = (
108
+ kind: CustomObservation["kind"],
109
+ key: string,
110
+ value: unknown,
111
+ bytesDigest: string | null = null,
112
+ inputPath: string | null = null
113
+ ) => {
114
+ const immutable = deepFreeze(strictData(value));
115
+ observations.push({
116
+ kind,
117
+ key,
118
+ value: immutable,
119
+ digest: semanticHash(immutable),
120
+ bytesDigest,
121
+ inputPath,
122
+ });
123
+ return immutable;
124
+ };
125
+ let open = true;
126
+ const assertOpen = () => {
127
+ if (!open) throw new Error("Custom input session is closed");
128
+ };
129
+ const read = (name: string) => {
130
+ assertOpen();
131
+ if (!declarations.files.includes(name))
132
+ throw new Error("Undeclared file read");
133
+ return this.#closure.readData(this.#input.businessRoot, name);
134
+ };
135
+ const ports = Object.freeze({
136
+ readJson: async (name: string) => {
137
+ const { bytes, path: inputPath } = read(name);
138
+ return observe(
139
+ "json",
140
+ name,
141
+ parseInputDocument(bytes, 'json'),
142
+ bytesHash(bytes),
143
+ inputPath
144
+ );
145
+ },
146
+ readBytes: async (name: string) => {
147
+ const { bytes, path: inputPath } = read(name);
148
+ return observe(
149
+ "bytes",
150
+ name,
151
+ "0x" + bytes.toString("hex"),
152
+ bytesHash(bytes),
153
+ inputPath
154
+ );
155
+ },
156
+ resolve: (key: string) => {
157
+ assertOpen();
158
+ const dot = key.indexOf("."),
159
+ scope = key.slice(0, dot),
160
+ field = key.slice(dot + 1);
161
+ const list =
162
+ scope === "param"
163
+ ? declarations.params
164
+ : scope === "state"
165
+ ? declarations.state
166
+ : scope === "target"
167
+ ? declarations.target
168
+ : [];
169
+ if (!list.includes(field))
170
+ throw new Error("Undeclared input resolution");
171
+ const source =
172
+ scope === "param"
173
+ ? this.#input.params
174
+ : scope === "target"
175
+ ? this.#input.target
176
+ : typeof this.#input.state === "function"
177
+ ? this.#input.state()
178
+ : this.#input.state;
179
+ return observe("resolve", key, readPath(source, field));
180
+ },
181
+ });
182
+ const loaded = this.#closure.load(nonempty(s.script, "script"));
183
+ const moduleIdentity = loaded.identity;
184
+ let operations: WorkflowStep[];
185
+ try {
186
+ const mod = loaded.module;
187
+ if (
188
+ !mod ||
189
+ ["default", "main", "run"].some((k) => Object.hasOwn(mod, k)) ||
190
+ typeof mod.planOperations !== "function"
191
+ )
192
+ throw new Error(
193
+ "Custom planning must export planOperations; legacy exports are rejected"
194
+ );
195
+ operations = parseCustomOperations(
196
+ this.#closure.normalize(
197
+ await mod.planOperations(
198
+ ports,
199
+ deepFreeze(strictData(s.input ?? null))
200
+ )
201
+ )
202
+ );
203
+ this.#closure.assertUnchanged();
204
+ } finally {
205
+ open = false;
206
+ }
207
+ const body = {
208
+ version: 1 as const,
209
+ sourceStepId: s.id,
210
+ module: moduleIdentity,
211
+ input: s.input ?? null,
212
+ declarations,
213
+ operations,
214
+ observations,
215
+ closure: this.#closure.seal(),
216
+ };
217
+ return deepFreeze({ ...body, evidenceHash: semanticHash(body) });
218
+ }
219
+ }