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,479 @@
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
+ "adminOwner",
98
+ ...(deploying ? [] : ["address", "name", "contract"]),
99
+ ],
100
+ [],
101
+ "proxy"
102
+ );
103
+ if (p.kind !== undefined && p.kind !== "uups" && p.kind !== "transparent")
104
+ throw new Error("Unsupported proxy kind");
105
+ if(p.kind === "transparent") {if(p.adminOwner === undefined)throw Error("Transparent proxy requires explicit adminOwner");address(p.adminOwner,"proxy.adminOwner");}
106
+ else if(p.adminOwner !== undefined)throw Error("Only Transparent proxy accepts adminOwner");
107
+ if (p.initializer !== undefined && p.initializer !== false)
108
+ string(p.initializer, "initializer");
109
+ if (p.constructorArgs !== undefined)
110
+ array(p.constructorArgs, "constructorArgs");
111
+ if (
112
+ p.unsafeAllow !== undefined &&
113
+ (!Array.isArray(p.unsafeAllow) ||
114
+ p.unsafeAllow.some((x) => typeof x !== "string" || !x))
115
+ )
116
+ throw new Error("Invalid unsafeAllow");
117
+ if (p.address !== undefined) address(p.address, "proxy");
118
+ for (const key of ["name", "contract"])
119
+ if (p[key] !== undefined) {
120
+ string(p[key], key);
121
+ proxyIdentifier(p[key]);
122
+ }
123
+ if (
124
+ !deploying &&
125
+ !["address", "name", "contract"].some((k) => p[k] !== undefined)
126
+ )
127
+ throw new Error("Upgrade proxy requires address/name/contract");
128
+ }
129
+ export function parseNativeOperation(raw: unknown): WorkflowStep {
130
+ const data = strictData(raw, "operation");
131
+ const base = record(
132
+ data,
133
+ [
134
+ "id",
135
+ "kind",
136
+ "name",
137
+ "description",
138
+ "contract",
139
+ "abi",
140
+ "address",
141
+ "deployment",
142
+ "saveAs",
143
+ "calls",
144
+ "strategy",
145
+ "args",
146
+ "create2",
147
+ "proxy",
148
+ "upgradeableStrategy",
149
+ "firstUpgrade",
150
+ "constructorArgs",
151
+ "call",
152
+ "proxyKind",
153
+ ],
154
+ ["id", "kind", "contract"],
155
+ "operation"
156
+ );
157
+ string(base.id, "operation id");
158
+ if ((base.id as string).length > 200)
159
+ throw new Error("operation id exceeds 200 characters");
160
+ string(base.contract, "contract");
161
+ const kind = base.kind;
162
+ if (!["deploy", "upgrade", "call", "view", "check"].includes(String(kind)))
163
+ throw new Error("Unknown or nested custom operation kind");
164
+ const keys = [
165
+ "id",
166
+ "kind",
167
+ "name",
168
+ "description",
169
+ "contract",
170
+ ...(kind === "deploy"
171
+ ? [
172
+ "saveAs",
173
+ "strategy",
174
+ "args",
175
+ "create2",
176
+ "proxy",
177
+ "upgradeableStrategy",
178
+ "firstUpgrade",
179
+ ]
180
+ : kind === "upgrade"
181
+ ? ["saveAs", "address", "proxy", "proxyKind", "constructorArgs", "call"]
182
+ : ["abi", "address", "deployment", "saveAs", "calls"]),
183
+ ];
184
+ record(base, keys, ["id", "kind", "contract"], "operation");
185
+ for (const key of ["name", "description"]) if (base[key] !== undefined) string(base[key], key);
186
+ refs(base);
187
+ for (const key of ["abi", "deployment", "saveAs"])
188
+ if (base[key] !== undefined) string(base[key], key);
189
+ if (base.address !== undefined) address(base.address, "operation");
190
+ if (kind === "deploy") {
191
+ string(base.saveAs, "saveAs");
192
+ if ((base.saveAs as string).includes(":"))
193
+ throw new Error("Invalid saveAs");
194
+ if (base.strategy !== "create2")
195
+ throw new Error("Deploy requires CREATE2 strategy");
196
+ const c = record(
197
+ base.create2,
198
+ [
199
+ "salt",
200
+ "factory",
201
+ "create2ForwardValue",
202
+ "callForwardValue",
203
+ "expectedAddress",
204
+ "leadingZeroBytes",
205
+ ],
206
+ ["salt"],
207
+ "create2"
208
+ );
209
+ if (
210
+ !reference(c.salt) &&
211
+ (typeof c.salt !== "string" || !/^0x[\da-fA-F]{64}$/.test(c.salt))
212
+ )
213
+ throw new Error("Invalid CREATE2 bytes32 salt");
214
+ for (const key of ["factory", "expectedAddress"])
215
+ if (c[key] !== undefined) address(c[key], key);
216
+ for (const key of ["create2ForwardValue", "callForwardValue"])
217
+ if (c[key] !== undefined) {
218
+ quantity(c[key]);
219
+ }
220
+ if (
221
+ c.leadingZeroBytes !== undefined &&
222
+ !reference(c.leadingZeroBytes) &&
223
+ (!Number.isInteger(c.leadingZeroBytes) ||
224
+ Number(c.leadingZeroBytes) < 0 ||
225
+ Number(c.leadingZeroBytes) > 20)
226
+ )
227
+ throw new Error("Invalid leadingZeroBytes");
228
+ if (base.args !== undefined) array(base.args, "constructor args");
229
+ if (base.proxy !== undefined) {
230
+ proxy(base.proxy, true);
231
+ if((base.proxy as Record<string,unknown>).kind === 'transparent'){
232
+ const p=base.proxy as Record<string,unknown>;
233
+ if(base.upgradeableStrategy!=='transparent-proxy'||base.firstUpgrade!==undefined||p.initializer===undefined)throw Error('Transparent deployment requires transparent-proxy strategy, explicit initializer and no firstUpgrade');
234
+ } else {
235
+ if (
236
+ (base.proxy as Record<string, unknown>).initializer !== false ||
237
+ base.upgradeableStrategy !== "uups-placeholder-proxy"
238
+ )
239
+ throw new Error(
240
+ "UUPS deployment requires placeholder strategy and initializer false"
241
+ );
242
+ const first = record(
243
+ base.firstUpgrade,
244
+ ["contract", "constructorArgs", "unsafeAllow", "call"],
245
+ ["contract"],
246
+ "firstUpgrade"
247
+ );
248
+ string(first.contract, "firstUpgrade contract");
249
+ if (
250
+ base.contract !== first.contract &&
251
+ ![
252
+ "ERC1967Proxy",
253
+ "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy",
254
+ ].includes(base.contract as string)
255
+ )
256
+ throw new Error("firstUpgrade contract mismatch");
257
+ if (first.constructorArgs !== undefined)
258
+ array(first.constructorArgs, "firstUpgrade constructorArgs");
259
+ if (
260
+ first.unsafeAllow !== undefined &&
261
+ (!Array.isArray(first.unsafeAllow) ||
262
+ first.unsafeAllow.some((x) => typeof x !== "string" || !x))
263
+ )
264
+ throw new Error("Invalid unsafeAllow");
265
+ if (first.call !== undefined) upgradeCall(first.call);
266
+ }
267
+ } else if (
268
+ base.firstUpgrade !== undefined ||
269
+ base.upgradeableStrategy !== undefined
270
+ )
271
+ throw new Error("firstUpgrade requires proxy");
272
+ } else if (kind === "upgrade") {
273
+ if (base.saveAs !== undefined) deploymentInstanceId(base.saveAs as string);
274
+ if (base.proxy !== undefined) proxy(base.proxy, false);
275
+ else if (base.address === undefined)
276
+ throw new Error("Upgrade requires proxy");
277
+ if (base.proxyKind !== undefined && base.proxyKind !== "uups" && base.proxyKind !== "transparent")
278
+ throw new Error("Unsupported proxy upgrade kind");
279
+ if(base.proxyKind === "transparent" && (!base.proxy || typeof base.proxy !== "object" || (base.proxy as Record<string,unknown>).kind!=="transparent"))throw Error("Transparent upgrade requires explicit proxy object and adminOwner");
280
+ if (base.constructorArgs !== undefined)
281
+ array(base.constructorArgs, "constructorArgs");
282
+ if (base.call !== undefined) upgradeCall(base.call);
283
+ } else {
284
+ if (!Array.isArray(base.calls) || !base.calls.length)
285
+ throw new Error("Operation requires nonempty calls");
286
+ for (const call of base.calls) {
287
+ const c = record(
288
+ call,
289
+ kind === "check"
290
+ ? ["method", "args", "expect"]
291
+ : kind === "call"
292
+ ? ["method", "args", "value", "name", "description"]
293
+ : ["method", "args"],
294
+ kind === "check" ? ["method", "expect"] : ["method"],
295
+ "call"
296
+ );
297
+ method(c.method);
298
+ for (const key of ["name", "description"]) if (c[key] !== undefined) string(c[key], key);
299
+ if (c.args !== undefined) array(c.args, "call args");
300
+ if (c.value !== undefined) quantity(c.value);
301
+ }
302
+ }
303
+ return deepFreeze(base as WorkflowStep);
304
+ }
305
+ export function parseCustomOperations(raw: unknown): WorkflowStep[] {
306
+ raw = strictData(raw, "custom operations");
307
+ const v = exactObject(
308
+ raw,
309
+ ["version", "operations"],
310
+ "custom planning result"
311
+ );
312
+ if (v.version !== 1 || !Array.isArray(v.operations) || !v.operations.length)
313
+ throw new Error("Custom planning requires version 1 nonempty operations");
314
+ const operations = v.operations.map(parseNativeOperation);
315
+ if (new Set(operations.map((o) => o.id)).size !== operations.length)
316
+ throw new Error("Duplicate custom operation ID");
317
+ validateDeploySaveAs(operations);
318
+ return deepFreeze(operations);
319
+ }
320
+ export interface CustomObservation {
321
+ kind: "json" | "bytes" | "resolve";
322
+ key: string;
323
+ value: unknown;
324
+ digest: string;
325
+ bytesDigest: string | null;
326
+ inputPath: string | null;
327
+ }
328
+ export interface CustomEvidence {
329
+ version: 1;
330
+ sourceStepId: string;
331
+ module: { path: string; digest: string };
332
+ input: unknown;
333
+ declarations: {
334
+ files: string[];
335
+ params: string[];
336
+ state: string[];
337
+ target: string[];
338
+ };
339
+ operations: WorkflowStep[];
340
+ observations: CustomObservation[];
341
+ closure: CustomInputClosure;
342
+ evidenceHash: string;
343
+ }
344
+ export function parseDeclarations(raw: unknown): CustomEvidence["declarations"] {
345
+ const decl = exactObject(
346
+ raw,
347
+ ["files", "params", "state", "target"],
348
+ "custom declarations"
349
+ );
350
+ for (const [key, values] of Object.entries(decl)) {
351
+ if (
352
+ !Array.isArray(values) ||
353
+ values.some((v) => typeof v !== "string" || !v || v.trim() !== v) ||
354
+ new Set(values).size !== values.length
355
+ )
356
+ throw new Error(`Invalid ${key} declarations`);
357
+ }
358
+ const declarations = decl as unknown as CustomEvidence["declarations"];
359
+ if (declarations.target.some((k) => !PUBLIC_TARGET.has(k)))
360
+ throw new Error("Only public target fields may be declared");
361
+ return deepFreeze(declarations);
362
+ }
363
+ /** Structural preflight only; actual module/ABI/runtime validation remains owned by collectors. */
364
+ export function parseCustomStep(raw: unknown): WorkflowStep {
365
+ const s = strictData(raw) as WorkflowStep;
366
+ record(s, ['id', 'kind', 'script', 'input', 'reads'], ['id', 'kind', 'script', 'reads'], 'custom step');
367
+ if (s.kind !== 'custom') throw new Error('Expected custom step');
368
+ nonempty(s.id, 'source step');
369
+ if (s.id.length > 200) throw new Error('source step id exceeds 200 characters');
370
+ portablePath(s.script, 'custom script');
371
+ const declarations = parseDeclarations(s.reads);
372
+ for (const file of declarations.files) portablePath(file, 'custom input');
373
+ return deepFreeze({ ...s, reads: declarations });
374
+ }
375
+ export function parseCustomEvidence(raw: unknown): CustomEvidence {
376
+ raw = strictData(raw, "custom evidence");
377
+ const e = exactObject(
378
+ raw,
379
+ [
380
+ "version",
381
+ "sourceStepId",
382
+ "module",
383
+ "input",
384
+ "declarations",
385
+ "operations",
386
+ "observations",
387
+ "closure",
388
+ "evidenceHash",
389
+ ],
390
+ "custom evidence"
391
+ );
392
+ const { evidenceHash, ...body } = e;
393
+ if (e.version !== 1 || evidenceHash !== semanticHash(body))
394
+ throw new Error("Custom evidence identity mismatch");
395
+ parseCustomOperations({ version: 1, operations: e.operations });
396
+ nonempty(e.sourceStepId, "custom source step");
397
+ const declarations = parseDeclarations(e.declarations);
398
+ const module = exactObject(e.module, ["path", "digest"], "module identity");
399
+ const modulePath = nonempty(module.path, "module path");
400
+ if (
401
+ path.isAbsolute(modulePath) ||
402
+ modulePath
403
+ .split(/[\\/]/)
404
+ .some((part) => !part || part === "." || part === "..")
405
+ )
406
+ throw new Error("Invalid confined module path");
407
+ if (
408
+ typeof module.digest !== "string" ||
409
+ !/^[a-f0-9]{64}$/.test(module.digest)
410
+ )
411
+ throw new Error("Invalid module identity");
412
+ const closure = parseCustomInputClosure(e.closure);
413
+ if (
414
+ !closure.roots.includes(modulePath) ||
415
+ !closure.files.some(
416
+ (file) =>
417
+ file.path === modulePath &&
418
+ file.kind === "module" &&
419
+ file.digest === module.digest
420
+ )
421
+ )
422
+ throw new Error("Custom module missing from closure");
423
+ if (!Array.isArray(e.observations)) throw new Error("Invalid observations");
424
+ for (const raw of e.observations) {
425
+ const o = exactObject(
426
+ raw,
427
+ ["kind", "key", "value", "digest", "bytesDigest", "inputPath"],
428
+ "custom observation"
429
+ );
430
+ if (
431
+ !["json", "bytes", "resolve"].includes(String(o.kind)) ||
432
+ o.digest !== semanticHash(o.value)
433
+ )
434
+ throw new Error("Custom observation mismatch");
435
+ const key = nonempty(o.key, "observation key");
436
+ if (o.kind === "resolve") {
437
+ if (o.inputPath !== null)
438
+ throw new Error("Invalid resolved observation path");
439
+ const dot = key.indexOf("."),
440
+ scope = key.slice(0, dot),
441
+ field = key.slice(dot + 1);
442
+ const allowed =
443
+ scope === "param"
444
+ ? declarations.params
445
+ : scope === "state"
446
+ ? declarations.state
447
+ : scope === "target"
448
+ ? declarations.target
449
+ : [];
450
+ if (!allowed.includes(field))
451
+ throw new Error("Observation is outside declared scope");
452
+ } else {
453
+ if (
454
+ typeof o.inputPath !== "string" ||
455
+ !closure.files.some(
456
+ (file) => file.path === o.inputPath && file.digest === o.bytesDigest
457
+ )
458
+ )
459
+ throw new Error("Observed data missing from closure");
460
+ if (!declarations.files.includes(key))
461
+ throw new Error("Observation is outside declared file scope");
462
+ if (
463
+ o.kind === "bytes" &&
464
+ (typeof o.value !== "string" ||
465
+ !/^0x(?:[0-9a-f]{2})*$/.test(o.value) ||
466
+ bytesHash(Buffer.from(o.value.slice(2), "hex")) !== o.bytesDigest)
467
+ )
468
+ throw new Error("Invalid captured bytes observation");
469
+ }
470
+ if (
471
+ o.kind === "resolve"
472
+ ? o.bytesDigest !== null
473
+ : typeof o.bytesDigest !== "string" ||
474
+ !/^[a-f0-9]{64}$/.test(o.bytesDigest)
475
+ )
476
+ throw new Error("Invalid observed bytes digest");
477
+ }
478
+ return deepFreeze(canonicalData(e) as unknown as CustomEvidence);
479
+ }
@@ -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
+ }