@mysten-incubation/devstack 0.0.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 (833) hide show
  1. package/LICENSE +189 -0
  2. package/README.md +94 -0
  3. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  4. package/dist/api/define-capabilities.d.mts +25 -0
  5. package/dist/api/define-capabilities.mjs +19 -0
  6. package/dist/api/define-capabilities.mjs.map +1 -0
  7. package/dist/api/define-devstack-with.d.mts +41 -0
  8. package/dist/api/define-devstack-with.mjs +24 -0
  9. package/dist/api/define-devstack-with.mjs.map +1 -0
  10. package/dist/api/define-devstack.d.mts +62 -0
  11. package/dist/api/define-devstack.mjs +108 -0
  12. package/dist/api/define-devstack.mjs.map +1 -0
  13. package/dist/api/define-plugin.d.mts +1 -0
  14. package/dist/api/inference-network.mjs +122 -0
  15. package/dist/api/inference-network.mjs.map +1 -0
  16. package/dist/api/mode-narrowed-factory.d.mts +26 -0
  17. package/dist/api/mode-narrowed-factory.mjs +8 -0
  18. package/dist/api/mode-narrowed-factory.mjs.map +1 -0
  19. package/dist/api/plugin-errors.mjs +10 -0
  20. package/dist/api/plugin-errors.mjs.map +1 -0
  21. package/dist/api/run-stack.d.mts +82 -0
  22. package/dist/api/run-stack.mjs +127 -0
  23. package/dist/api/run-stack.mjs.map +1 -0
  24. package/dist/build-integrations/playwright/config.d.mts +92 -0
  25. package/dist/build-integrations/playwright/config.mjs +71 -0
  26. package/dist/build-integrations/playwright/config.mjs.map +1 -0
  27. package/dist/build-integrations/playwright/errors.d.mts +82 -0
  28. package/dist/build-integrations/playwright/errors.mjs +43 -0
  29. package/dist/build-integrations/playwright/errors.mjs.map +1 -0
  30. package/dist/build-integrations/playwright/global-setup.d.mts +64 -0
  31. package/dist/build-integrations/playwright/global-setup.mjs +44 -0
  32. package/dist/build-integrations/playwright/global-setup.mjs.map +1 -0
  33. package/dist/build-integrations/playwright/index.d.mts +6 -0
  34. package/dist/build-integrations/playwright/index.mjs +6 -0
  35. package/dist/build-integrations/playwright/stack-context.d.mts +95 -0
  36. package/dist/build-integrations/playwright/stack-context.mjs +277 -0
  37. package/dist/build-integrations/playwright/stack-context.mjs.map +1 -0
  38. package/dist/build-integrations/playwright/wallet-context.d.mts +87 -0
  39. package/dist/build-integrations/playwright/wallet-context.mjs +148 -0
  40. package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -0
  41. package/dist/build-integrations/runtime/cold-start-url.d.mts +67 -0
  42. package/dist/build-integrations/runtime/cold-start-url.mjs +56 -0
  43. package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -0
  44. package/dist/build-integrations/runtime/dapp-kit-slot.mjs +10 -0
  45. package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -0
  46. package/dist/build-integrations/runtime/discover.d.mts +78 -0
  47. package/dist/build-integrations/runtime/discover.mjs +124 -0
  48. package/dist/build-integrations/runtime/discover.mjs.map +1 -0
  49. package/dist/build-integrations/runtime/endpoint-registry.d.mts +26 -0
  50. package/dist/build-integrations/runtime/endpoint-registry.mjs +41 -0
  51. package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -0
  52. package/dist/build-integrations/runtime/errors.d.mts +64 -0
  53. package/dist/build-integrations/runtime/errors.mjs +51 -0
  54. package/dist/build-integrations/runtime/errors.mjs.map +1 -0
  55. package/dist/build-integrations/runtime/index.d.mts +7 -0
  56. package/dist/build-integrations/runtime/index.mjs +6 -0
  57. package/dist/build-integrations/runtime/read-stack-context.d.mts +38 -0
  58. package/dist/build-integrations/runtime/read-stack-context.mjs +130 -0
  59. package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -0
  60. package/dist/build-integrations/runtime/stack-context.d.mts +53 -0
  61. package/dist/build-integrations/vitest/config.d.mts +62 -0
  62. package/dist/build-integrations/vitest/config.mjs +80 -0
  63. package/dist/build-integrations/vitest/config.mjs.map +1 -0
  64. package/dist/build-integrations/vitest/env.d.mts +48 -0
  65. package/dist/build-integrations/vitest/env.mjs +50 -0
  66. package/dist/build-integrations/vitest/env.mjs.map +1 -0
  67. package/dist/build-integrations/vitest/errors.d.mts +44 -0
  68. package/dist/build-integrations/vitest/errors.mjs +18 -0
  69. package/dist/build-integrations/vitest/errors.mjs.map +1 -0
  70. package/dist/build-integrations/vitest/index.d.mts +6 -0
  71. package/dist/build-integrations/vitest/index.mjs +6 -0
  72. package/dist/build-integrations/vitest/setup.d.mts +53 -0
  73. package/dist/build-integrations/vitest/setup.mjs +56 -0
  74. package/dist/build-integrations/vitest/setup.mjs.map +1 -0
  75. package/dist/build-integrations/vitest/stack-context.d.mts +58 -0
  76. package/dist/build-integrations/vitest/stack-context.mjs +67 -0
  77. package/dist/build-integrations/vitest/stack-context.mjs.map +1 -0
  78. package/dist/cli/main.d.mts +5 -0
  79. package/dist/cli/main.mjs +586 -0
  80. package/dist/cli/main.mjs.map +1 -0
  81. package/dist/cli/prune-direct.mjs +216 -0
  82. package/dist/cli/prune-direct.mjs.map +1 -0
  83. package/dist/cli/snapshot-reader.mjs +73 -0
  84. package/dist/cli/snapshot-reader.mjs.map +1 -0
  85. package/dist/cli/up-lifecycle.mjs +28 -0
  86. package/dist/cli/up-lifecycle.mjs.map +1 -0
  87. package/dist/contracts/capability-decl.d.mts +42 -0
  88. package/dist/contracts/chain-probe.d.mts +26 -0
  89. package/dist/contracts/chain-probe.mjs +8 -0
  90. package/dist/contracts/chain-probe.mjs.map +1 -0
  91. package/dist/contracts/codegenable.d.mts +43 -0
  92. package/dist/contracts/container-runtime.d.mts +245 -0
  93. package/dist/contracts/liveness-classifier.d.mts +19 -0
  94. package/dist/contracts/network-resolver.d.mts +15 -0
  95. package/dist/contracts/network-resolver.mjs +7 -0
  96. package/dist/contracts/network-resolver.mjs.map +1 -0
  97. package/dist/contracts/projection.d.mts +15 -0
  98. package/dist/contracts/routable.d.mts +53 -0
  99. package/dist/contracts/snapshotable.d.mts +39 -0
  100. package/dist/contracts/strategy-contributor.d.mts +26 -0
  101. package/dist/index.d.mts +89 -0
  102. package/dist/index.mjs +37 -0
  103. package/dist/orchestrators/codegen/bindings.d.mts +2 -0
  104. package/dist/orchestrators/codegen/bindings.mjs +340 -0
  105. package/dist/orchestrators/codegen/bindings.mjs.map +1 -0
  106. package/dist/orchestrators/codegen/emit.mjs +56 -0
  107. package/dist/orchestrators/codegen/emit.mjs.map +1 -0
  108. package/dist/orchestrators/codegen/errors.d.mts +1 -0
  109. package/dist/orchestrators/codegen/errors.mjs +66 -0
  110. package/dist/orchestrators/codegen/errors.mjs.map +1 -0
  111. package/dist/orchestrators/codegen/extras.mjs +16 -0
  112. package/dist/orchestrators/codegen/extras.mjs.map +1 -0
  113. package/dist/orchestrators/codegen/format.mjs +109 -0
  114. package/dist/orchestrators/codegen/format.mjs.map +1 -0
  115. package/dist/orchestrators/codegen/gitignore.mjs +67 -0
  116. package/dist/orchestrators/codegen/gitignore.mjs.map +1 -0
  117. package/dist/orchestrators/codegen/paths.d.mts +1 -0
  118. package/dist/orchestrators/codegen/paths.mjs +33 -0
  119. package/dist/orchestrators/codegen/paths.mjs.map +1 -0
  120. package/dist/orchestrators/codegen/permissions.mjs +6 -0
  121. package/dist/orchestrators/codegen/permissions.mjs.map +1 -0
  122. package/dist/orchestrators/codegen/service.d.mts +1 -0
  123. package/dist/orchestrators/codegen/service.mjs +276 -0
  124. package/dist/orchestrators/codegen/service.mjs.map +1 -0
  125. package/dist/orchestrators/router/cleanup.mjs +58 -0
  126. package/dist/orchestrators/router/cleanup.mjs.map +1 -0
  127. package/dist/orchestrators/router/cors.mjs +31 -0
  128. package/dist/orchestrators/router/cors.mjs.map +1 -0
  129. package/dist/orchestrators/router/entrypoints.d.mts +1 -0
  130. package/dist/orchestrators/router/entrypoints.mjs +80 -0
  131. package/dist/orchestrators/router/entrypoints.mjs.map +1 -0
  132. package/dist/orchestrators/router/errors.d.mts +1 -0
  133. package/dist/orchestrators/router/errors.mjs +103 -0
  134. package/dist/orchestrators/router/errors.mjs.map +1 -0
  135. package/dist/orchestrators/router/file-provider.d.mts +1 -0
  136. package/dist/orchestrators/router/file-provider.mjs +320 -0
  137. package/dist/orchestrators/router/file-provider.mjs.map +1 -0
  138. package/dist/orchestrators/router/hostname.d.mts +1 -0
  139. package/dist/orchestrators/router/hostname.mjs +107 -0
  140. package/dist/orchestrators/router/hostname.mjs.map +1 -0
  141. package/dist/orchestrators/router/index.d.mts +1 -0
  142. package/dist/orchestrators/router/profile.d.mts +1 -0
  143. package/dist/orchestrators/router/profile.mjs +109 -0
  144. package/dist/orchestrators/router/profile.mjs.map +1 -0
  145. package/dist/orchestrators/router/service.d.mts +3 -0
  146. package/dist/orchestrators/router/service.mjs +421 -0
  147. package/dist/orchestrators/router/service.mjs.map +1 -0
  148. package/dist/orchestrators/router/traefik-container.d.mts +1 -0
  149. package/dist/orchestrators/router/traefik-container.mjs +229 -0
  150. package/dist/orchestrators/router/traefik-container.mjs.map +1 -0
  151. package/dist/orchestrators/runtime-composition.d.mts +10 -0
  152. package/dist/orchestrators/runtime-composition.mjs +168 -0
  153. package/dist/orchestrators/runtime-composition.mjs.map +1 -0
  154. package/dist/orchestrators/snapshot/capture.d.mts +1 -0
  155. package/dist/orchestrators/snapshot/capture.mjs +350 -0
  156. package/dist/orchestrators/snapshot/capture.mjs.map +1 -0
  157. package/dist/orchestrators/snapshot/descriptor.d.mts +1 -0
  158. package/dist/orchestrators/snapshot/descriptor.mjs +109 -0
  159. package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -0
  160. package/dist/orchestrators/snapshot/identity-guard.d.mts +1 -0
  161. package/dist/orchestrators/snapshot/identity-guard.mjs +132 -0
  162. package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -0
  163. package/dist/orchestrators/snapshot/image-bundle-tags.mjs +207 -0
  164. package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -0
  165. package/dist/orchestrators/snapshot/index.d.mts +1 -0
  166. package/dist/orchestrators/snapshot/integrity.d.mts +1 -0
  167. package/dist/orchestrators/snapshot/integrity.mjs +74 -0
  168. package/dist/orchestrators/snapshot/integrity.mjs.map +1 -0
  169. package/dist/orchestrators/snapshot/prune.d.mts +1 -0
  170. package/dist/orchestrators/snapshot/prune.mjs +110 -0
  171. package/dist/orchestrators/snapshot/prune.mjs.map +1 -0
  172. package/dist/orchestrators/snapshot/restore.d.mts +1 -0
  173. package/dist/orchestrators/snapshot/restore.mjs +404 -0
  174. package/dist/orchestrators/snapshot/restore.mjs.map +1 -0
  175. package/dist/orchestrators/snapshot/service.d.mts +1 -0
  176. package/dist/orchestrators/snapshot/service.mjs +296 -0
  177. package/dist/orchestrators/snapshot/service.mjs.map +1 -0
  178. package/dist/orchestrators/snapshot/state-document.mjs +18 -0
  179. package/dist/orchestrators/snapshot/state-document.mjs.map +1 -0
  180. package/dist/orchestrators/snapshot/wipe.d.mts +1 -0
  181. package/dist/orchestrators/snapshot/wipe.mjs +59 -0
  182. package/dist/orchestrators/snapshot/wipe.mjs.map +1 -0
  183. package/dist/plugins/account/codegen.d.mts +12 -0
  184. package/dist/plugins/account/codegen.mjs +22 -0
  185. package/dist/plugins/account/codegen.mjs.map +1 -0
  186. package/dist/plugins/account/errors.d.mts +44 -0
  187. package/dist/plugins/account/errors.mjs +16 -0
  188. package/dist/plugins/account/errors.mjs.map +1 -0
  189. package/dist/plugins/account/funding.d.mts +94 -0
  190. package/dist/plugins/account/funding.mjs +199 -0
  191. package/dist/plugins/account/funding.mjs.map +1 -0
  192. package/dist/plugins/account/index.d.mts +54 -0
  193. package/dist/plugins/account/index.mjs +151 -0
  194. package/dist/plugins/account/index.mjs.map +1 -0
  195. package/dist/plugins/account/keypair.d.mts +32 -0
  196. package/dist/plugins/account/keypair.mjs +99 -0
  197. package/dist/plugins/account/keypair.mjs.map +1 -0
  198. package/dist/plugins/account/lease.mjs +21 -0
  199. package/dist/plugins/account/lease.mjs.map +1 -0
  200. package/dist/plugins/account/registry.d.mts +33 -0
  201. package/dist/plugins/account/registry.mjs +36 -0
  202. package/dist/plugins/account/registry.mjs.map +1 -0
  203. package/dist/plugins/account/service.d.mts +104 -0
  204. package/dist/plugins/account/service.mjs +405 -0
  205. package/dist/plugins/account/service.mjs.map +1 -0
  206. package/dist/plugins/account/snapshot.mjs +33 -0
  207. package/dist/plugins/account/snapshot.mjs.map +1 -0
  208. package/dist/plugins/account/variants/env.mjs +24 -0
  209. package/dist/plugins/account/variants/env.mjs.map +1 -0
  210. package/dist/plugins/account/variants/ephemeral.mjs +72 -0
  211. package/dist/plugins/account/variants/ephemeral.mjs.map +1 -0
  212. package/dist/plugins/account/variants/impersonate.d.mts +16 -0
  213. package/dist/plugins/account/variants/impersonate.mjs +48 -0
  214. package/dist/plugins/account/variants/impersonate.mjs.map +1 -0
  215. package/dist/plugins/account/variants/inline.mjs +13 -0
  216. package/dist/plugins/account/variants/inline.mjs.map +1 -0
  217. package/dist/plugins/account/variants/keystore.mjs +93 -0
  218. package/dist/plugins/account/variants/keystore.mjs.map +1 -0
  219. package/dist/plugins/account/variants/signer.mjs +31 -0
  220. package/dist/plugins/account/variants/signer.mjs.map +1 -0
  221. package/dist/plugins/action/build-context.d.mts +41 -0
  222. package/dist/plugins/action/discriminator.d.mts +20 -0
  223. package/dist/plugins/action/discriminator.mjs +13 -0
  224. package/dist/plugins/action/discriminator.mjs.map +1 -0
  225. package/dist/plugins/action/errors.d.mts +31 -0
  226. package/dist/plugins/action/errors.mjs +13 -0
  227. package/dist/plugins/action/errors.mjs.map +1 -0
  228. package/dist/plugins/action/execute.d.mts +2 -0
  229. package/dist/plugins/action/execute.mjs +145 -0
  230. package/dist/plugins/action/execute.mjs.map +1 -0
  231. package/dist/plugins/action/index.d.mts +56 -0
  232. package/dist/plugins/action/index.mjs +82 -0
  233. package/dist/plugins/action/index.mjs.map +1 -0
  234. package/dist/plugins/action/service.d.mts +26 -0
  235. package/dist/plugins/action/service.mjs +84 -0
  236. package/dist/plugins/action/service.mjs.map +1 -0
  237. package/dist/plugins/coin/address-resolution.d.mts +34 -0
  238. package/dist/plugins/coin/address-resolution.mjs +80 -0
  239. package/dist/plugins/coin/address-resolution.mjs.map +1 -0
  240. package/dist/plugins/coin/codegen.d.mts +16 -0
  241. package/dist/plugins/coin/codegen.mjs +21 -0
  242. package/dist/plugins/coin/codegen.mjs.map +1 -0
  243. package/dist/plugins/coin/discovery.d.mts +26 -0
  244. package/dist/plugins/coin/discovery.mjs +112 -0
  245. package/dist/plugins/coin/discovery.mjs.map +1 -0
  246. package/dist/plugins/coin/errors.d.mts +48 -0
  247. package/dist/plugins/coin/errors.mjs +13 -0
  248. package/dist/plugins/coin/errors.mjs.map +1 -0
  249. package/dist/plugins/coin/index.d.mts +95 -0
  250. package/dist/plugins/coin/index.mjs +172 -0
  251. package/dist/plugins/coin/index.mjs.map +1 -0
  252. package/dist/plugins/coin/metadata.d.mts +15 -0
  253. package/dist/plugins/coin/metadata.mjs +99 -0
  254. package/dist/plugins/coin/metadata.mjs.map +1 -0
  255. package/dist/plugins/coin/mint.d.mts +34 -0
  256. package/dist/plugins/coin/mint.mjs +164 -0
  257. package/dist/plugins/coin/mint.mjs.map +1 -0
  258. package/dist/plugins/coin/registry.d.mts +1 -0
  259. package/dist/plugins/coin/registry.mjs +37 -0
  260. package/dist/plugins/coin/registry.mjs.map +1 -0
  261. package/dist/plugins/coin/service.d.mts +47 -0
  262. package/dist/plugins/coin/service.mjs +51 -0
  263. package/dist/plugins/coin/service.mjs.map +1 -0
  264. package/dist/plugins/coin/snapshot.mjs +19 -0
  265. package/dist/plugins/coin/snapshot.mjs.map +1 -0
  266. package/dist/plugins/coin/type-strings.mjs +49 -0
  267. package/dist/plugins/coin/type-strings.mjs.map +1 -0
  268. package/dist/plugins/deepbook/codegen.d.mts +39 -0
  269. package/dist/plugins/deepbook/codegen.mjs +15 -0
  270. package/dist/plugins/deepbook/codegen.mjs.map +1 -0
  271. package/dist/plugins/deepbook/deploy.mjs +437 -0
  272. package/dist/plugins/deepbook/deploy.mjs.map +1 -0
  273. package/dist/plugins/deepbook/errors.d.mts +29 -0
  274. package/dist/plugins/deepbook/errors.mjs +26 -0
  275. package/dist/plugins/deepbook/errors.mjs.map +1 -0
  276. package/dist/plugins/deepbook/faucet-strategy.d.mts +8 -0
  277. package/dist/plugins/deepbook/faucet-strategy.mjs +81 -0
  278. package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -0
  279. package/dist/plugins/deepbook/index.d.mts +171 -0
  280. package/dist/plugins/deepbook/index.mjs +359 -0
  281. package/dist/plugins/deepbook/index.mjs.map +1 -0
  282. package/dist/plugins/deepbook/plugin-key.mjs +7 -0
  283. package/dist/plugins/deepbook/plugin-key.mjs.map +1 -0
  284. package/dist/plugins/deepbook/pyth/index.mjs +226 -0
  285. package/dist/plugins/deepbook/pyth/index.mjs.map +1 -0
  286. package/dist/plugins/deepbook/routable.mjs +21 -0
  287. package/dist/plugins/deepbook/routable.mjs.map +1 -0
  288. package/dist/plugins/deepbook/snapshot.mjs +49 -0
  289. package/dist/plugins/deepbook/snapshot.mjs.map +1 -0
  290. package/dist/plugins/deepbook/types.d.mts +125 -0
  291. package/dist/plugins/deepbook/types.mjs +12 -0
  292. package/dist/plugins/deepbook/types.mjs.map +1 -0
  293. package/dist/plugins/faucet/dispatcher.d.mts +9 -0
  294. package/dist/plugins/faucet/dispatcher.mjs +13 -0
  295. package/dist/plugins/faucet/dispatcher.mjs.map +1 -0
  296. package/dist/plugins/faucet/errors.d.mts +86 -0
  297. package/dist/plugins/faucet/errors.mjs +19 -0
  298. package/dist/plugins/faucet/errors.mjs.map +1 -0
  299. package/dist/plugins/faucet/http.mjs +127 -0
  300. package/dist/plugins/faucet/http.mjs.map +1 -0
  301. package/dist/plugins/faucet/index.d.mts +43 -0
  302. package/dist/plugins/faucet/index.mjs +42 -0
  303. package/dist/plugins/faucet/index.mjs.map +1 -0
  304. package/dist/plugins/faucet/service.d.mts +20 -0
  305. package/dist/plugins/faucet/strategies/sui-local.d.mts +23 -0
  306. package/dist/plugins/faucet/strategies/sui-local.mjs +29 -0
  307. package/dist/plugins/faucet/strategies/sui-local.mjs.map +1 -0
  308. package/dist/plugins/host-service/errors.d.mts +27 -0
  309. package/dist/plugins/host-service/errors.mjs +14 -0
  310. package/dist/plugins/host-service/errors.mjs.map +1 -0
  311. package/dist/plugins/host-service/index.d.mts +10 -0
  312. package/dist/plugins/host-service/index.mjs +48 -0
  313. package/dist/plugins/host-service/index.mjs.map +1 -0
  314. package/dist/plugins/host-service/routable.mjs +24 -0
  315. package/dist/plugins/host-service/routable.mjs.map +1 -0
  316. package/dist/plugins/host-service/service.d.mts +49 -0
  317. package/dist/plugins/host-service/service.mjs +375 -0
  318. package/dist/plugins/host-service/service.mjs.map +1 -0
  319. package/dist/plugins/package/build.d.mts +1 -0
  320. package/dist/plugins/package/build.mjs +24 -0
  321. package/dist/plugins/package/build.mjs.map +1 -0
  322. package/dist/plugins/package/codegen.d.mts +19 -0
  323. package/dist/plugins/package/codegen.mjs +41 -0
  324. package/dist/plugins/package/codegen.mjs.map +1 -0
  325. package/dist/plugins/package/dep-resolution.mjs +10 -0
  326. package/dist/plugins/package/dep-resolution.mjs.map +1 -0
  327. package/dist/plugins/package/errors.d.mts +34 -0
  328. package/dist/plugins/package/errors.mjs +13 -0
  329. package/dist/plugins/package/errors.mjs.map +1 -0
  330. package/dist/plugins/package/index.d.mts +109 -0
  331. package/dist/plugins/package/index.mjs +207 -0
  332. package/dist/plugins/package/index.mjs.map +1 -0
  333. package/dist/plugins/package/mode-known.mjs +41 -0
  334. package/dist/plugins/package/mode-known.mjs.map +1 -0
  335. package/dist/plugins/package/mode-local.d.mts +1 -0
  336. package/dist/plugins/package/mode-local.mjs +183 -0
  337. package/dist/plugins/package/mode-local.mjs.map +1 -0
  338. package/dist/plugins/package/publish-executor.mjs +202 -0
  339. package/dist/plugins/package/publish-executor.mjs.map +1 -0
  340. package/dist/plugins/package/publish-output.d.mts +28 -0
  341. package/dist/plugins/package/publish-output.mjs +45 -0
  342. package/dist/plugins/package/publish-output.mjs.map +1 -0
  343. package/dist/plugins/package/registry.d.mts +25 -0
  344. package/dist/plugins/package/registry.mjs +30 -0
  345. package/dist/plugins/package/registry.mjs.map +1 -0
  346. package/dist/plugins/package/service.mjs +20 -0
  347. package/dist/plugins/package/service.mjs.map +1 -0
  348. package/dist/plugins/package/snapshot.mjs +25 -0
  349. package/dist/plugins/package/snapshot.mjs.map +1 -0
  350. package/dist/plugins/postgres/codegen.mjs +42 -0
  351. package/dist/plugins/postgres/codegen.mjs.map +1 -0
  352. package/dist/plugins/postgres/connection.d.mts +33 -0
  353. package/dist/plugins/postgres/connection.mjs +19 -0
  354. package/dist/plugins/postgres/connection.mjs.map +1 -0
  355. package/dist/plugins/postgres/db-ensure.mjs +100 -0
  356. package/dist/plugins/postgres/db-ensure.mjs.map +1 -0
  357. package/dist/plugins/postgres/errors.d.mts +55 -0
  358. package/dist/plugins/postgres/errors.mjs +29 -0
  359. package/dist/plugins/postgres/errors.mjs.map +1 -0
  360. package/dist/plugins/postgres/index.d.mts +37 -0
  361. package/dist/plugins/postgres/index.mjs +75 -0
  362. package/dist/plugins/postgres/index.mjs.map +1 -0
  363. package/dist/plugins/postgres/routable.mjs +33 -0
  364. package/dist/plugins/postgres/routable.mjs.map +1 -0
  365. package/dist/plugins/postgres/service.d.mts +50 -0
  366. package/dist/plugins/postgres/service.mjs +145 -0
  367. package/dist/plugins/postgres/service.mjs.map +1 -0
  368. package/dist/plugins/postgres/snapshot.d.mts +1 -0
  369. package/dist/plugins/postgres/snapshot.mjs +32 -0
  370. package/dist/plugins/postgres/snapshot.mjs.map +1 -0
  371. package/dist/plugins/router-entrypoints.mjs +21 -0
  372. package/dist/plugins/router-entrypoints.mjs.map +1 -0
  373. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +59 -0
  374. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -0
  375. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +132 -0
  376. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -0
  377. package/dist/plugins/seal/codegen.d.mts +19 -0
  378. package/dist/plugins/seal/codegen.mjs +16 -0
  379. package/dist/plugins/seal/codegen.mjs.map +1 -0
  380. package/dist/plugins/seal/config-render.mjs +82 -0
  381. package/dist/plugins/seal/config-render.mjs.map +1 -0
  382. package/dist/plugins/seal/deploy.mjs +198 -0
  383. package/dist/plugins/seal/deploy.mjs.map +1 -0
  384. package/dist/plugins/seal/errors.d.mts +52 -0
  385. package/dist/plugins/seal/errors.mjs +19 -0
  386. package/dist/plugins/seal/errors.mjs.map +1 -0
  387. package/dist/plugins/seal/index.d.mts +161 -0
  388. package/dist/plugins/seal/index.mjs +235 -0
  389. package/dist/plugins/seal/index.mjs.map +1 -0
  390. package/dist/plugins/seal/key-manager.d.mts +22 -0
  391. package/dist/plugins/seal/key-manager.mjs +22 -0
  392. package/dist/plugins/seal/key-manager.mjs.map +1 -0
  393. package/dist/plugins/seal/key-server.mjs +175 -0
  394. package/dist/plugins/seal/key-server.mjs.map +1 -0
  395. package/dist/plugins/seal/keygen.mjs +96 -0
  396. package/dist/plugins/seal/keygen.mjs.map +1 -0
  397. package/dist/plugins/seal/mode/fork-known.d.mts +8 -0
  398. package/dist/plugins/seal/mode/fork-known.mjs +23 -0
  399. package/dist/plugins/seal/mode/fork-known.mjs.map +1 -0
  400. package/dist/plugins/seal/mode/live.d.mts +18 -0
  401. package/dist/plugins/seal/mode/live.mjs +64 -0
  402. package/dist/plugins/seal/mode/live.mjs.map +1 -0
  403. package/dist/plugins/seal/mode/local-keygen.mjs +180 -0
  404. package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -0
  405. package/dist/plugins/seal/plugin-key.mjs +7 -0
  406. package/dist/plugins/seal/plugin-key.mjs.map +1 -0
  407. package/dist/plugins/seal/registry-publish.d.mts +43 -0
  408. package/dist/plugins/seal/registry-publish.mjs +9 -0
  409. package/dist/plugins/seal/registry-publish.mjs.map +1 -0
  410. package/dist/plugins/seal/routable.mjs +57 -0
  411. package/dist/plugins/seal/routable.mjs.map +1 -0
  412. package/dist/plugins/seal/service.mjs +17 -0
  413. package/dist/plugins/seal/service.mjs.map +1 -0
  414. package/dist/plugins/seal/snapshot.mjs +51 -0
  415. package/dist/plugins/seal/snapshot.mjs.map +1 -0
  416. package/dist/plugins/sui/auto-tick.mjs +45 -0
  417. package/dist/plugins/sui/auto-tick.mjs.map +1 -0
  418. package/dist/plugins/sui/chain-build-container.d.mts +1 -0
  419. package/dist/plugins/sui/chain-probe.d.mts +85 -0
  420. package/dist/plugins/sui/chain-probe.mjs +104 -0
  421. package/dist/plugins/sui/chain-probe.mjs.map +1 -0
  422. package/dist/plugins/sui/codegen.d.mts +14 -0
  423. package/dist/plugins/sui/codegen.mjs +26 -0
  424. package/dist/plugins/sui/codegen.mjs.map +1 -0
  425. package/dist/plugins/sui/errors.d.mts +74 -0
  426. package/dist/plugins/sui/errors.mjs +28 -0
  427. package/dist/plugins/sui/errors.mjs.map +1 -0
  428. package/dist/plugins/sui/fork-orchestration.mjs +24 -0
  429. package/dist/plugins/sui/fork-orchestration.mjs.map +1 -0
  430. package/dist/plugins/sui/fork-transaction.mjs +96 -0
  431. package/dist/plugins/sui/fork-transaction.mjs.map +1 -0
  432. package/dist/plugins/sui/index.d.mts +318 -0
  433. package/dist/plugins/sui/index.mjs +182 -0
  434. package/dist/plugins/sui/index.mjs.map +1 -0
  435. package/dist/plugins/sui/mode/external.mjs +60 -0
  436. package/dist/plugins/sui/mode/external.mjs.map +1 -0
  437. package/dist/plugins/sui/mode/fork.mjs +283 -0
  438. package/dist/plugins/sui/mode/fork.mjs.map +1 -0
  439. package/dist/plugins/sui/mode/live.mjs +103 -0
  440. package/dist/plugins/sui/mode/live.mjs.map +1 -0
  441. package/dist/plugins/sui/mode/local.mjs +293 -0
  442. package/dist/plugins/sui/mode/local.mjs.map +1 -0
  443. package/dist/plugins/sui/mode/shared-boot.mjs +254 -0
  444. package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -0
  445. package/dist/plugins/sui/mode/shared.d.mts +103 -0
  446. package/dist/plugins/sui/mode/shared.mjs +12 -0
  447. package/dist/plugins/sui/mode/shared.mjs.map +1 -0
  448. package/dist/plugins/sui/mode/spec.d.mts +94 -0
  449. package/dist/plugins/sui/network-resolver.d.mts +23 -0
  450. package/dist/plugins/sui/routable.mjs +88 -0
  451. package/dist/plugins/sui/routable.mjs.map +1 -0
  452. package/dist/plugins/sui/seed-objects.d.mts +18 -0
  453. package/dist/plugins/sui/seed-objects.mjs +25 -0
  454. package/dist/plugins/sui/seed-objects.mjs.map +1 -0
  455. package/dist/plugins/sui/service.mjs +38 -0
  456. package/dist/plugins/sui/service.mjs.map +1 -0
  457. package/dist/plugins/sui/snapshot.mjs +53 -0
  458. package/dist/plugins/sui/snapshot.mjs.map +1 -0
  459. package/dist/plugins/wallet/codegen.d.mts +33 -0
  460. package/dist/plugins/wallet/codegen.mjs +34 -0
  461. package/dist/plugins/wallet/codegen.mjs.map +1 -0
  462. package/dist/plugins/wallet/errors.d.mts +66 -0
  463. package/dist/plugins/wallet/errors.mjs +16 -0
  464. package/dist/plugins/wallet/errors.mjs.map +1 -0
  465. package/dist/plugins/wallet/index.d.mts +63 -0
  466. package/dist/plugins/wallet/index.mjs +126 -0
  467. package/dist/plugins/wallet/index.mjs.map +1 -0
  468. package/dist/plugins/wallet/origin-policy.d.mts +1 -0
  469. package/dist/plugins/wallet/origin-policy.mjs +65 -0
  470. package/dist/plugins/wallet/origin-policy.mjs.map +1 -0
  471. package/dist/plugins/wallet/pairing.d.mts +11 -0
  472. package/dist/plugins/wallet/pairing.mjs +125 -0
  473. package/dist/plugins/wallet/pairing.mjs.map +1 -0
  474. package/dist/plugins/wallet/protocol.d.mts +1 -0
  475. package/dist/plugins/wallet/protocol.mjs +96 -0
  476. package/dist/plugins/wallet/protocol.mjs.map +1 -0
  477. package/dist/plugins/wallet/routable.mjs +32 -0
  478. package/dist/plugins/wallet/routable.mjs.map +1 -0
  479. package/dist/plugins/wallet/server.d.mts +12 -0
  480. package/dist/plugins/wallet/server.mjs +317 -0
  481. package/dist/plugins/wallet/server.mjs.map +1 -0
  482. package/dist/plugins/wallet/service.d.mts +68 -0
  483. package/dist/plugins/wallet/service.mjs +97 -0
  484. package/dist/plugins/wallet/service.mjs.map +1 -0
  485. package/dist/plugins/wallet/snapshot.d.mts +1 -0
  486. package/dist/plugins/wallet/snapshot.mjs +14 -0
  487. package/dist/plugins/wallet/snapshot.mjs.map +1 -0
  488. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +42 -0
  489. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -0
  490. package/dist/plugins/walrus/codegen.d.mts +38 -0
  491. package/dist/plugins/walrus/codegen.mjs +34 -0
  492. package/dist/plugins/walrus/codegen.mjs.map +1 -0
  493. package/dist/plugins/walrus/deploy-paths.mjs +14 -0
  494. package/dist/plugins/walrus/deploy-paths.mjs.map +1 -0
  495. package/dist/plugins/walrus/deploy.d.mts +1 -0
  496. package/dist/plugins/walrus/deploy.mjs +224 -0
  497. package/dist/plugins/walrus/deploy.mjs.map +1 -0
  498. package/dist/plugins/walrus/errors.d.mts +38 -0
  499. package/dist/plugins/walrus/errors.mjs +26 -0
  500. package/dist/plugins/walrus/errors.mjs.map +1 -0
  501. package/dist/plugins/walrus/faucet-strategy.d.mts +12 -0
  502. package/dist/plugins/walrus/faucet-strategy.mjs +62 -0
  503. package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -0
  504. package/dist/plugins/walrus/index.d.mts +177 -0
  505. package/dist/plugins/walrus/index.mjs +284 -0
  506. package/dist/plugins/walrus/index.mjs.map +1 -0
  507. package/dist/plugins/walrus/mode/known-deploy.d.mts +25 -0
  508. package/dist/plugins/walrus/mode/known-deploy.mjs +71 -0
  509. package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -0
  510. package/dist/plugins/walrus/mode/local-cluster.d.mts +34 -0
  511. package/dist/plugins/walrus/mode/local-cluster.mjs +153 -0
  512. package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -0
  513. package/dist/plugins/walrus/plugin-key.mjs +7 -0
  514. package/dist/plugins/walrus/plugin-key.mjs.map +1 -0
  515. package/dist/plugins/walrus/registry-publish.d.mts +24 -0
  516. package/dist/plugins/walrus/registry-publish.mjs +7 -0
  517. package/dist/plugins/walrus/registry-publish.mjs.map +1 -0
  518. package/dist/plugins/walrus/routable.mjs +99 -0
  519. package/dist/plugins/walrus/routable.mjs.map +1 -0
  520. package/dist/plugins/walrus/service.mjs +20 -0
  521. package/dist/plugins/walrus/service.mjs.map +1 -0
  522. package/dist/plugins/walrus/snapshot.mjs +53 -0
  523. package/dist/plugins/walrus/snapshot.mjs.map +1 -0
  524. package/dist/plugins/walrus/storage-nodes.d.mts +15 -0
  525. package/dist/plugins/walrus/storage-nodes.mjs +154 -0
  526. package/dist/plugins/walrus/storage-nodes.mjs.map +1 -0
  527. package/dist/plugins/walrus/wal-swap.d.mts +2 -0
  528. package/dist/plugins/walrus/wal-swap.mjs +58 -0
  529. package/dist/plugins/walrus/wal-swap.mjs.map +1 -0
  530. package/dist/primitives/artifact-publisher.d.mts +12 -0
  531. package/dist/primitives/cache.d.mts +1 -0
  532. package/dist/runtime/built-in-plugin-layers.mjs +49 -0
  533. package/dist/runtime/built-in-plugin-layers.mjs.map +1 -0
  534. package/dist/runtime/docker/client.d.mts +2 -0
  535. package/dist/runtime/docker/client.mjs +54 -0
  536. package/dist/runtime/docker/client.mjs.map +1 -0
  537. package/dist/runtime/docker/container.d.mts +1 -0
  538. package/dist/runtime/docker/container.mjs +562 -0
  539. package/dist/runtime/docker/container.mjs.map +1 -0
  540. package/dist/runtime/docker/errors.d.mts +1 -0
  541. package/dist/runtime/docker/errors.mjs +187 -0
  542. package/dist/runtime/docker/errors.mjs.map +1 -0
  543. package/dist/runtime/docker/exec.d.mts +1 -0
  544. package/dist/runtime/docker/exec.mjs +63 -0
  545. package/dist/runtime/docker/exec.mjs.map +1 -0
  546. package/dist/runtime/docker/image.d.mts +1 -0
  547. package/dist/runtime/docker/image.mjs +278 -0
  548. package/dist/runtime/docker/image.mjs.map +1 -0
  549. package/dist/runtime/docker/index.d.mts +1 -0
  550. package/dist/runtime/docker/inventory.d.mts +1 -0
  551. package/dist/runtime/docker/inventory.mjs +167 -0
  552. package/dist/runtime/docker/inventory.mjs.map +1 -0
  553. package/dist/runtime/docker/labels.d.mts +1 -0
  554. package/dist/runtime/docker/labels.mjs +97 -0
  555. package/dist/runtime/docker/labels.mjs.map +1 -0
  556. package/dist/runtime/docker/logs.d.mts +1 -0
  557. package/dist/runtime/docker/logs.mjs +34 -0
  558. package/dist/runtime/docker/logs.mjs.map +1 -0
  559. package/dist/runtime/docker/network.d.mts +1 -0
  560. package/dist/runtime/docker/network.mjs +168 -0
  561. package/dist/runtime/docker/network.mjs.map +1 -0
  562. package/dist/runtime/docker/service.d.mts +9 -0
  563. package/dist/runtime/docker/service.mjs +266 -0
  564. package/dist/runtime/docker/service.mjs.map +1 -0
  565. package/dist/runtime/docker/sweep.d.mts +1 -0
  566. package/dist/runtime/docker/sweep.mjs +220 -0
  567. package/dist/runtime/docker/sweep.mjs.map +1 -0
  568. package/dist/runtime/docker/volume.d.mts +1 -0
  569. package/dist/runtime/docker/volume.mjs +24 -0
  570. package/dist/runtime/docker/volume.mjs.map +1 -0
  571. package/dist/runtime/docker/wrap.d.mts +1 -0
  572. package/dist/runtime/docker/wrap.mjs +131 -0
  573. package/dist/runtime/docker/wrap.mjs.map +1 -0
  574. package/dist/substrate/brand.d.mts +24 -0
  575. package/dist/substrate/brand.mjs +14 -0
  576. package/dist/substrate/brand.mjs.map +1 -0
  577. package/dist/substrate/cross-process.d.mts +1 -0
  578. package/dist/substrate/cross-process.mjs +28 -0
  579. package/dist/substrate/cross-process.mjs.map +1 -0
  580. package/dist/substrate/events.d.mts +117 -0
  581. package/dist/substrate/identity.d.mts +13 -0
  582. package/dist/substrate/lifecycle.d.mts +12 -0
  583. package/dist/substrate/manifest.d.mts +39 -0
  584. package/dist/substrate/manifest.mjs +33 -0
  585. package/dist/substrate/manifest.mjs.map +1 -0
  586. package/dist/substrate/network.d.mts +34 -0
  587. package/dist/substrate/options.d.mts +23 -0
  588. package/dist/substrate/plugin.d.mts +101 -0
  589. package/dist/substrate/plugin.mjs +61 -0
  590. package/dist/substrate/plugin.mjs.map +1 -0
  591. package/dist/substrate/projection.d.mts +100 -0
  592. package/dist/substrate/runtime/artifact-publisher/index.mjs +76 -0
  593. package/dist/substrate/runtime/artifact-publisher/index.mjs.map +1 -0
  594. package/dist/substrate/runtime/atomic-write.mjs +106 -0
  595. package/dist/substrate/runtime/atomic-write.mjs.map +1 -0
  596. package/dist/substrate/runtime/cache/index.d.mts +1 -0
  597. package/dist/substrate/runtime/cache/schema.d.mts +1 -0
  598. package/dist/substrate/runtime/cache/schema.mjs +22 -0
  599. package/dist/substrate/runtime/cache/schema.mjs.map +1 -0
  600. package/dist/substrate/runtime/cache/service.d.mts +1 -0
  601. package/dist/substrate/runtime/cache/service.mjs +89 -0
  602. package/dist/substrate/runtime/cache/service.mjs.map +1 -0
  603. package/dist/substrate/runtime/capability-sinks/index.d.mts +1 -0
  604. package/dist/substrate/runtime/capability-sinks/layer.d.mts +1 -0
  605. package/dist/substrate/runtime/capability-sinks/layer.mjs +31 -0
  606. package/dist/substrate/runtime/capability-sinks/layer.mjs.map +1 -0
  607. package/dist/substrate/runtime/capability-sinks/service.d.mts +36 -0
  608. package/dist/substrate/runtime/capability-sinks/service.mjs +74 -0
  609. package/dist/substrate/runtime/capability-sinks/service.mjs.map +1 -0
  610. package/dist/substrate/runtime/config-validation.d.mts +38 -0
  611. package/dist/substrate/runtime/config-validation.mjs +137 -0
  612. package/dist/substrate/runtime/config-validation.mjs.map +1 -0
  613. package/dist/substrate/runtime/context-helpers.mjs +32 -0
  614. package/dist/substrate/runtime/context-helpers.mjs.map +1 -0
  615. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +128 -0
  616. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -0
  617. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs +136 -0
  618. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -0
  619. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs +49 -0
  620. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -0
  621. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs +9 -0
  622. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -0
  623. package/dist/substrate/runtime/cross-process/liveness.mjs +119 -0
  624. package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -0
  625. package/dist/substrate/runtime/cross-process/roster.mjs +275 -0
  626. package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -0
  627. package/dist/substrate/runtime/cross-process/snapshot-reservation.d.mts +1 -0
  628. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +117 -0
  629. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +1 -0
  630. package/dist/substrate/runtime/cross-process/stack-lock.d.mts +1 -0
  631. package/dist/substrate/runtime/cross-process/stack-lock.mjs +142 -0
  632. package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -0
  633. package/dist/substrate/runtime/current-plugin.mjs +15 -0
  634. package/dist/substrate/runtime/current-plugin.mjs.map +1 -0
  635. package/dist/substrate/runtime/errors.d.mts +1 -0
  636. package/dist/substrate/runtime/errors.mjs +76 -0
  637. package/dist/substrate/runtime/errors.mjs.map +1 -0
  638. package/dist/substrate/runtime/host-tree-tar/index.mjs +364 -0
  639. package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -0
  640. package/dist/substrate/runtime/http-probe.d.mts +35 -0
  641. package/dist/substrate/runtime/http-probe.mjs +65 -0
  642. package/dist/substrate/runtime/http-probe.mjs.map +1 -0
  643. package/dist/substrate/runtime/lease-broker/index.d.mts +1 -0
  644. package/dist/substrate/runtime/lease-broker/service.d.mts +64 -0
  645. package/dist/substrate/runtime/lease-broker/service.mjs +155 -0
  646. package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -0
  647. package/dist/substrate/runtime/lifecycle/dep-graph.d.mts +1 -0
  648. package/dist/substrate/runtime/lifecycle/dep-graph.mjs +138 -0
  649. package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -0
  650. package/dist/substrate/runtime/lifecycle/index.d.mts +1 -0
  651. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +31 -0
  652. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +1 -0
  653. package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -0
  654. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +133 -0
  655. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -0
  656. package/dist/substrate/runtime/lifecycle/ready-gate.d.mts +1 -0
  657. package/dist/substrate/runtime/lifecycle/ready-gate.mjs +34 -0
  658. package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -0
  659. package/dist/substrate/runtime/lifecycle/selective-restart.d.mts +1 -0
  660. package/dist/substrate/runtime/lifecycle/selective-restart.mjs +43 -0
  661. package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -0
  662. package/dist/substrate/runtime/lifecycle/signals.d.mts +1 -0
  663. package/dist/substrate/runtime/lifecycle/signals.mjs +64 -0
  664. package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -0
  665. package/dist/substrate/runtime/lifecycle/state-machine.d.mts +1 -0
  666. package/dist/substrate/runtime/lifecycle/state-machine.mjs +38 -0
  667. package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -0
  668. package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -0
  669. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +27 -0
  670. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -0
  671. package/dist/substrate/runtime/managed-container.d.mts +30 -0
  672. package/dist/substrate/runtime/managed-container.mjs +32 -0
  673. package/dist/substrate/runtime/managed-container.mjs.map +1 -0
  674. package/dist/substrate/runtime/manifest/manifest.mjs +73 -0
  675. package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -0
  676. package/dist/substrate/runtime/mode-errors.d.mts +36 -0
  677. package/dist/substrate/runtime/observability/cascade-formatter.d.mts +1 -0
  678. package/dist/substrate/runtime/observability/cascade-formatter.mjs +135 -0
  679. package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -0
  680. package/dist/substrate/runtime/observability/formatter-registry.d.mts +1 -0
  681. package/dist/substrate/runtime/observability/formatter-registry.mjs +65 -0
  682. package/dist/substrate/runtime/observability/formatter-registry.mjs.map +1 -0
  683. package/dist/substrate/runtime/observability/index.d.mts +3 -0
  684. package/dist/substrate/runtime/observability/logger.d.mts +58 -0
  685. package/dist/substrate/runtime/observability/logger.mjs +89 -0
  686. package/dist/substrate/runtime/observability/logger.mjs.map +1 -0
  687. package/dist/substrate/runtime/observability/pretty-error.d.mts +1 -0
  688. package/dist/substrate/runtime/observability/pretty-error.mjs +119 -0
  689. package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -0
  690. package/dist/substrate/runtime/observability/process-lines.d.mts +31 -0
  691. package/dist/substrate/runtime/observability/process-lines.mjs +40 -0
  692. package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -0
  693. package/dist/substrate/runtime/observability/redaction.d.mts +28 -0
  694. package/dist/substrate/runtime/observability/redaction.mjs +45 -0
  695. package/dist/substrate/runtime/observability/redaction.mjs.map +1 -0
  696. package/dist/substrate/runtime/observability/spans.d.mts +1 -0
  697. package/dist/substrate/runtime/observability/spans.mjs +87 -0
  698. package/dist/substrate/runtime/observability/spans.mjs.map +1 -0
  699. package/dist/substrate/runtime/observability/subprocess-capture.d.mts +2 -0
  700. package/dist/substrate/runtime/observability/subprocess-capture.mjs +82 -0
  701. package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -0
  702. package/dist/substrate/runtime/paths.d.mts +17 -0
  703. package/dist/substrate/runtime/paths.mjs +61 -0
  704. package/dist/substrate/runtime/paths.mjs.map +1 -0
  705. package/dist/substrate/runtime/port-broker/index.d.mts +1 -0
  706. package/dist/substrate/runtime/port-broker/service.d.mts +1 -0
  707. package/dist/substrate/runtime/port-broker/service.mjs +319 -0
  708. package/dist/substrate/runtime/port-broker/service.mjs.map +1 -0
  709. package/dist/substrate/runtime/post-acquire-tasks.d.mts +1 -0
  710. package/dist/substrate/runtime/post-acquire-tasks.mjs +34 -0
  711. package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -0
  712. package/dist/substrate/runtime/probes.d.mts +51 -0
  713. package/dist/substrate/runtime/probes.mjs +84 -0
  714. package/dist/substrate/runtime/probes.mjs.map +1 -0
  715. package/dist/substrate/runtime/process-supervisor.d.mts +57 -0
  716. package/dist/substrate/runtime/process-supervisor.mjs +73 -0
  717. package/dist/substrate/runtime/process-supervisor.mjs.map +1 -0
  718. package/dist/substrate/runtime/projection/operational-endpoints.mjs +44 -0
  719. package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -0
  720. package/dist/substrate/runtime/projection/persisted.mjs +195 -0
  721. package/dist/substrate/runtime/projection/persisted.mjs.map +1 -0
  722. package/dist/substrate/runtime/projection/state-ref.mjs +48 -0
  723. package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -0
  724. package/dist/substrate/runtime/projection/update.mjs +200 -0
  725. package/dist/substrate/runtime/projection/update.mjs.map +1 -0
  726. package/dist/substrate/runtime/retry-policy.d.mts +18 -0
  727. package/dist/substrate/runtime/retry-policy.mjs +16 -0
  728. package/dist/substrate/runtime/retry-policy.mjs.map +1 -0
  729. package/dist/substrate/runtime/run.mjs +86 -0
  730. package/dist/substrate/runtime/run.mjs.map +1 -0
  731. package/dist/substrate/runtime/runtime-decode.d.mts +32 -0
  732. package/dist/substrate/runtime/runtime-decode.mjs +53 -0
  733. package/dist/substrate/runtime/runtime-decode.mjs.map +1 -0
  734. package/dist/substrate/runtime/scoped-http-server.mjs +36 -0
  735. package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -0
  736. package/dist/substrate/runtime/scoped-ref-map/service.mjs +83 -0
  737. package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +1 -0
  738. package/dist/substrate/runtime/stage-and-swap/index.d.mts +1 -0
  739. package/dist/substrate/runtime/stage-and-swap/index.mjs +131 -0
  740. package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -0
  741. package/dist/substrate/runtime/state-store/schema.mjs +36 -0
  742. package/dist/substrate/runtime/state-store/schema.mjs.map +1 -0
  743. package/dist/substrate/runtime/strategy-registry/chain-probe-for.d.mts +1 -0
  744. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs +22 -0
  745. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -0
  746. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.d.mts +1 -0
  747. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs +30 -0
  748. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs.map +1 -0
  749. package/dist/substrate/runtime/strategy-registry/index.d.mts +1 -0
  750. package/dist/substrate/runtime/strategy-registry/service.d.mts +1 -0
  751. package/dist/substrate/runtime/strategy-registry/service.mjs +67 -0
  752. package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -0
  753. package/dist/substrate/runtime/sui-execute/index.d.mts +11 -0
  754. package/dist/substrate/runtime/sui-execute/index.mjs +144 -0
  755. package/dist/substrate/runtime/sui-execute/index.mjs.map +1 -0
  756. package/dist/substrate/runtime/sui-move-build/index.d.mts +1 -0
  757. package/dist/substrate/runtime/sui-move-build/index.mjs +283 -0
  758. package/dist/substrate/runtime/sui-move-build/index.mjs.map +1 -0
  759. package/dist/substrate/runtime/supervisor.d.mts +1 -0
  760. package/dist/substrate/runtime/supervisor.mjs +831 -0
  761. package/dist/substrate/runtime/supervisor.mjs.map +1 -0
  762. package/dist/surfaces/cli/command-tree.mjs +276 -0
  763. package/dist/surfaces/cli/command-tree.mjs.map +1 -0
  764. package/dist/surfaces/cli/commands/config.mjs +31 -0
  765. package/dist/surfaces/cli/commands/config.mjs.map +1 -0
  766. package/dist/surfaces/cli/commands/confirm-node.mjs +26 -0
  767. package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -0
  768. package/dist/surfaces/cli/commands/confirm.mjs +26 -0
  769. package/dist/surfaces/cli/commands/confirm.mjs.map +1 -0
  770. package/dist/surfaces/cli/commands/doctor-probes.mjs +452 -0
  771. package/dist/surfaces/cli/commands/doctor-probes.mjs.map +1 -0
  772. package/dist/surfaces/cli/commands/doctor.mjs +38 -0
  773. package/dist/surfaces/cli/commands/doctor.mjs.map +1 -0
  774. package/dist/surfaces/cli/commands/prune-picker.mjs +347 -0
  775. package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -0
  776. package/dist/surfaces/cli/commands/prune.mjs +178 -0
  777. package/dist/surfaces/cli/commands/prune.mjs.map +1 -0
  778. package/dist/surfaces/cli/commands/snapshot.mjs +141 -0
  779. package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -0
  780. package/dist/surfaces/cli/commands/status.mjs +95 -0
  781. package/dist/surfaces/cli/commands/status.mjs.map +1 -0
  782. package/dist/surfaces/cli/commands/supervisor-presence.mjs +33 -0
  783. package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -0
  784. package/dist/surfaces/cli/commands/wipe.mjs +28 -0
  785. package/dist/surfaces/cli/commands/wipe.mjs.map +1 -0
  786. package/dist/surfaces/cli/envelope.mjs +43 -0
  787. package/dist/surfaces/cli/envelope.mjs.map +1 -0
  788. package/dist/surfaces/cli/errors.mjs +110 -0
  789. package/dist/surfaces/cli/errors.mjs.map +1 -0
  790. package/dist/surfaces/cli/flags.mjs +56 -0
  791. package/dist/surfaces/cli/flags.mjs.map +1 -0
  792. package/dist/surfaces/cli/index.mjs +418 -0
  793. package/dist/surfaces/cli/index.mjs.map +1 -0
  794. package/dist/surfaces/cli/output.mjs +115 -0
  795. package/dist/surfaces/cli/output.mjs.map +1 -0
  796. package/dist/surfaces/cli/sysexits.mjs +139 -0
  797. package/dist/surfaces/cli/sysexits.mjs.map +1 -0
  798. package/dist/surfaces/tui/app.mjs +104 -0
  799. package/dist/surfaces/tui/app.mjs.map +1 -0
  800. package/dist/surfaces/tui/dashboard.mjs +261 -0
  801. package/dist/surfaces/tui/dashboard.mjs.map +1 -0
  802. package/dist/surfaces/tui/display-derivation.mjs +395 -0
  803. package/dist/surfaces/tui/display-derivation.mjs.map +1 -0
  804. package/dist/surfaces/tui/errors.mjs +11 -0
  805. package/dist/surfaces/tui/errors.mjs.map +1 -0
  806. package/dist/surfaces/tui/event-log.mjs +155 -0
  807. package/dist/surfaces/tui/event-log.mjs.map +1 -0
  808. package/dist/surfaces/tui/heartbeat.mjs +33 -0
  809. package/dist/surfaces/tui/heartbeat.mjs.map +1 -0
  810. package/dist/surfaces/tui/index.mjs +50 -0
  811. package/dist/surfaces/tui/index.mjs.map +1 -0
  812. package/dist/surfaces/tui/input.mjs +104 -0
  813. package/dist/surfaces/tui/input.mjs.map +1 -0
  814. package/dist/surfaces/tui/mode-detect.mjs +32 -0
  815. package/dist/surfaces/tui/mode-detect.mjs.map +1 -0
  816. package/dist/surfaces/tui/mount-ink.mjs +31 -0
  817. package/dist/surfaces/tui/mount-ink.mjs.map +1 -0
  818. package/dist/surfaces/tui/plain-renderer.mjs +170 -0
  819. package/dist/surfaces/tui/plain-renderer.mjs.map +1 -0
  820. package/dist/surfaces/tui/resource-table.mjs +507 -0
  821. package/dist/surfaces/tui/resource-table.mjs.map +1 -0
  822. package/images/_shared/signal-forward.sh +77 -0
  823. package/images/postgres/Dockerfile +32 -0
  824. package/images/seal/Dockerfile +68 -0
  825. package/images/seal/entrypoint.sh +65 -0
  826. package/images/sui/Dockerfile +73 -0
  827. package/images/sui/entrypoint.sh +244 -0
  828. package/images/sui-fork/Dockerfile +53 -0
  829. package/images/sui-fork/entrypoint.sh +51 -0
  830. package/images/walrus/Dockerfile +122 -0
  831. package/images/walrus/deploy-walrus.sh +305 -0
  832. package/images/walrus/run-walrus.sh +53 -0
  833. package/package.json +94 -0
