@mysten-incubation/devstack 0.0.1 → 0.1.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 (838) hide show
  1. package/README.md +7 -3
  2. package/dashboard-ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  3. package/dashboard-ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  4. package/dashboard-ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  5. package/dashboard-ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  6. package/dashboard-ui/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
  7. package/dashboard-ui/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
  8. package/dashboard-ui/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
  9. package/dashboard-ui/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
  10. package/dashboard-ui/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
  11. package/dashboard-ui/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
  12. package/dashboard-ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  13. package/dashboard-ui/assets/index-Bmi1UtAg.js +1356 -0
  14. package/dashboard-ui/assets/index-D5EShVt4.js +3 -0
  15. package/dashboard-ui/assets/index-Deml9drg.css +1 -0
  16. package/dashboard-ui/index.html +13 -0
  17. package/dist/api/define-capabilities.d.mts +14 -3
  18. package/dist/api/define-capabilities.mjs +18 -1
  19. package/dist/api/define-capabilities.mjs.map +1 -1
  20. package/dist/api/define-devstack.d.mts +1 -1
  21. package/dist/api/define-devstack.mjs +6 -26
  22. package/dist/api/define-devstack.mjs.map +1 -1
  23. package/dist/api/define-plugin.d.mts +1 -0
  24. package/dist/api/define-plugin.mjs +2 -0
  25. package/dist/api/inference-network.d.mts +132 -0
  26. package/dist/api/inference-network.mjs +105 -16
  27. package/dist/api/inference-network.mjs.map +1 -1
  28. package/dist/api/plugin-errors.d.mts +7 -0
  29. package/dist/api/run-stack.d.mts +20 -9
  30. package/dist/api/run-stack.mjs +56 -29
  31. package/dist/api/run-stack.mjs.map +1 -1
  32. package/dist/build-integrations/playwright/config.d.mts +6 -4
  33. package/dist/build-integrations/playwright/config.mjs +5 -3
  34. package/dist/build-integrations/playwright/config.mjs.map +1 -1
  35. package/dist/build-integrations/playwright/errors.d.mts +1 -1
  36. package/dist/build-integrations/playwright/global-setup.d.mts +43 -17
  37. package/dist/build-integrations/playwright/global-setup.mjs +250 -13
  38. package/dist/build-integrations/playwright/global-setup.mjs.map +1 -1
  39. package/dist/build-integrations/playwright/index.d.mts +5 -3
  40. package/dist/build-integrations/playwright/index.mjs +4 -2
  41. package/dist/build-integrations/playwright/stack-context.d.mts +0 -1
  42. package/dist/build-integrations/playwright/stack-context.mjs +24 -63
  43. package/dist/build-integrations/playwright/stack-context.mjs.map +1 -1
  44. package/dist/build-integrations/playwright/wallet-context.d.mts +7 -10
  45. package/dist/build-integrations/playwright/wallet-context.mjs +8 -13
  46. package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -1
  47. package/dist/build-integrations/runtime/cold-start-url.d.mts +5 -0
  48. package/dist/build-integrations/runtime/cold-start-url.mjs +4 -3
  49. package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -1
  50. package/dist/build-integrations/runtime/conventional-routes.d.mts +51 -0
  51. package/dist/build-integrations/runtime/conventional-routes.mjs +92 -0
  52. package/dist/build-integrations/runtime/conventional-routes.mjs.map +1 -0
  53. package/dist/build-integrations/runtime/discover.d.mts +38 -30
  54. package/dist/build-integrations/runtime/discover.mjs +73 -70
  55. package/dist/build-integrations/runtime/discover.mjs.map +1 -1
  56. package/dist/build-integrations/runtime/endpoint-registry.d.mts +3 -1
  57. package/dist/build-integrations/runtime/endpoint-registry.mjs +3 -1
  58. package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -1
  59. package/dist/build-integrations/runtime/index.d.mts +7 -2
  60. package/dist/build-integrations/runtime/index.mjs +9 -2
  61. package/dist/build-integrations/runtime/manifest-types.d.mts +2 -0
  62. package/dist/build-integrations/runtime/manifest-types.mjs +3 -0
  63. package/dist/build-integrations/runtime/playwright-stack-context-slot.d.mts +29 -0
  64. package/dist/build-integrations/runtime/playwright-stack-context-slot.mjs +10 -0
  65. package/dist/build-integrations/runtime/playwright-stack-context-slot.mjs.map +1 -0
  66. package/dist/build-integrations/runtime/read-stack-context.d.mts +1 -1
  67. package/dist/build-integrations/runtime/read-stack-context.mjs +10 -4
  68. package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -1
  69. package/dist/build-integrations/runtime/resolve-discovery-env.d.mts +48 -0
  70. package/dist/build-integrations/runtime/resolve-discovery-env.mjs +42 -0
  71. package/dist/build-integrations/runtime/resolve-discovery-env.mjs.map +1 -0
  72. package/dist/build-integrations/runtime/stack-context.d.mts +1 -1
  73. package/dist/build-integrations/runtime/wallet-paths.mjs +2 -0
  74. package/dist/build-integrations/vite/index.d.mts +51 -0
  75. package/dist/build-integrations/vite/index.mjs +73 -0
  76. package/dist/build-integrations/vite/index.mjs.map +1 -0
  77. package/dist/build-integrations/vitest/env.d.mts +4 -3
  78. package/dist/build-integrations/vitest/env.mjs +6 -4
  79. package/dist/build-integrations/vitest/env.mjs.map +1 -1
  80. package/dist/build-integrations/vitest/errors.d.mts +25 -4
  81. package/dist/build-integrations/vitest/errors.mjs +15 -2
  82. package/dist/build-integrations/vitest/errors.mjs.map +1 -1
  83. package/dist/build-integrations/vitest/index.d.mts +2 -2
  84. package/dist/build-integrations/vitest/index.mjs +3 -3
  85. package/dist/build-integrations/vitest/setup.d.mts +4 -2
  86. package/dist/build-integrations/vitest/setup.mjs +2 -2
  87. package/dist/build-integrations/vitest/setup.mjs.map +1 -1
  88. package/dist/build-integrations/vitest/stack-context.d.mts +0 -1
  89. package/dist/build-integrations/vitest/stack-context.mjs +33 -13
  90. package/dist/build-integrations/vitest/stack-context.mjs.map +1 -1
  91. package/dist/cli/bail.mjs +23 -0
  92. package/dist/cli/bail.mjs.map +1 -0
  93. package/dist/{surfaces/cli/commands → cli}/doctor-probes.mjs +26 -16
  94. package/dist/cli/doctor-probes.mjs.map +1 -0
  95. package/dist/cli/main.d.mts +15 -1
  96. package/dist/cli/main.mjs +166 -482
  97. package/dist/cli/main.mjs.map +1 -1
  98. package/dist/cli/prune-direct.mjs +31 -201
  99. package/dist/cli/prune-direct.mjs.map +1 -1
  100. package/dist/cli/snapshot-reader.mjs +14 -11
  101. package/dist/cli/snapshot-reader.mjs.map +1 -1
  102. package/dist/cli/up-lifecycle.mjs +4 -1
  103. package/dist/cli/up-lifecycle.mjs.map +1 -1
  104. package/dist/cli/wirings/apply.mjs +95 -0
  105. package/dist/cli/wirings/apply.mjs.map +1 -0
  106. package/dist/cli/wirings/build-verb-layers.mjs +42 -0
  107. package/dist/cli/wirings/build-verb-layers.mjs.map +1 -0
  108. package/dist/cli/wirings/config-loader.mjs +69 -0
  109. package/dist/cli/wirings/config-loader.mjs.map +1 -0
  110. package/dist/cli/wirings/engine-command.mjs +30 -0
  111. package/dist/cli/wirings/engine-command.mjs.map +1 -0
  112. package/dist/cli/wirings/identity.mjs +72 -0
  113. package/dist/cli/wirings/identity.mjs.map +1 -0
  114. package/dist/cli/wirings/provide-file-system.mjs +7 -0
  115. package/dist/cli/wirings/provide-file-system.mjs.map +1 -0
  116. package/dist/cli/wirings/snapshot.mjs +177 -0
  117. package/dist/cli/wirings/snapshot.mjs.map +1 -0
  118. package/dist/cli/wirings/up.mjs +287 -0
  119. package/dist/cli/wirings/up.mjs.map +1 -0
  120. package/dist/cli/wirings/wipe.mjs +40 -0
  121. package/dist/cli/wirings/wipe.mjs.map +1 -0
  122. package/dist/contracts/capability-decl.d.mts +0 -2
  123. package/dist/contracts/codegenable.d.mts +43 -0
  124. package/dist/contracts/container-runtime.d.mts +26 -1
  125. package/dist/contracts/faucet-strategy.d.mts +25 -0
  126. package/dist/contracts/funding-strategy.d.mts +42 -0
  127. package/dist/contracts/plugin-expander.mjs +60 -0
  128. package/dist/contracts/plugin-expander.mjs.map +1 -0
  129. package/dist/contracts/projection.d.mts +5 -3
  130. package/dist/contracts/renderer.d.mts +23 -0
  131. package/dist/contracts/routable.d.mts +14 -1
  132. package/dist/contracts/snapshotable.d.mts +25 -3
  133. package/dist/contracts/wallet-protocol.d.mts +52 -0
  134. package/dist/contracts/wallet-protocol.mjs +52 -0
  135. package/dist/contracts/wallet-protocol.mjs.map +1 -0
  136. package/dist/index.d.mts +26 -25
  137. package/dist/index.mjs +20 -13
  138. package/dist/{runtime → orchestrators}/built-in-plugin-layers.mjs +10 -5
  139. package/dist/orchestrators/built-in-plugin-layers.mjs.map +1 -0
  140. package/dist/orchestrators/codegen/bindings.d.mts +1 -2
  141. package/dist/orchestrators/codegen/bindings.mjs +52 -186
  142. package/dist/orchestrators/codegen/bindings.mjs.map +1 -1
  143. package/dist/orchestrators/codegen/emit.mjs +19 -1
  144. package/dist/orchestrators/codegen/emit.mjs.map +1 -1
  145. package/dist/orchestrators/codegen/errors.mjs +8 -3
  146. package/dist/orchestrators/codegen/errors.mjs.map +1 -1
  147. package/dist/orchestrators/codegen/format.mjs +47 -39
  148. package/dist/orchestrators/codegen/format.mjs.map +1 -1
  149. package/dist/orchestrators/codegen/gitignore.mjs +3 -1
  150. package/dist/orchestrators/codegen/gitignore.mjs.map +1 -1
  151. package/dist/orchestrators/codegen/output-location.mjs +40 -0
  152. package/dist/orchestrators/codegen/output-location.mjs.map +1 -0
  153. package/dist/orchestrators/codegen/paths.d.mts +1 -1
  154. package/dist/orchestrators/codegen/paths.mjs +40 -14
  155. package/dist/orchestrators/codegen/paths.mjs.map +1 -1
  156. package/dist/orchestrators/codegen/permissions.mjs +3 -1
  157. package/dist/orchestrators/codegen/permissions.mjs.map +1 -1
  158. package/dist/orchestrators/codegen/service.mjs +157 -105
  159. package/dist/orchestrators/codegen/service.mjs.map +1 -1
  160. package/dist/orchestrators/lifecycle-prune/errors.mjs +31 -0
  161. package/dist/orchestrators/lifecycle-prune/errors.mjs.map +1 -0
  162. package/dist/orchestrators/lifecycle-prune/index.mjs +350 -0
  163. package/dist/orchestrators/lifecycle-prune/index.mjs.map +1 -0
  164. package/dist/orchestrators/router/cleanup.mjs +26 -27
  165. package/dist/orchestrators/router/cleanup.mjs.map +1 -1
  166. package/dist/orchestrators/router/entrypoints.mjs +2 -2
  167. package/dist/orchestrators/router/entrypoints.mjs.map +1 -1
  168. package/dist/orchestrators/router/file-provider.mjs +14 -5
  169. package/dist/orchestrators/router/file-provider.mjs.map +1 -1
  170. package/dist/orchestrators/router/hostname.mjs +19 -55
  171. package/dist/orchestrators/router/hostname.mjs.map +1 -1
  172. package/dist/orchestrators/router/index.mjs +11 -0
  173. package/dist/orchestrators/router/profile.mjs +2 -2
  174. package/dist/orchestrators/router/sentinels.mjs +26 -0
  175. package/dist/orchestrators/router/sentinels.mjs.map +1 -0
  176. package/dist/orchestrators/router/service.mjs +40 -37
  177. package/dist/orchestrators/router/service.mjs.map +1 -1
  178. package/dist/orchestrators/router/traefik-container.mjs +27 -16
  179. package/dist/orchestrators/router/traefik-container.mjs.map +1 -1
  180. package/dist/{substrate/runtime → orchestrators}/run.mjs +26 -21
  181. package/dist/orchestrators/run.mjs.map +1 -0
  182. package/dist/orchestrators/runtime-composition.d.mts +1 -1
  183. package/dist/orchestrators/runtime-composition.mjs +123 -39
  184. package/dist/orchestrators/runtime-composition.mjs.map +1 -1
  185. package/dist/orchestrators/snapshot/capture-command.d.mts +1 -0
  186. package/dist/orchestrators/snapshot/capture-command.mjs +25 -0
  187. package/dist/orchestrators/snapshot/capture-command.mjs.map +1 -0
  188. package/dist/orchestrators/snapshot/capture.mjs +42 -28
  189. package/dist/orchestrators/snapshot/capture.mjs.map +1 -1
  190. package/dist/orchestrators/snapshot/descriptor.mjs +35 -10
  191. package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -1
  192. package/dist/orchestrators/snapshot/identity-guard.mjs +1 -1
  193. package/dist/orchestrators/snapshot/index.mjs +13 -0
  194. package/dist/orchestrators/snapshot/integrity.d.mts +1 -1
  195. package/dist/orchestrators/snapshot/integrity.mjs +73 -17
  196. package/dist/orchestrators/snapshot/integrity.mjs.map +1 -1
  197. package/dist/orchestrators/snapshot/pending-marker.d.mts +1 -0
  198. package/dist/orchestrators/snapshot/pending-marker.mjs +99 -0
  199. package/dist/orchestrators/snapshot/pending-marker.mjs.map +1 -0
  200. package/dist/orchestrators/snapshot/phase-error.mjs +23 -0
  201. package/dist/orchestrators/snapshot/phase-error.mjs.map +1 -0
  202. package/dist/orchestrators/snapshot/prune.mjs +20 -55
  203. package/dist/orchestrators/snapshot/prune.mjs.map +1 -1
  204. package/dist/orchestrators/snapshot/recover-pending.d.mts +1 -0
  205. package/dist/orchestrators/snapshot/recover-pending.mjs +223 -0
  206. package/dist/orchestrators/snapshot/recover-pending.mjs.map +1 -0
  207. package/dist/orchestrators/snapshot/restore.mjs +118 -84
  208. package/dist/orchestrators/snapshot/restore.mjs.map +1 -1
  209. package/dist/orchestrators/snapshot/service.mjs +53 -56
  210. package/dist/orchestrators/snapshot/service.mjs.map +1 -1
  211. package/dist/orchestrators/snapshot/state-document.d.mts +1 -0
  212. package/dist/orchestrators/snapshot/state-document.mjs +47 -7
  213. package/dist/orchestrators/snapshot/state-document.mjs.map +1 -1
  214. package/dist/orchestrators/snapshot/wipe.mjs +67 -10
  215. package/dist/orchestrators/snapshot/wipe.mjs.map +1 -1
  216. package/dist/plugins/account/codegen.mjs +9 -8
  217. package/dist/plugins/account/codegen.mjs.map +1 -1
  218. package/dist/plugins/account/errors.d.mts +33 -6
  219. package/dist/plugins/account/errors.mjs.map +1 -1
  220. package/dist/plugins/account/funding.d.mts +29 -19
  221. package/dist/plugins/account/funding.mjs +84 -66
  222. package/dist/plugins/account/funding.mjs.map +1 -1
  223. package/dist/plugins/account/index.d.mts +2 -4
  224. package/dist/plugins/account/index.mjs +64 -31
  225. package/dist/plugins/account/index.mjs.map +1 -1
  226. package/dist/plugins/account/keypair.mjs +6 -9
  227. package/dist/plugins/account/keypair.mjs.map +1 -1
  228. package/dist/plugins/account/lease.mjs +1 -0
  229. package/dist/plugins/account/lease.mjs.map +1 -1
  230. package/dist/plugins/account/registry.d.mts +14 -1
  231. package/dist/plugins/account/registry.mjs +18 -18
  232. package/dist/plugins/account/registry.mjs.map +1 -1
  233. package/dist/plugins/account/service.d.mts +23 -4
  234. package/dist/plugins/account/service.mjs +83 -45
  235. package/dist/plugins/account/service.mjs.map +1 -1
  236. package/dist/plugins/account/snapshot.mjs +2 -5
  237. package/dist/plugins/account/snapshot.mjs.map +1 -1
  238. package/dist/plugins/account/spans.mjs +16 -0
  239. package/dist/plugins/account/spans.mjs.map +1 -0
  240. package/dist/plugins/account/variants/keystore.mjs +6 -8
  241. package/dist/plugins/account/variants/keystore.mjs.map +1 -1
  242. package/dist/plugins/action/build-context.d.mts +3 -2
  243. package/dist/plugins/action/errors.d.mts +16 -12
  244. package/dist/plugins/action/errors.mjs.map +1 -1
  245. package/dist/plugins/action/execute.mjs +65 -103
  246. package/dist/plugins/action/execute.mjs.map +1 -1
  247. package/dist/plugins/action/index.d.mts +0 -2
  248. package/dist/plugins/action/index.mjs +17 -13
  249. package/dist/plugins/action/index.mjs.map +1 -1
  250. package/dist/plugins/action/service.mjs +38 -35
  251. package/dist/plugins/action/service.mjs.map +1 -1
  252. package/dist/plugins/action/spans.mjs +11 -0
  253. package/dist/plugins/action/spans.mjs.map +1 -0
  254. package/dist/plugins/coin/codegen.mjs +9 -8
  255. package/dist/plugins/coin/codegen.mjs.map +1 -1
  256. package/dist/plugins/coin/discovery.mjs +8 -4
  257. package/dist/plugins/coin/discovery.mjs.map +1 -1
  258. package/dist/plugins/coin/index.d.mts +11 -29
  259. package/dist/plugins/coin/index.mjs +56 -27
  260. package/dist/plugins/coin/index.mjs.map +1 -1
  261. package/dist/plugins/coin/metadata.mjs +8 -15
  262. package/dist/plugins/coin/metadata.mjs.map +1 -1
  263. package/dist/plugins/coin/mint.d.mts +30 -11
  264. package/dist/plugins/coin/mint.mjs +78 -74
  265. package/dist/plugins/coin/mint.mjs.map +1 -1
  266. package/dist/plugins/coin/registry.mjs +4 -7
  267. package/dist/plugins/coin/registry.mjs.map +1 -1
  268. package/dist/plugins/coin/service.d.mts +39 -1
  269. package/dist/plugins/coin/service.mjs +11 -4
  270. package/dist/plugins/coin/service.mjs.map +1 -1
  271. package/dist/plugins/coin/spans.mjs +20 -0
  272. package/dist/plugins/coin/spans.mjs.map +1 -0
  273. package/dist/plugins/dashboard/domain.mjs +402 -0
  274. package/dist/plugins/dashboard/domain.mjs.map +1 -0
  275. package/dist/plugins/dashboard/index.d.mts +29 -0
  276. package/dist/plugins/dashboard/index.mjs +91 -0
  277. package/dist/plugins/dashboard/index.mjs.map +1 -0
  278. package/dist/plugins/dashboard/origin-policy.mjs +36 -0
  279. package/dist/plugins/dashboard/origin-policy.mjs.map +1 -0
  280. package/dist/plugins/dashboard/routable.mjs +27 -0
  281. package/dist/plugins/dashboard/routable.mjs.map +1 -0
  282. package/dist/plugins/dashboard/schema/builder.mjs +21 -0
  283. package/dist/plugins/dashboard/schema/builder.mjs.map +1 -0
  284. package/dist/plugins/dashboard/schema/enums.mjs +72 -0
  285. package/dist/plugins/dashboard/schema/enums.mjs.map +1 -0
  286. package/dist/plugins/dashboard/schema/root.mjs +351 -0
  287. package/dist/plugins/dashboard/schema/root.mjs.map +1 -0
  288. package/dist/plugins/dashboard/schema/types.mjs +508 -0
  289. package/dist/plugins/dashboard/schema/types.mjs.map +1 -0
  290. package/dist/plugins/dashboard/schema.mjs +11 -0
  291. package/dist/plugins/dashboard/schema.mjs.map +1 -0
  292. package/dist/plugins/dashboard/server.mjs +166 -0
  293. package/dist/plugins/dashboard/server.mjs.map +1 -0
  294. package/dist/plugins/deepbook/deploy.mjs +53 -115
  295. package/dist/plugins/deepbook/deploy.mjs.map +1 -1
  296. package/dist/plugins/deepbook/errors.mjs +1 -0
  297. package/dist/plugins/deepbook/errors.mjs.map +1 -1
  298. package/dist/plugins/deepbook/faucet-strategy.mjs +47 -34
  299. package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -1
  300. package/dist/plugins/deepbook/hash.mjs +9 -0
  301. package/dist/plugins/deepbook/hash.mjs.map +1 -0
  302. package/dist/plugins/deepbook/index.d.mts +1 -10
  303. package/dist/plugins/deepbook/index.mjs +25 -22
  304. package/dist/plugins/deepbook/index.mjs.map +1 -1
  305. package/dist/plugins/deepbook/pyth/index.mjs +26 -55
  306. package/dist/plugins/deepbook/pyth/index.mjs.map +1 -1
  307. package/dist/plugins/deepbook/snapshot.mjs +17 -29
  308. package/dist/plugins/deepbook/snapshot.mjs.map +1 -1
  309. package/dist/plugins/deepbook/spans.mjs +18 -0
  310. package/dist/plugins/deepbook/spans.mjs.map +1 -0
  311. package/dist/plugins/deepbook/type-strings.mjs +65 -0
  312. package/dist/plugins/deepbook/type-strings.mjs.map +1 -0
  313. package/dist/plugins/deepbook/types.d.mts +2 -3
  314. package/dist/plugins/deepbook/types.mjs.map +1 -1
  315. package/dist/plugins/faucet/dispatcher.d.mts +21 -2
  316. package/dist/plugins/faucet/dispatcher.mjs +1 -2
  317. package/dist/plugins/faucet/dispatcher.mjs.map +1 -1
  318. package/dist/plugins/faucet/errors.d.mts +11 -24
  319. package/dist/plugins/faucet/errors.mjs.map +1 -1
  320. package/dist/plugins/faucet/http.mjs +33 -14
  321. package/dist/plugins/faucet/http.mjs.map +1 -1
  322. package/dist/plugins/faucet/index.d.mts +15 -5
  323. package/dist/plugins/faucet/index.mjs +3 -0
  324. package/dist/plugins/faucet/index.mjs.map +1 -1
  325. package/dist/plugins/faucet/spans.mjs +12 -0
  326. package/dist/plugins/faucet/spans.mjs.map +1 -0
  327. package/dist/plugins/host-service/errors.d.mts +1 -1
  328. package/dist/plugins/host-service/index.mjs +34 -8
  329. package/dist/plugins/host-service/index.mjs.map +1 -1
  330. package/dist/plugins/host-service/routable.mjs +2 -1
  331. package/dist/plugins/host-service/routable.mjs.map +1 -1
  332. package/dist/plugins/host-service/service.d.mts +21 -0
  333. package/dist/plugins/host-service/service.mjs +136 -81
  334. package/dist/plugins/host-service/service.mjs.map +1 -1
  335. package/dist/plugins/internal/acquire-on-chain-artifact.mjs +23 -0
  336. package/dist/plugins/internal/acquire-on-chain-artifact.mjs.map +1 -0
  337. package/dist/plugins/internal/codegen-helpers.mjs +18 -0
  338. package/dist/plugins/internal/codegen-helpers.mjs.map +1 -0
  339. package/dist/plugins/internal/funding-failure-error.mjs +32 -0
  340. package/dist/plugins/internal/funding-failure-error.mjs.map +1 -0
  341. package/dist/plugins/package/build.mjs +1 -1
  342. package/dist/plugins/package/build.mjs.map +1 -1
  343. package/dist/plugins/package/codegen.mjs +26 -0
  344. package/dist/plugins/package/codegen.mjs.map +1 -1
  345. package/dist/plugins/package/errors.d.mts +16 -6
  346. package/dist/plugins/package/errors.mjs.map +1 -1
  347. package/dist/plugins/package/index.d.mts +0 -4
  348. package/dist/plugins/package/index.mjs +27 -21
  349. package/dist/plugins/package/index.mjs.map +1 -1
  350. package/dist/plugins/package/mode-known.mjs +26 -12
  351. package/dist/plugins/package/mode-known.mjs.map +1 -1
  352. package/dist/plugins/package/mode-local.mjs +47 -41
  353. package/dist/plugins/package/mode-local.mjs.map +1 -1
  354. package/dist/plugins/package/publish-executor.mjs +55 -114
  355. package/dist/plugins/package/publish-executor.mjs.map +1 -1
  356. package/dist/plugins/package/registry.mjs +2 -1
  357. package/dist/plugins/package/registry.mjs.map +1 -1
  358. package/dist/plugins/package/service.mjs.map +1 -1
  359. package/dist/plugins/package/spans.mjs +14 -0
  360. package/dist/plugins/package/spans.mjs.map +1 -0
  361. package/dist/plugins/postgres/db-ensure.mjs +19 -12
  362. package/dist/plugins/postgres/db-ensure.mjs.map +1 -1
  363. package/dist/plugins/postgres/errors.d.mts +5 -0
  364. package/dist/plugins/postgres/errors.mjs.map +1 -1
  365. package/dist/plugins/postgres/index.mjs +10 -17
  366. package/dist/plugins/postgres/index.mjs.map +1 -1
  367. package/dist/plugins/postgres/service.mjs +58 -24
  368. package/dist/plugins/postgres/service.mjs.map +1 -1
  369. package/dist/plugins/postgres/snapshot.mjs.map +1 -1
  370. package/dist/plugins/postgres/spans.mjs +11 -0
  371. package/dist/plugins/postgres/spans.mjs.map +1 -0
  372. package/dist/plugins/router-entrypoints.mjs +4 -4
  373. package/dist/plugins/router-entrypoints.mjs.map +1 -1
  374. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +15 -13
  375. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -1
  376. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +15 -19
  377. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -1
  378. package/dist/plugins/seal/codegen.d.mts +2 -3
  379. package/dist/plugins/seal/codegen.mjs.map +1 -1
  380. package/dist/plugins/seal/config-render.mjs +35 -8
  381. package/dist/plugins/seal/config-render.mjs.map +1 -1
  382. package/dist/plugins/seal/deploy.mjs +31 -39
  383. package/dist/plugins/seal/deploy.mjs.map +1 -1
  384. package/dist/plugins/seal/errors.d.mts +1 -3
  385. package/dist/plugins/seal/errors.mjs +7 -1
  386. package/dist/plugins/seal/errors.mjs.map +1 -1
  387. package/dist/plugins/seal/index.d.mts +1 -6
  388. package/dist/plugins/seal/index.mjs +40 -14
  389. package/dist/plugins/seal/index.mjs.map +1 -1
  390. package/dist/plugins/seal/key-manager.d.mts +1 -9
  391. package/dist/plugins/seal/key-manager.mjs +2 -18
  392. package/dist/plugins/seal/key-manager.mjs.map +1 -1
  393. package/dist/plugins/seal/key-server.mjs +37 -36
  394. package/dist/plugins/seal/key-server.mjs.map +1 -1
  395. package/dist/plugins/seal/keygen.mjs +16 -17
  396. package/dist/plugins/seal/keygen.mjs.map +1 -1
  397. package/dist/plugins/seal/mode/fork-known.mjs +36 -14
  398. package/dist/plugins/seal/mode/fork-known.mjs.map +1 -1
  399. package/dist/plugins/seal/mode/live.d.mts +6 -4
  400. package/dist/plugins/seal/mode/live.mjs +14 -21
  401. package/dist/plugins/seal/mode/live.mjs.map +1 -1
  402. package/dist/plugins/seal/mode/local-keygen.mjs +57 -21
  403. package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -1
  404. package/dist/plugins/seal/registry-publish.mjs +1 -0
  405. package/dist/plugins/seal/registry-publish.mjs.map +1 -1
  406. package/dist/plugins/seal/routable.mjs.map +1 -1
  407. package/dist/plugins/seal/service.mjs.map +1 -1
  408. package/dist/plugins/seal/spans.mjs +18 -0
  409. package/dist/plugins/seal/spans.mjs.map +1 -0
  410. package/dist/plugins/sui/auto-tick.mjs +17 -23
  411. package/dist/plugins/sui/auto-tick.mjs.map +1 -1
  412. package/dist/plugins/sui/chain-build-container.mjs +18 -0
  413. package/dist/plugins/sui/chain-build-container.mjs.map +1 -0
  414. package/dist/plugins/sui/chain-probe.d.mts +5 -5
  415. package/dist/plugins/sui/chain-probe.mjs +28 -58
  416. package/dist/plugins/sui/chain-probe.mjs.map +1 -1
  417. package/dist/plugins/sui/codegen.mjs +26 -0
  418. package/dist/plugins/sui/codegen.mjs.map +1 -1
  419. package/dist/plugins/sui/errors.d.mts +2 -29
  420. package/dist/plugins/sui/errors.mjs +1 -3
  421. package/dist/plugins/sui/errors.mjs.map +1 -1
  422. package/dist/plugins/sui/fork-faucet-strategy.d.mts +1 -0
  423. package/dist/plugins/sui/fork-faucet-strategy.mjs +55 -0
  424. package/dist/plugins/sui/fork-faucet-strategy.mjs.map +1 -0
  425. package/dist/plugins/sui/fork-orchestration.d.mts +1 -0
  426. package/dist/plugins/sui/fork-orchestration.mjs +170 -2
  427. package/dist/plugins/sui/fork-orchestration.mjs.map +1 -1
  428. package/dist/plugins/sui/fork-transaction.d.mts +2 -0
  429. package/dist/plugins/sui/fork-transaction.mjs +92 -28
  430. package/dist/plugins/sui/fork-transaction.mjs.map +1 -1
  431. package/dist/plugins/sui/index.d.mts +33 -70
  432. package/dist/plugins/sui/index.mjs +58 -35
  433. package/dist/plugins/sui/index.mjs.map +1 -1
  434. package/dist/plugins/{faucet/strategies/sui-local.mjs → sui/local-faucet-strategy.mjs} +10 -7
  435. package/dist/plugins/sui/local-faucet-strategy.mjs.map +1 -0
  436. package/dist/plugins/sui/mode/external.mjs +7 -13
  437. package/dist/plugins/sui/mode/external.mjs.map +1 -1
  438. package/dist/plugins/sui/mode/fork.mjs +136 -59
  439. package/dist/plugins/sui/mode/fork.mjs.map +1 -1
  440. package/dist/plugins/sui/mode/live.mjs +10 -16
  441. package/dist/plugins/sui/mode/live.mjs.map +1 -1
  442. package/dist/plugins/sui/mode/local.mjs +37 -36
  443. package/dist/plugins/sui/mode/local.mjs.map +1 -1
  444. package/dist/plugins/sui/mode/shared-boot.mjs +38 -115
  445. package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -1
  446. package/dist/plugins/sui/mode/shared.d.mts +1 -5
  447. package/dist/plugins/sui/mode/shared.mjs.map +1 -1
  448. package/dist/plugins/sui/mode/spec.d.mts +18 -0
  449. package/dist/plugins/sui/move-summary-runner.mjs +207 -0
  450. package/dist/plugins/sui/move-summary-runner.mjs.map +1 -0
  451. package/dist/plugins/sui/network-resolver.d.mts +4 -3
  452. package/dist/plugins/sui/service.mjs.map +1 -1
  453. package/dist/plugins/sui/snapshot.mjs +3 -0
  454. package/dist/plugins/sui/snapshot.mjs.map +1 -1
  455. package/dist/plugins/sui/spans.mjs +17 -0
  456. package/dist/plugins/sui/spans.mjs.map +1 -0
  457. package/dist/plugins/wallet/codegen.d.mts +0 -1
  458. package/dist/plugins/wallet/codegen.mjs +8 -9
  459. package/dist/plugins/wallet/codegen.mjs.map +1 -1
  460. package/dist/plugins/wallet/index.d.mts +6 -8
  461. package/dist/plugins/wallet/index.mjs +46 -35
  462. package/dist/plugins/wallet/index.mjs.map +1 -1
  463. package/dist/plugins/wallet/origin-policy.mjs +12 -28
  464. package/dist/plugins/wallet/origin-policy.mjs.map +1 -1
  465. package/dist/plugins/wallet/pairing.mjs +6 -4
  466. package/dist/plugins/wallet/pairing.mjs.map +1 -1
  467. package/dist/plugins/wallet/protocol.d.mts +1 -0
  468. package/dist/plugins/wallet/protocol.mjs +5 -44
  469. package/dist/plugins/wallet/protocol.mjs.map +1 -1
  470. package/dist/plugins/wallet/routable.mjs +2 -8
  471. package/dist/plugins/wallet/routable.mjs.map +1 -1
  472. package/dist/plugins/wallet/server.mjs +36 -44
  473. package/dist/plugins/wallet/server.mjs.map +1 -1
  474. package/dist/plugins/wallet/service.d.mts +1 -5
  475. package/dist/plugins/wallet/service.mjs +22 -18
  476. package/dist/plugins/wallet/service.mjs.map +1 -1
  477. package/dist/plugins/wallet/spans.mjs +22 -0
  478. package/dist/plugins/wallet/spans.mjs.map +1 -0
  479. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +33 -8
  480. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -1
  481. package/dist/plugins/walrus/codegen.d.mts +3 -3
  482. package/dist/plugins/walrus/codegen.mjs.map +1 -1
  483. package/dist/plugins/walrus/deploy-paths.mjs +21 -5
  484. package/dist/plugins/walrus/deploy-paths.mjs.map +1 -1
  485. package/dist/plugins/walrus/deploy.mjs +67 -69
  486. package/dist/plugins/walrus/deploy.mjs.map +1 -1
  487. package/dist/plugins/walrus/errors.mjs +1 -0
  488. package/dist/plugins/walrus/errors.mjs.map +1 -1
  489. package/dist/plugins/walrus/faucet-strategy.mjs +12 -7
  490. package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -1
  491. package/dist/plugins/walrus/index.d.mts +2 -13
  492. package/dist/plugins/walrus/index.mjs +18 -23
  493. package/dist/plugins/walrus/index.mjs.map +1 -1
  494. package/dist/plugins/walrus/mode/known-deploy.mjs +7 -5
  495. package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -1
  496. package/dist/plugins/walrus/mode/local-cluster.mjs +26 -7
  497. package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -1
  498. package/dist/plugins/walrus/registry-publish.mjs.map +1 -1
  499. package/dist/plugins/walrus/routable.mjs +7 -23
  500. package/dist/plugins/walrus/routable.mjs.map +1 -1
  501. package/dist/plugins/walrus/service.mjs.map +1 -1
  502. package/dist/plugins/walrus/spans.mjs +18 -0
  503. package/dist/plugins/walrus/spans.mjs.map +1 -0
  504. package/dist/plugins/walrus/storage-nodes.d.mts +6 -2
  505. package/dist/plugins/walrus/storage-nodes.mjs +15 -8
  506. package/dist/plugins/walrus/storage-nodes.mjs.map +1 -1
  507. package/dist/plugins/walrus/wal-swap.mjs +58 -15
  508. package/dist/plugins/walrus/wal-swap.mjs.map +1 -1
  509. package/dist/primitives/artifact-publisher.d.mts +1 -1
  510. package/dist/primitives/artifact-publisher.mjs +15 -0
  511. package/dist/primitives/artifact-publisher.mjs.map +1 -0
  512. package/dist/runtime/docker/client.mjs +17 -4
  513. package/dist/runtime/docker/client.mjs.map +1 -1
  514. package/dist/runtime/docker/container.mjs +219 -132
  515. package/dist/runtime/docker/container.mjs.map +1 -1
  516. package/dist/runtime/docker/errors.mjs +0 -6
  517. package/dist/runtime/docker/errors.mjs.map +1 -1
  518. package/dist/runtime/docker/exec.mjs +21 -18
  519. package/dist/runtime/docker/exec.mjs.map +1 -1
  520. package/dist/runtime/docker/image.mjs +36 -13
  521. package/dist/runtime/docker/image.mjs.map +1 -1
  522. package/dist/runtime/docker/index.mjs +14 -0
  523. package/dist/runtime/docker/inspect-and-decode.mjs +51 -0
  524. package/dist/runtime/docker/inspect-and-decode.mjs.map +1 -0
  525. package/dist/runtime/docker/inventory.mjs +14 -11
  526. package/dist/runtime/docker/inventory.mjs.map +1 -1
  527. package/dist/runtime/docker/labels.mjs +38 -5
  528. package/dist/runtime/docker/labels.mjs.map +1 -1
  529. package/dist/runtime/docker/logs.d.mts +1 -1
  530. package/dist/runtime/docker/logs.mjs.map +1 -1
  531. package/dist/runtime/docker/network.mjs +83 -47
  532. package/dist/runtime/docker/network.mjs.map +1 -1
  533. package/dist/runtime/docker/render-run-args.mjs +82 -0
  534. package/dist/runtime/docker/render-run-args.mjs.map +1 -0
  535. package/dist/runtime/docker/service.d.mts +1 -1
  536. package/dist/runtime/docker/service.mjs +12 -7
  537. package/dist/runtime/docker/service.mjs.map +1 -1
  538. package/dist/runtime/docker/sweep.mjs +118 -43
  539. package/dist/runtime/docker/sweep.mjs.map +1 -1
  540. package/dist/runtime/docker/volume.mjs +2 -0
  541. package/dist/runtime/docker/volume.mjs.map +1 -1
  542. package/dist/runtime/docker/wrap.mjs +30 -1
  543. package/dist/runtime/docker/wrap.mjs.map +1 -1
  544. package/dist/substrate/cross-process.mjs +14 -8
  545. package/dist/substrate/cross-process.mjs.map +1 -1
  546. package/dist/substrate/event-time.mjs +33 -0
  547. package/dist/substrate/event-time.mjs.map +1 -0
  548. package/dist/substrate/events.d.mts +28 -8
  549. package/dist/substrate/identity.d.mts +2 -1
  550. package/dist/substrate/manifest.d.mts +68 -5
  551. package/dist/substrate/manifest.mjs +34 -5
  552. package/dist/substrate/manifest.mjs.map +1 -1
  553. package/dist/substrate/network.d.mts +3 -5
  554. package/dist/substrate/options.d.mts +0 -2
  555. package/dist/substrate/plugin.d.mts +13 -0
  556. package/dist/substrate/plugin.mjs +4 -2
  557. package/dist/substrate/plugin.mjs.map +1 -1
  558. package/dist/substrate/projection.d.mts +35 -3
  559. package/dist/substrate/runtime/artifact-publisher/index.mjs +19 -9
  560. package/dist/substrate/runtime/artifact-publisher/index.mjs.map +1 -1
  561. package/dist/substrate/runtime/atomic-write.mjs +97 -32
  562. package/dist/substrate/runtime/atomic-write.mjs.map +1 -1
  563. package/dist/substrate/runtime/cache/index.mjs +3 -0
  564. package/dist/substrate/runtime/cache/schema.mjs +2 -2
  565. package/dist/substrate/runtime/cache/schema.mjs.map +1 -1
  566. package/dist/substrate/runtime/cache/service.mjs +9 -7
  567. package/dist/substrate/runtime/cache/service.mjs.map +1 -1
  568. package/dist/substrate/runtime/capability-sinks/index.d.mts +1 -1
  569. package/dist/substrate/runtime/capability-sinks/index.mjs +3 -0
  570. package/dist/substrate/runtime/capability-sinks/layer.mjs +1 -1
  571. package/dist/substrate/runtime/capability-sinks/service.d.mts +61 -2
  572. package/dist/substrate/runtime/capability-sinks/service.mjs +21 -26
  573. package/dist/substrate/runtime/capability-sinks/service.mjs.map +1 -1
  574. package/dist/substrate/runtime/config-validation.d.mts +1 -13
  575. package/dist/substrate/runtime/config-validation.mjs +2 -91
  576. package/dist/substrate/runtime/config-validation.mjs.map +1 -1
  577. package/dist/substrate/runtime/container-runtime.d.mts +1 -0
  578. package/dist/substrate/runtime/container-runtime.mjs +2 -0
  579. package/dist/substrate/runtime/control-plane/domain.mjs +101 -0
  580. package/dist/substrate/runtime/control-plane/domain.mjs.map +1 -0
  581. package/dist/substrate/runtime/control-plane/service.mjs +7 -0
  582. package/dist/substrate/runtime/control-plane/service.mjs.map +1 -0
  583. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +46 -19
  584. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -1
  585. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs +30 -12
  586. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -1
  587. package/dist/substrate/runtime/cross-process/command-channel/index.mjs +5 -0
  588. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs +11 -2
  589. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -1
  590. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs +1 -1
  591. package/dist/substrate/runtime/cross-process/index.mjs +11 -0
  592. package/dist/substrate/runtime/cross-process/live-clock.mjs +34 -0
  593. package/dist/substrate/runtime/cross-process/live-clock.mjs.map +1 -0
  594. package/dist/substrate/runtime/cross-process/liveness.mjs +52 -10
  595. package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -1
  596. package/dist/substrate/runtime/cross-process/lock.d.mts +1 -0
  597. package/dist/substrate/runtime/cross-process/lock.mjs +23 -0
  598. package/dist/substrate/runtime/cross-process/lock.mjs.map +1 -0
  599. package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs +64 -0
  600. package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs.map +1 -0
  601. package/dist/substrate/runtime/cross-process/roster.mjs +97 -83
  602. package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -1
  603. package/dist/substrate/runtime/cross-process/self-pid.mjs +8 -0
  604. package/dist/substrate/runtime/cross-process/self-pid.mjs.map +1 -0
  605. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +24 -28
  606. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +1 -1
  607. package/dist/substrate/runtime/cross-process/stack-lock.mjs +41 -20
  608. package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -1
  609. package/dist/substrate/runtime/current-plugin.mjs +2 -2
  610. package/dist/substrate/runtime/current-plugin.mjs.map +1 -1
  611. package/dist/substrate/runtime/errors.mjs +12 -6
  612. package/dist/substrate/runtime/errors.mjs.map +1 -1
  613. package/dist/substrate/runtime/format-unknown-error.mjs +30 -0
  614. package/dist/substrate/runtime/format-unknown-error.mjs.map +1 -0
  615. package/dist/substrate/runtime/host-bind-mount-owner.mjs +10 -0
  616. package/dist/substrate/runtime/host-bind-mount-owner.mjs.map +1 -0
  617. package/dist/substrate/runtime/host-gateway.mjs +20 -0
  618. package/dist/substrate/runtime/host-gateway.mjs.map +1 -0
  619. package/dist/substrate/runtime/host-tree-tar/index.mjs +61 -50
  620. package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -1
  621. package/dist/substrate/runtime/http-probe.d.mts +1 -1
  622. package/dist/substrate/runtime/index.mjs +14 -0
  623. package/dist/substrate/runtime/lease-broker/index.d.mts +1 -1
  624. package/dist/substrate/runtime/lease-broker/index.mjs +2 -0
  625. package/dist/substrate/runtime/lease-broker/service.d.mts +1 -64
  626. package/dist/substrate/runtime/lease-broker/service.mjs +1 -1
  627. package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -1
  628. package/dist/substrate/runtime/lifecycle/dep-graph.mjs +22 -3
  629. package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -1
  630. package/dist/substrate/runtime/lifecycle/index.mjs +9 -0
  631. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +1 -1
  632. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +20 -3
  633. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -1
  634. package/dist/substrate/runtime/lifecycle/selective-restart.mjs +1 -1
  635. package/dist/substrate/runtime/lifecycle/signals.mjs +5 -5
  636. package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -1
  637. package/dist/substrate/runtime/lifecycle/state-machine.mjs +1 -1
  638. package/dist/substrate/runtime/managed-container.d.mts +19 -1
  639. package/dist/substrate/runtime/managed-container.mjs +20 -1
  640. package/dist/substrate/runtime/managed-container.mjs.map +1 -1
  641. package/dist/substrate/runtime/manifest/index.mjs +3 -0
  642. package/dist/substrate/runtime/manifest/manifest.mjs +15 -11
  643. package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -1
  644. package/dist/substrate/runtime/mode-errors.mjs +20 -0
  645. package/dist/substrate/runtime/mode-errors.mjs.map +1 -0
  646. package/dist/substrate/runtime/observability/cascade-formatter.mjs +9 -13
  647. package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -1
  648. package/dist/substrate/runtime/observability/formatter-registry.mjs +19 -36
  649. package/dist/substrate/runtime/observability/formatter-registry.mjs.map +1 -1
  650. package/dist/substrate/runtime/observability/ignore-with-log.d.mts +1 -0
  651. package/dist/substrate/runtime/observability/ignore-with-log.mjs +17 -0
  652. package/dist/substrate/runtime/observability/ignore-with-log.mjs.map +1 -0
  653. package/dist/substrate/runtime/observability/index.d.mts +1 -1
  654. package/dist/substrate/runtime/observability/index.mjs +13 -0
  655. package/dist/substrate/runtime/observability/log-store.d.mts +1 -0
  656. package/dist/substrate/runtime/observability/log-store.mjs +175 -0
  657. package/dist/substrate/runtime/observability/log-store.mjs.map +1 -0
  658. package/dist/substrate/runtime/observability/logger.d.mts +2 -1
  659. package/dist/substrate/runtime/observability/logger.mjs +5 -9
  660. package/dist/substrate/runtime/observability/logger.mjs.map +1 -1
  661. package/dist/substrate/runtime/observability/output-truncate.mjs +35 -0
  662. package/dist/substrate/runtime/observability/output-truncate.mjs.map +1 -0
  663. package/dist/substrate/runtime/observability/pretty-error.mjs +9 -12
  664. package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -1
  665. package/dist/substrate/runtime/observability/redaction.d.mts +2 -13
  666. package/dist/substrate/runtime/observability/redaction.mjs +8 -14
  667. package/dist/substrate/runtime/observability/redaction.mjs.map +1 -1
  668. package/dist/substrate/runtime/observability/span-store.d.mts +1 -0
  669. package/dist/substrate/runtime/observability/span-store.mjs +110 -0
  670. package/dist/substrate/runtime/observability/span-store.mjs.map +1 -0
  671. package/dist/substrate/runtime/observability/spans.mjs +14 -14
  672. package/dist/substrate/runtime/observability/spans.mjs.map +1 -1
  673. package/dist/substrate/runtime/observability/subprocess-capture.mjs +1 -1
  674. package/dist/substrate/runtime/passthrough-or-wrap.mjs +33 -0
  675. package/dist/substrate/runtime/passthrough-or-wrap.mjs.map +1 -0
  676. package/dist/substrate/runtime/paths.d.mts +1 -1
  677. package/dist/substrate/runtime/paths.mjs +4 -3
  678. package/dist/substrate/runtime/paths.mjs.map +1 -1
  679. package/dist/substrate/runtime/phase-preserving-produce.mjs +40 -0
  680. package/dist/substrate/runtime/phase-preserving-produce.mjs.map +1 -0
  681. package/dist/substrate/runtime/port-broker/index.mjs +3 -0
  682. package/dist/substrate/runtime/port-broker/service.mjs +170 -126
  683. package/dist/substrate/runtime/port-broker/service.mjs.map +1 -1
  684. package/dist/substrate/runtime/post-acquire-tasks.mjs +1 -1
  685. package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -1
  686. package/dist/substrate/runtime/probes.d.mts +7 -5
  687. package/dist/substrate/runtime/probes.mjs +3 -1
  688. package/dist/substrate/runtime/probes.mjs.map +1 -1
  689. package/dist/substrate/runtime/projection/index.mjs +4 -0
  690. package/dist/substrate/runtime/projection/operational-endpoints.mjs +1 -2
  691. package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -1
  692. package/dist/substrate/runtime/projection/persisted.mjs +33 -15
  693. package/dist/substrate/runtime/projection/persisted.mjs.map +1 -1
  694. package/dist/substrate/runtime/projection/state-ref.mjs +26 -2
  695. package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -1
  696. package/dist/substrate/runtime/projection/update.mjs +88 -24
  697. package/dist/substrate/runtime/projection/update.mjs.map +1 -1
  698. package/dist/substrate/runtime/random-suffix.mjs +11 -0
  699. package/dist/substrate/runtime/random-suffix.mjs.map +1 -0
  700. package/dist/substrate/runtime/retry-policy.d.mts +59 -1
  701. package/dist/substrate/runtime/retry-policy.mjs +66 -1
  702. package/dist/substrate/runtime/retry-policy.mjs.map +1 -1
  703. package/dist/substrate/runtime/routed-url.d.mts +1 -0
  704. package/dist/substrate/runtime/routed-url.mjs +79 -0
  705. package/dist/substrate/runtime/routed-url.mjs.map +1 -0
  706. package/dist/substrate/runtime/runtime-decode.d.mts +1 -1
  707. package/dist/substrate/runtime/runtime-decode.mjs.map +1 -1
  708. package/dist/substrate/runtime/scoped-http-server.mjs +2 -3
  709. package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -1
  710. package/dist/substrate/runtime/scoped-multimap/index.mjs +2 -0
  711. package/dist/substrate/runtime/scoped-multimap/service.mjs +52 -0
  712. package/dist/substrate/runtime/scoped-multimap/service.mjs.map +1 -0
  713. package/dist/substrate/runtime/scoped-ref-map/index.mjs +2 -0
  714. package/dist/substrate/runtime/scoped-ref-map/service.mjs +2 -2
  715. package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +1 -1
  716. package/dist/substrate/runtime/stage-and-swap/index.mjs +72 -4
  717. package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -1
  718. package/dist/substrate/runtime/state-store/index.d.mts +1 -0
  719. package/dist/substrate/runtime/state-store/index.mjs +3 -0
  720. package/dist/substrate/runtime/state-store/schema.d.mts +1 -0
  721. package/dist/substrate/runtime/state-store/schema.mjs +19 -14
  722. package/dist/substrate/runtime/state-store/schema.mjs.map +1 -1
  723. package/dist/substrate/runtime/state-store/service.d.mts +1 -0
  724. package/dist/substrate/runtime/state-store/service.mjs +145 -0
  725. package/dist/substrate/runtime/state-store/service.mjs.map +1 -0
  726. package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.d.mts +1 -0
  727. package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs +33 -0
  728. package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs.map +1 -0
  729. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs +1 -1
  730. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -1
  731. package/dist/substrate/runtime/strategy-registry/index.mjs +4 -0
  732. package/dist/substrate/runtime/strategy-registry/service.mjs +19 -33
  733. package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -1
  734. package/dist/substrate/runtime/subnet-broker.mjs +60 -0
  735. package/dist/substrate/runtime/subnet-broker.mjs.map +1 -0
  736. package/dist/substrate/runtime/sui-execute/index.d.mts +21 -1
  737. package/dist/substrate/runtime/sui-execute/index.mjs +84 -20
  738. package/dist/substrate/runtime/sui-execute/index.mjs.map +1 -1
  739. package/dist/substrate/runtime/sui-execute/sign-and-dispatch.d.mts +1 -0
  740. package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs +32 -0
  741. package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs.map +1 -0
  742. package/dist/substrate/runtime/sui-ledger/object-ref.mjs +32 -0
  743. package/dist/substrate/runtime/sui-ledger/object-ref.mjs.map +1 -0
  744. package/dist/substrate/runtime/sui-move-build/index.mjs +93 -19
  745. package/dist/substrate/runtime/sui-move-build/index.mjs.map +1 -1
  746. package/dist/substrate/runtime/supervisor/acquire-node.mjs +181 -0
  747. package/dist/substrate/runtime/supervisor/acquire-node.mjs.map +1 -0
  748. package/dist/substrate/runtime/supervisor/background-tasks.mjs +144 -0
  749. package/dist/substrate/runtime/supervisor/background-tasks.mjs.map +1 -0
  750. package/dist/substrate/runtime/supervisor/command-loop.mjs +68 -0
  751. package/dist/substrate/runtime/supervisor/command-loop.mjs.map +1 -0
  752. package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs +151 -0
  753. package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs.map +1 -0
  754. package/dist/substrate/runtime/supervisor/errors.d.mts +1 -0
  755. package/dist/substrate/runtime/supervisor/errors.mjs +9 -0
  756. package/dist/substrate/runtime/supervisor/errors.mjs.map +1 -0
  757. package/dist/substrate/runtime/supervisor/index.d.mts +1 -0
  758. package/dist/substrate/runtime/supervisor/index.mjs +3 -0
  759. package/dist/substrate/runtime/supervisor/shutdown.mjs +51 -0
  760. package/dist/substrate/runtime/supervisor/shutdown.mjs.map +1 -0
  761. package/dist/substrate/runtime/supervisor/start-supervisor.d.mts +1 -0
  762. package/dist/substrate/runtime/supervisor/start-supervisor.mjs +250 -0
  763. package/dist/substrate/runtime/supervisor/start-supervisor.mjs.map +1 -0
  764. package/dist/substrate/runtime/supervisor/state.d.mts +1 -0
  765. package/dist/substrate/runtime/supervisor/state.mjs +22 -0
  766. package/dist/substrate/runtime/supervisor/state.mjs.map +1 -0
  767. package/dist/substrate/runtime/supervisor/teardown.mjs +57 -0
  768. package/dist/substrate/runtime/supervisor/teardown.mjs.map +1 -0
  769. package/dist/substrate/runtime/supervisor/types.d.mts +1 -0
  770. package/dist/substrate/runtime/supervisor/wiring.mjs +133 -0
  771. package/dist/substrate/runtime/supervisor/wiring.mjs.map +1 -0
  772. package/dist/substrate/runtime/typed-env.mjs +8 -0
  773. package/dist/substrate/runtime/typed-env.mjs.map +1 -0
  774. package/dist/substrate/state-store.d.mts +1 -0
  775. package/dist/substrate/versioned-doc-schema.mjs +17 -0
  776. package/dist/substrate/versioned-doc-schema.mjs.map +1 -0
  777. package/dist/substrate/versioned-doc-sync.mjs +94 -0
  778. package/dist/substrate/versioned-doc-sync.mjs.map +1 -0
  779. package/dist/surfaces/cli/command-tree.mjs.map +1 -1
  780. package/dist/surfaces/cli/commands/index.mjs +9 -0
  781. package/dist/surfaces/cli/commands/prune-picker-entry.mjs +13 -0
  782. package/dist/surfaces/cli/commands/prune-picker-entry.mjs.map +1 -0
  783. package/dist/surfaces/cli/commands/prune-picker.mjs +3 -2
  784. package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -1
  785. package/dist/surfaces/cli/commands/prune.mjs +34 -17
  786. package/dist/surfaces/cli/commands/prune.mjs.map +1 -1
  787. package/dist/surfaces/cli/commands/status.mjs +2 -2
  788. package/dist/surfaces/cli/commands/status.mjs.map +1 -1
  789. package/dist/surfaces/cli/commands/supervisor-presence.mjs +5 -3
  790. package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -1
  791. package/dist/surfaces/cli/commands/wipe.mjs +38 -4
  792. package/dist/surfaces/cli/commands/wipe.mjs.map +1 -1
  793. package/dist/surfaces/cli/errors.mjs +1 -1
  794. package/dist/surfaces/cli/errors.mjs.map +1 -1
  795. package/dist/surfaces/cli/flags.mjs +0 -1
  796. package/dist/surfaces/cli/flags.mjs.map +1 -1
  797. package/dist/surfaces/cli/index.mjs +98 -18
  798. package/dist/surfaces/cli/index.mjs.map +1 -1
  799. package/dist/surfaces/cli/output.mjs +1 -0
  800. package/dist/surfaces/cli/output.mjs.map +1 -1
  801. package/dist/surfaces/cli/sysexits.mjs +2 -1
  802. package/dist/surfaces/cli/sysexits.mjs.map +1 -1
  803. package/dist/surfaces/tui/app.mjs +25 -3
  804. package/dist/surfaces/tui/app.mjs.map +1 -1
  805. package/dist/surfaces/tui/display-derivation.mjs +23 -74
  806. package/dist/surfaces/tui/display-derivation.mjs.map +1 -1
  807. package/dist/surfaces/tui/event-log.mjs +35 -23
  808. package/dist/surfaces/tui/event-log.mjs.map +1 -1
  809. package/dist/surfaces/tui/input.mjs +5 -1
  810. package/dist/surfaces/tui/input.mjs.map +1 -1
  811. package/dist/surfaces/tui/plain-renderer.mjs +70 -34
  812. package/dist/surfaces/tui/plain-renderer.mjs.map +1 -1
  813. package/package.json +24 -4
  814. package/dist/contracts/liveness-classifier.d.mts +0 -19
  815. package/dist/contracts/network-resolver.d.mts +0 -15
  816. package/dist/contracts/network-resolver.mjs +0 -7
  817. package/dist/contracts/network-resolver.mjs.map +0 -1
  818. package/dist/orchestrators/codegen/extras.mjs +0 -16
  819. package/dist/orchestrators/codegen/extras.mjs.map +0 -1
  820. package/dist/plugins/deepbook/routable.mjs +0 -21
  821. package/dist/plugins/deepbook/routable.mjs.map +0 -1
  822. package/dist/plugins/faucet/service.d.mts +0 -20
  823. package/dist/plugins/faucet/strategies/sui-local.d.mts +0 -23
  824. package/dist/plugins/faucet/strategies/sui-local.mjs.map +0 -1
  825. package/dist/plugins/sui/seed-objects.d.mts +0 -18
  826. package/dist/plugins/sui/seed-objects.mjs +0 -25
  827. package/dist/plugins/sui/seed-objects.mjs.map +0 -1
  828. package/dist/runtime/built-in-plugin-layers.mjs.map +0 -1
  829. package/dist/substrate/runtime/context-helpers.mjs +0 -32
  830. package/dist/substrate/runtime/context-helpers.mjs.map +0 -1
  831. package/dist/substrate/runtime/run.mjs.map +0 -1
  832. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs +0 -30
  833. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs.map +0 -1
  834. package/dist/substrate/runtime/supervisor.d.mts +0 -1
  835. package/dist/substrate/runtime/supervisor.mjs +0 -831
  836. package/dist/substrate/runtime/supervisor.mjs.map +0 -1
  837. package/dist/surfaces/cli/commands/doctor-probes.mjs.map +0 -1
  838. /package/dist/{substrate/runtime/strategy-registry/faucet-capability-for.d.mts → plugins/faucet/http.d.mts} +0 -0
