@mysten-incubation/devstack 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (833) hide show
  1. package/LICENSE +189 -0
  2. package/README.md +94 -0
  3. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  4. package/dist/api/define-capabilities.d.mts +25 -0
  5. package/dist/api/define-capabilities.mjs +19 -0
  6. package/dist/api/define-capabilities.mjs.map +1 -0
  7. package/dist/api/define-devstack-with.d.mts +41 -0
  8. package/dist/api/define-devstack-with.mjs +24 -0
  9. package/dist/api/define-devstack-with.mjs.map +1 -0
  10. package/dist/api/define-devstack.d.mts +62 -0
  11. package/dist/api/define-devstack.mjs +108 -0
  12. package/dist/api/define-devstack.mjs.map +1 -0
  13. package/dist/api/define-plugin.d.mts +1 -0
  14. package/dist/api/inference-network.mjs +122 -0
  15. package/dist/api/inference-network.mjs.map +1 -0
  16. package/dist/api/mode-narrowed-factory.d.mts +26 -0
  17. package/dist/api/mode-narrowed-factory.mjs +8 -0
  18. package/dist/api/mode-narrowed-factory.mjs.map +1 -0
  19. package/dist/api/plugin-errors.mjs +10 -0
  20. package/dist/api/plugin-errors.mjs.map +1 -0
  21. package/dist/api/run-stack.d.mts +82 -0
  22. package/dist/api/run-stack.mjs +127 -0
  23. package/dist/api/run-stack.mjs.map +1 -0
  24. package/dist/build-integrations/playwright/config.d.mts +92 -0
  25. package/dist/build-integrations/playwright/config.mjs +71 -0
  26. package/dist/build-integrations/playwright/config.mjs.map +1 -0
  27. package/dist/build-integrations/playwright/errors.d.mts +82 -0
  28. package/dist/build-integrations/playwright/errors.mjs +43 -0
  29. package/dist/build-integrations/playwright/errors.mjs.map +1 -0
  30. package/dist/build-integrations/playwright/global-setup.d.mts +64 -0
  31. package/dist/build-integrations/playwright/global-setup.mjs +44 -0
  32. package/dist/build-integrations/playwright/global-setup.mjs.map +1 -0
  33. package/dist/build-integrations/playwright/index.d.mts +6 -0
  34. package/dist/build-integrations/playwright/index.mjs +6 -0
  35. package/dist/build-integrations/playwright/stack-context.d.mts +95 -0
  36. package/dist/build-integrations/playwright/stack-context.mjs +277 -0
  37. package/dist/build-integrations/playwright/stack-context.mjs.map +1 -0
  38. package/dist/build-integrations/playwright/wallet-context.d.mts +87 -0
  39. package/dist/build-integrations/playwright/wallet-context.mjs +148 -0
  40. package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -0
  41. package/dist/build-integrations/runtime/cold-start-url.d.mts +67 -0
  42. package/dist/build-integrations/runtime/cold-start-url.mjs +56 -0
  43. package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -0
  44. package/dist/build-integrations/runtime/dapp-kit-slot.mjs +10 -0
  45. package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -0
  46. package/dist/build-integrations/runtime/discover.d.mts +78 -0
  47. package/dist/build-integrations/runtime/discover.mjs +124 -0
  48. package/dist/build-integrations/runtime/discover.mjs.map +1 -0
  49. package/dist/build-integrations/runtime/endpoint-registry.d.mts +26 -0
  50. package/dist/build-integrations/runtime/endpoint-registry.mjs +41 -0
  51. package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -0
  52. package/dist/build-integrations/runtime/errors.d.mts +64 -0
  53. package/dist/build-integrations/runtime/errors.mjs +51 -0
  54. package/dist/build-integrations/runtime/errors.mjs.map +1 -0
  55. package/dist/build-integrations/runtime/index.d.mts +7 -0
  56. package/dist/build-integrations/runtime/index.mjs +6 -0
  57. package/dist/build-integrations/runtime/read-stack-context.d.mts +38 -0
  58. package/dist/build-integrations/runtime/read-stack-context.mjs +130 -0
  59. package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -0
  60. package/dist/build-integrations/runtime/stack-context.d.mts +53 -0
  61. package/dist/build-integrations/vitest/config.d.mts +62 -0
  62. package/dist/build-integrations/vitest/config.mjs +80 -0
  63. package/dist/build-integrations/vitest/config.mjs.map +1 -0
  64. package/dist/build-integrations/vitest/env.d.mts +48 -0
  65. package/dist/build-integrations/vitest/env.mjs +50 -0
  66. package/dist/build-integrations/vitest/env.mjs.map +1 -0
  67. package/dist/build-integrations/vitest/errors.d.mts +44 -0
  68. package/dist/build-integrations/vitest/errors.mjs +18 -0
  69. package/dist/build-integrations/vitest/errors.mjs.map +1 -0
  70. package/dist/build-integrations/vitest/index.d.mts +6 -0
  71. package/dist/build-integrations/vitest/index.mjs +6 -0
  72. package/dist/build-integrations/vitest/setup.d.mts +53 -0
  73. package/dist/build-integrations/vitest/setup.mjs +56 -0
  74. package/dist/build-integrations/vitest/setup.mjs.map +1 -0
  75. package/dist/build-integrations/vitest/stack-context.d.mts +58 -0
  76. package/dist/build-integrations/vitest/stack-context.mjs +67 -0
  77. package/dist/build-integrations/vitest/stack-context.mjs.map +1 -0
  78. package/dist/cli/main.d.mts +5 -0
  79. package/dist/cli/main.mjs +586 -0
  80. package/dist/cli/main.mjs.map +1 -0
  81. package/dist/cli/prune-direct.mjs +216 -0
  82. package/dist/cli/prune-direct.mjs.map +1 -0
  83. package/dist/cli/snapshot-reader.mjs +73 -0
  84. package/dist/cli/snapshot-reader.mjs.map +1 -0
  85. package/dist/cli/up-lifecycle.mjs +28 -0
  86. package/dist/cli/up-lifecycle.mjs.map +1 -0
  87. package/dist/contracts/capability-decl.d.mts +42 -0
  88. package/dist/contracts/chain-probe.d.mts +26 -0
  89. package/dist/contracts/chain-probe.mjs +8 -0
  90. package/dist/contracts/chain-probe.mjs.map +1 -0
  91. package/dist/contracts/codegenable.d.mts +43 -0
  92. package/dist/contracts/container-runtime.d.mts +245 -0
  93. package/dist/contracts/liveness-classifier.d.mts +19 -0
  94. package/dist/contracts/network-resolver.d.mts +15 -0
  95. package/dist/contracts/network-resolver.mjs +7 -0
  96. package/dist/contracts/network-resolver.mjs.map +1 -0
  97. package/dist/contracts/projection.d.mts +15 -0
  98. package/dist/contracts/routable.d.mts +53 -0
  99. package/dist/contracts/snapshotable.d.mts +39 -0
  100. package/dist/contracts/strategy-contributor.d.mts +26 -0
  101. package/dist/index.d.mts +89 -0
  102. package/dist/index.mjs +37 -0
  103. package/dist/orchestrators/codegen/bindings.d.mts +2 -0
  104. package/dist/orchestrators/codegen/bindings.mjs +340 -0
  105. package/dist/orchestrators/codegen/bindings.mjs.map +1 -0
  106. package/dist/orchestrators/codegen/emit.mjs +56 -0
  107. package/dist/orchestrators/codegen/emit.mjs.map +1 -0
  108. package/dist/orchestrators/codegen/errors.d.mts +1 -0
  109. package/dist/orchestrators/codegen/errors.mjs +66 -0
  110. package/dist/orchestrators/codegen/errors.mjs.map +1 -0
  111. package/dist/orchestrators/codegen/extras.mjs +16 -0
  112. package/dist/orchestrators/codegen/extras.mjs.map +1 -0
  113. package/dist/orchestrators/codegen/format.mjs +109 -0
  114. package/dist/orchestrators/codegen/format.mjs.map +1 -0
  115. package/dist/orchestrators/codegen/gitignore.mjs +67 -0
  116. package/dist/orchestrators/codegen/gitignore.mjs.map +1 -0
  117. package/dist/orchestrators/codegen/paths.d.mts +1 -0
  118. package/dist/orchestrators/codegen/paths.mjs +33 -0
  119. package/dist/orchestrators/codegen/paths.mjs.map +1 -0
  120. package/dist/orchestrators/codegen/permissions.mjs +6 -0
  121. package/dist/orchestrators/codegen/permissions.mjs.map +1 -0
  122. package/dist/orchestrators/codegen/service.d.mts +1 -0
  123. package/dist/orchestrators/codegen/service.mjs +276 -0
  124. package/dist/orchestrators/codegen/service.mjs.map +1 -0
  125. package/dist/orchestrators/router/cleanup.mjs +58 -0
  126. package/dist/orchestrators/router/cleanup.mjs.map +1 -0
  127. package/dist/orchestrators/router/cors.mjs +31 -0
  128. package/dist/orchestrators/router/cors.mjs.map +1 -0
  129. package/dist/orchestrators/router/entrypoints.d.mts +1 -0
  130. package/dist/orchestrators/router/entrypoints.mjs +80 -0
  131. package/dist/orchestrators/router/entrypoints.mjs.map +1 -0
  132. package/dist/orchestrators/router/errors.d.mts +1 -0
  133. package/dist/orchestrators/router/errors.mjs +103 -0
  134. package/dist/orchestrators/router/errors.mjs.map +1 -0
  135. package/dist/orchestrators/router/file-provider.d.mts +1 -0
  136. package/dist/orchestrators/router/file-provider.mjs +320 -0
  137. package/dist/orchestrators/router/file-provider.mjs.map +1 -0
  138. package/dist/orchestrators/router/hostname.d.mts +1 -0
  139. package/dist/orchestrators/router/hostname.mjs +107 -0
  140. package/dist/orchestrators/router/hostname.mjs.map +1 -0
  141. package/dist/orchestrators/router/index.d.mts +1 -0
  142. package/dist/orchestrators/router/profile.d.mts +1 -0
  143. package/dist/orchestrators/router/profile.mjs +109 -0
  144. package/dist/orchestrators/router/profile.mjs.map +1 -0
  145. package/dist/orchestrators/router/service.d.mts +3 -0
  146. package/dist/orchestrators/router/service.mjs +421 -0
  147. package/dist/orchestrators/router/service.mjs.map +1 -0
  148. package/dist/orchestrators/router/traefik-container.d.mts +1 -0
  149. package/dist/orchestrators/router/traefik-container.mjs +229 -0
  150. package/dist/orchestrators/router/traefik-container.mjs.map +1 -0
  151. package/dist/orchestrators/runtime-composition.d.mts +10 -0
  152. package/dist/orchestrators/runtime-composition.mjs +168 -0
  153. package/dist/orchestrators/runtime-composition.mjs.map +1 -0
  154. package/dist/orchestrators/snapshot/capture.d.mts +1 -0
  155. package/dist/orchestrators/snapshot/capture.mjs +350 -0
  156. package/dist/orchestrators/snapshot/capture.mjs.map +1 -0
  157. package/dist/orchestrators/snapshot/descriptor.d.mts +1 -0
  158. package/dist/orchestrators/snapshot/descriptor.mjs +109 -0
  159. package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -0
  160. package/dist/orchestrators/snapshot/identity-guard.d.mts +1 -0
  161. package/dist/orchestrators/snapshot/identity-guard.mjs +132 -0
  162. package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -0
  163. package/dist/orchestrators/snapshot/image-bundle-tags.mjs +207 -0
  164. package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -0
  165. package/dist/orchestrators/snapshot/index.d.mts +1 -0
  166. package/dist/orchestrators/snapshot/integrity.d.mts +1 -0
  167. package/dist/orchestrators/snapshot/integrity.mjs +74 -0
  168. package/dist/orchestrators/snapshot/integrity.mjs.map +1 -0
  169. package/dist/orchestrators/snapshot/prune.d.mts +1 -0
  170. package/dist/orchestrators/snapshot/prune.mjs +110 -0
  171. package/dist/orchestrators/snapshot/prune.mjs.map +1 -0
  172. package/dist/orchestrators/snapshot/restore.d.mts +1 -0
  173. package/dist/orchestrators/snapshot/restore.mjs +404 -0
  174. package/dist/orchestrators/snapshot/restore.mjs.map +1 -0
  175. package/dist/orchestrators/snapshot/service.d.mts +1 -0
  176. package/dist/orchestrators/snapshot/service.mjs +296 -0
  177. package/dist/orchestrators/snapshot/service.mjs.map +1 -0
  178. package/dist/orchestrators/snapshot/state-document.mjs +18 -0
  179. package/dist/orchestrators/snapshot/state-document.mjs.map +1 -0
  180. package/dist/orchestrators/snapshot/wipe.d.mts +1 -0
  181. package/dist/orchestrators/snapshot/wipe.mjs +59 -0
  182. package/dist/orchestrators/snapshot/wipe.mjs.map +1 -0
  183. package/dist/plugins/account/codegen.d.mts +12 -0
  184. package/dist/plugins/account/codegen.mjs +22 -0
  185. package/dist/plugins/account/codegen.mjs.map +1 -0
  186. package/dist/plugins/account/errors.d.mts +44 -0
  187. package/dist/plugins/account/errors.mjs +16 -0
  188. package/dist/plugins/account/errors.mjs.map +1 -0
  189. package/dist/plugins/account/funding.d.mts +94 -0
  190. package/dist/plugins/account/funding.mjs +199 -0
  191. package/dist/plugins/account/funding.mjs.map +1 -0
  192. package/dist/plugins/account/index.d.mts +54 -0
  193. package/dist/plugins/account/index.mjs +151 -0
  194. package/dist/plugins/account/index.mjs.map +1 -0
  195. package/dist/plugins/account/keypair.d.mts +32 -0
  196. package/dist/plugins/account/keypair.mjs +99 -0
  197. package/dist/plugins/account/keypair.mjs.map +1 -0
  198. package/dist/plugins/account/lease.mjs +21 -0
  199. package/dist/plugins/account/lease.mjs.map +1 -0
  200. package/dist/plugins/account/registry.d.mts +33 -0
  201. package/dist/plugins/account/registry.mjs +36 -0
  202. package/dist/plugins/account/registry.mjs.map +1 -0
  203. package/dist/plugins/account/service.d.mts +104 -0
  204. package/dist/plugins/account/service.mjs +405 -0
  205. package/dist/plugins/account/service.mjs.map +1 -0
  206. package/dist/plugins/account/snapshot.mjs +33 -0
  207. package/dist/plugins/account/snapshot.mjs.map +1 -0
  208. package/dist/plugins/account/variants/env.mjs +24 -0
  209. package/dist/plugins/account/variants/env.mjs.map +1 -0
  210. package/dist/plugins/account/variants/ephemeral.mjs +72 -0
  211. package/dist/plugins/account/variants/ephemeral.mjs.map +1 -0
  212. package/dist/plugins/account/variants/impersonate.d.mts +16 -0
  213. package/dist/plugins/account/variants/impersonate.mjs +48 -0
  214. package/dist/plugins/account/variants/impersonate.mjs.map +1 -0
  215. package/dist/plugins/account/variants/inline.mjs +13 -0
  216. package/dist/plugins/account/variants/inline.mjs.map +1 -0
  217. package/dist/plugins/account/variants/keystore.mjs +93 -0
  218. package/dist/plugins/account/variants/keystore.mjs.map +1 -0
  219. package/dist/plugins/account/variants/signer.mjs +31 -0
  220. package/dist/plugins/account/variants/signer.mjs.map +1 -0
  221. package/dist/plugins/action/build-context.d.mts +41 -0
  222. package/dist/plugins/action/discriminator.d.mts +20 -0
  223. package/dist/plugins/action/discriminator.mjs +13 -0
  224. package/dist/plugins/action/discriminator.mjs.map +1 -0
  225. package/dist/plugins/action/errors.d.mts +31 -0
  226. package/dist/plugins/action/errors.mjs +13 -0
  227. package/dist/plugins/action/errors.mjs.map +1 -0
  228. package/dist/plugins/action/execute.d.mts +2 -0
  229. package/dist/plugins/action/execute.mjs +145 -0
  230. package/dist/plugins/action/execute.mjs.map +1 -0
  231. package/dist/plugins/action/index.d.mts +56 -0
  232. package/dist/plugins/action/index.mjs +82 -0
  233. package/dist/plugins/action/index.mjs.map +1 -0
  234. package/dist/plugins/action/service.d.mts +26 -0
  235. package/dist/plugins/action/service.mjs +84 -0
  236. package/dist/plugins/action/service.mjs.map +1 -0
  237. package/dist/plugins/coin/address-resolution.d.mts +34 -0
  238. package/dist/plugins/coin/address-resolution.mjs +80 -0
  239. package/dist/plugins/coin/address-resolution.mjs.map +1 -0
  240. package/dist/plugins/coin/codegen.d.mts +16 -0
  241. package/dist/plugins/coin/codegen.mjs +21 -0
  242. package/dist/plugins/coin/codegen.mjs.map +1 -0
  243. package/dist/plugins/coin/discovery.d.mts +26 -0
  244. package/dist/plugins/coin/discovery.mjs +112 -0
  245. package/dist/plugins/coin/discovery.mjs.map +1 -0
  246. package/dist/plugins/coin/errors.d.mts +48 -0
  247. package/dist/plugins/coin/errors.mjs +13 -0
  248. package/dist/plugins/coin/errors.mjs.map +1 -0
  249. package/dist/plugins/coin/index.d.mts +95 -0
  250. package/dist/plugins/coin/index.mjs +172 -0
  251. package/dist/plugins/coin/index.mjs.map +1 -0
  252. package/dist/plugins/coin/metadata.d.mts +15 -0
  253. package/dist/plugins/coin/metadata.mjs +99 -0
  254. package/dist/plugins/coin/metadata.mjs.map +1 -0
  255. package/dist/plugins/coin/mint.d.mts +34 -0
  256. package/dist/plugins/coin/mint.mjs +164 -0
  257. package/dist/plugins/coin/mint.mjs.map +1 -0
  258. package/dist/plugins/coin/registry.d.mts +1 -0
  259. package/dist/plugins/coin/registry.mjs +37 -0
  260. package/dist/plugins/coin/registry.mjs.map +1 -0
  261. package/dist/plugins/coin/service.d.mts +47 -0
  262. package/dist/plugins/coin/service.mjs +51 -0
  263. package/dist/plugins/coin/service.mjs.map +1 -0
  264. package/dist/plugins/coin/snapshot.mjs +19 -0
  265. package/dist/plugins/coin/snapshot.mjs.map +1 -0
  266. package/dist/plugins/coin/type-strings.mjs +49 -0
  267. package/dist/plugins/coin/type-strings.mjs.map +1 -0
  268. package/dist/plugins/deepbook/codegen.d.mts +39 -0
  269. package/dist/plugins/deepbook/codegen.mjs +15 -0
  270. package/dist/plugins/deepbook/codegen.mjs.map +1 -0
  271. package/dist/plugins/deepbook/deploy.mjs +437 -0
  272. package/dist/plugins/deepbook/deploy.mjs.map +1 -0
  273. package/dist/plugins/deepbook/errors.d.mts +29 -0
  274. package/dist/plugins/deepbook/errors.mjs +26 -0
  275. package/dist/plugins/deepbook/errors.mjs.map +1 -0
  276. package/dist/plugins/deepbook/faucet-strategy.d.mts +8 -0
  277. package/dist/plugins/deepbook/faucet-strategy.mjs +81 -0
  278. package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -0
  279. package/dist/plugins/deepbook/index.d.mts +171 -0
  280. package/dist/plugins/deepbook/index.mjs +359 -0
  281. package/dist/plugins/deepbook/index.mjs.map +1 -0
  282. package/dist/plugins/deepbook/plugin-key.mjs +7 -0
  283. package/dist/plugins/deepbook/plugin-key.mjs.map +1 -0
  284. package/dist/plugins/deepbook/pyth/index.mjs +226 -0
  285. package/dist/plugins/deepbook/pyth/index.mjs.map +1 -0
  286. package/dist/plugins/deepbook/routable.mjs +21 -0
  287. package/dist/plugins/deepbook/routable.mjs.map +1 -0
  288. package/dist/plugins/deepbook/snapshot.mjs +49 -0
  289. package/dist/plugins/deepbook/snapshot.mjs.map +1 -0
  290. package/dist/plugins/deepbook/types.d.mts +125 -0
  291. package/dist/plugins/deepbook/types.mjs +12 -0
  292. package/dist/plugins/deepbook/types.mjs.map +1 -0
  293. package/dist/plugins/faucet/dispatcher.d.mts +9 -0
  294. package/dist/plugins/faucet/dispatcher.mjs +13 -0
  295. package/dist/plugins/faucet/dispatcher.mjs.map +1 -0
  296. package/dist/plugins/faucet/errors.d.mts +86 -0
  297. package/dist/plugins/faucet/errors.mjs +19 -0
  298. package/dist/plugins/faucet/errors.mjs.map +1 -0
  299. package/dist/plugins/faucet/http.mjs +127 -0
  300. package/dist/plugins/faucet/http.mjs.map +1 -0
  301. package/dist/plugins/faucet/index.d.mts +43 -0
  302. package/dist/plugins/faucet/index.mjs +42 -0
  303. package/dist/plugins/faucet/index.mjs.map +1 -0
  304. package/dist/plugins/faucet/service.d.mts +20 -0
  305. package/dist/plugins/faucet/strategies/sui-local.d.mts +23 -0
  306. package/dist/plugins/faucet/strategies/sui-local.mjs +29 -0
  307. package/dist/plugins/faucet/strategies/sui-local.mjs.map +1 -0
  308. package/dist/plugins/host-service/errors.d.mts +27 -0
  309. package/dist/plugins/host-service/errors.mjs +14 -0
  310. package/dist/plugins/host-service/errors.mjs.map +1 -0
  311. package/dist/plugins/host-service/index.d.mts +10 -0
  312. package/dist/plugins/host-service/index.mjs +48 -0
  313. package/dist/plugins/host-service/index.mjs.map +1 -0
  314. package/dist/plugins/host-service/routable.mjs +24 -0
  315. package/dist/plugins/host-service/routable.mjs.map +1 -0
  316. package/dist/plugins/host-service/service.d.mts +49 -0
  317. package/dist/plugins/host-service/service.mjs +375 -0
  318. package/dist/plugins/host-service/service.mjs.map +1 -0
  319. package/dist/plugins/package/build.d.mts +1 -0
  320. package/dist/plugins/package/build.mjs +24 -0
  321. package/dist/plugins/package/build.mjs.map +1 -0
  322. package/dist/plugins/package/codegen.d.mts +19 -0
  323. package/dist/plugins/package/codegen.mjs +41 -0
  324. package/dist/plugins/package/codegen.mjs.map +1 -0
  325. package/dist/plugins/package/dep-resolution.mjs +10 -0
  326. package/dist/plugins/package/dep-resolution.mjs.map +1 -0
  327. package/dist/plugins/package/errors.d.mts +34 -0
  328. package/dist/plugins/package/errors.mjs +13 -0
  329. package/dist/plugins/package/errors.mjs.map +1 -0
  330. package/dist/plugins/package/index.d.mts +109 -0
  331. package/dist/plugins/package/index.mjs +207 -0
  332. package/dist/plugins/package/index.mjs.map +1 -0
  333. package/dist/plugins/package/mode-known.mjs +41 -0
  334. package/dist/plugins/package/mode-known.mjs.map +1 -0
  335. package/dist/plugins/package/mode-local.d.mts +1 -0
  336. package/dist/plugins/package/mode-local.mjs +183 -0
  337. package/dist/plugins/package/mode-local.mjs.map +1 -0
  338. package/dist/plugins/package/publish-executor.mjs +202 -0
  339. package/dist/plugins/package/publish-executor.mjs.map +1 -0
  340. package/dist/plugins/package/publish-output.d.mts +28 -0
  341. package/dist/plugins/package/publish-output.mjs +45 -0
  342. package/dist/plugins/package/publish-output.mjs.map +1 -0
  343. package/dist/plugins/package/registry.d.mts +25 -0
  344. package/dist/plugins/package/registry.mjs +30 -0
  345. package/dist/plugins/package/registry.mjs.map +1 -0
  346. package/dist/plugins/package/service.mjs +20 -0
  347. package/dist/plugins/package/service.mjs.map +1 -0
  348. package/dist/plugins/package/snapshot.mjs +25 -0
  349. package/dist/plugins/package/snapshot.mjs.map +1 -0
  350. package/dist/plugins/postgres/codegen.mjs +42 -0
  351. package/dist/plugins/postgres/codegen.mjs.map +1 -0
  352. package/dist/plugins/postgres/connection.d.mts +33 -0
  353. package/dist/plugins/postgres/connection.mjs +19 -0
  354. package/dist/plugins/postgres/connection.mjs.map +1 -0
  355. package/dist/plugins/postgres/db-ensure.mjs +100 -0
  356. package/dist/plugins/postgres/db-ensure.mjs.map +1 -0
  357. package/dist/plugins/postgres/errors.d.mts +55 -0
  358. package/dist/plugins/postgres/errors.mjs +29 -0
  359. package/dist/plugins/postgres/errors.mjs.map +1 -0
  360. package/dist/plugins/postgres/index.d.mts +37 -0
  361. package/dist/plugins/postgres/index.mjs +75 -0
  362. package/dist/plugins/postgres/index.mjs.map +1 -0
  363. package/dist/plugins/postgres/routable.mjs +33 -0
  364. package/dist/plugins/postgres/routable.mjs.map +1 -0
  365. package/dist/plugins/postgres/service.d.mts +50 -0
  366. package/dist/plugins/postgres/service.mjs +145 -0
  367. package/dist/plugins/postgres/service.mjs.map +1 -0
  368. package/dist/plugins/postgres/snapshot.d.mts +1 -0
  369. package/dist/plugins/postgres/snapshot.mjs +32 -0
  370. package/dist/plugins/postgres/snapshot.mjs.map +1 -0
  371. package/dist/plugins/router-entrypoints.mjs +21 -0
  372. package/dist/plugins/router-entrypoints.mjs.map +1 -0
  373. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +59 -0
  374. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -0
  375. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +132 -0
  376. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -0
  377. package/dist/plugins/seal/codegen.d.mts +19 -0
  378. package/dist/plugins/seal/codegen.mjs +16 -0
  379. package/dist/plugins/seal/codegen.mjs.map +1 -0
  380. package/dist/plugins/seal/config-render.mjs +82 -0
  381. package/dist/plugins/seal/config-render.mjs.map +1 -0
  382. package/dist/plugins/seal/deploy.mjs +198 -0
  383. package/dist/plugins/seal/deploy.mjs.map +1 -0
  384. package/dist/plugins/seal/errors.d.mts +52 -0
  385. package/dist/plugins/seal/errors.mjs +19 -0
  386. package/dist/plugins/seal/errors.mjs.map +1 -0
  387. package/dist/plugins/seal/index.d.mts +161 -0
  388. package/dist/plugins/seal/index.mjs +235 -0
  389. package/dist/plugins/seal/index.mjs.map +1 -0
  390. package/dist/plugins/seal/key-manager.d.mts +22 -0
  391. package/dist/plugins/seal/key-manager.mjs +22 -0
  392. package/dist/plugins/seal/key-manager.mjs.map +1 -0
  393. package/dist/plugins/seal/key-server.mjs +175 -0
  394. package/dist/plugins/seal/key-server.mjs.map +1 -0
  395. package/dist/plugins/seal/keygen.mjs +96 -0
  396. package/dist/plugins/seal/keygen.mjs.map +1 -0
  397. package/dist/plugins/seal/mode/fork-known.d.mts +8 -0
  398. package/dist/plugins/seal/mode/fork-known.mjs +23 -0
  399. package/dist/plugins/seal/mode/fork-known.mjs.map +1 -0
  400. package/dist/plugins/seal/mode/live.d.mts +18 -0
  401. package/dist/plugins/seal/mode/live.mjs +64 -0
  402. package/dist/plugins/seal/mode/live.mjs.map +1 -0
  403. package/dist/plugins/seal/mode/local-keygen.mjs +180 -0
  404. package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -0
  405. package/dist/plugins/seal/plugin-key.mjs +7 -0
  406. package/dist/plugins/seal/plugin-key.mjs.map +1 -0
  407. package/dist/plugins/seal/registry-publish.d.mts +43 -0
  408. package/dist/plugins/seal/registry-publish.mjs +9 -0
  409. package/dist/plugins/seal/registry-publish.mjs.map +1 -0
  410. package/dist/plugins/seal/routable.mjs +57 -0
  411. package/dist/plugins/seal/routable.mjs.map +1 -0
  412. package/dist/plugins/seal/service.mjs +17 -0
  413. package/dist/plugins/seal/service.mjs.map +1 -0
  414. package/dist/plugins/seal/snapshot.mjs +51 -0
  415. package/dist/plugins/seal/snapshot.mjs.map +1 -0
  416. package/dist/plugins/sui/auto-tick.mjs +45 -0
  417. package/dist/plugins/sui/auto-tick.mjs.map +1 -0
  418. package/dist/plugins/sui/chain-build-container.d.mts +1 -0
  419. package/dist/plugins/sui/chain-probe.d.mts +85 -0
  420. package/dist/plugins/sui/chain-probe.mjs +104 -0
  421. package/dist/plugins/sui/chain-probe.mjs.map +1 -0
  422. package/dist/plugins/sui/codegen.d.mts +14 -0
  423. package/dist/plugins/sui/codegen.mjs +26 -0
  424. package/dist/plugins/sui/codegen.mjs.map +1 -0
  425. package/dist/plugins/sui/errors.d.mts +74 -0
  426. package/dist/plugins/sui/errors.mjs +28 -0
  427. package/dist/plugins/sui/errors.mjs.map +1 -0
  428. package/dist/plugins/sui/fork-orchestration.mjs +24 -0
  429. package/dist/plugins/sui/fork-orchestration.mjs.map +1 -0
  430. package/dist/plugins/sui/fork-transaction.mjs +96 -0
  431. package/dist/plugins/sui/fork-transaction.mjs.map +1 -0
  432. package/dist/plugins/sui/index.d.mts +318 -0
  433. package/dist/plugins/sui/index.mjs +182 -0
  434. package/dist/plugins/sui/index.mjs.map +1 -0
  435. package/dist/plugins/sui/mode/external.mjs +60 -0
  436. package/dist/plugins/sui/mode/external.mjs.map +1 -0
  437. package/dist/plugins/sui/mode/fork.mjs +283 -0
  438. package/dist/plugins/sui/mode/fork.mjs.map +1 -0
  439. package/dist/plugins/sui/mode/live.mjs +103 -0
  440. package/dist/plugins/sui/mode/live.mjs.map +1 -0
  441. package/dist/plugins/sui/mode/local.mjs +293 -0
  442. package/dist/plugins/sui/mode/local.mjs.map +1 -0
  443. package/dist/plugins/sui/mode/shared-boot.mjs +254 -0
  444. package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -0
  445. package/dist/plugins/sui/mode/shared.d.mts +103 -0
  446. package/dist/plugins/sui/mode/shared.mjs +12 -0
  447. package/dist/plugins/sui/mode/shared.mjs.map +1 -0
  448. package/dist/plugins/sui/mode/spec.d.mts +94 -0
  449. package/dist/plugins/sui/network-resolver.d.mts +23 -0
  450. package/dist/plugins/sui/routable.mjs +88 -0
  451. package/dist/plugins/sui/routable.mjs.map +1 -0
  452. package/dist/plugins/sui/seed-objects.d.mts +18 -0
  453. package/dist/plugins/sui/seed-objects.mjs +25 -0
  454. package/dist/plugins/sui/seed-objects.mjs.map +1 -0
  455. package/dist/plugins/sui/service.mjs +38 -0
  456. package/dist/plugins/sui/service.mjs.map +1 -0
  457. package/dist/plugins/sui/snapshot.mjs +53 -0
  458. package/dist/plugins/sui/snapshot.mjs.map +1 -0
  459. package/dist/plugins/wallet/codegen.d.mts +33 -0
  460. package/dist/plugins/wallet/codegen.mjs +34 -0
  461. package/dist/plugins/wallet/codegen.mjs.map +1 -0
  462. package/dist/plugins/wallet/errors.d.mts +66 -0
  463. package/dist/plugins/wallet/errors.mjs +16 -0
  464. package/dist/plugins/wallet/errors.mjs.map +1 -0
  465. package/dist/plugins/wallet/index.d.mts +63 -0
  466. package/dist/plugins/wallet/index.mjs +126 -0
  467. package/dist/plugins/wallet/index.mjs.map +1 -0
  468. package/dist/plugins/wallet/origin-policy.d.mts +1 -0
  469. package/dist/plugins/wallet/origin-policy.mjs +65 -0
  470. package/dist/plugins/wallet/origin-policy.mjs.map +1 -0
  471. package/dist/plugins/wallet/pairing.d.mts +11 -0
  472. package/dist/plugins/wallet/pairing.mjs +125 -0
  473. package/dist/plugins/wallet/pairing.mjs.map +1 -0
  474. package/dist/plugins/wallet/protocol.d.mts +1 -0
  475. package/dist/plugins/wallet/protocol.mjs +96 -0
  476. package/dist/plugins/wallet/protocol.mjs.map +1 -0
  477. package/dist/plugins/wallet/routable.mjs +32 -0
  478. package/dist/plugins/wallet/routable.mjs.map +1 -0
  479. package/dist/plugins/wallet/server.d.mts +12 -0
  480. package/dist/plugins/wallet/server.mjs +317 -0
  481. package/dist/plugins/wallet/server.mjs.map +1 -0
  482. package/dist/plugins/wallet/service.d.mts +68 -0
  483. package/dist/plugins/wallet/service.mjs +97 -0
  484. package/dist/plugins/wallet/service.mjs.map +1 -0
  485. package/dist/plugins/wallet/snapshot.d.mts +1 -0
  486. package/dist/plugins/wallet/snapshot.mjs +14 -0
  487. package/dist/plugins/wallet/snapshot.mjs.map +1 -0
  488. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +42 -0
  489. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -0
  490. package/dist/plugins/walrus/codegen.d.mts +38 -0
  491. package/dist/plugins/walrus/codegen.mjs +34 -0
  492. package/dist/plugins/walrus/codegen.mjs.map +1 -0
  493. package/dist/plugins/walrus/deploy-paths.mjs +14 -0
  494. package/dist/plugins/walrus/deploy-paths.mjs.map +1 -0
  495. package/dist/plugins/walrus/deploy.d.mts +1 -0
  496. package/dist/plugins/walrus/deploy.mjs +224 -0
  497. package/dist/plugins/walrus/deploy.mjs.map +1 -0
  498. package/dist/plugins/walrus/errors.d.mts +38 -0
  499. package/dist/plugins/walrus/errors.mjs +26 -0
  500. package/dist/plugins/walrus/errors.mjs.map +1 -0
  501. package/dist/plugins/walrus/faucet-strategy.d.mts +12 -0
  502. package/dist/plugins/walrus/faucet-strategy.mjs +62 -0
  503. package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -0
  504. package/dist/plugins/walrus/index.d.mts +177 -0
  505. package/dist/plugins/walrus/index.mjs +284 -0
  506. package/dist/plugins/walrus/index.mjs.map +1 -0
  507. package/dist/plugins/walrus/mode/known-deploy.d.mts +25 -0
  508. package/dist/plugins/walrus/mode/known-deploy.mjs +71 -0
  509. package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -0
  510. package/dist/plugins/walrus/mode/local-cluster.d.mts +34 -0
  511. package/dist/plugins/walrus/mode/local-cluster.mjs +153 -0
  512. package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -0
  513. package/dist/plugins/walrus/plugin-key.mjs +7 -0
  514. package/dist/plugins/walrus/plugin-key.mjs.map +1 -0
  515. package/dist/plugins/walrus/registry-publish.d.mts +24 -0
  516. package/dist/plugins/walrus/registry-publish.mjs +7 -0
  517. package/dist/plugins/walrus/registry-publish.mjs.map +1 -0
  518. package/dist/plugins/walrus/routable.mjs +99 -0
  519. package/dist/plugins/walrus/routable.mjs.map +1 -0
  520. package/dist/plugins/walrus/service.mjs +20 -0
  521. package/dist/plugins/walrus/service.mjs.map +1 -0
  522. package/dist/plugins/walrus/snapshot.mjs +53 -0
  523. package/dist/plugins/walrus/snapshot.mjs.map +1 -0
  524. package/dist/plugins/walrus/storage-nodes.d.mts +15 -0
  525. package/dist/plugins/walrus/storage-nodes.mjs +154 -0
  526. package/dist/plugins/walrus/storage-nodes.mjs.map +1 -0
  527. package/dist/plugins/walrus/wal-swap.d.mts +2 -0
  528. package/dist/plugins/walrus/wal-swap.mjs +58 -0
  529. package/dist/plugins/walrus/wal-swap.mjs.map +1 -0
  530. package/dist/primitives/artifact-publisher.d.mts +12 -0
  531. package/dist/primitives/cache.d.mts +1 -0
  532. package/dist/runtime/built-in-plugin-layers.mjs +49 -0
  533. package/dist/runtime/built-in-plugin-layers.mjs.map +1 -0
  534. package/dist/runtime/docker/client.d.mts +2 -0
  535. package/dist/runtime/docker/client.mjs +54 -0
  536. package/dist/runtime/docker/client.mjs.map +1 -0
  537. package/dist/runtime/docker/container.d.mts +1 -0
  538. package/dist/runtime/docker/container.mjs +562 -0
  539. package/dist/runtime/docker/container.mjs.map +1 -0
  540. package/dist/runtime/docker/errors.d.mts +1 -0
  541. package/dist/runtime/docker/errors.mjs +187 -0
  542. package/dist/runtime/docker/errors.mjs.map +1 -0
  543. package/dist/runtime/docker/exec.d.mts +1 -0
  544. package/dist/runtime/docker/exec.mjs +63 -0
  545. package/dist/runtime/docker/exec.mjs.map +1 -0
  546. package/dist/runtime/docker/image.d.mts +1 -0
  547. package/dist/runtime/docker/image.mjs +278 -0
  548. package/dist/runtime/docker/image.mjs.map +1 -0
  549. package/dist/runtime/docker/index.d.mts +1 -0
  550. package/dist/runtime/docker/inventory.d.mts +1 -0
  551. package/dist/runtime/docker/inventory.mjs +167 -0
  552. package/dist/runtime/docker/inventory.mjs.map +1 -0
  553. package/dist/runtime/docker/labels.d.mts +1 -0
  554. package/dist/runtime/docker/labels.mjs +97 -0
  555. package/dist/runtime/docker/labels.mjs.map +1 -0
  556. package/dist/runtime/docker/logs.d.mts +1 -0
  557. package/dist/runtime/docker/logs.mjs +34 -0
  558. package/dist/runtime/docker/logs.mjs.map +1 -0
  559. package/dist/runtime/docker/network.d.mts +1 -0
  560. package/dist/runtime/docker/network.mjs +168 -0
  561. package/dist/runtime/docker/network.mjs.map +1 -0
  562. package/dist/runtime/docker/service.d.mts +9 -0
  563. package/dist/runtime/docker/service.mjs +266 -0
  564. package/dist/runtime/docker/service.mjs.map +1 -0
  565. package/dist/runtime/docker/sweep.d.mts +1 -0
  566. package/dist/runtime/docker/sweep.mjs +220 -0
  567. package/dist/runtime/docker/sweep.mjs.map +1 -0
  568. package/dist/runtime/docker/volume.d.mts +1 -0
  569. package/dist/runtime/docker/volume.mjs +24 -0
  570. package/dist/runtime/docker/volume.mjs.map +1 -0
  571. package/dist/runtime/docker/wrap.d.mts +1 -0
  572. package/dist/runtime/docker/wrap.mjs +131 -0
  573. package/dist/runtime/docker/wrap.mjs.map +1 -0
  574. package/dist/substrate/brand.d.mts +24 -0
  575. package/dist/substrate/brand.mjs +14 -0
  576. package/dist/substrate/brand.mjs.map +1 -0
  577. package/dist/substrate/cross-process.d.mts +1 -0
  578. package/dist/substrate/cross-process.mjs +28 -0
  579. package/dist/substrate/cross-process.mjs.map +1 -0
  580. package/dist/substrate/events.d.mts +117 -0
  581. package/dist/substrate/identity.d.mts +13 -0
  582. package/dist/substrate/lifecycle.d.mts +12 -0
  583. package/dist/substrate/manifest.d.mts +39 -0
  584. package/dist/substrate/manifest.mjs +33 -0
  585. package/dist/substrate/manifest.mjs.map +1 -0
  586. package/dist/substrate/network.d.mts +34 -0
  587. package/dist/substrate/options.d.mts +23 -0
  588. package/dist/substrate/plugin.d.mts +101 -0
  589. package/dist/substrate/plugin.mjs +61 -0
  590. package/dist/substrate/plugin.mjs.map +1 -0
  591. package/dist/substrate/projection.d.mts +100 -0
  592. package/dist/substrate/runtime/artifact-publisher/index.mjs +76 -0
  593. package/dist/substrate/runtime/artifact-publisher/index.mjs.map +1 -0
  594. package/dist/substrate/runtime/atomic-write.mjs +106 -0
  595. package/dist/substrate/runtime/atomic-write.mjs.map +1 -0
  596. package/dist/substrate/runtime/cache/index.d.mts +1 -0
  597. package/dist/substrate/runtime/cache/schema.d.mts +1 -0
  598. package/dist/substrate/runtime/cache/schema.mjs +22 -0
  599. package/dist/substrate/runtime/cache/schema.mjs.map +1 -0
  600. package/dist/substrate/runtime/cache/service.d.mts +1 -0
  601. package/dist/substrate/runtime/cache/service.mjs +89 -0
  602. package/dist/substrate/runtime/cache/service.mjs.map +1 -0
  603. package/dist/substrate/runtime/capability-sinks/index.d.mts +1 -0
  604. package/dist/substrate/runtime/capability-sinks/layer.d.mts +1 -0
  605. package/dist/substrate/runtime/capability-sinks/layer.mjs +31 -0
  606. package/dist/substrate/runtime/capability-sinks/layer.mjs.map +1 -0
  607. package/dist/substrate/runtime/capability-sinks/service.d.mts +36 -0
  608. package/dist/substrate/runtime/capability-sinks/service.mjs +74 -0
  609. package/dist/substrate/runtime/capability-sinks/service.mjs.map +1 -0
  610. package/dist/substrate/runtime/config-validation.d.mts +38 -0
  611. package/dist/substrate/runtime/config-validation.mjs +137 -0
  612. package/dist/substrate/runtime/config-validation.mjs.map +1 -0
  613. package/dist/substrate/runtime/context-helpers.mjs +32 -0
  614. package/dist/substrate/runtime/context-helpers.mjs.map +1 -0
  615. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +128 -0
  616. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -0
  617. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs +136 -0
  618. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -0
  619. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs +49 -0
  620. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -0
  621. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs +9 -0
  622. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -0
  623. package/dist/substrate/runtime/cross-process/liveness.mjs +119 -0
  624. package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -0
  625. package/dist/substrate/runtime/cross-process/roster.mjs +275 -0
  626. package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -0
  627. package/dist/substrate/runtime/cross-process/snapshot-reservation.d.mts +1 -0
  628. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +117 -0
  629. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +1 -0
  630. package/dist/substrate/runtime/cross-process/stack-lock.d.mts +1 -0
  631. package/dist/substrate/runtime/cross-process/stack-lock.mjs +142 -0
  632. package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -0
  633. package/dist/substrate/runtime/current-plugin.mjs +15 -0
  634. package/dist/substrate/runtime/current-plugin.mjs.map +1 -0
  635. package/dist/substrate/runtime/errors.d.mts +1 -0
  636. package/dist/substrate/runtime/errors.mjs +76 -0
  637. package/dist/substrate/runtime/errors.mjs.map +1 -0
  638. package/dist/substrate/runtime/host-tree-tar/index.mjs +364 -0
  639. package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -0
  640. package/dist/substrate/runtime/http-probe.d.mts +35 -0
  641. package/dist/substrate/runtime/http-probe.mjs +65 -0
  642. package/dist/substrate/runtime/http-probe.mjs.map +1 -0
  643. package/dist/substrate/runtime/lease-broker/index.d.mts +1 -0
  644. package/dist/substrate/runtime/lease-broker/service.d.mts +64 -0
  645. package/dist/substrate/runtime/lease-broker/service.mjs +155 -0
  646. package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -0
  647. package/dist/substrate/runtime/lifecycle/dep-graph.d.mts +1 -0
  648. package/dist/substrate/runtime/lifecycle/dep-graph.mjs +138 -0
  649. package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -0
  650. package/dist/substrate/runtime/lifecycle/index.d.mts +1 -0
  651. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +31 -0
  652. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +1 -0
  653. package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -0
  654. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +133 -0
  655. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -0
  656. package/dist/substrate/runtime/lifecycle/ready-gate.d.mts +1 -0
  657. package/dist/substrate/runtime/lifecycle/ready-gate.mjs +34 -0
  658. package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -0
  659. package/dist/substrate/runtime/lifecycle/selective-restart.d.mts +1 -0
  660. package/dist/substrate/runtime/lifecycle/selective-restart.mjs +43 -0
  661. package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -0
  662. package/dist/substrate/runtime/lifecycle/signals.d.mts +1 -0
  663. package/dist/substrate/runtime/lifecycle/signals.mjs +64 -0
  664. package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -0
  665. package/dist/substrate/runtime/lifecycle/state-machine.d.mts +1 -0
  666. package/dist/substrate/runtime/lifecycle/state-machine.mjs +38 -0
  667. package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -0
  668. package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -0
  669. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +27 -0
  670. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -0
  671. package/dist/substrate/runtime/managed-container.d.mts +30 -0
  672. package/dist/substrate/runtime/managed-container.mjs +32 -0
  673. package/dist/substrate/runtime/managed-container.mjs.map +1 -0
  674. package/dist/substrate/runtime/manifest/manifest.mjs +73 -0
  675. package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -0
  676. package/dist/substrate/runtime/mode-errors.d.mts +36 -0
  677. package/dist/substrate/runtime/observability/cascade-formatter.d.mts +1 -0
  678. package/dist/substrate/runtime/observability/cascade-formatter.mjs +135 -0
  679. package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -0
  680. package/dist/substrate/runtime/observability/formatter-registry.d.mts +1 -0
  681. package/dist/substrate/runtime/observability/formatter-registry.mjs +65 -0
  682. package/dist/substrate/runtime/observability/formatter-registry.mjs.map +1 -0
  683. package/dist/substrate/runtime/observability/index.d.mts +3 -0
  684. package/dist/substrate/runtime/observability/logger.d.mts +58 -0
  685. package/dist/substrate/runtime/observability/logger.mjs +89 -0
  686. package/dist/substrate/runtime/observability/logger.mjs.map +1 -0
  687. package/dist/substrate/runtime/observability/pretty-error.d.mts +1 -0
  688. package/dist/substrate/runtime/observability/pretty-error.mjs +119 -0
  689. package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -0
  690. package/dist/substrate/runtime/observability/process-lines.d.mts +31 -0
  691. package/dist/substrate/runtime/observability/process-lines.mjs +40 -0
  692. package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -0
  693. package/dist/substrate/runtime/observability/redaction.d.mts +28 -0
  694. package/dist/substrate/runtime/observability/redaction.mjs +45 -0
  695. package/dist/substrate/runtime/observability/redaction.mjs.map +1 -0
  696. package/dist/substrate/runtime/observability/spans.d.mts +1 -0
  697. package/dist/substrate/runtime/observability/spans.mjs +87 -0
  698. package/dist/substrate/runtime/observability/spans.mjs.map +1 -0
  699. package/dist/substrate/runtime/observability/subprocess-capture.d.mts +2 -0
  700. package/dist/substrate/runtime/observability/subprocess-capture.mjs +82 -0
  701. package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -0
  702. package/dist/substrate/runtime/paths.d.mts +17 -0
  703. package/dist/substrate/runtime/paths.mjs +61 -0
  704. package/dist/substrate/runtime/paths.mjs.map +1 -0
  705. package/dist/substrate/runtime/port-broker/index.d.mts +1 -0
  706. package/dist/substrate/runtime/port-broker/service.d.mts +1 -0
  707. package/dist/substrate/runtime/port-broker/service.mjs +319 -0
  708. package/dist/substrate/runtime/port-broker/service.mjs.map +1 -0
  709. package/dist/substrate/runtime/post-acquire-tasks.d.mts +1 -0
  710. package/dist/substrate/runtime/post-acquire-tasks.mjs +34 -0
  711. package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -0
  712. package/dist/substrate/runtime/probes.d.mts +51 -0
  713. package/dist/substrate/runtime/probes.mjs +84 -0
  714. package/dist/substrate/runtime/probes.mjs.map +1 -0
  715. package/dist/substrate/runtime/process-supervisor.d.mts +57 -0
  716. package/dist/substrate/runtime/process-supervisor.mjs +73 -0
  717. package/dist/substrate/runtime/process-supervisor.mjs.map +1 -0
  718. package/dist/substrate/runtime/projection/operational-endpoints.mjs +44 -0
  719. package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -0
  720. package/dist/substrate/runtime/projection/persisted.mjs +195 -0
  721. package/dist/substrate/runtime/projection/persisted.mjs.map +1 -0
  722. package/dist/substrate/runtime/projection/state-ref.mjs +48 -0
  723. package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -0
  724. package/dist/substrate/runtime/projection/update.mjs +200 -0
  725. package/dist/substrate/runtime/projection/update.mjs.map +1 -0
  726. package/dist/substrate/runtime/retry-policy.d.mts +18 -0
  727. package/dist/substrate/runtime/retry-policy.mjs +16 -0
  728. package/dist/substrate/runtime/retry-policy.mjs.map +1 -0
  729. package/dist/substrate/runtime/run.mjs +86 -0
  730. package/dist/substrate/runtime/run.mjs.map +1 -0
  731. package/dist/substrate/runtime/runtime-decode.d.mts +32 -0
  732. package/dist/substrate/runtime/runtime-decode.mjs +53 -0
  733. package/dist/substrate/runtime/runtime-decode.mjs.map +1 -0
  734. package/dist/substrate/runtime/scoped-http-server.mjs +36 -0
  735. package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -0
  736. package/dist/substrate/runtime/scoped-ref-map/service.mjs +83 -0
  737. package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +1 -0
  738. package/dist/substrate/runtime/stage-and-swap/index.d.mts +1 -0
  739. package/dist/substrate/runtime/stage-and-swap/index.mjs +131 -0
  740. package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -0
  741. package/dist/substrate/runtime/state-store/schema.mjs +36 -0
  742. package/dist/substrate/runtime/state-store/schema.mjs.map +1 -0
  743. package/dist/substrate/runtime/strategy-registry/chain-probe-for.d.mts +1 -0
  744. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs +22 -0
  745. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -0
  746. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.d.mts +1 -0
  747. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs +30 -0
  748. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs.map +1 -0
  749. package/dist/substrate/runtime/strategy-registry/index.d.mts +1 -0
  750. package/dist/substrate/runtime/strategy-registry/service.d.mts +1 -0
  751. package/dist/substrate/runtime/strategy-registry/service.mjs +67 -0
  752. package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -0
  753. package/dist/substrate/runtime/sui-execute/index.d.mts +11 -0
  754. package/dist/substrate/runtime/sui-execute/index.mjs +144 -0
  755. package/dist/substrate/runtime/sui-execute/index.mjs.map +1 -0
  756. package/dist/substrate/runtime/sui-move-build/index.d.mts +1 -0
  757. package/dist/substrate/runtime/sui-move-build/index.mjs +283 -0
  758. package/dist/substrate/runtime/sui-move-build/index.mjs.map +1 -0
  759. package/dist/substrate/runtime/supervisor.d.mts +1 -0
  760. package/dist/substrate/runtime/supervisor.mjs +831 -0
  761. package/dist/substrate/runtime/supervisor.mjs.map +1 -0
  762. package/dist/surfaces/cli/command-tree.mjs +276 -0
  763. package/dist/surfaces/cli/command-tree.mjs.map +1 -0
  764. package/dist/surfaces/cli/commands/config.mjs +31 -0
  765. package/dist/surfaces/cli/commands/config.mjs.map +1 -0
  766. package/dist/surfaces/cli/commands/confirm-node.mjs +26 -0
  767. package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -0
  768. package/dist/surfaces/cli/commands/confirm.mjs +26 -0
  769. package/dist/surfaces/cli/commands/confirm.mjs.map +1 -0
  770. package/dist/surfaces/cli/commands/doctor-probes.mjs +452 -0
  771. package/dist/surfaces/cli/commands/doctor-probes.mjs.map +1 -0
  772. package/dist/surfaces/cli/commands/doctor.mjs +38 -0
  773. package/dist/surfaces/cli/commands/doctor.mjs.map +1 -0
  774. package/dist/surfaces/cli/commands/prune-picker.mjs +347 -0
  775. package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -0
  776. package/dist/surfaces/cli/commands/prune.mjs +178 -0
  777. package/dist/surfaces/cli/commands/prune.mjs.map +1 -0
  778. package/dist/surfaces/cli/commands/snapshot.mjs +141 -0
  779. package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -0
  780. package/dist/surfaces/cli/commands/status.mjs +95 -0
  781. package/dist/surfaces/cli/commands/status.mjs.map +1 -0
  782. package/dist/surfaces/cli/commands/supervisor-presence.mjs +33 -0
  783. package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -0
  784. package/dist/surfaces/cli/commands/wipe.mjs +28 -0
  785. package/dist/surfaces/cli/commands/wipe.mjs.map +1 -0
  786. package/dist/surfaces/cli/envelope.mjs +43 -0
  787. package/dist/surfaces/cli/envelope.mjs.map +1 -0
  788. package/dist/surfaces/cli/errors.mjs +110 -0
  789. package/dist/surfaces/cli/errors.mjs.map +1 -0
  790. package/dist/surfaces/cli/flags.mjs +56 -0
  791. package/dist/surfaces/cli/flags.mjs.map +1 -0
  792. package/dist/surfaces/cli/index.mjs +418 -0
  793. package/dist/surfaces/cli/index.mjs.map +1 -0
  794. package/dist/surfaces/cli/output.mjs +115 -0
  795. package/dist/surfaces/cli/output.mjs.map +1 -0
  796. package/dist/surfaces/cli/sysexits.mjs +139 -0
  797. package/dist/surfaces/cli/sysexits.mjs.map +1 -0
  798. package/dist/surfaces/tui/app.mjs +104 -0
  799. package/dist/surfaces/tui/app.mjs.map +1 -0
  800. package/dist/surfaces/tui/dashboard.mjs +261 -0
  801. package/dist/surfaces/tui/dashboard.mjs.map +1 -0
  802. package/dist/surfaces/tui/display-derivation.mjs +395 -0
  803. package/dist/surfaces/tui/display-derivation.mjs.map +1 -0
  804. package/dist/surfaces/tui/errors.mjs +11 -0
  805. package/dist/surfaces/tui/errors.mjs.map +1 -0
  806. package/dist/surfaces/tui/event-log.mjs +155 -0
  807. package/dist/surfaces/tui/event-log.mjs.map +1 -0
  808. package/dist/surfaces/tui/heartbeat.mjs +33 -0
  809. package/dist/surfaces/tui/heartbeat.mjs.map +1 -0
  810. package/dist/surfaces/tui/index.mjs +50 -0
  811. package/dist/surfaces/tui/index.mjs.map +1 -0
  812. package/dist/surfaces/tui/input.mjs +104 -0
  813. package/dist/surfaces/tui/input.mjs.map +1 -0
  814. package/dist/surfaces/tui/mode-detect.mjs +32 -0
  815. package/dist/surfaces/tui/mode-detect.mjs.map +1 -0
  816. package/dist/surfaces/tui/mount-ink.mjs +31 -0
  817. package/dist/surfaces/tui/mount-ink.mjs.map +1 -0
  818. package/dist/surfaces/tui/plain-renderer.mjs +170 -0
  819. package/dist/surfaces/tui/plain-renderer.mjs.map +1 -0
  820. package/dist/surfaces/tui/resource-table.mjs +507 -0
  821. package/dist/surfaces/tui/resource-table.mjs.map +1 -0
  822. package/images/_shared/signal-forward.sh +77 -0
  823. package/images/postgres/Dockerfile +32 -0
  824. package/images/seal/Dockerfile +68 -0
  825. package/images/seal/entrypoint.sh +65 -0
  826. package/images/sui/Dockerfile +73 -0
  827. package/images/sui/entrypoint.sh +244 -0
  828. package/images/sui-fork/Dockerfile +53 -0
  829. package/images/sui-fork/entrypoint.sh +51 -0
  830. package/images/walrus/Dockerfile +122 -0
  831. package/images/walrus/deploy-walrus.sh +305 -0
  832. package/images/walrus/run-walrus.sh +53 -0
  833. package/package.json +94 -0