@@ -0,0 +1,68 @@
1
+ # syntax=docker/dockerfile:1
2
+ # devstack-rewrite seal-key-server image. Vendored Dockerfile fed to
3
+ # the `dockerImage({build})` runner via `ContainerRuntime.ensureImage`
4
+ # (content-addressed builds — same Dockerfile + build args produce
5
+ # the same tag).
6
+ #
7
+ # Pulls the published `seal-cli` and `key-server` binaries from the
8
+ # seal GitHub release — no Rust compile (the seal release workflow
9
+ # already builds and uploads platform binaries). First build is ~30 s
10
+ # vs. the ~5–8 min cargo path the old devstack started with.
11
+ #
12
+ # The move/seal package is NOT staged inside the image: the seal
13
+ # plugin's local-keygen mode fetches the Move source out-of-band via
14
+ # the lifted `source-fetch` sibling and publishes via the SDK, so the
15
+ # in-image staging would be dead weight here.
16
+ #
17
+ # Multi-arch: TARGETARCH (arm64 / amd64) → PLATFORM
18
+ # (linux-aarch64 / linux-x86_64) — the seal release renames `seal-cli`
19
+ # to `seal-${platform}` for the asset name; we rename it back inside
20
+ # the image so the `seal-cli` invocation works unchanged.
21
+
22
+ FROM ubuntu:24.04 AS bin-fetch
23
+ ARG SEAL_VERSION
24
+ ARG TARGETARCH
25
+
26
+ RUN apt-get update \
27
+ && apt-get install -y --no-install-recommends ca-certificates curl \
28
+ && rm -rf /var/lib/apt/lists/*
29
+
30
+ RUN set -eux; \
31
+ case "$TARGETARCH" in \
32
+ arm64) PLATFORM=linux-aarch64 ;; \
33
+ amd64) PLATFORM=linux-x86_64 ;; \
34
+ *) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
35
+ esac; \
36
+ base="https://github.com/MystenLabs/seal/releases/download/${SEAL_VERSION}"; \
37
+ curl -fsSL "$base/seal-${PLATFORM}" -o /tmp/seal-cli; \
38
+ curl -fsSL "$base/key-server-${PLATFORM}" -o /tmp/key-server; \
39
+ chmod +x /tmp/seal-cli /tmp/key-server
40
+
41
+ # Runtime image. debian:bookworm-slim + libpq5 — the `key-server`
42
+ # binary links against postgres client libs even when we run it
43
+ # stand-alone. `curl` is the ready-probe shim (the plugin's
44
+ # `/health` HTTP probe in key-server.ts shells out to curl inside
45
+ # the container).
46
+ FROM debian:bookworm-slim AS runtime
47
+
48
+ EXPOSE 2024 9184
49
+
50
+ RUN apt-get update \
51
+ && apt-get install -y --no-install-recommends \
52
+ ca-certificates curl libpq5 \
53
+ && rm -rf /var/lib/apt/lists/*
54
+
55
+ COPY --from=bin-fetch /tmp/seal-cli /usr/local/bin/seal-cli
56
+ COPY --from=bin-fetch /tmp/key-server /usr/local/bin/key-server
57
+ COPY _shared/signal-forward.sh /usr/local/lib/devstack/signal-forward.sh
58
+ COPY seal/entrypoint.sh /usr/local/bin/devstack-seal-entrypoint.sh
59
+ RUN chmod +x /usr/local/bin/devstack-seal-entrypoint.sh
60
+
61
+ # Default to running the key-server through a shell wrapper that
62
+ # traps docker's SIGTERM and forwards SIGTERM to the key-server as a
63
+ # non-PID-1 child. See `entrypoint.sh` for the rationale (workaround
64
+ # for seal's missing tokio signal handler — same shape as the
65
+ # images/sui entrypoint). The keygen step overrides the entrypoint
66
+ # via `runOneShot({ entrypoint: 'seal-cli', argv: ['genkey'] })` so
67
+ # this wrapper only ever wraps the long-running key-server container.
68
+ ENTRYPOINT ["/usr/local/bin/devstack-seal-entrypoint.sh"]
@@ -0,0 +1,65 @@
1
+ #!/bin/sh
2
+ # devstack-rewrite seal-key-server entrypoint wrapper.
3
+ #
4
+ # Same workaround as sui-localnet for the same upstream-bug class:
5
+ # seal's `key-server` binary (`seal/crates/key-server/src/server.rs`'s
6
+ # `#[tokio::main] async fn main`) installs NO signal handler — `main`
7
+ # is just `tokio::select! { server_result = axum::serve(...), monitor_result = monitor_handle }`,
8
+ # with no `tokio::signal::ctrl_c()` polled on either branch. So running
9
+ # the binary as PID 1 in the container, `docker stop`'s SIGTERM is
10
+ # ignored (PID 1 default-ignores undelivered signals) and the grace
11
+ # timeout always expires → SIGKILL → exit 137 → the next `up` cycle
12
+ # trips "UNCLEAN PRIOR SHUTDOWN" with a forced container recreate
13
+ # (seal's runc-start fails because the prior shutdown left task state
14
+ # behind).
15
+ #
16
+ # Workaround: run key-server as a non-PID-1 CHILD of this shell. The
17
+ # shell traps docker's SIGTERM and forwards SIGTERM to the child.
18
+ # Non-interactive POSIX shells may start background children with
19
+ # SIGINT ignored, so SIGINT is not reliable for a binary with no
20
+ # signal handler; SIGTERM's default action still terminates the
21
+ # child cleanly enough for Seal's in-memory runtime state. The next
22
+ # start reads MASTER_KEY from env again and recomputes everything.
23
+ #
24
+ # Master-key staging: the plugin bind-mounts a 0o600 env-file
25
+ # containing `MASTER_KEY=<hex>`, then passes its container path via
26
+ # MASTER_KEY_ENVFILE (defaulting to /etc/seal/master-key.env). We
27
+ # source it BEFORE exec'ing the key-server so the secret lands in the
28
+ # child's environment, NEVER in `docker inspect` / host process env.
29
+ # Distilled-doc invariant #3.
30
+ #
31
+ # The keygen path (`runOneShot({ entrypoint: 'seal-cli', argv: ['genkey'] })`)
32
+ # bypasses this entrypoint entirely via the runtime's --entrypoint
33
+ # override, so the wrapping only affects the long-running key-server
34
+ # container.
35
+ #
36
+ # The trap + wait-loop lives in `/usr/local/lib/devstack/signal-forward.sh`,
37
+ # vendored from `images/_shared/signal-forward.sh` at build time —
38
+ # the sui entrypoint sources the same file.
39
+
40
+ set -eu
41
+
42
+ # shellcheck disable=SC1091
43
+ . /usr/local/lib/devstack/signal-forward.sh
44
+
45
+ # Source the master-key env-file if it's present at the well-known
46
+ # bind-mount path. `set -a` exports every VAR=value pair to the child
47
+ # process environment. Idempotent: if the file is absent, we fall
48
+ # through with no error (the binary will fail with its own typed
49
+ # message, which is the right level of detail for callers).
50
+ MASTER_KEY_ENVFILE_PATH="${MASTER_KEY_ENVFILE:-/etc/seal/master-key.env}"
51
+ if [ -r "$MASTER_KEY_ENVFILE_PATH" ]; then
52
+ set -a
53
+ # shellcheck disable=SC1091
54
+ . "$MASTER_KEY_ENVFILE_PATH"
55
+ set +a
56
+ fi
57
+
58
+ /usr/local/bin/key-server "$@" &
59
+ KS_PID=$!
60
+ register_signal_forward "$KS_PID" TERM
61
+
62
+ KS_EXIT=0
63
+ wait_for_child "$KS_PID" || KS_EXIT=$?
64
+
65
+ exit "$KS_EXIT"
@@ -0,0 +1,73 @@
1
+ # Sui validator image for the rewrite's local-mode boot. Vendored
2
+ # Dockerfile fed to `ContainerRuntime.ensureImage` (content-addressed
3
+ # builds — same Dockerfile + build args produce the same image digest).
4
+ #
5
+ # Multi-arch: the upstream `mysten/sui-tools` image ships amd64 only,
6
+ # so on Apple Silicon it runs under Rosetta and `sui start` genesis
7
+ # stretches from ~10 s to several minutes. We download the matching
8
+ # `ubuntu-aarch64` / `ubuntu-x86_64` release tarball at build time
9
+ # instead so the resulting image runs natively on the host.
10
+ #
11
+ # `ubuntu:24.04` — the Sui release tarballs are linked against
12
+ # glibc 2.38+; debian:bookworm (glibc 2.36) fails at runtime with a
13
+ # GLIBC_2.38-missing error.
14
+
15
+ FROM ubuntu:24.04
16
+
17
+ ARG SUI_VERSION
18
+ ARG TARGETARCH
19
+
20
+ RUN apt-get update \
21
+ && apt-get install -y --no-install-recommends \
22
+ ca-certificates curl gawk git postgresql \
23
+ && PG_BIN_DIR="$(dirname "$(find /usr/lib/postgresql -name initdb -type f | sort | tail -n 1)")" \
24
+ && test -x "$PG_BIN_DIR/initdb" \
25
+ && ln -sf "$PG_BIN_DIR/initdb" /usr/local/bin/initdb \
26
+ && ln -sf "$PG_BIN_DIR/pg_ctl" /usr/local/bin/pg_ctl \
27
+ && ln -sf "$PG_BIN_DIR/postgres" /usr/local/bin/postgres \
28
+ && useradd --create-home --shell /bin/sh devstack-sui \
29
+ && rm -rf /var/lib/apt/lists/*
30
+
31
+ # Why `gawk` + `git`:
32
+ # - `gawk` — the in-container Move.lock scrub uses `gawk -i inplace`
33
+ # (the `-i` inplace mode is gawk-only; mawk doesn't support it).
34
+ # Without this, the package plugin's `containerScrubShellScript`
35
+ # fails inside `sui move build` with `find: 'gawk': No such
36
+ # file or directory` (host scrub may have already run, but the
37
+ # in-container path still invokes gawk).
38
+ # - `git` — Move's dep resolver invokes `git fetch` against vendored
39
+ # `[dependencies]` blocks (`{ git = "..." }`). Without git on PATH,
40
+ # `sui move build` aborts with a dep-fetch error before reaching
41
+ # the bytecode pass.
42
+ # - `postgresql` — `sui start --with-graphql` initializes an embedded
43
+ # local indexer database and shells out to `initdb`/`postgres`.
44
+
45
+ # Sui release-tarball fetch. The TARGETARCH branch picks the
46
+ # native-architecture asset name and unpacks `sui` (and siblings,
47
+ # including `sui-faucet`) into `/usr/local/bin/`.
48
+ RUN set -eux; \
49
+ case "$TARGETARCH" in \
50
+ arm64) SUI_PLATFORM=ubuntu-aarch64 ;; \
51
+ amd64) SUI_PLATFORM=ubuntu-x86_64 ;; \
52
+ *) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
53
+ esac; \
54
+ url="https://github.com/MystenLabs/sui/releases/download/${SUI_VERSION}/sui-${SUI_VERSION}-${SUI_PLATFORM}.tgz"; \
55
+ curl -fsSL "$url" -o /tmp/sui.tgz; \
56
+ mkdir -p /tmp/sui-unpack; \
57
+ tar -xzf /tmp/sui.tgz -C /tmp/sui-unpack; \
58
+ find /tmp/sui-unpack -maxdepth 2 -type f -executable -exec mv {} /usr/local/bin/ \; ; \
59
+ rm -rf /tmp/sui.tgz /tmp/sui-unpack; \
60
+ sui --version
61
+
62
+ COPY _shared/signal-forward.sh /usr/local/lib/devstack/signal-forward.sh
63
+ COPY sui/entrypoint.sh /usr/local/bin/devstack-entrypoint.sh
64
+ RUN chmod +x /usr/local/bin/devstack-entrypoint.sh
65
+
66
+ ENV RUST_LOG=info,sui=info
67
+
68
+ # RPC (9000), faucet (9123), GraphQL consistent-store helper (9124),
69
+ # and GraphQL HTTP (9125). Local-mode boot probes the public surfaces.
70
+ EXPOSE 9000 9123 9124 9125
71
+
72
+ ENTRYPOINT ["/usr/local/bin/devstack-entrypoint.sh"]
73
+ CMD ["start", "--with-faucet=0.0.0.0:9123", "--with-graphql=0.0.0.0:9125"]
@@ -0,0 +1,244 @@
1
+ #!/bin/sh
2
+ # devstack-rewrite sui-localnet entrypoint.
3
+ #
4
+ # `sui start --force-regenesis` is ephemeral (in-memory genesis). To
5
+ # preserve chain state across `docker stop` + `docker start`, we
6
+ # bootstrap once with `sui genesis -f --with-faucet` (writes a
7
+ # persistent config dir under /home/devstack-sui/.sui/sui_config) and then run
8
+ # `sui start` (no --force-regenesis), which resumes from the on-disk
9
+ # state. Chain state lives in the container's writable layer — `docker
10
+ # stop`/`start` preserves it; `docker rm` destroys it.
11
+ #
12
+ # Slow checkpoint pruning. Localnet's stock fullnode.yaml ships with
13
+ # `num-epochs-to-retain: 0`, which prunes checkpoints aggressively
14
+ # (~10 minutes of retention on a fresh chain). Downstream consumers
15
+ # that follow the chain sequentially (e.g. walrus storage nodes via
16
+ # the v2 LedgerService `get_full_checkpoint` gRPC) get permanently
17
+ # stuck once their last-processed checkpoint slips below sui's
18
+ # lowest-available-checkpoint. Default retention here is 2 prior
19
+ # epochs (~48–72h at the localnet's default 24h epoch); override via
20
+ # the `DEVSTACK_SUI_EPOCHS_TO_RETAIN` env var (`MAX` disables pruning).
21
+ #
22
+ # Signal forwarding (clean shutdown). `sui start --with-faucet` has an
23
+ # upstream signal-handling bug: `sui_commands.rs:1278`'s
24
+ # `start_faucet(app_state).await?` blocks on `axum::serve(...).await`
25
+ # BEFORE the post-setup health-check loop installs
26
+ # `tokio::signal::ctrl_c()`. So when sui runs with `--with-faucet`, no
27
+ # SIGINT handler is ever registered (verified via `/proc/1/status`
28
+ # SigCgt = 0x100000440 vs 0x100000442 without `--with-faucet`) and
29
+ # `docker stop` falls back to SIGKILL → exit 137 → RocksDB checkpoint
30
+ # drain never runs → next `up` resumes from an inconsistent checkpoint
31
+ # (observable as walrus storage-node "checkpoint X is below
32
+ # lowest-available" errors after restart cycles).
33
+ #
34
+ # Workaround until the upstream fix lands: strip only `--with-faucet`
35
+ # from sui's args and run the standalone `sui-faucet` binary as a
36
+ # sibling. Other `sui start` flags, including `--with-graphql`, stay on
37
+ # the validator process. Sui without `--with-faucet` reaches its
38
+ # ctrl_c-aware loop and exits cleanly on SIGINT. The shell becomes PID
39
+ # 1 instead of `exec sui` so it can trap docker's SIGTERM and forward
40
+ # SIGINT to sui. The sibling sui-faucet is stateless; it is also nudged
41
+ # via the shared trap and is force-killed after sui exits if still alive.
42
+ #
43
+ # GraphQL's embedded PostgreSQL indexer refuses to initialize as root,
44
+ # so the entrypoint performs setup as PID 1/root and then starts Sui
45
+ # plus sui-faucet as the unprivileged `devstack-sui` user. Build helper
46
+ # containers override this entrypoint and still run as root.
47
+ #
48
+ # That embedded PostgreSQL can also leave `postmaster.pid` behind after
49
+ # an ungraceful container exit or stale writable-layer reuse. PostgreSQL
50
+ # treats that as an active server and aborts before GraphQL binds, so we
51
+ # clear only provably-stale pid files before starting Sui.
52
+ #
53
+ # The trap + wait-loop lives in `/usr/local/lib/devstack/signal-forward.sh`,
54
+ # vendored from `images/_shared/signal-forward.sh` at build time —
55
+ # the seal key-server entrypoint sources the same file.
56
+
57
+ set -eu
58
+
59
+ # shellcheck disable=SC1091
60
+ . /usr/local/lib/devstack/signal-forward.sh
61
+
62
+ SUI_USER="${DEVSTACK_SUI_USER:-devstack-sui}"
63
+ SUI_HOME="${DEVSTACK_SUI_HOME:-/home/devstack-sui}"
64
+ SUI_UID="$(id -u "$SUI_USER")"
65
+ SUI_GID="$(id -g "$SUI_USER")"
66
+
67
+ mkdir -p "$SUI_HOME/.sui"
68
+ chown -R "$SUI_UID:$SUI_GID" "$SUI_HOME"
69
+
70
+ run_as_sui() {
71
+ setpriv --reuid "$SUI_UID" --regid "$SUI_GID" --init-groups env HOME="$SUI_HOME" "$@"
72
+ }
73
+
74
+ STARTED_PID=""
75
+ start_as_sui() {
76
+ setpriv --reuid "$SUI_UID" --regid "$SUI_GID" --init-groups env HOME="$SUI_HOME" "$@" &
77
+ STARTED_PID=$!
78
+ }
79
+
80
+ if [ ! -d "$SUI_HOME/.sui/sui_config" ]; then
81
+ run_as_sui sui genesis -f --with-faucet
82
+ fi
83
+
84
+ RETAIN_RAW="${DEVSTACK_SUI_EPOCHS_TO_RETAIN:-2}"
85
+ if [ "$RETAIN_RAW" = "MAX" ]; then
86
+ RETAIN=18446744073709551615
87
+ else
88
+ RETAIN="$RETAIN_RAW"
89
+ fi
90
+ patch_pruning_config() {
91
+ config_file="$1"
92
+ [ -f "$config_file" ] || return 0
93
+ grep -q 'authority-store-pruning-config:' "$config_file" || return 0
94
+
95
+ # Idempotent rewrite — covers volumes that pre-date this fix. `sui
96
+ # start` reads network.yaml / per-validator YAMLs, while fullnode.yaml
97
+ # is not the only live config file on localnet.
98
+ sed -i -E "s/^([[:space:]]*)num-epochs-to-retain: .*\$/\\1num-epochs-to-retain: ${RETAIN}/" "$config_file"
99
+ if grep -q '^[[:space:]]*num-epochs-to-retain-for-checkpoints:' "$config_file"; then
100
+ sed -i -E "s/^([[:space:]]*)num-epochs-to-retain-for-checkpoints: .*\$/\\1num-epochs-to-retain-for-checkpoints: ${RETAIN}/" "$config_file"
101
+ else
102
+ awk -v retain="$RETAIN" '
103
+ /^[[:space:]]*num-epochs-to-retain: / {
104
+ print
105
+ match($0, /^[[:space:]]*/)
106
+ indent = substr($0, RSTART, RLENGTH)
107
+ print indent "num-epochs-to-retain-for-checkpoints: " retain
108
+ next
109
+ }
110
+ { print }
111
+ ' "$config_file" > "${config_file}.tmp"
112
+ mv "${config_file}.tmp" "$config_file"
113
+ fi
114
+ }
115
+
116
+ for config_file in "$SUI_HOME"/.sui/sui_config/*.yaml; do
117
+ patch_pruning_config "$config_file"
118
+ done
119
+
120
+ clear_stale_postgres_pid() {
121
+ indexer_dir="$SUI_HOME/.sui/sui_config/indexer"
122
+ pid_file="$indexer_dir/postmaster.pid"
123
+ [ -f "$pid_file" ] || return 0
124
+
125
+ pid="$(sed -n '1p' "$pid_file" 2>/dev/null || true)"
126
+ case "$pid" in
127
+ '' | *[!0-9]*)
128
+ rm -f "$pid_file"
129
+ return 0
130
+ ;;
131
+ esac
132
+
133
+ if kill -0 "$pid" 2>/dev/null; then
134
+ return 0
135
+ fi
136
+
137
+ rm -f "$pid_file"
138
+ }
139
+
140
+ clear_stale_postgres_pid
141
+
142
+ # Strip `--with-faucet[=<addr>]` from sui's args and remember the bind
143
+ # address. POSIX-sh argument shuffling: rebuild "$@" by collecting
144
+ # everything that isn't the faucet flag, capturing the addr if any.
145
+ FAUCET_BIND=""
146
+ SUI_ARGV=""
147
+ SUI_ARGV_COUNT=0
148
+ SAVED_IFS=$IFS
149
+ NL='
150
+ '
151
+ for arg in "$@"; do
152
+ case "$arg" in
153
+ --with-faucet=*)
154
+ FAUCET_BIND="${arg#--with-faucet=}"
155
+ ;;
156
+ --with-faucet)
157
+ # Bare flag — use sui's documented localnet faucet default
158
+ # (0.0.0.0:9123). Devstack always passes the `=<addr>` form
159
+ # so this branch is belt-and-suspenders.
160
+ FAUCET_BIND="0.0.0.0:9123"
161
+ ;;
162
+ *)
163
+ # Pack into SUI_ARGV using newline as separator (POSIX-sh has
164
+ # no real arrays). Restored via IFS=$NL below.
165
+ if [ "$SUI_ARGV_COUNT" -eq 0 ]; then
166
+ SUI_ARGV="$arg"
167
+ else
168
+ SUI_ARGV="$SUI_ARGV$NL$arg"
169
+ fi
170
+ SUI_ARGV_COUNT=$((SUI_ARGV_COUNT + 1))
171
+ ;;
172
+ esac
173
+ done
174
+
175
+ # Re-expand SUI_ARGV into "$@" via IFS so sui sees args without
176
+ # `--with-faucet`. Single-element case avoids an empty trailing arg.
177
+ IFS=$NL
178
+ # shellcheck disable=SC2086
179
+ set -- $SUI_ARGV
180
+ IFS=$SAVED_IFS
181
+
182
+ # Start sui in the background. The shell stays PID 1 so it can trap
183
+ # docker's SIGTERM and forward; sui becomes a direct child whose
184
+ # SIGINT handler the kernel actually delivers (PID 1 ignores
185
+ # undelivered signals; non-PID-1 children get them by default).
186
+ start_as_sui sui "$@"
187
+ SUI_PID=$STARTED_PID
188
+ register_signal_forward "$SUI_PID"
189
+
190
+ # Start sui-faucet as a sibling, scoped to the requested bind addr.
191
+ # The faucet reads ~/.sui via `sui_config_dir()` and shares the wallet
192
+ # config sui just generated above. Re-derives all in-memory state on
193
+ # each start, so signal-induced termination is safe.
194
+ FAUCET_PID=""
195
+ if [ -n "$FAUCET_BIND" ]; then
196
+ FAUCET_HOST="${FAUCET_BIND%:*}"
197
+ FAUCET_PORT="${FAUCET_BIND##*:}"
198
+ # Wait for sui's gRPC to accept connections on 127.0.0.1:9000
199
+ # before starting the faucet — `LocalFaucet::new` does a wallet
200
+ # `get_reference_gas_price` against the RPC at construction time,
201
+ # and panics with `tcp connect error` if the port isn't accepting
202
+ # yet (`crates/sui-faucet/src/main.rs:25` is `.unwrap()`, no retry
203
+ # loop). curl exits 7 on connection refused; anything else
204
+ # (including gRPC's HTTP/2 garble) means the port is open.
205
+ for _ in $(seq 1 60); do
206
+ # Wrap curl in an `if` branch so its non-zero exit (7 = TCP
207
+ # refused, 28 = timeout — both common while sui is still
208
+ # binding) doesn't trip `set -e` and abort the entrypoint
209
+ # before sui even reaches its RPC bind. Anything OTHER than
210
+ # 7/28 means the TCP port accepted us → sui's gRPC is live
211
+ # enough for `LocalFaucet::new` to succeed.
212
+ if curl -s --max-time 2 --connect-timeout 1 -o /dev/null \
213
+ http://127.0.0.1:9000 2>/dev/null; then
214
+ break
215
+ else
216
+ RC=$?
217
+ if [ "$RC" != "7" ] && [ "$RC" != "28" ]; then
218
+ break
219
+ fi
220
+ fi
221
+ sleep 1
222
+ done
223
+ start_as_sui sui-faucet --host-ip "$FAUCET_HOST" --port "$FAUCET_PORT"
224
+ FAUCET_PID=$STARTED_PID
225
+ register_signal_forward "$FAUCET_PID"
226
+ fi
227
+
228
+ # Wait on sui — it's the primary. The shared helper handles dash's
229
+ # "wait returns 128+signum on trapped signal even if child still
230
+ # alive" quirk so we report sui's real exit code (and the container
231
+ # actually waits for sui's checkpoint flush + RocksDB drain before
232
+ # docker reaps it).
233
+ SUI_EXIT=0
234
+ wait_for_child "$SUI_PID" || SUI_EXIT=$?
235
+
236
+ # Tear down the faucet if it's still alive (e.g. sui exited on its
237
+ # own without the trap firing). SIGKILL because faucet ignores SIGINT
238
+ # and we're already in the exit path.
239
+ if [ -n "$FAUCET_PID" ]; then
240
+ kill -KILL "$FAUCET_PID" 2>/dev/null || true
241
+ wait "$FAUCET_PID" 2>/dev/null || true
242
+ fi
243
+
244
+ exit "$SUI_EXIT"
@@ -0,0 +1,53 @@
1
+ FROM rust:1.90-bookworm AS builder
2
+
3
+ ARG SUI_FORK_REPO=https://github.com/MystenLabs/sui.git
4
+ ARG SUI_FORK_REV
5
+
6
+ RUN apt-get update \
7
+ && apt-get install -y --no-install-recommends \
8
+ ca-certificates clang cmake git libclang-dev libpq-dev libssl-dev pkg-config protobuf-compiler \
9
+ && rm -rf /var/lib/apt/lists/*
10
+
11
+ RUN set -eux; \
12
+ test -n "$SUI_FORK_REV"; \
13
+ git clone --filter=blob:none "$SUI_FORK_REPO" /src/sui; \
14
+ cd /src/sui; \
15
+ git fetch --depth 1 origin "$SUI_FORK_REV"; \
16
+ git checkout FETCH_HEAD; \
17
+ cargo build --release -p sui-fork; \
18
+ strip /src/sui/target/release/sui-fork
19
+
20
+ FROM ubuntu:24.04
21
+
22
+ ARG SUI_CLI_VERSION
23
+ ARG TARGETARCH
24
+
25
+ RUN apt-get update \
26
+ && apt-get install -y --no-install-recommends ca-certificates curl gawk git libpq5 libssl3 \
27
+ && rm -rf /var/lib/apt/lists/*
28
+
29
+ RUN set -eux; \
30
+ test -n "$SUI_CLI_VERSION"; \
31
+ case "$TARGETARCH" in \
32
+ arm64) SUI_PLATFORM=ubuntu-aarch64 ;; \
33
+ amd64) SUI_PLATFORM=ubuntu-x86_64 ;; \
34
+ *) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
35
+ esac; \
36
+ url="https://github.com/MystenLabs/sui/releases/download/${SUI_CLI_VERSION}/sui-${SUI_CLI_VERSION}-${SUI_PLATFORM}.tgz"; \
37
+ curl -fsSL "$url" -o /tmp/sui.tgz; \
38
+ mkdir -p /tmp/sui-unpack; \
39
+ tar -xzf /tmp/sui.tgz -C /tmp/sui-unpack; \
40
+ find /tmp/sui-unpack -maxdepth 2 -type f -executable -exec mv {} /usr/local/bin/ \; ; \
41
+ rm -rf /tmp/sui.tgz /tmp/sui-unpack; \
42
+ sui --version
43
+
44
+ COPY --from=builder /src/sui/target/release/sui-fork /usr/local/bin/sui-fork
45
+ COPY _shared/signal-forward.sh /usr/local/lib/devstack/signal-forward.sh
46
+ COPY sui-fork/entrypoint.sh /usr/local/bin/devstack-sui-fork-entrypoint.sh
47
+ RUN chmod +x /usr/local/bin/devstack-sui-fork-entrypoint.sh
48
+
49
+ ENV RUST_LOG=info,sui_fork=info,sui=info
50
+
51
+ EXPOSE 9000
52
+
53
+ ENTRYPOINT ["/usr/local/bin/devstack-sui-fork-entrypoint.sh"]
@@ -0,0 +1,51 @@
1
+ #!/bin/sh
2
+
3
+ set -eu
4
+
5
+ # shellcheck disable=SC1091
6
+ . /usr/local/lib/devstack/signal-forward.sh
7
+
8
+ DATA_DIR=/var/lib/sui-fork
9
+ EXPECT_DATA_DIR=0
10
+ for ARG in "$@"; do
11
+ if [ "$EXPECT_DATA_DIR" -eq 1 ]; then
12
+ DATA_DIR=$ARG
13
+ EXPECT_DATA_DIR=0
14
+ continue
15
+ fi
16
+ if [ "$ARG" = "--data-dir" ]; then
17
+ EXPECT_DATA_DIR=1
18
+ fi
19
+ done
20
+
21
+ if [ -f "$DATA_DIR/seed_manifest.json" ]; then
22
+ FILTERED_ARGS=$(mktemp)
23
+ SKIP_NEXT=0
24
+ for ARG in "$@"; do
25
+ if [ "$SKIP_NEXT" -eq 1 ]; then
26
+ SKIP_NEXT=0
27
+ continue
28
+ fi
29
+ case "$ARG" in
30
+ --address | --object)
31
+ SKIP_NEXT=1
32
+ continue
33
+ ;;
34
+ esac
35
+ printf '%s\n' "$ARG" >>"$FILTERED_ARGS"
36
+ done
37
+
38
+ set --
39
+ while IFS= read -r ARG; do
40
+ set -- "$@" "$ARG"
41
+ done <"$FILTERED_ARGS"
42
+ rm -f "$FILTERED_ARGS"
43
+ fi
44
+
45
+ sui-fork "$@" &
46
+ SUI_FORK_PID=$!
47
+ register_signal_forward "$SUI_FORK_PID"
48
+
49
+ SUI_FORK_EXIT=0
50
+ wait_for_child "$SUI_FORK_PID" || SUI_FORK_EXIT=$?
51
+ exit "$SUI_FORK_EXIT"
@@ -0,0 +1,122 @@
1
+ # Walrus image for local-cluster mode. Vendored Dockerfile fed to
2
+ # `ContainerRuntime.ensureImage` (content-addressed builds: same
3
+ # Dockerfile + build args produce the same image digest).
4
+ #
5
+ # The image packages upstream release binaries only. TARGETARCH selects
6
+ # the matching Walrus and Sui release tarballs, and the build verifies
7
+ # the selected Walrus asset is native for that target before accepting it.
8
+ #
9
+ # Two binary sets baked in:
10
+ #
11
+ # 1. walrus / walrus-deploy / walrus-node — from the walrus release
12
+ # tarball at WALRUS_VERSION.
13
+ #
14
+ # 2. sui binary — from the sui release tarball at SUI_VERSION. The
15
+ # deploy/run scripts need a matching `sui` on PATH.
16
+ #
17
+ # Also vendored:
18
+ #
19
+ # - /opt/walrus/scripts/deploy-walrus.sh — testbed deploy script. Runs
20
+ # once per stack via `runOneShot`. Emits per-node `dryrun-node-<i>.{yaml,
21
+ # keystore}` and a deploy summary file with system_object /
22
+ # staking_object / exchange_object ids.
23
+ #
24
+ # - /opt/walrus/scripts/run-walrus.sh — long-running node entrypoint.
25
+ # Relocates per-node configs out of the read-only deploy mount,
26
+ # swaps SUI for WAL, and execs `walrus-node run`.
27
+ #
28
+ # `ubuntu:24.04` because the walrus + sui binaries link against
29
+ # glibc 2.38+; debian:bookworm (glibc 2.36) fails at runtime.
30
+
31
+ FROM ubuntu:24.04
32
+
33
+ ARG WALRUS_VERSION
34
+ ARG SUI_VERSION
35
+ ARG TARGETARCH
36
+
37
+ RUN apt-get update \
38
+ && apt-get install -y --no-install-recommends \
39
+ ca-certificates curl file gawk git jq netcat-openbsd \
40
+ && rm -rf /var/lib/apt/lists/*
41
+
42
+ # Walrus release-tarball fetch. Asset naming:
43
+ # walrus-<VERSION>-{ubuntu,macos}-{aarch64,x86_64}.tgz
44
+ # We're inside ubuntu so platform is always `ubuntu-{arch}`.
45
+ RUN set -eux; \
46
+ case "$TARGETARCH" in \
47
+ arm64) WALRUS_PLATFORM=ubuntu-aarch64; EXPECTED_FILE_ARCH='ARM aarch64' ;; \
48
+ amd64) WALRUS_PLATFORM=ubuntu-x86_64; EXPECTED_FILE_ARCH='x86-64' ;; \
49
+ *) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
50
+ esac; \
51
+ url="https://github.com/MystenLabs/walrus/releases/download/${WALRUS_VERSION}/walrus-${WALRUS_VERSION}-${WALRUS_PLATFORM}.tgz"; \
52
+ curl -fsSL "$url" -o /tmp/walrus.tgz; \
53
+ mkdir -p /opt/walrus/bin /tmp/walrus-unpack; \
54
+ tar -xzf /tmp/walrus.tgz -C /tmp/walrus-unpack; \
55
+ find /tmp/walrus-unpack -maxdepth 2 -type f -executable -exec mv {} /opt/walrus/bin/ \; ; \
56
+ chmod +x /opt/walrus/bin/*; \
57
+ for bin in walrus walrus-node walrus-deploy; do \
58
+ test -x "/opt/walrus/bin/${bin}" || { \
59
+ echo "walrus release ${WALRUS_VERSION} missing required binary ${bin}" >&2; \
60
+ ls -la /opt/walrus/bin >&2; \
61
+ exit 1; \
62
+ }; \
63
+ file "/opt/walrus/bin/${bin}" | grep -q "$EXPECTED_FILE_ARCH" || { \
64
+ echo "walrus release ${WALRUS_VERSION} asset ${WALRUS_PLATFORM} is not native for TARGETARCH=${TARGETARCH}: ${bin}" >&2; \
65
+ file "/opt/walrus/bin/${bin}" >&2; \
66
+ exit 1; \
67
+ }; \
68
+ done; \
69
+ rm -rf /tmp/walrus.tgz /tmp/walrus-unpack; \
70
+ /opt/walrus/bin/walrus --version; \
71
+ /opt/walrus/bin/walrus-node --help >/dev/null; \
72
+ /opt/walrus/bin/walrus-deploy --help >/dev/null
73
+
74
+ # Sui release-tarball fetch (same logic as ../sui/Dockerfile).
75
+ RUN set -eux; \
76
+ case "$TARGETARCH" in \
77
+ arm64) SUI_PLATFORM=ubuntu-aarch64 ;; \
78
+ amd64) SUI_PLATFORM=ubuntu-x86_64 ;; \
79
+ *) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
80
+ esac; \
81
+ url="https://github.com/MystenLabs/sui/releases/download/${SUI_VERSION}/sui-${SUI_VERSION}-${SUI_PLATFORM}.tgz"; \
82
+ curl -fsSL "$url" -o /tmp/sui.tgz; \
83
+ mkdir -p /root/sui_bin /tmp/sui-unpack; \
84
+ tar -xzf /tmp/sui.tgz -C /tmp/sui-unpack; \
85
+ find /tmp/sui-unpack -maxdepth 2 -type f -executable -name sui -exec mv {} /root/sui_bin/sui \; ; \
86
+ chmod +x /root/sui_bin/sui; \
87
+ rm -rf /tmp/sui.tgz /tmp/sui-unpack; \
88
+ /root/sui_bin/sui --version
89
+
90
+ # Walrus Move contracts (release tarball doesn't include them; the
91
+ # walrus-deploy CLI needs `--contract-dir /opt/walrus/contracts` to
92
+ # locate the wal/walrus Move packages). Pinned to WALRUS_VERSION so
93
+ # the contract source stays in lockstep with the binary release.
94
+ RUN set -eux; \
95
+ git clone --depth 1 --branch "${WALRUS_VERSION}" \
96
+ https://github.com/MystenLabs/walrus.git /tmp/walrus-src; \
97
+ mkdir -p /opt/walrus/contracts; \
98
+ cp -r /tmp/walrus-src/contracts/* /opt/walrus/contracts/; \
99
+ rm -rf /tmp/walrus-src
100
+
101
+ # Surface both binary sets on PATH so scripts shell out cleanly.
102
+ RUN ln -sf /opt/walrus/bin/walrus /usr/local/bin/walrus \
103
+ && ln -sf /opt/walrus/bin/walrus-node /usr/local/bin/walrus-node \
104
+ && ln -sf /opt/walrus/bin/walrus-deploy /usr/local/bin/walrus-deploy \
105
+ && ln -sf /root/sui_bin/sui /usr/local/bin/sui
106
+
107
+ RUN mkdir -p /opt/walrus/scripts /opt/walrus/outputs /var/walrus/storage
108
+
109
+ COPY deploy-walrus.sh /opt/walrus/scripts/deploy-walrus.sh
110
+ COPY run-walrus.sh /opt/walrus/scripts/run-walrus.sh
111
+ RUN chmod +x /opt/walrus/scripts/*.sh
112
+
113
+ ENV RUST_LOG=info,walrus=info
114
+
115
+ # Storage-node REST port. Distilled-doc invariant 9.
116
+ EXPOSE 9185
117
+
118
+ # Default to storage-node entrypoint. The deploy one-shot overrides
119
+ # via `runOneShot` argv: argv[0] == 'deploy' runs `deploy-walrus.sh`,
120
+ # otherwise runs `run-walrus.sh`.
121
+ ENTRYPOINT ["/bin/bash", "-c", "if [ \"${1:-}\" = deploy ]; then shift; exec /opt/walrus/scripts/deploy-walrus.sh \"$@\"; else exec /opt/walrus/scripts/run-walrus.sh; fi", "--"]
122
+ CMD []