@@ -0,0 +1,132 @@
1
+ import { Effect } from "effect";
2
+
3
+ //#region src/api/inference-network.d.ts
4
+ /** Canonical default stack name (`'main'`). Single source of truth lives
5
+ * in the discovery ladder's `DEFAULT_DISCOVERY_STACK`; re-exported here
6
+ * (and from the vitest env module) so all entry points agree on one
7
+ * literal. */
8
+ declare const DEFAULT_STACK_NAME = "main";
9
+ interface StackNameResolutionOptions {
10
+ readonly explicit?: string;
11
+ readonly env?: Readonly<Record<string, string | undefined>>;
12
+ readonly cwd?: string;
13
+ readonly defaultName?: string;
14
+ }
15
+ interface AppNameResolutionOptions {
16
+ readonly explicit?: string;
17
+ readonly env?: Readonly<Record<string, string | undefined>>;
18
+ readonly cwd?: string;
19
+ readonly defaultName?: string;
20
+ }
21
+ declare const resolveStackName: (options?: StackNameResolutionOptions) => string;
22
+ declare const resolveAppName: (options?: AppNameResolutionOptions) => string;
23
+ declare const FORK_DEVSTACK_NETWORK_NAMES: readonly ["testnet-fork", "mainnet-fork", "devnet-fork"];
24
+ declare const DEVSTACK_NETWORK_NAMES: readonly ["localnet", "testnet", "mainnet", "devnet", "testnet-fork", "mainnet-fork", "devnet-fork"];
25
+ type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];
26
+ type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];
27
+ type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';
28
+ type ParsedDevstackNetwork = {
29
+ readonly mode: 'local';
30
+ readonly name: 'localnet';
31
+ } | {
32
+ readonly mode: 'live';
33
+ readonly name: LiveDevstackNetworkName;
34
+ readonly network: LiveDevstackNetworkName;
35
+ } | {
36
+ readonly mode: 'fork';
37
+ readonly name: ForkDevstackNetworkName;
38
+ readonly upstream: LiveDevstackNetworkName;
39
+ };
40
+ declare class DevstackNetworkParseError extends Error {
41
+ readonly _tag = "DevstackNetworkParseError";
42
+ readonly value: string;
43
+ readonly source: string;
44
+ readonly supported: ReadonlyArray<DevstackNetworkName>;
45
+ constructor(args: {
46
+ readonly value: string;
47
+ readonly source: string;
48
+ });
49
+ }
50
+ declare const parseDevstackNetwork: (value: string | undefined, source?: string) => ParsedDevstackNetwork;
51
+ declare const parseDevstackNetworkName: (value: string | undefined, source?: string) => DevstackNetworkName;
52
+ /**
53
+ * Options for `resolveNetwork`. `explicit` is the caller-supplied
54
+ * override (typically a CLI flag or programmatic option). `env` is the
55
+ * environment value (typically `process.env.DEVSTACK_NETWORK`).
56
+ * `defaultName` is the final fallback when both miss. The precedence is
57
+ * explicit > env > default. The `source` string is embedded in the
58
+ * parse error's `source` field so the diagnosis names the offending
59
+ * input (e.g. `--network` vs `DEVSTACK_NETWORK`).
60
+ */
61
+ interface ResolveNetworkOptions {
62
+ readonly explicit?: string | undefined;
63
+ readonly env?: string | undefined;
64
+ readonly defaultName?: string;
65
+ readonly explicitSource?: string;
66
+ readonly envSource?: string;
67
+ }
68
+ /** Default value when neither caller nor env provides one. Kept as a
69
+ * string (not a `ParsedDevstackNetwork`) because every call site folds
70
+ * it through `parseDevstackNetwork` first — keeping the default in the
71
+ * same lookup table the env value flows through avoids two source-of-
72
+ * truth shapes for "what is the default network?". */
73
+ declare const DEFAULT_DEVSTACK_NETWORK: "sui:local";
74
+ /**
75
+ * Result shape — both the typed parse AND the original input string the
76
+ * resolver picked. Consumers that thread the value through chain-keyed
77
+ * caches (the substrate folds chain id into cache namespaces) MUST keep
78
+ * the raw form to preserve existing on-disk cache keys; consumers that
79
+ * branch on mode (local/live/fork) read `parsed`.
80
+ */
81
+ interface ResolvedDevstackNetwork {
82
+ readonly raw: string;
83
+ readonly parsed: ParsedDevstackNetwork;
84
+ }
85
+ /**
86
+ * Resolve a network from the canonical explicit > env > default ladder
87
+ * and parse the winning value through `parseDevstackNetwork`. Returns
88
+ * the typed parse alongside the raw input the resolver picked. A
89
+ * malformed value surfaces as `DevstackNetworkParseError` on the
90
+ * failure channel so CLI / library boot fail fast with a structured
91
+ * error rather than a downstream cryptic message.
92
+ *
93
+ * Used by both `api/run-stack.ts` (library embedding) and the CLI
94
+ * identity resolver so the two paths share one precedence rule + one
95
+ * parse error type.
96
+ */
97
+ declare const resolveNetwork: (options?: ResolveNetworkOptions) => Effect.Effect<ResolvedDevstackNetwork, DevstackNetworkParseError>;
98
+ /**
99
+ * Sync sibling of `resolveNetwork` for entry points that aren't running
100
+ * inside an Effect (the CLI identity resolver builds a plain TS record).
101
+ * Throws `DevstackNetworkParseError` on bad input — caller's job to lift
102
+ * into a typed failure channel if needed.
103
+ */
104
+ declare const resolveNetworkSync: (options?: ResolveNetworkOptions) => ResolvedDevstackNetwork;
105
+ interface ResolveStateDirOptions {
106
+ /** Caller-supplied `runtimeRoot` override (the canonical
107
+ * `RunStackOptions.runtimeRoot` / CLI `--state-dir` field). Wins
108
+ * over every other input. */
109
+ readonly runtimeRoot?: string;
110
+ /** Caller-supplied `stateDir` override (the
111
+ * `DevstackOptions.stateDir` field on `defineDevstack(...)`).
112
+ * Lower precedence than `runtimeRoot`. */
113
+ readonly stateDir?: string;
114
+ /** Env-var value (typically `process.env.DEVSTACK_STATE_DIR`).
115
+ * Lower precedence than either explicit override. */
116
+ readonly env?: string;
117
+ /** Working directory used for the `.devstack` fallback and for
118
+ * resolving any relative override path. */
119
+ readonly cwd: string;
120
+ }
121
+ /**
122
+ * Resolve the substrate's on-disk runtime root using the canonical
123
+ * precedence ladder: `runtimeRoot` > `stateDir` > `env` > `<cwd>/.devstack`.
124
+ * Relative paths are resolved against `cwd`; absolute paths pass through.
125
+ *
126
+ * Shared by `runStack`, the CLI bin, and the build-integrations
127
+ * discover module so all three entry points agree on the same ladder.
128
+ */
129
+ declare const resolveStateDir: (options: ResolveStateDirOptions) => string;
130
+ //#endregion
131
+ export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkName, DevstackNetworkParseError, ParsedDevstackNetwork, ResolveNetworkOptions, ResolveStateDirOptions, ResolvedDevstackNetwork, parseDevstackNetwork, parseDevstackNetworkName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
132
+ //# sourceMappingURL=inference-network.d.mts.map
@@ -1,7 +1,18 @@
1
+ import { DEFAULT_DISCOVERY_STACK } from "../build-integrations/runtime/resolve-discovery-env.mjs";
2
+ import { Effect } from "effect";
1
3
  import { readFileSync } from "node:fs";