@@ -0,0 +1,229 @@
1
+ import { RouterBootFailed } from "./errors.mjs";
2
+ import { DockerHost, DockerSpawner, dockerRun, dockerRunOk } from "../../runtime/docker/client.mjs";
3
+ import { ComposeLabelKey, LabelKey } from "../../runtime/docker/labels.mjs";
4
+ import { isNoSuchContainerStderr } from "../../runtime/docker/wrap.mjs";
5
+ import { ensureNetwork } from "../../runtime/docker/network.mjs";
6
+ import { inspectContainer } from "../../runtime/docker/container.mjs";
7
+ import { Context, Effect, Layer } from "effect";
8
+ import * as path from "node:path";
9
+ //#region src/orchestrators/router/traefik-container.ts
10
+ const TRAEFIK_DISPATCH_MOUNT_TARGET = "/etc/traefik/dispatch";
11
+ const ROUTER_PROFILE_LABEL = LabelKey.routerProfile;
12
+ const HOST_GATEWAY_ALIAS = "host.docker.internal:host-gateway";
13
+ /** Default Traefik image. Tag, not digest — distilled-doc open
14
+ * question #9 (digest-pin is a follow-up). */
15
+ const DEFAULT_TRAEFIK_IMAGE = "traefik:v3.5";
16
+ var TraefikContainerOpsService = class extends Context.Service()("@devstack-rewrite/orchestrators/router/TraefikContainerOps") {};
17
+ const sameHostPath = (left, right) => path.resolve(left) === path.resolve(right);
18
+ const uniqueSortedEntrypointPorts = (entrypoints) => [...new Set(entrypoints.map((entrypoint) => entrypoint.port))].sort((a, b) => a - b);
19
+ const traefikListenerEntrypoints = (entrypoints) => {
20
+ const byPort = /* @__PURE__ */ new Map();
21
+ for (const entrypoint of entrypoints) if (!byPort.has(entrypoint.port)) byPort.set(entrypoint.port, entrypoint);
22
+ return Array.from(byPort.values());
23
+ };
24
+ const traefikExpectedPortPairs = (entrypoints) => uniqueSortedEntrypointPorts(entrypoints).map((port) => `${port}=127.0.0.1:${port}`);
25
+ const traefikExpectedCommand = (entrypoints) => [
26
+ `--providers.file.directory=${TRAEFIK_DISPATCH_MOUNT_TARGET}`,
27
+ "--providers.file.watch=true",
28
+ "--api.dashboard=false",
29
+ "--log.level=INFO",
30
+ ...traefikListenerEntrypoints(entrypoints).map((entrypoint) => `--entrypoints.${entrypoint.name}.address=:${entrypoint.port}`)
31
+ ];
32
+ const mountedDispatchDirMatches = (existing, expected) => existing.dispatchMount !== null && existing.dispatchMount.target === "/etc/traefik/dispatch" && existing.dispatchMount.readOnly && sameHostPath(existing.dispatchMount.source, expected);
33
+ const sameStrings = (left, right) => left.length === right.length && left.every((value, index) => value === right[index]);
34
+ const sameStringSet = (left, right) => sameStrings([...new Set(left)].sort(), [...new Set(right)].sort());
35
+ const portBindingPair = (binding) => {
36
+ const [container, host] = binding.split("=");
37
+ const containerPort = container?.split("/")[0];
38
+ const hostPort = host?.slice(host.lastIndexOf(":") + 1);
39
+ const hostIp = host?.slice(0, host.lastIndexOf(":"));
40
+ if (containerPort === void 0 || hostPort === void 0 || hostIp === void 0) return null;
41
+ if (!/^\d+$/.test(containerPort) || !/^\d+$/.test(hostPort)) return null;
42
+ return `${containerPort}=${hostIp}:${hostPort}`;
43
+ };
44
+ const portBindingsMatch = (existing, entrypoints) => sameStringSet(existing.flatMap((binding) => {
45
+ const pair = portBindingPair(binding);
46
+ return pair === null ? [] : [pair];
47
+ }), traefikExpectedPortPairs(entrypoints));
48
+ const routerProfileLabelsMatch = (labels, profile) => {
49
+ if (labels[LabelKey.managed] !== "true") return false;
50
+ if (labels[LabelKey.routerMarker] !== "true") return false;
51
+ if (labels[ROUTER_PROFILE_LABEL] !== profile.id) return false;
52
+ if (labels[LabelKey.routerSpecVersion] !== "3") return false;
53
+ for (const forbidden of [
54
+ LabelKey.app,
55
+ LabelKey.stack,
56
+ LabelKey.plugin,
57
+ LabelKey.role,
58
+ LabelKey.cycle,
59
+ ComposeLabelKey.project,
60
+ ComposeLabelKey.service,
61
+ ComposeLabelKey.containerNumber,
62
+ ComposeLabelKey.version,
63
+ ComposeLabelKey.oneoff,
64
+ ComposeLabelKey.network,
65
+ ComposeLabelKey.volume
66
+ ]) if (labels[forbidden] !== void 0) return false;
67
+ return true;
68
+ };
69
+ const routerSpecMatches = (existing, inputs) => existing.image === inputs.image && mountedDispatchDirMatches(existing, inputs.profile.dispatchDir) && portBindingsMatch(existing.portBindings, inputs.entrypoints) && sameStringSet(existing.command, traefikExpectedCommand(inputs.entrypoints)) && existing.networks.includes(inputs.profile.networkName) && routerProfileLabelsMatch(existing.labels, inputs.profile);
70
+ /** Adopt-or-create per the architecture's 4-way decision table.
71
+ * Idempotent: callers may invoke this once per supervisor lifetime,
72
+ * and a follow-up call returns `decision: 'adopt'` if nothing has
73
+ * changed. */
74
+ const bootstrap = (inputs) => Effect.gen(function* () {
75
+ const ops = yield* TraefikContainerOpsService;
76
+ const network = yield* ops.ensureNetwork(inputs.profile.networkName);
77
+ const existing = yield* ops.inspectContainer(inputs.profile.containerName);
78
+ if (existing === null) return {
79
+ decision: "recreate-fresh",
80
+ containerId: (yield* ops.createFresh({
81
+ name: inputs.profile.containerName,
82
+ image: inputs.image,
83
+ network: inputs.profile.networkName,
84
+ routerProfileId: inputs.profile.id,
85
+ entrypoints: inputs.entrypoints,
86
+ dispatchDirHostPath: inputs.profile.dispatchDir
87
+ })).id,
88
+ networkId: network.id,
89
+ imageMatches: true
90
+ };
91
+ const configMatches = routerSpecMatches(existing, inputs);
92
+ if (existing.running === true && configMatches) return {
93
+ decision: "adopt",
94
+ containerId: existing.id,
95
+ networkId: network.id,
96
+ imageMatches: true
97
+ };
98
+ if (existing.running === "unknown" && configMatches) {
99
+ if (inputs.protectedRouteLeaseIds.length > 0) return yield* Effect.fail(new RouterBootFailed({
100
+ stage: "ensure-container",
101
+ detail: `router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' has unknown lifecycle state, and live or unknown route leases exist: ` + inputs.protectedRouteLeaseIds.join(", ")
102
+ }));
103
+ yield* ops.forceRemove(inputs.profile.containerName);
104
+ return {
105
+ decision: "recreate-fresh",
106
+ containerId: (yield* ops.createFresh({
107
+ name: inputs.profile.containerName,
108
+ image: inputs.image,
109
+ network: inputs.profile.networkName,
110
+ routerProfileId: inputs.profile.id,
111
+ entrypoints: inputs.entrypoints,
112
+ dispatchDirHostPath: inputs.profile.dispatchDir
113
+ })).id,
114
+ networkId: network.id,
115
+ imageMatches: true
116
+ };
117
+ }
118
+ if (!configMatches) {
119
+ if (inputs.protectedRouteLeaseIds.length > 0) return yield* Effect.fail(new RouterBootFailed({
120
+ stage: "ensure-container",
121
+ detail: `router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' does not match the requested spec, but live or unknown route leases exist: ` + inputs.protectedRouteLeaseIds.join(", ")
122
+ }));
123
+ yield* ops.forceRemove(inputs.profile.containerName);
124
+ return {
125
+ decision: "recreate-fresh",
126
+ containerId: (yield* ops.createFresh({
127
+ name: inputs.profile.containerName,
128
+ image: inputs.image,
129
+ network: inputs.profile.networkName,
130
+ routerProfileId: inputs.profile.id,
131
+ entrypoints: inputs.entrypoints,
132
+ dispatchDirHostPath: inputs.profile.dispatchDir
133
+ })).id,
134
+ networkId: network.id,
135
+ imageMatches: true
136
+ };
137
+ }
138
+ return {
139
+ decision: "resume",
140
+ containerId: (yield* ops.resume(inputs.profile.containerName).pipe(Effect.catchTag("RouterBootFailed", (cause) => inputs.protectedRouteLeaseIds.length > 0 ? Effect.fail(new RouterBootFailed({
141
+ stage: "ensure-container",
142
+ detail: `router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' could not be resumed, and live or unknown route leases exist: ` + inputs.protectedRouteLeaseIds.join(", "),
143
+ cause
144
+ })) : ops.forceRemove(inputs.profile.containerName).pipe(Effect.andThen(ops.createFresh({
145
+ name: inputs.profile.containerName,
146
+ image: inputs.image,
147
+ network: inputs.profile.networkName,
148
+ routerProfileId: inputs.profile.id,
149
+ entrypoints: inputs.entrypoints,
150
+ dispatchDirHostPath: inputs.profile.dispatchDir
151
+ })))))).id,
152
+ networkId: network.id,
153
+ imageMatches: true
154
+ };
155
+ }).pipe(Effect.withSpan("orchestrator.router.bootstrap"));
156
+ const routerBootFailed = (stage, detail, cause) => new RouterBootFailed({
157
+ stage,
158
+ detail,
159
+ ...cause === void 0 ? {} : { cause }
160
+ });
161
+ const traefikRunArgs = (args) => {
162
+ const ports = uniqueSortedEntrypointPorts(args.entrypoints);
163
+ const dockerArgs = [
164
+ "-d",
165
+ "--name",
166
+ args.name,
167
+ "--network",
168
+ args.network,
169
+ "--label",
170
+ `${LabelKey.managed}=true`,
171
+ "--label",
172
+ `${LabelKey.routerMarker}=true`,
173
+ "--label",
174
+ `${ROUTER_PROFILE_LABEL}=${args.routerProfileId}`,
175
+ "--label",
176
+ `${LabelKey.routerSpecVersion}=3`,
177
+ "--add-host",
178
+ HOST_GATEWAY_ALIAS
179
+ ];
180
+ for (const port of ports) dockerArgs.push("-p", `127.0.0.1:${port}:${port}`);
181
+ dockerArgs.push("--mount", `type=bind,source=${args.dispatchDirHostPath},target=${TRAEFIK_DISPATCH_MOUNT_TARGET},readonly`, args.image, ...traefikExpectedCommand(args.entrypoints));
182
+ return dockerArgs;
183
+ };
184
+ const layerTraefikContainerOpsDocker = Layer.effect(TraefikContainerOpsService, Effect.gen(function* () {
185
+ const dockerHost = yield* DockerHost;
186
+ const dockerSpawner = yield* DockerSpawner;
187
+ const provideDocker = (effect) => effect.pipe(Effect.provideService(DockerHost, dockerHost), Effect.provideService(DockerSpawner, dockerSpawner));
188
+ return TraefikContainerOpsService.of({
189
+ ensureNetwork: (name) => provideDocker(ensureNetwork(name, {
190
+ app: "devstack-router",
191
+ stack: name,
192
+ composeUi: false
193
+ })).pipe(Effect.map((id) => ({ id })), Effect.mapError((cause) => routerBootFailed("ensure-network", `failed to ensure shared router network '${name}'`, cause))),
194
+ inspectContainer: (name) => provideDocker(inspectContainer(name)).pipe(Effect.mapError((cause) => routerBootFailed("inspect", `failed to inspect router container '${name}'`, cause)), Effect.map((facts) => facts === null ? null : {
195
+ id: facts.id,
196
+ running: facts.lifecycle.kind === "unknown" ? "unknown" : facts.running,
197
+ image: facts.image,
198
+ dispatchMount: (() => {
199
+ const mount = facts.mounts?.find((m) => m.target === TRAEFIK_DISPATCH_MOUNT_TARGET);
200
+ return mount === void 0 ? null : {
201
+ source: mount.source,
202
+ target: mount.target,
203
+ readOnly: mount.readOnly === true
204
+ };
205
+ })(),
206
+ portBindings: facts.portBindings ?? [],
207
+ command: facts.command ?? [],
208
+ networks: facts.networks ?? [],
209
+ labels: facts.labels ?? {}
210
+ })),
211
+ createFresh: (args) => provideDocker(dockerRun("run", traefikRunArgs(args))).pipe(Effect.map((result) => ({ id: result.stdout.trim() })), Effect.mapError((cause) => routerBootFailed("ensure-container", `failed to create router container '${args.name}'`, cause))),
212
+ resume: (name) => provideDocker(dockerRun("start", [name])).pipe(Effect.flatMap(() => provideDocker(inspectContainer(name))), Effect.flatMap((facts) => facts === null ? Effect.fail(routerBootFailed("inspect", `router container '${name}' started but could not be inspected`)) : Effect.succeed({ id: facts.id })), Effect.mapError((cause) => cause instanceof RouterBootFailed ? cause : routerBootFailed("ensure-container", `failed to resume router container '${name}'`, cause))),
213
+ forceRemove: (name) => provideDocker(dockerRunOk("rm", ["-f", name])).pipe(Effect.flatMap((result) => {
214
+ if (result.exitCode === 0 || isNoSuchContainerStderr(result.stderr)) return Effect.void;
215
+ return Effect.fail(routerBootFailed("ensure-container", `failed to remove router container '${name}': ${result.stderr}`));
216
+ }), Effect.mapError((cause) => cause instanceof RouterBootFailed ? cause : routerBootFailed("ensure-container", `failed to remove router container '${name}'`, cause)))
217
+ });
218
+ }));
219
+ Layer.succeed(TraefikContainerOpsService)({
220
+ ensureNetwork: (_name) => Effect.succeed({ id: "stub-network" }),
221
+ inspectContainer: (_name) => Effect.succeed(null),
222
+ createFresh: (_args) => Effect.succeed({ id: "stub-container" }),
223
+ resume: (_name) => Effect.succeed({ id: "stub-container" }),
224
+ forceRemove: (_name) => Effect.succeed(void 0)
225
+ });
226
+ //#endregion
227
+ export { DEFAULT_TRAEFIK_IMAGE, TraefikContainerOpsService, bootstrap, layerTraefikContainerOpsDocker, routerProfileLabelsMatch, uniqueSortedEntrypointPorts };
228
+
229
+ //# sourceMappingURL=traefik-container.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traefik-container.mjs","names":[],"sources":["../../../src/orchestrators/router/traefik-container.ts"],"sourcesContent":["// Traefik container lifecycle — router-profile singleton.\n//\n// Architecture distilled-doc §\"Lifecycle states\":\n// | Found state | Image matches | Action |\n// |----------------------------|---------------|------------------------------|\n// | Container absent | n/a | Ensure network + create fresh|\n// | Container running | yes | Adopt (no-op) |\n// | Container running | no | Force-remove + create fresh |\n// | Container stopped | yes | Resume; on fail recreate fresh|\n// | Container stopped | no | Force-remove + create fresh |\n// | Network absent | n/a | Create network first |\n//\n// Key invariants:\n// - One container per router profile. NOT per-stack — the router\n// outlives any one `pnpm dev`.\n// - The container does NOT take the stack identity label set;\n// instead a singleton router label distinguishes it from per-stack\n// resources (so per-stack `wipe` doesn't touch it).\n// - Bootstrap runs ONCE per supervisor lifetime (architecture\n// invariant #11). Hot-reload cycles do NOT re-pay docker inspect.\n//\n// This file is INTENTIONALLY a thin orchestration shell. Real container\n// I/O lives in `runtime/docker/*`; the effectful operations are\n// abstracted behind a `TraefikContainerOps` service so tests can inject\n// a no-op implementation without changing route delivery.\n\nimport { Context, Effect, Layer } from 'effect';\nimport * as path from 'node:path';\n\nimport { RouterBootFailed } from './errors.ts';\nimport type { Entrypoint } from './entrypoints.ts';\nimport {\n\tDockerHost,\n\tDockerSpawner,\n\tComposeLabelKey,\n\tensureNetwork,\n\tinspectContainer,\n\tisNoSuchContainerStderr,\n\tLabelKey,\n} from '../../runtime/docker/index.ts';\nimport { dockerRun, dockerRunOk } from '../../runtime/docker/client.ts';\nimport type { RouterProfile } from './profile.ts';\n\nexport const TRAEFIK_DISPATCH_MOUNT_TARGET = '/etc/traefik/dispatch';\nexport const ROUTER_PROFILE_LABEL = LabelKey.routerProfile;\nexport const ROUTER_CONTAINER_SPEC_VERSION = '3';\nexport const HOST_GATEWAY_ALIAS = 'host.docker.internal:host-gateway';\n\n/** Default Traefik image. Tag, not digest — distilled-doc open\n * question #9 (digest-pin is a follow-up). */\nexport const DEFAULT_TRAEFIK_IMAGE = 'traefik:v3.5';\n\n// ---------------------------------------------------------------------------\n// BootDecision — observability shape\n// ---------------------------------------------------------------------------\n\n/** What the lifecycle decision was. Emitted as a span attribute and\n * threaded into the inventory row (architecture distilled-doc\n * §\"Outputs / capabilities provided\" — \"A boot-decision report\"). */\nexport type BootDecision = 'adopt' | 'resume' | 'recreate-fresh' | 'opt-out';\n\nexport interface BootReport {\n\treadonly decision: BootDecision;\n\treadonly containerId: string | null;\n\treadonly networkId: string | null;\n\t/** Whether the observed or freshly-created container is the right image. */\n\treadonly imageMatches: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// TraefikContainerOps — the I/O seam\n// ---------------------------------------------------------------------------\n\nexport interface InspectedTraefikContainer {\n\treadonly id: string;\n\treadonly running: boolean | 'unknown';\n\treadonly image: string;\n\treadonly dispatchMount: {\n\t\treadonly source: string;\n\t\treadonly target: string;\n\t\treadonly readOnly: boolean;\n\t} | null;\n\treadonly portBindings: ReadonlyArray<string>;\n\treadonly command: ReadonlyArray<string>;\n\treadonly networks: ReadonlyArray<string>;\n\treadonly labels: Readonly<Record<string, string>>;\n}\n\n/** The orchestrator does NOT talk to docker directly. It yields these\n * operations through a service tag whose layer can be wired to\n * `runtime/docker/*` in production or to a no-op stub in tests. This\n * is the load-bearing decoupling that lets the orchestrator stay at\n * \"walk decls + write files\" complexity without growing a docker\n * dependency.\n *\n * Architecture: orchestrator depends on L0+L1 contracts, never on\n * concrete L1 implementations. */\nexport interface TraefikContainerOps {\n\t/** Idempotent network ensure. Returns the network id. */\n\treadonly ensureNetwork: (\n\t\tname: string,\n\t) => Effect.Effect<{ readonly id: string }, RouterBootFailed>;\n\n\t/** Inspect the singleton router container. Returns `null` when\n\t * absent. */\n\treadonly inspectContainer: (\n\t\tname: string,\n\t) => Effect.Effect<InspectedTraefikContainer | null, RouterBootFailed>;\n\n\t/** Create the container fresh (after force-remove if necessary).\n\t * The container is started with file-provider configured against\n\t * `dispatchDirHostPath` (bind-mounted read-only to `/etc/traefik/dispatch`)\n\t * and one `--entrypoints.<name>.address=:<port>` flag per registered\n\t * entrypoint. The shared network is attached at create time. */\n\treadonly createFresh: (args: {\n\t\treadonly name: string;\n\t\treadonly image: string;\n\t\treadonly network: string;\n\t\treadonly routerProfileId: string;\n\t\treadonly entrypoints: ReadonlyArray<Entrypoint>;\n\t\treadonly dispatchDirHostPath: string;\n\t}) => Effect.Effect<{ readonly id: string }, RouterBootFailed>;\n\n\t/** Start an already-existing stopped container. May fail (port\n\t * conflict, daemon flake); caller's contract is to fall back to\n\t * fresh-recreate on failure. */\n\treadonly resume: (name: string) => Effect.Effect<{ readonly id: string }, RouterBootFailed>;\n\n\t/** Force-remove a container (running or stopped). Idempotent on\n\t * \"no such container\". */\n\treadonly forceRemove: (name: string) => Effect.Effect<void, RouterBootFailed>;\n}\n\nexport class TraefikContainerOpsService extends Context.Service<\n\tTraefikContainerOpsService,\n\tTraefikContainerOps\n>()('@devstack-rewrite/orchestrators/router/TraefikContainerOps') {}\n\n// ---------------------------------------------------------------------------\n// Bootstrap — decides + executes\n// ---------------------------------------------------------------------------\n\nexport interface BootstrapInputs {\n\treadonly image: string;\n\treadonly entrypoints: ReadonlyArray<Entrypoint>;\n\treadonly profile: RouterProfile;\n\treadonly protectedRouteLeaseIds: ReadonlyArray<string>;\n}\n\nconst sameHostPath = (left: string, right: string): boolean =>\n\tpath.resolve(left) === path.resolve(right);\n\nexport const uniqueSortedEntrypointPorts = (\n\tentrypoints: ReadonlyArray<Entrypoint>,\n): ReadonlyArray<number> =>\n\t[...new Set(entrypoints.map((entrypoint) => entrypoint.port))].sort((a, b) => a - b);\n\nconst traefikListenerEntrypoints = (\n\tentrypoints: ReadonlyArray<Entrypoint>,\n): ReadonlyArray<Entrypoint> => {\n\tconst byPort = new Map<number, Entrypoint>();\n\tfor (const entrypoint of entrypoints) {\n\t\tif (!byPort.has(entrypoint.port)) byPort.set(entrypoint.port, entrypoint);\n\t}\n\treturn Array.from(byPort.values());\n};\n\nexport const traefikExpectedPortBindings = (\n\tentrypoints: ReadonlyArray<Entrypoint>,\n): ReadonlyArray<string> =>\n\tuniqueSortedEntrypointPorts(entrypoints).map((port) => `${port}/tcp=127.0.0.1:${port}`);\n\nconst traefikExpectedPortPairs = (entrypoints: ReadonlyArray<Entrypoint>): ReadonlyArray<string> =>\n\tuniqueSortedEntrypointPorts(entrypoints).map((port) => `${port}=127.0.0.1:${port}`);\n\nexport const traefikExpectedCommand = (\n\tentrypoints: ReadonlyArray<Entrypoint>,\n): ReadonlyArray<string> => [\n\t`--providers.file.directory=${TRAEFIK_DISPATCH_MOUNT_TARGET}`,\n\t'--providers.file.watch=true',\n\t'--api.dashboard=false',\n\t'--log.level=INFO',\n\t...traefikListenerEntrypoints(entrypoints).map(\n\t\t(entrypoint) => `--entrypoints.${entrypoint.name}.address=:${entrypoint.port}`,\n\t),\n];\n\nconst mountedDispatchDirMatches = (\n\texisting: {\n\t\treadonly dispatchMount: {\n\t\t\treadonly source: string;\n\t\t\treadonly target: string;\n\t\t\treadonly readOnly: boolean;\n\t\t} | null;\n\t},\n\texpected: string,\n): boolean =>\n\texisting.dispatchMount !== null &&\n\texisting.dispatchMount.target === TRAEFIK_DISPATCH_MOUNT_TARGET &&\n\texisting.dispatchMount.readOnly &&\n\tsameHostPath(existing.dispatchMount.source, expected);\n\nconst sameStrings = (left: ReadonlyArray<string>, right: ReadonlyArray<string>): boolean =>\n\tleft.length === right.length && left.every((value, index) => value === right[index]);\n\nconst sameStringSet = (left: ReadonlyArray<string>, right: ReadonlyArray<string>): boolean =>\n\tsameStrings([...new Set(left)].sort(), [...new Set(right)].sort());\n\nconst portBindingPair = (binding: string): string | null => {\n\tconst [container, host] = binding.split('=');\n\tconst containerPort = container?.split('/')[0];\n\tconst hostPort = host?.slice(host.lastIndexOf(':') + 1);\n\tconst hostIp = host?.slice(0, host.lastIndexOf(':'));\n\tif (containerPort === undefined || hostPort === undefined || hostIp === undefined) return null;\n\tif (!/^\\d+$/.test(containerPort) || !/^\\d+$/.test(hostPort)) return null;\n\treturn `${containerPort}=${hostIp}:${hostPort}`;\n};\n\nconst portBindingsMatch = (\n\texisting: ReadonlyArray<string>,\n\tentrypoints: ReadonlyArray<Entrypoint>,\n): boolean =>\n\tsameStringSet(\n\t\texisting.flatMap((binding) => {\n\t\t\tconst pair = portBindingPair(binding);\n\t\t\treturn pair === null ? [] : [pair];\n\t\t}),\n\t\ttraefikExpectedPortPairs(entrypoints),\n\t);\n\nexport const routerProfileLabelsMatch = (\n\tlabels: Readonly<Record<string, string>>,\n\tprofile: RouterProfile,\n): boolean => {\n\tif (labels[LabelKey.managed] !== 'true') return false;\n\tif (labels[LabelKey.routerMarker] !== 'true') return false;\n\tif (labels[ROUTER_PROFILE_LABEL] !== profile.id) return false;\n\tif (labels[LabelKey.routerSpecVersion] !== ROUTER_CONTAINER_SPEC_VERSION) return false;\n\tfor (const forbidden of [\n\t\tLabelKey.app,\n\t\tLabelKey.stack,\n\t\tLabelKey.plugin,\n\t\tLabelKey.role,\n\t\tLabelKey.cycle,\n\t\tComposeLabelKey.project,\n\t\tComposeLabelKey.service,\n\t\tComposeLabelKey.containerNumber,\n\t\tComposeLabelKey.version,\n\t\tComposeLabelKey.oneoff,\n\t\tComposeLabelKey.network,\n\t\tComposeLabelKey.volume,\n\t]) {\n\t\tif (labels[forbidden] !== undefined) return false;\n\t}\n\treturn true;\n};\n\nconst routerSpecMatches = (existing: InspectedTraefikContainer, inputs: BootstrapInputs): boolean =>\n\texisting.image === inputs.image &&\n\tmountedDispatchDirMatches(existing, inputs.profile.dispatchDir) &&\n\tportBindingsMatch(existing.portBindings, inputs.entrypoints) &&\n\tsameStringSet(existing.command, traefikExpectedCommand(inputs.entrypoints)) &&\n\texisting.networks.includes(inputs.profile.networkName) &&\n\trouterProfileLabelsMatch(existing.labels, inputs.profile);\n\n/** Adopt-or-create per the architecture's 4-way decision table.\n * Idempotent: callers may invoke this once per supervisor lifetime,\n * and a follow-up call returns `decision: 'adopt'` if nothing has\n * changed. */\nexport const bootstrap = (\n\tinputs: BootstrapInputs,\n): Effect.Effect<BootReport, RouterBootFailed, TraefikContainerOpsService> =>\n\tEffect.gen(function* () {\n\t\tconst ops = yield* TraefikContainerOpsService;\n\t\tconst network = yield* ops.ensureNetwork(inputs.profile.networkName);\n\t\tconst existing = yield* ops.inspectContainer(inputs.profile.containerName);\n\n\t\t// Decision table.\n\t\tif (existing === null) {\n\t\t\tconst created = yield* ops.createFresh({\n\t\t\t\tname: inputs.profile.containerName,\n\t\t\t\timage: inputs.image,\n\t\t\t\tnetwork: inputs.profile.networkName,\n\t\t\t\trouterProfileId: inputs.profile.id,\n\t\t\t\tentrypoints: inputs.entrypoints,\n\t\t\t\tdispatchDirHostPath: inputs.profile.dispatchDir,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdecision: 'recreate-fresh' as const,\n\t\t\t\tcontainerId: created.id,\n\t\t\t\tnetworkId: network.id,\n\t\t\t\timageMatches: true,\n\t\t\t};\n\t\t}\n\n\t\tconst configMatches = routerSpecMatches(existing, inputs);\n\n\t\tif (existing.running === true && configMatches) {\n\t\t\treturn {\n\t\t\t\tdecision: 'adopt' as const,\n\t\t\t\tcontainerId: existing.id,\n\t\t\t\tnetworkId: network.id,\n\t\t\t\timageMatches: true,\n\t\t\t};\n\t\t}\n\n\t\tif (existing.running === 'unknown' && configMatches) {\n\t\t\tif (inputs.protectedRouteLeaseIds.length > 0) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tnew RouterBootFailed({\n\t\t\t\t\t\tstage: 'ensure-container',\n\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t`router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' ` +\n\t\t\t\t\t\t\t`has unknown lifecycle state, and live or unknown route leases exist: ` +\n\t\t\t\t\t\t\tinputs.protectedRouteLeaseIds.join(', '),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tyield* ops.forceRemove(inputs.profile.containerName);\n\t\t\tconst created = yield* ops.createFresh({\n\t\t\t\tname: inputs.profile.containerName,\n\t\t\t\timage: inputs.image,\n\t\t\t\tnetwork: inputs.profile.networkName,\n\t\t\t\trouterProfileId: inputs.profile.id,\n\t\t\t\tentrypoints: inputs.entrypoints,\n\t\t\t\tdispatchDirHostPath: inputs.profile.dispatchDir,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdecision: 'recreate-fresh' as const,\n\t\t\t\tcontainerId: created.id,\n\t\t\t\tnetworkId: network.id,\n\t\t\t\timageMatches: true,\n\t\t\t};\n\t\t}\n\n\t\tif (!configMatches) {\n\t\t\tif (inputs.protectedRouteLeaseIds.length > 0) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tnew RouterBootFailed({\n\t\t\t\t\t\tstage: 'ensure-container',\n\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t`router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' ` +\n\t\t\t\t\t\t\t`does not match the requested spec, but live or unknown route leases exist: ` +\n\t\t\t\t\t\t\tinputs.protectedRouteLeaseIds.join(', '),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Running or stopped with stale image, bind mount, entrypoints,\n\t\t\t// provider args, network, labels, or mount mode — force-remove\n\t\t\t// + recreate. A profile singleton can only serve the spec it\n\t\t\t// was created with.\n\t\t\tyield* ops.forceRemove(inputs.profile.containerName);\n\t\t\tconst created = yield* ops.createFresh({\n\t\t\t\tname: inputs.profile.containerName,\n\t\t\t\timage: inputs.image,\n\t\t\t\tnetwork: inputs.profile.networkName,\n\t\t\t\trouterProfileId: inputs.profile.id,\n\t\t\t\tentrypoints: inputs.entrypoints,\n\t\t\t\tdispatchDirHostPath: inputs.profile.dispatchDir,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdecision: 'recreate-fresh' as const,\n\t\t\t\tcontainerId: created.id,\n\t\t\t\tnetworkId: network.id,\n\t\t\t\timageMatches: true,\n\t\t\t};\n\t\t}\n\n\t\t// Stopped + image matches → resume; on failure recreate fresh.\n\t\tconst resumed = yield* ops.resume(inputs.profile.containerName).pipe(\n\t\t\tEffect.catchTag('RouterBootFailed', (cause) =>\n\t\t\t\tinputs.protectedRouteLeaseIds.length > 0\n\t\t\t\t\t? Effect.fail(\n\t\t\t\t\t\t\tnew RouterBootFailed({\n\t\t\t\t\t\t\t\tstage: 'ensure-container',\n\t\t\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t\t\t`router profile '${inputs.profile.id}' container '${inputs.profile.containerName}' ` +\n\t\t\t\t\t\t\t\t\t`could not be resumed, and live or unknown route leases exist: ` +\n\t\t\t\t\t\t\t\t\tinputs.protectedRouteLeaseIds.join(', '),\n\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t: ops.forceRemove(inputs.profile.containerName).pipe(\n\t\t\t\t\t\t\tEffect.andThen(\n\t\t\t\t\t\t\t\tops.createFresh({\n\t\t\t\t\t\t\t\t\tname: inputs.profile.containerName,\n\t\t\t\t\t\t\t\t\timage: inputs.image,\n\t\t\t\t\t\t\t\t\tnetwork: inputs.profile.networkName,\n\t\t\t\t\t\t\t\t\trouterProfileId: inputs.profile.id,\n\t\t\t\t\t\t\t\t\tentrypoints: inputs.entrypoints,\n\t\t\t\t\t\t\t\t\tdispatchDirHostPath: inputs.profile.dispatchDir,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\treturn {\n\t\t\tdecision: 'resume' as const,\n\t\t\tcontainerId: resumed.id,\n\t\t\tnetworkId: network.id,\n\t\t\timageMatches: true,\n\t\t};\n\t}).pipe(Effect.withSpan('orchestrator.router.bootstrap'));\n\n// ---------------------------------------------------------------------------\n// Docker-backed layer\n// ---------------------------------------------------------------------------\n\nconst routerBootFailed = (\n\tstage: RouterBootFailed['stage'],\n\tdetail: string,\n\tcause?: unknown,\n): RouterBootFailed =>\n\tnew RouterBootFailed({\n\t\tstage,\n\t\tdetail,\n\t\t...(cause === undefined ? {} : { cause }),\n\t});\n\nconst traefikRunArgs = (args: {\n\treadonly name: string;\n\treadonly image: string;\n\treadonly network: string;\n\treadonly routerProfileId: string;\n\treadonly entrypoints: ReadonlyArray<Entrypoint>;\n\treadonly dispatchDirHostPath: string;\n}): ReadonlyArray<string> => {\n\tconst ports = uniqueSortedEntrypointPorts(args.entrypoints);\n\tconst dockerArgs: Array<string> = [\n\t\t'-d',\n\t\t'--name',\n\t\targs.name,\n\t\t'--network',\n\t\targs.network,\n\t\t'--label',\n\t\t`${LabelKey.managed}=true`,\n\t\t'--label',\n\t\t`${LabelKey.routerMarker}=true`,\n\t\t'--label',\n\t\t`${ROUTER_PROFILE_LABEL}=${args.routerProfileId}`,\n\t\t'--label',\n\t\t`${LabelKey.routerSpecVersion}=${ROUTER_CONTAINER_SPEC_VERSION}`,\n\t\t'--add-host',\n\t\tHOST_GATEWAY_ALIAS,\n\t];\n\tfor (const port of ports) {\n\t\tdockerArgs.push('-p', `127.0.0.1:${port}:${port}`);\n\t}\n\tdockerArgs.push(\n\t\t'--mount',\n\t\t`type=bind,source=${args.dispatchDirHostPath},target=${TRAEFIK_DISPATCH_MOUNT_TARGET},readonly`,\n\t\targs.image,\n\t\t...traefikExpectedCommand(args.entrypoints),\n\t);\n\treturn dockerArgs;\n};\n\nexport const layerTraefikContainerOpsDocker: Layer.Layer<\n\tTraefikContainerOpsService,\n\tnever,\n\tDockerHost | DockerSpawner\n> = Layer.effect(\n\tTraefikContainerOpsService,\n\tEffect.gen(function* () {\n\t\tconst dockerHost = yield* DockerHost;\n\t\tconst dockerSpawner = yield* DockerSpawner;\n\t\tconst provideDocker = <A, E>(\n\t\t\teffect: Effect.Effect<A, E, DockerHost | DockerSpawner>,\n\t\t): Effect.Effect<A, E, never> =>\n\t\t\teffect.pipe(\n\t\t\t\tEffect.provideService(DockerHost, dockerHost),\n\t\t\t\tEffect.provideService(DockerSpawner, dockerSpawner),\n\t\t\t);\n\n\t\tconst ops: TraefikContainerOps = {\n\t\t\tensureNetwork: (name) =>\n\t\t\t\tprovideDocker(\n\t\t\t\t\tensureNetwork(name, { app: 'devstack-router', stack: name, composeUi: false }),\n\t\t\t\t).pipe(\n\t\t\t\t\tEffect.map((id) => ({ id })),\n\t\t\t\t\tEffect.mapError((cause) =>\n\t\t\t\t\t\trouterBootFailed(\n\t\t\t\t\t\t\t'ensure-network',\n\t\t\t\t\t\t\t`failed to ensure shared router network '${name}'`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\tinspectContainer: (name) =>\n\t\t\t\tprovideDocker(inspectContainer(name)).pipe(\n\t\t\t\t\tEffect.mapError((cause) =>\n\t\t\t\t\t\trouterBootFailed('inspect', `failed to inspect router container '${name}'`, cause),\n\t\t\t\t\t),\n\t\t\t\t\tEffect.map((facts) =>\n\t\t\t\t\t\tfacts === null\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tid: facts.id,\n\t\t\t\t\t\t\t\t\trunning: facts.lifecycle.kind === 'unknown' ? 'unknown' : facts.running,\n\t\t\t\t\t\t\t\t\timage: facts.image,\n\t\t\t\t\t\t\t\t\tdispatchMount: (() => {\n\t\t\t\t\t\t\t\t\t\tconst mount = facts.mounts?.find(\n\t\t\t\t\t\t\t\t\t\t\t(m) => m.target === TRAEFIK_DISPATCH_MOUNT_TARGET,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn mount === undefined\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsource: mount.source,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttarget: mount.target,\n\t\t\t\t\t\t\t\t\t\t\t\t\treadOnly: mount.readOnly === true,\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t})(),\n\t\t\t\t\t\t\t\t\tportBindings: facts.portBindings ?? [],\n\t\t\t\t\t\t\t\t\tcommand: facts.command ?? [],\n\t\t\t\t\t\t\t\t\tnetworks: facts.networks ?? [],\n\t\t\t\t\t\t\t\t\tlabels: facts.labels ?? {},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\tcreateFresh: (args) =>\n\t\t\t\tprovideDocker(dockerRun('run', traefikRunArgs(args))).pipe(\n\t\t\t\t\tEffect.map((result) => ({ id: result.stdout.trim() })),\n\t\t\t\t\tEffect.mapError((cause) =>\n\t\t\t\t\t\trouterBootFailed(\n\t\t\t\t\t\t\t'ensure-container',\n\t\t\t\t\t\t\t`failed to create router container '${args.name}'`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\tresume: (name) =>\n\t\t\t\tprovideDocker(dockerRun('start', [name])).pipe(\n\t\t\t\t\tEffect.flatMap(() => provideDocker(inspectContainer(name))),\n\t\t\t\t\tEffect.flatMap((facts) =>\n\t\t\t\t\t\tfacts === null\n\t\t\t\t\t\t\t? Effect.fail(\n\t\t\t\t\t\t\t\t\trouterBootFailed(\n\t\t\t\t\t\t\t\t\t\t'inspect',\n\t\t\t\t\t\t\t\t\t\t`router container '${name}' started but could not be inspected`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: Effect.succeed({ id: facts.id }),\n\t\t\t\t\t),\n\t\t\t\t\tEffect.mapError((cause) =>\n\t\t\t\t\t\tcause instanceof RouterBootFailed\n\t\t\t\t\t\t\t? cause\n\t\t\t\t\t\t\t: routerBootFailed(\n\t\t\t\t\t\t\t\t\t'ensure-container',\n\t\t\t\t\t\t\t\t\t`failed to resume router container '${name}'`,\n\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\tforceRemove: (name) =>\n\t\t\t\tprovideDocker(dockerRunOk('rm', ['-f', name])).pipe(\n\t\t\t\t\tEffect.flatMap((result) => {\n\t\t\t\t\t\tif (result.exitCode === 0 || isNoSuchContainerStderr(result.stderr)) {\n\t\t\t\t\t\t\treturn Effect.void;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Effect.fail(\n\t\t\t\t\t\t\trouterBootFailed(\n\t\t\t\t\t\t\t\t'ensure-container',\n\t\t\t\t\t\t\t\t`failed to remove router container '${name}': ${result.stderr}`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t\tEffect.mapError((cause) =>\n\t\t\t\t\t\tcause instanceof RouterBootFailed\n\t\t\t\t\t\t\t? cause\n\t\t\t\t\t\t\t: routerBootFailed(\n\t\t\t\t\t\t\t\t\t'ensure-container',\n\t\t\t\t\t\t\t\t\t`failed to remove router container '${name}'`,\n\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t};\n\n\t\treturn TraefikContainerOpsService.of(ops);\n\t}),\n);\n\n// ---------------------------------------------------------------------------\n// Stub layer — injected by tests\n// ---------------------------------------------------------------------------\n\n/** No-op implementation for tests that assert file-provider delivery\n * without managing a real Traefik container. Production composition\n * uses `layerTraefikContainerOpsDocker`. */\nexport const layerTraefikContainerOpsStub: Layer.Layer<TraefikContainerOpsService> = Layer.succeed(\n\tTraefikContainerOpsService,\n)({\n\tensureNetwork: (_name) => Effect.succeed({ id: 'stub-network' }),\n\tinspectContainer: (_name) => Effect.succeed(null),\n\tcreateFresh: (_args) => Effect.succeed({ id: 'stub-container' }),\n\tresume: (_name) => Effect.succeed({ id: 'stub-container' }),\n\tforceRemove: (_name) => Effect.succeed(undefined),\n});\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Effect, FileSystem, Layer, Scope } from "effect";
2
+ //#region src/orchestrators/runtime-composition.d.ts
3
+ interface ProductionCodegenOptions {
4
+ readonly appRoot?: string;
5
+ readonly outputDir?: string;
6
+ readonly stackSubdir?: string | null;
7
+ }
8
+ //#endregion
9
+ export { ProductionCodegenOptions };
10
+ //# sourceMappingURL=runtime-composition.d.mts.map
@@ -0,0 +1,168 @@
1
+ import { StackPathsService } from "../substrate/runtime/paths.mjs";
2
+ import { endpointKey } from "../substrate/brand.mjs";
3
+ import { readResolvedSync } from "../substrate/runtime/lifecycle/plugin-registry.mjs";
4
+ import { PostAcquireTasksService } from "../substrate/runtime/post-acquire-tasks.mjs";
5
+ import { MoveCodegenService, MoveSummaryRunnerService, layerDockerMoveSummaryRunner, layerMystenMoveCodegen } from "./codegen/bindings.mjs";
6
+ import { CodegenPathsService, layerCodegenPaths, layerCodegenRoot } from "./codegen/paths.mjs";
7
+ import { CodegenOrchestratorService, layerCodegenOrchestrator } from "./codegen/service.mjs";
8
+ import { makeExtrasCodegenable } from "./codegen/extras.mjs";
9
+ import { layerTraefikContainerOpsDocker } from "./router/traefik-container.mjs";
10
+ import { makeDefaultRouterProfile } from "./router/profile.mjs";
11
+ import { layerEntrypointRegistry } from "./router/entrypoints.mjs";
12
+ import { RouterService, layerDockerUpstreamResolver, layerRouterConfigLiteral, layerRouterService } from "./router/service.mjs";
13
+ import { BUILT_IN_ENTRYPOINTS } from "../plugins/router-entrypoints.mjs";
14
+ import { SnapshotOrchestratorService, layerSnapshotOrchestrator } from "./snapshot/service.mjs";
15
+ import { resolveManifestExtras } from "../substrate/manifest.mjs";
16
+ import { buildEnvelope, writeManifest } from "../substrate/runtime/manifest/manifest.mjs";
17
+ import { Effect, FileSystem, Layer } from "effect";
18
+ import { isAbsolute, join, resolve } from "node:path";
19
+ //#region src/orchestrators/runtime-composition.ts
20
+ const productionRouterProfile = (options = {}) => makeDefaultRouterProfile(options);
21
+ const productionCodegenOutputDir = (appRoot, outputDir) => {
22
+ const target = outputDir ?? "src/generated";
23
+ return isAbsolute(target) ? target : resolve(appRoot, target);
24
+ };
25
+ const layerProductionOrchestrators = (router = {}) => {
26
+ const profile = router.profile ?? productionRouterProfile();
27
+ return Layer.mergeAll(layerSnapshotOrchestrator, layerRouterService.pipe(Layer.provideMerge(Layer.mergeAll(layerEntrypointRegistry(BUILT_IN_ENTRYPOINTS), layerTraefikContainerOpsDocker, layerDockerUpstreamResolver(profile), layerRouterConfigLiteral({
28
+ disabled: router.disabled ?? false,
29
+ profile,
30
+ image: router.image ?? "traefik:v3.5",
31
+ routeReadinessProbe: { enabled: router.disabled !== true }
32
+ })))), layerCodegenOrchestrator, layerCodegenPaths.pipe(Layer.provideMerge(layerCodegenRoot({
33
+ outputDir: productionCodegenOutputDir(router.codegen?.appRoot ?? process.cwd(), router.codegen?.outputDir),
34
+ stackSubdir: router.codegen?.stackSubdir ?? null
35
+ }))), layerDockerMoveSummaryRunner, layerMystenMoveCodegen);
36
+ };
37
+ Effect.gen(function* () {
38
+ yield* (yield* RouterService).boot().pipe(Effect.orDie);
39
+ });
40
+ const endpointEventFromRoutable = (pluginKey, endpoint, registeredAt = Date.now()) => ({
41
+ tag: "endpoint.registered",
42
+ endpoint: {
43
+ endpointKey: endpointKey(`${pluginKey}:${endpoint.endpointName}`),
44
+ name: endpoint.endpointName,
45
+ url: endpoint.url,
46
+ displayUrl: null,
47
+ wireProtocol: endpoint.wireProtocol,
48
+ registeredAt
49
+ }
50
+ });
51
+ const orchestratorSink = (sink) => sink;
52
+ const makeProjectionCapabilitySink = () => orchestratorSink({
53
+ kind: "projection",
54
+ accept: (decl, ctx) => Effect.gen(function* () {
55
+ const event = decl.event.tag === "account.updated" ? {
56
+ ...decl.event,
57
+ account: {
58
+ ...decl.event.account,
59
+ rowKey: decl.event.account.rowKey ?? ctx.pluginKey
60
+ }
61
+ } : {
62
+ ...decl.event,
63
+ package: {
64
+ ...decl.event.package,
65
+ rowKey: decl.event.package.rowKey ?? ctx.pluginKey
66
+ }
67
+ };
68
+ yield* ctx.publish(event);
69
+ })
70
+ });
71
+ const makeStrategyContributorCapabilitySink = () => orchestratorSink({
72
+ kind: "strategy-contributor",
73
+ accept: (decl, ctx) => Effect.gen(function* () {
74
+ yield* ctx.registerStrategy(decl);
75
+ const at = Date.now();
76
+ yield* ctx.publish({
77
+ tag: "strategy.registered",
78
+ capabilityKey: decl.capabilityKey,
79
+ autoMounted: decl.autoMounted,
80
+ at
81
+ });
82
+ yield* Effect.addFinalizer(() => ctx.publish({
83
+ tag: "strategy.unregistered",
84
+ capabilityKey: decl.capabilityKey,
85
+ at: Date.now()
86
+ }));
87
+ })
88
+ });
89
+ const buildProductionOrchestratorSinks = (observers = {}) => Effect.gen(function* () {
90
+ const snapshot = yield* SnapshotOrchestratorService;
91
+ const router = yield* RouterService;
92
+ const codegen = yield* CodegenOrchestratorService;
93
+ return [
94
+ orchestratorSink({
95
+ kind: "snapshotable",
96
+ accept: (decl, ctx) => snapshot.registerParticipant(ctx.pluginKey, decl)
97
+ }),
98
+ orchestratorSink({
99
+ kind: "liveness-classifier",
100
+ accept: (decl, ctx) => snapshot.registerClassifier(ctx.pluginKey, decl)
101
+ }),
102
+ orchestratorSink({
103
+ kind: "routable",
104
+ accept: (decl, ctx) => router.boot().pipe(Effect.andThen(router.contributeRoute(decl)), Effect.flatMap((endpoint) => {
105
+ const event = endpointEventFromRoutable(ctx.pluginKey, endpoint);
106
+ return ctx.publish(event).pipe(Effect.andThen(observers.routable ? observers.routable(ctx.pluginKey, endpoint, event) : Effect.void));
107
+ }))
108
+ }),
109
+ orchestratorSink({
110
+ kind: "codegenable",
111
+ accept: (decl, ctx) => codegen.registerContribution(ctx.pluginKey, decl).pipe(Effect.flatMap(() => observers.codegenable ? observers.codegenable(ctx.pluginKey, decl) : Effect.void))
112
+ }),
113
+ makeProjectionCapabilitySink(),
114
+ makeStrategyContributorCapabilitySink()
115
+ ];
116
+ });
117
+ const makeManifestExtrasContext = (ctx) => {
118
+ const resourceIdToKey = /* @__PURE__ */ new Map();
119
+ for (const [key, node] of ctx.graph.nodes) resourceIdToKey.set(node.member.id, key);
120
+ const lookup = (resourceId) => {
121
+ const key = resourceIdToKey.get(resourceId);
122
+ if (key === void 0) throw new Error(`manifest extras requested unknown resource '${resourceId}'`);
123
+ const resolved = readResolvedSync(ctx.registry, key);
124
+ if (resolved === void 0) throw new Error(`manifest extras requested unresolved resource '${resourceId}'`);
125
+ return resolved;
126
+ };
127
+ return { value: (resource) => lookup(resource.id) };
128
+ };
129
+ const buildProductionPostAcquireHook = (options = {}) => Effect.gen(function* () {
130
+ const codegen = yield* CodegenOrchestratorService;
131
+ const paths = yield* CodegenPathsService;
132
+ const summaryRunner = yield* MoveSummaryRunnerService;
133
+ const moveCodegen = yield* MoveCodegenService;
134
+ const fs = yield* FileSystem.FileSystem;
135
+ const stackPaths = yield* StackPathsService;
136
+ const postAcquireTasks = yield* PostAcquireTasksService;
137
+ return (ctx) => Effect.gen(function* () {
138
+ const extras = yield* resolveManifestExtras(options.extras, makeManifestExtrasContext(ctx));
139
+ yield* writeManifest(yield* buildEnvelope({
140
+ identity: {
141
+ app: ctx.identity.app,
142
+ stack: ctx.identity.stack,
143
+ chain: ctx.identity.chain
144
+ },
145
+ contributions: [],
146
+ extras
147
+ }), join(stackPaths.stackRoot, "manifest.json")).pipe(Effect.provideService(FileSystem.FileSystem, fs));
148
+ const result = yield* codegen.runCycle({ extraContributions: [makeExtrasCodegenable(extras)] }).pipe(Effect.provideService(CodegenPathsService, paths), Effect.provideService(MoveSummaryRunnerService, summaryRunner), Effect.provideService(MoveCodegenService, moveCodegen), Effect.provideService(FileSystem.FileSystem, fs));
149
+ yield* postAcquireTasks.runAll;
150
+ return [{
151
+ tag: "manifest.flushed",
152
+ manifestVersion: 1,
153
+ at: Date.now()
154
+ }, {
155
+ tag: "codegen.emitted",
156
+ files: [
157
+ ...result.filesWritten,
158
+ ...result.filesChmod,
159
+ ...result.bindings?.filesWritten ?? []
160
+ ],
161
+ at: Date.now()
162
+ }];
163
+ });
164
+ });
165
+ //#endregion
166
+ export { buildProductionOrchestratorSinks, buildProductionPostAcquireHook, layerProductionOrchestrators };
167
+
168
+ //# sourceMappingURL=runtime-composition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-composition.mjs","names":[],"sources":["../../src/orchestrators/runtime-composition.ts"],"sourcesContent":["// Shared production orchestrator composition.\n//\n// CLI, programmatic runStack, and the e2e boot harness all use this\n// module for capability delivery. Tests may swap service\n// implementations (Traefik ops, upstream resolver, codegen paths), but\n// the sink registrations and router boot step stay shared.\n\nimport { Effect, FileSystem, Layer, Scope } from 'effect';\nimport { isAbsolute, join, resolve } from 'node:path';\n\nimport {\n\tlayerDockerMoveSummaryRunner,\n\tlayerMystenMoveCodegen,\n\tMoveCodegenService,\n\tMoveSummaryRunnerService,\n} from './codegen/bindings.ts';\nimport { CodegenPathsService, layerCodegenPaths, layerCodegenRoot } from './codegen/paths.ts';\nimport {\n\tCodegenOrchestratorService,\n\tlayerCodegenOrchestrator,\n\ttype Codegenable,\n} from './codegen/service.ts';\nimport { makeExtrasCodegenable } from './codegen/extras.ts';\nimport {\n\tDEFAULT_TRAEFIK_IMAGE,\n\tlayerDockerUpstreamResolver,\n\tlayerEntrypointRegistry,\n\tlayerRouterConfigLiteral,\n\tlayerRouterService,\n\tlayerTraefikContainerOpsDocker,\n\tRouterService,\n\ttype EndpointUrl,\n\ttype ResolvedRoute,\n} from './router/index.ts';\nimport { BUILT_IN_ENTRYPOINTS } from '../plugins/router-entrypoints.ts';\nimport {\n\tmakeDefaultRouterProfile,\n\ttype DefaultRouterProfileOptions,\n\ttype RouterProfile,\n} from './router/profile.ts';\nimport { layerSnapshotOrchestrator, SnapshotOrchestratorService } from './snapshot/index.ts';\nimport type { LivenessClassifierDecl } from '../contracts/liveness-classifier.ts';\nimport type { ProjectionDecl } from '../contracts/projection.ts';\nimport type { RoutableDecl } from '../contracts/routable.ts';\nimport type { SnapshotableDecl } from '../contracts/snapshotable.ts';\nimport type { StrategyContributorDecl } from '../contracts/strategy-contributor.ts';\nimport { endpointKey, type PluginKey } from '../substrate/brand.ts';\nimport type { EngineEvent } from '../substrate/events.ts';\nimport {\n\tbuildEnvelope,\n\tCURRENT_MANIFEST_VERSION,\n\twriteManifest,\n} from '../substrate/runtime/manifest/index.ts';\nimport { readResolvedSync } from '../substrate/runtime/lifecycle/index.ts';\nimport { resolveManifestExtras, type ManifestExtrasInput } from '../substrate/manifest.ts';\nimport { StackPathsService } from '../substrate/runtime/paths.ts';\nimport { PostAcquireTasksService } from '../substrate/runtime/post-acquire-tasks.ts';\nimport type {\n\tCapabilitySink,\n\tContributionKind,\n\tHarvestContext,\n\tOrchestratorSinks,\n} from '../substrate/runtime/capability-sinks/index.ts';\nimport type {\n\tSupervisorPostAcquireContext,\n\tSupervisorPostAcquireHook,\n} from '../substrate/runtime/supervisor.ts';\n\nexport interface ProductionCodegenOptions {\n\treadonly appRoot?: string;\n\treadonly outputDir?: string;\n\treadonly stackSubdir?: string | null;\n}\n\nexport interface ProductionRouterOptions {\n\treadonly codegen?: ProductionCodegenOptions;\n\treadonly disabled?: boolean;\n\treadonly image?: string;\n\treadonly profile?: RouterProfile;\n}\n\nexport interface ProductionPostAcquireOptions {\n\treadonly extras?: ManifestExtrasInput;\n}\n\nexport interface CapabilityDeliveryObservers {\n\treadonly routable?: (\n\t\tpluginKey: PluginKey,\n\t\tendpoint: EndpointUrl,\n\t\tevent: Extract<EngineEvent, { readonly tag: 'endpoint.registered' }>,\n\t) => Effect.Effect<void, never, Scope.Scope>;\n\treadonly codegenable?: (\n\t\tpluginKey: PluginKey,\n\t\tdecl: Codegenable,\n\t) => Effect.Effect<void, never, Scope.Scope>;\n}\n\nexport const productionRouterProfile = (options: DefaultRouterProfileOptions = {}): RouterProfile =>\n\tmakeDefaultRouterProfile(options);\n\nconst productionCodegenOutputDir = (appRoot: string, outputDir: string | undefined): string => {\n\tconst target = outputDir ?? 'src/generated';\n\treturn isAbsolute(target) ? target : resolve(appRoot, target);\n};\n\nexport const layerProductionOrchestrators = (router: ProductionRouterOptions = {}) => {\n\tconst profile = router.profile ?? productionRouterProfile();\n\treturn Layer.mergeAll(\n\t\tlayerSnapshotOrchestrator,\n\t\tlayerRouterService.pipe(\n\t\t\tLayer.provideMerge(\n\t\t\t\tLayer.mergeAll(\n\t\t\t\t\tlayerEntrypointRegistry(BUILT_IN_ENTRYPOINTS),\n\t\t\t\t\tlayerTraefikContainerOpsDocker,\n\t\t\t\t\tlayerDockerUpstreamResolver(profile),\n\t\t\t\t\tlayerRouterConfigLiteral({\n\t\t\t\t\t\tdisabled: router.disabled ?? false,\n\t\t\t\t\t\tprofile,\n\t\t\t\t\t\timage: router.image ?? DEFAULT_TRAEFIK_IMAGE,\n\t\t\t\t\t\trouteReadinessProbe: {\n\t\t\t\t\t\t\tenabled: router.disabled !== true,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t),\n\t\tlayerCodegenOrchestrator,\n\t\tlayerCodegenPaths.pipe(\n\t\t\tLayer.provideMerge(\n\t\t\t\tlayerCodegenRoot({\n\t\t\t\t\toutputDir: productionCodegenOutputDir(\n\t\t\t\t\t\trouter.codegen?.appRoot ?? process.cwd(),\n\t\t\t\t\t\trouter.codegen?.outputDir,\n\t\t\t\t\t),\n\t\t\t\t\tstackSubdir: router.codegen?.stackSubdir ?? null,\n\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t\tlayerDockerMoveSummaryRunner,\n\t\tlayerMystenMoveCodegen,\n\t);\n};\n\nexport const bootRouterOrchestrator: Effect.Effect<void, never, RouterService> = Effect.gen(\n\tfunction* () {\n\t\tconst router = yield* RouterService;\n\t\tyield* router.boot().pipe(Effect.orDie);\n\t},\n);\n\nexport const endpointEventFromRoutable = (\n\tpluginKey: PluginKey,\n\tendpoint: EndpointUrl,\n\tregisteredAt = Date.now(),\n): Extract<EngineEvent, { readonly tag: 'endpoint.registered' }> => ({\n\ttag: 'endpoint.registered',\n\tendpoint: {\n\t\tendpointKey: endpointKey(`${pluginKey}:${endpoint.endpointName}`),\n\t\tname: endpoint.endpointName,\n\t\turl: endpoint.url,\n\t\tdisplayUrl: null,\n\t\twireProtocol: endpoint.wireProtocol,\n\t\tregisteredAt,\n\t},\n});\n\nconst orchestratorSink = <K extends ContributionKind, TDecl>(\n\tsink: CapabilitySink<K, TDecl>,\n): OrchestratorSinks[number] => sink as OrchestratorSinks[number];\n\nexport const makeProjectionCapabilitySink = (): OrchestratorSinks[number] =>\n\torchestratorSink<'projection', ProjectionDecl>({\n\t\tkind: 'projection',\n\t\taccept: (decl, ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst event =\n\t\t\t\t\tdecl.event.tag === 'account.updated'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...decl.event,\n\t\t\t\t\t\t\t\taccount: {\n\t\t\t\t\t\t\t\t\t...decl.event.account,\n\t\t\t\t\t\t\t\t\trowKey: decl.event.account.rowKey ?? ctx.pluginKey,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t...decl.event,\n\t\t\t\t\t\t\t\tpackage: {\n\t\t\t\t\t\t\t\t\t...decl.event.package,\n\t\t\t\t\t\t\t\t\trowKey: decl.event.package.rowKey ?? ctx.pluginKey,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\tyield* ctx.publish(event);\n\t\t\t}),\n\t});\n\nexport const makeStrategyContributorCapabilitySink = (): OrchestratorSinks[number] =>\n\torchestratorSink<'strategy-contributor', StrategyContributorDecl<string, unknown>>({\n\t\tkind: 'strategy-contributor',\n\t\taccept: (decl, ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tyield* ctx.registerStrategy(decl);\n\t\t\t\tconst at = Date.now();\n\t\t\t\tyield* ctx.publish({\n\t\t\t\t\ttag: 'strategy.registered',\n\t\t\t\t\tcapabilityKey: decl.capabilityKey,\n\t\t\t\t\tautoMounted: decl.autoMounted,\n\t\t\t\t\tat,\n\t\t\t\t});\n\t\t\t\tyield* Effect.addFinalizer(() =>\n\t\t\t\t\tctx.publish({\n\t\t\t\t\t\ttag: 'strategy.unregistered',\n\t\t\t\t\t\tcapabilityKey: decl.capabilityKey,\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}),\n\t});\n\nexport const buildProductionOrchestratorSinks = (\n\tobservers: CapabilityDeliveryObservers = {},\n): Effect.Effect<\n\tOrchestratorSinks,\n\tnever,\n\tSnapshotOrchestratorService | RouterService | CodegenOrchestratorService\n> =>\n\tEffect.gen(function* () {\n\t\tconst snapshot = yield* SnapshotOrchestratorService;\n\t\tconst router = yield* RouterService;\n\t\tconst codegen = yield* CodegenOrchestratorService;\n\t\treturn [\n\t\t\torchestratorSink<'snapshotable', SnapshotableDecl>({\n\t\t\t\tkind: 'snapshotable',\n\t\t\t\taccept: (decl, ctx) => snapshot.registerParticipant(ctx.pluginKey, decl),\n\t\t\t}),\n\t\t\torchestratorSink<'liveness-classifier', LivenessClassifierDecl>({\n\t\t\t\tkind: 'liveness-classifier',\n\t\t\t\taccept: (decl, ctx) => snapshot.registerClassifier(ctx.pluginKey, decl),\n\t\t\t}),\n\t\t\torchestratorSink<'routable', RoutableDecl>({\n\t\t\t\tkind: 'routable',\n\t\t\t\taccept: (decl, ctx: HarvestContext) =>\n\t\t\t\t\trouter.boot().pipe(\n\t\t\t\t\t\tEffect.andThen(router.contributeRoute(decl)),\n\t\t\t\t\t\tEffect.flatMap((endpoint) => {\n\t\t\t\t\t\t\tconst event = endpointEventFromRoutable(ctx.pluginKey, endpoint);\n\t\t\t\t\t\t\treturn ctx\n\t\t\t\t\t\t\t\t.publish(event)\n\t\t\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\t\t\tEffect.andThen(\n\t\t\t\t\t\t\t\t\t\tobservers.routable\n\t\t\t\t\t\t\t\t\t\t\t? observers.routable(ctx.pluginKey, endpoint, event)\n\t\t\t\t\t\t\t\t\t\t\t: Effect.void,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t}),\n\t\t\torchestratorSink<'codegenable', Codegenable>({\n\t\t\t\tkind: 'codegenable',\n\t\t\t\taccept: (decl, ctx) =>\n\t\t\t\t\tcodegen\n\t\t\t\t\t\t.registerContribution(ctx.pluginKey, decl)\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tEffect.flatMap(() =>\n\t\t\t\t\t\t\t\tobservers.codegenable ? observers.codegenable(ctx.pluginKey, decl) : Effect.void,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t}),\n\t\t\tmakeProjectionCapabilitySink(),\n\t\t\tmakeStrategyContributorCapabilitySink(),\n\t\t];\n\t});\n\nconst makeManifestExtrasContext = (ctx: SupervisorPostAcquireContext) => {\n\tconst resourceIdToKey = new Map<string, PluginKey>();\n\tfor (const [key, node] of ctx.graph.nodes) {\n\t\tresourceIdToKey.set(node.member.id, key);\n\t}\n\tconst lookup = (resourceId: string): unknown => {\n\t\tconst key = resourceIdToKey.get(resourceId);\n\t\tif (key === undefined) {\n\t\t\tthrow new Error(`manifest extras requested unknown resource '${resourceId}'`);\n\t\t}\n\t\tconst resolved = readResolvedSync(ctx.registry, key);\n\t\tif (resolved === undefined) {\n\t\t\tthrow new Error(`manifest extras requested unresolved resource '${resourceId}'`);\n\t\t}\n\t\treturn resolved;\n\t};\n\treturn {\n\t\tvalue: (resource: { readonly id: string }) => lookup(resource.id),\n\t};\n};\n\nexport const buildProductionPostAcquireHook = (\n\toptions: ProductionPostAcquireOptions = {},\n): Effect.Effect<\n\tSupervisorPostAcquireHook,\n\tnever,\n\t| CodegenOrchestratorService\n\t| CodegenPathsService\n\t| MoveSummaryRunnerService\n\t| MoveCodegenService\n\t| FileSystem.FileSystem\n\t| StackPathsService\n\t| PostAcquireTasksService\n> =>\n\tEffect.gen(function* () {\n\t\tconst codegen = yield* CodegenOrchestratorService;\n\t\tconst paths = yield* CodegenPathsService;\n\t\tconst summaryRunner = yield* MoveSummaryRunnerService;\n\t\tconst moveCodegen = yield* MoveCodegenService;\n\t\tconst fs = yield* FileSystem.FileSystem;\n\t\tconst stackPaths = yield* StackPathsService;\n\t\tconst postAcquireTasks = yield* PostAcquireTasksService;\n\t\treturn (ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst extras = yield* resolveManifestExtras(options.extras, makeManifestExtrasContext(ctx));\n\t\t\t\tconst envelope = yield* buildEnvelope({\n\t\t\t\t\tidentity: {\n\t\t\t\t\t\tapp: ctx.identity.app,\n\t\t\t\t\t\tstack: ctx.identity.stack,\n\t\t\t\t\t\tchain: ctx.identity.chain,\n\t\t\t\t\t},\n\t\t\t\t\tcontributions: [],\n\t\t\t\t\textras,\n\t\t\t\t});\n\t\t\t\tconst manifestPath = join(stackPaths.stackRoot, 'manifest.json');\n\t\t\t\tyield* writeManifest(envelope, manifestPath).pipe(\n\t\t\t\t\tEffect.provideService(FileSystem.FileSystem, fs),\n\t\t\t\t);\n\t\t\t\tconst result = yield* codegen\n\t\t\t\t\t.runCycle({ extraContributions: [makeExtrasCodegenable(extras)] })\n\t\t\t\t\t.pipe(\n\t\t\t\t\t\tEffect.provideService(CodegenPathsService, paths),\n\t\t\t\t\t\tEffect.provideService(MoveSummaryRunnerService, summaryRunner),\n\t\t\t\t\t\tEffect.provideService(MoveCodegenService, moveCodegen),\n\t\t\t\t\t\tEffect.provideService(FileSystem.FileSystem, fs),\n\t\t\t\t\t);\n\t\t\t\tyield* postAcquireTasks.runAll;\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: 'manifest.flushed' as const,\n\t\t\t\t\t\tmanifestVersion: CURRENT_MANIFEST_VERSION,\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: 'codegen.emitted' as const,\n\t\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\t...result.filesWritten,\n\t\t\t\t\t\t\t...result.filesChmod,\n\t\t\t\t\t\t\t...(result.bindings?.filesWritten ?? []),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t});\n\t});\n\nexport type { EndpointUrl, ResolvedRoute };\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import { Effect, FileSystem, Schema } from "effect";