2
4
  import { dirname, resolve } from "node:path";
3
5
  //#region src/api/inference-network.ts
4
- const DEFAULT_STACK_NAME = "main";
6
+ /** Canonical default stack name (`'main'`). Single source of truth lives
7
+ * in the discovery ladder's `DEFAULT_DISCOVERY_STACK`; re-exported here
8
+ * (and from the vitest env module) so all entry points agree on one
9
+ * literal. */
10
+ const DEFAULT_STACK_NAME = DEFAULT_DISCOVERY_STACK;
11
+ /** Normalize a candidate name: trim, strip an `@scope/` prefix, then
12
+ * strip any leading non-alphanumeric run. Returns `undefined` for empty
13
+ * or whitespace-only input, and for inputs that normalize to an empty
14
+ * string. Shared by every inferred-name resolver so explicit / env /
15
+ * package paths all reject the same junk. */
5
16
  const usefulName = (value) => {
6
17
  const trimmed = value?.trim();
7
18
  if (trimmed === void 0 || trimmed.length === 0) return void 0;
@@ -26,24 +37,34 @@ const inferPackageNameFromCwd = (cwd = process.cwd()) => {
26
37
  dir = parent;
27
38
  }
28
39
  };
29
- const resolveStackName = (options = {}) => {
30
- const explicit = usefulName(options.explicit);
40
+ /** Shared `explicit > env > package > default` precedence ladder for the
41
+ * app/stack name resolvers. Each input is fed through `usefulName` so a
42
+ * whitespace-only or junk-prefixed value falls through to the next rung
43
+ * rather than poisoning identity. `envKey` is the environment variable
44
+ * whose value (under `env`) supplies the env rung. */
45
+ const resolveInferredName = (params) => {
46
+ const explicit = usefulName(params.explicit);
31
47
  if (explicit !== void 0) return explicit;
32
- const fromEnv = usefulName((options.env ?? process.env).DEVSTACK_STACK);
48
+ const fromEnv = usefulName((params.env ?? process.env)[params.envKey]);
33
49
  if (fromEnv !== void 0) return fromEnv;
34
- const fromPackage = inferPackageNameFromCwd(options.cwd);
50
+ const fromPackage = inferPackageNameFromCwd(params.cwd);
35
51
  if (fromPackage !== void 0) return fromPackage;
36
- return options.defaultName ?? "main";
37
- };
38
- const resolveAppName = (options = {}) => {
39
- const explicit = usefulName(options.explicit);
40
- if (explicit !== void 0) return explicit;
41
- const fromEnv = usefulName((options.env ?? process.env).DEVSTACK_APP);
42
- if (fromEnv !== void 0) return fromEnv;
43
- const fromPackage = inferPackageNameFromCwd(options.cwd);
44
- if (fromPackage !== void 0) return fromPackage;
45
- return options.defaultName ?? "devstack";
52
+ return params.defaultName;
46
53
  };
54
+ const resolveStackName = (options = {}) => resolveInferredName({
55
+ explicit: options.explicit,
56
+ envKey: "DEVSTACK_STACK",
57
+ env: options.env,
58
+ cwd: options.cwd,
59
+ defaultName: options.defaultName ?? DEFAULT_STACK_NAME
60
+ });
61
+ const resolveAppName = (options = {}) => resolveInferredName({
62
+ explicit: options.explicit,
63
+ envKey: "DEVSTACK_APP",
64
+ env: options.env,
65
+ cwd: options.cwd,
66
+ defaultName: options.defaultName ?? "devstack"
67
+ });
47
68
  const ACTIVE_DEVSTACK_NETWORK_NAMES = [
48
69
  "localnet",
49
70
  "testnet",
@@ -116,7 +137,75 @@ const parseDevstackNetwork = (value, source = "DEVSTACK_NETWORK") => {
116
137
  }
117
138
  };
118
139
  const parseDevstackNetworkName = (value, source = "DEVSTACK_NETWORK") => parseDevstackNetwork(value, source).name;
140
+ /** Default value when neither caller nor env provides one. Kept as a
141
+ * string (not a `ParsedDevstackNetwork`) because every call site folds
142
+ * it through `parseDevstackNetwork` first — keeping the default in the
143
+ * same lookup table the env value flows through avoids two source-of-
144
+ * truth shapes for "what is the default network?". */
145
+ const DEFAULT_DEVSTACK_NETWORK = "sui:local";
146
+ const pickInput = (options) => {
147
+ if (options.explicit !== void 0 && options.explicit.length > 0) return {
148
+ value: options.explicit,
149
+ source: options.explicitSource ?? "--network"
150
+ };
151
+ if (options.env !== void 0 && options.env.length > 0) return {
152
+ value: options.env,
153
+ source: options.envSource ?? "DEVSTACK_NETWORK"
154
+ };
155
+ return {
156
+ value: options.defaultName ?? "sui:local",
157
+ source: "default"
158
+ };
159
+ };
160
+ /**
161
+ * Resolve a network from the canonical explicit > env > default ladder
162
+ * and parse the winning value through `parseDevstackNetwork`. Returns
163
+ * the typed parse alongside the raw input the resolver picked. A
164
+ * malformed value surfaces as `DevstackNetworkParseError` on the
165
+ * failure channel so CLI / library boot fail fast with a structured
166
+ * error rather than a downstream cryptic message.
167
+ *
168
+ * Used by both `api/run-stack.ts` (library embedding) and the CLI
169
+ * identity resolver so the two paths share one precedence rule + one
170
+ * parse error type.
171
+ */
172
+ const resolveNetwork = (options = {}) => Effect.try({
173
+ try: () => {
174
+ const { value, source } = pickInput(options);
175
+ return {
176
+ raw: value,
177
+ parsed: parseDevstackNetwork(value, source)
178
+ };
179
+ },
180
+ catch: (cause) => cause
181
+ });
182
+ /**
183
+ * Sync sibling of `resolveNetwork` for entry points that aren't running
184
+ * inside an Effect (the CLI identity resolver builds a plain TS record).
185
+ * Throws `DevstackNetworkParseError` on bad input — caller's job to lift
186
+ * into a typed failure channel if needed.
187
+ */
188
+ const resolveNetworkSync = (options = {}) => {
189
+ const { value, source } = pickInput(options);
190
+ return {
191
+ raw: value,
192
+ parsed: parseDevstackNetwork(value, source)
193
+ };
194
+ };
195
+ /**
196
+ * Resolve the substrate's on-disk runtime root using the canonical
197
+ * precedence ladder: `runtimeRoot` > `stateDir` > `env` > `<cwd>/.devstack`.
198
+ * Relative paths are resolved against `cwd`; absolute paths pass through.
199
+ *
200
+ * Shared by `runStack`, the CLI bin, and the build-integrations
201
+ * discover module so all three entry points agree on the same ladder.
202
+ */
203
+ const resolveStateDir = (options) => {
204
+ const pick = (options.runtimeRoot !== void 0 && options.runtimeRoot.length > 0 ? options.runtimeRoot : void 0) ?? (options.stateDir !== void 0 && options.stateDir.length > 0 ? options.stateDir : void 0) ?? (options.env !== void 0 && options.env.length > 0 ? options.env : void 0);
205
+ if (pick === void 0) return resolve(options.cwd, ".devstack");
206
+ return resolve(options.cwd, pick);
207
+ };
119
208
  //#endregion
120
- export { DEFAULT_STACK_NAME, parseDevstackNetworkName, resolveAppName, resolveStackName };
209
+ export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkParseError, inferPackageNameFromCwd, parseDevstackNetwork, parseDevstackNetworkName, readPackageName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
121
210
 
122
211
  //# sourceMappingURL=inference-network.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"inference-network.mjs","names":[],"sources":["../../src/api/inference-network.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nexport const DEFAULT_STACK_NAME = 'main';\n\nexport interface StackNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\nexport interface AppNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\nconst usefulName = (value: string | undefined): string | undefined => {\n\tconst trimmed = value?.trim();\n\tif (trimmed === undefined || trimmed.length === 0) return undefined;\n\tconst unscoped = trimmed.replace(/^@[^/]+\\//, '').replace(/^[^a-zA-Z0-9]+/, '');\n\treturn unscoped.length > 0 ? unscoped : undefined;\n};\n\nexport const readPackageName = (dir: string): string | undefined => {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(resolve(dir, 'package.json'), 'utf8')) as {\n\t\t\treadonly name?: string;\n\t\t};\n\t\treturn typeof pkg.name === 'string' ? usefulName(pkg.name) : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport const inferPackageNameFromCwd = (cwd: string = process.cwd()): string | undefined => {\n\tlet dir = resolve(cwd);\n\tfor (let i = 0; i < 32; i += 1) {\n\t\tconst name = readPackageName(dir);\n\t\tif (name !== undefined) return name;\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return undefined;\n\t\tdir = parent;\n\t}\n\treturn undefined;\n};\n\nexport const resolveStackName = (options: StackNameResolutionOptions = {}): string => {\n\tconst explicit = usefulName(options.explicit);\n\tif (explicit !== undefined) return explicit;\n\tconst env = options.env ?? process.env;\n\tconst fromEnv = usefulName(env.DEVSTACK_STACK);\n\tif (fromEnv !== undefined) return fromEnv;\n\tconst fromPackage = inferPackageNameFromCwd(options.cwd);\n\tif (fromPackage !== undefined) return fromPackage;\n\treturn options.defaultName ?? DEFAULT_STACK_NAME;\n};\n\nexport const resolveAppName = (options: AppNameResolutionOptions = {}): string => {\n\tconst explicit = usefulName(options.explicit);\n\tif (explicit !== undefined) return explicit;\n\tconst env = options.env ?? process.env;\n\tconst fromEnv = usefulName(env.DEVSTACK_APP);\n\tif (fromEnv !== undefined) return fromEnv;\n\tconst fromPackage = inferPackageNameFromCwd(options.cwd);\n\tif (fromPackage !== undefined) return fromPackage;\n\treturn options.defaultName ?? 'devstack';\n};\n\nexport const ACTIVE_DEVSTACK_NETWORK_NAMES = ['localnet', 'testnet', 'mainnet', 'devnet'] as const;\n\nexport const FORK_DEVSTACK_NETWORK_NAMES = ['testnet-fork', 'mainnet-fork', 'devnet-fork'] as const;\n\nexport const DEVSTACK_NETWORK_NAMES = [\n\t...ACTIVE_DEVSTACK_NETWORK_NAMES,\n\t...FORK_DEVSTACK_NETWORK_NAMES,\n] as const;\n\nexport type ActiveDevstackNetworkName = (typeof ACTIVE_DEVSTACK_NETWORK_NAMES)[number];\nexport type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];\nexport type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];\nexport type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';\n\nexport type ParsedDevstackNetwork =\n\t| {\n\t\t\treadonly mode: 'local';\n\t\t\treadonly name: 'localnet';\n\t }\n\t| {\n\t\t\treadonly mode: 'live';\n\t\t\treadonly name: LiveDevstackNetworkName;\n\t\t\treadonly network: LiveDevstackNetworkName;\n\t }\n\t| {\n\t\t\treadonly mode: 'fork';\n\t\t\treadonly name: ForkDevstackNetworkName;\n\t\t\treadonly upstream: LiveDevstackNetworkName;\n\t };\n\nconst NETWORK_ALIASES: Readonly<Record<string, DevstackNetworkName>> = {\n\tlocal: 'localnet',\n\tlocalnet: 'localnet',\n\t'sui:local': 'localnet',\n\t'sui:localnet': 'localnet',\n\ttestnet: 'testnet',\n\t'sui:testnet': 'testnet',\n\tmainnet: 'mainnet',\n\t'sui:mainnet': 'mainnet',\n\tdevnet: 'devnet',\n\t'sui:devnet': 'devnet',\n\t'testnet-fork': 'testnet-fork',\n\t'sui:testnet-fork': 'testnet-fork',\n\t'mainnet-fork': 'mainnet-fork',\n\t'sui:mainnet-fork': 'mainnet-fork',\n\t'devnet-fork': 'devnet-fork',\n\t'sui:devnet-fork': 'devnet-fork',\n};\n\nexport class DevstackNetworkParseError extends Error {\n\treadonly _tag = 'DevstackNetworkParseError';\n\treadonly value: string;\n\treadonly source: string;\n\treadonly supported: ReadonlyArray<DevstackNetworkName>;\n\n\tconstructor(args: { readonly value: string; readonly source: string }) {\n\t\tsuper(\n\t\t\t`${args.source} must be one of: ${DEVSTACK_NETWORK_NAMES.join(', ')} (got ${JSON.stringify(args.value)})`,\n\t\t);\n\t\tthis.name = 'DevstackNetworkParseError';\n\t\tthis.value = args.value;\n\t\tthis.source = args.source;\n\t\tthis.supported = DEVSTACK_NETWORK_NAMES;\n\t}\n}\n\nexport const parseDevstackNetwork = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): ParsedDevstackNetwork => {\n\tconst raw = value?.trim();\n\tconst name = raw === undefined || raw.length === 0 ? 'localnet' : NETWORK_ALIASES[raw];\n\tif (name === undefined) {\n\t\tthrow new DevstackNetworkParseError({ value: raw ?? '', source });\n\t}\n\tswitch (name) {\n\t\tcase 'localnet':\n\t\t\treturn { mode: 'local', name };\n\t\tcase 'testnet':\n\t\tcase 'mainnet':\n\t\tcase 'devnet':\n\t\t\treturn { mode: 'live', name, network: name };\n\t\tcase 'testnet-fork':\n\t\tcase 'mainnet-fork':\n\t\tcase 'devnet-fork':\n\t\t\treturn {\n\t\t\t\tmode: 'fork',\n\t\t\t\tname,\n\t\t\t\tupstream: name.replace(/-fork$/, '') as LiveDevstackNetworkName,\n\t\t\t};\n\t}\n};\n\nexport const parseDevstackNetworkName = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): DevstackNetworkName => parseDevstackNetwork(value, source).name;\n"],"mappings":"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"}
1
+ {"version":3,"file":"inference-network.mjs","names":[],"sources":["../../src/api/inference-network.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nimport { Effect } from 'effect';\n\nimport { DEFAULT_DISCOVERY_STACK } from '../build-integrations/runtime/resolve-discovery-env.ts';\n\n/** Canonical default stack name (`'main'`). Single source of truth lives\n * in the discovery ladder's `DEFAULT_DISCOVERY_STACK`; re-exported here\n * (and from the vitest env module) so all entry points agree on one\n * literal. */\nexport const DEFAULT_STACK_NAME = DEFAULT_DISCOVERY_STACK;\n\nexport interface StackNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\nexport interface AppNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\n/** Normalize a candidate name: trim, strip an `@scope/` prefix, then\n * strip any leading non-alphanumeric run. Returns `undefined` for empty\n * or whitespace-only input, and for inputs that normalize to an empty\n * string. Shared by every inferred-name resolver so explicit / env /\n * package paths all reject the same junk. */\nconst usefulName = (value: string | undefined): string | undefined => {\n\tconst trimmed = value?.trim();\n\tif (trimmed === undefined || trimmed.length === 0) return undefined;\n\tconst unscoped = trimmed.replace(/^@[^/]+\\//, '').replace(/^[^a-zA-Z0-9]+/, '');\n\treturn unscoped.length > 0 ? unscoped : undefined;\n};\n\nexport const readPackageName = (dir: string): string | undefined => {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(resolve(dir, 'package.json'), 'utf8')) as {\n\t\t\treadonly name?: string;\n\t\t};\n\t\treturn typeof pkg.name === 'string' ? usefulName(pkg.name) : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport const inferPackageNameFromCwd = (cwd: string = process.cwd()): string | undefined => {\n\tlet dir = resolve(cwd);\n\tfor (let i = 0; i < 32; i += 1) {\n\t\tconst name = readPackageName(dir);\n\t\tif (name !== undefined) return name;\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return undefined;\n\t\tdir = parent;\n\t}\n\treturn undefined;\n};\n\n/** Shared `explicit > env > package > default` precedence ladder for the\n * app/stack name resolvers. Each input is fed through `usefulName` so a\n * whitespace-only or junk-prefixed value falls through to the next rung\n * rather than poisoning identity. `envKey` is the environment variable\n * whose value (under `env`) supplies the env rung. */\nconst resolveInferredName = (params: {\n\treadonly explicit: string | undefined;\n\treadonly envKey: string;\n\treadonly env: Readonly<Record<string, string | undefined>> | undefined;\n\treadonly cwd: string | undefined;\n\treadonly defaultName: string;\n}): string => {\n\tconst explicit = usefulName(params.explicit);\n\tif (explicit !== undefined) return explicit;\n\tconst env = params.env ?? process.env;\n\tconst fromEnv = usefulName(env[params.envKey]);\n\tif (fromEnv !== undefined) return fromEnv;\n\tconst fromPackage = inferPackageNameFromCwd(params.cwd);\n\tif (fromPackage !== undefined) return fromPackage;\n\treturn params.defaultName;\n};\n\nexport const resolveStackName = (options: StackNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_STACK',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? DEFAULT_STACK_NAME,\n\t});\n\nexport const resolveAppName = (options: AppNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_APP',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? 'devstack',\n\t});\n\nexport const ACTIVE_DEVSTACK_NETWORK_NAMES = ['localnet', 'testnet', 'mainnet', 'devnet'] as const;\n\nexport const FORK_DEVSTACK_NETWORK_NAMES = ['testnet-fork', 'mainnet-fork', 'devnet-fork'] as const;\n\nexport const DEVSTACK_NETWORK_NAMES = [\n\t...ACTIVE_DEVSTACK_NETWORK_NAMES,\n\t...FORK_DEVSTACK_NETWORK_NAMES,\n] as const;\n\nexport type ActiveDevstackNetworkName = (typeof ACTIVE_DEVSTACK_NETWORK_NAMES)[number];\nexport type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];\nexport type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];\nexport type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';\n\nexport type ParsedDevstackNetwork =\n\t| {\n\t\t\treadonly mode: 'local';\n\t\t\treadonly name: 'localnet';\n\t }\n\t| {\n\t\t\treadonly mode: 'live';\n\t\t\treadonly name: LiveDevstackNetworkName;\n\t\t\treadonly network: LiveDevstackNetworkName;\n\t }\n\t| {\n\t\t\treadonly mode: 'fork';\n\t\t\treadonly name: ForkDevstackNetworkName;\n\t\t\treadonly upstream: LiveDevstackNetworkName;\n\t };\n\nconst NETWORK_ALIASES: Readonly<Record<string, DevstackNetworkName>> = {\n\tlocal: 'localnet',\n\tlocalnet: 'localnet',\n\t'sui:local': 'localnet',\n\t'sui:localnet': 'localnet',\n\ttestnet: 'testnet',\n\t'sui:testnet': 'testnet',\n\tmainnet: 'mainnet',\n\t'sui:mainnet': 'mainnet',\n\tdevnet: 'devnet',\n\t'sui:devnet': 'devnet',\n\t'testnet-fork': 'testnet-fork',\n\t'sui:testnet-fork': 'testnet-fork',\n\t'mainnet-fork': 'mainnet-fork',\n\t'sui:mainnet-fork': 'mainnet-fork',\n\t'devnet-fork': 'devnet-fork',\n\t'sui:devnet-fork': 'devnet-fork',\n};\n\nexport class DevstackNetworkParseError extends Error {\n\treadonly _tag = 'DevstackNetworkParseError';\n\treadonly value: string;\n\treadonly source: string;\n\treadonly supported: ReadonlyArray<DevstackNetworkName>;\n\n\tconstructor(args: { readonly value: string; readonly source: string }) {\n\t\tsuper(\n\t\t\t`${args.source} must be one of: ${DEVSTACK_NETWORK_NAMES.join(', ')} (got ${JSON.stringify(args.value)})`,\n\t\t);\n\t\tthis.name = 'DevstackNetworkParseError';\n\t\tthis.value = args.value;\n\t\tthis.source = args.source;\n\t\tthis.supported = DEVSTACK_NETWORK_NAMES;\n\t}\n}\n\nexport const parseDevstackNetwork = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): ParsedDevstackNetwork => {\n\tconst raw = value?.trim();\n\tconst name = raw === undefined || raw.length === 0 ? 'localnet' : NETWORK_ALIASES[raw];\n\tif (name === undefined) {\n\t\tthrow new DevstackNetworkParseError({ value: raw ?? '', source });\n\t}\n\tswitch (name) {\n\t\tcase 'localnet':\n\t\t\treturn { mode: 'local', name };\n\t\tcase 'testnet':\n\t\tcase 'mainnet':\n\t\tcase 'devnet':\n\t\t\treturn { mode: 'live', name, network: name };\n\t\tcase 'testnet-fork':\n\t\tcase 'mainnet-fork':\n\t\tcase 'devnet-fork':\n\t\t\treturn {\n\t\t\t\tmode: 'fork',\n\t\t\t\tname,\n\t\t\t\tupstream: name.replace(/-fork$/, '') as LiveDevstackNetworkName,\n\t\t\t};\n\t}\n};\n\nexport const parseDevstackNetworkName = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): DevstackNetworkName => parseDevstackNetwork(value, source).name;\n\n// ---------------------------------------------------------------------------\n// resolveNetwork — single precedence ladder for every entry point.\n// ---------------------------------------------------------------------------\n\n/**\n * Options for `resolveNetwork`. `explicit` is the caller-supplied\n * override (typically a CLI flag or programmatic option). `env` is the\n * environment value (typically `process.env.DEVSTACK_NETWORK`).\n * `defaultName` is the final fallback when both miss. The precedence is\n * explicit > env > default. The `source` string is embedded in the\n * parse error's `source` field so the diagnosis names the offending\n * input (e.g. `--network` vs `DEVSTACK_NETWORK`).\n */\nexport interface ResolveNetworkOptions {\n\treadonly explicit?: string | undefined;\n\treadonly env?: string | undefined;\n\treadonly defaultName?: string;\n\treadonly explicitSource?: string;\n\treadonly envSource?: string;\n}\n\n/** Default value when neither caller nor env provides one. Kept as a\n * string (not a `ParsedDevstackNetwork`) because every call site folds\n * it through `parseDevstackNetwork` first — keeping the default in the\n * same lookup table the env value flows through avoids two source-of-\n * truth shapes for \"what is the default network?\". */\nexport const DEFAULT_DEVSTACK_NETWORK = 'sui:local' as const;\n\n/**\n * Result shape — both the typed parse AND the original input string the\n * resolver picked. Consumers that thread the value through chain-keyed\n * caches (the substrate folds chain id into cache namespaces) MUST keep\n * the raw form to preserve existing on-disk cache keys; consumers that\n * branch on mode (local/live/fork) read `parsed`.\n */\nexport interface ResolvedDevstackNetwork {\n\treadonly raw: string;\n\treadonly parsed: ParsedDevstackNetwork;\n}\n\nconst pickInput = (\n\toptions: ResolveNetworkOptions,\n): { readonly value: string; readonly source: string } => {\n\tif (options.explicit !== undefined && options.explicit.length > 0) {\n\t\treturn { value: options.explicit, source: options.explicitSource ?? '--network' };\n\t}\n\tif (options.env !== undefined && options.env.length > 0) {\n\t\treturn { value: options.env, source: options.envSource ?? 'DEVSTACK_NETWORK' };\n\t}\n\treturn { value: options.defaultName ?? DEFAULT_DEVSTACK_NETWORK, source: 'default' };\n};\n\n/**\n * Resolve a network from the canonical explicit > env > default ladder\n * and parse the winning value through `parseDevstackNetwork`. Returns\n * the typed parse alongside the raw input the resolver picked. A\n * malformed value surfaces as `DevstackNetworkParseError` on the\n * failure channel so CLI / library boot fail fast with a structured\n * error rather than a downstream cryptic message.\n *\n * Used by both `api/run-stack.ts` (library embedding) and the CLI\n * identity resolver so the two paths share one precedence rule + one\n * parse error type.\n */\nexport const resolveNetwork = (\n\toptions: ResolveNetworkOptions = {},\n): Effect.Effect<ResolvedDevstackNetwork, DevstackNetworkParseError> =>\n\tEffect.try({\n\t\ttry: (): ResolvedDevstackNetwork => {\n\t\t\tconst { value, source } = pickInput(options);\n\t\t\treturn { raw: value, parsed: parseDevstackNetwork(value, source) };\n\t\t},\n\t\tcatch: (cause) => cause as DevstackNetworkParseError,\n\t});\n\n/**\n * Sync sibling of `resolveNetwork` for entry points that aren't running\n * inside an Effect (the CLI identity resolver builds a plain TS record).\n * Throws `DevstackNetworkParseError` on bad input — caller's job to lift\n * into a typed failure channel if needed.\n */\nexport const resolveNetworkSync = (\n\toptions: ResolveNetworkOptions = {},\n): ResolvedDevstackNetwork => {\n\tconst { value, source } = pickInput(options);\n\treturn { raw: value, parsed: parseDevstackNetwork(value, source) };\n};\n\n// ---------------------------------------------------------------------------\n// resolveStateDir — single precedence ladder for the on-disk runtime root.\n// ---------------------------------------------------------------------------\n\nexport interface ResolveStateDirOptions {\n\t/** Caller-supplied `runtimeRoot` override (the canonical\n\t * `RunStackOptions.runtimeRoot` / CLI `--state-dir` field). Wins\n\t * over every other input. */\n\treadonly runtimeRoot?: string;\n\t/** Caller-supplied `stateDir` override (the\n\t * `DevstackOptions.stateDir` field on `defineDevstack(...)`).\n\t * Lower precedence than `runtimeRoot`. */\n\treadonly stateDir?: string;\n\t/** Env-var value (typically `process.env.DEVSTACK_STATE_DIR`).\n\t * Lower precedence than either explicit override. */\n\treadonly env?: string;\n\t/** Working directory used for the `.devstack` fallback and for\n\t * resolving any relative override path. */\n\treadonly cwd: string;\n}\n\n/**\n * Resolve the substrate's on-disk runtime root using the canonical\n * precedence ladder: `runtimeRoot` > `stateDir` > `env` > `<cwd>/.devstack`.\n * Relative paths are resolved against `cwd`; absolute paths pass through.\n *\n * Shared by `runStack`, the CLI bin, and the build-integrations\n * discover module so all three entry points agree on the same ladder.\n */\nexport const resolveStateDir = (options: ResolveStateDirOptions): string => {\n\tconst pick =\n\t\t(options.runtimeRoot !== undefined && options.runtimeRoot.length > 0\n\t\t\t? options.runtimeRoot\n\t\t\t: undefined) ??\n\t\t(options.stateDir !== undefined && options.stateDir.length > 0\n\t\t\t? options.stateDir\n\t\t\t: undefined) ??\n\t\t(options.env !== undefined && options.env.length > 0 ? options.env : undefined);\n\tif (pick === undefined) return resolve(options.cwd, '.devstack');\n\treturn resolve(options.cwd, pick);\n};\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PluginErrorContribution } from "../substrate/plugin.mjs";
2
+
3
+ //#region src/api/plugin-errors.d.ts
4
+ declare const pluginErrorContributions: <Tags extends ReadonlyArray<string>>(errorTags: Tags, formatter?: PluginErrorContribution["formatter"]) => readonly [PluginErrorContribution];
5
+ //#endregion
6
+ export { pluginErrorContributions };
7
+ //# sourceMappingURL=plugin-errors.d.mts.map
@@ -2,8 +2,9 @@ import { SubscribableState } from "../substrate/projection.mjs";
2
2
  import { EngineEvent } from "../substrate/events.mjs";
3
3
  import { AnyPlugin } from "../substrate/plugin.mjs";
4
4
  import { Stack } from "./define-devstack.mjs";
5
+ import { CapabilitySinksService } from "../substrate/runtime/capability-sinks/service.mjs";
5
6
  import { ProductionCodegenOptions } from "../orchestrators/runtime-composition.mjs";
6
- import { Cause, Effect, Layer, Stream, SubscriptionRef } from "effect";
7
+ import { Cause, Context, Effect, Scope, Stream, SubscriptionRef } from "effect";
7
8
 
8
9
  //#region src/api/run-stack.d.ts
9
10
  /** Identity overrides for `runStack`. App and stack fall back through
@@ -23,12 +24,20 @@ interface RunStackOptions {
23
24
  readonly codegen?: Omit<ProductionCodegenOptions, 'appRoot'>;
24
25
  /** Filesystem root under which the substrate stores per-stack
25
26
  * artifacts (cache, snapshots, manifest, projection, etc.).
26
- * Defaults to `$DEVSTACK_STATE_DIR` then `<cwd>/.devstack`. */
27
+ * Precedence: `runtimeRoot` > `stateDir` (this option or
28
+ * `DevstackOptions.stateDir` on the stack) > `$DEVSTACK_STATE_DIR`
29
+ * > `<cwd>/.devstack`. */
27
30
  readonly runtimeRoot?: string;
28
- /** Extra Layer composition. Reserved for plugin-author overlays
29
- * (e.g. custom `CapabilitySinks`, Logger) per ARCHITECTURE.md
30
- * § Plugin-author extension via Layer composition. */
31
- readonly layers?: Layer.Layer<never>;
31
+ /** Sibling of `runtimeRoot` the `DevstackOptions.stateDir` field
32
+ * threaded through `runStack` so a stack-level default can be
33
+ * overridden per-embedding without forcing every call site to
34
+ * flip between `runtimeRoot` and `stateDir`. Same semantics as
35
+ * `runtimeRoot`; lower precedence. */
36
+ readonly stateDir?: string;
37
+ /** Extend the plugin execution context after built-in plugin
38
+ * services are installed. Use this for custom plugin-author
39
+ * services, capability sinks, or logger overrides. */
40
+ readonly extendContext?: (ctx: Context.Context<never>) => Effect.Effect<Context.Context<never>, never, Scope.Scope | CapabilitySinksService>;
32
41
  }
33
42
  /** Boot error surfaced by `RunHandle.start`. Wraps the supervisor's
34
43
  * startup failure tree for cascade-formatter rendering. */
@@ -47,9 +56,11 @@ interface RunHandle {
47
56
  /** Trigger graceful shutdown: enqueues `shutdown.requested` onto
48
57
  * the supervisor's command channel, then awaits the fiber. */
49
58
  readonly stop: Effect.Effect<void, never, never>;
50
- /** Resolve when the supervisor fiber exits. Always succeeds any
51
- * errors surface via `start`. */
52
- readonly awaitShutdown: Effect.Effect<void, never, never>;
59
+ /** Resolve when the supervisor fiber exits. Succeeds on a clean
60
+ * shutdown; fails with the captured `Cause` if the supervisor died
61
+ * mid-run after boot completed (e.g. a plugin scope finalizer
62
+ * defect). Boot-time failures still surface via `start`. */
63
+ readonly awaitShutdown: Effect.Effect<void, unknown, never>;
53
64
  /** Tail of typed engine events from the supervisor's hub. The
54
65
  * upstream is a `Queue.Dequeue`; consume via `Stream.run...`. */
55
66
  readonly events: Stream.Stream<EngineEvent, never, never>;
@@ -1,11 +1,14 @@
1
- import { appName, chainId, stackName } from "../substrate/brand.mjs";
2
1
  import { readStackEngine } from "./define-devstack.mjs";
3
- import { makeProjectionRef } from "../substrate/runtime/projection/state-ref.mjs";
4
- import { buildSubstrateLayers, superviseStackEffect } from "../substrate/runtime/run.mjs";
2
+ import { appName, chainId, stackName } from "../substrate/brand.mjs";
3
+ import "../substrate/runtime/capability-sinks/index.mjs";
4
+ import { makeProjectionRefSync } from "../substrate/runtime/projection/state-ref.mjs";
5
+ import "../substrate/runtime/index.mjs";
6
+ import { buildSubstrateLayers, superviseStackEffect } from "../orchestrators/run.mjs";
5
7
  import { buildProductionOrchestratorSinks, buildProductionPostAcquireHook, layerProductionOrchestrators } from "../orchestrators/runtime-composition.mjs";
6
- import { extendBuiltInPluginContext, layerBuiltInPluginRuntime } from "../runtime/built-in-plugin-layers.mjs";
7
- import { resolveAppName, resolveStackName } from "./inference-network.mjs";
8
- import { Deferred, Effect, Exit, Fiber, Layer, Logger, Queue, Stream } from "effect";
8
+ import { resolveCodegenOutput } from "../orchestrators/codegen/output-location.mjs";
9
+ import { extendBuiltInPluginContext, layerBuiltInPluginRuntime } from "../orchestrators/built-in-plugin-layers.mjs";
10
+ import { resolveAppName, resolveNetworkSync, resolveStackName, resolveStateDir } from "./inference-network.mjs";
11
+ import { Cause, Deferred, Effect, Exit, Fiber, Layer, Logger, Queue, Ref, Stream } from "effect";
9
12
  //#region src/api/run-stack.ts
10
13
  const resolveIdentity = (stack, opts, cwd) => {
11
14
  const app = resolveAppName({
@@ -16,19 +19,17 @@ const resolveIdentity = (stack, opts, cwd) => {
16
19
  explicit: opts?.stack ?? stack.options.stackName,
17
20
  cwd
18
21
  });
19
- const network = opts?.network ?? process.env.DEVSTACK_NETWORK ?? "sui:local";
22
+ const resolved = resolveNetworkSync({
23
+ explicit: opts?.network,
24
+ env: process.env.DEVSTACK_NETWORK,
25
+ explicitSource: "runStack({ identity.network })"
26
+ });
20
27
  return {
21
28
  app: appName(app),
22
29
  stack: stackName(stackNameStr),
23
- chain: chainId(network)
30
+ chain: chainId(resolved.raw)
24
31
  };
25
32
  };
26
- const resolveRuntimeRoot = (override) => {
27
- if (override !== void 0) return override;
28
- const envRoot = process.env.DEVSTACK_STATE_DIR;
29
- if (envRoot !== void 0 && envRoot.length > 0) return envRoot;
30
- return `${process.cwd()}/.devstack`;
31
- };
32
33
  const toBootError = (cause) => ({
33
34
  _tag: "BootError",
34
35
  cause
@@ -54,7 +55,12 @@ const toBootError = (cause) => ({
54
55
  */
55
56
  const runStack = (stack, opts = {}) => {
56
57
  const engineStack = readStackEngine(stack);
57
- const runtimeRoot = resolveRuntimeRoot(opts.runtimeRoot);
58
+ const runtimeRoot = resolveStateDir({
59
+ runtimeRoot: opts.runtimeRoot,
60
+ stateDir: opts.stateDir ?? engineStack.options.stateDir,
61
+ env: process.env.DEVSTACK_STATE_DIR,
62
+ cwd: process.cwd()
63
+ });
58
64
  const appRoot = opts.appRoot ?? process.cwd();
59
65
  const identity = resolveIdentity(stack, opts.identity, appRoot);
60
66
  const codegen = opts.codegen ?? engineStack.options.codegen;
@@ -63,46 +69,65 @@ const runStack = (stack, opts = {}) => {
63
69
  members: engineStack.members,
64
70
  options: engineStack.options
65
71
  };
66
- const state = Effect.runSync(makeProjectionRef());
72
+ const state = makeProjectionRefSync();
67
73
  const bootDeferred = Effect.runSync(Deferred.make());
68
74
  const stopRequested = Effect.runSync(Deferred.make());
69
75
  const eventQueueRef = Effect.runSync(Deferred.make());
70
76
  const fiberRef = Effect.runSync(Deferred.make());
77
+ const startClaim = Effect.runSync(Ref.make(false));
78
+ const midRunCauseRef = Effect.runSync(Ref.make(null));
79
+ const codegenOutput = resolveCodegenOutput({
80
+ appRoot,
81
+ effectiveStack: String(identity.stack),
82
+ homeStack: engineStack.options.stackName,
83
+ explicitOutputDir: codegen?.outputDir,
84
+ explicitStackSubdir: codegen?.stackSubdir ?? null
85
+ });
71
86
  const substrate = layerProductionOrchestrators({ codegen: {
72
87
  appRoot,
73
- outputDir: codegen?.outputDir,
74
- stackSubdir: codegen?.stackSubdir ?? null
88
+ outputDir: codegenOutput.outputDir,
89
+ stackSubdir: codegenOutput.stackSubdir
75
90
  } }).pipe(Layer.provideMerge(buildSubstrateLayers(identity, runtimeRoot)));
76
91
  const supervised = Effect.gen(function* () {
77
92
  const orchestratorSinks = yield* buildProductionOrchestratorSinks();
78
93
  yield* superviseStackEffect(supervisedStack, identity, state, {
79
94
  orchestratorSinks,
80
95
  postAcquireHook: yield* buildProductionPostAcquireHook({ extras: stack.options.extras }),
81
- extendContext: extendBuiltInPluginContext,
96
+ extendContext: (ctx) => Effect.gen(function* () {
97
+ const builtInContext = yield* extendBuiltInPluginContext(ctx);
98
+ return opts.extendContext === void 0 ? builtInContext : yield* opts.extendContext(builtInContext);
99
+ }),
100
+ beforeInitialAcquire: (handle) => Effect.gen(function* () {
101
+ yield* Deferred.succeed(eventQueueRef, handle.events).pipe(Effect.catch(() => Effect.void));
102
+ yield* Effect.forkScoped(Effect.gen(function* () {
103
+ yield* Deferred.await(stopRequested);
104
+ yield* Queue.offer(handle.commands, { tag: "shutdown.requested" });
105
+ }));
106
+ }),
82
107
  withinScope: (handle) => Effect.gen(function* () {
83
- yield* Deferred.succeed(eventQueueRef, handle.events);
84
108
  yield* Effect.forkScoped(Effect.gen(function* () {
85
109
  const firstFailure = (yield* Effect.forEach(handle.graph.nodes, ([key]) => handle.registry.awaitReady(key).pipe(Effect.exit), { concurrency: "unbounded" })).find(Exit.isFailure);
86
110
  if (firstFailure === void 0) yield* Deferred.succeed(bootDeferred, void 0);
87
111
  else yield* Deferred.fail(bootDeferred, toBootError(firstFailure.cause));
88
112
  }));
89
- yield* Effect.forkScoped(Effect.gen(function* () {
90
- yield* Deferred.await(stopRequested);
91
- yield* Queue.offer(handle.commands, { tag: "shutdown.requested" });
92
- }));
93
113
  })
94
114
  }).pipe(Effect.provide(layerBuiltInPluginRuntime(orchestratorSinks)));
95
115
  });
96
116
  const loggerLayer = Logger.layer([]);
97
- const supervisedProgram = (opts.layers === void 0 ? supervised.pipe(Effect.provide(substrate), Effect.provide(loggerLayer)) : supervised.pipe(Effect.provide(substrate), Effect.provide(loggerLayer), Effect.provide(opts.layers))).pipe(Effect.catchCause((cause) => Deferred.fail(bootDeferred, toBootError(cause)).pipe(Effect.asVoid, Effect.catch(() => Effect.void))));
117
+ const supervisedProgram = supervised.pipe(Effect.provide(substrate), Effect.provide(loggerLayer)).pipe(Effect.catchCause((cause) => Effect.gen(function* () {
118
+ const bootAlreadyCompleted = yield* Deferred.isDone(bootDeferred);
119
+ yield* Deferred.fail(bootDeferred, toBootError(cause)).pipe(Effect.asVoid, Effect.catch(() => Effect.void));
120
+ if (bootAlreadyCompleted) yield* Ref.set(midRunCauseRef, cause);
121
+ yield* Effect.logError(`devstack runStack: supervisor died\n${Cause.pretty(cause)}`);
122
+ })));
98
123
  return {
99
- start: Effect.gen(function* () {
100
- if (!(yield* Deferred.isDone(fiberRef))) {
124
+ start: Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
125
+ if (yield* Ref.modify(startClaim, (started) => started ? [false, true] : [true, true])) {
101
126
  const fiber = yield* Effect.forkDetach(supervisedProgram);
102
127
  yield* Deferred.succeed(fiberRef, fiber);
103
128
  }
104
- yield* Deferred.await(bootDeferred);
105
- }),
129
+ yield* restore(Deferred.await(bootDeferred));
130
+ })),
106
131
  stop: Effect.gen(function* () {
107
132
  yield* Deferred.succeed(stopRequested, void 0).pipe(Effect.catch(() => Effect.void));
108
133
  if (!(yield* Deferred.isDone(fiberRef))) return;
@@ -113,6 +138,8 @@ const runStack = (stack, opts = {}) => {
113
138
  if (!(yield* Deferred.isDone(fiberRef))) return;
114
139
  const fiber = yield* Deferred.await(fiberRef);
115
140
  yield* Fiber.await(fiber);
141
+ const midRunCause = yield* Ref.get(midRunCauseRef);
142
+ if (midRunCause !== null) return yield* Effect.failCause(midRunCause);
116
143
  }),
117
144
  events: Stream.unwrap(Effect.gen(function* () {
118
145
  const queue = yield* Deferred.await(eventQueueRef);